Оглавление:

Легкий очень маломощный 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 шагов (с изображениями)
Видео: Намотка импульсного трансформатора 2024, Ноябрь
Anonim
Легкий очень маломощный BLE в Arduino, часть 3 - Замена Nano V2 - Ред
Легкий очень маломощный BLE в Arduino, часть 3 - Замена Nano V2 - Ред
Легкий очень маломощный BLE в Arduino, часть 3 - Замена Nano V2 - Ред
Легкий очень маломощный BLE в Arduino, часть 3 - Замена Nano V2 - Ред
Легкий очень маломощный BLE в Arduino, часть 3 - Замена Nano V2 - Ред
Легкий очень маломощный BLE в Arduino, часть 3 - Замена Nano V2 - Ред

Обновление: 7 апреля 2019 г. - третья версия lp_BLE_TempHumidity, добавляет графики даты / времени, использует pfodApp V3.0.362 + и автоматическое регулирование при отправке данных.

Обновление: 24 марта 2019 г. - 2-я версия lp_BLE_TempHumidity, добавляет дополнительные параметры сюжета и i2c_ClearBus, добавляет поддержку GT832E_01

Вступление

Это руководство, «Замена Redbear Nano V2», является частью 3 из 3. Это вторая редакция этого проекта. Версия 2 PCB включает в себя крепление для монетного элемента и датчика, упрощает конструкцию и улучшает воздушный поток вокруг датчика, защищая его от прямых солнечных лучей. Версия 1 здесь.

Часть 1 - Создание устройств BLE с очень низким энергопотреблением, упрощенное с помощью Arduino, охватывает настройку Arduino для кодирования устройств с низким энергопотреблением nRF52, модуль программирования и измерение тока питания. Он также охватывает специализированные таймеры и компараторы с низким энергопотреблением, входы с устранением дребезга и использование pfodApp для подключения к устройству nRF52 и управления им.

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

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

Это руководство представляет собой практическое применение Части 1 «Создание устройств BLE с очень низким энергопотреблением», упрощенное с помощью Arduino путем создания монитора температуры и влажности BLE с очень низким энергопотреблением с использованием платы SKYLAB SBK369 в качестве замены Nano V2. В этом руководстве рассказывается, как создать новое определение платы и как удалить программную защиту nRF52, чтобы ее можно было перепрограммировать. В этом руководстве используется тот же эскиз, что и в части 2, с теми же настроенными параметрами BLE для низкого энергопотребления и может работать только от батареи ИЛИ батареи + солнечной батареи ИЛИ только солнечной энергии. Настройка параметров BLE для малой мощности была рассмотрена в Части 2.

Третья версия lp_BLE_TempHumidity отображает данные в зависимости от даты и времени с использованием только Arduino millis (). Смотрите дату и время Arduino с использованием millis () и pfodApp с использованием последней версии pfodApp (V3.0.362 +).

Версия 4 файла pfod_lp_nrf52.zip также поддерживает модуль GT832E_01, и в этом руководстве рассматривается использование контактов NFC nRF52 в качестве стандартных GPIO.

Построенный здесь монитор будет годами работать от Coin Cell или двух батареек AAA, а с солнечной батареей - еще дольше. Помимо отображения текущей температуры и влажности, монитор сохраняет последние 36 часов из 10-минутных показаний и последние 10 дней почасовых показаний. Они могут быть отображены на вашем мобильном телефоне Android, а значения сохранены в файле журнала. Программирование под Android не требуется, pfodApp все это берет на себя. Отображение и построение диаграмм Android полностью контролируются вашим эскизом Arduino, поэтому вы можете настроить его по своему усмотрению.

В части 2 для компонента nRF52832 BLE использовалась плата Redbear Nano V2. Этот проект заменяет его на более дешевую плату 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,3 В и конденсаторы питания, дополнительные компоненты для использования опции преобразователя постоянного тока в постоянный ток nRF52, микросхему антенны и антенный разъем uFL SMT.

Другой альтернативой является модуль GT832E_01, используемый сайтом www.homesmartmesh.com. Версия 4 файла pfod_lp_nrf52.zip также поддерживает программирование модуля GT832E_01. SKYLAB SKB369 и GT832E_01 доступны на сайте

Redbear (Particle.io) также имеет пустой модуль без регулятора 3V3, компонентов постоянного / постоянного тока или кристаллических компонентов 32 кГц.

Контур

Этот проект состоит из 4 относительно независимых частей:

Выбор и конструкция компонентов Удаление флага защиты от кодирования nRF52 и программирование скетча Создание нового определения платы Arduino nRF52 Реконфигурация контактов NFC nRF52 как GPIO

Шаг 2: выбор и конструкция компонентов

Выбор компонентов

В дополнение к компонентам nRF52832 и Si7021, выбранным в Части 2, этот проект добавляет стабилизатор 3,3 В и конденсаторы питания.

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

Здесь используется регулятор MC87LC33-NRT. Он может обрабатывать до 12 В входов и имеет ток покоя <3,6 мкА, обычно 1,1 мкА. В Nano V2 используется стабилизатор TLV704, который имеет немного более высокий ток покоя, обычно 3,4 мкА, и может выдерживать более высокие входные напряжения, до 24 В. Вместо этого был выбран MC87LC33-NRT, потому что в его таблице данных указано, как он реагирует, когда входное напряжение падает ниже 3,3 В, тогда как в таблице TLV704 этого не происходит.

TLV704 определяет входное напряжение минимум 2,5 В, и из таблицы не ясно, что произойдет ниже этого. NRF52832 будет работать до 1,7 В, а Si7023 - до 1,9 В. MC87LC33-NRT, с другой стороны, определяет разницу входного / выходного напряжения до 0 В для малых токов (рис. 18 таблицы данных). Таким образом, учитывая выбор компонентов, был выбран MC87LC33-NRT, потому что он имеет заданные характеристики.

Конденсаторы питания

Стабилизатору MC87LC33-NRT требуются конденсаторы питания для обеспечения стабильности и отклика. Выходной конденсатор> 0,1 мкФ рекомендуется в таблице данных. SKYLAB SBK369 также определяет конденсаторы 10 мкФ / 0,1 мкФ для источника питания рядом с платой. Конденсаторы большего размера помогают в питании всплесков тока nRF52 TX. Здесь использовались керамические конденсаторы 4 x 22 мкФ 25 В и 3 x 0,1 мкФ 50 В. Один конденсатор 22 мкФ и 0,1 мкФ был помещен рядом с SKYLAB SBK369, 0,1 мкФ был размещен рядом с выходом MC87LC33-NRT для обеспечения стабильности, а 22 мкФ и 0,1 мкФ были помещены на вход MC87LC33-NRT и еще 2 конденсатора по 22 мкФ припаяны к контактам Vin / GND в качестве дополнительного резервуара для тока. Для сравнения, плата NanoV2 имеет 22 мкФ / 0,1 мкФ на входе регулятора TLV704 и 0,1 мкФ на выходе.

Накопительные конденсаторы дополнительного тока были установлены на входе регулятора 3,3 В, чтобы они заряжались до более высокого напряжения при работе с солнечными элементами. Зарядка до более высокого напряжения означает накопление большего тока для подачи всплесков Tx.

Керамические конденсаторы X5R используются, потому что они имеют низкое последовательное сопротивление и низкий ток утечки. Сопротивление обычно составляет 100 000 МОм или 1000 МОм - мкФ, в зависимости от того, что меньше. Таким образом, для 22 мкФ у нас есть 22000 МОм, то есть утечка 0,15 нА при 3,3 В или 0,6 нА для четырех конденсаторов по 22 мкФ. Это ничтожно мало. Для сравнения Электролитические конденсаторы Panasonic с низким ESR и малой утечкой имеют ток утечки <0,01CV. Таким образом, для конденсатора емкостью 22 мкФ 16 В утечка составляет <10 мкА. Примечание. Это утечка при номинальном напряжении, в данном случае 16 В. Утечка меньше при более низких напряжениях, то есть <2,2 мкА при 3,3 В.

Список деталей

Приблизительная стоимость единицы по состоянию на декабрь 2018 г. ~ 61 доллар США, без учета доставки и программного обеспечения из части 1.

  • SKYLAB SKB369 ~ 5 долларов США, например, Aliexpress
  • Коммутационная плата Sparkfun Si7021 ~ 8 долларов США
  • 2 x 53 мм x 30 мм солнечные элементы 0,15 Вт 5 В, например Overfly ~ 1,10 доллара США
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 долларов США за 5 с www.pcbcart.com
  • 1 x MC78LC33 3,3 В регулятор, например Digikey MC78LC33NTRGOSCT-ND ~ 1 доллар США
  • 2 x 0,1 мкФ 50 В керамический C1608X5R1H104K080A например Digikey 445-7456-1-ND ~ 0,3 доллара США
  • 4 x 22 мкФ 16 В керамический GRM21BR61C226ME44L например Digikey 490-10747-1-ND ~ 2 доллара США
  • 1 x BAT54CW, например Digikey 497-12749-1-ND ~ 0,5 доллара США
  • 1 x 470R 0,5 Вт 1% резистор, например Digikey 541-470TCT-ND ~ 0,25 доллара США
  • 1 x 10В 1Вт стабилитрон СМАЗ10-13-Ф например Digikey SMAZ10-FDICT-ND ~ 0,5 доллара США
  • Нейлоновые винты 3 мм x 12 мм, например Jaycar HP0140 ~ 3 австралийских доллара
  • Нейлоновые гайки 3 мм x 12 мм, например Jaycar HP0146 ~ 3 австралийских доллара
  • Скотч для постоянного крепления Cat 4010 например. от Amazon ~ 6,6 долларов США
  • Держатель батареи CR2032, например HU2032-LF ~ 1,5 доллара США
  • Батарея CR2032 ~ 1 доллар США
  • Лист Perspex, 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, на печатной плате. Затем с помощью теплового пистолета нагрейте нижнюю часть печатной платы до тех пор, пока паяльная паста не расплавится, а затем быстро проведите по верхней части платы, стараясь не сдувать компоненты. Наконец, подправьте компоненты паяльником с маленькими жалами. Будьте осторожны с конденсаторами и резистором, так как при пайке одного конца легко расплавить оба конца и ослабить компонент.

Эта ревизия добавляет дополнительные керамические конденсаторы 22 мкФ 16 В. Эти дополнительные конденсаторы уменьшают выбросы тока, потребляемого батареей, а также уменьшают провалы напряжения при питании от солнечных элементов. Пока напряжение от солнечных элементов остается выше напряжения аккумулятора, ток от аккумулятора не поступает.

После того, как компоненты SMD были установлены, вы можете припаять плату SKYLAB SKB369. На одной стороне выступов SKB369 есть два отверстия для контрольных точек. Вставьте два штифта в картонную основу, чтобы установить плату SKB369, и аккуратно совместите штифты. (См. Приведенный выше пример фотографии с использованием печатной платы Revision 1). Затем припаяйте один контакт с противоположной стороны, чтобы удерживать плату на месте, прежде чем паять другие контакты.

Обратите внимание на соединительный провод Gnd от CLK к GND в готовой детали. Он устанавливается ПОСЛЕ программирования, чтобы предотвратить переключение микросхемы nRF52 в сильноточный режим отладки из-за шума на входе CLK

Монтажный чехол

Монтажный корпус был сделан из двух кусков плексигласа, 110 мм x 35 мм, толщиной 3 мм. На 3,5-миллиметровом участке под солнечными элементами была нарезана резьба для установки 3-миллиметровых нейлоновых винтов. Эта измененная конструкция упрощена по сравнению с версией 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. Эта команда сотрет флэш-память, UICR и RAM.

Выберите CMSIS-DAP в качестве программатора для отладчика частиц и выберите nRF5 Flash SoftDevice.

Если вспышка работает, то это нормально, но часто модули будут защищены от перепрограммирования, и вы получите этот вывод ошибки в окне Arduino.

Open 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 Информация: только одна транспортная опция; autoselect 'swd' скорость адаптера: 10000 кГц 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 = 0 nTRST = 0 nRESET = 1 Информация: CMSIS-DAP: Интерфейс готов Информация: запрос на уменьшение скорости: с 10000 кГц до 5000 кГц максимум Информация: тактовая частота 10000 кГц Информация: SWD IDCODE 0x2ba01477 Ошибка: не удалось найти MEM -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

Ответ

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] Лицензия под лицензией GNU GPL v2 Для отчетов об ошибках, прочтите https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Информация: автоматический выбор первого доступного транспорта сеанса "swd". Для отмены используйте «выбор транспорта». скорость адаптера: 1000 кГц 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 кГц Информация: 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, показывая, что микросхема защищена. Затем typenrf52.dap apreg 1 0x04 0x01, а затем nrf52.dap apreg 1 0x04, это возвращает 0x00000001, показывая, что чип теперь установлен на УДАЛЕНИЕ ВСЕХ при следующем перезапуске.

Закройте соединение 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 вам необходимо: а) добавить новый каталог в каталог вариантов с файлами платы и б) отредактировать файлboards.txt, чтобы добавить новую плату в Arduino.

Добавление нового варианта платы nRF52

Как описано в Части 1, Установка поддержки оборудования pfod_lp_nrf52, найдите подкаталог оборудования пакета sandeepmistry, который вы обновили с помощью поддержки pfod_lp_nrf52. Откройте подкаталог / hardware / nRF5 / 0.6.0 / options и создайте новый каталог для вашей новой платы, например, SKYLAB_SKB369_Nano2replacement. В новом каталоге / hardware / nRF5 / 0.6.0 / options / SKYLAB_SKB369_Nano2replacement создайте три файла variant.h, Вариант.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 * / файла options.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.

вариант.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. См. Раздел «Реконфигурация контактов NFC nRF52 как GPIO» ниже.

Обновление файлаboards.txt

Вот запись SKYLAB_SKB369_Nano2replacement в файлеboards.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_size_SKYLABM_REPLACEMENT.upload.maximum_Size = 524288 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 = жесткий -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 указывает, какой инструмент использовать для загрузки. Если вы используете отладчик частиц, используйте протокол = cmsis-dap, как показано выше.

Загрузчик - эта строка одинакова для всех плат в этом файлеboards.txt

Сборка - в этом блоке нужно обновить только две строки. Строка SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant указывает имя каталога этой платы в подкаталоге варианта. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board - это значение, добавленное к ARDUINO_ и затем определенное при компиляции кода. например -DARDUINO_SKYLAB_SKB369_Nano2replacement Это позволяет вам включать / отключать части кода для определенных плат.

Low Freq Clock - Эта строка, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, указывает источник низкочастотных часов, используемых для lp_timer. Есть три варианта: -DUSE_LFXO, -DUSE_LFRC и -DUSE_LFSYNT. Лучший выбор - -DUSE_LFXO, если на плате есть внешний кристалл 32 кГц. Если нет, то используйте -DUSE_LFRC, который использует внутренний RC-генератор и потребляет немного больше тока, на ~ 10 мкА больше, и намного менее точен в разы. Не используйте -DUSE_LFSYNT, так как это поддерживает работу микросхемы все время, что приводит к потреблению тока в мАс.

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

Перенастройка контактов NFC nRF52 как GPIO

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

Например, pfod_lp_nrf52.zip, перенастраивает контакты GT832E_01 для использования в качестве ввода-вывода. В раздел GT832E_01 для этой платы в файлеboards.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. Потребляемые токи ~ 29 мкА достигаются настройкой параметров подключения. В результате срок службы батарейки типа «таблетка» CR2032 составил ~ 10 месяцев. Более длинный для монетных элементов и батарей большей емкости. Добавление двух дешевых солнечных элементов легко продлило срок службы батареи на 50% и более. Для питания монитора от солнечных батарей достаточно яркого комнатного света или настольной лампы.

В этом руководстве также рассказывается об удалении защиты микросхемы с предварительно запрограммированного nRF52 и о том, как настроить новое определение платы в соответствии с вашей собственной печатной платой / схемой.

Никакого программирования под Android не требуется. Всем этим занимается pfodApp.

Рекомендуемые: