IoT Projects


Circuit Button Override

This is a project that allows you to activate a button-controlled physical circuit over the internet. This project specifically applies this to a remote control that controls actions on a dog training collar, but it could be generalized to any sort of button-based circuit that you want to override. The remote has two buttons: one that causes the collar to emit a beeping noise (sound), and another than causes the collar to vibrate (buzz).

The motivation is that this remote collar is a useful tool for dog training. We can train our dog so that the sound means “go to your bed” and the buzz means “stop barking”. However, we also want to be able to use this when we are out of the house. We spy on our dog using a home camera, and if she is barking or pacing at the door, we want to be able to activate these controls so she knows to calm down. This is important since if left unchecked, the frantic behaviour can lead to excessive howling and biting at the door. Note that this isn’t a shock/e-collar. Those have more specific training methods, and the risk of something going wrong with the circuit is too high.

The main components include a website from which we can activate the sound and the buzz functionality, and a circuit, which is hooked up to the remote. The remote, in turn, activates the sound/buzz on the collar.

Check out the GitHub repo


IoT Garden

The IoT garden is a hardware project and web application that allows you to monitor the moisture of a houseplant and also water from anywhere you can get an internet connection. The hardware consists of a NodeMCU chip connected to a moisture sensor and a motorized pump. It is programmed to periodically poll the moisture sensor and send the result to a web server, which backs a web application. The user can see the moisture on the dashboard web application and make the decision to trigger the water pump for a short period of time. The user assembles the physical unit, adds it onto the dashboard, and the NodeMCU code is automatically generated. The user just has to enter some credentials in the generated file and upload it to the NodeMCU.

The NodeMCU is like an Arduino microcontroller, but it has built-in wifi capabilities, making it ideal for IoT projects. Communication between the web server and the NodeMCU is done using the lightweight MQTT protocol, and an MQTT broker is hosted on a managed service. The NodeMCU program is written in C++, the web server is written in Node.js, and the front-end web application is written in React. I’ve added a simplified version of the project to hackster.io.

Check it out here


IoT Car

This was my first full-stack IoT project. I wanted to create something that had two-way communication between a user on a web application and a ‘thing’. I built and wired up a small motorized car with a NodeMCU chip (like an Arduino, but WiFi-capable), motorized wheels, a blinking light, a thermometer, and an LCD display. I also spun up a simple web application from which to control and monitor the car. I established communication between these two endpoints using the lightweight MQTT protocol. From the dashboard, the user could move the car, send a message to the LCD display, switch on a light, and read the temperature.

Check out the GitHub repo