| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
This software runs on an ESP32 to publish BNO055 orientation data over a Bluetooth Low Energy (BLE) connection, and optionally MQTT/WiFi, for use with osteele/imu-tools.
The software defines the following BLE services.
Characteristics:
Sensor (READ; 509B0002-EBE1-4AA5-BC51-11004B78D5CB): A packed structure of sensors readings. The message format is:
This protocol has the property that a message with just the Quaternion position is exactly 20 bytes, or one BLE 4.0 packet.
Calibration (509B0003-EBE1-4AA5-BC51-11004B78D5CB; READ, NOTIFY; 4 x uint_8): The system, gyro, accel, and mag calibration values, each ranging 0..3. These are NOTIFYed when they change (from initial assumed values of 0).
Characteristic data are transmitted in little-endian order, not network order. This matches the standard GATT profile characteristics such as the heart-rate characteristic.
The device is polled 60 times / second. The sensor characteristic is always written and notified. The polling interval is a constant that is defined in the code. The system doesn't appear to be capable of transmitting at greater than ~126 samples/second. For greater rates, consider MQTT, or onboard processing of the data.
Characteristics:
MAC address (709F0002-37E3-439E-A338-23F00067988B; READ; string). imu-tools uses the MAC address as a device id that persists across connections (the Web BLE API doesn't make the BLE device id available to code). The MAC address is used instead of the BLE address, so that a device that publishes both to WiFi and BLE can be uniquely identified across both protocols.
BLE Device Name (709F0003-37E3-439E-A338-23F00067988B; READ, WRITE, NOTIFY; string). This is persisted to Flash via SPIFFS. It's useful as a nickname, to identify multiple devices in a fleet management scenario. This is the name that appears in the Web BLE connection dialog.
The UART Service (6E400001-B5A3-F393-E0A9-E50E24DCCA9E) uses the Nordic UART Service and Characteristic UUIDs. It currently responds to RX "ping" with "pong", and "ping\n" with "pong\n". It is for debugging and possible future extensions.
Characteristics:
This can all be done fairly easily by installing either the PlatformIO Visual Studio Code extension, or PlatformIO for Atom, and using the PlatformIO GUI within the editor.
It should also be possible to install the code using the PlatformIO Command Line, or by opening main.cpp in the Arduino IDE and install the Arduino ESP32 board.
In order to publish MQTT messages, create the following files in this project's data directory. Replace ExampleSsid by the name of your WiFi network, and examplePassword by your WiFi network's password. Replace the mqtt.config host name, port number, username, and password by the address and credentials of a valid MQTT broker.
wpa_supplicant.txt
ExampleSsid examplePassword
mpqtt.config
m10.cloudmqtt.com 1883 username password
These files need to be downloaded to the ESP32. In PlatformIO IDE:
This copies the files the files from ./data to the attached ESP's SPiFFS file system.
If you want to use the command-line, instead of the PlatformIO IDE, instructions are here.
The WPA supplicant file may contain multiple groups of ssid and password, optionally separated by a blank line. Whhen the device boots, it scans for WiFi stations, and attempts a connection to the first ssid that is listed in the supplicant file that is in this scan. If this connection fails, it does not attempt any other connections, so an invalid password for a valid ssid will prevent connection to networks that are listed lower in the file.
Note that the ESP32 can't connect to 5 GHz WiFi networks.
The code is currently specific to the ESP32. Porting it to another board that supports the Arduino APIs requires at least these changes:
MIT
| Back | FazBrowse Home | New Git URL |