Project:Enhanced Door Bell
Enhanced Door Bell
|Release Date:||November 2018|
|Tools Used:||3D Printer|
|Software Used:||custom development|
Our Workshop is equipped with speakers in each room which can be controlled centrally. Issue #2 describes these speakers in a little bit more detail.
When discussing a proper usage of these speakers, we came up with the idea of building an enhanced door bell, which should be capable of playing custom sounds and be heard in each and every room.
- Play MP3 Files
- Play sound in every room
- Custom bell button
- MQTT Control
- Code separation between critical (Door Bell Task) and optional (MQTT stuff) Task.
The door bell is based on a ESP32 and thus has integrated WiFi Control.
In order to play MP3 Files, we are using a MP3 shield based on the VS1053B.
The whole thing is powered by a 24V notebook power supply which is attached to the speaker cables.
It is enclosed in a custom casing.
For the wiring, please see the fritzing sketch on the right or check the original file on GitHub.
Unfortunately, there was no fritzing part available for the ESP32 board we are using (DEVKIT V1). Therefore, the fritzing sketch does not contain the connection between the ESP and the MP3 board.
The VS1053 is attached to the ESP as follows:
|VS1053 Pin||ESP Pin|
You can find the software over on GitHub.
In addition, we are using PubSubClient as the MQTT Client of our choice.
At every press of the bell button, the door bell publishes "Ring Ring" to the /DoorBell/Ring topic.
In order to control the door bell, cou can send a JSON to the /DoorBell/Control topic.
The JSON should (for example) look as follows:
Within the JSON, the following commands are available:
|play||filename to play||plays the given filename|
|selectRingFile||filename to use as the ringtone||sets the given filename as the future ringtone|
|setVolume||Volume (lower numbers = higher Volume)||sets the given Volume|
|listSD||folder to list (e.g. '/' for listing all content)||publishes the content of the SD card to /DoorBell/Answer|
|listconfig||none||publishes the current configuration to /DoorBell/Answer|
There is a python script over at GitHub, which makes use of the above-mentioned MQTT commands in order to get a list of available ringtones and randomly select one.
It is scheduled via a cronjob, so every day you come in to the space, there should be a new ringtone waiting for you.
- Integrate a Soundboard
- Decide on soundboard functionality
- Case for the soundboard
- Buttons for the soundboard