Съдържание:

Лесен BLE с много ниска мощност в Arduino, част 3 - Подмяна на Nano V2 - Стъпки 3: 7 (със снимки)
Лесен BLE с много ниска мощност в Arduino, част 3 - Подмяна на Nano V2 - Стъпки 3: 7 (със снимки)

Видео: Лесен BLE с много ниска мощност в Arduino, част 3 - Подмяна на Nano V2 - Стъпки 3: 7 (със снимки)

Видео: Лесен BLE с много ниска мощност в Arduino, част 3 - Подмяна на Nano V2 - Стъпки 3: 7 (със снимки)
Видео: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, Ноември
Anonim
Лесен BLE с много ниска мощност в Arduino Част 3 - Подмяна на Nano V2 - Ред 3
Лесен BLE с много ниска мощност в Arduino Част 3 - Подмяна на Nano V2 - Ред 3
Лесен BLE с много ниска мощност в Arduino Част 3 - Подмяна на Nano V2 - Ред 3
Лесен BLE с много ниска мощност в Arduino Част 3 - Подмяна на Nano V2 - Ред 3
Лесен BLE с много ниска мощност в Arduino Част 3 - Подмяна на Nano V2 - Ред 3
Лесен BLE с много ниска мощност в Arduino Част 3 - Подмяна на Nano V2 - Ред 3

Актуализация: 7 април 2019 г. - Ред 3 на lp_BLE_TempHumidity, добавя графики за дата/час, използвайки pfodApp V3.0.362+и автоматично ограничаване при изпращане на данни

Актуализация: 24 март 2019 г. - Ред 2 на lp_BLE_TempHumidity, добавя още опции за графики и i2c_ClearBus, добавя поддръжка на GT832E_01

Въведение

Този урок, Замяна на Redbear Nano V2, е част 3 от 3. Това е Ревизия 2 на този проект. Печатна платка Ревизия 2 включва монтаж за монетната клетка и сензора, опростява конструкцията и подобрява въздушния поток около сензора, като същевременно го предпазва от пряка слънчева светлина. Ревизия 1 е тук.

Част 1 - Лесно изграждане на BLE устройства с много ниска мощност с капаците на Arduino, които настройват Arduino да кодират устройства с ниска мощност nRF52, модула за програмиране и измерването на захранващия ток. Той също така обхваща специализирани таймери и сравнители с ниска мощност и освободени входове и използване на pfodApp за свързване и управление на устройството nRF52.

Част 2 - Мониторът за влажност на температурата с много ниска мощност обхваща използването на модул Redbear Nano V2 и сензор за температура / влажност Si7021 за изграждане на батерия с ниска мощност / слънчев монитор. Той също така обхваща модифицирането на библиотеката Si7021 на ниска мощност, настройването на BLE устройството за намаляване на текущата му консумация до <29uA и проектирането на персонализиран дисплей за температура/влажност за вашия мобилен телефон.

Част 3 - Замяна на Redbear Nano V2, тази, обхваща използването на други модули на базата на nRF52 вместо Nano V2. Той обхваща избора на компоненти за захранване, конструкцията, премахването на защитата за програмиране на чипове nRF52, използването на NFC щифтове като нормален GPIO и определянето на нова платка nRF52 в Arduino.

Тази инструкция е практическо приложение на част 1 Изграждане на BLE устройства с много ниска мощност, улеснени с Arduino чрез конструиране на BLE монитор за температура и влажност на BLE с много ниска мощност, използващ платка SKYLAB SBK369 като заместител на Nano V2. Този урок обхваща как да създадете нова дефиниция на платката и как да премахнете защитата от програмиране nRF52, за да можете да я препрограмирате. Този урок използва същата скица като част 2 със същите настроени BLE параметри за ниска консумация на енергия и може да се захранва само от батерия ИЛИ батерия + слънчева ИЛИ само слънчева. Настройката на параметрите BLE за ниска мощност беше разгледана в част 2

Rev 3 на lp_BLE_TempHumidity нанася данните спрямо датата и часа, използвайки само Arduino millis (). Вижте Arduino дата и час с помощта на millis () и pfodApp, използвайки най -новата версия на pfodApp (V3.0.362+).

Ред. 4 на pfod_lp_nrf52.zip също поддържа модула GT832E_01 и този урок обхваща използването на NFC nRF52 щифтове като стандартни GPIO.

Конструираният тук монитор ще работи с години на Coin Cell или 2 x AAA батерии, дори по -дълго със слънчева помощ. Освен че показва текущата температура и влажност, мониторът съхранява последните 36 часа от 10 минути отчитания и последните 10 дни отчитане на час. Те могат да бъдат записани на вашия мобилен телефон с Android и стойностите да бъдат записани в лог файл. Не се изисква програмиране за Android, pfodApp се справя с всичко това. Дисплеят и графиките на Android се контролират изцяло от вашата скица на Arduino, така че можете да я персонализирате според нуждите.

Част 2 използва платка Redbear Nano V2 за компонента nRF52832 BLE. Този проект замества този с по -евтина дъска SKYLAB SKB369. Както в част 2, за сензора за температура / влажност се използва пробивна платка Sparkfun Si7021. Модифицирана библиотека с ниска мощност се използва със Si7021.

Стъпка 1: Защо подмяна на Nano V2?

i) Nano V2 беше извън производство за няколко месеца и изглежда не се вписва в линията Particle.io, така че не е ясно колко дълго ще бъде на разположение.

ii) Nano V2 е по -скъп. Той обаче има и допълнителни функции. Виж отдолу.

iii) Nano V2 има компоненти от двете страни, което му придава по -висок профил и затруднява монтажа.

iv) Nano V2 има ограничени входно -изходни щифтове и използването на D6 до D10 изисква летящи проводници.

Въпреки че платката Nano V2 е по -скъпа от платката SKYLAB SKB369, ~ US17 срещу ~ US5, Nano V2 има повече функции. Nano V2 включва регулатор 3.3V и захранващи кондензатори, допълнителни компоненти за използване на опцията DC/DC конвертор nRF52, чип антена и uFL SMT антенен конектор.

Друга алтернатива е модулът GT832E_01, използван от www.homesmartmesh.com. Ред. 4 на pfod_lp_nrf52.zip също поддържа програмиране на модула GT832E_01. SKYLAB SKB369 и GT832E_01 са достъпни от

Redbear (Particle.io) също има гол модул без 3V3 регулатор, DC/DC компоненти или 32Khz кристални компоненти.

Контур

Този проект има 4 относителни независими части:-

Избор и конструиране на компоненти Премахване на знака за защита от кодиране nRF52 и програмиране на скицата Създаване на нова дефиниция на платката Arduino nRF52 Преконфигуриране на nRF52 NFC щифтове като GPIO

Стъпка 2: Избор и конструиране на компоненти

Избор на компоненти

В допълнение към компонентите nRF52832 и Si7021, избрани в част 2, този проект добавя 3.3V регулатор и захранващи кондензатори.

Компонент на регулатора на напрежението

Използваният тук регулатор е MC87LC33-NRT. Той може да обработва до 12V входове и има ток на покой <3.6uA, обикновено 1.1uA. Нано V2 използва регулатор TLV704 има малко по -висок ток на покой, обикновено 3.4uA и може да се справи с по -високи входни напрежения, до 24V. Вместо това беше избран MC87LC33-NRT, тъй като неговият лист с данни определя как той реагира, тъй като входното напрежение пада под 3.3V, където, както не е в листа с данни TLV704.

TLV704 определя входно напрежение минимум 2.5V и от листа с данни не е ясно какво ще се случи под това. NRF52832 ще работи до 1.7V, а Si7023 ще работи до 1.9V. MC87LC33-NRT, от друга страна, определя разлики на входно/изходно напрежение до 0V за ниски токове (Фигура 18 от листа с данни). Така че, като се има предвид изборът на компоненти, MC87LC33-NRT е избран, тъй като има определената производителност.

Захранващи кондензатори

Регулаторът MC87LC33-NRT се нуждае от някои захранващи кондензатори за стабилност и реакция. На листа с данни се препоръчва изходен кондензатор> 0,1uF. SKYLAB SBK369 също така определя 10uF/0.1uF кондензатори на захранването близо до платката. По -големите кондензатори подпомагат захранването на токовите скокове nRF52 TX. Тук са използвани 4 x 22uF 25V и 3 x 0.1uF 50V керамични кондензатори. Един 22uF и 0.1uF кондензатор бяха поставени близо до SKYLAB SBK369, 0.1uF бяха поставени близо до изхода на MC87LC33-NRT, за да се осигури стабилност и 22uF и 0.1uF бяха поставени на входа на MC87LC33-NRT и още 2 x 22uF кондензатора, които бяха запоени върху щифтовете Vin/GND като допълнителен резервоар за ток. За сравнение, платката NanoV2 има 22uF / 0.1uF на входа към регулатора TLV704 и 0.1uF на изхода си.

Резервоарните кондензатори с допълнителен ток бяха инсталирани на входа на 3.3V регулатора, така че да се зареждат до по -високо напрежение при работа със слънчеви клетки. Зареждането до по -високо напрежение се равнява на съхраняване на повече ток за захранване на шиповете на Tx.

Керамичните кондензатори X5R се използват, защото имат ниско съпротивление и нисък ток на утечка. Съпротивлението обикновено е 100, 000MΩ или 1000MΩ - µF, което винаги е по -малко. Така че за 22uF имаме 22000MΩ, т.е. 0.15nA изтичане при 3.3V или 0.6nA за четирите 22uF кондензатора. Това е нищожно. За сравнение Нисък ESR, Panasonic електролитни кондензатори с ниско изтичане имат токове на утечка <0,01CV. Така че за 22uF 16V кондензатор изтичането е <10uA. Забележка: Това е изтичането при номинално напрежение, 16V в този случай. Изтичането е по -ниско при по -ниско напрежение, т.е. <2.2uA при 3.3V.

Списък с части

Приблизителна цена на единица към декември 2018 г., ~ US $ 61, с изключение на доставката и програмиста от част 1

  • SKYLAB SKB369 ~ US $ 5 например Aliexpress
  • Пробивна платка Sparkfun Si7021 ~ 8 щ.д.
  • 2 x 53 мм x 30 мм 0,15 W 5V слънчеви клетки напр. Overfly ~ 1,10 щ.д.
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 щ.д. за 5 отстъпка www.pcbcart.com
  • 1 x MC78LC33 3.3V регулатор, напр. Digikey MC78LC33NTRGOSCT-ND ~ US $ 1
  • 2 x 0,1uF 50V керамика C1608X5R1H104K080A напр. Digikey 445-7456-1-ND ~ 0,3 щ.д.
  • 4 x 22uF 16V керамика GRM21BR61C226ME44L напр. Digikey 490-10747-1-ND ~ US $ 2
  • 1 x BAT54CW, напр. Digikey 497-12749-1-ND ~ 0,5 щ.д.
  • 1 x 470R 0.5W 1% резистор напр. Digikey 541-470TCT-ND ~ 0,25 щ.д.
  • 1 x 10V 1W ценер SMAZ10-13-F напр. Digikey SMAZ10-FDICT-ND ~ 0,5 щ.д.
  • 3 мм х 12 мм найлонови винтове, напр. Jaycar HP0140 ~ 3 австралийски долара
  • 3 мм х 12 мм найлонови гайки, напр. Jaycar HP0146 ~ 3 австралийски долара
  • Скоч Перманентна монтажна лента Cat 4010 напр. от Amazon ~ US $ 6.6
  • Поставка за батерии CR2032, напр. HU2032-LF ~ 1,5 щ.д.
  • Батерия CR2032 ~ US $ 1
  • Перспекс лист, 3.5 мм и 8 мм
  • pfodApp ~ 10 щ.д.
  • Поялна паста напр. Jaycar NS-3046 ~ 13 австралийски долара

Стъпка 3: Строителство

Строителство
Строителство
Строителство
Строителство
Строителство
Строителство

Проектът е изграден върху малка печатна платка. Печатната платка е произведена от pcbcart.com от тези файлове на Gerber, SKYLAB_TempHumiditySensor_R2.zip ПХБ имитира извода на Nano V2 и е достатъчно общо предназначение, за да се използва за други BLE проекти.

Това е схемата (pdf версия)

Първо запоявайте SMD компонентите, след това монтирайте платката SKYLAB SKB369

Почти всички компоненти са устройства за повърхностен монтаж (SMD). Кондензаторите и интегралните схеми могат да бъдат трудни за запояване на ръка. Предложеният метод е да държите печатната платка в менгеме и да нанесете малко количество паста за спойка върху подложките и да поставите SMD компонентите, с изключение на платката SKB369 върху печатната платка. След това с помощта на термопистолет нанесете топлина върху долната страна на печатната платка, докато спойката се разтопи и след това направете бързо преминаване върху горната част на дъската, като внимавате да не издухате компонентите. Накрая докоснете компонентите с поялник с малък връх. Внимавайте с кондензаторите и резистора, тъй като е лесно да се стопят двата края и компонентът да се разхлаби, докато запоявате единия край.

Тази редакция добавя допълнителни 22uF 16V керамични кондензатори. Тези допълнителни кондензатори намаляват токовите скокове, извлечени от батерията, а също така намаляват спадовете на напрежението при захранване от слънчевите клетки. Докато напрежението от слънчевите клетки остава над напрежението на акумулатора, токът не се изтегля от батерията.

След като SMD компонентите са монтирани, можете да запоявате в платката SKYLAB SKB369. Има две дупки за тестова точка от едната страна на езичетата SKB369. Използвайте два щифта в картонена основа, за да позиционирате дъската SKB369 и внимателно подравнете щифтовете. (Вижте примерната снимка по -горе с печатна платка Revision 1) След това запойте един щифт от противоположната страна, за да задържите платката на място, преди да запоите другите щифтове.

Обърнете внимание на свързващия проводник Gnd от CLK към GND в завършената част. Това е инсталирано СЛЕД програмиране, за да се предотврати шума на входа CLK да задейства чипа nRF52 в режим на отстраняване на грешки с голям ток

Монтажен калъф

Монтажният корпус е направен от две парчета перспекс, 110 мм х 35 мм, дебелина 3 мм. 3,5 -милиметровото парче под слънчевите клетки беше почукано, за да се вземат 3 -милиметровите найлонови винтове. Тази преработена конструкция е по -опростяваща от Rev 1 и подобрява въздушния поток около сензора. Допълнителните отвори на всеки край са за монтаж, като например се използват кабелни връзки.

Стъпка 4: Премахване на флага за защита от кодиране NRF52

Премахване на флага за защита от кодиране NRF52
Премахване на флага за защита от кодиране NRF52
Премахване на флага за защита от кодиране NRF52
Премахване на флага за защита от кодиране NRF52
Премахване на флага за защита от кодиране NRF52
Премахване на флага за защита от кодиране NRF52

Свържете дъската за температура/влажност към програмиста, описан в част 1, както е показано по -горе.

При изключени слънчеви клетки и батерии, Vin и Gnd са свързани към Vdd и Gnd на програмиста (жълтите и зелените проводници), а SWCLK и SWDIO са свързани към Clk и SIO на заглавната платка на програмиста (белите и сивите проводници)

Премахване на защитата на програмата nRF52

От страницата Nordic Semi - Debug and Trace DAP - Debug Access Port. Външен дебъгер може да получи достъп до устройството чрез DAP. DAP внедрява стандартен ARM® CoreSight ™ сериен порт за отстраняване на грешки (SW-DP). SW-DP внедрява протокола за серийно отстраняване на грешки (SWD), който е двупинов сериен интерфейс, SWDCLK и SWDIO

Важно: Линията SWDIO има вътрешен резистор за издърпване. Линията SWDCLK има вътрешен резистор за изтегляне.

CTRL -AP - Контролен порт за достъп. Портът за контрол на достъп (CTRL-AP) е персонализиран порт за достъп, който позволява контрол на устройството, дори ако другите портове за достъп в DAP са деактивирани от защитата на порта за достъп. Защитата на порта за достъп блокира отстраняването на грешки от достъпа за четене и запис до всички регистри на процесора и адреси, картографирани в паметта. Деактивирайте защитата на порта за достъп. Защитата на порта за достъп може да бъде деактивирана само чрез издаване на команда ERASEALL чрез CTRL-AP. Тази команда ще изтрие Flash, UICR и RAM.

Изберете CMSIS-DAP като програмист за Debugger на Particle и изберете nRF5 Flash SoftDevice

Ако флашът работи, това е ОК, но често модулите ще бъдат защитени срещу препрограмиране и ще получите тази грешка в прозореца Arduino

Отворете On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Лицензиран под GNU GPL v2 За доклади за грешки прочетете https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Информация: само една опция за транспорт; автоматичен избор на 'swd' скорост на адаптера: 10000 kHz cortex_m reset_config sysresetreq Информация: CMSIS-DAP: SWD Поддържана информация: CMSIS-DAP: Инициализиран интерфейс (SWD) Информация: CMSIS-DAP: Версия на FW = 1,10 Информация: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 Tdo -AP за управление на ядрото Грешка: Целта все още не е изследвана Грешка при мигане на SoftDevice.

В такъв случай трябва да настроите командния регистър ERASEALL в nRF52, за да изчистите паметта и да направите устройството програмируемо отново. Версията на openOCD, предоставена с sandeepmistry nRF52, не включва командата apreg, необходима за запис в командния регистър ERASEALL, така че трябва да инсталирате по -нова версия.

Инсталирайте OpenOCD версия OpenOCD-20181130 или по-нова. Предварително компилираната версия на Windows е достъпна от https://gnutoolchains.com/arm-eabi/openocd/ Най-новият код е достъпен от

Отворете командния ред и променете директорията в директорията за инсталиране на OpenOCD и въведете командата

bin / openocd.exe -d2 -f интерфейс/cmsis -dap.cfg -f цел/nrf52.cfg

Отговорът е

Отворете On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]Licensed under GNU GPL v2 За доклади за грешки, прочетете https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Информация: автоматично избиране на първата налична транспортна сесия "swd". За да отмените, използвайте „transport select“. скорост на адаптера: 1000 kHz cortex_m reset_config sysresetreq Информация: Слушане на порт 6666 за tcl връзки Информация: Слушане на порт 4444 за telnet връзки Информация: CMSIS-DAP: SWD Поддържана информация: CMSIS-DAP: Версия на FW = 1,10 Информация: CMSIS-DAP: Инициализиран интерфейс (SWD) Информация: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Информация: CMSIS-DAP: Интерфейс готов Информация: тактова честота 1000 kHz Информация: SWD DPIDR 0x2ba01477 Грешка: Не можах да намеря MEM-AP за управление на ядрото Информация: Слушане на порт 3333 за gdb връзки

След това отворете терминален прозорец, напр. TeraTerm (Windows) или CoolTerm (Mac) и се свържете към 127.0.0.1 порт 4444

Прозорецът telnet ще покаже> и командният ред ще покаже Информация: приемане на 'telnet' връзка на tcp/4444

В прозореца на telnet (т.е. TeraTerm) typenrf52.dap apreg 1 0x04 това връща 0x00000000, показващо чипа е защитен. След това въведете nrf52.dap apreg 1 0x04 0x01и след това nrf52.dap apreg 1 0x04 това връща 0x00000001, показвайки, че чипът е настроен на ERASEALL при следващо рестартиране.

Затворете telnet връзката и също използвайте Ctrl-C, за да излезете от програмата openOCD в командния ред и след това включете модула nRF52 и той вече ще бъде готов за програмиране.

Сега опитайте отново да преминете софтуерното устройство.

Вече можете да програмирате модула nRF52 от Arduino.

Стъпка 5: Програмиране на SKYLAB SKB369

Програмиране на SKYLAB SKB369
Програмиране на SKYLAB SKB369
Програмиране на SKYLAB SKB369
Програмиране на SKYLAB SKB369
Програмиране на SKYLAB SKB369
Програмиране на SKYLAB SKB369

Затворете Arduino и преинсталирайте последната версия на поддръжката на pfod_lp_nrf52, като следвате инструкциите за инсталиране на хардуерна поддръжка на pfod_lp_nrf52. Последният pfod_lp_nrf52 включва SKYLAB SKB369 Nano2 заместваща платка. Изберете това като платка и след това можете да го програмирате с Ревизия 3 на lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, както е описано в част 2.

Ако програмирането се провали. Затворете всички прозорци на Arduino, извадете USB кабелите, рестартирайте Arduino и включете отново USB кабела на програмиста и включете отново USB захранването на модула nRF52 и опитайте отново.

След това се свържете чрез pfodApp, за да покажете текущата и историческата температура и влажност. След като сте показали историческия график, показанията с милисекундни времеви отметки се записват в лог файла на вашия мобилен телефон и също са достъпни в екрана с необработени данни.

Лог файлът съдържа и допълнителни данни, необходими за пресъздаване на графици за дата и час в електронна таблица. Вижте Arduino дата и час с помощта на millis () и pfodApp за подробности

Стъпка 6: Създаване на нова дефиниция на дъска Arduino NRF52

Създаване на нова дефиниция на дъска Arduino NRF52
Създаване на нова дефиниция на дъска Arduino NRF52
Създаване на нова дефиниция на дъска Arduino NRF52
Създаване на нова дефиниция на дъска Arduino NRF52
Създаване на нова дефиниция на дъска Arduino NRF52
Създаване на нова дефиниция на дъска Arduino NRF52
Създаване на нова дефиниция на дъска Arduino NRF52
Създаване на нова дефиниция на дъска Arduino NRF52

За да поддържате нова nRF52 платка, трябва: а) да добавите нова директория в директорията с варианти с файловете на борда и б) да редактирате файла board.txt, за да добавите новата платка към Arduino.

Добавяне на нов вариант на платка nRF52

Както е описано в част 1, Инсталиране на хардуерната поддръжка на pfod_lp_nrf52, намерете хардуерната поддиректория на пакета sandeepmistry, която сте актуализирали с поддръжката pfod_lp_nrf52. Отворете поддиректорията / hardware / nRF5 / 0.6.0 / variants и създайте нова директория за новата си дъска, напр. SKYLAB_SKB369_Nano2replacement В новата / hardware / nRF5 / 0.6.0 / variants / SKYLAB_SKB369_Nano2replacement директория създайте три файла variant.h, variant.cpp и pins_arduino.h Можете да ги копирате от други директории с варианти на дъска. За подмяната на SKYLAB_SKB369_Nano2 първоначално копирах файловете от варианта RedBear_BLENano2.

pins_arduino.h файл

Не е необходимо файлът pins_arduino.h да се променя. Той включва само файла variant.h

variant.h файл

Редактирайте файла variant.h, за да определите общия брой пинове, които ще има вашата дъска, PINS_COUNT

ЗАБЕЛЕЖКА: В пакета sandeepmistry, NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS и NUM_ANALOG_OUTPUTS настройките се игнорират

Ако вашата платка предлага повече или по -малко аналогови пинове, актуализирайте секцията / * Analog Pins * / на файла variants.h.

ЗАБЕЛЕЖКА: За платките NanoV2 и SKYLAB аналоговите щифтове са картографирани към цифровите щифтове A0 == D0 и т.н

Това не е от съществено значение. Можете да зададете аналоговите входове към всеки удобен щифт на Arduino. Вижте тогава файловете blue/variant.h и blue/variant.cpp за пример.

Чипът nRF52832 има 8 аналогови входни пина, но платката за подмяна SKYLAB_SKB369_Nano2 прави само 6 от тях достъпни за съвпадение с Nano2.

Всички пинови номера, с изключение на RESET_PIN, във файла variant.h са пин номера на Arduino. Тоест #define PIN_A0 (0) означава, че D0 в скицата на arduino е същият щифт като A0. RESET_PIN е изключение. Този номер е пинов номер на чип nRF52823, а 21 е единственият валиден избор. Поддръжката на pfod_lp_nrf52 обаче не активира щифта за нулиране на nRF52832

variant.cpp файл

Има само един запис във файла variant.cpp, масивът g_ADigitalPinMap , който картографира номерата на пиновете на Arduino към чипа P0 на чипа nRF52832.

ЗАБЕЛЕЖКА: В платките NanoV2 и SKYLAB аналоговите щифтове Arduino A0, A1… са същите като цифровите пинове на Arduino D0, D1…, така че първите записи в g_ADigitalPinMap ТРЯБВА да се съпоставят с AINx пинови номера на чипа nRF52832

За аналоговите входове, които вашата платка предоставя, тези записи в g_ADigitalPinMap трябва да съответстват на nRF52832 AIN0, AIN1, AIN2 и т.н. AIN0 е чип P0.02, AIN1 е чип P0.03 и т.н. вижте схемата на пина nRF52832 по -горе.

Използвайте (uint32_t) -1 за невалидни съпоставяния. Например, резервната платка SKYLAB_SKB369_Nano2 няма вграден светодиод, D13, така че нейната позиция е картографирана на (uint32_t) -1

В pfod_lp_nrf52.zip поддиректориите на вариантите на Redbear NanoV2, SKYLAB SKB369 и GT832E_01 имат изображения, показващи съпоставянията, създадени от variant.cpp. (Вижте изображенията по -горе)

В случая на SKYLAB SKB369, има много щифтове за избор. Картират се само достатъчно, за да съответстват на NanoV2. В случая с GT832E_01, всички налични пинове трябва да бъдат картографирани. Дори и тогава има налични само три (3) аналогови входа вместо шестте (6) на NanoV2. Освен това двата NFC пина, P0.09 и P0.10, трябва да бъдат преконфигурирани като GPIO. Вижте Преконфигуриране на nRF52 NFC щифтове като GPIO по -долу.

Актуализиране на файла Board.txt

Ето записа на SKYLAB_SKB369_Nano2replacement във файла Board.txt.

## Подмяна на SKYLAB_SKB369 Nano2SKYLAB_SKB369_NANO2_REPLACEMENT.name =*Замяна на SKYLAB SKB369 Nano2

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_Com2 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload 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 = твърд -mfpu = fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript = nrf52_xxaa.ld

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

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132 = S132

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = s132 = SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion 2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.upload.maximum_size = 409600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript = armgcc_s132_nrf52832_xxaa.ld

board.txt Настройки

Коментари - редовете, започващи с #, са коментари.

Префикс - всяка дъска се нуждае от уникален префикс, за да идентифицира своите стойности. Тук префиксът еSKYLAB_SKB369_NANO2_REPLACEMENT.

Име - Редът SKYLAB_SKB369_NANO2_REPLACEMENT.name указва името на тази платка, която да се показва в менюто на дъската на Arduino.

Инструмент за качване - Блокът SKYLAB_SKB369_NANO2_REPLACEMENT.upload указва кой инструмент да се използва за качване. Ако използвате Partger Debugger, използвайте protocol = cmsis-dap, както е показано по-горе.

Bootloader - Този ред е еднакъв за всички дъски в този board.txt

Изграждане - Само два реда трябва да бъдат актуализирани в този блок. Редът SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant определя името на директорията на тази дъска във поддиректорията на варианта. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board е стойността, добавена към ARDUINO_ и след това дефинирана при компилиране на кода. напр. -DARDUINO_SKYLAB_SKB369_Nano2replacement Това ви позволява да активирате/деактивирате части от кода за конкретни платки.

Нискочестотен часовник - Този ред, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, указва източника на нискочестотния часовник, използван за lp_timer. Има три опции -DUSE_LFXO, -DUSE_LFRC и -DUSE_LFSYNT. Най -добрият избор е -DUSE_LFXO, ако платката има външен 32Khz кристал. Ако не, тогава използвайте -DUSE_LFRC, който използва вътрешен RC осцилатор и черпи малко по -голям ток, ~ 10uA повече и е много по -малко пъти по -малко точен. Не използвайте -DUSE_LFSYNT, тъй като това поддържа чипа да работи през цялото време, което води до текущо изтегляне на mAs.

Softdevice - pfod_lp_nrf52 поддържа само nRF52 чипове и softdevice s132, така че няма нужда от промени в този блок, освен префикса.

Преконфигуриране на nRF52 NFC щифтове като GPIO

По подразбиране на пиновете nRF52, P0.09 и P0.10 са конфигурирани за използване като NFC и се очаква да бъдат свързани към NFC антена. Ако трябва да ги използвате като входно -изходни щифтове с общо предназначение (GPIO), тогава трябва да добавите дефиниция, -DCONFIG_NFCT_PINS_AS_GPIOS, към… menu.softdevice.s132.build.extra_flags на тази платка настройките за компилиране във файла Board.txt.

Например pfod_lp_nrf52.zip, преконфигурира пиновете GT832E_01 за използване като I/O. Разделът GT832E_01 за тази платка, във файлаbors.txt, има добавена следната дефиниция

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

Скриптът за свързване в pfod_lp_nrf52.zip също е променен, за да запази тази настройка и не е необходимо да се променя.

Стъпка 7: Заключение

Този урок представи заместител на Redbear NanoV2, използвайки модул SKYLAB SKB369. Монитор за температура на влажност на батерията/слънчева енергия беше използван като пример BLE проект с много ниска мощност в Arduino за модула SKYLAB. Захранващи токове ~ 29uA, където се постигат чрез настройване на параметрите на връзката. Това доведе до живот на батерията с монетни клетки CR2032 ~ 10 месеца. По -дълъг за монети с по -голям капацитет и батерии. Добавянето на две евтини слънчеви клетки лесно удължава живота на батерията с 50% или повече. Ярка стайна светлина или настолна лампа са достатъчни за захранване на монитора от слънчевите клетки.

Този урок също обхваща премахването на защитата на чипа от предварително програмиран nRF52 и как да настроите нова дефиниция на платката, която да съответства на вашата собствена печатна платка/верига

Не се изисква програмиране за Android. pfodApp обработва всичко това.

Препоръчано: