Innehållsförteckning:

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

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

Video: Easy Very Low Power BLE in Arduino Part 3 - Nano V2 Replacement - Rev 3: 7 Steps (with Pictures)
Video: When The Quiet Kid Does Your Homework 💀 #electronics #arduino #engineering 2024, November
Anonim
Enkel mycket låg effekt BLE i Arduino del 3 - Nano V2 -ersättning - Rev 3
Enkel mycket låg effekt BLE i Arduino del 3 - Nano V2 -ersättning - Rev 3
Enkel mycket låg effekt BLE i Arduino del 3 - Nano V2 -ersättning - Rev 3
Enkel mycket låg effekt BLE i Arduino del 3 - Nano V2 -ersättning - Rev 3
Enkel mycket låg effekt BLE i Arduino del 3 - Nano V2 -ersättning - Rev 3
Enkel mycket låg effekt BLE i Arduino del 3 - Nano V2 -ersättning - Rev 3

Uppdatering: 7 april 2019 - Rev 3 av lp_BLE_TempHumidity, lägger till datum-/tidsdiagram, använder pfodApp V3.0.362+och automatisk strypning när data skickas

Uppdatering: 24 mars 2019 - Rev 2 av lp_BLE_TempHumidity, lägger till fler plotalternativ och i2c_ClearBus, lägger till stöd för GT832E_01

Introduktion

Denna handledning, A Redbear Nano V2 Replacement, är del 3 av 3. Detta är version 2 av detta projekt. Revision 2 PCB inkluderar montering för myntcellen och sensorn, förenklar konstruktionen och förbättrar luftflödet runt sensorn samtidigt som den skyddar den från direkt solljus. Revision 1 är här.

Del 1 - Att bygga BLE -enheter med mycket låg effekt enkelt med Arduino -lock som ställer in Arduino för att koda nRF52 -enheter med låg effekt, programmeringsmodulen och mäta strömmen. Den täcker också specialiserade lågeffekttimers och komparatorer och debounced ingångar och använder pfodApp för att ansluta till och styra nRF52 -enheten.

Del 2 - En mycket låg effekt temperaturfuktighetsmonitor täcker med en Redbear Nano V2 -modul och en Si7021 temperatur / fuktighetssensor för att bygga ett batteri med låg effekt / solmonitor. Det täcker också att ändra Si7021 -biblioteket till låg effekt, justera BLE -enheten för att minska dess strömförbrukning till <29uA och designa en anpassad temperatur/fuktighetsdisplay för din mobil.

Del 3 - En Redbear Nano V2 -ersättning, den här, täcker att använda andra nRF52 -baserade moduler istället för Nano V2. Det täcker val av leveranskomponenter, konstruktion, borttagning av nRF52 -chipprogrammeringsskydd, användning av NFC -stift som normalt GPIO och definiering av ett nytt nRF52 -kort i Arduino.

Denna instruerbara är en praktisk tillämpning av del 1 -byggnad med mycket låg effekt BLE -enheter som är enkla med Arduino genom att konstruera en mycket låg effekt BLE temperatur- och fuktighetsmonitor med ett SKYLAB SBK369 -kort som en Nano V2 -ersättning. Denna handledning behandlar hur du skapar en ny kortdefinition och hur du tar bort nRF52-programmeringsskyddet så att det kan programmeras om. Denna handledning använder samma skiss som del 2 med samma inställda BLE -parametrar för låg strömförbrukning och kan drivas från batteri ELLER batteri + sol eller ELLER solceller. Stämningen av BLE -parametrar för låg effekt täcktes i del 2

Rev 3 i lp_BLE_TempHumidity ritar upp data mot datum och tid med bara Arduino millis (). Se Arduino Datum och tid med millis () och pfodApp med den senaste versionen av pfodApp (V3.0.362+).

Rev 4 i pfod_lp_nrf52.zip stöder också GT832E_01 -modulen och denna handledning täcker användning av NFC nRF52 -stiften som standard GPIO: er.

Skärmen som konstruerats här kommer att fungera i flera år på Coin Cell eller 2 x AAA -batterier, ännu längre med solhjälp. Förutom att visa den aktuella temperaturen och luftfuktigheten, lagrar monitorn de senaste 36 timmarna på 10 minuter och de senaste 10 dagarna med timavläsningar. Dessa kan kartläggas på din Android -mobil och värdena sparas i en loggfil. Ingen Android -programmering krävs, pfodApp hanterar allt detta. Android -skärmen och kartläggningen styrs helt av din Arduino -skiss så att du kan anpassa den efter behov.

Del 2 använde ett Redbear Nano V2 -kort för nRF52832 BLE -komponenten. Detta projekt ersätter det med en billigare SKYLAB SKB369 -bräda. Precis som i del 2 används en Sparkfun Si7021 -brytkort för temperatur- / fuktighetssensorn. Ett modifierat lågeffektsbibliotek används med Si7021.

Steg 1: Varför en Nano V2 -ersättning?

i) Nano V2 var ur produktion under ett antal månader och verkar inte passa in i Particle.io -serien så det är inte klart hur länge den kommer att vara tillgänglig för.

ii) Nano V2 är dyrare. Men det har också extra funktioner. Se nedan.

iii) Nano V2 har komponenter på båda sidor vilket ger den en högre profil och gör det svårare att montera.

iv) Nano V2 har begränsade I/O -stift tillgängliga och för att använda D6 till D10 krävs flygande ledningar.

Även om Nano V2 -kortet är dyrare än SKYLAB SKB369 -kortet, ~ US17 kontra ~ US5, har Nano V2 fler funktioner. Nano V2 innehåller en 3.3V regulator och matningskondensatorer, extra komponenter för användning av nRF52 DC/DC -omvandlare, en chipantenn och en uFL SMT -antennkontakt.

Ett annat alternativ är GT832E_01 -modulen som används av www.homesmartmesh.com. Rev 4 i pfod_lp_nrf52.zip stöder också programmering av GT832E_01 -modulen. SKYLAB SKB369 och GT832E_01 är tillgängliga från

Redbear (Particle.io) har också en bar modul utan 3V3 -regulator, DC/DC -komponenter eller 32Khz -kristallkomponenter.

Översikt

Detta projekt har 4 relativa oberoende delar:-

Komponentval och konstruktion Ta bort nRF52 -kodningsskyddsflaggan och programmera skissen Skapa en ny Arduino nRF52 -kortdefinition Konfigurera nRF52 NFC -stift som GPIO: er

Steg 2: Val av komponenter och konstruktion

Komponentval

Förutom komponenterna nRF52832 och Si7021 som valts i del 2, lägger detta projekt till en 3.3V regulator och matningskondensatorer.

Spänningsregulatorkomponenten

Regulatorn som används här är MC87LC33-NRT. Den kan hantera upp till 12V ingångar och har en vilande ström på <3.6uA, vanligtvis 1.1uA. Nano V2 använde en TLV704 -regulator som har en något högre stillastående ström, vanligtvis 3,4uA och klarar högre ingångsspänningar, upp till 24V. MC87LC33-NRT valdes istället eftersom dess datablad specificerar hur den reagerar när ingångsspänningen faller under 3,3V där TLV704-databladet inte gör det.

TLV704 anger en ingångsspänning på minst 2,5 V och det är inte klart från databladet vad som kommer att hända nedanför. NRF52832 går ner till 1,7V och Si7023 går ner till 1,9V. MC87LC33-NRT å andra sidan specificerar ingångs-/utgångsspänningsskillnader ner till 0V för låga strömmar (Fig 18 i databladet). Så med tanke på valet av komponenter valdes MC87LC33-NRT eftersom den har den angivna prestandan.

Matningskondensatorer

MC87LC33-NRT-regulatorn behöver några matningskondensatorer för stabilitet och respons. En utgående kondensator> 0.1uF rekommenderas i databladet. SKYLAB SBK369 specificerar också 10uF/0.1uF kondensatorer på matningen nära kortet. Större kondensatorer hjälper till att leverera nRF52 TX -strömspikarna. Här användes 4 x 22uF 25V och 3 x 0.1uF 50V keramiska kondensatorer. En 22uF och en 0.1uF kondensator placerades nära SKYLAB SBK369, en 0.1uF placerades nära utgången från MC87LC33-NRT för att säkerställa stabilitet och en 22uF och 0.1uF placerades på ingången till MC87LC33-NRT och en ytterligare 2 x 22uF kondensatorer löddes över Vin/GND -stiften som en ytterligare strömreservoar. Som jämförelse har NanoV2 -kortet en 22uF / 0.1uF på ingången till TLV704 -regulatorn och en 0.1uF på dess utgång.

Extra strömreservoarkondensatorerna installerades på ingången till 3.3V regulatorn så att de skulle ladda till en högre spänning när de körs med solceller. Laddning till högre spänning motsvarar att lagra mer ström för att försörja Tx -spikarna.

Keramiska X5R -kondensatorer används eftersom de har låg seriemotstånd och låg läckström. Motståndet är vanligtvis 100, 000MΩ eller 1000MΩ - µF vilket någonsin är mindre. Så för 22uF har vi 22000MΩ, dvs 0,15nA läckage vid 3,3V eller 0,6nA för de fyra 22uF kondensatorerna. Det är försumbart. För jämförelse Låg ESR, låg läckage Panasonic elektrolytkondensatorer har läckströmmar på <0,01 CV. Så för en 22uF 16V kondensator är läckaget <10uA. Obs: Detta är läckaget vid märkspänningen, 16V i detta fall. Läckaget är lägre vid lägre spänningar, dvs <2,2uA vid 3,3V.

Reservdelar

Ungefärlig kostnad per enhet per december 2018, ~ US $ 61, exklusive frakt och programmeraren från del 1

  • SKYLAB SKB369 ~ US $ 5 t.ex. Aliexpress
  • Sparkfun Si7021 breakout board ~ US $ 8
  • 2 x 53mm x 30mm 0,15W 5V solceller t.ex. Overfly ~ 1,10 US $
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 USD för 5 rabatter på www.pcbcart.com
  • 1 x MC78LC33 3.3V regulator, t.ex. Digikey MC78LC33NTRGOSCT-ND ~ US $ 1
  • 2 x 0.1uF 50V keramik C1608X5R1H104K080A t.ex. Digikey 445-7456-1-ND ~ 0,3 US $
  • 4 x 22uF 16V keramik GRM21BR61C226ME44L t.ex. Digikey 490-10747-1-ND ~ 2 US $
  • 1 x BAT54CW, t.ex. Digikey 497-12749-1-ND ~ 0,5 US $
  • 1 x 470R 0,5W 1% motstånd t.ex. Digikey 541-470TCT-ND ~ 0,25 US $
  • 1 x 10V 1W zener SMAZ10-13-F t.ex. Digikey SMAZ10-FDICT-ND ~ 0,5 US $
  • 3 mm x 12 mm nylonskruvar, t.ex. Jaycar HP0140 ~ AUD $ 3
  • 3 mm x 12 mm nylonmuttrar, t.ex. Jaycar HP0146 ~ AUD $ 3
  • Scotch Permanent Monteringstejp Cat 4010 t.ex. från Amazon ~ 6,6 US $
  • CR2032 batterihållare, t.ex. HU2032-LF ~ 1,5 US $
  • CR2032 batteri ~ US $ 1
  • Perspex -ark, 3,5 mm och 8 mm
  • pfodApp ~ 10 USD
  • Lödpasta t.ex. Jaycar NS-3046 ~ 13 AUD

Steg 3: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Projektet är konstruerat på en liten PCB. Kretskortet tillverkades av pcbcart.com från dessa Gerber -filer, SKYLAB_TempHumiditySensor_R2.zip Kretskortet efterliknar Nano V2 -stiftet och är tillräckligt allmänt för att kunna användas för andra BLE -projekt.

Detta är schemat (pdf -version)

Löd först SMD -komponenterna och montera sedan SKYLAB SKB369 -kortet

Nästan alla komponenter är ytmonterade enheter (SMD). Kondensatorerna och IC: erna kan vara svåra att löda för hand. Den föreslagna metoden är att hålla kretskortet i en skruv och applicera en liten mängd lödpasta på dynorna och placera SMD -komponenterna, förutom SKB369 -kortet på kretskortet. Använd sedan en värmepistol, värm på undersidan av kretskortet tills lödpastan smälter och gör sedan en snabb passering över brädans överdel, var försiktig så att inte komponenterna blåses av. Slutligen rör upp komponenterna med ett litet spetslödkolv. Var försiktig med kondensatorerna och motståndet eftersom det är lätt att smälta båda ändarna och få komponenten att lossna när du lödar ena änden.

Denna översyn lägger till extra 22uF 16V keramiska kondensatorer. Dessa extra kondensatorer minskar strömspikarna från batteriet och minskar också spänningsfallet när de drivs från solcellerna. Så länge spänningen från solcellerna ligger kvar över batterispänningen så dras ingen ström från batteriet.

Efter att SMD -komponenterna har monterats kan du lödas i SKYLAB SKB369 -kortet. Det finns två testpunktshål på ena sidan av SKB369 -flikarna. Använd två stift i en kartongbas för att placera SKB369 -kortet och rikta in tapparna försiktigt. (Se exemplet ovan med hjälp av kretskortet Revision 1) Löd sedan en stift på motsatt sida för att hålla brädet på plats innan de andra stiften löds.

Notera Gnd -länkledningen från CLK till GND i den färdiga delen. Detta installeras EFTER programmering för att förhindra brus på CLK -ingången från att trigga nRF52 -chipet till ett högaktuellt felsökningsläge

Monteringsfodral

Monteringsfodralet var tillverkat av två stycken perspex, 110 mm x 35 mm, 3 mm tjocka. 3,5 mm -delen under solcellerna knackades för att ta 3 mm nylonskruvarna. Denna reviderade konstruktion är förenklare än Rev 1 och förbättrar luftflödet runt sensorn. De extra hålen i varje ände är för montering, med exempelvis kabelband.

Steg 4: Ta bort NRF52 -kodningsskyddsflaggan

Ta bort NRF52 -kodningsskyddsflaggan
Ta bort NRF52 -kodningsskyddsflaggan
Ta bort NRF52 -kodningsskyddsflaggan
Ta bort NRF52 -kodningsskyddsflaggan
Ta bort NRF52 -kodningsskyddsflaggan
Ta bort NRF52 -kodningsskyddsflaggan

Anslut temperatur-/luftfuktighetskortet till programmeraren som beskrivs i del 1 enligt ovan.

Med solcellerna och batterierna urkopplade, är Vin och Gnd anslutna till programmerarens Vdd och Gnd (de gula och gröna ledarna) och SWCLK och SWDIO ansluts till Clk och SIO på programmerarens huvudkort (de vita och gråa ledarna)

Ta bort programskyddet nRF52

Från Nordic Semi - Debug and Trace sida DAP - Debug Access Port. En extern felsökning kan komma åt enheten via DAP. DAP implementerar en standard ARM® CoreSight ™ Serial Wire Debug Port (SW-DP). SW-DP implementerar Serial Wire Debug-protokollet (SWD) som är ett tvåpoligt seriellt gränssnitt, SWDCLK och SWDIO

Viktigt: SWDIO-ledningen har ett internt dragmotstånd. SWDCLK-linjen har ett internt neddragningsmotstånd.

CTRL -AP - Kontrollåtkomstport. Kontrollåtkomstporten (CTRL-AP) är en anpassad åtkomstport som gör det möjligt att styra enheten även om de andra åtkomstportarna i DAP inaktiveras av åtkomstportskyddet. Åtkomstportskydd blockerar felsökaren från läs- och skrivåtkomst till alla CPU-register och minneskartade adresser. Inaktivera åtkomstportskydd. Åtkomstportskydd kan endast inaktiveras genom att utfärda ett ERASEALL-kommando via CTRL-AP. Detta kommando raderar Flash, UICR och RAM.

Välj CMSIS-DAP som programmerare för Particle's Debugger och välj nRF5 Flash SoftDevice

Om blixten fungerar är det OK, men ofta har moduler skyddats mot omprogrammering och du får detta felmeddelande i Arduino-fönstret

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Licensierad enligt GNU GPL v2 För buggrapporter, läs https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: endast ett transportalternativ; autoselektera 'swd' adapterhastighet: 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Supportad information: CMSIS-DAP: Interface Initialized (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änssnittsklar Info: reducera hastighetsbegäran: 10000kHz till 5000kHz maximal Info: klockhastighet 10000 kHz Info: SWD IDCODE 0x2ba01477 Fel: Kunde inte hitta MEM -AP för att kontrollera kärnfelet: Mål inte undersökt ännu Fel vid blinkande SoftDevice.

I så fall måste du ställa in kommandoregistret ERASEALL i nRF52 för att rensa minnet och göra enheten programmerbar igen. Den version av openOCD som levereras med sandeepmistry nRF52 innehåller inte kommandot apreg som behövs för att skriva till kommandoregistret ERASEALL så du måste installera en senare version.

Installera OpenOCD-versionen OpenOCD-20181130 eller högre. Windows förkompilerad version är tillgänglig från https://gnutoolchains.com/arm-eabi/openocd/ Den senaste koden är tillgänglig från

Öppna en kommandotolk och ändra dir till OpenOCD -installationskatalogen och ange kommandot

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

Svaret är

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] Licensierad under GNU GPL v2 För buggrapporter, läs https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: automatiskt val av första tillgängliga sessionstransport "swd". För att åsidosätta använd 'transport välj'. adapterhastighet: 1000 kHz cortex_m reset_config sysresetreq Info: Lyssnar på port 6666 för tcl-anslutningar Info: Lyssnar på port 4444 för telnetanslutningar Info: CMSIS-DAP: SWD Supportad information: CMSIS-DAP: FW Version = 1.10 Info: CMSIS-DAP: Gränssnitt initierat (SWD) Info: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Gränssnittsklar information: klockhastighet 1000 kHz Info: SWD DPIDR 0x2ba01477 Fel: Kunde inte hitta MEM-AP för att styra kärnan Info: Lyssnar på port 3333 för gdb-anslutningar

Öppna sedan ett terminalfönster t.ex. TeraTerm (Windows) eller CoolTerm (Mac) och anslut till 127.0.0.1 port 4444

Telnet -fönstret visar en> och kommandotolken visar Info: accepterar "telnet" -anslutning på tcp/4444

I telnet -fönstret (dvs. TeraTerm) typenrf52.dap apreg 1 0x04 detta returnerar 0x00000000 som visar att chippet är skyddat. Därefter returnerar typenrf52.dap apreg 1 0x04 0x01och thennrf52.dap apreg 1 0x04 detta 0x00000001 visar att chippet nu är inställt på ERASEALL vid nästa omstart.

Stäng telnet-anslutningen och använd också Ctrl-C för att avsluta openOCD-programmet i kommandotolken och sedan slå av nRF52-modulen och den är nu redo att programmera.

Försök nu igen med att blinka den mjuka enheten.

Du kan nu programmera nRF52 -modulen från Arduino.

Steg 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

Stäng Arduino och installera om den senaste versionen av supporten för pfod_lp_nrf52 genom att följa anvisningarna för Installera pfod_lp_nrf52 maskinvarusupport. Den senaste pfod_lp_nrf52 innehåller SKYLAB SKB369 Nano2 ersättningskort. Välj det som tavlan och du kan sedan programmera det med version 3 av lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, som beskrivs i del 2.

Om programmeringen misslyckas. Stäng alla Arduino -fönster, ta bort USB -kablarna, starta om Arduino och koppla in programmerarens USB -kabel igen och anslut nRF52 -modulens USB -försörjning igen och försök igen.

Anslut sedan via pfodApp för att visa aktuell och historisk temperatur och luftfuktighet. När du har visat den historiska tomten sparas avläsningarna, med tidsstämplar på millisekunder, i loggfilen på din mobil och är också tillgängliga på rådata -skärmen.

Loggfilen innehåller också de extra data som behövs för att återskapa datum- och tidsdiagrammen i ett kalkylblad. Se Arduino Datum och tid med millis () och pfodApp för mer information

Steg 6: Skapa en ny Arduino NRF52 Board Definition

Skapa en ny Arduino NRF52 Board Definition
Skapa en ny Arduino NRF52 Board Definition
Skapa en ny Arduino NRF52 Board Definition
Skapa en ny Arduino NRF52 Board Definition
Skapa en ny Arduino NRF52 Board Definition
Skapa en ny Arduino NRF52 Board Definition
Skapa en ny Arduino NRF52 Board Definition
Skapa en ny Arduino NRF52 Board Definition

För att stödja ett nytt nRF52 -kort måste du a) lägga till en ny katalog under varianter -katalogen med kortfilerna och b) redigera boards.txt -filen för att lägga till det nya kortet i Arduino.

Lägger till en ny nRF52 -kortvariant

Som beskrivs i del 1, Installera maskinvarustödet pfod_lp_nrf52, hitta maskinvaruunderkatalogen för sandeepmistry-paketet som du har uppdaterat med stödet pfod_lp_nrf52. Öppna undermappen / hardware / nRF5 / 0.6.0 / varianter och skapa en ny katalog för ditt nya kort, t.ex. SKYLAB_SKB369_Nano2replacement I den nya / hardware / nRF5 / 0.6.0 / varianter / SKYLAB_SKB369_Nano2replacement-katalogen skapar du tre filer variant.h, variant.cpp och pins_arduino.h Du kan kopiera dem från andra kataloger på kortvarianterna. För SKYLAB_SKB369_Nano2 -ersättningen kopierade jag initialt filerna från RedBear_BLENano2 -varianten.

pins_arduino.h -fil

Filen pins_arduino.h behöver inte ändras. Den innehåller bara filen variant.h

variant.h -fil

Redigera filen variant.h för att definiera det totala antalet stift som ditt kort kommer att ha, PINS_COUNT

OBS: I sandeepmistry -paketet ignoreras NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS och NUM_ANALOG_OUTPUTS inställningar

Om ditt kort gör mer eller mindre analoga stift tillgängliga, uppdatera / * Analog Pins * / avsnittet i variants.h -filen.

OBS: För NanoV2- och SKYLAB -korten är de analoga stiften mappade till de digitala stiften A0 == D0 etc

Detta är inte nödvändigt. Du kan tilldela de analoga ingångarna till alla praktiska Arduino -stift. Se sedan blue/variant.h och blue/variant.cpp -filer för ett exempel.

NRF52832 -chipet har 8 analoga ingångsstiften, men SKYLAB_SKB369_Nano2 -ersättningskortet gör bara 6 av dem tillgängliga för att matcha Nano2.

Alla pin -nummer, förutom RESET_PIN, i filen variant.h är Arduino -pin -nummer. Det vill säga #define PIN_A0 (0) innebär att D0 i arduino -skissen är samma stift som A0. RESET_PIN är undantaget. Det numret är nRF52823 chip -pin -nummer och 21 är det enda giltiga valet. Stödet pfod_lp_nrf52 aktiverar dock inte återställningsstiftet på nRF52832

variant.cpp -fil

Det finns bara en post i filen variant.cpp, g_ADigitalPinMap -matrisen som kartlägger Arduino -stiftnummer till nRF52832 -chip P0.. -nålarna

OBS! I NanoV2- och SKYLAB -korten är de analoga Arduino -stiften A0, A1… desamma som de Arduino digitala stiften D0, D1… så de första posterna i g_ADigitalPinMap MÅSTE kartläggas till AINx -stiftnummer på nRF52832 -chipet

För de analoga ingångar som ditt kort gör tillgängligt måste dessa poster i g_ADigitalPinMap mappa nRF52832 AIN0, AIN1, AIN2, etc pin -nummer. dvs AIN0 är chip pin P0.02, AIN1 är chip pin P0.03 etc se nRF52832 pin layout ovan.

Använd (uint32_t) -1 för ogiltiga mappningar. SKYLAB_SKB369_Nano2-ersättningskortet har till exempel inte en inbyggd LED, D13, så dess position mappas till (uint32_t) -1

I pfod_lp_nrf52.zip har Redbear NanoV2, SKYLAB SKB369 och GT832E_01 varianter underkataloger bilder som visar mappningarna som har konfigurerats av variant.cpp. (Se bilderna ovan)

När det gäller SKYLAB SKB369 finns det gott om stift att välja mellan. Endast tillräckligt är mappade för att matcha NanoV2. När det gäller GT832E_01 måste alla tillgängliga stift kartläggas. Även då finns det bara tre (3) analoga ingångar tillgängliga istället för de sex (6) på NanoV2. Utöver detta måste de två NFC-stiften, P0.09 och P0.10, konfigureras om som GPIO: er. Se Omkonfigurera nRF52 NFC -stift som GPIO nedan.

Uppdaterar boards.txt -filen

Här är SKYLAB_SKB369_Nano2ersättningsposten i boards.txt -filen.

## SKYLAB_SKB369 Nano2 ErsättningSKYLAB_SKB369_NANO2_REPLACEMENT.name =*SKYLAB SKB369 Nano2 Ersättning

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 = 16.000.000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi = hard -mfpu = fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript = nrf52_xxaa.ld

SKYLAB_SKB369_NANO2_REPLACEMENT.meny.lfclk.lfrc.build.lfclk_flags = -DUSE_LFXO

SKYLAB_SKB369_NANO2_REPLACEMENT.meny.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 Inställningar

Kommentarer - rader som börjar med # är kommentarer.

Prefix - varje kort behöver ett unikt prefix för att identifiera dess värden. Här är prefixetSKYLAB_SKB369_NANO2_REPLACEMENT.

Namn - SKYLAB_SKB369_NANO2_REPLACEMENT.name -raden anger namnet på detta kort som ska visas i Arduinos kortmeny.

Överföringsverktyg - SKYLAB_SKB369_NANO2_REPLACEMENT.upload -blocket anger vilket verktyg som ska användas för uppladdning. Om du använder Particle Debugger använder du protocol = cmsis-dap som visas ovan.

Bootloader - Den här raden är densamma för alla kort i dessa boards.txt

Bygg - Endast två rader behöver uppdateras i detta block. Raden SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant specificerar detta styrelsens katalognamn i variantunderkatalogen. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board är värdet som läggs till ARDUINO_ och definieras sedan när koden kompileras. t.ex. -DARDUINO_SKYLAB_SKB369_Nano2replacement Detta låter dig aktivera/inaktivera delar av koden för specifika kort.

Låg frekvens klocka - Denna rad, SKYLAB_SKB369_NANO2_REPLACEMENT.meny.lfclk.lfrc.build.lfclk_flags, anger källan till lågfrekvensklockan som används för lp_timern. Det finns tre alternativ, -DUSE_LFXO, -DUSE_LFRC och -DUSE_LFSYNT. Det bästa valet är -DUSE_LFXO, om kortet har en extern 32Khz -kristall. Om inte, använd -DUSE_LFRC, som använder en intern RC -oscillator och drar något mer ström, ~ 10uA mer, och är mycket mindre gånger mindre exakt. Använd inte -DUSE_LFSYNT eftersom detta håller chipet igång hela tiden vilket resulterar i mAs nuvarande dragning.

Softdevice - pfod_lp_nrf52 stöder bara nRF52 -chips och softdevice s132 så inga ändringar behövs för detta block, förutom prefixet.

Omkonfigurera nRF52 NFC -stift som GPIO: er

Var standard på nRF52 -stiften, P0.09 och P0.10 är konfigurerade för användning som NFC och förväntas anslutas till en NFC -antenn. Om du behöver använda dessa som I/O -stift för allmänna ändamål (GPIO: er) måste du lägga till en definiera -DCONFIG_NFCT_PINS_AS_GPIOS till kortets… meny.softdevice.s132.build.extra_flags sammanställer inställningar i boards.txt -filen.

Till exempel pfod_lp_nrf52.zip, konfigurerar GT832E_01-stiften igen för användning som I/O. GT832E_01 -sektionen för detta kort, i boards.txt -filen, har följande definition tillagd

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

Länkarskriptet i pfod_lp_nrf52.zip har också ändrats för att bevara denna inställning och behöver inte ändras.

Steg 7: Slutsats

Denna handledning har presenterat en ersättning för Redbear NanoV2 med en SKYLAB SKB369 -modul. En batteri/soldriven temperaturfuktighetsmätare användes som ett exempel på BLE -projekt med mycket låg effekt i Arduino för SKYLAB -modulen. Matningsströmmar på ~ 29uA uppnås genom att ställa in anslutningsparametrarna. Detta resulterade i en CR2032 knappcellsbatterilivslängd ~ 10 månader. Längre för myntceller och batterier med högre kapacitet. Att lägga till två billiga solceller förlängde enkelt batteriets livslängd med 50% eller mer. Ett starkt rumsljus eller en skrivbordslampa är tillräckligt för att driva bildskärmen från solcellerna.

Denna handledning omfattade också borttagning av chipskydd från en förprogrammerad nRF52 och hur du ställer in en ny kortdefinition för att matcha din egen kretskort/krets

Ingen Android -programmering krävs. pfodApp hanterar allt detta.

Rekommenderad: