Innholdsfortegnelse:

Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3: 7 Steps (med bilder)
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3: 7 Steps (med bilder)

Video: Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3: 7 Steps (med bilder)

Video: Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3: 7 Steps (med bilder)
Video: 3 Ways to power an Arduino Board - Do you know them? 2024, November
Anonim
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3

Oppdatering: 7. april 2019 - Rev 3 av lp_BLE_TempHumidity, legger til dato/klokkeslett, ved hjelp av pfodApp V3.0.362+, og automatisk struping når du sender dataOppdatering: 24. mars 2019 - Rev 2 av lp_BLE_TempHumidity, legger til flere plottalternativer og i2c_ClearBus, legger til GT832E_01 -støtte

>

>

Introduksjon

Denne opplæringen, A Redbear Nano V2 Replacement, er del 3 av 3. Dette er revisjon 2 av dette prosjektet. Revisjon 2 PCB inkluderer montering for myntcellen og sensoren, forenkler konstruksjonen og forbedrer luftstrømmen rundt sensoren mens den beskyttes mot direkte sollys. Revisjon 1 er her.

Del 1 - Bygging av BLE -enheter med svært lav effekt er enkelt med Arduino -deksler som setter opp Arduino for å kode nRF52 -enheter med lav effekt, programmeringsmodulen og måle forsyningsstrømmen. Den dekker også spesialiserte lavtids -tidtakere og komparatorer og debounced innganger og bruk av pfodApp for å koble til og kontrollere nRF52 -enheten.

Del 2 - En svært lav effekt temperatur fuktighetsmonitor dekker ved hjelp av en Redbear Nano V2 modul og en Si7021 temperatur / fuktighetssensor for å bygge et lavt strømbatteri / solmonitor. Det dekker også endring av Si7021 -biblioteket til lav effekt, justering av BLE -enheten for å redusere strømforbruket til <29uA og designe en tilpasset temperatur/fuktighetsvisning for mobilen din.

Del 3 - En Redbear Nano V2 -erstatning, denne, dekker bruk av andre nRF52 -baserte moduler i stedet for Nano V2. Den dekker valg av forsyningskomponenter, konstruksjon, fjerning av nRF52 -programmeringsbeskyttelse for brikker, bruk av NFC -pinner som vanlig GPIO, og definering av et nytt nRF52 -kort i Arduino.

Denne instruksen er en praktisk anvendelse av del 1 -bygging av BLE -enheter med svært lav effekt, enkelt med Arduino ved å konstruere en BLE -temperatur- og fuktighetsmonitor med svært lav effekt ved bruk av et SKYLAB SBK369 -bord som erstatning for Nano V2. Denne opplæringen dekker hvordan du oppretter en ny brettdefinisjon og hvordan du fjerner nRF52 programmeringsbeskyttelse slik at den kan programmeres på nytt. Denne opplæringen bruker samme skisse som del 2 med de samme innstilte BLE -parameterne for lavt strømforbruk og kan bare drives fra batteri ELLER batteri + sol eller ELLER solcelle. Stillingen av BLE -parametere for lav effekt ble dekket i del 2

Rev 3 av lp_BLE_TempHumidity plotter dataene mot dato og klokkeslett ved å bruke bare Arduino millis (). Se Arduino dato og klokkeslett ved bruk av millis () og pfodApp ved bruk av den nyeste versjonen av pfodApp (V3.0.362+).

Rev 4 av pfod_lp_nrf52.zip støtter også GT832E_01 -modulen, og denne opplæringen dekker bruk av NFC nRF52 -pinner som standard GPIO -er.

Monitoren som er konstruert her, vil kjøre i mange år med Coin Cell eller 2 x AAA -batterier, enda lenger med solhjelp. I tillegg til å vise gjeldende temperatur og fuktighet, lagrer skjermen de siste 36 timene på 10 minutter og de siste 10 dagene med timevisninger. Disse kan kartlegges på Android -mobilen din og verdiene lagres i en loggfil. Ingen Android -programmering er nødvendig, pfodApp håndterer alt dette. Android -skjermen og kartleggingen er fullstendig kontrollert av din Arduino -skisse, slik at du kan tilpasse den etter behov.

Del 2 brukte et Redbear Nano V2 -kort for nRF52832 BLE -komponenten. Dette prosjektet erstatter det med et billigere SKYLAB SKB369 -bord. Som i del 2 brukes et Sparkfun Si7021 breakout -kort for temperatur- / fuktighetssensoren. Et modifisert lavt strømbibliotek brukes med Si7021.

Trinn 1: Hvorfor en Nano V2 -erstatning?

i) Nano V2 var ute av produksjon i flere måneder og ser ikke ut til å passe inn i Particle.io -serien, så det er ikke klart hvor lenge den vil være tilgjengelig for.

ii) Nano V2 er dyrere. Men den har også ekstra funksjoner. Se nedenfor.

iii) Nano V2 har komponenter på begge sider som gir den en høyere profil og gjør det vanskeligere å montere.

iv) Nano V2 har begrensede I/O -pinner tilgjengelig, og bruk av D6 til D10 krever flygende ledninger.

Selv om Nano V2 -kortet er dyrere enn SKYLAB SKB369 -kortet, ~ US17 kontra ~ US5, har Nano V2 flere funksjoner. Nano V2 inkluderer en 3.3V regulator og forsyningskondensatorer, ekstra komponenter for bruk av nRF52 DC/DC -omformeren, en chip -antenne og en uFL SMT -antennekontakt.

Et annet alternativ er GT832E_01 -modulen som brukes av www.homesmartmesh.com. Rev 4 i pfod_lp_nrf52.zip støtter også programmering av GT832E_01 -modulen. SKYLAB SKB369 og GT832E_01 er tilgjengelig fra

Redbear (Particle.io) har også en bar modul uten 3V3 regulator, DC/DC komponenter eller 32Khz krystallkomponenter.

Oversikt

Dette prosjektet har 4 relative uavhengige deler:-

Komponentvalg og konstruksjon Fjerne nRF52 -kodingsbeskyttelsesflagget og programmere skissen Lage en ny Arduino nRF52 -kortdefinisjon Konfigurere nRF52 NFC -pinner som GPIO -er

Trinn 2: Komponentvalg og konstruksjon

Komponentvalg

I tillegg til komponentene nRF52832 og Si7021 valgt i del 2, legger dette prosjektet til en 3.3V regulator og forsyningskondensatorer.

Spenningsregulator -komponenten

Regulatoren som brukes her er MC87LC33-NRT. Den kan håndtere opptil 12V innganger og har en hvilestrøm på <3.6uA, vanligvis 1.1uA. Nano V2 brukte en TLV704 -regulator har en litt høyere hvilestrøm, vanligvis 3,4uA og kan håndtere høyere inngangsspenninger, opptil 24V. MC87LC33-NRT ble valgt i stedet fordi databladet spesifiserer hvordan det reagerer når inngangsspenningen faller under 3,3V der TLV704-databladet ikke gjør det.

TLV704 spesifiserer en inngangsspenning på minimum 2,5V, og det er ikke klart fra databladet hva som vil skje under det. NRF52832 vil gå ned til 1,7V og Si7023 vil gå ned til 1,9V. MC87LC33-NRT på den annen side spesifiserer inngangs-/utgangsspenningsforskjeller ned til 0V for lave strømmer (figur 18 i databladet). Så gitt valg av komponenter, ble MC87LC33-NRT valgt fordi den har den angitte ytelsen.

Forsyningskondensatorer

MC87LC33-NRT-regulatoren trenger noen forsyningskondensatorer for stabilitet og respons. En utgangskondensator> 0.1uF anbefales på databladet. SKYLAB SBK369 spesifiserer også 10uF/0.1uF kondensatorer på forsyningen nær kortet. Større kondensatorer hjelper til med å levere nRF52 TX nåværende pigger. Her ble 4 x 22uF 25V og 3 x 0.1uF 50V keramiske kondensatorer brukt. En 22uF og en 0.1uF kondensator ble plassert i nærheten av SKYLAB SBK369, en 0.1uF ble plassert nær utgangen til MC87LC33-NRT for å sikre stabilitet og en 22uF og 0.1uF ble plassert på inngangen til MC87LC33-NRT og en ytterligere 2 x 22uF kondensatorer ble loddet over Vin/GND -pinnene som et ytterligere strømreservoar. Til sammenligning har NanoV2 -kortet et 22uF / 0.1uF på inngangen til TLV704 -regulatoren og et 0.1uF på utgangen.

Ekstra strømreservoar kondensatorer ble installert på inngangen til 3.3V regulatoren slik at de ville lade opp til en høyere spenning når de kjøres med solceller. Lading til høyere spenning tilsvarer lagring av mer strøm for å forsyne Tx -piggene.

Keramiske X5R -kondensatorer brukes fordi de har lav seriemotstand og lav lekkasjestrøm. Motstanden er vanligvis 100, 000MΩ eller 1000MΩ - µF som noen gang er mindre. Så for 22uF har vi 22000MΩ, dvs. 0,15nA lekkasje ved 3,3V eller 0,6nA for de fire 22uF kondensatorene. Det er ubetydelig. Til sammenligning Lav ESR, Lav lekkasje Panasonic elektrolytiske kondensatorer har lekkasjestrømmer på <0,01 CV. Så for en 22uF 16V kondensator er lekkasjen <10uA. Merk: Dette er lekkasjen ved merkespenningen, 16V i dette tilfellet. Lekkasjen er lavere ved lavere spenninger, dvs. <2.2uA ved 3.3V.

Deleliste

Omtrentlig kostnad per enhet per desember 2018, ~ US $ 61, eksklusiv forsendelse og programmereren 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 dollar
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 dollar for 5 av www.pcbcart.com
  • 1 x MC78LC33 3.3V regulator, f.eks. Digikey MC78LC33NTRGOSCT-ND ~ US $ 1
  • 2 x 0.1uF 50V keramikk C1608X5R1H104K080A f.eks. Digikey 445-7456-1-ND ~ 0,3 dollar
  • 4 x 22uF 16V keramikk GRM21BR61C226ME44L f.eks. Digikey 490-10747-1-ND ~ 2 dollar
  • 1 x BAT54CW, f.eks. Digikey 497-12749-1-ND ~ 0,5 dollar
  • 1 x 470R 0,5W 1% motstand f.eks. Digikey 541-470TCT-ND ~ 0,25 dollar
  • 1 x 10V 1W zener SMAZ10-13-F f.eks. Digikey SMAZ10-FDICT-ND ~ 0,5 dollar
  • 3 mm x 12 mm nylonskruer, f.eks. Jaycar HP0140 ~ AUD $ 3
  • 3 mm x 12 mm nylonmuttere, f.eks. Jaycar HP0146 ~ AUD $ 3
  • Scotch Permanent Monteringstape Cat 4010 f.eks. fra Amazon ~ 6,6 dollar
  • CR2032 batteriholder, f.eks. HU2032-LF ~ 1,5 dollar
  • CR2032 batteri ~ 1 dollar
  • Perspex -ark, 3,5 mm og 8 mm
  • pfodApp ~ 10 dollar
  • Loddemasse f.eks. Jaycar NS-3046 ~ 13 dollar

Trinn 3: Konstruksjon

Konstruksjon
Konstruksjon
Konstruksjon
Konstruksjon
Konstruksjon
Konstruksjon

Prosjektet er konstruert på en liten PCB. Kretskortet ble produsert av pcbcart.com fra disse Gerber -filene, SKYLAB_TempHumiditySensor_R2.zip Kretskortet etterligner Nano V2 -pinnen og er generelt hensiktsmessig nok til å brukes til andre BLE -prosjekter.

Dette er skjematisk (pdf -versjon)

Lodd først SMD -komponentene, og monter deretter SKYLAB SKB369 -kortet

Nesten alle komponentene er overflatemonterte enheter (SMD). Kondensatorene og IC -ene kan være vanskelige å lodde for hånd. Den foreslåtte metoden er å holde PCB i en skrue og påføre en liten mengde loddemasse på putene og plassere SMD -komponentene, bortsett fra SKB369 -kortet på PCB. Deretter bruker du en varmepistol og påfører varme på undersiden av kretskortet til loddemassen smelter, og deretter gjør du en rask passering over toppen av brettet, og vær forsiktig så du ikke blåser komponentene av. Til slutt berører du komponentene med et lite spissloddejern. Vær forsiktig med kondensatorene og motstanden, da det er lett å smelte begge ender og la komponenten løsne mens du lodder den ene enden.

Denne revisjonen legger til ekstra 22uF 16V keramiske kondensatorer. Disse ekstra kondensatorene reduserer gjeldende pigger fra batteriet og reduserer også spenningsfallene når de drives fra solcellene. Så lenge spenningen fra solcellene forblir over batterispenningen, trekkes det ingen strøm fra batteriet.

Etter at SMD -komponentene er montert, kan du lodde i SKYLAB SKB369 -kortet. Det er to testpunktshull på den ene siden av SKB369 -fanene. Bruk to pinner i en pappbase for å plassere SKB369 -brettet og juster pinnene forsiktig. (Se eksempelbildet ovenfor ved bruk av PC -en fra Revisjon 1) Deretter loddes en pinne på motsatt side for å holde brettet på plass før de andre pinnene loddes.

Legg merke til Gnd -koblingskabelen fra CLK til GND i den ferdige delen. Dette er installert ETTER programmering for å forhindre at støy på CLK -inngangen utløser nRF52 -brikken til en høystrøms feilsøkingsmodus

Monteringsetui

Monteringshuset var laget av to stykker perspex, 110 mm x 35 mm, 3 mm tykke. 3,5 mm -stykket under solcellene ble banket for å ta 3 mm nylonskruene. Denne reviderte konstruksjonen er forenkler enn Rev 1 og forbedrer luftstrømmen rundt sensoren. De ekstra hullene i hver ende er for montering, for eksempel ved hjelp av kabelbånd.

Trinn 4: Fjerne NRF52 kodingsbeskyttelsesflagget

Fjerner NRF52 kodingsbeskyttelsesflagg
Fjerner NRF52 kodingsbeskyttelsesflagg
Fjerner NRF52 kodingsbeskyttelsesflagg
Fjerner NRF52 kodingsbeskyttelsesflagg
Fjerner NRF52 kodingsbeskyttelsesflagg
Fjerner NRF52 kodingsbeskyttelsesflagg

Koble temperatur/fuktighetskortet til programmereren beskrevet i del 1 som vist ovenfor.

Når solcellene og batteriene er frakoblet, er Vin og Gnd koblet til programmererens Vdd og Gnd (de gule og grønne ledningene) og SWCLK og SWDIO kobles til Clk og SIO på programmeringshovedkortet (de hvite og grå ledningene)

Fjerner programbeskyttelsen nRF52

Fra Nordic Semi - Debug and Trace side DAP - Debug Access Port. En ekstern feilsøker kan få tilgang til enheten via DAP. DAP implementerer en standard ARM® CoreSight ™ Serial Wire Debug Port (SW-DP). SW-DP implementerer Serial Wire Debug-protokollen (SWD) som er et to-pinners serielt grensesnitt, SWDCLK og SWDIO

Viktig: SWDIO-linjen har en intern trekkmotstand. SWDCLK-linjen har en intern nedtrekksmotstand.

CTRL -AP - Kontrolltilgangsport. Control Access Port (CTRL-AP) er en tilpasset tilgangsport som gjør det mulig å kontrollere enheten selv om de andre tilgangsportene i DAP deaktiveres av tilgangsportbeskyttelsen. Tilgangsportbeskyttelse blokkerer feilsøkingsprogrammet fra lese- og skrivetilgang til alle CPU-registre og minnekartede adresser. Deaktiver tilgangsportbeskyttelse. Tilgangsportbeskyttelse kan bare deaktiveres ved å sende en ERASEALL-kommando via CTRL-AP. Denne kommandoen sletter Flash, UICR og RAM.

Velg CMSIS-DAP som programmerer for Particle's Debugger og velg nRF5 Flash SoftDevice

Hvis blitsen fungerer, er det OK, men ofte vil moduler ha blitt beskyttet mot omprogrammering, og du får denne feilmeldingen i Arduino-vinduet

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Lisensiert under GNU GPL v2 For feilrapporter, les https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: bare ett transportalternativ; automatisk velg 'swd' adapterhastighet: 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Støttet informasjon: CMSIS-DAP: Grensesnitt initialisert (SWD) Info: CMSIS-DAP: FW Versjon = 1.10 Info: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Grensesnitt klar Info: reduser hastighetsforespørsel: 10000kHz til 5000kHz maksimal info: klokkehastighet 10000 kHz Info: SWD IDCODE 0x2ba01477 Feil: Kunne ikke finne MEM -AP for å kontrollere kjernen Feil: Målet er ikke undersøkt ennå Feil mens FlashDevice blinker.

I så fall må du angi ERASEALL -kommandoregisteret i nRF52 for å slette minnet og gjøre enheten programmerbar igjen. Versjonen av openOCD som følger med sandeepmistry nRF52 inkluderer ikke apreg -kommandoen som trengs for å skrive til ERASEALL -kommandoregisteret, så du må installere en senere versjon.

Installer OpenOCD versjon OpenOCD-20181130 eller høyere. Windows forhåndskompilert versjon er tilgjengelig fra https://gnutoolchains.com/arm-eabi/openocd/ Den siste koden er tilgjengelig fra

Åpne en ledetekst og endre dir til OpenOCD installasjonskatalogen og skriv inn 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] Lisensiert under GNU GPL v2 For feilrapporter, les https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: automatisk valg av første tilgjengelige økttransport "swd". For å overstyre bruk 'transport velg'. adapterhastighet: 1000 kHz cortex_m reset_config sysresetreq Info: Lytte på port 6666 for tcl-tilkoblinger Info: Lytte på port 4444 for telnetforbindelser Info: CMSIS-DAP: SWD Støttet informasjon: CMSIS-DAP: FW Versjon = 1.10 Info: CMSIS-DAP: Grensesnitt initialisert (SWD) Info: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Grensesnitt klar Info: klokkehastighet 1000 kHz Info: SWD DPIDR 0x2ba01477 Feil: Kunne ikke finne MEM-AP for å kontrollere kjernen Info: Lytte på port 3333 for gdb-tilkoblinger

Åpne deretter et terminalvindu f.eks. TeraTerm (Windows) eller CoolTerm (Mac) og koble til 127.0.0.1 port 4444

Telnet -vinduet viser en> og ledeteksten viser Info: godtar 'telnet' tilkobling på tcp/4444

I telnet -vinduet (dvs. TeraTerm) typenrf52.dap apreg 1 0x04 dette returnerer 0x00000000 som viser at brikken er beskyttet. Deretter returnerer typenrf52.dap apreg 1 0x04 0x01og thennrf52.dap apreg 1 0x04 dette returnerer 0x00000001 som viser at brikken nå er satt til ERASEALL ved neste omstart.

Lukk telnet-tilkoblingen, og bruk også Ctrl-C for å gå ut av openOCD-programmet i ledeteksten, og deretter slå nRF52-modulen av og på, og den vil nå være klar til å programmere.

Prøv nå å blinke på den myke enheten igjen.

Du kan nå programmere nRF52 -modulen fra Arduino.

Trinn 5: Programmering av SKYLAB SKB369

Programmering av SKYLAB SKB369
Programmering av SKYLAB SKB369
Programmering av SKYLAB SKB369
Programmering av SKYLAB SKB369
Programmering av SKYLAB SKB369
Programmering av SKYLAB SKB369

Lukk Arduino og installer den nyeste versjonen av pfod_lp_nrf52-støtten på nytt ved å følge instruksjonene for Installer pfod_lp_nrf52 maskinvarestøtte. Det siste pfod_lp_nrf52 inkluderer SKYLAB SKB369 Nano2 erstatningskort. Velg det som brettet, og du kan deretter programmere det med revisjon 3 av lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, som beskrevet i del 2.

Hvis programmeringen mislykkes. Lukk alle Arduino -vinduer, fjern USB -kablene, start Arduino på nytt og koble programmererens USB -kabel til igjen, og koble nRF52 -modulens USB -forsyning til igjen, og prøv igjen.

Koble deretter til via pfodApp for å vise gjeldende og historisk temperatur og fuktighet. Når du har vist det historiske plottet, blir avlesningene, med tidsstempler på millisekunder, lagret i loggfilen på mobilen din og også tilgjengelig i rådataskjermen.

Loggfilen inneholder også de ekstra dataene som er nødvendige for å gjenopprette dato og klokkeslett i et regneark. Se Arduino Date and Time ved å bruke millis () og pfodApp for detaljer

Trinn 6: Opprette en ny Arduino NRF52 Board Definition

Opprette en ny Arduino NRF52 Board Definition
Opprette en ny Arduino NRF52 Board Definition
Opprette en ny Arduino NRF52 Board Definition
Opprette en ny Arduino NRF52 Board Definition
Opprette en ny Arduino NRF52 Board Definition
Opprette en ny Arduino NRF52 Board Definition
Opprette en ny Arduino NRF52 Board Definition
Opprette en ny Arduino NRF52 Board Definition

For å støtte et nytt nRF52 -kort må du a) legge til en ny katalog under variantekatalogen med tavlefilene og b) redigere boards.txt -filen for å legge det nye kortet til Arduino.

Legger til en ny nRF52 -kortvariant

Som beskrevet i del 1, Installere maskinvarestøtten for pfod_lp_nrf52, finner du maskinvareunderkatalogen til sandeepmistry-pakken som du har oppdatert med støtten pfod_lp_nrf52. Åpne undermappen / hardware / nRF5 / 0.6.0 / varianter og opprett en ny katalog for det nye kortet, f.eks. SKYLAB_SKB369_Nano2replacement I den nye / hardware / nRF5 / 0.6.0 / varianter / SKYLAB_SKB369_Nano2replacement-katalogen opprett tre filer variant.h, variant.cpp og pins_arduino.h Du kan kopiere dem fra en av de andre brettvariantkatalogene. For SKYLAB_SKB369_Nano2 -erstatningen kopierte jeg først filene fra RedBear_BLENano2 -varianten.

pins_arduino.h -fil

Pins_arduino.h -filen trenger ikke endres. Den inneholder bare filen variant.h

variant.h -fil

Rediger variant.h -filen for å definere totalt antall pinner som brettet ditt vil ha, PINS_COUNT

MERK: I sandeepmistry -pakken ignoreres NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS og NUM_ANALOG_OUTPUTS innstillinger

Hvis brettet ditt gjør mer eller mindre analoge pinner tilgjengelig, oppdaterer du / * Analog Pins * / delen av variants.h -filen.

MERK: For NanoV2- og SKYLAB -kortene er de analoge pinnene kartlagt til de digitale pinnene A0 == D0 osv

Dette er ikke avgjørende. Du kan tilordne de analoge inngangene til en hvilken som helst praktisk Arduino -pinne. Se deretter blue/variant.h og blue/variant.cpp filer for et eksempel.

NRF52832 -brikken har 8 analoge inngangspinner, men SKYLAB_SKB369_Nano2 -erstatningskortet gjør bare 6 av dem tilgjengelige for å matche Nano2.

Alle pin -tall, bortsett fra RESET_PIN, i filen variant.h er Arduino -pin -numre. Det vil si #define PIN_A0 (0) innebærer at D0 i arduino -skissen er den samme pinnen som A0. RESET_PIN er unntaket. Dette nummeret er chipnummeret nRF52823 og 21 er det eneste gyldige valget. Støtten for pfod_lp_nrf52 aktiverer imidlertid ikke tilbakestillingsnålen på nRF52832

variant.cpp -fil

Det er bare en oppføring i filen variant.cpp, g_ADigitalPinMap -matrisen som tilordner Arduino -pin -numre til nRF52832 -brikken P0.. -nålene

MERK: I NanoV2- og SKYLAB -kortene må de analoge Arduino -pinnene A0, A1… være de samme som de Arduino digitale pinnene D0, D1… så de første oppføringene i g_ADigitalPinMap MÅ kartlegges til AINx -pinnumre på nRF52832 -brikken

For de analoge inngangene som brettet ditt gjør tilgjengelig, må disse oppføringene i g_ADigitalPinMap kartlegge nRF52832 AIN0, AIN1, AIN2, etc pin -numre. dvs. AIN0 er chip pin P0.02, AIN1 er chip pin P0.03 etc se nRF52832 pin layout ovenfor.

Bruk (uint32_t) -1 for ugyldige tilordninger. SKYLAB_SKB369_Nano2 erstatningskortet har for eksempel ikke en innebygd LED, D13, så posisjonen er kartlagt til (uint32_t) -1

I pfod_lp_nrf52.zip har Redbear NanoV2, SKYLAB SKB369 og GT832E_01 varianter underkataloger bilder som viser mappene som er satt opp av variant.cpp. (Se bildene ovenfor)

Når det gjelder SKYLAB SKB369, er det mange pinner å velge mellom. Bare nok er kartlagt for å matche NanoV2. Når det gjelder GT832E_01, må alle tilgjengelige pinner kartlegges. Selv da er det bare tre (3) analoge innganger tilgjengelig i stedet for de seks (6) på NanoV2. I tillegg til dette må de to NFC-pinnene, P0.09 og P0.10, konfigureres på nytt som GPIO-er. Se Rekonfigurering av nRF52 NFC -pinner som GPIO nedenfor.

Oppdaterer boards.txt -filen

Her er SKYLAB_SKB369_Nano2 -erstatningsoppføringen i boards.txt -filen.

## SKYLAB_SKB369 Nano2 -erstatningSKYLAB_SKB369_NANO2_REPLACEMENT.name =*SKYLAB SKB369 Nano2 -erstatning

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. 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.meny.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.meny.softdevice.s132.build.ldscript = armgcc_s132_nrf52832_xxaa.ld

board.txt Innstillinger

Kommentarer - linjer som begynner med # er kommentarer.

Prefiks - hvert brett trenger et unikt prefiks for å identifisere dets verdier. Her er prefiksetSKYLAB_SKB369_NANO2_REPLACEMENT.

Navn - SKYLAB_SKB369_NANO2_REPLACEMENT.name -linjen angir navnet på dette kortet som skal vises i Arduinos bordmeny.

Last opp verktøy - SKYLAB_SKB369_NANO2_REPLACEMENT.upload -blokken angir hvilket verktøy som skal brukes for opplasting. Hvis du bruker Particle Debugger, bruk protokoll = cmsis-dap som vist ovenfor.

Bootloader - Denne linjen er den samme for alle brettene i disse boards.txt

Bygg - Bare to linjer trenger å oppdateres i denne blokken. SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant-linjen spesifiserer dette brettets katalognavn i variantunderkatalogen. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board er verdien som er lagt til ARDUINO_ og deretter definert mens koden kompileres. f.eks. -DARDUINO_SKYLAB_SKB369_Nano2replacement Dette lar deg aktivere/deaktivere deler av koden for bestemte tavler.

Lav frekvens klokke - Denne linjen, SKYLAB_SKB369_NANO2_REPLACEMENT.meny.lfclk.lfrc.build.lfclk_flags, angir kilden til lavfrekvent klokke, som brukes for lp_timer. Det er tre alternativer, -DUSE_LFXO, -DUSE_LFRC og -DUSE_LFSYNT. Det beste valget er -DUSE_LFXO, hvis kortet har en ekstern 32Khz krystall. Hvis ikke, bruk -DUSE_LFRC, som bruker en intern RC -oscillator og trekker litt mer strøm, ~ 10uA mer, og er mye mindre ganger mindre nøyaktig. Ikke bruk -DUSE_LFSYNT da dette holder brikken i gang hele tiden, noe som resulterer i mAs nåværende trekning.

Softdevice - pfod_lp_nrf52 støtter bare nRF52 -brikker og softdevice s132, så ingen endringer er nødvendig for denne blokken, annet enn prefikset.

Omkonfigurering av nRF52 NFC -pinner som GPIO -er

Vær standard på nRF52 -pinnene, P0.09 og P0.10 er konfigurert for bruk som NFC og forventes å være koblet til en NFC -antenne. Hvis du trenger å bruke disse som generelle I/O -pinner (GPIO -er), må du legge til en definere -DCONFIG_NFCT_PINS_AS_GPIOS til brettets … meny.softdevice.s132.build.extra_flags -kompilere innstillinger i boards.txt -filen.

For eksempel pfod_lp_nrf52.zip, konfigurerer GT832E_01-pinnene på nytt for bruk som I/O. GT832E_01 -delen for dette kortet, i boards.txt -filen, har følgende definisjon lagt til

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

Linkerskriptet i pfod_lp_nrf52.zip har også blitt endret for å beholde denne innstillingen og trenger ikke endres.

Trinn 7: Konklusjon

Denne opplæringen har presentert en erstatning for Redbear NanoV2 ved hjelp av en SKYLAB SKB369 -modul. En batteri-/solcelledrevet temperaturfuktighetsmonitor ble brukt som et eksempel på BLE -prosjekt med svært lav effekt i Arduino for SKYLAB -modulen. Tilførselsstrømmer på ~ 29uA oppnås ved å stille inn tilkoblingsparameterne. Dette resulterte i en myntcellebatterilevetid på CR2032 ~ 10 måneder. Lengre for myntceller og batterier med høyere kapasitet. Ved å legge til to billige solceller forlenges batterilevetiden enkelt med 50% eller mer. Et sterkt romlys eller en bordlampe er tilstrekkelig for å drive skjermen fra solcellene.

Denne opplæringen dekket også fjerning av chipbeskyttelse fra en forhåndsprogrammert nRF52 og hvordan du setter opp en ny brettdefinisjon for å matche din egen PCB/krets

Ingen Android -programmering er nødvendig. pfodApp håndterer alt dette.

Anbefalt: