Indholdsfortegnelse:

Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3: 7 trin (med billeder)
Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3: 7 trin (med billeder)

Video: Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3: 7 trin (med billeder)

Video: Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3: 7 trin (med billeder)
Video: Arduino tutorial 2- LED Blink program with code explained | How to blink an LED using Arduino | 2024, November
Anonim
Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3
Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3
Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3
Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3
Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3
Let meget lav effekt BLE i Arduino del 3 - Nano V2 udskiftning - Rev 3

Opdatering: 7. april 2019 - Rev 3 af lp_BLE_TempHumidity, tilføjer plotter af dato/tid ved hjælp af pfodApp V3.0.362+og automatisk gasregulering ved afsendelse af dataOpdatering: 24. marts 2019 - Rev 2 af lp_BLE_TempHumidity, tilføjer flere plotmuligheder og i2c_ClearBus, tilføjer GT832E_01 support

>

>

Introduktion

Denne vejledning, en Redbear Nano V2 -udskiftning, er del 3 af 3. Dette er revision 2 af dette projekt. Revision 2 PCB inkluderer montering til møntcellen og sensoren, forenkler konstruktionen og forbedrer luftstrømmen omkring sensoren, samtidig med at den beskytter den mod direkte sollys. Revision 1 er her.

Del 1 - Opbygning af BLE -enheder med meget lav effekt gøres let med Arduino -dæksler, der sætter Arduino op til kode nRF52 -enheder med lav effekt, programmeringsmodulet og måling af forsyningsstrømmen. Det dækker også specialiserede laveffekt -timere og komparatorer og debounced input og brug af pfodApp til at oprette forbindelse til og styre nRF52 -enheden.

Del 2 - En meget lav effekttemperaturfugtighedsmonitor dækker ved hjælp af et Redbear Nano V2 -modul og en Si7021 temperatur- / fugtighedsføler til at bygge et batteri med lav effekt / solmonitor. Det dækker også over ændring af Si7021 -biblioteket til lav effekt, tuning af BLE -enheden for at reducere dets nuværende forbrug til <29uA og designe en brugerdefineret temperatur/fugtighedsvisning til din mobil.

Del 3 - En Redbear Nano V2 -udskiftning, denne, dækker brug af andre nRF52 -baserede moduler i stedet for Nano V2. Det dækker valg af forsyningskomponenter, konstruktion, fjernelse af nRF52 -chip -programmeringsbeskyttelse, brug af NFC -ben som normal GPIO og definition af et nyt nRF52 -kort i Arduino.

Denne instruktive er en praktisk anvendelse af del 1 Bygning med meget lav effekt BLE -enheder, der er lette med Arduino ved at konstruere en meget lav effekt BLE temperatur- og fugtighedsmonitor ved hjælp af et SKYLAB SBK369 -bord som en Nano V2 -udskiftning. Denne vejledning dækker, hvordan du opretter en ny boarddefinition, og hvordan du fjerner nRF52-programmeringsbeskyttelsen, så den kan programmeres igen. Denne vejledning bruger den samme skitse som del 2 med de samme indstillede BLE -parametre til lavt strømforbrug og kan kun drives af batteri ELLER batteri + kun sol eller EL. Indstillingen af BLE -parametre for lav effekt blev dækket i del 2

Rev 3 af lp_BLE_TempHumidity tegner dataene op mod dato og klokkeslæt ved hjælp af kun Arduino millis (). Se Arduino dato og tid ved hjælp af millis () og pfodApp ved hjælp af den nyeste version af pfodApp (V3.0.362+).

Rev 4 i pfod_lp_nrf52.zip understøtter også GT832E_01 modulet, og denne vejledning dækker brug af NFC nRF52 benene som standard GPIO'er.

Skærmen, der er konstrueret her, vil køre i årevis på Coin Cell eller 2 x AAA -batterier, endnu længere med solhjælp. Ud over at vise den aktuelle temperatur og fugtighed gemmer monitoren de sidste 36 timer med 10 minutters aflæsninger og de sidste 10 dage med timeaflæsninger. Disse kan kortlægges på din Android -mobil og værdierne gemmes i en logfil. Ingen Android -programmering er påkrævet, pfodApp håndterer alt det. Android -skærmen og kortlægningen styres fuldstændigt af din Arduino -skitse, så du kan tilpasse den efter behov.

Del 2 brugte et Redbear Nano V2 -kort til nRF52832 BLE -komponenten. Dette projekt erstatter det med et billigere SKYLAB SKB369 -bord. Som i del 2 bruges et Sparkfun Si7021 breakout board til temperatur / fugtighedsføleren. Et modificeret lavt strømbibliotek bruges med Si7021.

Trin 1: Hvorfor en Nano V2 -udskiftning?

i) Nano V2 var ude af produktion i et antal måneder og ser ikke ud til at passe ind i Particle.io -serien, så det er ikke klart, hvor længe den vil være tilgængelig i.

ii) Nano V2 er dyrere. Men det har også ekstra funktioner. Se nedenunder.

iii) Nano V2 har komponenter på begge sider, hvilket giver den en højere profil og gør det vanskeligere at montere.

iv) Nano V2 har begrænsede I/O -ben til rådighed, og brug af D6 til D10 kræver flyvende elektroder.

Selvom Nano V2 -kortet er dyrere end SKYLAB SKB369 -kortet, ~ US17 versus ~ US5, har Nano V2 flere funktioner. Nano V2 indeholder en 3.3V regulator og forsyningskondensatorer, ekstra komponenter til brug af nRF52 DC/DC -omformeren, en chipantenne og et uFL SMT -antennestik.

Et andet alternativ er GT832E_01 -modulet, der bruges af www.homesmartmesh.com. Rev 4 i pfod_lp_nrf52.zip understøtter også programmering af GT832E_01 modulet. SKYLAB SKB369 og GT832E_01 er tilgængelige fra

Redbear (Particle.io) har også et bare modul uden 3V3 regulator, DC/DC komponenter eller 32Khz krystal komponenter.

Omrids

Dette projekt har 4 relative uafhængige dele:-

Komponentvalg og konstruktion Fjernelse af nRF52 -kodningsbeskyttelsesflaget og programmering af skitsen Oprettelse af en ny Arduino nRF52 -kortdefinition Omkonfiguration af nRF52 NFC -ben som GPIO'er

Trin 2: Valg af komponenter og konstruktion

Komponentvalg

Ud over komponenterne nRF52832 og Si7021, der er valgt i del 2, tilføjer dette projekt en 3.3V regulator og forsyningskondensatorer.

Spændingsregulator -komponenten

Den her anvendte regulator er MC87LC33-NRT. Det kan klare op til 12V input og har en hvilestrøm på <3,6uA, typisk 1,1uA. Nano V2 brugte en TLV704 regulator har en lidt højere hvilestrøm, typisk 3.4uA og kan klare højere indgangsspændinger, op til 24V. MC87LC33-NRT blev valgt i stedet, fordi databladet angiver, hvordan det reagerer, da indgangsspændingen falder til under 3,3V, hvor TLV704-databladet ikke gør det.

TLV704 angiver en indgangsspænding på minimum 2,5V, og det er ikke klart fra databladet, hvad der vil ske under det. NRF52832 løber ned til 1,7V, og Si7023 løber ned til 1,9V. MC87LC33-NRT angiver på den anden side input/output spændingsforskelle ned til 0V for lave strømme (figur 18 i databladet). Så i betragtning af valget af komponenter blev MC87LC33-NRT valgt, fordi den har den angivne ydelse.

Forsyningskondensatorer

MC87LC33-NRT-regulatoren har brug for nogle forsyningskondensatorer for stabilitet og respons. En udgangskondensator> 0.1uF anbefales på databladet. SKYLAB SBK369 specificerer også 10uF/0.1uF kondensatorer på forsyningen tæt på kortet. Større kondensatorer hjælper med at levere nRF52 TX nuværende pigge. Her blev 4 x 22uF 25V og 3 x 0.1uF 50V keramiske kondensatorer brugt. En 22uF og en 0.1uF kondensator blev placeret tæt på SKYLAB SBK369, en 0.1uF blev placeret tæt på output fra MC87LC33-NRT for at sikre stabilitet og en 22uF og 0.1uF blev placeret på indgangen til MC87LC33-NRT og en yderligere 2 x 22uF kondensatorer blev loddet hen over Vin/GND benene som et yderligere strømreservoir. Til sammenligning har NanoV2 -kortet en 22uF / 0.1uF på indgangen til TLV704 -regulatoren og en 0.1uF på dens output.

De ekstra strømreservoarkondensatorer blev installeret på indgangen til 3.3V -regulatoren, så de kunne oplades til en højere spænding, når de kører med solceller. Opladning til højere spænding svarer til at lagre mere strøm til at forsyne Tx pigge.

Keramiske X5R -kondensatorer bruges, fordi de har lav seriemodstand og lav lækstrøm. Modstanden er typisk 100, 000MΩ eller 1000MΩ - µF, som nogensinde er mindre. Så for 22uF har vi 22000MΩ, dvs. 0,15nA lækage ved 3,3V eller 0,6nA for de fire 22uF kondensatorer. Det er ubetydeligt. Til sammenligning Lav ESR, Lav lækage Panasonic elektrolytkondensatorer har lækstrømme på <0,01 CV. Så for en 22uF 16V kondensator er lækagen <10uA. Bemærk: Dette er lækagen ved den nominelle spænding, 16V i dette tilfælde. Lækagen er lavere ved lavere spændinger, dvs. <2,2uA ved 3,3V.

Liste over dele

Omtrentlige omkostninger pr. Enhed pr. December 2018, ~ US $ 61, eksklusive forsendelse og programmøren fra del 1

  • SKYLAB SKB369 ~ US $ 5 f.eks. Aliexpress
  • Sparkfun Si7021 breakout board ~ US $ 8
  • 2 x 53mm x 30mm 0,15W 5V solceller f.eks. Overfly ~ 1,10 $
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 $ for 5 off www.pcbcart.com
  • 1 x MC78LC33 3.3V regulator, f.eks. Digikey MC78LC33NTRGOSCT-ND ~ US $ 1
  • 2 x 0.1uF 50V keramik C1608X5R1H104K080A f.eks. Digikey 445-7456-1-ND ~ 0,3 US $
  • 4 x 22uF 16V keramik GRM21BR61C226ME44L f.eks. Digikey 490-10747-1-ND ~ 2 $
  • 1 x BAT54CW, f.eks. Digikey 497-12749-1-ND ~ 0,5 $
  • 1 x 470R 0,5W 1% modstand f.eks. Digikey 541-470TCT-ND ~ 0,25 $
  • 1 x 10V 1W zener SMAZ10-13-F f.eks. Digikey SMAZ10-FDICT-ND ~ 0,5 $
  • 3 mm x 12 mm nylonskruer, f.eks. Jaycar HP0140 ~ AUD $ 3
  • 3 mm x 12 mm nylonmøtrikker, f.eks. Jaycar HP0146 ~ AUD $ 3
  • Scotch Permanent Monteringstape Cat 4010 f.eks. fra Amazon ~ 6,6 US $
  • CR2032 batteriholder, f.eks. HU2032-LF ~ 1,5 $
  • CR2032 batteri ~ US $ 1
  • Perspex -ark, 3,5 mm og 8 mm
  • pfodApp ~ US $ 10
  • Loddepasta f.eks. Jaycar NS-3046 ~ 13 $

Trin 3: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Projektet er konstrueret på en lille PCB. PCB'et blev fremstillet af pcbcart.com ud fra disse Gerber -filer, SKYLAB_TempHumiditySensor_R2.zip PCB'et efterligner Nano V2 -stiften og er generelt generelt nok til at kunne bruges til andre BLE -projekter.

Dette er skematisk (pdf -version)

Lod først SMD -komponenterne, og monter derefter SKYLAB SKB369 -kortet

Næsten alle komponenterne er overflademonteringsenheder (SMD). Kondensatorerne og IC'erne kan være svære at lodde i hånden. Den foreslåede metode er at holde printkortet i en skruestik og anvende en lille mængde loddemasse på puderne og placere SMD -komponenterne, undtagen SKB369 -kortet på printkortet. Brug derefter en varmepistol til at varme på PCB'ens underside, indtil loddemassen smelter, og lav derefter en hurtig pasning over toppen af brættet, og pas på ikke at blæse komponenterne af. Til sidst rører du komponenterne op med et lille spids loddejern. Vær forsigtig med kondensatorerne og modstanden, da det er let at smelte begge ender og få komponenten til at løsne, mens den ene ende loddes.

Denne revision tilføjer ekstra 22uF 16V keramiske kondensatorer. Disse ekstra kondensatorer reducerer de nuværende pigge trukket fra batteriet og reducerer også spændingsfaldene, når de drives fra solcellerne. Så længe spændingen fra solcellerne forbliver over batterispændingen, trækkes der ikke strøm fra batteriet.

Efter at SMD -komponenterne er monteret, kan du lodde i SKYLAB SKB369 -pladen. Der er to testpunktshuller på den ene side af SKB369 -fanerne. Brug to stifter i en papbund til at placere SKB369 -kortet og juster forsigtigt stifterne. (Se eksempelbilledet ovenfor ved hjælp af Revision 1 PCB) Lod derefter en stift på den modsatte side for at holde brættet på plads, før de andre stifter loddes.

Bemærk Gnd -linkwiren fra CLK til GND i den færdige del. Dette installeres EFTER programmering for at forhindre støj på CLK -input i at udløse nRF52 -chippen til en højstrøms fejlfindingstilstand

Monteringsetui

Monteringshuset var lavet af to stykker perspex, 110 mm x 35 mm, 3 mm tykke. Det 3,5 mm stykke under solcellerne blev banket på for at tage de 3 mm nylonskruer. Denne reviderede konstruktion er forenkler derefter Rev 1 og forbedrer luftstrømmen omkring sensoren. De ekstra huller i hver ende er til montering, f.eks. Ved hjælp af kabelbindere.

Trin 4: Fjernelse af NRF52 -kodningsbeskyttelsesflag

Fjernelse af NRF52 kodningsbeskyttelsesflag
Fjernelse af NRF52 kodningsbeskyttelsesflag
Fjernelse af NRF52 kodningsbeskyttelsesflag
Fjernelse af NRF52 kodningsbeskyttelsesflag
Fjernelse af NRF52 -kodningsbeskyttelsesflaget
Fjernelse af NRF52 -kodningsbeskyttelsesflaget

Tilslut temperatur/fugtighedskortet til programmereren beskrevet i del 1 som vist ovenfor.

Når solcellerne og batterierne er frakoblet, er Vin og Gnd forbundet til programmørens Vdd og Gnd (de gule og grønne ledninger), og SWCLK og SWDIO forbindes til Clk og SIO på programmeringsoverskriftskortet (de hvide og grå ledninger)

Fjernelse af nRF52 programbeskyttelse

Fra Nordic Semi - Debug and Trace side DAP - Debug Access Port. En ekstern fejlfinding kan få adgang til enheden via DAP. DAP'en implementerer en standard ARM® CoreSight ™ Serial Wire Debug Port (SW-DP). SW-DP implementerer Serial Wire Debug-protokollen (SWD), der er et to-benet serielt interface, SWDCLK og SWDIO

Vigtigt: SWDIO-linjen har en intern pull-up-modstand. SWDCLK-linjen har en intern pull-down-modstand.

CTRL -AP - Kontroladgangsport. Kontroladgangsporten (CTRL-AP) er en brugerdefineret adgangsport, der muliggør kontrol af enheden, selvom de andre adgangsport i DAP deaktiveres af adgangsportbeskyttelsen. Adgangsportsbeskyttelse blokerer fejlfinding fra læse- og skriveadgang til alle CPU-registre og hukommelseskortede adresser. Deaktiver adgangsportbeskyttelse. Adgangsportbeskyttelse kan kun deaktiveres ved at udstede en ERASEALL-kommando via CTRL-AP. Denne kommando sletter Flash, UICR og RAM.

Vælg CMSIS-DAP som programmør for Particle's Debugger, og vælg nRF5 Flash SoftDevice

Hvis blitzen virker, så er det OK, men moduler har ofte været beskyttet mod omprogrammering, og du får denne fejlmeddelelse i Arduino-vinduet

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Licenseret under GNU GPL v2 For fejlrapporter, læs https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: kun en transportmulighed; autoselect 'swd' adapterhastighed: 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Understøttet info: CMSIS-DAP: Interface initialiseret (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: Grænseflade klar Info: reducer hastighedsanmodning: 10000kHz til 5000kHz maks. Info: clockhastighed 10000 kHz Info: SWD IDCODE 0x2ba01477 Fejl: Kunne ikke finde MEM -AP for at styre kernefejl: Mål ikke undersøgt endnu Fejl under blinkende SoftDevice.

I så fald skal du indstille kommandoregistret ERASEALL i nRF52 for at rydde hukommelsen og gøre enheden programmerbar igen. Den version af openOCD, der leveres med sandeepmistry nRF52, indeholder ikke den apreg -kommando, der er nødvendig for at skrive til ERASEALL -kommandoregistret, så du skal installere en senere version.

Installer OpenOCD-version OpenOCD-20181130 eller højere. Windows forhåndskompileret version er tilgængelig fra https://gnutoolchains.com/arm-eabi/openocd/ Den seneste kode er tilgængelig fra

Åbn en kommandoprompt, og skift dir til OpenOCD -installationsmappen, og indtast kommandoen

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

Svaret er

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] Licenseret under GNU GPL v2 For fejlrapporter, læs https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: automatisk valg af første tilgængelige sessionstransport "swd". Brug 'transport vælg' for at tilsidesætte. adapterhastighed: 1000 kHz cortex_m reset_config sysresetreq Info: Lytning på port 6666 for tcl-forbindelser Info: Lytning på port 4444 for telnetforbindelser Info: CMSIS-DAP: SWD Understøttet info: CMSIS-DAP: FW Version = 1.10 Info: CMSIS-DAP: Interface initialiseret (SWD) Info: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interface klar Info: clock speed 1000 kHz Info: SWD DPIDR 0x2ba01477 Fejl: Kunne ikke finde MEM-AP til at styre kernen Info: Lytte til port 3333 for gdb-forbindelser

Åbn derefter et terminalvindue f.eks. TeraTerm (Windows) eller CoolTerm (Mac) og tilslut til 127.0.0.1 port 4444

Telnet -vinduet viser et>, og kommandoprompten viser Info: accepterer 'telnet' forbindelse på tcp/4444

I telnet -vinduet (dvs. TeraTerm) typenrf52.dap apreg 1 0x04dette returnerer 0x00000000 og viser, at chippen er beskyttet. Derefter returnerer typenrf52.dap apreg 1 0x04 0x01og thennrf52.dap apreg 1 0x04 dette 0x00000001 viser, at chippen nu er indstillet til ERASEALL ved næste genstart.

Luk telnetforbindelsen, og brug også Ctrl-C til at afslutte openOCD-programmet i kommandoprompten, og tænd derefter for nRF52-modulet, og det er nu klar til at programmere.

Prøv nu at blinke softwaren igen.

Du kan nu programmere nRF52 -modulet fra Arduino.

Trin 5: Programmering af SKYLAB SKB369

Programmering af SKYLAB SKB369
Programmering af SKYLAB SKB369
Programmering af SKYLAB SKB369
Programmering af SKYLAB SKB369
Programmering af SKYLAB SKB369
Programmering af SKYLAB SKB369

Luk Arduino, og geninstaller den nyeste version af pfod_lp_nrf52 support ved at følge vejledningen Installer pfod_lp_nrf52 hardware support. Det seneste pfod_lp_nrf52 inkluderer SKYLAB SKB369 Nano2 udskiftningskort. Vælg det som tavlen, og du kan derefter programmere det med revision 3 af lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, som beskrevet i del 2.

Hvis programmeringen mislykkes. Luk alle Arduino -vinduer, fjern USB -kablerne, genstart Arduino, og sæt programmørens USB -kabel i igen, og tilslut nRF52 -modulets USB -forsyning igen, og prøv igen.

Tilslut derefter via pfodApp for at vise den aktuelle og historiske temperatur og luftfugtighed. Når du har vist det historiske plot, gemmes aflæsningerne med tidsstempler på millisekunder i logfilen på din mobil og er også tilgængelige på rådata -skærmen.

Logfilen indeholder også de ekstra data, der er nødvendige for at genskabe dato- og klokkeslæt i et regneark. Se Arduino dato og tid ved hjælp af millis () og pfodApp for detaljer

Trin 6: Oprettelse af en ny Arduino NRF52 Board Definition

Oprettelse af en ny Arduino NRF52 Board Definition
Oprettelse af en ny Arduino NRF52 Board Definition
Oprettelse af en ny Arduino NRF52 Board Definition
Oprettelse af en ny Arduino NRF52 Board Definition
Oprettelse af en ny Arduino NRF52 Board Definition
Oprettelse af en ny Arduino NRF52 Board Definition
Oprettelse af en ny Arduino NRF52 Board Definition
Oprettelse af en ny Arduino NRF52 Board Definition

For at understøtte et nyt nRF52 -kort skal du a) tilføje et nyt bibliotek under varianterkataloget med tavlefilerne og b) redigere boards.txt -filen for at tilføje det nye kort til Arduino.

Tilføjelse af en ny nRF52 -kortvariant

Som beskrevet i del 1, Installation af pfod_lp_nrf52 hardware support, finder du hardware-undermappen til sandeepmistry-pakken, som du har opdateret med pfod_lp_nrf52 support. Åbn underkataloget / hardware / nRF5 / 0.6.0 / varianter, og opret et nyt bibliotek til dit nye kort, f.eks. SKYLAB_SKB369_Nano2replacement I det nye / hardware / nRF5 / 0.6.0 / varianter / SKYLAB_SKB369_Nano2replacement-bibliotek opret tre filer variant.h, variant.cpp og pins_arduino.h Du kan kopiere dem fra en af de andre kortvarianters mapper. For SKYLAB_SKB369_Nano2 -erstatningen kopierede jeg oprindeligt filerne fra RedBear_BLENano2 -varianten.

pins_arduino.h -fil

Filen pins_arduino.h behøver ikke ændres. Den indeholder bare filen variant.h

variant.h -fil

Rediger variant.h -filen for at definere det samlede antal pins, dit board vil have, PINS_COUNT

BEMÆRK: I sandeepmistry -pakken ignoreres NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS og NUM_ANALOG_OUTPUTS indstillinger

Hvis dit bord gør mere eller mindre analoge pins tilgængelige, skal du opdatere / * Analog Pins * / sektionen i variants.h -filen.

BEMÆRK: For NanoV2- og SKYLAB -kortene er de analoge stifter tilknyttet de digitale stifter A0 == D0 osv

Dette er ikke afgørende. Du kan tildele de analoge indgange til enhver praktisk Arduino -pin. Se derefter blue/variant.h og blue/variant.cpp filer for et eksempel.

NRF52832 -chippen har 8 analoge indgangsstifter, men udskiftningskortet SKYLAB_SKB369_Nano2 stiller kun 6 af dem til rådighed for at matche Nano2.

Alle PIN -numre, undtagen RESET_PIN, i filen variant.h er Arduino pin -numre. Det er #define PIN_A0 (0) indebærer, at D0 i arduino -skitsen er den samme pin som A0. RESET_PIN er undtagelsen. Dette nummer er chipnummeret nRF52823, og 21 er det eneste gyldige valg. Understøttelsen af pfod_lp_nrf52 aktiverer dog ikke nulstillingstappen på nRF52832

variant.cpp -fil

Der er kun en post i filen variant.cpp, g_ADigitalPinMap -matrixen, der kortlægger Arduino -pinnumre til nRF52832 -chip P0.. -stifterne

BEMÆRK: I NanoV2- og SKYLAB -kortene er Arduino analoge ben A0, A1… de samme som Arduino digitale stifter D0, D1… så de første poster i g_ADigitalPinMap SKAL kortlægges til AINx pin -numre på nRF52832 -chippen

For de analoge indgange, dit kort stiller til rådighed, skal disse poster i g_ADigitalPinMap kortlægge nRF52832 AIN0, AIN1, AIN2 osv. Pin -numre. dvs. AIN0 er chip pin P0.02, AIN1 er chip pin P0.03 osv. se nRF52832 pin layout ovenfor.

Brug (uint32_t) -1 til ugyldige kortlægninger. For eksempel har SKYLAB_SKB369_Nano2-udskiftningskortet ikke en indbygget LED, D13, så dens position er kortlagt til (uint32_t) -1

I pfod_lp_nrf52.zip har Redbear NanoV2, SKYLAB SKB369 og GT832E_01 varianter undermapper billeder, der viser de tilknytninger, der er konfigureret af variant.cpp. (Se billederne ovenfor)

I tilfælde af SKYLAB SKB369 er der masser af stifter at vælge imellem. Kun nok er kortlagt til at matche NanoV2. I tilfælde af GT832E_01 skal alle tilgængelige stifter kortlægges. Selv da er der kun tre (3) analoge indgange tilgængelige i stedet for de seks (6) på NanoV2. Ud over dette skal de to NFC-ben, P0.09 og P0.10, genkonfigureres som GPIO'er. Se Omkonfiguration af nRF52 NFC -ben som GPIO'er herunder.

Opdatering af boards.txt -filen

Her er SKYLAB_SKB369_Nano2replacement -posten i boards.txt -filen.

## SKYLAB_SKB369 Nano2 -udskiftningSKYLAB_SKB369_NANO2_REPLACEMENT.name =*SKYLAB SKB369 Nano2 -udskiftning

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_størrelse_36_SK_VÆRK_BIL_PLAN_REGLER_36. KOPIER_36. KOPIER_LÆGER_36. KØB_REGLER_36. KØB_REGLER_36. KØB_REGLER_36. KØB_REGLER_36. KØB_REGLER_36. KØB_REGLERING SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb = 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 = 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

board.txt Indstillinger

Kommentarer - linjer, der starter med #, er kommentarer.

Præfiks - hvert bord har brug for et unikt præfiks for at identificere dets værdier. Her er præfiksetSKYLAB_SKB369_NANO2_REPLACEMENT.

Navn - Linjen SKYLAB_SKB369_NANO2_REPLACEMENT.name angiver navnet på dette kort, der skal vises i Arduinos bordmenu.

Uploadværktøj - SKYLAB_SKB369_NANO2_REPLACEMENT.upload -blokken angiver, hvilket værktøj der skal bruges til upload. Hvis du bruger Particle Debugger, skal du bruge protocol = cmsis-dap som vist ovenfor.

Bootloader - Denne linje er den samme for alle tavler i disse boards.txt

Byg - Kun to linjer skal opdateres i denne blok. Linjen SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant angiver dette tavls biblioteksnavn i variantundermappen. SKYLAB_SKB369_NANO2_REPLACEMENT.build.boardet er værdien, der tilføjes ARDUINO_ og derefter defineres, mens koden kompileres. f.eks. -DARDUINO_SKYLAB_SKB369_Nano2replacement Dette lader dig aktivere/deaktivere dele af koden for bestemte tavler.

Lavt frekvensur - Denne linje, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, angiver kilden til det lavfrekvente ur, der bruges til lp_timeren. Der er tre muligheder, -DUSE_LFXO, -DUSE_LFRC og -DUSE_LFSYNT. Det bedste valg er -DUSE_LFXO, hvis kortet har en ekstern 32Khz krystal. Hvis ikke, så brug -DUSE_LFRC, som bruger en intern RC -oscillator og trækker lidt mere strøm, ~ 10uA mere, og er meget mindre gange mindre præcis. Brug ikke -DUSE_LFSYNT, da dette holder chippen kørende hele tiden, hvilket resulterer i mAs nuværende draw.

Softdevice - pfod_lp_nrf52 understøtter kun nRF52 -chips og softdevice s132, så der er ingen ændringer nødvendig for denne blok, bortset fra præfikset.

Omkonfiguration af nRF52 NFC -ben som GPIO'er

Vær standard på nRF52 -benene, P0.09 og P0.10 er konfigureret til brug som NFC og forventes at blive tilsluttet en NFC -antenne. Hvis du skal bruge disse som generelle I/O -ben (GPIO'er), skal du tilføje en definere -DCONFIG_NFCT_PINS_AS_GPIOS til dette tavls… menu.softdevice.s132.build.extra_flags kompilere indstillinger i boards.txt -filen.

For eksempel pfod_lp_nrf52.zip, genkonfigurerer GT832E_01 benene til brug som I/O. GT832E_01 sektionen for dette kort, i boards.txt -filen, har følgende definition tilføjet

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

Linker scriptet i pfod_lp_nrf52.zip er også blevet ændret for at bevare denne indstilling og behøver ikke ændres.

Trin 7: Konklusion

Denne vejledning har præsenteret en erstatning for Redbear NanoV2 ved hjælp af et SKYLAB SKB369 -modul. En batteri/soldrevet temperaturfugtighedsmonitor blev brugt som et eksempel på et meget lavt strømforbrug BLE -projekt i Arduino til SKYLAB -modulet. Forsyningsstrømme på ~ 29uA, hvor de opnås ved at indstille forbindelsesparametrene. Dette resulterede i en CR2032 møntcellebatteriets levetid ~ 10 måneder. Længere for møntceller og batterier med højere kapacitet. Tilføjelse af to billige solceller forlængede let batterilevetiden med 50% eller mere. Et lyst rumlys eller en bordlampe er tilstrækkelig til at drive skærmen fra solcellerne.

Denne vejledning dækkede også fjernelse af chipbeskyttelse fra en forprogrammeret nRF52 og hvordan du opretter en ny kortdefinition, der matcher dit eget printkort/kredsløb

Ingen Android -programmering er påkrævet. pfodApp håndterer alt dette.

Anbefalede: