This project automatically connects several ESP32 or ESP8266 in range into a WiFi mesh. Through touch input devices can display and exchange pictures, show synchronised visualizations and track peoples face-to-face interactions.
- Painless Mesh (for connecting the ESPs into a mesh)
- TFT_eSPI (for controlling the display on the TTGO T-display board)
- eppfel/EasyButton (Custom Fork) (Button debounce and abstraction)
- eppfel/ArduinoTapTempo (Custom Fork) (To set beat from taps)
- ESP Mesh Badge Protocol (shared protocol specifications)
- Deprecated: CapacitiveSensor (for ESP8266 touch sensing)
The current implementation was implemented and tested on the TTGO T-display (ESP32 dev module).
Other ESP32 boards are not supported anymore but could be by removing the calls to the TFT display.
ESP32 does only connect to 2.4GHz bands
The program expects two capacitive touch buttons to be attached. Further, RGB LEDs are connected through 3.3V. See pin definitions in the header file for the layout.
All boards can immediately join the mesh without further setup or any electronics, but I/O is limited to the hardware buttons and display.
This board does not feature an on-board LED, so an external has to be attached, to show connectivity. Further this board controls its integrated display.
- You need
platformio
installed. I suggest https://platformio.org/platformio-ide (Arduino IDE does not support the build flags) - Clone this repository to your machine.
git clone [email protected]:digi-haalarit/esp-mesh-bonding-interaction.git
- Open this repository in your platformio IDE (e.g. Visual Studio Code) or in your terminal
cd esp-mesh-bonding-interaction
- Run the
build
task in your IDE orplatformio run
in terminal (platformio automatically installs the dependencies on the first run)
Depending on the goal there are different ways to upload the software onto the ESP32 board.
If you have a compiled binary, you only need the esptool to upload the board.
- Install
python
and esptool, if it is not already in your machine. - Check the port you want to upload to (e.g.
/dev/cu.usbserial-01E063F5
, you can get device withpio device list
) - Run
esptool.py --port /dev/cu.usbserial-01E063F5 write_flash 0x10000 DigiMerkkiApp.bin
(With replacing the port and the correct path toesptool.py
)
- Set upload port in platformio.ini (you can get device with
pio device list
) - OPTIONAL: Run
Erase flash
(This deletes all data on the board and is needed for a clean start) - Run
Upload
- OPTIONAL: Run
Upload filesystem image
(This will delete files changed by the app, i.e.configuration.json
andinteractionlog.json
. Hereafter the app also initialises the configuration.)
Working with multiple boards you can make use the scripts uploadall.sh
or eraseandupload.sh
to perform the upper steps for multiple boards. Just edit value of ports
to filter /dev/cu.usbserial-*
all boards connected to vis USB.
At this point the Huzzah supports to control NeoPixel through FastLed library.
The feather with ESP8266 needs a <500 OHM
resistor between two pins to sense capacititce touch but is not supported at the moment.