Inhoudsopgave:

Easy Very Low Power BLE in Arduino Part 3 - Vervanging van Nano V2 - Rev 3: 7 stappen (met afbeeldingen)
Easy Very Low Power BLE in Arduino Part 3 - Vervanging van Nano V2 - Rev 3: 7 stappen (met afbeeldingen)

Video: Easy Very Low Power BLE in Arduino Part 3 - Vervanging van Nano V2 - Rev 3: 7 stappen (met afbeeldingen)

Video: Easy Very Low Power BLE in Arduino Part 3 - Vervanging van Nano V2 - Rev 3: 7 stappen (met afbeeldingen)
Video: SKR Pro v1.2 - TMC2226 UART with Sensorless Homing 2024, November
Anonim
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 vervanging - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 vervanging - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 vervanging - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 vervanging - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 vervanging - Rev 3
Easy Very Low Power BLE in Arduino Part 3 - Nano V2 vervanging - Rev 3

Update: 7 april 2019 – Rev 3 van lp_BLE_TempHumidity, voegt datum-/tijdplots toe, met behulp van pfodApp V3.0.362+, en automatische beperking bij het verzenden van gegevens

Update: 24 maart 2019 – Rev 2 van lp_BLE_TempHumidity, voegt meer plotopties en i2c_ClearBus toe, voegt GT832E_01-ondersteuning toe

Invoering

Deze tutorial, A Redbear Nano V2 Replacement, is deel 3 van 3. Dit is revisie 2 van dit project. Revisie 2 PCB bevat montage voor de knoopcel en de sensor, vereenvoudigt de constructie en verbetert de luchtstroom rond de sensor terwijl deze wordt afgeschermd van direct zonlicht. Revisie 1 is hier.

Deel 1 - Het bouwen van BLE-apparaten met een zeer laag vermogen gemakkelijk gemaakt met Arduino-covers om Arduino in te stellen voor het coderen van nRF52-apparaten met laag vermogen, de programmeermodule en het meten van de voedingsstroom. Het omvat ook gespecialiseerde timers en comparators met laag vermogen en debounced-ingangen en het gebruik van pfodApp om verbinding te maken met het nRF52-apparaat en het te bedienen.

Deel 2 - Een temperatuur-vochtigheidsmonitor met een zeer laag stroomverbruik dekt af met een Redbear Nano V2-module en een Si7021-temperatuur-/vochtigheidssensor om een batterij / zonnemonitor met laag vermogen te bouwen. Het omvat ook het aanpassen van de Si7021-bibliotheek om een laag stroomverbruik te hebben, het afstemmen van het BLE-apparaat om het stroomverbruik te verminderen tot <29uA en het ontwerpen van een aangepast temperatuur-/vochtigheidsdisplay voor uw mobiel.

Deel 3 - Een Redbear Nano V2-vervanging, deze dekt het gebruik van andere op nRF52 gebaseerde modules in plaats van de Nano V2. Het omvat het selecteren van voedingscomponenten, constructie, het verwijderen van de programmeerbeveiliging van de nRF52-chip, het gebruik van NFC-pinnen als normale GPIO en het definiëren van een nieuw nRF52-bord in Arduino.

Deze instructable is een praktische toepassing van Part 1 Building Very Low Power BLE-apparaten, gemakkelijk gemaakt met Arduino door een Very Low Power BLE-temperatuur- en vochtigheidsmonitor te bouwen met behulp van een SKYLAB SBK369-bord als Nano V2-vervanging. In deze zelfstudie wordt beschreven hoe u een nieuwe kaartdefinitie maakt en hoe u de nRF52-programmeerbeveiliging verwijdert zodat deze opnieuw kan worden geprogrammeerd. Deze tutorial gebruikt dezelfde schets als deel 2 met dezelfde afgestemde BLE-parameters voor een laag stroomverbruik en kan alleen worden gevoed door batterij OF batterij + zonne- of zonne-energie. De afstemming van BLE-parameters voor laag vermogen werd behandeld in deel 2

Rev 3 van lp_BLE_TempHumidity plot de gegevens tegen datum en tijd met alleen de Arduino millis(). Zie Arduino-datum en -tijd met millis() en pfodApp met de nieuwste versie van pfodApp (V3.0.362+).

Rev 4 van pfod_lp_nrf52.zip ondersteunt ook de GT832E_01-module en deze tutorial behandelt het gebruik van de NFC nRF52-pinnen als standaard GPIO's.

De hier gebouwde monitor zal jarenlang werken op knoopcel of 2 x AAA-batterijen, zelfs langer met zonne-ondersteuning. De monitor geeft niet alleen de huidige temperatuur en vochtigheid weer, maar slaat ook de laatste 36 uur van 10 minuten en de laatste 10 dagen uurmetingen op. Deze kunnen in kaart worden gebracht op uw Android-mobiel en de waarden worden opgeslagen in een logbestand. Er is geen Android-programmering vereist, pfodApp regelt dat allemaal. De Android-weergave en -grafiek worden volledig bestuurd door uw Arduino-schets, zodat u deze naar wens kunt aanpassen.

Deel 2 gebruikte een Redbear Nano V2-bord voor de nRF52832 BLE-component. Dit project vervangt dat door een goedkoper SKYLAB SKB369-bord. Net als in deel 2 wordt een Sparkfun Si7021 breakout board gebruikt voor de temperatuur / vochtigheidssensor. Bij de Si7021 wordt een aangepaste low-power bibliotheek gebruikt.

Stap 1: Waarom een Nano V2-vervanging?

i) De Nano V2 was een aantal maanden uit productie en lijkt niet in de Particle.io-reeks te passen, dus het is niet duidelijk hoe lang deze beschikbaar zal zijn.

ii) De Nano V2 is duurder. Het heeft echter ook extra functies. Zie onder.

iii) De Nano V2 heeft aan beide zijden componenten waardoor hij een hoger profiel heeft en moeilijker te monteren is.

iv) De Nano V2 heeft een beperkt aantal I/O-pinnen beschikbaar en het gebruik van D6 tot D10 vereist losse kabels.

Hoewel het Nano V2-bord duurder is dan het SKYLAB SKB369-bord, ~US17 versus ~US5, heeft de Nano V2 meer functies. De Nano V2 bevat een 3.3V-regelaar en voedingscondensatoren, extra componenten voor het gebruik van de nRF52 DC/DC-converteroptie, een chipantenne en een uFL SMT-antenneconnector.

Een ander alternatief is de GT832E_01-module die wordt gebruikt door www.homesmartmesh.com. Rev 4 van pfod_lp_nrf52.zip ondersteunt ook het programmeren van de GT832E_01-module. De SKYLAB SKB369 en de GT832E_01 zijn verkrijgbaar via

Redbear (Particle.io) heeft ook een kale module zonder 3V3-regelaar, DC/DC-componenten of 32Khz-kristalcomponenten.

Overzicht

Dit project heeft 4 relatieve onafhankelijke delen: -

Componentselectie en constructie De nRF52-coderingsbeschermingsvlag verwijderen en de schets programmeren Een nieuwe Arduino nRF52-kaartdefinitie maken De nRF52 NFC-pinnen opnieuw configureren als GPIO's

Stap 2: Componentselectie en constructie

Componentselectie

Naast de nRF52832- en Si7021-componenten die in deel 2 zijn geselecteerd, voegt dit project een 3.3V-regelaar en voedingscondensatoren toe.

De component van de spanningsregelaar

De hier gebruikte regelaar is MC87LC33-NRT. Hij kan tot 12V-ingangen aan en heeft een ruststroom van <3,6uA, typisch 1,1uA. De Nano V2 die een TLV704-regelaar gebruikt, heeft een iets hogere ruststroom, typisch 3,4uA en kan hogere ingangsspanningen aan, tot 24V. De MC87LC33-NRT werd in plaats daarvan gekozen omdat de datasheet aangeeft hoe deze reageert als de ingangsspanning onder 3,3 V daalt, terwijl de TLV704-datasheet dat niet doet.

De TLV704 specificeert een ingangsspanning van minimaal 2,5V en het is niet duidelijk uit de datasheet wat er daaronder zal gebeuren. De nRF52832 zal naar 1,7V lopen en de Si7023 naar 1,9V. De MC87LC33-NRT daarentegen specificeert ingangs-/uitgangsspanningsverschillen tot 0 V voor lage stromen (Fig 18 van de datasheet). Dus gezien de keuze aan componenten, werd de MC87LC33-NRT gekozen omdat deze de gespecificeerde prestaties heeft.

Voedingscondensatoren

De MC87LC33-NRT-regelaar heeft enkele voedingscondensatoren nodig voor stabiliteit en respons. Een uitgangscondensator > 0.1uF wordt aanbevolen op de datasheet. De SKYLAB SBK369 specificeert ook 10uF/0.1uF condensatoren op de voeding dicht bij het bord. Grotere condensatoren helpen bij het leveren van de stroompieken van de nRF52 TX. Hier werden 4 x 22uF 25V en 3 x 0.1uF 50V keramische condensatoren gebruikt. Een condensator van 22uF en een 0.1uF werd dicht bij de SKYLAB SBK369 geplaatst, een 0.1uF werd dicht bij de uitgang van de MC87LC33-NRT geplaatst om stabiliteit te garanderen en een 22uF en 0.1uF werden op de ingang van de MC87LC33-NRT geplaatst en een verder werden 2 x 22uF condensatoren over de Vin/GND-pinnen gesoldeerd als een verder stroomreservoir. Ter vergelijking: het NanoV2-bord heeft een 22uF / 0.1uF op de ingang van de TLV704-regelaar en een 0.1uF op de uitgang.

De extra stroomreservoircondensatoren werden op de ingang van de 3.3V-regelaar geïnstalleerd, zodat ze bij gebruik met zonnecellen naar een hogere spanning zouden laden. Opladen naar een hogere spanning komt neer op het opslaan van meer stroom om de Tx-pieken te leveren.

Keramische X5R-condensatoren worden gebruikt omdat ze een lage serieweerstand en een lage lekstroom hebben. De weerstand is typisch 100, 000MΩ of 1000MΩ – µF, wat altijd minder is. Dus voor 22uF hebben we 22000MΩ, d.w.z. 0,15nA lekkage bij 3,3V of 0,6nA voor de vier 22uF condensatoren. Dat is te verwaarlozen. Ter vergelijking Lage ESR, lage lekkage Panasonic elektrolytische condensatoren hebben lekstromen van <0,01CV. Dus voor een 22uF 16V condensator is de lekkage <10uA. Let op: Dit is de lekkage bij de nominale spanning, in dit geval 16V. De lekkage is lager bij lagere spanningen, d.w.z. <2,2uA bij 3,3V.

Onderdelen lijst

Geschatte kosten per eenheid per december 2018, ~ US $ 61, exclusief verzendkosten en de programmeur uit deel 1

  • SKYLAB SKB369 ~US$5 bijv. Aliexpress
  • Sparkfun Si7021 breakout-bord ~ US $ 8
  • 2 x 53mm x 30mm 0,15W 5V zonnecellen b.v. Overvliegen ~US$1.10
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~US $ 25 voor 5 korting www.pcbcart.com
  • 1 x MC78LC33 3.3V regelaar, b.v. Digikey MC78LC33NTRGOSCT-ND ~US$1
  • 2 x 0.1uF 50V keramiek C1608X5R1H104K080A b.v. Digikey 445-7456-1-ND ~US$0.3
  • 4 x 22uF 16V keramiek GRM21BR61C226ME44L b.v. Digikey 490-10747-1-ND ~US$2
  • 1 x BAT54CW, b.v. Digikey 497-12749-1-ND ~ US $ 0,5
  • 1 x 470R 0,5W 1% weerstand b.v. Digikey 541-470TCT-ND ~US$0,25
  • 1 x 10V 1W zener SMAZ10-13-F b.v. Digikey SMAZ10-FDICT-ND ~ US $ 0,5
  • 3 mm x 12 mm nylon schroeven, b.v. Jaycar HP0140 ~AUD$3
  • 3 mm x 12 mm nylon moeren, b.v. Jaycar HP0146 ~AUD$3
  • Scotch permanente montagetape Cat 4010 b.v. van Amazon ~ US $ 6,6
  • CR2032 batterijhouder, b.v. HU2032-LF ~ US $ 1,5
  • CR2032-batterij ~ US $ 1
  • Perspex plaat, 3,5 mm en 8 mm
  • pfodApp ~US$10
  • Soldeerpasta b.v. Jaycar NS-3046 ~AUD$13

Stap 3: constructie

Bouw
Bouw
Bouw
Bouw
Bouw
Bouw

Het project is gebouwd op een kleine PCB. De PCB is vervaardigd door pcbcart.com van deze Gerber-bestanden, SKYLAB_TempHumiditySensor_R2.zip De PCB bootst de Nano V2-pin-out na en is algemeen genoeg om voor andere BLE-projecten te worden gebruikt.

Dit is het schema (pdf-versie)

Soldeer eerst de SMD-componenten en monteer vervolgens het SKYLAB SKB369-bord

Bijna alle componenten zijn Surface Mount Devices (SMD). De condensatoren en IC's kunnen moeilijk met de hand te solderen zijn. De voorgestelde methode is om de PCB in een bankschroef te houden en een kleine hoeveelheid soldeerpasta op de pads aan te brengen en de SMD-componenten te plaatsen, behalve het SKB369-bord op de PCB. Gebruik vervolgens een heteluchtpistool, breng warmte aan op de onderkant van de printplaat totdat de soldeerpasta smelt en maak dan een snelle pass over de bovenkant van het bord en zorg ervoor dat u de componenten niet wegblaast. Werk ten slotte de componenten bij met een soldeerbout met kleine punt. Wees voorzichtig met de condensatoren en weerstand, want het is gemakkelijk om beide uiteinden te smelten en het onderdeel los te laten tijdens het solderen van het ene uiteinde.

Deze revisie voegt extra 22uF 16V keramische condensatoren toe. Deze extra condensatoren verminderen de stroompieken die uit de batterij worden getrokken en verminderen ook de spanningsdips wanneer ze worden gevoed door de zonnecellen. Zolang de spanning van de zonnecellen boven de accuspanning blijft, wordt er geen stroom uit de accu getrokken.

Nadat de SMD-componenten zijn gemonteerd, kunt u het SKYLAB SKB369-bord solderen. Er zijn twee testpuntgaten aan één kant van de SKB369-lipjes. Gebruik twee pinnen in een kartonnen basis om het SKB369-bord te positioneren en lijn de pinnen zorgvuldig uit. (Zie de voorbeeldfoto hierboven met behulp van de Revisie 1-printplaat) Soldeer vervolgens een pin van de andere kant om het bord op zijn plaats te houden voordat je de andere pinnen soldeert.

Let op de Gnd-verbindingsdraad van de CLK naar GND in het voltooide onderdeel. Dit wordt NA het programmeren geïnstalleerd om te voorkomen dat ruis op de CLK-ingang de nRF52-chip in een hoge stroom debug-modus activeert

Montagekoffer

De montagekoffer is gemaakt van twee stukken perspex, 110 mm x 35 mm, 3 mm dik. Het 3,5 mm stuk onder de zonnecellen werd getikt om de 3 mm nylon schroeven te nemen. Deze herziene constructie is eenvoudiger dan Rev 1 en verbetert de luchtstroom rond de sensor. De extra gaten aan elk uiteinde zijn voor montage, bijvoorbeeld met kabelbinders.

Stap 4: De NRF52-coderingsbeschermingsvlag verwijderen

De NRF52-coderingsbeschermingsvlag verwijderen
De NRF52-coderingsbeschermingsvlag verwijderen
De NRF52-coderingsbeschermingsvlag verwijderen
De NRF52-coderingsbeschermingsvlag verwijderen
De NRF52-coderingsbeschermingsvlag verwijderen
De NRF52-coderingsbeschermingsvlag verwijderen

Sluit het temperatuur-/vochtigheidsbord aan op de programmer beschreven in deel 1 zoals hierboven weergegeven.

Als de zonnecellen en batterijen zijn losgekoppeld, zijn Vin en Gnd aangesloten op de Vdd en Gnd van de programmeur (de gele en groene draden) en zijn de SWCLK en SWDIO aangesloten op de Clk en SIO van het hoofdbord van de programmer (de witte en grijze draden)

nRF52 programmabeveiliging verwijderen

Van Nordic Semi - Debug and Trace-pagina DAP - Debug Access Port. Een externe debugger heeft via de DAP toegang tot het apparaat. De DAP implementeert een standaard ARM® CoreSight™ Serial Wire Debug Port (SW-DP). De SW-DP implementeert het Serial Wire Debug-protocol (SWD) dat een twee-pins seriële interface is, SWDCLK en SWDIO

Belangrijk: De SWDIO-lijn heeft een interne pull-up-weerstand. De SWDCLK-lijn heeft een interne pull-down-weerstand.

CTRL-AP - Toegangspoort controleren. De Control Access Port (CTRL-AP) is een aangepaste toegangspoort die controle over het apparaat mogelijk maakt, zelfs als de andere toegangspoorten in de DAP worden uitgeschakeld door de toegangspoortbeveiliging. Toegangspoortbeveiliging blokkeert de debugger van lees- en schrijftoegang tot alle CPU-registers en aan het geheugen toegewezen adressen. Schakel de toegangspoortbeveiliging uit. Toegangspoortbeveiliging kan alleen worden uitgeschakeld door een ERASEALL-opdracht te geven via CTRL-AP. Met deze opdracht worden de Flash, UICR en RAM gewist.

Selecteer CMSIS-DAP als programmer voor Particle's Debugger en selecteer nRF5 Flash SoftDevice

Als de flash werkt, dan is dat OK, maar vaak zijn modules beveiligd tegen herprogrammering en krijg je deze foutmelding in het Arduino-venster

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10:13)Gelicentieerd onder GNU GPL v2 Lees voor bugrapporten https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: slechts één transportoptie; autoselect 'swd' adapter snelheid: 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Ondersteunde Info: CMSIS-DAP: Interface geïnitialiseerd (SWD) Info: CMSIS-DAP: FW-versie = 1.10 Info: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interface gereed Info: snelheidsverzoek verlagen: 10000kHz tot 5000kHz maximum Info: kloksnelheid 10000 kHz Info: SWD IDCODE 0x2ba01477 Fout: Kon MEM niet vinden -AP om de kern te controleren Fout: Doel nog niet onderzocht Fout tijdens het knipperen van SoftDevice.

In dat geval moet u het ERASEALL-commandoregister in de nRF52 instellen om het geheugen te wissen en het apparaat weer programmeerbaar te maken. De versie van openOCD die bij sandeepmistry nRF52 wordt geleverd, bevat niet het apreg-commando dat nodig is om naar het ERASEALL-commandoregister te schrijven, dus u moet een latere versie installeren.

Installeer OpenOCD-versie OpenOCD-2081130 of hoger. De voorgecompileerde Windows-versie is beschikbaar op https://gnutoolchains.com/arm-eabi/openocd/ De nieuwste code is beschikbaar op

Open een opdrachtprompt en verander dir naar de OpenOCD-installatiemap en voer de opdracht in

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

Het antwoord is:

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]Gelicentieerd onder GNU GPL v2 Lees voor bugrapporten https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: automatisch selecteren van eerste beschikbare sessietransport "swd". Gebruik ' transport select ' om te negeren. adaptersnelheid: 1000 kHz cortex_m reset_config sysresetreq Info: Luisteren op poort 6666 voor tcl-verbindingen Info: Luisteren op poort 4444 voor telnet-verbindingen Info: CMSIS-DAP: SWD Ondersteunde Info: CMSIS-DAP: FW-versie = 1.10 Info: CMSIS-DAP: Interface geïnitialiseerd (SWD) Info: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interface gereed Info: kloksnelheid 1000 kHz Info: SWD DPIDR 0x2ba01477 Fout: Kon MEM-AP niet vinden om de kern te besturen Info: Luisteren op poort 3333 voor gdb-verbindingen

Open vervolgens een terminalvenster, b.v. TeraTerm (Windows) of CoolTerm (Mac) en maak verbinding met 127.0.0.1 poort 4444

Het telnet-venster toont een > en de opdrachtprompt toont Info: accepteren 'telnet'-verbinding op tcp/4444

In het telnet-venster (d.w.z. TeraTerm) typenrf52.dap apreg 1 0x04 geeft dit 0x00000000 aan dat de chip beveiligd is. Typ vervolgens rf52.dap apreg 1 0x04 0x01 en dan nrf52.dap apreg 1 0x04dit geeft 0x00000001 als resultaat, wat aangeeft dat de chip nu is ingesteld op ERASEALL bij de volgende herstart.

Sluit de telnet-verbinding en gebruik ook Ctrl-C om het openOCD-programma in de opdrachtprompt af te sluiten en schakel vervolgens de nRF52-module uit en deze is nu klaar om te programmeren.

Probeer nu opnieuw het softdevice te flashen.

U kunt nu de nRF52-module programmeren vanuit Arduino.

Stap 5: Programmeren van de SKYLAB SKB369

Programmeren van de SKYLAB SKB369
Programmeren van de SKYLAB SKB369
Programmeren van de SKYLAB SKB369
Programmeren van de SKYLAB SKB369
Programmeren van de SKYLAB SKB369
Programmeren van de SKYLAB SKB369

Sluit Arduino en installeer de nieuwste versie van pfod_lp_nrf52-ondersteuning opnieuw door de instructies voor hardwareondersteuning voor pfod_lp_nrf52 te volgen. De nieuwste pfod_lp_nrf52 bevat SKYLAB SKB369 Nano2 vervangende kaart. Selecteer dat als het bord en je kunt het dan programmeren met de revisie 3 van lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, zoals beschreven in deel 2.

Als de programmering mislukt. Sluit alle Arduino-vensters, verwijder de USB-kabels, start Arduino opnieuw op en sluit de USB-kabel van de programmeur weer aan en sluit de USB-voeding van de nRF52-module weer aan en probeer het opnieuw.

Maak vervolgens verbinding via pfodApp om de huidige en historische temperatuur en vochtigheid weer te geven. Nadat u de historische plot hebt weergegeven, worden de metingen, met millisecondentijdstempels, opgeslagen in het logbestand op uw mobiel en ook beschikbaar in het scherm met onbewerkte gegevens.

Het logbestand bevat ook de extra gegevens die nodig zijn om de datum- en tijdgrafieken in een spreadsheet opnieuw te maken. Zie Arduino-datum en -tijd met millis() en pfodApp voor de details

Stap 6: Een nieuwe Arduino NRF52-kaartdefinitie maken

Een nieuwe Arduino NRF52-kaartdefinitie maken
Een nieuwe Arduino NRF52-kaartdefinitie maken
Een nieuwe Arduino NRF52-kaartdefinitie maken
Een nieuwe Arduino NRF52-kaartdefinitie maken
Een nieuwe Arduino NRF52-kaartdefinitie maken
Een nieuwe Arduino NRF52-kaartdefinitie maken
Een nieuwe Arduino NRF52-kaartdefinitie maken
Een nieuwe Arduino NRF52-kaartdefinitie maken

Om een nieuw nRF52-bord te ondersteunen, moet je a) een nieuwe map toevoegen onder de variantenmap met de bordbestanden en b) het boards.txt-bestand bewerken om het nieuwe bord aan Arduino toe te voegen.

Een nieuwe nRF52-kaartvariant toevoegen

Zoals beschreven in Deel 1, De pfod_lp_nrf52 hardware-ondersteuning installeren, zoekt u de hardware-submap van het sandeepmistry-pakket dat u hebt bijgewerkt met de pfod_lp_nrf52-ondersteuning. Open de subdirectory \hardware\nRF5\0.6.0\variants en maak een nieuwe directory aan voor uw nieuwe bord, bijv. SKYLAB_SKB369_Nano2replacement. Maak in de nieuwe directory \hardware\nRF5\0.6.0\variants\SKYLAB_SKB369_Nano2replacement drie bestanden variant.h, variant.cpp en pins_arduino.h Je kunt ze kopiëren uit een van de andere directory's voor bordvarianten. Voor de SKYLAB_SKB369_Nano2replacement heb ik in eerste instantie de bestanden gekopieerd van de RedBear_BLENano2-variant.

pins_arduino.h-bestand

Het pins_arduino.h-bestand hoeft niet te worden gewijzigd. Het bevat alleen het bestand variant.h

variant.h-bestand

Bewerk het variant.h-bestand om het totale aantal pinnen te definiëren dat uw bord zal hebben, PINS_COUNT

OPMERKING: In het sandeepmistry-pakket worden NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS en NUM_ANALOG_OUTPUTS instellingen genegeerd

Als je board meer of minder analoge pinnen beschikbaar maakt, werk dan de /* Analog Pins */-sectie van het bestand varianten.h bij.

OPMERKING: Voor de NanoV2- en SKYLAB-kaarten zijn de analoge pinnen toegewezen aan de digitale pinnen A0 == D0 enz

Dit is niet essentieel. U kunt de analoge ingangen toewijzen aan elke handige Arduino-pin. Zie dan blue/variant.h en blue/variant.cpp bestanden voor een voorbeeld.

De nRF52832-chip heeft 8 analoge ingangspinnen, maar het SKYLAB_SKB369_Nano2replacement-bord maakt er slechts 6 beschikbaar die passen bij de Nano2.

Alle pinnummers, behalve de RESET_PIN, in het variant.h-bestand zijn Arduino-pinnummers. Dat is #define PIN_A0 (0) houdt in dat D0 in de Arduino-schets dezelfde pin is als A0. De RESET_PIN is de uitzondering. Dat nummer is het pinnummer van de nRF52823 chip en 21 is de enige geldige keuze. De pfod_lp_nrf52-ondersteuning schakelt de reset-pin op de nRF52832 echter niet in

variant.cpp-bestand

Er is slechts één item in het variant.cpp-bestand, de g_ADigitalPinMap-array die Arduino-pinnummers toewijst aan de nRF52832-chip P0..-pinnen

OPMERKING: In de NanoV2- en SKYLAB-kaarten zijn de Arduino-analoge pinnen A0, A1 … hetzelfde als de Arduino digitale pinnen D0, D1 … dus de eerste vermeldingen in g_ADigitalPinMap MOETEN worden toegewezen aan AINx-pinnummers op de nRF52832-chip

Voor de analoge ingangen die uw bord beschikbaar maakt, moeten die vermeldingen in g_ADigitalPinMap pinnummers van nRF52832 AIN0, AIN1, AIN2, enz. toewijzen. d.w.z. AIN0 is chippen P0.02, AIN1 is chippen P0.03 enz. Zie de nRF52832-pinlay-out hierboven.

Gebruik (uint32_t)-1 voor ongeldige toewijzingen. Het SKYLAB_SKB369_Nano2replacement-bord heeft bijvoorbeeld geen ingebouwde LED, D13, dus de positie is toegewezen aan (uint32_t)-1

In pfod_lp_nrf52.zip hebben de submappen Redbear NanoV2, SKYLAB SKB369 en GT832E_01 varianten afbeeldingen die de toewijzingen tonen die zijn ingesteld door variant.cpp. (Zie de afbeeldingen hierboven)

In het geval van de SKYLAB SKB369 zijn er tal van pinnen om uit te kiezen. Er zijn slechts genoeg in kaart gebracht om overeen te komen met de NanoV2. In het geval van de GT832E_01 moeten alle beschikbare pinnen in kaart worden gebracht. Zelfs dan zijn er maar drie (3) analoge ingangen beschikbaar in plaats van de zes (6) op de NanoV2. Daarnaast moeten de twee NFC-pinnen, P0.09 en P0.10, opnieuw worden geconfigureerd als GPIO's. Zie nRF52 NFC-pinnen opnieuw configureren als GPIO's hieronder.

Het boards.txt-bestand bijwerken

Hier is het SKYLAB_SKB369_Nano2replacement-item in het boards.txt-bestand.

## SKYLAB_SKB369 Nano2-vervangingSKYLAB_SKB369_NANO2_REPLACEMENT.name=*SKYLAB SKB369 Nano2-vervanging

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_2SK_369_NA 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. DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript=armgcc_s132_nrf52832_xxaa.ld

board.txt Instellingen

Opmerkingen – regels die beginnen met # zijn opmerkingen.

Voorvoegsel – elk bord heeft een uniek voorvoegsel nodig om de waarden te identificeren. Hier is het voorvoegsel SKYLAB_SKB369_NANO2_REPLACEMENT.

Naam - De regel SKYLAB_SKB369_NANO2_REPLACEMENT.name specificeert de naam van dit bord dat moet worden weergegeven in het bordmenu van Arduino.

Uploadtool – Het SKYLAB_SKB369_NANO2_REPLACEMENT.upload-blok specificeert welke tool moet worden gebruikt voor het uploaden. Als u de Particle Debugger gebruikt, gebruik dan protocol=cmsis-dap zoals hierboven weergegeven.

Bootloader – Deze regel is hetzelfde voor alle boards in deze boards.txt

Build - Slechts twee regels hoeven in dit blok te worden bijgewerkt. De regel SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant specificeert de mapnaam van dit bord in de variant-submap. Het SKYLAB_SKB369_NANO2_REPLACEMENT.build.board is de waarde toegevoegd aan ARDUINO_ en vervolgens gedefinieerd tijdens het compileren van de code. bijv. -DARDUINO_SKYLAB_SKB369_Nano2replacement Hiermee kunt u delen van de code voor specifieke boards in-/uitschakelen.

Low Freq Clock – Deze regel, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, specificeert de bron van de laagfrequente klok die wordt gebruikt voor de lp_timer. Er zijn drie opties, -DUSE_LFXO, -DUSE_LFRC en -DUSE_LFSYNT. De beste keuze is -DUSE_LFXO, als het bord een extern 32Khz-kristal heeft. Zo niet, gebruik dan -DUSE_LFRC, dat een interne RC-oscillator gebruikt en iets meer stroom trekt, ~10uA meer, en veel minder keer minder nauwkeurig is. Gebruik de -DUSE_LFSYNT niet, want hierdoor blijft de chip continu draaien, wat resulteert in een stroomafname van mAs.

Softdevice – pfod_lp_nrf52 ondersteunt alleen nRF52-chips en softdevice s132, dus er zijn geen wijzigingen nodig voor dit blok, behalve het voorvoegsel.

nRF52 NFC-pinnen opnieuw configureren als GPIO's

Standaard zijn de nRF52-pinnen, P0.09 en P0.10 zijn geconfigureerd voor gebruik als NFC en verwachten verbonden te zijn met een NFC-antenne. Als u deze als algemene I/O-pinnen (GPIO's) moet gebruiken, moet u een definitie, -DCONFIG_NFCT_PINS_AS_GPIOS, toevoegen aan de …menu.softdevice.s132.build.extra_flags compileerinstellingen van dat bord in het boards.txt-bestand.

Bijvoorbeeld pfod_lp_nrf52.zip, configureert de GT832E_01-pinnen opnieuw voor gebruik als I/O. De sectie GT832E_01 voor dit bord, in het bestand boards.txt, heeft de volgende definitie toegevoegd:

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

Het linkerscript in pfod_lp_nrf52.zip is ook aangepast om deze instelling te behouden en hoeft niet te worden gewijzigd.

Stap 7: Conclusie

Deze tutorial heeft een vervanging voor de Redbear NanoV2 gepresenteerd met behulp van een SKYLAB SKB369-module. Een batterij/op zonne-energie werkende temperatuurvochtigheidsmonitor werd gebruikt als een voorbeeld van een zeer laag vermogen BLE-project in Arduino voor de SKYLAB-module. Voedingsstromen van ~29uA werden bereikt door de verbindingsparameters af te stemmen. Dit resulteerde in een CR2032 knoopcelbatterij met een levensduur van ~10 maanden. Langer voor knoopcellen en batterijen met een hogere capaciteit. Het toevoegen van twee goedkope zonnecellen verlengde de levensduur van de batterij gemakkelijk met 50% of meer. Een helder kamerlicht of een bureaulamp is voldoende om de monitor van stroom te voorzien via de zonnecellen.

Deze tutorial behandelde ook het verwijderen van chipbescherming van een voorgeprogrammeerde nRF52 en hoe je een nieuwe kaartdefinitie instelt die past bij je eigen PCB/circuit

Er is geen Android-programmering vereist. pfodApp regelt dat allemaal.

Aanbevolen: