Cuprins:

BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev. 3: 7 pași (cu imagini)
BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev. 3: 7 pași (cu imagini)

Video: BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev. 3: 7 pași (cu imagini)

Video: BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev. 3: 7 pași (cu imagini)
Video: Günstiger als Märklin, ESU & Co - DCC Decoder aus Rumänien, Train-o-Matic Review und Tutorial 2024, Noiembrie
Anonim
BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev 3
BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev 3
BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev 3
BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev 3
BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev 3
BLE ușor de putere foarte mică în Arduino Partea 3 - Înlocuire Nano V2 - Rev 3

Actualizare: 7 aprilie 2019 - Rev. 3 din lp_BLE_TempHumidity, adaugă graficele de dată / oră, folosind pfodApp V3.0.362 + și limitarea automată la trimiterea datelor

Actualizare: 24 martie 2019 - Rev. 2 din lp_BLE_TempHumidity, adaugă mai multe opțiuni de complot și i2c_ClearBus, adaugă suport GT832E_01

Introducere

Acest tutorial, A Redbear Nano V2 Replacement, este partea 3 din 3. Aceasta este Revizuirea 2 a acestui proiect. PCB-ul Revision 2 include montarea pentru celula monedei și senzor, simplifică construcția și îmbunătățește fluxul de aer în jurul senzorului, protejându-l în același timp de lumina directă a soarelui. Revizuirea 1 este aici.

Partea 1 - Construirea dispozitivelor BLE de putere foarte redusă simplificată cu Arduino acoperă configurarea Arduino pentru a codifica dispozitivele cu putere redusă nRF52, modulul de programare și măsurarea curentului de alimentare. De asemenea, acoperă temporizatoare și comparatoare specializate de consum redus și intrările reduse și utilizarea pfodApp pentru conectarea și controlul dispozitivului nRF52.

Partea 2 - Un monitor de umiditate cu temperatură de putere foarte mică acoperă folosind un modul Redbear Nano V2 și un senzor de temperatură / umiditate Si7021 pentru a construi o baterie / monitor solar cu putere redusă. De asemenea, acoperă modificarea bibliotecii Si7021 pentru a avea o putere redusă, reglarea dispozitivului BLE pentru a reduce consumul curent la <29uA și proiectarea unui afișaj personalizat de temperatură / umiditate pentru telefonul dvs. mobil.

Partea 3 - O înlocuire Redbear Nano V2, aceasta, acoperă utilizarea altor module bazate pe nRF52 în loc de Nano V2. Acoperă selectarea componentelor de alimentare, construcția, eliminarea protecției de programare a cipului nRF52, utilizarea pinilor NFC ca GPIO normal și definirea unei noi plăci nRF52 în Arduino.

Această instrucțiune este o aplicație practică a dispozitivelor BLE de construcție a părții 1, ușor de realizat cu Arduino prin construirea unui monitor de temperatură și umiditate BLE de putere foarte mică utilizând o placă SKYLAB SBK369 ca înlocuitor Nano V2. Acest tutorial prezintă cum să creați o nouă definiție a plăcii și cum să eliminați protecția de programare nRF52 pentru a permite reprogramarea acesteia. Acest tutorial utilizează aceeași schiță ca partea 2 cu aceiași parametri BLE reglați pentru un consum redus de energie și poate fi alimentat numai din baterie SAU baterie + solară SAU solară. Reglarea parametrilor BLE pentru putere redusă a fost acoperită în partea 2

Rev. 3 din lp_BLE_TempHumidity trasează datele în funcție de dată și oră folosind doar Arduino millis (). Consultați Data și ora Arduino folosind millis () și pfodApp folosind cea mai recentă versiune a pfodApp (V3.0.362 +).

Rev. 4 din pfod_lp_nrf52.zip acceptă, de asemenea, modulul GT832E_01 și acest tutorial acoperă utilizarea pinilor NFC nRF52 ca GPIO-uri standard.

Monitorul construit aici va funcționa ani de zile pe baterie Coin Cell sau 2 baterii AAA, chiar mai mult cu asistență solară. Pe lângă afișarea temperaturii și umidității actuale, monitorul stochează ultimele 36 de ore de 10 minute și ultimele 10 zile de lecturi orare. Acestea pot fi graficate pe mobilul dvs. Android și valorile salvate într-un fișier jurnal. Nu este necesară programarea Android, pfodApp gestionează toate acestea. Afișarea și graficarea Android sunt complet controlate de schița dvs. Arduino, astfel încât să o puteți personaliza după cum este necesar.

Partea 2 a folosit o placă Redbear Nano V2 pentru componenta nRF52832 BLE. Acest proiect îl înlocuiește pe cel cu o placă SKYLAB SKB369 mai ieftină. La fel ca în partea 2, pentru senzorul de temperatură / umiditate se folosește o placă de separare Sparkfun Si7021. O bibliotecă modificată de consum redus este utilizată cu Si7021.

Pasul 1: De ce o înlocuire Nano V2?

i) Nano V2 a ieșit din producție timp de câteva luni și nu pare să se încadreze în linia Particle.io, deci nu este clar pentru cât timp va fi disponibil.

ii) Nano V2 este mai scump. Cu toate acestea, are și caracteristici suplimentare. Vezi mai jos.

iii) Nano V2 are componente pe ambele părți, ceea ce îi conferă un profil mai înalt și face mai dificilă montarea.

iv) Nano V2 are pini I / O limitați disponibili și utilizarea D6-D10 necesită cabluri de zbor.

Deși placa Nano V2 este mai scumpă decât placa SKYLAB SKB369, ~ US17 față de ~ US5, Nano V2 are mai multe caracteristici. Nano V2 include un regulator de 3.3V și condensatori de alimentare, componente suplimentare pentru utilizarea opțiunii convertorului DC / DC nRF52, o antenă cu cip și un conector de antenă uFL SMT.

O altă alternativă este modulul GT832E_01 utilizat de www.homesmartmesh.com. Rev. 4 din pfod_lp_nrf52.zip acceptă, de asemenea, programarea modulului GT832E_01. SKYLAB SKB369 și GT832E_01 sunt disponibile de pe

Redbear (Particle.io) are, de asemenea, un modul gol fără regulator 3V3, componente DC / DC sau componente de cristal de 32Khz.

Contur

Acest proiect are 4 părți relative relative: -

Selectarea și construcția componentelor Eliminarea steagului de protecție de codare nRF52 și programarea schiței Crearea unui nou Arduino nRF52 Definiția plăcii Reconfigurarea pinilor NRF52 NFC ca GPIO

Pasul 2: Selecția și construcția componentelor

Selectarea componentelor

În plus față de componentele nRF52832 și Si7021 selectate în partea 2, acest proiect adaugă un regulator de 3.3V și condensatori de alimentare.

Componenta regulatorului de tensiune

Regulatorul utilizat aici este MC87LC33-NRT. Poate gestiona intrări de până la 12V și are un curent de repaus <3,6uA, de obicei 1,1uA. Nano V2 a folosit un regulator TLV704 cu un curent de repaus ușor mai mare, de obicei 3.4uA și poate gestiona tensiuni de intrare mai mari, de până la 24V. MC87LC33-NRT a fost ales în schimb, deoarece foaia sa de date specifică modul în care reacționează, deoarece tensiunea de intrare scade sub 3,3 V în cazul în care foaia de date TLV704 nu.

TLV704 specifică o tensiune de intrare de minimum 2,5V și nu este clar din foaia tehnică ce se va întâmpla mai jos. NRF52832 va rula până la 1,7V, iar Si7023 va rula până la 1,9V. Pe de altă parte, MC87LC33-NRT specifică diferențele de tensiune de intrare / ieșire până la 0V pentru curenți mici (Fig. 18 din fișa tehnică). Deci, având în vedere alegerea componentelor, MC87LC33-NRT a fost ales deoarece are performanța specificată.

Condensatoare de alimentare

Regulatorul MC87LC33-NRT are nevoie de niște condensatori de alimentare pentru stabilitate și răspuns. În foaia tehnică se recomandă un condensator de ieșire> 0,1 uF. SKYLAB SBK369 specifică, de asemenea, condensatori 10uF / 0.1uF pe alimentarea din apropierea plăcii. Condensatorii mai mari ajută la furnizarea vârfurilor de curent nRF52 TX. Aici s-au folosit condensatori ceramici 4 x 22uF 25V și 3 x 0,1uF 50V. Un condensator de 22uF și un 0.1uF au fost plasate în apropierea SKYLAB SBK369, un 0.1uF a fost plasat aproape de ieșirea MC87LC33-NRT pentru a asigura stabilitatea și un 22uF și 0.1uF au fost plasate pe intrarea în MC87LC33-NRT și un 2 condensatori suplimentari de 2 x 22 uF au fost lipiți pe pinii Vin / GND ca un rezervor de curent suplimentar. Pentru comparație, placa NanoV2 are un 22uF / 0.1uF pe intrarea regulatorului TLV704 și un 0.1uF pe ieșirea sa.

Condensatoarele rezervorului de curent suplimentar au fost instalate la intrarea în regulatorul de 3,3 V, astfel încât acestea să se încarce la o tensiune mai mare atunci când funcționează cu celule solare. Încărcarea la o tensiune mai mare echivalează cu stocarea unui curent mai mare pentru alimentarea vârfurilor Tx.

Condensatoarele ceramice X5R sunt utilizate deoarece au o rezistență scăzută în serie și un curent scăzut de scurgere. Rezistența este de obicei 100, 000MΩ sau 1000MΩ - µF, care este mai mică. Deci pentru 22uF avem 22000MΩ, adică scurgere de 0,15nA la 3,3V sau 0,6nA pentru cei patru condensatori de 22uF. Acest lucru este neglijabil. Pentru comparație, condensatoarele electrolitice Panasonic cu ESR scăzut, cu scurgere scăzută au curenți de scurgere de <0,01CV. Deci, pentru un condensator 22uF 16V, scurgerea este <10uA. Notă: Aceasta este scurgerea la tensiunea nominală, 16V în acest caz. Scurgerea este mai mică la tensiuni mai mici, adică <2.2uA la 3.3V.

Lista de componente

Costul aproximativ pe unitate în decembrie 2018, ~ 61 USD, excluzând transportul și programatorul din partea 1

  • SKYLAB SKB369 ~ 5 USD, de exemplu Aliexpress
  • Placă Sparkfun Si7021 ~ 8 USD
  • 2 x 53mm x 30mm 0,15W 5V celule solare de ex. Overfly ~ 1,10 USD
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 USD pentru 5 de pe www.pcbcart.com
  • 1 x regulator MC78LC33 3.3V, de ex. Digikey MC78LC33NTRGOSCT-ND ~ 1 USD
  • 2 x 0.1uF 50V ceramic C1608X5R1H104K080A de ex. Digikey 445-7456-1-ND ~ 0,3 USD
  • 4 x 22uF 16V ceramic GRM21BR61C226ME44L de ex. Digikey 490-10747-1-ND ~ 2 USD
  • 1 x BAT54CW, de ex. Digikey 497-12749-1-ND ~ 0,5 USD
  • 1 x 470R 0,5W 1% rezistor de ex. Digikey 541-470TCT-ND ~ 0,25 USD
  • 1 x 10V 1W zener SMAZ10-13-F de ex. Digikey SMAZ10-FDICT-ND ~ 0,5 USD
  • Șuruburi din nailon de 3 mm x 12 mm, de ex. Jaycar HP0140 ~ AUD 3 USD
  • Piulițe de nailon de 3 mm x 12 mm, de ex. Jaycar HP0146 ~ AUD 3 USD
  • Bandă de montare permanentă Scotch Cat 4010 de ex. de la Amazon ~ 6,6 USD
  • Suport baterie CR2032, de ex. HU2032-LF ~ 1,5 USD
  • Baterie CR2032 ~ 1 USD
  • Foaie Perspex, 3,5 mm și 8 mm
  • pfodApp ~ 10 USD
  • Lipire lipire de ex. Jaycar NS-3046 ~ 13 USD

Pasul 3: Construcție

Constructie
Constructie
Constructie
Constructie
Constructie
Constructie

Proiectul este construit pe un mic PCB. PCB-ul a fost fabricat de pcbcart.com din aceste fișiere Gerber, SKYLAB_TempHumiditySensor_R2.zip PCB-ul imită pinul Nano V2 și este suficient de general pentru a fi utilizat pentru alte proiecte BLE.

Aceasta este schema (versiunea pdf)

Mai întâi lipiți componentele SMD, apoi montați placa SKYLAB SKB369

Aproape toate componentele sunt dispozitive de montare pe suprafață (SMD). Condensatoarele și IC-urile pot fi greu de lipit manual. Metoda sugerată este să țineți PCB într-un menghină și să aplicați o cantitate mică de pastă de lipit pe tampoane și să plasați componentele SMD, cu excepția plăcii SKB369 pe PCB. Apoi, folosind un pistol de încălzire, aplicați căldură pe partea inferioară a PCB-ului până când pasta de lipit se topește și apoi faceți o trecere rapidă peste partea superioară a plăcii, având grijă să nu suflați componentele. În cele din urmă, atingeți componentele cu un fier de lipit cu vârf mic. Aveți grijă la condensatori și rezistență, deoarece este ușor să topiți ambele capete și să dezlănțuiți componenta în timp ce lipiți un capăt.

Această revizuire adaugă condensatori ceramici suplimentari de 22 uF 16 V. Acești condensatori suplimentari reduc vârfurile de curent extrase din baterie și, de asemenea, reduc scufundările de tensiune atunci când sunt alimentate de la celulele solare. Atâta timp cât tensiunea de la celulele solare rămâne peste tensiunea bateriei, atunci nu se extrage curent din baterie.

După montarea componentelor SMD, puteți lipi pe placa SKYLAB SKB369. Există două găuri de puncte de testare pe o parte a filelor SKB369. Utilizați doi știfturi într-o bază de carton pentru a poziționa placa SKB369 și aliniați cu atenție știfturile. (Vedeți exemplul de fotografie de mai sus folosind PCB-ul Revision 1) Apoi lipiți un știft din partea opusă pentru a menține placa în loc înainte de a lipi celelalte știfturi.

Rețineți firul de legătură Gnd de la CLK la GND în partea finită. Acesta este instalat DUPĂ programare pentru a preveni zgomotul de pe intrarea CLK de la declanșarea cipului nRF52 într-un mod de depanare cu curent ridicat

Caz de montare

Carcasa de montare a fost realizată din două bucăți de perspex, 110 mm x 35 mm, 3 mm grosime. Piesa de 3,5 mm de sub celulele solare a fost lovită pentru a lua șuruburile de nailon de 3 mm. Această construcție revizuită este mai simplificatoare decât Rev 1 și îmbunătățește fluxul de aer în jurul senzorului. Găurile suplimentare de la fiecare capăt sunt pentru montare, folosind, de exemplu, legături de cablu.

Pasul 4: Eliminarea steagului de protecție pentru codare NRF52

Îndepărtarea steagului de protecție pentru codare NRF52
Îndepărtarea steagului de protecție pentru codare NRF52
Îndepărtarea steagului de protecție pentru codare NRF52
Îndepărtarea steagului de protecție pentru codare NRF52
Îndepărtarea steagului de protecție pentru codare NRF52
Îndepărtarea steagului de protecție pentru codare NRF52

Conectați placa de temperatură / umiditate la programatorul descris în partea 1, așa cum se arată mai sus.

Cu celulele solare și bateriile deconectate, Vin și Gnd sunt conectate la programatorul Vdd și Gnd (cablurile galbene și verzi), iar SWCLK și SWDIO sunt conectate la Clk și SIO ale plăcii antetului programatorului (cablurile alb și gri)

Eliminarea protecției programului nRF52

Din pagina Nordic Semi - Depanare și urmărire DAP - Port de acces la depanare. Un depanator extern poate accesa dispozitivul prin intermediul DAP. DAP implementează un port standard ARM® CoreSight ™ Serial Wire Debug (SW-DP). SW-DP implementează protocolul Serial Wire Debug (SWD), care este o interfață serială cu doi pini, SWDCLK și SWDIO

Important: Linia SWDIO are un rezistor de tragere intern. Linia SWDCLK are un rezistor de tragere intern.

CTRL-AP - Port de acces de control. Control Access Port (CTRL-AP) este un port de acces personalizat care permite controlul dispozitivului chiar dacă celelalte porturi de acces din DAP sunt dezactivate de protecția portului de acces. Protecția portului de acces blochează depanatorul de accesul de citire și scriere la toate registrele CPU și adresele mapate de memorie. Dezactivați protecția portului de acces. Protecția portului de acces poate fi dezactivată numai prin emiterea unei comenzi ERASEALL prin CTRL-AP. Această comandă va șterge Flash, UICR și RAM.

Selectați CMSIS-DAP ca programator pentru Particle's Debugger și selectați nRF5 Flash SoftDevice

Dacă blițul funcționează, atunci este în regulă, dar deseori modulele vor fi protejate împotriva reprogramării și veți obține această ieșire de eroare în fereastra Arduino

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Licențiat sub GNU GPL v2 Pentru rapoarte de erori, citiți https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: o singură opțiune de transport; Autoselectează viteza adaptorului „swd”: 10000 kHz cortex_m reset_config sysresetreq Informații: CMSIS-DAP: Informații SWD acceptate: CMSIS-DAP: Interfață inițializată (SWD) Informații: CMSIS-DAP: FW Versiune = 1.10 Informații: SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interfață pregătită Info: reduce cererea de viteză: 10000kHz la 5000kHz Informații maxime: viteza ceasului 10000 kHz Info: SWD IDCODE 0x2ba01477 Eroare: Nu s-a putut găsi MEM -AP pentru a controla nucleul Eroare: Ținta nu a fost examinată încă Eroare la intermitent SoftDevice.

În acest caz, trebuie să setați registrul de comandă ERASEALL în nRF52 pentru a goli memoria și a face dispozitivul din nou programabil. Versiunea openOCD furnizată cu sandeepmistry nRF52 nu include comanda apreg necesară pentru a scrie în registrul de comandă ERASEALL, deci trebuie să instalați o versiune ulterioară.

Instalați versiunea OpenOCD OpenOCD-20181130 sau o versiune ulterioară. Versiunea precompilată Windows este disponibilă de la https://gnutoolchains.com/arm-eabi/openocd/ Cel mai recent cod este disponibil de la

Deschideți un prompt de comandă și schimbați directorul în directorul de instalare OpenOCD și introduceți comanda

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

Răspunsul este

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] Licențiat sub GNU GPL v2 Pentru rapoarte de erori, citiți https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: selectarea automată a primei sesiuni de transport disponibile „swd”. Pentru a suprascrie, folosiți „transport select”. viteza adaptorului: 1000 kHz cortex_m reset_config sysresetreq Info: Ascultare pe portul 6666 pentru conexiuni tcl Info: Ascultare pe portul 4444 pentru conexiuni telnet Info: CMSIS-DAP: SWD Informații acceptate: CMSIS-DAP: Versiunea FW = 1.10 Informații: CMSIS-DAP: Interfață inițializată (SWD) Informații: SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Informații: CMSIS-DAP: Interfață pregătită Info: viteză ceas 1000 kHz Informații: SWD DPIDR 0x2ba01477 Eroare: Nu s-a putut găsi MEM-AP pentru a controla informațiile de bază: Ascultarea pe portul 3333 pentru conexiunile gdb

Apoi deschideți o fereastră de terminal, de ex. TeraTerm (Windows) sau CoolTerm (Mac) și conectați-vă la portul 127.0.0.1 4444

Fereastra telnet va afișa un> și promptul de comandă va afișa Info: acceptarea conexiunii „telnet” pe tcp / 4444

În fereastra telnet (adică TeraTerm) typenrf52.dap apreg 1 0x04 acesta returnează 0x00000000 care arată că cipul este protejat. Apoi typenrf52.dap apreg 1 0x04 0x01 și thennrf52.dap apreg 1 0x04 acesta returnează 0x00000001 care arată că cipul este acum setat la ERASEALL la următoarea repornire.

Închideți conexiunea telnet și utilizați, de asemenea, Ctrl-C pentru a ieși din programul openOCD din promptul de comandă și apoi porniți modulul nRF52 și va fi acum gata de programare.

Acum reîncercați să clipiți dispozitivul soft.

Acum puteți programa modulul nRF52 de la Arduino.

Pasul 5: Programarea SKYLAB SKB369

Programarea SKYLAB SKB369
Programarea SKYLAB SKB369
Programarea SKYLAB SKB369
Programarea SKYLAB SKB369
Programarea SKYLAB SKB369
Programarea SKYLAB SKB369

Închideți Arduino și reinstalați cea mai recentă versiune a suportului pfod_lp_nrf52 urmând instrucțiunile de asistență Instalare pfod_lp_nrf52. Cel mai recent pfod_lp_nrf52 include placa de înlocuire SKYLAB SKB369 Nano2. Selectați-l ca tablă și apoi îl puteți programa cu Revizuirea 3 a lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, așa cum este descris în partea 2.

Dacă programarea eșuează. Închideți toate ferestrele Arduino, scoateți cablurile USB, reporniți Arduino și conectați din nou cablul USB al programatorului și conectați din nou sursa USB a modulului nRF52 și încercați din nou.

Apoi conectați-vă prin pfodApp pentru a afișa temperatura și umiditatea curentă și istorică. După ce ați afișat graficul istoric, citirile, cu marcaje de timp de milisecundă, sunt salvate în fișierul jurnal de pe telefonul mobil și, de asemenea, disponibile în ecranul de date brute.

Fișierul jurnal conține, de asemenea, datele suplimentare necesare pentru a recrea graficele de dată și oră într-o foaie de calcul. Consultați Data și ora Arduino folosind millis () și pfodApp pentru detalii

Pasul 6: Crearea unei noi definiții a plăcii Arduino NRF52

Crearea unei noi definiții a plăcii Arduino NRF52
Crearea unei noi definiții a plăcii Arduino NRF52
Crearea unei noi definiții a plăcii Arduino NRF52
Crearea unei noi definiții a plăcii Arduino NRF52
Crearea unei noi definiții a plăcii Arduino NRF52
Crearea unei noi definiții a plăcii Arduino NRF52
Crearea unei noi definiții a plăcii Arduino NRF52
Crearea unei noi definiții a plăcii Arduino NRF52

Pentru a suporta o nouă placă nRF52, trebuie să a) adăugați un nou director în directorul variante cu fișierele plăcii și b) să editați fișierul boards.txt pentru a adăuga noua placă la Arduino.

Adăugarea unei noi variante de placă nRF52

Așa cum este descris în partea 1, Instalarea suportului hardware pfod_lp_nrf52, găsiți subdirectorul hardware al pachetului sandeepmistry pe care l-ați actualizat cu suportul pfod_lp_nrf52. Deschideți subdirectorul / hardware / nRF5 / 0.6.0 / variants și creați un director nou pentru noua dvs. placă, de exemplu, înlocuirea schimbăriiSKYLAB_SKB369_Nano2 În noul director / hardware / nRF5 / 0.6.0 / variants / SKYLAB_SKB369_Nano2replacement creați trei fișiere variant.h, variant.cpp și pins_arduino.h Le puteți copia de pe celelalte directoare de variante de bord. Pentru înlocuirea SKYLAB_SKB369_Nano2, am copiat inițial fișierele din varianta RedBear_BLENano2.

fișier pins_arduino.h

Fișierul pins_arduino.h nu trebuie schimbat. Acesta include doar fișierul variant.h

fișier variant.h

Editați fișierul variant.h pentru a defini numărul total de pini pe care va avea placa dvs., PINS_COUNT

NOTĂ: În pachetul sandeepmistry, NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS și NUM_ANALOG_OUTPUTS sunt ignorate

Dacă placa dvs. pune la dispoziție mai mulți sau mai puțini pini analogici, actualizați secțiunea / * Pini analogici * / a fișierului variants.h.

NOTĂ: Pentru plăcile NanoV2 și SKYLAB pinii analogici sunt mapați la pinii digitali A0 == D0 etc

Acest lucru nu este esențial. Puteți atribui intrările analogice oricărui pin Arduino convenabil. Vedeți apoi fișierele blue / variant.h și blue / variant.cpp pentru un exemplu.

Cipul nRF52832 are 8 pini de intrare analogici, dar placa de înlocuire SKYLAB_SKB369_Nano2 face doar 6 dintre ele disponibile pentru a se potrivi cu Nano2.

Toate numerele PIN, cu excepția RESET_PIN, din fișierul variant.h sunt numere PIN Arduino. Adică #define PIN_A0 (0) implică faptul că D0 în schița arduino este același pin ca A0. RESET_PIN este excepția. Acest număr este numărul pinului cipului nRF52823 și 21 este singura alegere validă. Cu toate acestea, suportul pfod_lp_nrf52 nu activează pinul de resetare pe nRF52832

fișier variant.cpp

Există o singură intrare în fișierul variant.cpp, matricea g_ADigitalPinMap care mapează numerele pinului Arduino la cipul nRF52832 P0.. pinii

NOTĂ: În plăcile NanoV2 și SKYLAB, pinii analogici Arduino A0, A1 … sunt la fel ca pinii digitali Arduino D0, D1 … astfel încât primele intrări în g_ADigitalPinMap TREBUIE să se mapeze la numerele pin AINx de pe cipul nRF52832

Pentru intrările analogice pe care placa dvs. le pune la dispoziție, acele intrări în g_ADigitalPinMap trebuie să asocieze numerele de pin PIN nRF52832 AIN0, AIN1, AIN2 etc. adică AIN0 este pinul cu chip P0.02, AIN1 este pinul cu chip P0.03 etc. vezi mai sus aspectul pinului nRF52832.

Utilizați (uint32_t) -1 pentru mapări nevalide. De exemplu, placa de înlocuire SKYLAB_SKB369_Nano2 nu are un LED încorporat, D13, deci poziția sa este mapată la (uint32_t) -1

În pfod_lp_nrf52.zip, subdirectoarele de variante Redbear NanoV2, SKYLAB SKB369 și GT832E_01 au imagini care prezintă mapările configurate de variant.cpp. (Vezi imaginile de mai sus)

În cazul SKYLAB SKB369, există o mulțime de știfturi din care să alegeți. Sunt mapate doar suficiente pentru a se potrivi cu NanoV2. În cazul modelului GT832E_01, trebuie să fie mapate toate știfturile disponibile. Chiar și atunci există doar trei (3) intrări analogice disponibile în locul celor șase (6) de pe NanoV2. Pe lângă acestea, cei doi pini NFC, P0.09 și P0.10, trebuie să fie reconfigurați ca GPIO. Consultați Reconfigurarea pinilor NRF52 NFC ca GPIO-uri de mai jos.

Actualizarea fișierului boards.txt

Iată intrarea SKYLAB_SKB369_Nano2replacement în fișierul boards.txt.

## SKYLAB_SKB369 Nano2 ReplacementSKYLAB_SKB369_NANO2_REPLACEMENT.name = * SKYLAB SKB369 Nano2 Replacement

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.maximum_size = 524282 SKYLAB SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch = fals SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port = fals SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb = fals

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu = cortex-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.softdevice.s132.upload.maximum_size = 409600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript = armgcc_s132_nrf52832_xxaa.ld

Setări board.txt

Comentarii - liniile care încep cu # sunt comentarii.

Prefix - fiecare placă are nevoie de un prefix unic pentru a-și identifica valorile. Aici prefixul este SKYLAB_SKB369_NANO2_REPLACEMENT.

Nume - Linia SKYLAB_SKB369_NANO2_REPLACEMENT.name specifică numele acestei plăci de afișat în meniul de placă Arduino.

Instrument de încărcare - Blocul SKYLAB_SKB369_NANO2_REPLACEMENT.upload specifică instrumentul de utilizat pentru încărcare. Dacă utilizați Particle Debugger, utilizați protocol = cmsis-dap așa cum se arată mai sus.

Bootloader - Această linie este aceeași pentru toate plăcile din acest boards.txt

Build - Doar două linii trebuie actualizate în acest bloc. Linia SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant specifică numele acestui director în subdirectorul variantelor. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board este valoarea adăugată la ARDUINO_ și apoi definită în timpul compilării codului. de exemplu. -DARDUINO_SKYLAB_SKB369_Nano2replacement Aceasta vă permite să activați / dezactivați părți ale codului pentru anumite plăci.

Low Freq Clock - Această linie, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, specifică sursa ceasului cu frecvență joasă, utilizată pentru lp_timer. Există trei opțiuni, -DUSE_LFXO, -DUSE_LFRC și -DUSE_LFSYNT. Cea mai bună alegere este -DUSE_LFXO, dacă placa are un cristal extern de 32Khz. Dacă nu, utilizați -DUSE_LFRC, care utilizează un oscilator RC intern și atrage puțin mai mult curent, cu ~ 10uA mai mult și este mult mai puțin ori mai puțin precis. Nu utilizați -DUSE_LFSYNT deoarece acest lucru menține cipul în funcțiune tot timpul, rezultând în extragerea curentului mAs.

Softdevice - pfod_lp_nrf52 acceptă doar cipuri nRF52 și softdevice s132, deci nu este nevoie de modificări pentru acest bloc, în afară de prefix.

Reconfigurarea pinilor NRF52 NFC ca GPIO-uri

Fiți implicit la pinii nRF52, P0.09 și P0.10 sunt configurate pentru utilizare ca NFC și se așteaptă să fie conectate la o antenă NFC. Dacă trebuie să le utilizați ca pini I / O de uz general (GPIO-uri), atunci trebuie să adăugați un define, -DCONFIG_NFCT_PINS_AS_GPIOS, la acea placă … menu.softdevice.s132.build.extra_flags compila setările în fișierul boards.txt.

De exemplu, pfod_lp_nrf52.zip, reconfigurează pinii GT832E_01 pentru utilizare ca I / O. Secțiunea GT832E_01 pentru această placă, în fișierul boards.txt, are adăugată următoarea definire

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

Scriptul linker din pfod_lp_nrf52.zip a fost, de asemenea, modificat pentru a păstra această setare și nu trebuie modificat.

Pasul 7: Concluzie

Acest tutorial a prezentat un înlocuitor pentru Redbear NanoV2 utilizând un modul SKYLAB SKB369. Un monitor de umiditate a temperaturii alimentat cu baterie / solar a fost folosit ca exemplu de proiect BLE de foarte mică putere în Arduino pentru modulul SKYLAB. Curenții de alimentare de ~ 29uA au fost obținuți prin reglarea parametrilor conexiunii. Acest lucru a dus la o durată de viață a bateriei cu celule de monedă CR2032 ~ 10 luni. Mai mult pentru baterii și celule de monede de capacitate mai mare. Adăugarea a două celule solare ieftine a extins cu ușurință durata de viață a bateriei cu 50% sau mai mult. O lumină luminoasă a camerei sau o lampă de birou sunt suficiente pentru a alimenta monitorul din celulele solare.

Acest tutorial a acoperit, de asemenea, eliminarea protecției cipului de pe un nRF52 preprogramat și modul de configurare a unei noi definiții a plăcii pentru a se potrivi cu propriul PCB / circuit.

Nu este necesară programarea Android. pfodApp se ocupă de toate acestea.

Recomandat: