This project uses the Kalam32-DEV IoT board from ProtoCentral (that can also take Arduino shields directly) and the ProtoCentral ADS1292R ECG & respiration monitoring Arduino shield to make a TCP-based wireless real-time ECG monitor.
ProtoCentral's new Kalam32-DEV Arduino-like development is based on the new ESP32 from Espressif, the supercharged cousin of the extremely popular ESP8266 WiFi chip. This board from ProtoCentral is designed for quickly prototyping and developing IoT applications around this chip.
We also have our own ADS1292R-based ECG and Respiration shield for Arduino boards, with an Arduino shield footprint. This shield, originally designed for use with an Arduino is an easy way to monitor ECG and Respiration using standard chest leads for measurement.
We wanted to test the ESP32's WiFi capabilities as well its role in low-cost connected health devices. Before developing a wearable medical device with IoT capabilities, this platform allows you to test it out on a more familiar platform.
While using TCP is not the most efficient way to send data from an ESP32, it really enables us to test the reliability of the Kalam32's data reliability and it's capability to run a battery-powered TCP server !
The Kalam32-DEV board takes any Arduino shield and allows it to be plugged-in. The ADS1292R shield communicates through an SPI interface. The Kalam32 has one of the SPI devices mapped to match the Arduino's SPI pin connections, which allows the shield to be plugged-in directly without any hardware modifications.
When we developed the Kalam32 board, and at the time of writing this article, Arduino IDE software support for the ESP32 is still not fully matured, so we used Espressif's own ESP-IDF development framework along with Xtensa toolchain provided free by Espressif, both are free to use.
ESP-IDF is Espressif's toolchain and framework for developing applications with ESP32. It is very efficient and coding is in C language. To find out more about how to use the ESP-IDF development framework, please check Espressif's tutorial.
The updated code now connects from the Processing TCP Client GUI to the Kalam32 using the mDNS address "Kalam32.local". This means that IP address is no longer needed. As long as both the client and the Kalam32 board's wifi are connected to the same network, just searching for "Kalam32.local" should identify the board. This will of course be a problem if multiple boards are present.
Direct TCP connections may not be the best way to use the Wifi capabilities of the Kalam32 due to a) continuous power consumption, b) single client TCP connectivity only tested. But, this is useful in situations where some parameter needs to be acquired wirelessly and the bandwidth provided by Bluetooth is not enough or where the project utilises the existing Wi-Fi infrastructure to transfer data.
Arduino IDE-based code support for the Kalam32 board would be offered in future.