Представляем обзор платы DT-BL10, с чипом BL602 от Bouffalo Lab – это микроконтроллер Wi-Fi + BLE с тактовой частотой до 192 МГц. BL602 заинтересовала потому, что она начала появляться в различных IoT-устройствах, таких как умные светодиодные лампы, управляемые по WiFi реле, контроллер светодиодной ленты и другие. Встречается не так часто, как ESP8266 или BK7231T/BK7231N, но всё-таки чаще, чем другие менее известные модули. Вероятно, так же часто, как системы Realtek (модули RTL8710BN, WB2R и подобные).
Удалось получить плату из Китая примерно за 5 долларов (включая стоимость доставки).
На плате, помимо основного модуля BL, есть стабилизатор LDO, дающий 3,3 В из 5 В с USB и CH340N, то есть преобразователь USB в UART, для которого может потребоваться установка драйверов. Контакт «DX» соответствует «GPIOX» (где X — индекс контакта), поэтому проблем с сопоставлением контактов нет.
SDL BL602 и пакетная загрузка
Необходимый SDK доступен бесплатно на Github: github.com/bouffalolab/bl_iot_sdk
В состав SDK также входит программа для загрузки батча по USB (собственно UART, на плате есть CH340), BLDevCube.exe. Компиляция производится в Msys из пакета Mingw. Чтобы загрузить пакет:
- отпускаем порт UART (если он у нас открыт в Realterm для чтения логов)
- удерживаем кнопку загрузки нажатой
- на мгновение нажимаем En
- отпускаем кнопку загрузки
- в BLDevCube.exe включаем пакетную загрузку (наш бинарник прошивка.bin)
- После загрузки пакета для нормального запуска программы кратковременно нажмите кнопку En.
Кроме того, также доступен фреймворк для PlatformIO и VSCode: github.com/Community-BL-IOT/pio-bl602-boufallo-arduino-test
Это позволяет программировать этот модуль аналогично к Ардуино:
Плата DT-BL10 это отличная альтернатива для начинающих, и она, безусловно, облегчит приключение с этой платформой для многих людей.
- Вот документация на BL602: pine64.github.io/bl602-docs
Доступные SDK включают примеры использования периферийных устройств и доступных библиотек, включая АЦП, ЦАП, доступ к флэш-памяти, GPIO, I2C, PWM, RNG (генерация псевдослучайных чисел), RTC, SPI, таймеры, UART, сторожевой таймер), OTA, сокеты, HTTP, DNS и многое другое.
Модуль с DT-BL10 проще всего установить на две тестовые платы, причем от одной из них приходится отсоединять одну из шин питания/земли. Это очень легко сделать со стандартными макетками:
Он просто не поместится на одной макетке.
BL602 в IoT-устройствах
BL602 используется в различных «умных» устройствах, например в контроллерах светодиодных лент и других дистанционных модулях.
В общем плата довольно удобна в использовании, но есть несколько моментов, которые можно было бы улучшить:
- – на плате имеется один CH340, то есть один порт UART, который используется как для вывода (и приема) информации на терминал, так и для программирования. В случае с базовым SDK интегрированной среды для BL нет, поэтому в качестве терминала использовался Realterm, а для программирования BLDevCube.exe. По этой причине перед каждым программированием приходится вручную освобождать порт Realterm и снова открывать его после программирования. Это всего в два клика, но к чему они. Впрочем, эта проблема решается заливкой батча по WiFi – ОТА: github.com/bouffalolab/bl_iot_sdk/tree/master/customer_app/system/ota/demo_ota
Возможно, это тоже решено в упомянутом ранее фреймворке от PlatformIO, там все вместе в одной IDE. - – приходится нажимать эти кнопки, чтобы загрузить батч. Если бы используемый преобразователь USB в UART имел GPIO, этого можно было бы избежать. Аналогичный механизм есть и в Arduino. В проектах можно использовать MCP2221 и соответствующий драйвер. Даже в случае с PIC32MZ через GPIO MCP2221 удается замкнуть контакт RESET PIC на землю и вызвать перезагрузку.
Эта плата действительно упростила разработку OpenBeken (OpenBL602), но гораздо проще тестировать её на макетной плате, чем на устройстве IoT.