Witajcie, przedstawię tu jak w praktyce prezentuje się płytka rozwojowa DT-BL10 oferująca BL602 od Bouffalo Lab, czyli mikrokontroler Wi-Fi + BLE o taktowaniu do 192MH.
Płytka ta była już pokazywana na naszym forum jako news:
DT-BL10 - płytka prototypowa z BL602, Wi-Fi i Bluetooth za 5 dolarów
BL602 zainteresowałem się ponieważ zaczął występować on w różnego rodzaju urządzeniach IoT, takich jak inteligentne LEDówki, przekaźniki sterowane przez WiFi, kontrolera pasków LED, itd. Nie występuje on tak często jak ESP8266 czy tam BK7231T/BK7231N, ale częściej niż inne mniej znane moduły. Chyba mniej więcej tak często, jak układy Realteka (RTL8710BN, moduły WBR2 i podobne). Mój OpenBeken już go wspiera, ale i tak uznałem, że warto przedstawić pokrótce tu ten moduł.
Zakup płytki
Płytkę udało sprowadzić mi się z Chin za około 35 zł (już wliczając koszty przesyłki). Nie było problemów z cłem, ale na paczkę czekałem kilka tygodni. Oto zrzut ekranu z aukcji gdzie kupowałem:
Otrzymany zestaw:
Na płytce oprócz głównego modułu BL jest stabilizator LDO dający nam 3.3V z 5V z USB oraz CH340N, czyli konwerter USB na UART, do którego może być potrzeba zainstalowania sterowników.
Pin "DX" odpowiada "GPIOX" (gdzie X to indeks pinu), więc nie ma problemów z mapowaniem wyprowadzeń.
SDL BL602 i wgrywanie wsadu
Wymagane SDK dostępne jest za darmo na Githubie:
https://github.com/bouffalolab/bl_iot_sdk
SDK obejmuje też program do wgrywania wsadu przez USB (a właściwie to UART, na płytce jest CH340), BLDevCube.exe.
Opis kompilacji i wgrywania wsadu przedstawiałem już w tym temacie:
Zamiennik Tasmoty dla BL602, programowanie, parowanie z Home Assistant.
Kompilacji dokonuje się w Msys z pakietu Mingw.
Aby wgrać wsad:
1. zwalniamy port UART (jeśli mamy go otwarty w Realterm by odczytywać logi)
2. trzymamy wciśnięty przycisk Boot
3. chwilowo naciskamy En
4. zwalniamy przycisk Boot
5. w BLDevCube.exe włączamy wgrywanie wsadu (nasza binarka to firmware.bin)
6. po wgraniu wsadu, by uruchomić normalnie program, wciskamy krótko przycisk En
Oprócz tego, od jakiś 9 miesięcy, mamy też dostępny framework dla PlatformIO i VSCode:
https://github.com/Community-BL-IOT/pio-bl602-boufallo-arduino-test
Pozwala to programować ten moduł podobnie jak Arduino:
Osobiście tego nie testowałem, ale uważam, że to wspaniała alternatywa dla początkujących i na pewno wielu osobom to znacznie ułatwi przygodę z tą platformą.
Dostępne przykłady
SDK zawiera przykłady użycia peryferiów i dostępnych bibliotek, obejmujące ADC, DAC, dostęp do pamięci Flash, GPIO, I2C, PWM, RNG (generowanie liczb pseudolosowych), RTC, SPI, timery, UART, watchdog), OTA, sockety, HTTP, DNS i wiele więcej:
Środowisko pracy
Moduł z DT-BL10 najłatwiej jest ustawić na dwóch płytkach stykowych, przy czym od jednej z nich musimy odpiąć jedną z szyn zasilania/masy. Jest to bardzo łatwe w przypadku standardowych płytek stykowych:
Na jednej płytce stykowej się po prostu nie zmieści. Warto zatem pamiętać o zakupie dwóch, jak dopiero zaczynamy przygodę.
BL602 w urządzeniach IoT
BL602 stosuje się w różnych urządzeniach 'smart', przykładowo w kontrolerach paska LED Magic Home:
W Sonoff MINIR3:
źródło: https://notenoughtech.com/home-automation-review/sonoff-minir3/
W LEDówce smart jako BL-200 (DT-BL200):
(przy okazji, na zdjęciu macie podpisane wyprowadzenia BL-200)
A tu z kolei z innej lampki LED, zupełnie inny, mini-pcb z BL602 (tutaj użyty jest protokół I2C do kontroli z obsługą LEDów RGB poprzez SM2135):
Podsumowanie i wrażenia
Płytka jest dość wygodna w użyciu, lecz uważam, że kilka rzeczy można by w niej usprawnić.
- na pokładzie jest jeden CH340, czyli jeden port UART, który służy zarówno do drukowania (i odbierania) informacji na terminal, jak i do programowania. W przypadku podstawowego SDK nie ma zintegrowanego środowiska dla BL, więc w roli terminala mam Realterm a do programowania używam BLDevCube.exe. Z tego powodu przed każdym programowaniem muszę ręcznie zwolnić port w Realterm a po programowaniu znów go otworzyć. Niby to tylko dwa kliknięcia, ale zawsze...
Aczkolwiek ten problem rozwiązuje wgrywanie wsadu przez WiFi - OTA: https://github.com/bouffalolab/bl_iot_sdk/tree/master/customer_app/system/ota/demo_ota
Być może rozwiązane jest też to we frameworku od PlatformIO wspomnianym wcześniej, tam wszystko jest razem w jednym IDE.
- szkoda, że w ogóle trzeba naciskać te przyciski by wgrać wsad. Jakby użyty konwerter USB na UART miał GPIO, to można by tego uniknąć. Podobny mechanizm jest w Arduino. W swoich projektach stosowałem do tego MCP2221 i odpowiedni sterownik. Nawet w przypadku PIC32MZ poprzez GPIO MCP2221 byłem w stanie zewrzeć do masy pin RESET pin PICa i wywołać reboot.
- nie wiem czemu niektóre wyprowadzone piny są N/C, przecież jak jest wolny to mogli dać tam masę, zawsze to wygodniej...
Mimo wszystko moduł jest dość poręczny i tani, te tytulowe "5 dolarów" się nie utrzymało, ale "niecałe 8$" też brzmi nieźle.
Płytka ta naprawdę ułatwiła mi rozwój OpenBeken (czy tam: OpenBL602), jednak znacznie łatwiej testować jest na płytce rozwojowej niż na urządzeniu IoT.
Bluetooth z tej płytki jeszcze nie uruchamiałem, ale jak coś ruszy, to może pokażę na forum.
Zapraszam do zapoznania się z dokumentacją BL602:
https://pine64.github.io/bl602-docs/
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
