Turinys:

Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 pakeitimas: 7 žingsniai (su nuotraukomis)
Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 pakeitimas: 7 žingsniai (su nuotraukomis)

Video: Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 pakeitimas: 7 žingsniai (su nuotraukomis)

Video: Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 pakeitimas: 7 žingsniai (su nuotraukomis)
Video: How to use LCD LCD1602 with I2C module for Arduino - Robojax 2024, Lapkritis
Anonim
Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 red
Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 red
Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 red
Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 red
Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 red
Lengvas labai mažos galios BLE „Arduino“3 dalyje - „Nano V2“pakeitimas - 3 red

Atnaujinimas: 2019 m. Balandžio 7 d. - „lp_BLE_TempHumidity“3 red., Pridedami datos ir laiko grafikai, naudojant „pfodApp V3.0.362+“, ir automatinis droselio slopinimas siunčiant duomenis

Atnaujinimas: 2019 m. Kovo 24 d. - „lp_BLE_TempHumidity“2 -oji versija, pridėta daugiau siužeto parinkčių ir „i2c_ClearBus“, pridėtas GT832E_01 palaikymas

Įvadas

Ši pamoka, „Redbear Nano V2 Replacement“, yra 3 dalis iš 3. Tai yra šio projekto 2 peržiūra. 2 versijos PCB apima monetos elemento ir jutiklio montavimą, supaprastina konstrukciją ir pagerina oro srautą aplink jutiklį, tuo pačiu apsaugant jį nuo tiesioginių saulės spindulių. 1 peržiūra yra čia.

1 dalis. Lengvai kuriant labai mažos galios BLE įrenginius naudojant „Arduino“dangtelius, nustatant „Arduino“koduojant nRF52 mažos galios įrenginius, programavimo modulį ir matuojant maitinimo srovę. Ji taip pat apima specializuotus mažos galios laikmačius ir lyginamuosius įrenginius bei atjungtas įvestis ir naudojant „pfodApp“, norint prisijungti prie „nRF52“įrenginio ir jį valdyti.

2 dalis. Labai mažos galios temperatūros drėgmės monitorius apima naudojant „Redbear Nano V2“modulį ir Si7021 temperatūros / drėgmės jutiklį, kad būtų sukurtas mažos galios akumuliatorius / saulės monitorius. Tai taip pat apima Si7021 bibliotekos pakeitimą mažos galios, BLE įrenginio derinimą, kad jo dabartinis suvartojimas būtų sumažintas iki <29uA, ir sukurti pritaikytą temperatūros/drėgmės ekraną jūsų mobiliajam telefonui.

3 dalis. Šis „Redbear Nano V2“pakeitimas apima kitų „nRF52“modulių naudojimą vietoj „Nano V2“. Tai apima tiekimo komponentų pasirinkimą, konstrukciją, nRF52 lusto programavimo apsaugos pašalinimą, NFC kaiščių naudojimą kaip įprastą GPIO ir naujos nRF52 plokštės nustatymą „Arduino“.

Šis nurodymas yra praktinis 1 dalies „Labai mažos galios BLE“įrenginių pritaikymas, palengvintas naudojant „Arduino“, sukuriant labai mažos galios BLE temperatūros ir drėgmės monitorių, naudojant „SKYLAB SBK369“plokštę kaip „Nano V2“pakaitalą. Ši pamoka apima tai, kaip sukurti naują plokštės apibrėžimą ir kaip pašalinti „nRF52“programavimo apsaugą, kad būtų galima ją perprogramuoti. Šioje pamokoje naudojamas tas pats eskizas, kaip ir 2 dalyje, su tais pačiais suderintais BLE parametrais, kad būtų sunaudojama mažai energijos, ir jis gali būti maitinamas iš akumuliatoriaus ARBA baterijos + saulės arba tik saulės. BLE parametrų derinimas mažai galiai buvo aprašytas 2 dalyje

3 -oji „lp_BLE_TempHumidity“versija pateikia duomenis pagal datą ir laiką, naudojant tik „Arduino millis“(). Žr. „Arduino“datą ir laiką naudodami „millis“() ir „pfodApp“naudodami naujausią „pfodApp“versiją (V3.0.362+).

„Pfod_lp_nrf52.zip“4 -asis leidimas taip pat palaiko modulį GT832E_01, o ši pamoka apima NFC nRF52 kaiščių naudojimą kaip standartinius GPIO.

Čia sukonstruotas monitorius daugelį metų veiks naudojant monetų elementą arba 2 x AAA baterijas, dar ilgiau - su saulės pagalba. Monitorius ne tik rodo esamą temperatūrą ir drėgmę, bet ir saugo paskutinius 36 val. 10 min. Rodmenis ir paskutines 10 val. Rodmenų dienų. Jie gali būti pažymėti „Android“mobiliajame telefone ir vertės išsaugotos žurnalo faile. „Android“programavimas nereikalingas, visa tai tvarko „pfodApp“. „Android“ekraną ir diagramas visiškai valdo jūsų „Arduino“eskizas, todėl galite jį pritaikyti pagal poreikį.

2 dalyje nRF52832 BLE komponentui buvo naudojama „Redbear Nano V2“plokštė. Šis projektas pakeičia jį pigesne SKYLAB SKB369 lenta. Kaip ir 2 dalyje, temperatūros / drėgmės jutikliui naudojama „Sparkfun Si7021“pertraukimo plokštė. Su Si7021 naudojama modifikuota mažos galios biblioteka.

1 žingsnis: Kodėl reikia pakeisti „Nano V2“?

i) „Nano V2“buvo nebegaminamas kelis mėnesius ir, atrodo, netelpa į „Particle.io“liniją, todėl neaišku, kiek laiko jis bus prieinamas.

ii) „Nano V2“yra brangesnis. Tačiau jis taip pat turi papildomų funkcijų. Žiūrėkite žemiau.

iii) „Nano V2“turi komponentų iš abiejų pusių, todėl jis yra aukštesnis ir apsunkinamas montavimas.

iv) „Nano V2“turi ribotus įvesties/išvesties kaiščius, o norint naudoti D6 – D10 reikia skraidančių laidų.

Nors „Nano V2“plokštė yra brangesnė už „SKYLAB SKB369“plokštę (~ US17, palyginti su ~ US5), „Nano V2“turi daugiau funkcijų. Į „Nano V2“įeina 3,3 V reguliatorius ir maitinimo kondensatoriai, papildomi komponentai nRF52 DC/DC keitiklio naudojimui, lustinė antena ir uFL SMT antenos jungtis.

Kita alternatyva yra modulis GT832E_01, kurį naudoja www.homesmartmesh.com. Pfod_lp_nrf52.zip 4 versija taip pat palaiko GT832E_01 modulio programavimą. „SKYLAB SKB369“ir „GT832E_01“galima įsigyti iš

„Redbear“(„Particle.io“) taip pat turi pliką modulį be 3V3 reguliatoriaus, DC/DC komponentų arba 32Khz kristalų komponentų.

Kontūras

Šį projektą sudaro 4 santykinai nepriklausomos dalys:-

Komponentų pasirinkimas ir konstrukcija Apsaugos nuo nRF52 vėliavos pašalinimas ir eskizo programavimas Naujos „Arduino nRF52“plokštės apibrėžimo sukūrimas nRF52 NFC kaiščių konfigūravimas kaip GPIO

2 žingsnis: komponentų pasirinkimas ir konstrukcija

Komponentų pasirinkimas

Be 2 dalyje pasirinktų komponentų nRF52832 ir Si7021, šis projektas papildo 3,3 V reguliatorių ir tiekimo kondensatorius.

Įtampos reguliatoriaus komponentas

Čia naudojamas reguliatorius MC87LC33-NRT. Jis gali valdyti iki 12 V įėjimų ir ramybės srovė yra <3,6uA, paprastai 1,1uA. „Nano V2“naudojamas TLV704 reguliatorius turi šiek tiek didesnę ramybės srovę, paprastai 3,4uA, ir gali valdyti didesnę įėjimo įtampą, iki 24V. Vietoj to buvo pasirinktas MC87LC33-NRT, nes jo duomenų lape nurodoma, kaip jis reaguoja, kai įėjimo įtampa nukrenta žemiau 3,3 V, o kaip ne TLV704 duomenų lape.

TLV704 nurodo minimalią 2,5 V įėjimo įtampą ir iš duomenų lapo nėra aišku, kas bus žemiau. „NRF52832“veiks iki 1,7 V, o „Si7023“- iki 1,9 V. Kita vertus, MC87LC33-NRT nurodo įėjimo/išėjimo įtampos skirtumus iki 0 V esant mažoms srovėms (duomenų lapo 18 pav.). Taigi, atsižvelgiant į komponentų pasirinkimą, MC87LC33-NRT buvo pasirinktas, nes jis turi nurodytą našumą.

Tiekimo kondensatoriai

MC87LC33-NRT reguliatoriui reikia tam tikrų tiekimo kondensatorių, kad būtų užtikrintas stabilumas ir atsakas. Duomenų lape rekomenduojama naudoti> 0,1uF išėjimo kondensatorių. „SKYLAB SBK369“taip pat nurodo 10uF/0,1uF kondensatorius, esančius šalia plokštės. Didesni kondensatoriai padeda tiekti nRF52 TX srovės šuolius. Čia buvo naudojami 4 x 22uF 25V ir 3 x 0,1uF 50V keraminiai kondensatoriai. Vienas 22uF ir 0,1uF kondensatorius buvo uždėtas netoli SKYLAB SBK369, 0,1uF buvo pastatytas arti MC87LC33-NRT išvesties, kad būtų užtikrintas stabilumas, o 22uF ir 0,1uF buvo įvestos į MC87LC33-NRT ir dar 2 x 22uF kondensatoriai, lituojami per Vin/GND kaiščius kaip papildomas srovės rezervuaras. Palyginimui, „NanoV2“plokštėje yra 22uF / 0,1uF įvestis į TLV704 reguliatorių ir 0,1uF išvestyje.

Papildomos srovės rezervuaro kondensatoriai buvo sumontuoti į 3.3V reguliatoriaus įvestį, kad jie, veikiant su saulės elementais, įkrautų aukštesnę įtampą. Įkrovimas į aukštesnę įtampą prilygsta didesnės srovės kaupimui, kad būtų galima tiekti Tx šuolius.

Naudojami keraminiai X5R kondensatoriai, nes jie turi mažą serijos varžą ir mažą nuotėkio srovę. Paprastai varža yra 100 000 000 Ω arba 1000 MΩ - µF, kuri yra mažesnė. Taigi 22uF atveju turime 22000MΩ, ty 0,15 nA nuotėkis esant 3,3 V arba 0,6 nA keturiems 22uF kondensatoriams. Tai nereikšminga. Palyginimui, mažo ESR, mažo nuotėkio „Panasonic“elektrolitinių kondensatorių nuotėkio srovės yra <0,01CV. Taigi 22uF 16V kondensatoriaus nuotėkis yra <10uA. Pastaba: tai yra nuotėkis esant vardinei įtampai, šiuo atveju 16V. Nuotėkis yra mažesnis esant žemesnei įtampai, ty <2,2uA esant 3,3 V įtampai.

Dalių sąrašas

Apytikslė vieneto kaina 2018 m. Gruodžio mėn., ~ 61 USD, neįskaitant siuntimo ir programuotojo iš 1 dalies

  • SKYLAB SKB369 ~ 5 USD, pvz., „Aliexpress“
  • „Sparkfun Si7021“pertraukimo lenta ~ 8 USD
  • 2 x 53 mm x 30 mm 0,15 W 5V saulės elementai, pvz. „Overfly“- 1,10 USD
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 USD už 5 nuolaidas www.pcbcart.com
  • 1 x MC78LC33 3.3V reguliatorius, pvz. „Digikey MC78LC33NTRGOSCT-ND“~ 1 USD
  • 2 x 0.1uF 50V keramika C1608X5R1H104K080A pvz. „Digikey“445-7456-1-ND ~ 0,3 USD
  • 4 x 22uF 16V keramikos GRM21BR61C226ME44L pvz. Digikey 490-10747-1-ND ~ 2 USD
  • 1 x BAT54CW, pvz. Digikey 497-12749-1-ND ~ 0,5 USD
  • 1 x 470R 0,5W 1% rezistorius pvz. „Digikey 541-470TCT-ND“~ 0,25 USD
  • 1 x 10V 1W Zener SMAZ10-13-F pvz. „Digikey SMAZ10-FDICT-ND“~ 0,5 USD
  • 3 mm x 12 mm nailono varžtai, pvz. „Jaycar HP0140“~ 3 AUD
  • 3 mm x 12 mm nailono veržlės, pvz. „Jaycar HP0146“- 3 AUD
  • Scotch Permanent Mounting Tape Cat 4010 pvz. iš „Amazon“~ 6,6 USD
  • CR2032 akumuliatoriaus laikiklis, pvz. HU2032-LF ~ 1,5 USD
  • CR2032 baterija ~ 1 USD
  • Perspex lakštas, 3,5 mm ir 8 mm
  • „pfodApp“~ 10 USD
  • Litavimo pasta pvz. „Jaycar NS-3046“-13 AUD

3 žingsnis: statyba

Statyba
Statyba
Statyba
Statyba
Statyba
Statyba

Projektas pastatytas ant mažos PCB. PCB buvo pagamintas pcbcart.com iš šių Gerber failų, SKYLAB_TempHumiditySensor_R2.zip. PCB imituoja „Nano V2“kištuką ir yra pakankamai bendro naudojimo, kad būtų naudojamas kitiems BLE projektams.

Tai schema (pdf versija)

Pirmiausia lituokite SMD komponentus, tada pritvirtinkite SKYLAB SKB369 plokštę

Beveik visi komponentai yra ant paviršiaus montuojami įtaisai (SMD). Kondensatorius ir IC gali būti sunku lituoti rankomis. Siūlomas būdas yra laikyti PCB kišenėje ir ant trinkelių uždėti nedidelį kiekį litavimo pastos ir uždėti SMD komponentus, išskyrus SKB369 plokštę. Tada, naudodami kaitinimo pistoletą, kaitinkite apatinę PCB pusę, kol lydmetalio pasta ištirps, ir tada greitai praplaukite plokštės viršų, atsargiai, kad neišpūstumėte komponentų. Galiausiai palieskite komponentus mažu antgalio lituokliu. Būkite atsargūs su kondensatoriais ir rezistoriumi, nes lengvai ištirpsta abu galai ir komponentas atsilaisvina, kai lituojamas vienas galas.

Ši peržiūra prideda papildomų 22uF 16V keraminių kondensatorių. Šie papildomi kondensatoriai sumažina srovės šuolius, gaunamus iš akumuliatoriaus, taip pat sumažina įtampos kritimą, kai jie maitinami iš saulės elementų. Kol saulės baterijų įtampa išlieka didesnė už akumuliatoriaus įtampą, iš akumuliatoriaus srovė neatimama.

Sumontavę SMD komponentus, galite lituoti SKYLAB SKB369 plokštėje. Vienoje SKB369 skirtukų pusėje yra dvi bandymo taškų angos. Naudodami du kaiščius į kartoninį pagrindą, padėkite SKB369 plokštę ir atsargiai sulygiuokite kaiščius. (Žiūrėkite aukščiau pateiktą pavyzdinę nuotrauką, naudodami 1 versijos PCB.) Tada lituokite vieną priešingos pusės kaištį, kad laikytumėte plokštę prieš lituodami kitus kaiščius.

Atkreipkite dėmesį į Gnd jungties laidą nuo CLK iki GND baigtoje dalyje. Tai įdiegta po programavimo, kad CLK įvesties triukšmas nesukeltų nRF52 lusto į didelės srovės derinimo režimą

Montavimo dėklas

Tvirtinimo dėklas buvo pagamintas iš dviejų dalių, 110 mm x 35 mm, 3 mm storio. 3,5 mm gabalas po saulės elementais buvo paimtas, kad būtų paimti 3 mm nailono varžtai. Ši peržiūrėta konstrukcija supaprastina 1 versiją ir pagerina oro srautą aplink jutiklį. Papildomos skylės kiekviename gale yra skirtos montuoti, pavyzdžiui, naudojant kabelių raiščius.

4 veiksmas: pašalinkite kodavimo apsaugos vėliavą NRF52

Pašalinama kodavimo apsaugos vėliava NRF52
Pašalinama kodavimo apsaugos vėliava NRF52
Pašalinama kodavimo apsaugos vėliava NRF52
Pašalinama kodavimo apsaugos vėliava NRF52
Pašalinama kodavimo apsaugos vėliava NRF52
Pašalinama kodavimo apsaugos vėliava NRF52

Prijunkite temperatūros/drėgmės plokštę prie 1 dalyje aprašyto programuotojo, kaip parodyta aukščiau.

Kai saulės elementai ir baterijos yra atjungti, „Vin“ir „Gnd“yra prijungti prie programuotojo „Vdd“ir „Gnd“(geltonos ir žalios spalvos laidai), o „SWCLK“ir „SWDIO“- su programuotojo antraštės „Clk“ir „SIO“(balti ir pilki laidai).

Pašalinama nRF52 programos apsauga

Iš Nordic Semi - Debug and Trace puslapio DAP - Debug Access Port. Išorinis derintuvas gali pasiekti įrenginį per DAP. DAP įdiegtas standartinis ARM® CoreSight ™ nuosekliojo laido derinimo prievadas (SW-DP). SW-DP įgyvendina serijinio laido derinimo protokolą (SWD), kuris yra dviejų kontaktų nuosekli sąsaja, SWDCLK ir SWDIO

Svarbu: „SWDIO“linijoje yra vidinis traukiamasis rezistorius. SWDCLK linijoje yra vidinis ištraukiamas rezistorius.

CTRL -AP - valdymo prieigos prievadas. Valdymo prieigos prievadas (CTRL-AP) yra pasirinktinis prieigos prievadas, leidžiantis valdyti įrenginį, net jei kiti prieigos prievadai DAP yra išjungti dėl prieigos prievado apsaugos. Prieigos prievado apsauga blokuoja derintuvą nuo skaitymo ir rašymo prieigos prie visų procesoriaus registrų ir atminties susietų adresų. Išjunkite prieigos prievado apsaugą. Prieigos prievado apsaugą galima išjungti tik išleidus ERASEALL komandą per CTRL-AP. Ši komanda ištrins „Flash“, UICR ir RAM.

Pasirinkite CMSIS-DAP kaip dalelių derinimo programuotoją ir pasirinkite „nRF5 Flash SoftDevice“

Jei blykstė veikia, tai gerai, tačiau dažnai moduliai bus apsaugoti nuo perprogramavimo ir šią klaidos išvestį gausite „Arduino“lange

„Open On-Chip Debugger“0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Licencijuota pagal GNU GPL v2 Pranešimus apie klaidas skaitykite https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Informacija: tik viena transporto galimybė; automatinis „swd“adapterio greitis: 10000 kHz cortex_m reset_config sysresetreq Informacija: CMSIS-DAP: SWD Palaikoma informacija: CMSIS-DAP: sąsajos inicijavimas (SWD) Informacija: CMSIS-DAP: FW versija = 1.10 Informacija: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Informacija: CMSIS-DAP: sąsaja paruošta Informacija: sumažinti greitį: 10000 kHz iki 5000 kHz maksimali informacija: laikrodžio greitis 10000 kHz Informacija: SWD IDCODE 0x2ba01477 Klaida: nepavyko rasti MEM -AP valdyti pagrindinę klaidą: Taikinys dar neišnagrinėtas Klaida mirksi „SoftDevice“.

Tokiu atveju nRF52 turite nustatyti komandų registrą ERASEALL, kad išvalytumėte atmintį ir prietaisas vėl būtų programuojamas. Į „openOCD“versiją, tiekiamą su „sandeepmistry nRF52“, neįeina „apreg“komanda, reikalinga rašyti į komandų registrą „ERASEALL“, todėl turite įdiegti vėlesnę versiją.

Įdiekite „OpenOCD“versiją „OpenOCD-20181130“arba naujesnę versiją. Iš anksto sukompiliuotą „Windows“versiją galima rasti adresu https://gnutoolchains.com/arm-eabi/openocd/ Naujausią kodą galima rasti adresu

Atidarykite komandų eilutę ir pakeiskite dir į „OpenOCD“diegimo katalogą ir įveskite komandą

bin / openocd.exe -d2 -f sąsaja/cmsis -dap.cfg -f target/nrf52.cfg

Atsakymas yra

„Open On-Chip Debugger“0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]Licencijuota pagal GNU GPL v2 Jei norite gauti pranešimų apie klaidas, skaitykite https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Informacija: automatiškai pasirenkamas pirmojo galimo seanso transportas „swd“. Jei norite nepaisyti, naudokite „transporto pasirinkimas“. Adapterio greitis: 1000 kHz cortex_m reset_config sysresetreq Informacija: Klausymasis 6666 prievade, skirtas tcl ryšiams Informacija: Klausymasis 4444 prievado telneto jungtims Informacija: CMSIS-DAP: SWD Palaikoma informacija: CMSIS-DAP: FW versija = 1.10 Informacija: CMSIS-DAP: Sąsajos inicijavimo (SWD) informacija: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Informacija: CMSIS-DAP: sąsaja paruošta Informacija: laikrodžio greitis 1000 kHz Informacija: SWD DPIDR 0x2ba01477 Klaida: Nepavyko rasti MEM-AP, kad būtų galima valdyti pagrindinę informaciją: klausymasis 3333 prievado gdb ryšiams

Tada atidarykite terminalo langą, pvz. „TeraTerm“(„Windows“) arba „CoolTerm“(„Mac“) ir prijunkite prie 127.0.0.1 prievado 4444

„Telnet“lange bus rodomas>, o komandų eilutėje bus rodoma Informacija: priimamas „telnet“ryšys naudojant „tcp/4444“

„Telnet“lange (pvz., „TeraTerm“) typenrf52.dap apreg 1 0x04šis grąžina 0x00000000, rodantį, kad lustas yra apsaugotas. Tada typenrf52.dap apreg 1 0x04 0x01and thennrf52.dap apreg 1 0x04this grąžina 0x00000001, rodančią, kad kitą kartą paleidus lustas dabar nustatytas kaip ERASEALL.

Uždarykite „telnet“ryšį ir naudokite „Ctrl-C“, kad komandų eilutėje išeitumėte iš „openOCD“programos, tada įjunkite „nRF52“modulį ir jis bus paruoštas programuoti.

Dabar bandykite vėl mirksėti programinį įrenginį.

Dabar galite užprogramuoti „nRF52“modulį iš „Arduino“.

5 žingsnis: SKYLAB SKB369 programavimas

SKYLAB SKB369 programavimas
SKYLAB SKB369 programavimas
SKYLAB SKB369 programavimas
SKYLAB SKB369 programavimas
SKYLAB SKB369 programavimas
SKYLAB SKB369 programavimas

Uždarykite „Arduino“ir iš naujo įdiekite naujausią „pfod_lp_nrf52“palaikymo versiją, vadovaudamiesi „Pfod_lp_nrf52“techninės įrangos palaikymo instrukcijomis. Naujausioje „pfod_lp_nrf52“yra „SKYLAB SKB369 Nano2“pakaitinė plokštė. Pasirinkite tai kaip lentą ir galėsite ją užprogramuoti naudodami 3 versiją lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, kaip aprašyta 2 dalyje.

Jei programavimas nepavyksta. Uždarykite visus „Arduino“langus, ištraukite USB kabelius, iš naujo paleiskite „Arduino“ir vėl prijunkite programuotojo USB kabelį ir vėl prijunkite „nRF52“modulio USB tiekimą ir bandykite dar kartą.

Tada prijunkite per „pfodApp“, kad būtų rodoma dabartinė ir istorinė temperatūra bei drėgmė. Kai parodysite istorinę schemą, rodmenys su milisekundžių laiko žymomis išsaugomi jūsų mobiliojo telefono žurnalo faile ir pasiekiami neapdorotų duomenų ekrane.

Žurnalo faile taip pat yra papildomų duomenų, reikalingų datos ir laiko grafikams iš naujo sukurti skaičiuoklėje. Išsamesnės informacijos ieškokite „Arduino“data ir laikas, naudodami „millis“() ir „pfodApp“

6 veiksmas: sukurkite naują „Arduino NRF52“plokštės apibrėžimą

Naujos „Arduino NRF52“plokštės apibrėžimo kūrimas
Naujos „Arduino NRF52“plokštės apibrėžimo kūrimas
Naujos „Arduino NRF52“plokštės apibrėžimo kūrimas
Naujos „Arduino NRF52“plokštės apibrėžimo kūrimas
Naujos „Arduino NRF52“plokštės apibrėžimo kūrimas
Naujos „Arduino NRF52“plokštės apibrėžimo kūrimas
Naujos „Arduino NRF52“plokštės apibrėžimo kūrimas
Naujos „Arduino NRF52“plokštės apibrėžimo kūrimas

Norėdami palaikyti naują „nRF52“plokštę, turite a) pridėti naują katalogą prie variantų katalogo su lentos failais ir b) redaguoti „boards.txt“failą, kad pridėtumėte naują lentą prie „Arduino“.

Pridedamas naujas nRF52 plokštės variantas

Kaip aprašyta 1 dalyje „Pfod_lp_nrf52 aparatinės įrangos palaikymo diegimas“, raskite sandeepmistry paketo aparatūros pakatalogį, kurį atnaujinote palaikydami pfod_lp_nrf52. Atidarykite / aparatūros / nRF5 / 0.6.0 / variantų pakatalogį ir sukurkite naują katalogą savo naujajai lentai, pvz. variant.cpp ir pins_arduino.h Galite nukopijuoti juos iš kitų lentos variantų katalogų. SKYLAB_SKB369_Nano2 pakeitimui iš pradžių nukopijavau failus iš „RedBear_BLENano2“varianto.

failas pins_arduino.h

Failo pins_arduino.h keisti nereikia. Tai tiesiog apima failą variant.h

variantas.h failas

Redaguokite failą variant.h, kad nustatytumėte bendrą lentos kaiščių skaičių, PINS_COUNT

PASTABA: „Sandeepmistry“pakete nepaisoma NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS ir NUM_ANALOG_OUTPUTS nustatymų

Jei jūsų plokštėje yra daugiau ar mažiau analoginių kaiščių, atnaujinkite failo variantai / h skyrių / * Analoginiai kaiščiai * /.

PASTABA: „NanoV2“ir „SKYLAB“plokštėse analoginiai kaiščiai susieti su skaitmeniniais kaiščiais A0 == D0 ir tt

Tai nėra būtina. Analoginius įėjimus galite priskirti bet kuriam patogiam „Arduino“kaiščiui. Žiūrėkite pavyzdžius „blue/variant.h“ir „blue/variant.cpp“failus.

„NRF52832“lustas turi 8 analoginius įvesties kaiščius, tačiau „SKYLAB_SKB369_Nano2“pakeitimo plokštė leidžia tik 6 iš jų, kad atitiktų „Nano2“.

Visi failo variant.h PIN kodai, išskyrus RESET_PIN, yra „Arduino“PIN kodai. Tai yra #define PIN_A0 (0) reiškia, kad arduino eskizo D0 yra tas pats kaištis kaip A0. RESET_PIN yra išimtis. Šis skaičius yra nRF52823 lusto kaiščio numeris, o 21 yra vienintelis tinkamas pasirinkimas. Tačiau „pfod_lp_nrf52“palaikymas neįgalina nRF52832 atstatymo kaiščio

variantas.cpp failas

Faile „Variant.cpp“yra tik vienas įrašas - „g_ADigitalPinMap masyvas, kuris susieja„ Arduino “PIN kodus su„ nRF52832 “mikroschemos P0.. kaiščiais.

PASTABA: „NanoV2“ir „SKYLAB“plokštėse „Arduino“analoginiai kaiščiai A0, A1… yra tokie patys kaip „Arduino“skaitmeniniai kaiščiai D0, D1… todėl pirmieji įrašai „g_ADigitalPinMap PRIVALO susieti su„ AINx “kaiščių numeriais luste nRF52832

Analoginiams įėjimams, kuriuos suteikia jūsų plokštė, tie g_ADigitalPinMap įrašai turi susieti nRF52832 AIN0, AIN1, AIN2 ir tt PIN kodus. y., AIN0 yra lusto kaištis P0.02, AIN1 yra lusto kaištis P0.03 ir tt, žr. aukščiau pateiktą nRF52832 kaiščio išdėstymą.

Naudokite (uint32_t) -1 netinkamiems susiejimams. Pavyzdžiui, SKYLAB_SKB369_Nano2 pakeitimo plokštėje nėra įmontuoto šviesos diodo, D13, todėl jo padėtis susieta su (uint32_t) -1

„Pfod_lp_nrf52.zip“„Redbear NanoV2“, „SKYLAB SKB369“ir „GT832E_01“variantų pakatalogiuose yra vaizdų, rodančių atvaizdus, sukurtus pagal variant.cpp. (Žiūrėkite aukščiau esančius vaizdus)

„SKYLAB SKB369“atveju yra daug kaiščių, iš kurių galima rinktis. Suplanuota tik tiek, kad atitiktų „NanoV2“. GT832E_01 atveju reikia susieti visus turimus kaiščius. Net ir tada yra tik trys (3) analoginiai įėjimai, o ne šeši (6) „NanoV2“. Be to, abu NFC kaiščius, P0.09 ir P0.10, reikia perkonfigūruoti kaip GPIO. Žemiau žr. „NRF52 NFC“kaiščių konfigūravimas kaip GPIO.

Failas boards.txt atnaujinamas

Čia yra sky.txt failo įrašas SKYLAB_SKB369_Nano2replacement.

## SKYLAB_SKB369 „Nano2 Replacement“SKYLAB_SKB369_NANO2_REPLACEMENT.name =*„SKYLAB SKB369 Nano2“pakeitimas

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_AP_SPL = 52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch = false

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 = kietas -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

board.txt Nustatymai

Komentarai - eilutės, prasidedančios #, yra komentarai.

Priešdėlis - kiekvienai lentai reikalingas unikalus priešdėlis, kad būtų galima nustatyti jo vertes. Čia priešdėlis yraSKYLAB_SKB369_NANO2_REPLACEMENT.

Pavadinimas - SKYLAB_SKB369_NANO2_REPLACEMENT.name eilutėje nurodomas šios lentos pavadinimas, rodomas „Arduino“lentos meniu.

Įkėlimo įrankis - SKYLAB_SKB369_NANO2_REPLACEMENT.upload blokas nurodo, kokį įrankį naudoti įkėlimui. Jei naudojate dalelių derinimo priemonę, naudokite protokolą = cmsis-dap, kaip parodyta aukščiau.

„Bootloader“- ši eilutė yra vienoda visoms lentoms šioje lentose.txt

Sukurti - šiame bloke reikia atnaujinti tik dvi eilutes. SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant eilutė nurodo šios lentos katalogo pavadinimą varianto pakatalogyje. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board yra reikšmė, pridedama prie ARDUINO_ ir tada apibrėžiama renkant kodą. pvz. -DARDUINO_SKYLAB_SKB369_Nano2replacement Tai leidžia įjungti/išjungti kodo dalis tam tikroms plokštėms.

Žemo dažnio laikrodis - ši eilutė, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, nurodo žemo dažnio laikrodžio, naudojamo lp_timer, šaltinį. Yra trys parinktys: -DUSE_LFXO, -DUSE_LFRC ir -DUSE_LFSYNT. Geriausias pasirinkimas yra -DUSE_LFXO, jei plokštė turi išorinį 32Khz kristalą. Jei ne, naudokite -DUSE_LFRC, kuris naudoja vidinį RC generatorių ir pritraukia šiek tiek daugiau srovės, ~ 10uA daugiau ir yra daug mažiau kartų tikslesnis. Nenaudokite -DUSE_LFSYNT, nes lustas visą laiką veikia, todėl srovė sumažėja.

„Softdevice“- „pfod_lp_nrf52“palaiko tik „nRF52“mikroschemas ir „softdevice s132“, todėl šiam blokui nereikia jokių pakeitimų, išskyrus priešdėlį.

NRF52 NFC kaiščių konfigūravimas kaip GPIO

Pagal numatytuosius nustatymus nRF52 kaiščiai P0.09 ir P0.10 yra sukonfigūruoti naudoti kaip NFC ir tikisi būti prijungti prie NFC antenos. Jei norite juos naudoti kaip bendrosios paskirties įvesties/išvesties kaiščius (GPIO), tuomet prie tos lentos… menu.softdevice.s132.build.extra_flags kompiliavimo nustatymų failo boards.txt faile turite pridėti apibrėžimą -DCONFIG_NFCT_PINS_AS_GPIOS.

Pavyzdžiui, „pfod_lp_nrf52.zip“iš naujo sukonfigūruoja GT832E_01 kaiščius, kad jie būtų naudojami kaip įvestis/išvestis. Šios lentos skyrelyje GT832E_01, faile boards.txt, yra pridėtas toks apibrėžimas

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

Nuorodos scenarijus, esantis pfod_lp_nrf52.zip, taip pat buvo pakeistas siekiant išsaugoti šį nustatymą ir jo keisti nereikia.

7 žingsnis: Išvada

Šioje pamokoje buvo pateiktas „Redbear NanoV2“pakaitalas naudojant „SKYLAB SKB369“modulį. Baterija/saulės energija varomas temperatūros drėgnumo monitorius buvo naudojamas kaip pavyzdys labai mažos galios BLE projektui „Arduino“SKYLAB moduliui. Tiekimo srovės ~ 29uA, kur pasiekiamos derinant ryšio parametrus. Dėl to CR2032 monetos elementų baterija tarnavo ~ 10 mėnesių. Ilgesnis didesnės talpos monetų elementams ir baterijoms. Pridėjus du pigius saulės elementus, baterijos veikimo laikas lengvai pailgėjo 50% ar daugiau. Norint apšviesti monitorių nuo saulės elementų, pakanka ryškios kambario šviesos arba stalinės lempos.

Ši pamoka taip pat apėmė lusto apsaugos pašalinimą iš iš anksto užprogramuoto nRF52 ir kaip nustatyti naują plokštės apibrėžimą, atitinkantį jūsų PCB/grandinę

„Android“programavimas nereikalingas. „pfodApp“visa tai tvarko.

Rekomenduojamas: