BLE + MicroPython op de ESP32

Het kon al op specifieke apparaten zoals de Lopy of in custom builds of als je Circuit Python gebruikte op hardware die daar ondersteuning voor heeft. Maar op de ESP32 had je tot voor kort nog niet de mogelijkheid om BLE (Bluetooth Low Energy) te gebruiken binnen MicroPython als je gebruik maakte van een van de officiële firmware images. Met ingang van release 1.12 is dat eindelijk wél zo. Flashen van mijn ESP32 deed ik volgens de instructies die hier staan. Nieuw, wat mij betreft, was ook dat Thonny, de gratis open source IDE voor Python (en MicroPython) ook ondersteuning heeft voor het rechtstreeks werken op de ESP32.

Dat was tot voor kort nogal een gedoe. Anders dan bij de apparaten die Adafruit maakt, kon je de ESP32 niet als USB-drive zien na aansluiten op je laptop. Maar de Thonny “ziet” de ESP32 en je kunt dan bestanden openen die er op staan (ander dan bij Arduino vindt compilatie niet al vooraf plaats dus je kunt de programmacode ook achteraf nog lezen), nieuwe bestanden aanmaken én je hebt de REPL beschikbaar om interactief commando’s uit te voeren die dan op de ESP32 worden uitgevoerd.

Dat maakt het debuggen een stuk gemakkelijker. Mauro Riva  heeft op zijn blog niet alleen blogposts over het gebruik van MicroPython staan (zoals deze over het zelf compileren van de firmware met BLE support), maar ook een github repository. Daar kun je ook een aantal voorbeelden vinden.

Ik heb deze getest waarbij de ESP32 doet alsof er een thermometer aan hangt en via BLE random temperaturen doorstuurt. Voordat die code werkt moet je ook ble_advertising.py die ook in zijn github repository te vinden is op de ESP32 zetten.

Daarna kun je op je telefoon bv een BLE Scanner installeren en draaien. Die ziet dan minimaal één BLE-device met als naam MPY-TEMP. Daar zie je dan de temperatuurwaarde schommelen.

Er staat ook een voorbeeld in van code die juist luistert naar een ander apparaat dat via BLE temperaturen doorstuurt. Hier staat een voorbeeld (zo te zien niet geschreven voor MicroPython 1.12 dus hij zal niet een-op-een werken) waarbij je ESP32 via BLE scant naar de beschikbare apparaten (was gisterenavond in de trein best grappig, want dan zie je heel veel apparaten) en die informatie dan via WiFi (moet hij natuurlijk wel een verbinding hebben) en MQTT doorstuurt naar een centrale server.
Het ESP32 board dat ik gebruikte heeft een slot voor een micro-SD kaartje. Dat zou voor gebruik in de trein of onderweg logischer zijn. Of via het Things Network en LoRa.
Let er daarbij wel op dat het zomaar verzamelen en opslaan van die data meteen uitdagingen oplevert in het kader van de AVG. Maar je zou zo inderdaad eenvoudig Bluetooth tracking kunnen implementeren met een paar euro aan hardware.

Deze ESP32 zal uiteindelijk een (externe) gyroscoop en hoogtemeter aangesloten krijgen. Daarbij zal hij dan de meetwaarden zowel opslaan naar micro-sd kaart als doorsturen via BLE zodat een telefoon die in de buurt is de data ook meteen realtime kan ontvangen.

0 0 stemmen
Bericht waardering
1 Reactie
Inline Feedback
Bekijk alle reacties
trackback

BLE + MicroPython op de ESP32 https://t.co/o2PAn2vg6Q