Data bus sharing between many ESP32 modules

Job ID: 32795262

Budget: $30 – $250 USD

Hello,
For my personal project, I need someone to develop software that manage data transmission over the UART between multiple ESP32 modules sharing the same RX/TX UART wires.

Any ESP32 module can then transmit, and receive, frames over the UART at any time. If concurrent transmission (two ESP32 transmission at the same time) occurs, it is managed by the collision detection algorithm to implement.

The solution is to implement software for the collision detection mechanism to manage concurrent transmission. The method to use is of type CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) that ensures that any node (an ESP32 module) wishing to send data do not access the RX/TX bus until it is available. It is inspired by the CAN protocol.

The frame format to implement is provided in the attached document.

Milestones/Tasks consist in delivering running software (base code, test code and sample code) that implement:

-Milestone 0)UART communication, at maximum speed (at the level of MBaud) between two ESP32 modules. Make sure an open drain configuration works OK on UART pins. Manage the ESP32 TX pin when transmission is needed. ESP32 RX pin always enabled to listen to the traffic and then detect collisions. The software will display the performances (throughput, latency…) of transmission on the Arduino serial monitor of each ESP32 module.

-Milestone 1) Develop software that manages data transmission over the UART. First version to develop is a special case: one emitter and several receivers. The frame format to implement is provided in the attached document. Special attention will be given to the time needed for CRC calculation.

-Milestone 2) Develop the full software that implements the CSMA/CA protocol and transmitting frames as defined above.

-Milestone 3) Update the software of 1) to manage data transmission over the UART with several ESP32 managed by the collision detection algorithm develop in 2). Sample and test code are provided illustrating communication between many emitters and many receivers.

Requirements:
• Software has to work Arduino and be compatible with the FreeRTOS support
• The candidate must possess at least 3 (three) ESP32 boards to do test at his place.
Related categories: C Programming Embedded Software Arduino