Project to transform a curling broom into a measurement tool to evaluate effectiveness during sweeping in curling. An ESP32 measures the pressure exerted on two cells and an accelerometer measures the frequency of movement. The data is transmitted via BLE to a Bluetooth Web-enabled computer or smartphone.
Have you ever wondered how effective your sweeping is during a curling match? I have occasionally wondered that myself, particularly compared to the movement made by other players in the club.
This is my Christmas project (that had been simmering for quite a while). I modified one of my old brooms to make it “smart” so I could measure the force exerted towards the ice and the movement made. Just the two main factors in performing a great sweeping.
A microcontroller on the broom handle reads data from different sensors and transmits it via Bluetooth BLE to a computer or smartphone. The data processing is not done by the broom, so the data can be read frequently.
The data reading device (computer, smartphone or tablet) must be compatible with the Web Bluetooth API. Normally all systems with the Chrome browser or similar (except iOS) are compatible.
The heart of the broom is run by an ESP32 microcontroller, because it’s a great mix of power and connectivity (WiFi and Bluetooth). Because of this versatility, the ESP32 has become my favorite processor and the one I use for my latest projects.
In the broom bearing I inserted two cells to measure weight. They are sensors that change resistance based on the applied weight. The data reading is done through the HX711 IC. This IC allows for two reading frequencies of 10 or 80 readings per second (depending on the RATE pin).
The other sensor present is an accelerometer so you can measure the frequency of movement. In the first prototype I used an MPU6050, which integrates an accelerometer and a gyroscope.When I created the first version of the PCB I had to replace the chip with one almost similar and I chose the ADXL345, which however is only an accelerometer.
An LED lets you know if the device is working and ready to measure. When power is applied, the circuit lights up briefly and then the calibration part of the program is executed. I recommend that you place the broom vertically and lean it against the wall and then turn it on, so you can best perform the calibration. If everything is working properly then the LED turns on and off three times and you can connect the data display device with the BLE. If something gives error in the calibration phase then the LED stays on and the program stops.
In the printed circuit I had to integrate the necessary for the management (charge, use and protection) of a LiPo battery.
Here below I have represented a principle scheme.
This is the schematic updated to version 2 of the PCB that I haven’t commanded and tested yet though.
Data format during BLE transfer
I could have split the various read values into different features, but that would have been a bit tricky to edit during development. All values are in the
2902 characteristic and are divided by a comma.
|1||cell weight 1|
|2||cell weight 2|
|5||angle of the broom (to be realized)|
All the code is freely available and I think I’ve commented on it enough. So I don’t describe all the details here. The diagram represents the rough principle of how the code is structured.
Data visualization is made possible thanks to some libraries:
- Bootstrap: to manage the page structure
- Chart.js: to view graphs
- Simple statistics: to calculate various statistics
- html2pdf.js: to export the page in PDF
Everything I believe I like to share freely and I have made no exceptions to this as well. All the work is freely accessible and if you are in the area you can stop by and borrow my broom.
I have already had some surprises thanks to the measured values, I thought I would be able to download more weight on the broom. But I was able to improve my values by trying to change the technique.
Of course you need some training to increase consistency during a game. This is where another project of mine can come in handy, to train sweeping at home.