DynStone is a project created around the idea of dynamic Eddystone BLE Beacons
This project was developed during an internship at BBR Verkehrstechnik GmbH. The goal was the create a system, in which we can use the functionality of originally static Eddystone Beacons for dynamic transmitting of information in the case of railway systems. The hardware used for the beacons in this project is the affordable ESP32.
Provided are multiple files. Two of those are .ino files which can be directly uploaded to an ESP32 and one python script (or the compiled .exe) that is used for communicating to the ESP32 via the serial port in an easy to understand GUI (partly written in german).
The image below shows my setup with two ESP32. In this case i marked the receiving end with [E] and the sending end with [S].
Once both ESP32 were configured with the provided .ino files you can start communicating with them via the python GUI. The first window will ask you to choose between sending (Senden) and receiving (Empfangen) information.
When picking the first one you will be prompted with a new window, which let's you pick the relevant port for the ESP32 as well as define the information that should be send over. This application is written for a very specific function, which is why you are only allowed to send specific values in a specific range.
Zielgeschwindigkeit: (Int) from 0 to 120
Zielentfernung: (Int) from 0 to 1000
GKS(Signal)Nummer: (Int) from 0 to 1023
After sending the desired information we can create a second instance of the program or simple relaunch it but we will choose (Empfangen) this time. This prompts us with this window which simply requires a port to be selected and with the press of a button and if everything worked out you should receive the information you send before exactly as you send it in the three labels of the window.
Now, this code is very simple but quite restrictive. If you plan on changing it i would advice to have a good look into the .ino files in which you will be able to see that this program has a maximum transfer limit of 17 bytes. The content of those bytes can be chosen as you wish and will be stored in a simple char array until the ESP32 reboots or gets new information.