Introduction: Anyone Home?

About: To learn is to live!

Once upon a time, many moons back, if you wish to give your grandmother a call you would need to collect some wood, light a fire and then send smoke signals into the air. If she was on the lookout then she would know that you were thinking of her; as would anyone else who was looking too.

Well things progressed to the point where one was eventually able to make contact using the humble telephone. In the initial days however this was via a party-line. In this scenario, anyone on the same line would hear the phone ring (each person was assigned a unique ring sequence) and would be able to listen in on the call if they wanted.

After the party-line can the private line. Now only those in you home would hear the phone ring and while they could also hear what you were saying, they could not hear the person on the other side of the line. As with the party-line, the user had to use the phone where it was plugged in. Cordless phones improved things by allow you to use it anywhere within a reasonably large radius of where the base unit was plugged in.

Enter the mobile phone. We finally had a small communications device that was easy to use privately and in almost any location (assuming adequate cellular coverage). Alas the developers never foresaw the frustration that the silent mode would cause! How often have you tried ringing a member of your family only for it to ring and then finally go to voice mail; all because they had left it on silent.

And do this is where the following device comes into play. In short it is an alarm that connects to your home wireless network. If you are having trouble reaching someone who you know is at home, you can trigger the alarm using your mobile phone. On hearing the arm the guilty party can silence it by pushing the red button and then go to their phone to call you back; resulting in all being well once again.

Materials

  • 3D printer filament (2 colours)
  • Solder
  • Super or Epoxy glue
  • Connecting wire
  • BC557
  • LM3940IT
  • ESP-01
  • 10uF Electrolytic Capacitor
  • 0.1uF Capacitor
  • 33uF Capacitor
  • 0.47uF Capacitor
  • 1.8K Resistor
  • USB-C connector
  • Active Buzzer
  • Momentary button
  • Screws to hold the cover in place
  • Glue gun sticks

Tools

Software

  • FreeCAD
  • Cura
  • OpenHAB - although the project could be modified to use a simple webserver or another home automation system.

Step 1: Printing the Case

I have attached the FreeCAD file so that the models can be easily modified. As Instructables does not accept "FCStd" or "ZIP" files, you will need to remove the "TXT" extension from "Horn-Final-V2b.zip.txt" and then extract the FCStd from it.

I printed the horn in a glow-in-the-dark filament which give a good effect at night.

From the FreeCAD model you will see that I original had mounts for the PCB but the Buzzer was too thick resulting in their not being enough space to mount the board on these. I therefore reprinted without the mounts and hot-glued the PCB to the base.

Once again I see how important design it. If I were going to do this again I would

  • Include a fence to mount the buzzer in
  • Change the opening at the bottom so that the board can be mounted properly without hitting the buzzer.

Step 2: Circuit & Code

The schematics and code are all self explanatory.

I used a LM3940 to regulate the power, bringing it down to the required 3.3V and then the GPIO0 pin of the ESP-01 to drive the buzzer and the RX pin (in a pulled up state) for the button.

I am very much self taught so the configuration and component values might not be the best but the project works as required so I am happy.

To programme the ESP-01, I used a ESP01 Programmer Adapter UART CH340 USB to ESP8266. Note to enable programming, you will need to short out two of the pins (as shown in the photos)

Step 3: Putting It All Together

I used OpenHAB via a VPN to connect to and control my device. As a framework, OpenHAB is great but it pretty complex to configure and so its setup is beyond the scope of this instructable.

Easier approaches would be to use BLYNK (https://www.instructables.com/Arduino-Tutorial-BLYNK-Style-Button-and-ESP-01-Rel/), a simple webserver (https://create.arduino.cc/projecthub/ROBINTHOMAS/esp8266-esp-01-webserver-7248ca) or the following https://randomnerdtutorials.com/esp32-esp8266-web-server-physical-button/. Using a simple webserver (together with a VPN connection) is by far the easiest approach (the code referred to in the previous link should give you a good idea as to where to start).

Once all soldered together, I found it awkward sticking the USB-C socket and Buzzer in place without pulling the wires off of the board. Next time I will look to use dupont or SM female/male wire connectors to allow me to disconnect the buzzer, button and USB-C; even better would be to change the PCB to accommodate XH2.54 header pins.

The horn was attached with epoxy glue and the buzzer and USB-C power socket with hot glue.

From the video you will see that it all works well i.e. the buzzer can be triggered (or silenced) from the web GUI and the button can be used to silence it. Because of the delays, in the code (between sounding and silencing the alarm) the button needs to be pressed for up to two seconds before the buzzer is silenced.

Latest Update

Using https://randomnerdtutorials.com/telegram-group-esp32-esp8266/, I have removed this from OpehHAB and am rather controlling it using Telegram. I have a group for my home and all my automation is controlled via this group. The only issue that I have is that there is a 5 second delay between commands being issued and the action carried out. But on the plus side, it is very easy to manage.

Step 4: Update: Moving Device Across to Home Assistant.

I have now changed this to work with ESP Home in a Home Assistant implementation.

Here are some pointers to get going; assuming that you have Home Assistant running:

  • Install and setup ESPHome integration:

  • To enable text to speech so that you can integrate your smart devices with the buzzer:

  • ESP Home YAML file: see attached file.
  • To link text to speech to the buzzer use the approach as directed here.

Ok so this last step renders the actual beeping device redundant but it is still a fun project.