| esp32_MachineNotify.ino | ||
| README.md | ||
ESP32 Washing Machine Activity Notifier
This project turns an ESP32 into a smart device that monitors a washing machine's activity using vibration and light sensors and sends notifications when a cycle starts and finishes. It also displays the current status on an OLED display.
Features
- Vibration Sensing: Detects machine operation by monitoring vibrations.
- Light Sensing: Detects the machine's internal light to determine if the door is open.
- Status Display: Shows real-time sensor data and device status on a small OLED display.
- Notifications: Sends start and stop notifications to a
ntfy.shtopic. - WiFi Connectivity: Connects to your local WiFi network.
Hardware Requirements
- ESP32 development board
- SW-420 vibration sensor module (or similar)
- BH1750 light sensor module
- SSD1306 128x64 OLED display (I2C)
- Breadboard and jumper wires
Pinout
| Component | Pin on ESP32 |
|---|---|
| Vibration Sensor | GPIO 4 |
| I2C SCL (OLED, BH1750) | GPIO 22 |
| I2C SDA (OLED, BH1750) | GPIO 21 |
Wiring Diagram
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| ESP32 Dev Board | | Vibration Sensor| | BH1750 Sensor | | OLED Display |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| 3.3V |----->| VCC |----->| VCC |----->| VCC |
| GND |----->| GND |----->| GND |----->| GND |
| GPIO 4 |----->| OUT | | | | |
| | +-----------------+ | | | |
| GPIO 22 (SCL) |------------------------------>| SCL |----->| SCL |
| GPIO 21 (SDA) |------------------------------>| SDA |----->| SDA |
+-----------------+ +-----------------+ +-----------------+
Setup & Usage
-
Install Libraries:
- Open the Arduino IDE and go to
Sketch>Include Library>Manage Libraries.... - Install the following libraries:
Adafruit SSD1306by AdafruitAdafruit GFX Libraryby AdafruitBH1750by Christopher Laws
- Open the Arduino IDE and go to
-
Configure the Code:
- Open the
esp32_MachineNotify.inofile. - Replace the placeholder values for
WIFI_SSID,WIFI_PASSWORD, andNTFY_TOPICwith your WiFi credentials and desiredntfy.shtopic.
- Open the
-
Upload the Code:
- Connect your ESP32 board to your computer.
- Select the correct board and port in the Arduino IDE.
- Click the upload button.
-
Deploy the Device:
- Place the vibration sensor on the washing machine where it can detect vibrations from the spin cycle.
- Place the light sensor inside the machine's drum to detect the internal light.
Code Explanation
The code is structured as follows:
- Includes and Definitions: Includes the necessary libraries for WiFi, I2C devices, and the display. It also defines pins, thresholds, and other constants.
setup(): Initializes serial communication, I2C, sensors, the OLED display, and connects to WiFi.loop(): This is the main part of the program.- It continuously reads the values from the vibration and light sensors.
- It implements a non-blocking logic using
millis()to check if the sensors have been in a certain state (e.g., vibration active or light level high) for a continuous period of 5 seconds. - It updates the overall device state (
isDeviceActive) based on the individual sensor states. - If the device state changes, it calls
sendNotification(). - It calls
updateDisplay()to show the latest data.
sendNotification(): Sends a POST request to the configuredntfy.shtopic with a message.updateDisplay(): Manages the OLED display. It clears the screen and prints the current status of the sensors and the device. It also implements a scrolling feature to cycle through the displayed information every 2 seconds.