DT-BL10 плата разработчика Wi-Fi с чипом BL602


Представляем обзор платы 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. Чтобы загрузить пакет:

  1. отпускаем порт UART (если он у нас открыт в Realterm для чтения логов)
  2. удерживаем кнопку загрузки нажатой
  3. на мгновение нажимаем En
  4. отпускаем кнопку загрузки
  5. в BLDevCube.exe включаем пакетную загрузку (наш бинарник прошивка.bin)
  6. После загрузки пакета для нормального запуска программы кратковременно нажмите кнопку 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.