Përmbajtje:

BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi i Nano V2 - Rev 3: 7 Hapa (me fotografi)
BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi i Nano V2 - Rev 3: 7 Hapa (me fotografi)

Video: BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi i Nano V2 - Rev 3: 7 Hapa (me fotografi)

Video: BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi i Nano V2 - Rev 3: 7 Hapa (me fotografi)
Video: ПЛОВ УЗБЕКСКИЙ В КАЗАНЕ НА КОСТРЕ. Как готовят Ферганский ПЛОВ в Одессе 2024, Nëntor
Anonim
BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi Nano V2 - Rev 3
BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi Nano V2 - Rev 3
BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi Nano V2 - Rev 3
BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi Nano V2 - Rev 3
BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi Nano V2 - Rev 3
BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 3 - Zëvendësimi Nano V2 - Rev 3

Përditësim: 7 Prill 2019 - Rev 3 i lp_BLE_TempHumidity, shton vizatimet e datës/orës, duke përdorur pfodApp V3.0.362+, dhe fikjen automatike kur dërgoni të dhëna

Përditësimi: 24 Mars 2019 - Rev 2 i lp_BLE_TempHumidity, shton më shumë mundësi komploti dhe i2c_ClearBus, shton mbështetjen GT832E_01

>

Prezantimi

Ky tutorial, Një Redbear Nano V2 Replacement, është Pjesa 3 e 3. Ky është Rishikimi 2 i këtij projekti. Revision 2 PCB përfshin montimin për qelizën e monedhës dhe sensorin, thjeshton ndërtimin dhe përmirëson rrjedhën e ajrit rreth sensorit duke e mbrojtur atë nga rrezet e diellit direkte. Rishikimi 1 është këtu.

Pjesa 1 - Ndërtimi i pajisjeve BLE me fuqi shumë të ulët të bëra lehtë me mbulesat Arduino duke vendosur Arduino në kodimin e pajisjeve me fuqi të ulët nRF52, modulin e programimit dhe matjen e rrymës së furnizimit. Ai gjithashtu mbulon kohëmatësit dhe krahasuesit e specializuar të energjisë së ulët dhe hyrjet e depozituara dhe përdorimin e pfodApp për t'u lidhur dhe kontrolluar pajisjen nRF52.

Pjesa 2 - Një monitor me lagështi të temperaturës me fuqi shumë të ulët mbulon duke përdorur një modul Redbear Nano V2 dhe një sensor të temperaturës / lagështisë Si7021 për të ndërtuar një bateri / monitor diellor me fuqi të ulët. Ai gjithashtu mbulon modifikimin e bibliotekës Si7021 për të qenë me fuqi të ulët, duke rregulluar pajisjen BLE për të zvogëluar konsumin e saj aktual në <29uA dhe duke krijuar një ekran të personalizuar të temperaturës/lagështisë për celularin tuaj.

Pjesa 3 - Një zëvendësim Redbear Nano V2, ky, mbulon përdorimin e moduleve të tjerë të bazuar në nRF52 në vend të Nano V2. Ai mbulon përzgjedhjen e përbërësve të furnizimit, ndërtimin, heqjen e mbrojtjes së programimit të çipave nRF52, përdorimin e kunjave NFC si GPIO normale dhe përcaktimin e një bordi të ri nRF52 në Arduino.

Ky udhëzues është një aplikim praktik i Pjesës 1 Ndërtimi i pajisjeve BLE me fuqi shumë të ulët të bëra lehtë me Arduino duke ndërtuar një Monitor të temperaturës dhe lagështisë BLE me fuqi shumë të ulët duke përdorur një tabelë SKYLAB SBK369 si zëvendësim Nano V2. Ky tutorial mbulon se si të krijoni një përkufizim të ri të bordit dhe si të hiqni mbrojtjen e programimit nRF52 për të lejuar që ai të ri-programohet. Ky tutorial përdor të njëjtën skicë si Pjesa 2 me të njëjtat parametra të akorduar BLE për konsum të ulët të energjisë dhe mund të mundësohet nga bateria OSE bateria + diellore ose diellore vetëm. Rregullimi i parametrave BLE për fuqi të ulët u mbulua në Pjesën 2

Rev 3 i lp_BLE_TempHumidity paraqet të dhënat sipas datës dhe kohës duke përdorur vetëm Arduino millis (). Shihni datën dhe orën Arduino duke përdorur millis () dhe pfodApp duke përdorur versionin më të fundit të pfodApp (V3.0.362+).

Rev 4 i pfod_lp_nrf52.zip gjithashtu mbështet modulin GT832E_01 dhe ky tutorial mbulon përdorimin e kunjave NFC nRF52 si GPIO standarde.

Monitori i ndërtuar këtu do të funksionojë për vite me radhë në Coin Cell ose 2 bateri AAA, madje edhe më gjatë me ndihmën diellore. Përveç shfaqjes së temperaturës dhe lagështisë aktuale, monitori ruan 36 orët e fundit të leximeve 10min dhe 10 ditët e fundit të leximeve për orë. Këto mund të grafikohen në celularin tuaj Android dhe vlerat të ruhen në një skedar regjistri. Asnjë programim Android nuk kërkohet, pfodApp merret me të gjitha këto. Ekrani dhe grafiku i Android kontrollohet plotësisht nga skica juaj Arduino, kështu që ju mund ta personalizoni sipas kërkesës.

Pjesa 2 përdori një tabelë Redbear Nano V2 për përbërësin nRF52832 BLE. Ky projekt e zëvendëson atë me një tabelë më të lirë SKYLAB SKB369. Ashtu si në Pjesën 2, një tabelë shpërthimi Sparkfun Si7021 përdoret për Sensorin e Temperaturës / Lagështisë. Një bibliotekë e modifikuar me fuqi të ulët përdoret me Si7021.

Hapi 1: Pse një zëvendësim Nano V2?

i) Nano V2 ishte jashtë prodhimit për disa muaj dhe nuk duket se përshtatet në linjën Particle.io kështu që nuk është e qartë se sa kohë do të jetë në dispozicion.

ii) Nano V2 është më i shtrenjtë. Sidoqoftë, ai gjithashtu ka veçori shtesë. Shikoni më poshtë.

iii) Nano V2 ka përbërës në të dy anët, gjë që i jep atij një profil më të lartë dhe e bën më të vështirë montimin.

iv) Nano V2 ka kunja të kufizuara I/O në dispozicion dhe përdorimi i D6 në D10 kërkon drejtues fluturues.

Edhe pse bordi Nano V2 është më i shtrenjtë se bordi SKYLAB SKB369, ~ US17 kundrejt 5 US5, Nano V2 ka më shumë veçori. Nano V2 përfshin një rregullator 3.3V dhe kondensatorë furnizimi, përbërës shtesë për përdorimin e opsionit të konvertuesit nRF52 DC/DC, një antenë të çipave dhe një lidhje antene uFL SMT.

Një alternativë tjetër është moduli GT832E_01 i përdorur nga www.homesmartmesh.com. Rev 4 i pfod_lp_nrf52.zip gjithashtu mbështet programimin e modulit GT832E_01. SKYLAB SKB369 dhe GT832E_01 janë në dispozicion nga

Redbear (Particle.io) gjithashtu ka një modul të zhveshur pa rregullator 3V3, përbërës DC/DC ose përbërës kristal 32Khz.

Skicë

Ky projekt ka 4 pjesë relative të pavarura:-

Përzgjedhja dhe Ndërtimi i Komponentit Heqja e flamurit të mbrojtjes së kodimit nRF52 dhe programimi i skicës Krijimi i një Përkufizimi të Bordit të Ri Arduino nRF52 Konfigurimi i kunjave të NFC NRF52 si GPIO

Hapi 2: Zgjedhja dhe Ndërtimi i Komponentit

Përzgjedhja e Komponentit

Përveç përbërësve nRF52832 dhe Si7021 të zgjedhur në Pjesën 2, ky projekt shton një rregullator 3.3V dhe kondensatorë furnizimi.

Komponenti i Rregullatorit të Tensionit

Rregullatori i përdorur këtu është MC87LC33-NRT. Mund të trajtojë hyrje deri në 12V dhe ka një rrymë qetësuese prej <3.6uA, zakonisht 1.1uA. Nano V2 i përdorur nga një rregullator TLV704 ka një rrymë paksa më të lartë, zakonisht 3.4uA dhe mund të përballojë tensione më të larta hyrëse, deri në 24V. MC87LC33-NRT u zgjodh në vend sepse fleta e të dhënave e tij specifikon se si përgjigjet pasi tensioni i hyrjes bie nën 3.3V, ndërsa si fleta e të dhënave TLV704 jo.

TLV704 specifikon një tension hyrës prej minimumi 2.5V dhe nuk është e qartë nga fleta e të dhënave se çfarë do të ndodhë nën atë. NRF52832 do të zbresë në 1.7V dhe Si7023 do të zbresë në 1.9V. MC87LC33-NRT nga ana tjetër specifikon diferencat e tensionit hyrës/dalës deri në 0V për rryma të ulëta (Figura 18 e fletës së të dhënave). Pra, duke pasur parasysh zgjedhjen e përbërësve, MC87LC33-NRT u zgjodh sepse ka performancën e specifikuar.

Kondensatorët e Furnizimit

Rregullatori MC87LC33-NRT ka nevojë për disa kondensatorë furnizimi për stabilitet dhe reagim. Një kondensator dalës> 0.1uF rekomandohet në fletën e të dhënave. SKYLAB SBK369 gjithashtu specifikon kondensatorët 10uF/0.1uF në furnizimin afër bordit. Kondensatorët më të mëdhenj ndihmojnë në furnizimin me thumba të rrymës nRF52 TX. Këtu u përdorën kondensatorë qeramikë 4 x 22uF 25V dhe 3 x 0.1uF 50V. Një kondensator 22uF dhe një 0.1uF u vendosën pranë SKYLAB SBK369, një 0.1uF u vendos pranë daljes së MC87LC33-NRT për të siguruar stabilitet dhe një 22uF dhe 0.1uF u vendosën në hyrjen e MC87LC33-NRT dhe një më tej 2 kondensatorë 22uF janë bashkuar nëpër kunjat e Vin/GND si një rezervuar i mëtejshëm aktual. Për krahasim, bordi NanoV2 ka një 22uF / 0.1uF në hyrje të rregullatorit TLV704 dhe një 0.1uF në daljen e tij.

Kondensatorët shtesë të rezervuarit aktual u instaluan në hyrjen e rregullatorit 3.3V në mënyrë që ata të ngarkohen në një tension më të lartë kur punojnë me qeliza diellore. Ngarkimi në tension më të lartë është i barabartë me ruajtjen e më shumë rrymës për të furnizuar thumbat Tx.

Kondensatorët qeramikë X5R përdoren sepse kanë rezistencë të ulët serike dhe rrymë të ulët rrjedhjeje. Rezistenca është zakonisht 100, 000MΩ ose 1000MΩ - µF e cila është ndonjëherë më pak. Pra për 22uF kemi 22000MΩ, domethënë rrjedhje 0.15nA në 3.3V ose 0.6nA për katër kondensatorët 22uF. Kjo është e papërfillshme. Për krahasim, kondensatorët elektrolitikë Panasonic me rrjedhje të ulët, me rrjedhje të ulët kanë rryma rrjedhjeje <0.01CV. Pra, për një kondensator 22uF 16V rrjedhja është <10uA. Shënim: Ky është rrjedhja në tensionin e vlerësuar, 16V në këtë rast. Rrjedhja është më e ulët në tensione më të ulëta, domethënë <2.2uA në 3.3V.

Lista e Pjesëve

Kosto e përafërt për njësi në Dhjetor 2018, 61 dollarë amerikanë, duke përjashtuar transportin dhe programuesin nga Pjesa 1

  • SKYLAB SKB369 5 5 $ US p.sh. Aliexpress
  • Tabela e shpërthimit Sparkfun Si7021 ~ 8 dollarë amerikanë
  • 2 x 53mm x 30mm 0.15W 5V qeliza diellore p.sh. Fluturo mbi 1.10 dollarë amerikanë
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip 25 25 dollarë amerikanë për 5 zbritje www.pcbcart.com
  • 1 x rregullator MC78LC33 3.3V, p.sh. Digikey MC78LC33NTRGOSCT-ND ~ 1 US $
  • 2 x 0.1uF 50V qeramike C1608X5R1H104K080A p.sh. Digikey 445-7456-1-ND 0.3 0.3 dollarë amerikanë
  • 4 x 22uF 16V qeramike GRM21BR61C226ME44L p.sh. Digikey 490-10747-1-ND 2 2 dollarë amerikanë
  • 1 x BAT54CW, p.sh. Digikey 497-12749-1-ND 0.5 0.5 dollarë amerikanë
  • 1 x 470R 0.5W 1% rezistencë p.sh. Digikey 541-470TCT-ND 0. 0.25 dollarë amerikanë
  • 1 x 10V 1W zener SMAZ10-13-F p.sh. Digikey SMAZ10-FDICT-ND 0.5 0.5 dollarë amerikanë
  • Vida najloni 3mm x 12mm, p.sh. Jaycar HP0140 ~ 3 AUD $
  • Arra najloni 3mm x 12mm, p.sh. Jaycar HP0146 ~ 3 AUD $
  • Scotch Permanent Mounting Tape Cat 4010 p.sh. nga Amazon 6. 6.6 dollarë amerikanë
  • Mbajtësja e baterisë CR2032, p.sh. HU2032-LF ~ 1.5 US $
  • Bateri CR2032 1 1 US $
  • Fletë Perspex, 3.5mm dhe 8mm
  • pfodApp ~ 10 dollarë amerikanë
  • Pasta ngjitëse p.sh. Jaycar NS-3046 ~ 13 AUD $

Hapi 3: Ndërtimi

Ndërtim
Ndërtim
Ndërtim
Ndërtim
Ndërtim
Ndërtim

Projekti është ndërtuar në një PCB të vogël. PCB është prodhuar nga pcbcart.com nga këto skedarë Gerber, SKYLAB_TempHumiditySensor_R2.zip PCB imiton pinin Nano V2 dhe është mjaft i përgjithshëm për t'u përdorur për projekte të tjera BLE.

Kjo është skematike (versioni pdf)

Së pari lidhni përbërësit SMD, pastaj montoni bordin SKYLAB SKB369

Pothuajse të gjithë përbërësit janë pajisje për montim në sipërfaqe (SMD). Kondensatorët dhe IC -të mund të jenë të vështira për t'u bashkuar me dorë. Metoda e sugjeruar është që të mbani PCB në një ves dhe të aplikoni një sasi të vogël paste ngjitëse në tamponët dhe të vendosni përbërësit SMD, me përjashtim të tabelës SKB369 në PCB. Pastaj duke përdorur një armë ngrohjeje, aplikoni nxehtësi në pjesën e poshtme të PCB -së derisa pasta e saldimit të shkrihet dhe më pas bëni një kalim të shpejtë mbi pjesën e sipërme të bordit duke qenë të kujdesshëm që të mos i fryni përbërësit. Më në fund prekni përbërësit me një hekur bashkues të vogël. Kini kujdes me kondensatorët dhe rezistencën pasi është e lehtë të shkrini të dy skajet dhe të hiqni përbërësin ndërsa bashkoni një fund.

Ky rishikim shton kondensatorë qeramikë shtesë 22uF 16V. Këta kondensatorë shtesë zvogëlojnë goditjet aktuale të nxjerra nga bateria dhe gjithashtu zvogëlojnë rënien e tensionit kur furnizohen me energji nga qelizat diellore. Për sa kohë që tensioni nga qelizat diellore mbetet mbi tensionin e baterisë, atëherë asnjë rrymë nuk tërhiqet nga bateria.

Pasi të jenë montuar përbërësit SMD, mund të lidheni në tabelën SKYLAB SKB369. Ekzistojnë dy vrima të pikave të provës në njërën anë të skedave SKB369. Përdorni dy kunja në një bazë kartoni për të pozicionuar tabelën SKB369 dhe rreshtoni me kujdes kunjat. (Shih shembullin e fotos më sipër duke përdorur PCB Revision 1) Pastaj lidhni një kunj të anës së kundërt për të mbajtur tabelën në vend para se të bashkoni kunjat e tjerë.

Vini re tela lidhëse Gnd nga CLK në GND në pjesën e përfunduar. Kjo është instaluar PAS programimit për të parandaluar zhurmën në hyrjen CLK që të shkaktojë çipin nRF52 në një mënyrë korrigjimi aktual të lartë

Rasti i montimit

Rasti i montimit ishte bërë nga dy copa perspex, 110mm x 35mm, 3 mm të trasha. Pjesa 3.5 mm nën qelizat diellore u kap për të marrë vida najloni 3 mm. Ky konstruksion i rishikuar është më i thjeshtuar se Rev 1 dhe përmirëson rrjedhën e ajrit rreth sensorit. Vrimat shtesë në secilin skaj janë për montim, duke përdorur lidhëse kabllo për shembull.

Hapi 4: Heqja e Flamurit të Mbrojtjes së Kodimit NRF52

Heqja e Flamurit të Mbrojtjes së Kodimit NRF52
Heqja e Flamurit të Mbrojtjes së Kodimit NRF52
Heqja e Flamurit të Mbrojtjes së Kodimit NRF52
Heqja e Flamurit të Mbrojtjes së Kodimit NRF52
Heqja e Flamurit të Mbrojtjes së Kodimit NRF52
Heqja e Flamurit të Mbrojtjes së Kodimit NRF52

Lidhni tabelën e Temperaturës/Lagështisë me Programuesin e përshkruar në Pjesën 1 siç tregohet më sipër.

Me qelizat diellore dhe bateritë e shkyçura, Vin dhe Gnd janë të lidhur me Vdd dhe Gnd të programuesit (lidhjet e Verdha dhe të Gjelbërta) dhe SWCLK dhe SWDIO janë të lidhura me Clk dhe SIO të tabelës së kokës së programuesit (lidhjet e bardha dhe gri)

Heqja e mbrojtjes së programit nRF52

Nga faqja Nordike Semi - Debug and Trace DAP - Porta e Qasjes në Debug. Një debugger i jashtëm mund të hyjë në pajisje përmes DAP. DAP zbaton një standard standard ARM® CoreSight Port Serial Wire Debug Port (SW-DP). SW-DP zbaton protokollin e Debug Serial Wire (SWD) që është një ndërfaqe serike me dy kunja, SWDCLK dhe SWDIO

E rëndësishme: Linja SWDIO ka një rezistencë tërheqëse të brendshme. Linja SWDCLK ka një rezistencë të brendshme tërheqëse.

CTRL -AP - Porta e Kontrollit të Hyrjes. Porta e Qasjes së Kontrollit (CTRL-AP) është një port me qasje të personalizuar që mundëson kontrollin e pajisjes edhe nëse portet e tjera të hyrjes në DAP janë duke u çaktivizuar nga mbrojtja e portës së hyrjes. Mbrojtja e portit të aksesit bllokon korrigjuesin nga qasja e leximit dhe shkrimit në të gjithë regjistrat e CPU-së dhe adresat e kartës së kujtesës. Çaktivizoni mbrojtjen e portit të hyrjes. Mbrojtja e portit të aksesit mund të çaktivizohet vetëm duke lëshuar një komandë ERASEALL përmes CTRL-AP. Kjo komandë do të fshijë Flash, UICR dhe RAM.

Zgjidhni CMSIS-DAP si programues për Debugger të Particle dhe zgjidhni nRF5 Flash SoftDevice

Nëse blici funksionon, atëherë kjo është në rregull, por shpesh modulet do të jenë të mbrojtur kundër riprogramimit dhe këtë gabim do ta merrni në dritaren Arduino

Hap Debugger On-Chip 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Licencuar sipas GNU GPL v2 Për raportet e gabimeve, lexoni https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: vetëm një mundësi transporti; Autoselect 'swd' speed adapter: 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Info Supported: CMSIS-DAP: Interface Initialised (SWD) Info: CMSIS-DAP: FW Version = 1.10 Info: SWCLK/TCK = TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Ndërfaqja gati Info: zvogëloni kërkesën për shpejtësi: 10000kHz në 5000kHz Informacion maksimal: shpejtësia e orës 10000 kHz Info: SWD IDCODE 0x2ba01477 Gabim: Nuk mund të gjej MEM -AP për të kontrolluar Gabimin kryesor: Synimi nuk është ekzaminuar ende Gabim gjatë ndezjes së SoftDevice.

Në atë rast ju duhet të vendosni regjistrin e komandave ERASEALL në nRF52 për të pastruar kujtesën dhe për ta bërë pajisjen të programueshme përsëri. Versioni i openOCD i furnizuar me sandeepmistry nRF52 nuk përfshin komandën apreg të nevojshme për të shkruar në regjistrin e komandave ERASEALL kështu që ju duhet të instaloni një version të mëvonshëm.

Instaloni versionin OpenOCD OpenOCD-20181130 ose më të lartë. Versioni i para-përpiluar i Windows është i disponueshëm nga https://gnutoolchains.com/arm-eabi/openocd/ Kodi më i fundit është në dispozicion nga

Hapni një linjë komande dhe ndryshoni dir në drejtorinë e instalimit OpenOCD dhe futni komandën

bin / openocd.exe -d2 -f ndërfaqe/cmsis -dap.cfg -f target/nrf52.cfg

Përgjigja është

Hap Debugger On-Chip 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] Licencuar sipas GNU GPL v2 Për raportet e gabimeve, lexoni https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: zgjedhja automatike e sesionit të parë të disponueshëm transporti "swd". Për të anashkaluar përdorni 'përzgjedh transportin'. shpejtësia e përshtatësit: 1000 kHz cortex_m reset_config sysresetreq Info: Dëgjimi në portin 6666 për lidhjet tcl Info: Dëgjimi në portin 4444 për lidhjet e telnet Info: CMSIS-DAP: SWD Info të mbështetura: CMSIS-DAP: FW Version = 1.10 Info: CMSIS-DAP: Ndërfaqja e Filluar (SWD) Info: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Informacioni i ndërfaqes gati: shpejtësia e orës 1000 kHz Info: SWD DPIDR 0x2ba01477 Gabim: Nuk mund të gjej MEM-AP për të kontrolluar thelbin Info: Dëgjimi në portin 3333 për lidhjet gdb

Pastaj hapni një dritare terminale p.sh. TeraTerm (Windows) ose CoolTerm (Mac) dhe lidheni me portën 127.0.0.1 4444

Dritarja e telnet do të tregojë a> dhe komanda e shpejtë do të tregojë Info: pranimi i lidhjes 'telnet' në tcp/4444

Në dritaren e telnet (d.m.th. TeraTerm) typenrf52.dap apreg 1 0x04thy kjo kthen 0x00000000 që tregon se çipi është i mbrojtur. Pastaj typenrf52.dap apreg 1 0x04 0x01and thennrf52.dap apreg 1 0x04thi kthen 0x00000001 duke treguar që çipi tani është vendosur në ERASEALL në rinisjen tjetër.

Mbyllni lidhjen e telnet dhe gjithashtu përdorni Ctrl-C për të dalë nga programi openOCD në komandën e shpejtë dhe më pas qarkullojeni modulin nRF52 dhe tani do të jetë gati për programim.

Tani provoni përsëri të ndezni pajisjen e butë.

Tani mund të programoni modulin nRF52 nga Arduino.

Hapi 5: Programimi i SKYLAB SKB369

Programimi i SKYLAB SKB369
Programimi i SKYLAB SKB369
Programimi i SKYLAB SKB369
Programimi i SKYLAB SKB369
Programimi i SKYLAB SKB369
Programimi i SKYLAB SKB369

Mbyllni Arduino dhe instaloni përsëri versionin më të fundit të mbështetjes pfod_lp_nrf52 duke ndjekur udhëzimet e Instalimit të mbështetjes së harduerit pfod_lp_nrf52. Pfod_lp_nrf52 i fundit përfshin bordin zëvendësues të SKYLAB SKB369 Nano2. Zgjidhni atë si tabelë dhe më pas mund ta programoni me Rishikimin 3 të lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, siç përshkruhet në Pjesën 2.

Nëse programimi dështon. Mbyllni të gjitha dritaret Arduino, hiqni kabllot USB, rinisni Arduino -n dhe futeni përsëri kabllon USB të programuesit dhe futeni përsëri furnizimin me USB të modulit nRF52 dhe provoni përsëri.

Pastaj lidheni përmes pfodApp për të shfaqur temperaturën dhe lagështinë aktuale dhe historike. Pasi të keni shfaqur komplotin historik, leximet, me vija kohore të milisekondës, ruhen në skedarin e regjistrit në celularin tuaj dhe gjithashtu të disponueshme në ekranin e të dhënave të papërpunuara.

Skedari i regjistrit gjithashtu përmban të dhëna shtesë të nevojshme për të rikrijuar komplotet e datës dhe kohës në një spreadsheet. Shikoni datën dhe orën Arduino duke përdorur millis () dhe pfodApp për detajet

Hapi 6: Krijimi i një përkufizimi të bordit të ri Arduino NRF52

Krijimi i një përkufizimi të bordit të ri Arduino NRF52
Krijimi i një përkufizimi të bordit të ri Arduino NRF52
Krijimi i një përkufizimi të bordit të ri Arduino NRF52
Krijimi i një përkufizimi të bordit të ri Arduino NRF52
Krijimi i një përkufizimi të bordit të ri Arduino NRF52
Krijimi i një përkufizimi të bordit të ri Arduino NRF52
Krijimi i një përkufizimi të bordit të ri Arduino NRF52
Krijimi i një përkufizimi të bordit të ri Arduino NRF52

Për të mbështetur një bord të ri nRF52 ju duhet të a) shtoni një drejtori të re nën drejtorinë e varianteve me skedarët e bordit dhe b) të redaktoni skedarin boards.txt për të shtuar bordin e ri në Arduino.

Shtimi i një varianti të ri të bordit nRF52

Siç përshkruhet në Pjesën 1, Instalimi i mbështetjes harduerike pfod_lp_nrf52, gjeni nën-drejtorinë e harduerit të paketës sandeepmistry që keni përditësuar me mbështetjen pfod_lp_nrf52. Hapni nën-drejtorinë / hardware / nRF5 / 0.6.0 / variantet dhe krijoni një direktori të re për bordin tuaj të ri, p.sh. SKYLAB_SKB369_Nano2replacement Në dosjen e re / hardware / nRF5 / 0.6.0 / variants / SKYLAB_SKB369_Nano2replacement krijoni tre skedarë variant.h, variant.cpp dhe pins_arduino.h Ju mund t'i kopjoni ato nga drejtoritë e varianteve të tjera të bordit. Për zëvendësimin SKYLAB_SKB369_Nano2, fillimisht kopjova skedarët nga varianti RedBear_BLENano2.

skedari pins_arduino.h

Skedari pins_arduino.h nuk ka nevojë të ndryshohet. Ai thjesht përfshin skedarin variant.h

variant.h file

Ndryshoni skedarin variant.h për të përcaktuar numrin e përgjithshëm të kunjave që do të ketë bordi juaj, PINS_COUNT

SHENIM: Në paketën e sandeepmistry, cilësimet NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS dhe NUM_ANALOG_OUTPUTS injorohen

Nëse bordi juaj vë në dispozicion pak a shumë kunja analoge, përditësoni seksionin * * Analogët Analog * / të skedarit të varianteve.h.

SHENIM: Për tabelat NanoV2 dhe SKYLAB kunjat analoge janë të hartuar në kunjat dixhitale A0 == D0 etj

Kjo nuk është thelbësore. Mund të caktoni hyrjet analoge në çdo kunj të përshtatshëm Arduino. Shikoni pastaj skedarët blu/variant.h dhe blu/variant.cpp për një shembull.

Çipi nRF52832 ka 8 kunja hyrëse analoge, por bordi i zëvendësimit SKYLAB_SKB369_Nano2 i vë në dispozicion vetëm 6 prej tyre që të përputhen me Nano2.

Të gjithë numrat pin, përveç RESET_PIN, në skedarin variant.h janë numra pin Arduino. Kjo është #define PIN_A0 (0) nënkupton që D0 në skicën arduino është e njëjta kunj si A0. RESET_PIN është përjashtim. Ky numër është numri i kunjit të çipit nRF52823 dhe 21 është zgjedhja e vetme e vlefshme. Sidoqoftë, mbështetja pfod_lp_nrf52 nuk aktivizon pinin e rivendosjes në nRF52832

variant.cpp file

Ekziston vetëm një hyrje në skedarin variant.cpp, grupi g_ADigitalPinMap që lidh numrat pin Arduino në çipin nRF52832 P0.. kunjat

SHENIM: Në bordet NanoV2 dhe SKYLAB, kunjat analoge Arduino A0, A1 … janë të njëjta me kunjat dixhitale Arduino D0, D1 … kështu që shënimet e para në g_ADigitalPinMap DUHET të hartojnë numrat e pin AINx në çipin nRF52832

Për hyrjet analoge bordi juaj i vë në dispozicion, ato shënime në g_ADigitalPinMap duhet të kenë një numër të numrave pin nRF52832 AIN0, AIN1, AIN2, etj. dmth. AIN0 është kunja e çipit P0.02, AIN1 është kunja e çipit P0.03 etj, shihni paraqitjen e pinit nRF52832 më lart.

Përdorni (uint32_t) -1 për hartime të pavlefshme. Për shembull, bordi i zëvendësimit SKYLAB_SKB369_Nano2 nuk ka një LED të integruar, D13, kështu që pozicioni i tij është hartuar në (uint32_t) -1

Në pfod_lp_nrf52.zip nën-drejtoritë e varianteve Redbear NanoV2, SKYLAB SKB369 dhe GT832E_01 kanë imazhe që tregojnë hartat e vendosura nga variant.cpp. (Shihni imazhet më lart)

Në rastin e SKYLAB SKB369, ka shumë kunja për të zgjedhur. Vetëm mjaft janë të hartuar që të përputhen me NanoV2. Në rastin e GT832E_01, të gjitha kunjat në dispozicion duhet të hartohen. Edhe atëherë ka vetëm tre (3) hyrje analoge në dispozicion në vend të gjashtë (6) në NanoV2. Përveç kësaj, dy kunjat NFC, P0.09 dhe P0.10, duhet të ri-konfigurohen si GPIO. Shihni Rikonfigurimin e kunjave nRF52 NFC si GPIO më poshtë.

Përditësimi i skedarit boards.txt

Këtu është hyrja e zëvendësimit SKYLAB_SKB369_Nano2 në skedarin 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 = 524288 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.setup_command = transport Zgjidh SWD; SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.us

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu = korteksi-m4

SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16.000.000 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

bordi.txt Cilësimet

Komente - rreshtat që fillojnë me # janë komente.

Parashtesa - çdo bord ka nevojë për një parashtesë unike për të identifikuar vlerat e saj. Këtu parashtesa është SKYLAB_SKB369_NANO2_REPLACEMENT.

Emri - Linja SKYLAB_SKB369_NANO2_REPLACEMENT.name përcakton emrin e kësaj bordi që do të shfaqet në menunë e bordit të Arduino.

Mjeti i ngarkimit - Blloku SKYLAB_SKB369_NANO2_REPLACEMENT.upload specifikon se cili mjet të përdoret për ngarkim. Nëse jeni duke përdorur Debugger Particle atëherë përdorni protokollin = cmsis-dap siç tregohet më sipër.

Bootloader - Kjo linjë është e njëjtë për të gjitha bordet në këtë borde.txt

Ndërtimi - Vetëm dy rreshta duhet të përditësohen në këtë bllok. Linja SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant specifikon emrin e drejtorisë së këtij bordi në nën-drejtorinë e varianteve. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board është vlera që i bashkëngjitet ARDUINO_ dhe më pas përcaktohet gjatë përpilimit të kodit. p.sh. -DARDUINO_SKYLAB_SKB369_Nano2replacement Kjo ju lejon të aktivizoni/çaktivizoni pjesë të kodit për tabela të veçanta.

Ora me frekuencë të ulët - Kjo linjë, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, specifikon burimin e orës me frekuencë të ulët, e përdorur për lp_timer. Ekzistojnë tre opsione, -DUSE_LFXO, -DUSE_LFRC dhe -DUSE_LFSYNT. Zgjedhja më e mirë është -DUSE_LFXO, nëse bordi ka një kristal të jashtëm 32Khz. Nëse jo, atëherë përdorni -DUSE_LFRC, i cili përdor një oshilator të brendshëm RC dhe tërheq pak më shumë rrymë, ~ 10uA më shumë, dhe është shumë më pak herë më pak i saktë. Mos përdorni -DUSE_LFSYNT pasi kjo e mban çipin në punë gjatë gjithë kohës duke rezultuar në tërheqjen aktuale të mAs.

Softdevice - pfod_lp_nrf52 mbështet vetëm çipat nRF52 dhe softdevice s132 kështu që nuk ka nevojë për ndryshime për këtë bllok, përveç parashtesës.

Rikonfigurimi i kunjave nRF52 NFC si GPIO

Bëhu i paracaktuar në kunjat nRF52, P0.09 dhe P0.10 janë konfiguruar për përdorim si NFC dhe presin që të lidhen me një antenë NFC. Nëse keni nevojë t'i përdorni këto si kunja I/O të përdorimit të përgjithshëm (GPIO -ve), atëherë duhet të shtoni një definicion, -DCONFIG_NFCT_PINS_AS_GPIOS, në menunë …softdevice.s132.build.extra_flags të përpiloni cilësimet në skedarin boards.txt.

Për shembull pfod_lp_nrf52.zip, ri-konfiguron kunjat GT832E_01 për përdorim si I/O. Seksioni GT832E_01 për këtë tabelë, në skedarin boards.txt, ka definicionin e mëposhtëm të shtuar

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

Skripti i lidhësit në pfod_lp_nrf52.zip gjithashtu është modifikuar për të ruajtur këtë cilësim dhe nuk ka nevojë të ndryshohet.

Hapi 7: Përfundimi

Ky tutorial ka paraqitur një zëvendësim për Redbear NanoV2 duke përdorur një modul SKYLAB SKB369. Një monitor i lagështisë së temperaturës me bateri/diellor u përdor si shembull i një projekti BLE me fuqi shumë të ulët në Arduino për modulin SKYLAB. Rrymat e furnizimit prej u 29uA aty ku arrihen duke akorduar parametrat e lidhjes. Kjo rezultoi në një jetëgjatësi të baterisë së qelizës monedhë CR2032 ~ 10 muaj. Më gjatë për qelizat e monedhave me kapacitet më të lartë dhe bateri. Shtimi i dy qelizave të lira diellore zgjati me lehtësi jetën e baterisë me 50% ose më shumë. Një dritë e ndritshme e dhomës ose një llambë tavoline është e mjaftueshme për të fuqizuar monitorin nga qelizat diellore.

Ky tutorial gjithashtu mbuloi heqjen e mbrojtjes së çipit nga një nRF52 i para-programuar dhe si të krijoni një përkufizim të ri të bordit që të përputhet me PCB/qarkun tuaj

Asnjë programim Android nuk kërkohet. pfodApp merret me të gjitha këto.

Recommended: