CircuitPython unterstützt den ESP32 (noch?) nicht, was schade ist, denn die Implementierung sieht gut aus.
Hardware wäre wohl dann das:
bzw.:
Beim “offiziellen” MicroPython wird daran gearbeitet:
oder eben ein WiPy.
Das Ding von Adafruit sieht ganz nett aus. Der Preisunterschied zum WiPy (ohne Expansionboard) ist ca. 0. Da aber die Implementierung ein bisschen anders als bei pycom ist, lohnt sich der Mehraufwand wohl eher nicht.
Sollten die ESP32 mal direkt unterstützt werden, wäre das eine andere Sache. Die bekommt man deutlich günstiger.
Wenn das eine Option für dich ist, wäre das super, da die anderen Geschichten (Waage, Temperatur, Feuchte) intensiv von uns beackert wurden, du statt BLE auch alternativ später mit einem FiPy oder GPy/LoPy LTE nutzen könntest oder LoRa! Wenn wir dich irgendwie dazu “überreden” können wäre das prima! ;-)
Erstmal wäre das wirklich praktisch und da BLE GATT für den ESP32 im MicroPython Universum von Pycom ordentlich erschlossen zu sein scheint (wir werden sehen ;]), will das unbedingt eine weitere mögliche Telemetrie- und Steuerungseinheit für die genannte Firmware werden – sehr gerne früher als später, nachdem wir kürzlich ja auch erst bei Erschließung von LTE Cat M1 und NB1 mit dem Pycom FiPy endlich Land sehen konnten ;].
Mittelfristig wäre es toll, wenn wir die Angelegenheit gemeinsam auch auf andere MicroPython-Plattformen als die von Pycom bringen könnten [1].
Momentan ist die Firmware durch die Benutzung einiger systemnaher Module bislang vermutlich ausschließlich auf Pycom MicroPython lauffähig. Die Anpassungen werden jedoch für die wichtigsten Funktionalitäten nicht dramatisch sein und wir werden demnächst die Gelegenheit haben, die Firmware auf einem pyboard-D ausprobieren zu können. ↩︎
@poesel: As we talked about the nitty gritty details of this the other day, I would like to point you out to [1] and [2], where we have outlined our findings regarding implementing custom characteristics on top of the Bluetooth software stack of Pycom MicroPython.
BLE is not too terribly difficult. You can piece most parts together from examples and the documentation. My current problem is proper debugging. I’m not sure if its the code, uPy or iOS whos at fault.
I’m running the temperature example and it shows up as battery level on iOS and as temperature on macOS but without the correct value. Hmmm…
I’m trying to borrow an Android phone. The BLE apps there are much better.
The problem was not with the content (that will be tackled next) but with the advertisement. Unbeknownst to me there is a 37 byte length limit to the advertisement (in the BT standard). Shortening the name from ‘hiveeyes’ to ‘h’ solved the problem.
I think I’ve been through every (free) BLE app in the Appstore by now.
Apart from “nRF Connect” “BLE Hero”, “BLE”, “LightBlue” & “BLE Scanner” are suitable for our cause.
Short update: I have successfully advertised the existence of an ESP32 node to a GPy central, connected them and sent weight and battery level from the ESP32 to the GPy.
TODO:
add temperature and humidity
add non-standard services for more sensors
add a means to give an unique name to a node through a service
handle several nodes on the central
synchronise time between central and node
synchronize sleep between devices
The code is behind the link below. Its a standalone test and not integrated into the firmware, yet. That speeds up debugging.