Sommario:

Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3: 7 passaggi (con immagini)
Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3: 7 passaggi (con immagini)

Video: Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3: 7 passaggi (con immagini)

Video: Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3: 7 passaggi (con immagini)
Video: 0744: Analizzatore di reti vettoriale NANO VNA-F V2 SYSJOINT 2024, Dicembre
Anonim
Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3
Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3
Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3
Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3
Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3
Facile BLE a bassissima potenza in Arduino Parte 3 - Sostituzione Nano V2 - Rev 3

Aggiornamento: 7 aprile 2019 - Rev 3 di lp_BLE_TempHumidity, aggiunge grafici data/ora, utilizzando pfodApp V3.0.362+ e limitazione automatica durante l'invio dei dati

Aggiornamento: 24 marzo 2019 – Rev 2 di lp_BLE_TempHumidity, aggiunge più opzioni di trama e i2c_ClearBus, aggiunge il supporto GT832E_01

introduzione

Questo tutorial, A Redbear Nano V2 Replacement, è la parte 3 di 3. Questa è la revisione 2 di questo progetto. Il PCB revisione 2 include il montaggio per la cella a bottone e il sensore, semplifica la costruzione e migliora il flusso d'aria intorno al sensore proteggendolo dalla luce solare diretta. La revisione 1 è qui.

Parte 1 – Costruire dispositivi BLE a bassissima potenza semplificati con Arduino copre la configurazione di Arduino per codificare i dispositivi a bassa potenza nRF52, il modulo di programmazione e la misurazione della corrente di alimentazione. Copre anche timer e comparatori specializzati a bassa potenza e ingressi antirimbalzo e l'utilizzo di pfodApp per connettersi e controllare il dispositivo nRF52.

Parte 2 – Un monitor di umidità della temperatura a bassissima potenza copre utilizzando un modulo Redbear Nano V2 e un sensore di temperatura/umidità Si7021 per costruire una batteria a bassa potenza / monitor solare. Copre anche la modifica della libreria Si7021 in modo che sia a bassa potenza, la regolazione del dispositivo BLE per ridurre il suo consumo di corrente a <29uA e la progettazione di un display di temperatura/umidità personalizzato per il tuo cellulare.

Parte 3 – Una sostituzione di Redbear Nano V2, questa, copre l'uso di altri moduli basati su nRF52 invece del Nano V2. Copre la selezione dei componenti di alimentazione, la costruzione, la rimozione della protezione di programmazione del chip nRF52, l'utilizzo dei pin NFC come un normale GPIO e la definizione di una nuova scheda nRF52 in Arduino.

Questa istruzione è un'applicazione pratica della Parte 1 Costruire dispositivi BLE a potenza molto bassa resa facile con Arduino costruendo un monitor di temperatura e umidità BLE a potenza molto bassa utilizzando una scheda SKYLAB SBK369 come sostituzione Nano V2. Questo tutorial spiega come creare una nuova definizione di scheda e come rimuovere la protezione di programmazione nRF52 per consentirne la riprogrammazione. Questo tutorial utilizza lo stesso schizzo della Parte 2 con gli stessi parametri BLE sintonizzati per un basso consumo energetico e può essere alimentato da batteria OPPURE batteria + solare OPPURE solo solare. La messa a punto dei parametri BLE per la bassa potenza è stata trattata nella Parte 2

Rev 3 di lp_BLE_TempHumidity traccia i dati rispetto a data e ora usando solo Arduino millis(). Vedi Arduino Date and Time usando millis() e pfodApp usando l'ultima versione di pfodApp (V3.0.362+).

La revisione 4 di pfod_lp_nrf52.zip supporta anche il modulo GT832E_01 e questo tutorial copre l'utilizzo dei pin NFC nRF52 come GPIO standard.

Il monitor qui costruito funzionerà per anni con batterie a bottone o 2 batterie AAA, anche più a lungo con l'assistenza solare. Oltre a visualizzare la temperatura e l'umidità correnti, il monitor memorizza le ultime 36 ore di letture di 10 minuti e gli ultimi 10 giorni di letture orarie. Questi possono essere tracciati sul tuo cellulare Android e i valori salvati in un file di registro. Non è richiesta alcuna programmazione Android, pfodApp gestisce tutto questo. Il display e i grafici di Android sono completamente controllati dal tuo schizzo Arduino, quindi puoi personalizzarlo come richiesto.

La parte 2 utilizzava una scheda Redbear Nano V2 per il componente nRF52832 BLE. Questo progetto lo sostituisce con una scheda SKYLAB SKB369 più economica. Come nella parte 2, per il sensore di temperatura/umidità viene utilizzata una scheda breakout Sparkfun Si7021. Con Si7021 viene utilizzata una libreria a bassa potenza modificata.

Passaggio 1: perché una sostituzione Nano V2?

i) Il Nano V2 è stato fuori produzione per un certo numero di mesi e non sembra rientrare nella gamma Particle.io, quindi non è chiaro per quanto tempo sarà disponibile.

ii) Il Nano V2 è più costoso. Tuttavia ha anche funzioni extra. Vedi sotto.

iii) Il Nano V2 ha componenti su entrambi i lati che gli conferiscono un profilo più alto e ne rendono più difficile il montaggio.

iv) Il Nano V2 dispone di pin I/O limitati e l'utilizzo da D6 a D10 richiede cavi volanti.

Sebbene la scheda Nano V2 sia più costosa della scheda SKYLAB SKB369, ~US17 rispetto a ~US5, la Nano V2 ha più funzionalità. Il Nano V2 include un regolatore da 3,3 V e condensatori di alimentazione, componenti extra per l'utilizzo dell'opzione convertitore CC/CC nRF52, un'antenna chip e un connettore per antenna uFL SMT.

Un'altra alternativa è il modulo GT832E_01 utilizzato da www.homesmartmesh.com. La Rev 4 di pfod_lp_nrf52.zip supporta anche la programmazione del modulo GT832E_01. SKYLAB SKB369 e GT832E_01 sono disponibili su

Redbear (Particle.io) ha anche un modulo nudo senza regolatore 3V3, componenti DC/DC o componenti in cristallo 32Khz.

Contorno

Questo progetto ha 4 parti indipendenti relative:-

Selezione e costruzione dei componenti Rimozione del flag di protezione della codifica nRF52 e programmazione dello schizzo Creazione di una nuova definizione della scheda nRF52 Arduino Riconfigurazione dei pin NFC nRF52 come GPIO

Passaggio 2: selezione e costruzione dei componenti

Selezione dei componenti

Oltre ai componenti nRF52832 e Si7021 selezionati nella Parte 2, questo progetto aggiunge un regolatore da 3,3 V e condensatori di alimentazione.

Il componente del regolatore di tensione

Il regolatore utilizzato qui è MC87LC33-NRT. Può gestire ingressi fino a 12V e ha una corrente di riposo <3.6uA, tipicamente 1.1uA. Il Nano V2 utilizzava un regolatore TLV704 con una corrente di riposo leggermente superiore, tipicamente 3,4uA e può gestire tensioni di ingresso più elevate, fino a 24V. L'MC87LC33-NRT è stato scelto invece perché la sua scheda tecnica specifica come risponde quando la tensione di ingresso scende al di sotto di 3,3 V, mentre la scheda tecnica TLV704 no.

Il TLV704 specifica una tensione di ingresso di minimo 2,5 V e non è chiaro dalla scheda tecnica cosa accadrà al di sotto di quella. L'nRF52832 scenderà a 1,7 V e il Si7023 scenderà a 1,9 V. L'MC87LC33-NRT invece specifica differenze di tensione di ingresso/uscita fino a 0V per basse correnti (Fig 18 della scheda tecnica). Quindi, data la scelta dei componenti, è stato scelto l'MC87LC33-NRT perché ha le prestazioni specificate.

Condensatori di alimentazione

Il regolatore MC87LC33-NRT necessita di alcuni condensatori di alimentazione per stabilità e risposta. Sulla scheda tecnica è consigliato un condensatore di uscita > 0.1uF. Lo SKYLAB SBK369 specifica anche condensatori 10uF/0.1uF sull'alimentatore vicino alla scheda. Condensatori più grandi aiutano a fornire i picchi di corrente nRF52 TX. Qui sono stati utilizzati 4 x 22uF 25V e 3 x 0.1uF 50V condensatori ceramici. Un condensatore da 22uF e uno da 0.1uF sono stati posizionati vicino allo SKYLAB SBK369, uno da 0.1uF è stato posizionato vicino all'uscita dell'MC87LC33-NRT per garantire stabilità e un 22uF e 0.1uF sono stati posizionati sull'ingresso dell'MC87LC33-NRT e un ulteriori condensatori 2 x 22uF sono stati saldati sui pin Vin/GND come ulteriore serbatoio di corrente. Per confronto la scheda NanoV2 ha un 22uF / 0.1uF sull'ingresso del regolatore TLV704 e uno 0.1uF sulla sua uscita.

I condensatori di riserva di corrente extra sono stati installati sull'ingresso del regolatore da 3,3 V in modo che si caricassero a una tensione più elevata durante il funzionamento con celle solari. Caricare a una tensione più alta equivale a immagazzinare più corrente per fornire i picchi Tx.

I condensatori ceramici X5R vengono utilizzati perché hanno una bassa resistenza in serie e una bassa corrente di dispersione. La resistenza è tipicamente 100, 000MΩ o 1000MΩ - µF, quale sia mai inferiore. Quindi per 22uF abbiamo 22000MΩ, ovvero 0,15nA di dispersione a 3,3V o 0,6nA per i quattro condensatori da 22uF. Questo è trascurabile. Per confronto, i condensatori elettrolitici Panasonic a bassa dispersione e bassa dispersione hanno correnti di dispersione <0.01CV. Quindi per un condensatore da 22uF 16V la perdita è <10uA. Nota: questa è la perdita alla tensione nominale, in questo caso 16V. La dispersione è inferiore a tensioni inferiori, ovvero <2,2uA a 3,3V.

Elenco delle parti

Costo approssimativo per unità a dicembre 2018, ~US$61, escluse le spese di spedizione e il programmatore dalla Parte 1

  • SKYLAB SKB369 ~US$5 es. Aliexpress
  • Scheda breakout Sparkfun Si7021 ~US $ 8
  • 2 x 53 mm x 30 mm 0,15 W 5 V celle solari ad es. Sorvolare ~US $ 1,10
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~US $ 25 per 5 di sconto www.pcbcart.com
  • 1 x regolatore MC78LC33 3,3 V, ad es. Digikey MC78LC33NTRGOSCT-ND ~ 1 USD
  • 2 x 0.1uF 50V ceramica C1608X5R1H104K080A es. Digikey 445-7456-1-ND ~ US $ 0,3
  • 4 x 22uF 16V ceramica GRM21BR61C226ME44L ad es. Digikey 490-10747-1-ND ~US$2
  • 1 x BAT54CW, ad es. Digikey 497-12749-1-ND ~0,5 USD
  • 1 x 470R 0,5W 1% resistore ad es. Digikey 541-470TCT-ND ~ 0,25 USD
  • 1 x 10V 1W zener SMAZ10-13-F ad es. Digikey SMAZ10-FDICT-ND ~US$0.5
  • Viti in nylon da 3 mm x 12 mm, ad es. Jaycar HP0140 ~AUD$3
  • Dadi in nylon da 3 mm x 12 mm, ad es. Jaycar HP0146 ~AUD$3
  • Nastro di montaggio permanente Scotch Cat 4010 ad es. da Amazon ~ US $ 6,6
  • Portabatterie CR2032, ad es. HU2032-LF ~ 1,5 USD
  • Batteria CR2032 ~ US $ 1
  • Foglio di perspex, 3,5 mm e 8 mm
  • pfodApp ~ US $ 10
  • Pasta saldante ad es. Jaycar NS-3046 ~AUD$13

Passaggio 3: costruzione

Costruzione
Costruzione
Costruzione
Costruzione
Costruzione
Costruzione

Il progetto è costruito su un piccolo PCB. Il PCB è stato prodotto da pcbcart.com da questi file Gerber, SKYLAB_TempHumiditySensor_R2.zip Il PCB imita il pin out Nano V2 ed è abbastanza generico da essere utilizzato per altri progetti BLE.

Questo è lo schema (versione pdf)

Prima saldare i componenti SMD, quindi montare la scheda SKYLAB SKB369

Quasi tutti i componenti sono dispositivi a montaggio superficiale (SMD). I condensatori e i circuiti integrati possono essere difficili da saldare a mano. Il metodo suggerito è quello di tenere il PCB in una morsa e applicare una piccola quantità di pasta saldante sui pad e posizionare i componenti SMD, ad eccezione della scheda SKB369 sul PCB. Quindi, usando una pistola termica, applica calore alla parte inferiore del PCB fino a quando la pasta saldante non si scioglie e quindi fai un rapido passaggio sulla parte superiore della scheda facendo attenzione a non far saltare i componenti. Infine ritoccare i componenti con un saldatore a punta piccola. Fai attenzione ai condensatori e alla resistenza poiché è facile fondere entrambe le estremità e far allentare il componente durante la saldatura di un'estremità.

Questa revisione aggiunge ulteriori condensatori ceramici da 22uF 16V. Questi condensatori aggiuntivi riducono i picchi di corrente prelevati dalla batteria e riducono anche i cali di tensione quando vengono alimentati dalle celle solari. Finché la tensione delle celle solari rimane al di sopra della tensione della batteria, non viene prelevata corrente dalla batteria.

Dopo che i componenti SMD sono stati montati, è possibile saldare la scheda SKYLAB SKB369. Ci sono due fori per i punti di prova su un lato delle linguette SKB369. Utilizzare due perni in una base di cartone per posizionare la scheda SKB369 e allineare con cura i perni. (Vedi la foto di esempio sopra usando il PCB Revisione 1) Quindi saldare un pin del lato opposto per tenere la scheda in posizione prima di saldare gli altri pin.

Notare il filo di collegamento Gnd da CLK a GND nella parte finita. Questo viene installato DOPO la programmazione per evitare che il rumore sull'ingresso CLK attivi il chip nRF52 in una modalità di debug ad alta corrente

Custodia di montaggio

La custodia di montaggio è stata realizzata con due pezzi di perspex, 110 mm x 35 mm, 3 mm di spessore. Il pezzo da 3,5 mm sotto le celle solari è stato toccato per prendere le viti in nylon da 3 mm. Questa costruzione rivista semplifica la Rev 1 e migliora il flusso d'aria intorno al sensore. I fori aggiuntivi su ciascuna estremità servono per il montaggio, ad esempio utilizzando fascette.

Passaggio 4: rimozione del flag di protezione della codifica NRF52

Rimozione del flag di protezione della codifica NRF52
Rimozione del flag di protezione della codifica NRF52
Rimozione del flag di protezione della codifica NRF52
Rimozione del flag di protezione della codifica NRF52
Rimozione del flag di protezione della codifica NRF52
Rimozione del flag di protezione della codifica NRF52

Collegare la scheda Temperatura/Umidità al Programmatore descritto nella Parte 1 come mostrato sopra.

Con le celle solari e le batterie scollegate, Vin e Gnd sono collegati ai Vdd e Gnd del programmatore (i cavi Giallo e Verde) e SWCLK e SWDIO sono collegati ai Clk e SIO della scheda di testata del programmatore (i cavi Bianco e Grigio)

Rimozione della protezione del programma nRF52

Dalla pagina Nordic Semi – Debug and Trace DAP - Debug Access Port. Un debugger esterno può accedere al dispositivo tramite il DAP. Il DAP implementa una porta standard di debug del cavo seriale ARM® CoreSight™ (SW-DP). Il SW-DP implementa il protocollo Serial Wire Debug (SWD) che è un'interfaccia seriale a due pin, SWDCLK e SWDIO

Importante: la linea SWDIO ha una resistenza di pull-up interna. La linea SWDCLK ha una resistenza di pull-down interna.

CTRL-AP - Porta di accesso di controllo. La Control Access Port (CTRL-AP) è una porta di accesso personalizzata che consente il controllo del dispositivo anche se le altre porte di accesso nel DAP vengono disabilitate dalla protezione della porta di accesso. La protezione della porta di accesso impedisce al debugger di accedere in lettura e scrittura a tutti i registri della CPU e agli indirizzi mappati in memoria. Disabilita la protezione della porta di accesso. La protezione della porta di accesso può essere disabilitata solo emettendo un comando ERASEALL tramite CTRL-AP. Questo comando cancellerà Flash, UICR e RAM.

Seleziona CMSIS-DAP come programmatore per Particle's Debugger e seleziona nRF5 Flash SoftDevice

Se il flash funziona, allora va bene, ma spesso i moduli saranno stati protetti dalla riprogrammazione e otterrai questo errore nella finestra di Arduino

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10:13) Concesso in licenza GNU GPL v2 Per segnalazioni di bug, leggere https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: solo un'opzione di trasporto; autoselect 'swd' velocità adattatore: 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Supportato Info: CMSIS-DAP: Interfaccia Inizializzata (SWD) Info: CMSIS-DAP: FW Version = 1.10 Info: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interfaccia pronta Info: ridurre la richiesta di velocità: da 10000kHz a 5000kHz massimo Info: velocità di clock 10000 kHz Info: SWD IDCODE 0x2ba01477 Errore: Impossibile trovare MEM -AP per controllare il core Errore: Target non ancora esaminato Errore durante il flashing di SoftDevice.

In tal caso è necessario impostare il registro di comando ERASEALL nel nRF52 per cancellare la memoria e rendere nuovamente programmabile il dispositivo. La versione di openOCD fornita con sandeepmistry nRF52 non include il comando apreg necessario per scrivere nel registro dei comandi ERASEALL, quindi è necessario installare una versione successiva.

Installa la versione OpenOCD OpenOCD-20181130 o successiva. La versione precompilata di Windows è disponibile su https://gnutoolchains.com/arm-eabi/openocd/ Il codice più recente è disponibile su

Apri un prompt dei comandi e cambia dir nella directory di installazione di OpenOCD e inserisci il comando

bin\openocd.exe -d2 -f interfaccia/cmsis-dap.cfg -f target/nrf52.cfg

La risposta è

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]Licenza GNU GPL v2 Per segnalazioni di bug, leggi https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: selezione automatica del primo trasporto di sessione disponibile "swd". Per sovrascrivere usa 'trasporto select'. velocità adattatore: 1000 kHz cortex_m reset_config sysresetreq Info: Ascolto sulla porta 6666 per connessioni tcl Info: Ascolto sulla porta 4444 per connessioni telnet Info: CMSIS-DAP: SWD Supportato Info: CMSIS-DAP: Versione FW = 1.10 Info: CMSIS-DAP: Interfaccia inizializzata (SWD) Info: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interfaccia pronta Info: velocità di clock 1000 kHz Info: SWD DPIDR 0x2ba01477 Errore: Impossibile trovare MEM-AP per controllare le informazioni principali: ascolto sulla porta 3333 per le connessioni gdb

Quindi apri una finestra di terminale, ad es. TeraTerm (Windows) o CoolTerm (Mac) e connettersi alla porta 127.0.0.1 4444

La finestra telnet mostrerà un > e il prompt dei comandi mostrerà Info: accettare la connessione 'telnet' su tcp/4444

Nella finestra telnet (es. TeraTerm) typenrf52.dap apreg 1 0x04this restituisce 0x00000000 indicando che il chip è protetto. Quindi digitare nrf52.dap apreg 1 0x04 0x01 e quindi nnrf52.dap apreg 1 0x04 questo restituisce 0x00000001 mostrando che il chip è ora impostato su ERASEALL al prossimo riavvio.

Chiudere la connessione telnet e utilizzare anche Ctrl-C per uscire dal programma openOCD nel prompt dei comandi, quindi spegnere e riaccendere il modulo nRF52 e sarà ora pronto per la programmazione.

Ora riprova a lampeggiare il softdevice.

Ora puoi programmare il modulo nRF52 da Arduino.

Passaggio 5: programmazione di SKYLAB SKB369

Programmazione di SKYLAB SKB369
Programmazione di SKYLAB SKB369
Programmazione di SKYLAB SKB369
Programmazione di SKYLAB SKB369
Programmazione di SKYLAB SKB369
Programmazione di SKYLAB SKB369

Chiudi Arduino e reinstalla l'ultima versione del supporto pfod_lp_nrf52 seguendo le istruzioni per l'installazione del supporto hardware pfod_lp_nrf52. L'ultimo pfod_lp_nrf52 include la scheda sostitutiva SKYLAB SKB369 Nano2. Selezionalo come scheda e puoi quindi programmarlo con la Revisione 3 di lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, come descritto nella Parte 2.

Se la programmazione fallisce. Chiudi tutte le finestre di Arduino, rimuovi i cavi USB, riavvia Arduino e ricollega il cavo USB del programmatore e ricollega l'alimentazione USB del modulo nRF52 e riprova.

Quindi collegarsi tramite pfodApp per visualizzare la temperatura e l'umidità attuali e storiche. Una volta visualizzato il grafico storico, le letture, con timestamp in millisecondi, vengono salvate nel file di registro sul tuo telefonino e disponibili anche nella schermata dei dati grezzi.

Il file di registro contiene anche i dati aggiuntivi necessari per ricreare i grafici di data e ora in un foglio di calcolo. Vedi Arduino Date and Time usando millis() e pfodApp per i dettagli

Passaggio 6: creazione di una nuova definizione della scheda Arduino NRF52

Creazione di una nuova definizione della scheda Arduino NRF52
Creazione di una nuova definizione della scheda Arduino NRF52
Creazione di una nuova definizione della scheda Arduino NRF52
Creazione di una nuova definizione della scheda Arduino NRF52
Creazione di una nuova definizione della scheda Arduino NRF52
Creazione di una nuova definizione della scheda Arduino NRF52
Creazione di una nuova definizione della scheda Arduino NRF52
Creazione di una nuova definizione della scheda Arduino NRF52

Per supportare una nuova scheda nRF52 è necessario a) aggiungere una nuova directory nella directory delle varianti con i file della scheda eb) modificare il file board.txt per aggiungere la nuova scheda ad Arduino.

Aggiunta di una nuova variante di scheda nRF52

Come descritto nella Parte 1, Installazione del supporto hardware pfod_lp_nrf52, trovare la sottodirectory hardware del pacchetto sandeepmistry che è stato aggiornato con il supporto pfod_lp_nrf52. Apri la sottodirectory \hardware\nRF5\0.60\variants e crea una nuova directory per la tua nuova scheda, ad es. variant.cpp e pins_arduino.h Puoi copiarli da una delle altre directory delle varianti della scheda. Per SKYLAB_SKB369_Nano2replacement, inizialmente ho copiato i file dalla variante RedBear_BLENano2.

pins_arduino.h file

Non è necessario modificare il file pins_arduino.h. Include solo il file variant.h

file variant.h

Modifica il file variant.h per definire il numero totale di pin che avrà la tua scheda, PINS_COUNT

NOTA: nel pacchetto sandeepmistry, le impostazioni NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS e NUM_ANALOG_OUTPUTS vengono ignorate

Se la tua scheda rende disponibili più o meno pin analogici, aggiorna la sezione /* Analog Pins */ del file variants.h.

NOTA: Per le schede NanoV2 e SKYLAB i pin analogici sono mappati sui pin digitali A0 == D0 ecc

Questo non è essenziale. Puoi assegnare gli ingressi analogici a qualsiasi comodo pin Arduino. Vedere quindi i file blue/variant.he blue/variant.cpp per un esempio.

Il chip nRF52832 ha 8 pin di ingresso analogico, ma la scheda SKYLAB_SKB369_Nano2replacement ne rende disponibili solo 6 per abbinare il Nano2.

Tutti i numeri di pin, eccetto RESET_PIN, nel file variant.h sono numeri di pin di Arduino. Questo è #define PIN_A0 (0) implica che D0 nello sketch arduino è lo stesso pin di A0. Il RESET_PIN è l'eccezione. Quel numero è il numero pin del chip nRF52823 e 21 è l'unica scelta valida. Tuttavia il supporto pfod_lp_nrf52 non abilita il pin di ripristino sul nRF52832

file variant.cpp

C'è solo una voce nel file variant.cpp, l'array g_ADigitalPinMap che mappa i numeri dei pin Arduino sui pin P0.. del chip nRF52832

NOTA: nelle schede NanoV2 e SKYLAB, i pin analogici Arduino A0, A1 … sono gli stessi dei pin digitali Arduino D0, D1 … quindi le prime voci in g_ADigitalPinMap DEVONO essere mappate ai numeri di pin AINx sul chip nRF52832

Per gli ingressi analogici resi disponibili dalla scheda, tali voci in g_ADigitalPinMap devono mappare i numeri di pin nRF52832 AIN0, AIN1, AIN2, ecc. cioè AIN0 è il pin del chip P0.02, AIN1 è il pin del chip P0.03 ecc., vedere il layout dei pin nRF52832 sopra.

Utilizzare (uint32_t)-1 per i mapping non validi. Ad esempio la scheda SKYLAB_SKB369_Nano2replacement non ha un LED integrato, D13, quindi la sua posizione è mappata su (uint32_t)-1

In pfod_lp_nrf52.zip le sottodirectory delle varianti Redbear NanoV2, SKYLAB SKB369 e GT832E_01 hanno immagini che mostrano le mappature impostate da variant.cpp. (Vedi le immagini sopra)

Nel caso di SKYLAB SKB369, ci sono molti pin tra cui scegliere. Solo abbastanza sono mappati per abbinare il NanoV2. Nel caso del GT832E_01, tutti i pin disponibili devono essere mappati. Anche in questo caso sono disponibili solo tre (3) ingressi analogici invece dei sei (6) del NanoV2. Inoltre, i due pin NFC, P0.09 e P0.10, devono essere riconfigurati come GPIO. Vedere Riconfigurazione dei pin NFC nRF52 come GPIO di seguito.

Aggiornamento del file board.txt

Ecco la voce SKYLAB_SKB369_Nano2replacement nel file board.txt.

## Sostituzione SKYLAB_SKB369 Nano2SKYLAB_SKB369_NANO2_REPLACEMENT.name=*Sostituzione SKYLAB SKB369 Nano2

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool=sandeepmistry:openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol=cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target=nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload. REPldMENT;maximum_size=524288 SKYLAB_transport_ACE SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch=falso SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port=falso SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb=falso

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool=sandeepmistry:openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu=corteccia-m4

SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16000000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi=hard -mfpu=fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript=nrf52_xxaa.ld

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags=-DUSE_LFXO

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132=S132

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice=s132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion=2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.soft. DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript=armgcc_s132_nrf52832_xxaa.ld

Impostazioni board.txt

Commenti: le righe che iniziano con # sono commenti.

Prefisso: ogni scheda ha bisogno di un prefisso univoco per identificare i suoi valori. Qui il prefisso èSKYLAB_SKB369_NANO2_REPLACEMENT.

Nome: la riga SKYLAB_SKB369_NANO2_REPLACEMENT.name specifica il nome di questa scheda da visualizzare nel menu della scheda di Arduino.

Strumento di caricamento: il blocco SKYLAB_SKB369_NANO2_REPLACEMENT.upload specifica quale strumento utilizzare per il caricamento. Se stai usando il Particle Debugger, usa protocol=cmsis-dap come mostrato sopra.

Bootloader – Questa riga è la stessa per tutte le schede in questo board.txt

Build: in questo blocco devono essere aggiornate solo due righe. La riga SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant specifica il nome della directory di questa scheda nella sottodirectory variant. Lo SKYLAB_SKB369_NANO2_REPLACEMENT.build.board è il valore aggiunto ad ARDUINO_ e quindi definito durante la compilazione del codice. per esempio. -DARDUINO_SKYLAB_SKB369_Nano2replacement Consente di abilitare/disabilitare parti del codice per schede specifiche.

Low Freq Clock – Questa riga, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, specifica la sorgente del clock a bassa frequenza, utilizzata per lp_timer. Ci sono tre opzioni, -DUSE_LFXO, -DUSE_LFRC e -DUSE_LFSYNT. La scelta migliore è -DUSE_LFXO, se la scheda ha un cristallo esterno a 32Khz. In caso contrario, utilizzare -DUSE_LFRC, che utilizza un oscillatore RC interno e assorbe leggermente più corrente, ~10uA in più, ed è molto meno preciso. Non utilizzare -DUSE_LFSYNT poiché ciò mantiene il chip sempre in funzione con conseguente assorbimento di corrente mAs.

Softdevice – pfod_lp_nrf52 supporta solo chip nRF52 e softdevice s132, quindi non sono necessarie modifiche per questo blocco, a parte il prefisso.

Riconfigurazione dei pin NFC nRF52 come GPIO

Per impostazione predefinita sui pin nRF52, P0.09 e P0.10 sono configurati per l'uso come NFC e si aspettano di essere collegati a un'antenna NFC. Se è necessario utilizzarli come pin I/O generici (GPIO), è necessario aggiungere una definizione, -DCONFIG_NFCT_PINS_AS_GPIOS, alle impostazioni di compilazione …menu.softdevice.s132.build.extra_flags di quella scheda nel file board.txt.

Ad esempio pfod_lp_nrf52.zip, riconfigura i pin GT832E_01 per l'uso come I/O. La sezione GT832E_01 per questa scheda, nel file boards.txt, ha la seguente definizione aggiunta

GT832E_01.menu.softdevice.s132.build.extra_flags=-DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS

Anche lo script del linker in pfod_lp_nrf52.zip è stato modificato per preservare questa impostazione e non è necessario modificarlo.

Passaggio 7: conclusione

Questo tutorial ha presentato un sostituto per Redbear NanoV2 utilizzando un modulo SKYLAB SKB369. Un monitor di umidità della temperatura alimentato a batteria/solare è stato utilizzato come esempio di progetto BLE a bassissima potenza in Arduino per il modulo SKYLAB. Correnti di alimentazione di ~29uA ottenute regolando i parametri di connessione. Ciò ha comportato una durata della batteria a bottone CR2032 ~ 10 mesi. Più lungo per pile a bottone e batterie di maggiore capacità. L'aggiunta di due celle solari a basso costo ha facilmente esteso la durata della batteria del 50% o più. Per alimentare il monitor con le celle solari è sufficiente una luce brillante da una stanza o una lampada da tavolo.

Questo tutorial ha anche trattato la rimozione della protezione del chip da un nRF52 preprogrammato e come impostare una nuova definizione di scheda in modo che corrisponda al proprio PCB/circuito

Non è richiesta alcuna programmazione Android. pfodApp gestisce tutto questo.

Consigliato: