Spisu treści:

Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3: 7 kroków (ze zdjęciami)
Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3: 7 kroków (ze zdjęciami)

Wideo: Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3: 7 kroków (ze zdjęciami)

Wideo: Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3: 7 kroków (ze zdjęciami)
Wideo: This USB Bitcoin Miner looks so good on my desk! 😮#shorts 2024, Listopad
Anonim
Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3
Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3
Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3
Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3
Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3
Easy Very Low Power BLE w Arduino Część 3 - Wymiana Nano V2 - Rev 3

Aktualizacja: 7 kwietnia 2019 r. – wersja 3 lp_BLE_TempHumidity, dodaje wykresy daty/czasu, używając pfodApp V3.0.362+ i automatycznego throttlingu podczas wysyłania danych

Aktualizacja: 24 marca 2019 r. – Rev 2 lp_BLE_TempHumidity, dodaje więcej opcji wykresu i i2c_ClearBus, dodaje obsługę GT832E_01

Wstęp

Ten samouczek, A Redbear Nano V2 Replacement, jest częścią 3 z 3. To jest wersja 2 tego projektu. Wersja 2 PCB zawiera montaż dla ogniwa monetowego i czujnika, upraszcza konstrukcję i poprawia przepływ powietrza wokół czujnika, jednocześnie chroniąc go przed bezpośrednim działaniem promieni słonecznych. Wersja 1 jest tutaj.

Część 1 – Łatwe budowanie urządzeń BLE o bardzo niskim poborze mocy dzięki Arduino obejmuje konfigurację Arduino do kodowania urządzeń małej mocy nRF52, moduł programowania i pomiar prądu zasilania. Obejmuje również wyspecjalizowane zegary i komparatory małej mocy oraz wejścia debounce i używanie pfodApp do łączenia się z urządzeniem nRF52 i sterowania nim.

Część 2 – Monitor wilgotności temperatury o bardzo niskim poborze mocy obejmuje wykorzystanie modułu Redbear Nano V2 i czujnika temperatury/wilgotności Si7021 do budowy akumulatora/monitora słonecznego o niskim poborze mocy. Obejmuje również modyfikację biblioteki Si7021 w celu zapewnienia niskiego poboru mocy, dostrojenie urządzenia BLE w celu zmniejszenia jego poboru prądu do <29uA oraz zaprojektowanie niestandardowego wyświetlacza temperatury/wilgotności dla telefonu komórkowego.

Część 3 – Wymiana Redbear Nano V2, ta obejmuje użycie innych modułów opartych na nRF52 zamiast Nano V2. Obejmuje wybór komponentów zasilania, budowę, usunięcie ochrony programowania chipów nRF52, użycie pinów NFC jako normalnego GPIO i zdefiniowanie nowej płyty nRF52 w Arduino.

Ta instrukcja jest praktycznym zastosowaniem części 1 Budowanie urządzeń BLE o bardzo niskim poborze mocy, które stało się łatwe dzięki Arduino, poprzez skonstruowanie monitora temperatury i wilgotności BLE o bardzo niskim poborze mocy przy użyciu płyty SKYLAB SBK369 jako zamiennika Nano V2. Ten samouczek opisuje, jak utworzyć nową definicję płytki i jak usunąć ochronę programowania nRF52, aby umożliwić jej ponowne zaprogramowanie. Ten samouczek używa tego samego szkicu co Część 2 z tymi samymi dostrojonymi parametrami BLE dla niskiego zużycia energii i może być zasilany z baterii LUB baterii + energii słonecznej LUB tylko słonecznej. Strojenie parametrów BLE dla małej mocy zostało omówione w Części 2

Wersja 3 lp_BLE_TempHumidity wykreśla dane w funkcji daty i czasu, używając tylko Arduino millis(). Zobacz Arduino Data i czas przy użyciu millis() i pfodApp przy użyciu najnowszej wersji pfodApp (V3.0.362+).

Wersja 4 pliku pfod_lp_nrf52.zip obsługuje również moduł GT832E_01, a ten samouczek obejmuje używanie pinów NFC nRF52 jako standardowych GPIO.

Skonstruowany tutaj monitor będzie działał przez lata na bateriach Coin Cell lub 2 bateriach AAA, a nawet dłużej z pomocą solarną. Oprócz wyświetlania aktualnej temperatury i wilgotności monitor przechowuje ostatnie 36 godzin 10-minutowych odczytów oraz ostatnie 10 dni odczytów godzinowych. Można je sporządzić na wykresie na telefonie komórkowym z systemem Android, a wartości zapisać w pliku dziennika. Nie jest wymagane programowanie na Androida, pfodApp obsługuje to wszystko. Wyświetlanie i wykresy w systemie Android są całkowicie kontrolowane przez szkic Arduino, dzięki czemu można go dostosować zgodnie z wymaganiami.

Część 2 wykorzystywała płytkę Redbear Nano V2 do komponentu nRF52832 BLE. Ten projekt zastępuje go tańszą płytą SKYLAB SKB369. Podobnie jak w części 2, tabliczka zaciskowa Sparkfun Si7021 jest używana do czujnika temperatury / wilgotności. Z Si7021 używana jest zmodyfikowana biblioteka małej mocy.

Krok 1: Dlaczego warto wymienić Nano V2?

i) Nano V2 był wycofany z produkcji przez kilka miesięcy i wydaje się, że nie pasuje do linii Particle.io, więc nie jest jasne, jak długo będzie dostępny.

ii) Nano V2 jest droższy. Ma jednak również dodatkowe funkcje. Zobacz poniżej.

iii) Nano V2 ma elementy po obu stronach, co nadaje mu wyższy profil i utrudnia montaż.

iv) Nano V2 ma ograniczone dostępne piny I/O, a użycie D6 do D10 wymaga wolnych przewodów.

Chociaż płyta Nano V2 jest droższa niż płyta SKYLAB SKB369, ~US17 kontra ~US5, Nano V2 ma więcej funkcji. Nano V2 zawiera regulator 3,3 V i kondensatory zasilające, dodatkowe komponenty do korzystania z opcji konwertera DC/DC nRF52, antenę chipową i złącze antenowe uFL SMT.

Inną alternatywą jest moduł GT832E_01 używany przez www.homesmartmesh.com. Wersja 4 pliku pfod_lp_nrf52.zip obsługuje również programowanie modułu GT832E_01. SKYLAB SKB369 i GT832E_01 są dostępne na

Redbear (Particle.io) ma również sam moduł bez regulatora 3V3, komponentów DC/DC lub komponentów kryształowych 32Khz.

Zarys

Ten projekt ma 4 względne niezależne części:-

Wybór i budowa komponentów Usunięcie flagi ochrony kodowania nRF52 i zaprogramowanie szkicu Tworzenie nowej definicji płytki Arduino nRF52 Ponowna konfiguracja pinów nRF52 NFC jako GPIO

Krok 2: Wybór i budowa komponentów

Wybór komponentów

Oprócz komponentów nRF52832 i Si7021 wybranych w części 2, projekt ten dodaje regulator 3,3 V i kondensatory zasilające.

Element regulatora napięcia

Zastosowany tu regulator to MC87LC33-NRT. Może obsługiwać wejścia do 12V i ma prąd spoczynkowy <3,6uA, zwykle 1,1uA. Nano V2 z regulatorem TLV704 ma nieco wyższy prąd spoczynkowy, zwykle 3,4uA i może obsługiwać wyższe napięcia wejściowe, do 24V. Zamiast tego wybrano MC87LC33-NRT, ponieważ jego arkusz danych określa, jak reaguje, gdy napięcie wejściowe spada poniżej 3,3 V, podczas gdy w arkuszu danych TLV704 nie.

TLV704 określa napięcie wejściowe minimum 2,5 V i z arkusza danych nie wynika jasno, co stanie się poniżej. nRF52832 spadnie do 1,7 V, a Si7023 do 1,9 V. Z drugiej strony MC87LC33-NRT określa różnice napięcia wejściowego / wyjściowego do 0 V dla niskich prądów (rys. 18 w arkuszu danych). Biorąc pod uwagę wybór komponentów, wybrano MC87LC33-NRT, ponieważ ma on określoną wydajność.

Kondensatory zasilające

Regulator MC87LC33-NRT potrzebuje kondensatorów zasilających dla stabilności i odpowiedzi. W arkuszu danych zalecany jest kondensator wyjściowy > 0,1 uF. SKYLAB SBK369 określa również kondensatory 10uF/0,1uF na zasilaniu w pobliżu płyty. Większe kondensatory pomagają w zasilaniu impulsów prądowych nRF52 TX. Tutaj zastosowano kondensatory ceramiczne 4 x 22uF 25V i 3 x 0,1uF 50V. Jeden kondensator 22uF i 0,1uF umieszczono blisko SKYLAB SBK369, kondensator 0,1uF umieszczono blisko wyjścia MC87LC33-NRT, aby zapewnić stabilność, a na wejściu MC87LC33-NRT oraz kondensator 22uF i 0,1uF. kolejne kondensatory 2 x 22uF zostały przylutowane do pinów Vin/GND jako kolejny zbiornik prądu. Dla porównania płytka NanoV2 ma 22uF / 0,1uF na wejściu regulatora TLV704 i 0,1uF na wyjściu.

Na wejściu regulatora 3,3 V zainstalowano kondensatory rezerwowe dodatkowego prądu, aby podczas pracy z ogniwami słonecznymi ładowały się do wyższego napięcia. Ładowanie do wyższego napięcia jest równoznaczne z przechowywaniem większej ilości prądu do zasilania impulsów Tx.

Zastosowano kondensatory ceramiczne X5R, ponieważ mają niską rezystancję szeregową i niski prąd upływu. Rezystancja wynosi zazwyczaj 100, 000MΩ lub 1000MΩ – µF, którakolwiek wartość jest mniejsza. Czyli dla 22uF mamy 22000MΩ, czyli 0,15nA upływu przy 3,3V lub 0,6nA dla czterech kondensatorów 22uF. To nieistotne. Dla porównania kondensatory elektrolityczne Panasonic Low ESR i Low Leakage mają prądy upływowe < 0,01 CV. Tak więc dla kondensatora 22uF 16V wyciek jest <10uA. Uwaga: Jest to upływ przy napięciu znamionowym, w tym przypadku 16V. Upływ jest mniejszy przy niższych napięciach, tj. <2,2uA przy 3,3V.

Lista części

Przybliżony koszt jednostkowy według stanu na grudzień 2018 r., ~61 USD, z wyłączeniem wysyłki i programatora z części 1

  • SKYLAB SKB369 ~ 5 USD np. Aliexpress
  • Sparkfun Si7021 tabliczka zaciskowa ~8 USD
  • 2 x 53mm x 30mm 0.15W 5V ogniwa słoneczne m.in. Przelot ~ 1,10 USD
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 USD za 5 rabatów www.pcbcart.com
  • 1 x regulator MC78LC33 3,3V, m.in. Digikey MC78LC33NTRGOSCT-ND ~US$1
  • 2 x 0,1uF 50V ceramiczny C1608X5R1H104K080A np. Digikey 445-7456-1-ND ~0,3 USD
  • 4 x 22uF 16V ceramiczny GRM21BR61C226ME44L np. Digikey 490-10747-1-ND ~ US$2
  • 1 x BAT54CW, np. Digikey 497-12749-1-ND ~0,5 USD
  • 1 x 470R 0.5W 1% rezystor np. Digikey 541-470TCT-ND ~0,25 USD
  • 1 x 10V 1W Zener SMAZ10-13-F np. Digikey SMAZ10-FDICT-ND ~0,5 USD
  • Śruby nylonowe 3mm x 12mm, m.in. Jaycar HP0140 ~3zł
  • Nakrętki nylonowe 3mm x 12mm, m.in. Jaycar HP0146 ~3zł
  • Taśma klejąca do trwałego montażu Cat 4010 m.in. od Amazon ~ 6,6 USD
  • Uchwyt baterii CR2032 m.in. HU2032-LF ~ 1,5 USD
  • Bateria CR2032 ~ 1 USD
  • Arkusz pleksiglasu, 3,5 mm i 8 mm
  • pfodApp ~ 10 USD
  • Pasta lutownicza np. Jaycar NS-3046 ~13zł

Krok 3: Budowa

Budowa
Budowa
Budowa
Budowa
Budowa
Budowa

Projekt zbudowany jest na małej płytce PCB. Płytka została wyprodukowana przez pcbcart.com z tych plików Gerber, SKYLAB_TempHumiditySensor_R2.zip Płytka naśladuje wyprowadzenia Nano V2 i jest na tyle ogólnego przeznaczenia, że może być używana w innych projektach BLE.

To jest schemat (wersja pdf)

Najpierw przylutuj elementy SMD, a następnie zamontuj płytę SKYLAB SKB369

Prawie wszystkie komponenty są urządzeniami do montażu powierzchniowego (SMD). Kondensatory i układy scalone mogą być trudne do ręcznego lutowania. Sugerowaną metodą jest trzymanie płytki PCB w imadle i nałożenie niewielkiej ilości pasty lutowniczej na pady oraz umieszczenie na płytce elementów SMD, z wyjątkiem płytki SKB369. Następnie za pomocą opalarki podgrzej spód płytki drukowanej, aż pasta lutownicza się rozpuści, a następnie szybko przeprowadź po górnej części płytki, uważając, aby nie zdmuchnąć elementów. Na koniec pokryj elementy lutownicą z małą końcówką. Uważaj na kondensatory i rezystor, ponieważ łatwo jest stopić oba końce i poluzować się podczas lutowania jednego końca.

Ta wersja dodaje dodatkowe kondensatory ceramiczne 22uF 16V. Te dodatkowe kondensatory zmniejszają skoki prądu pobierane z akumulatora, a także zmniejszają spadki napięcia podczas zasilania z ogniw słonecznych. Dopóki napięcie z ogniw słonecznych utrzymuje się powyżej napięcia akumulatora, prąd nie jest pobierany z akumulatora.

Po zamontowaniu elementów SMD można wlutować w płytkę SKYLAB SKB369. Po jednej stronie zakładek SKB369 znajdują się dwa otwory punktów testowych. Użyj dwóch kołków w tekturowej podstawie, aby ustawić płytę SKB369 i ostrożnie wyrównaj kołki. (Patrz przykładowe zdjęcie powyżej przy użyciu płytki drukowanej Revision 1) Następnie przylutuj jeden pin po przeciwnej stronie, aby utrzymać płytkę na miejscu przed przylutowaniem pozostałych pinów.

Zwróć uwagę na przewód łączący Gnd z CLK do GND w gotowej części. Jest on instalowany PO zaprogramowaniu, aby zapobiec sytuacji, w której szum na wejściu CLK powoduje przełączenie układu nRF52 w tryb debugowania z wysokim prądem

Obudowa montażowa

Obudowa montażowa została wykonana z dwóch kawałków pleksiglasu 110mm x 35mm o grubości 3mm. Kawałek 3,5 mm pod ogniwami słonecznymi został wbity w nylonowe śruby 3 mm. Ta zmieniona konstrukcja jest prostsza niż Rev 1 i poprawia przepływ powietrza wokół czujnika. Dodatkowe otwory na każdym końcu służą do montażu, na przykład za pomocą opasek kablowych.

Krok 4: Usunięcie flagi ochrony kodowania NRF52

Usuwanie flagi zabezpieczającej kodowanie NRF52
Usuwanie flagi zabezpieczającej kodowanie NRF52
Usuwanie flagi zabezpieczającej kodowanie NRF52
Usuwanie flagi zabezpieczającej kodowanie NRF52
Usuwanie flagi zabezpieczającej kodowanie NRF52
Usuwanie flagi zabezpieczającej kodowanie NRF52

Podłącz płytkę temperatury/wilgotności do programatora opisanego w części 1, jak pokazano powyżej.

Przy odłączonych ogniwach słonecznych i bateriach, Vin i Gnd są podłączone do Vdd i Gnd programatora (przewody żółty i zielony), a SWCLK i SWDIO są podłączone do Clk i SIO na płycie głównej programatora (przewody biały i szary)

Usuwanie ochrony programu nRF52

Z Nordic Semi - strona debugowania i śledzenia DAP - port dostępu do debugowania. Zewnętrzny debugger może uzyskać dostęp do urządzenia za pośrednictwem DAP. DAP implementuje standardowy port ARM® CoreSight™ Serial Wire Debug Port (SW-DP). SW-DP implementuje protokół Serial Wire Debug (SWD), który jest dwupinowym interfejsem szeregowym, SWDCLK i SWDIO

Ważne: Linia SWDIO posiada wewnętrzny rezystor podciągający. Linia SWDCLK posiada wewnętrzny rezystor pull-down.

CTRL-AP – Port kontroli dostępu. Port kontroli dostępu (CTRL-AP) to niestandardowy port dostępu, który umożliwia kontrolę urządzenia, nawet jeśli inne porty dostępu w DAP są wyłączone przez ochronę portu dostępu. Ochrona portu dostępu blokuje debugerowi dostęp do odczytu i zapisu do wszystkich rejestrów procesora i adresów mapowanych w pamięci. Wyłącz ochronę portu dostępu. Ochronę portu dostępu można wyłączyć tylko za pomocą polecenia ERASEALL za pomocą CTRL-AP. To polecenie usunie Flash, UICR i RAM.

Wybierz CMSIS-DAP jako programator dla Particle's Debugger i wybierz nRF5 Flash SoftDevice

Jeśli flash działa, to jest OK, ale często moduły będą zabezpieczone przed przeprogramowaniem i ten błąd pojawi się w oknie Arduino

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10:13) Licencjonowany na licencji GNU GPL v2 Aby uzyskać raporty o błędach, przeczytaj https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: tylko jedna opcja transportu; autoselect 'swd' prędkość adaptera: 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Obsługiwane Info: CMSIS-DAP: Interfejs zainicjowany (SWD) Info: CMSIS-DAP: Wersja FW = 1.10 Info: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interfejs gotowy Info: zmniejsz żądanie prędkości: maksymalnie 10000 kHz do 5000 kHz Info: prędkość zegara 10000 kHz Info: SWD IDCODE 0x2ba01477 Błąd: nie można znaleźć MEM -AP do kontroli rdzenia Błąd: Cel nie został jeszcze zbadany Błąd podczas flashowania SoftDevice.

W takim przypadku należy ustawić rejestr komendy ERASEALL w nRF52 w celu wyczyszczenia pamięci i ponownego zaprogramowania urządzenia. Wersja openOCD dostarczona z sandeepmistry nRF52 nie zawiera polecenia apreg potrzebnego do zapisu w rejestrze poleceń ERASEALL, więc musisz zainstalować nowszą wersję.

Zainstaluj OpenOCD w wersji OpenOCD-20181130 lub nowszej. Wstępnie skompilowana wersja Windows jest dostępna na https://gnutoolchains.com/arm-eabi/openocd/ Najnowszy kod jest dostępny na

Otwórz wiersz poleceń i zmień katalog na katalog instalacyjny OpenOCD i wprowadź polecenie

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

Odpowiedź brzmi

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] Licencjonowany na licencji GNU GPL v2 Aby uzyskać raporty o błędach, przeczytaj https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: automatyczne wybieranie pierwszego dostępnego transportu sesji "swd". Aby zastąpić, użyj ' transport wybierz '. prędkość adaptera: 1000 kHz cortex_m reset_config sysresetreq Info: Nasłuchuje na porcie 6666 dla połączeń tcl Info: Nasłuchuje na porcie 4444 dla połączeń telnet Info: CMSIS-DAP: SWD Obsługiwane Info: CMSIS-DAP: Wersja FW = 1.10 Info: CMSIS-DAP: Zainicjalizowany interfejs (SWD) Info: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interfejs gotowy Info: taktowanie 1000 kHz Info: SWD DPIDR 0x2ba01477 Błąd: Nie można znaleźć MEM-AP do sterowania podstawowymi informacjami: Nasłuchiwanie na porcie 3333 dla połączeń gdb

Następnie otwórz okno terminala, np. TeraTerm (Windows) lub CoolTerm (Mac) i podłącz do portu 127.0.0.1 4444

Okno telnet pokaże >, a wiersz poleceń pokaże Info: akceptowanie połączenia 'telnet' na tcp/4444

W oknie telnet (tj. TeraTerm) typenrf52.dap apreg 1 0x04 zwraca 0x00000000 pokazując, że chip jest chroniony. Następnie typenrf52.dap apreg 1 0x04 0x01 i thennnrf52.dap apreg 1 0x04 to zwraca 0x00000001 pokazując, że układ jest teraz ustawiony na ERASEALL przy następnym restarcie.

Zamknij połączenie telnet, a także użyj Ctrl-C, aby wyjść z programu openOCD w wierszu poleceń, a następnie wyłącz i włącz moduł nRF52 i będzie teraz gotowy do programowania.

Teraz spróbuj ponownie flashować urządzenie programowe.

Możesz teraz zaprogramować moduł nRF52 z Arduino.

Krok 5: Programowanie SKYLAB SKB369

Programowanie SKYLAB SKB369
Programowanie SKYLAB SKB369
Programowanie SKYLAB SKB369
Programowanie SKYLAB SKB369
Programowanie SKYLAB SKB369
Programowanie SKYLAB SKB369

Zamknij Arduino i ponownie zainstaluj najnowszą wersję obsługi pfod_lp_nrf52, postępując zgodnie z instrukcjami dotyczącymi instalacji obsługi sprzętu pfod_lp_nrf52. Najnowszy pfod_lp_nrf52 zawiera płytkę zastępczą SKYLAB SKB369 Nano2. Wybierz ją jako płytę, a następnie możesz ją zaprogramować za pomocą wersji 3 lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, jak opisano w części 2.

Jeśli programowanie się nie powiedzie. Zamknij wszystkie okna Arduino, odłącz kable USB, zrestartuj Arduino i ponownie podłącz kabel USB programatora i podłącz zasilanie USB modułu nRF52 i spróbuj ponownie.

Następnie połącz się przez pfodApp, aby wyświetlić aktualną i historyczną temperaturę i wilgotność. Po wyświetleniu wykresu historycznego odczyty z milisekundowymi znacznikami czasu są zapisywane w pliku dziennika na telefonie komórkowym i są również dostępne na ekranie nieprzetworzonych danych.

Plik dziennika zawiera również dodatkowe dane niezbędne do odtworzenia wykresów daty i godziny w arkuszu kalkulacyjnym. Zobacz Arduino Data i czas przy użyciu millis() i pfodApp, aby uzyskać szczegółowe informacje

Krok 6: Tworzenie nowej definicji płytki Arduino NRF52

Tworzenie nowej definicji płytki Arduino NRF52
Tworzenie nowej definicji płytki Arduino NRF52
Tworzenie nowej definicji płytki Arduino NRF52
Tworzenie nowej definicji płytki Arduino NRF52
Tworzenie nowej definicji płytki Arduino NRF52
Tworzenie nowej definicji płytki Arduino NRF52
Tworzenie nowej definicji płytki Arduino NRF52
Tworzenie nowej definicji płytki Arduino NRF52

Aby obsługiwać nową płytkę nRF52, należy a) dodać nowy katalog w katalogu wariantów z plikami płytki oraz b) edytować plik boards.txt, aby dodać nową płytkę do Arduino.

Dodanie nowego wariantu płyty nRF52

Jak opisano w części 1, Instalowanie obsługi sprzętu pfod_lp_nrf52, znajdź podkatalog sprzętu pakietu sandeepmistry, który został zaktualizowany o obsługę pfod_lp_nrf52. Otwórz podkatalog \hardware\nRF5\0.6.0\variants i utwórz nowy katalog dla nowej płyty, np. SKYLAB_SKB369_Nano2replacement W nowym katalogu \hardware\nRF5\0.6.0\variants\SKYLAB_SKB369_Nano2replacement utwórz trzy pliki wariant.h, wariant.cpp i pins_arduino.h Możesz je skopiować z jednego z innych katalogów wariantów płyty. W przypadku SKYLAB_SKB369_Nano2replacement początkowo skopiowałem pliki z wariantu RedBear_BLENano2.

plik pins_arduino.h

Plik pins_arduino.h nie wymaga zmiany. Zawiera tylko plik Variant.h

plik wariant.h

Edytuj plik variant.h, aby określić całkowitą liczbę pinów, które będzie miała Twoja płyta, PINS_COUNT

UWAGA: W pakiecie sandeepmistry ustawienia NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS i NUM_ANALOG_OUTPUTS są ignorowane

Jeśli twoja płyta udostępnia mniej lub więcej pinów analogowych, zaktualizuj sekcję /* Piny analogowe */ w pliku variants.h.

UWAGA: W przypadku płyt NanoV2 i SKYLAB piny analogowe są mapowane na piny cyfrowe A0 == D0 itp

To nie jest konieczne. Wejścia analogowe można przypisać do dowolnego wygodnego pinu Arduino. Zobacz na przykład pliki blue/variant.h i blue/variant.cpp.

Układ nRF52832 ma 8 analogowych pinów wejściowych, ale płyta SKYLAB_SKB369_Nano2replacement udostępnia tylko 6 z nich, aby pasowały do Nano2.

Wszystkie numery pinów, z wyjątkiem RESET_PIN, w pliku variant.h są numerami pinów Arduino. To znaczy #define PIN_A0 (0) oznacza, że D0 w szkicu arduino jest tym samym pinem co A0. Wyjątkiem jest RESET_PIN. Ten numer to numer pinu chipa nRF52823, a 21 jest jedynym prawidłowym wyborem. Jednak obsługa pfod_lp_nrf52 nie włącza pinu resetowania na nRF52832

plik wariant.cpp

W pliku wariant.cpp jest tylko jeden wpis, tablica g_ADigitalPinMap, która mapuje numery pinów Arduino na piny P0.. układu nRF52832

UWAGA: W płytach NanoV2 i SKYLAB, analogowe piny Arduino A0, A1… są takie same jak cyfrowe piny Arduino D0, D1… więc pierwsze wpisy w g_ADigitalPinMap MUSZĄ być mapowane na numery pinów AINx w układzie nRF52832

W przypadku wejść analogowych, które udostępnia twoja płyta, te wpisy w g_ADigitalPinMap muszą mapować numery pinów nRF52832 AIN0, AIN1, AIN2 itp. tj. AIN0 to pin chipowy P0.02, AIN1 to pin chipowy P0.03 itd. Zobacz układ pinów nRF52832 powyżej.

Użyj (uint32_t)-1 dla nieprawidłowych mapowań. Na przykład płyta SKYLAB_SKB369_Nano2replacement nie ma wbudowanej diody LED, D13, więc jej pozycja jest odwzorowana na (uint32_t)-1

W pfod_lp_nrf52.zip podkatalogi wariantów Redbear NanoV2, SKYLAB SKB369 i GT832E_01 zawierają obrazy przedstawiające mapowania skonfigurowane przez wariant.cpp. (Patrz zdjęcia powyżej)

W przypadku SKYLAB SKB369 pinów do wyboru jest mnóstwo. Zmapowane są tylko tyle, aby pasowały do NanoV2. W przypadku GT832E_01 wszystkie dostępne piny muszą być zmapowane. Nawet wtedy dostępne są tylko trzy (3) wejścia analogowe zamiast sześciu (6) w NanoV2. Oprócz tego dwa piny NFC, P0.09 i P0.10, muszą zostać ponownie skonfigurowane jako GPIO. Zobacz Ponowna konfiguracja pinów nRF52 NFC jako GPIO poniżej.

Aktualizacja pliku board.txt

Oto wpis SKYLAB_SKB369_Nano2replacement w pliku boards.txt.

## SKYLAB_SKB369 Nano2 ReplacementSKYLAB_SKB369_NANO2_REPLACEMENT.name=*SKYLAB SKB369 Nano2 Replacement

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

Ustawienia board.txt

Komentarze – wiersze zaczynające się od # to komentarze.

Prefiks – każda plansza potrzebuje unikalnego prefiksu do identyfikacji jej wartości. Tutaj prefiks to SKYLAB_SKB369_NANO2_REPLACEMENT.

Nazwa – Linia SKYLAB_SKB369_NANO2_REPLACEMENT.name określa nazwę tej płytki do wyświetlenia w menu płytki Arduino.

Narzędzie do przesyłania - blok SKYLAB_SKB369_NANO2_REPLACEMENT.upload określa, którego narzędzia należy użyć do przesyłania. Jeśli używasz debugera cząstek, użyj protokołu protocol=cmsis-dap, jak pokazano powyżej.

Bootloader – Ta linia jest taka sama dla wszystkich płyt w tym boards.txt

Build – w tym bloku trzeba zaktualizować tylko dwie linie. Linia SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant określa nazwę katalogu tej płyty w podkatalogu wariantów. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board to wartość dołączona do ARDUINO_, a następnie zdefiniowana podczas kompilowania kodu. np. -DARDUINO_SKYLAB_SKB369_Nano2replacement Umożliwia włączanie/wyłączanie części kodu dla określonych płyt.

Low Freq Clock – Ta linia, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, określa źródło zegara niskiej częstotliwości używanego przez lp_timer. Istnieją trzy opcje: -DUSE_LFXO, -DUSE_LFRC i -DUSE_LFSYNT. Najlepszym wyborem jest -DUSE_LFXO, jeśli płyta ma zewnętrzny kryształ 32Khz. Jeśli nie, użyj -DUSE_LFRC, który wykorzystuje wewnętrzny oscylator RC i pobiera nieco więcej prądu, ~10uA więcej i jest znacznie mniej dokładny. Nie używaj opcji -DUSE_LFSYNT, ponieważ powoduje to ciągłe działanie układu, co powoduje pobór prądu w mAs.

Softdevice – pfod_lp_nrf52 obsługuje tylko chipy nRF52 i softdevice s132, więc nie ma potrzeby wprowadzania zmian w tym bloku, poza prefiksem.

Ponowna konfiguracja pinów nRF52 NFC jako GPIO

Domyślnie na pinach nRF52, P0.09 i P0.10 są skonfigurowane do użytku jako NFC i oczekują, że będą podłączone do anteny NFC. Jeśli potrzebujesz ich użyć jako pinów I/O ogólnego przeznaczenia (GPIO), musisz dodać definicję -DCONFIG_NFCT_PINS_AS_GPIOS do …menu.softdevice.s132.build.extra_flags tej płyty.

Na przykład pfod_lp_nrf52.zip ponownie konfiguruje piny GT832E_01 do użycia jako I/O. Sekcja GT832E_01 dla tej płyty, w pliku boards.txt, ma dodaną następującą definicję

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

Skrypt konsolidatora w pfod_lp_nrf52.zip również został zmodyfikowany, aby zachować to ustawienie i nie trzeba go zmieniać.

Krok 7: Wniosek

W tym samouczku przedstawiono zamiennik Redbear NanoV2 przy użyciu modułu SKYLAB SKB369. Jako przykładowy projekt BLE o bardzo małej mocy w Arduino dla modułu SKYLAB wykorzystano zasilany bateryjnie/słonecznie monitor wilgotności. Prądy zasilania ~29uA osiągane poprzez dostrajanie parametrów połączenia. Dało to żywotność baterii CR2032 ~10 miesięcy. Dłuższy dla ogniw i baterii pastylkowych o większej pojemności. Dodanie dwóch tanich ogniw słonecznych z łatwością wydłużyło żywotność baterii o 50% lub więcej. Do zasilania monitora z ogniw słonecznych wystarczy jasne światło w pomieszczeniu lub lampa biurkowa.

W tym samouczku omówiono również usuwanie ochrony chipów ze wstępnie zaprogramowanego nRF52 i konfigurowanie nowej definicji płytki, aby pasowała do własnej płytki drukowanej/obwodu

Nie jest wymagane programowanie na Androida. pfodApp obsługuje to wszystko.

Zalecana: