ESP32-CAM is a compact camera module that combines the popular Wi-Fi development board ESP32 with the OV2640 camera sensor. The camera is part of the ESP32 series of Wi-Fi and Bluetooth-enabled system-on-chip (SoC) devices developed by Espressif Systems. ESP32 is a dual-core 32-bit microcontroller with built-in Bluetooth and Wi-Fi capabilities — based on the Espressif…
How to build a facial recognition system using ESP32-CAM
Facial recognition technology identifies individuals by analyzing and comparing their facial features. It uses biometric patterns and algorithms to map and distinguish a person’s unique characteristics. The technology has become an essential component of many security applications. Facial recognition is commonly used for access control, surveillance, biometric authentication, identity verification, criminal identification, attendance, emergency response,…
How to build a fire alarm with SMS and WhatsApp alerts
Fire alarms are critical in homes and buildings, mitigating fire risks and ensuring safety. These alarms aim to safeguard lives and property, providing a warning and initiating emergency procedures. In this project, we’ll build a fire alarm system using ESP32, a flame sensor, and an MQ2 gas sensor. This device will trigger a buzzer and…
How to build a sign-to-speech converter
Sign language is a system of communication using visual gestures. However, not everyone understands sign language. So, in this project, we’ll build a device that converts hand gestures into speech. What’s required: flex sensors, a DF Mini Player, and a microcontroller that has an analog input and supports serial communication via a universal asynchronous receiver/transmitter…
How to build a portable health monitor
Medical equipment for health monitoring is typically costly, but there is an option. Whether you simply want to be aware of your heart rate or are caring for someone with health conditions that must be monitored, there’s an option that you can build yourself. In this project, we’ll design a portable health monitor that can…
How to build an app-controlled alarm mat
Waking up isn’t always easy, especially when the snooze button is typically only a short reach away. Overcoming the desire to stay in the comfort of our beds often requires an understanding of intrinsic motivation. But we have a solution that requires one simple device — a smart mat. In this project, we’ll design a…
How to design an ESP32 WiFi manager using MicroPython
Nearly all the devices we use today — from smartphones, tablets, wearables, and even many of our appliances — connect to the Internet via a home (or office) WiFi network. Internet access to smart devices is typically managed through a web interface or mobile app. Similarly, when we’re out and about, we’ll access WiFi for…
How to build a portable WiFi repeater using ESP32 or ESP8266
Typically, a WiFi network has a range that’s above 45 meters. The signals are strongest near the router. The further away you move, the weaker the signal. The same is true of thick walls or additional floors in a home or building. The WiFi signals could be completely lost on other floors of a premise. …
How to build a WhatsApp-notifying home security system
A security alarm detects unauthorized entry into a home or building. In the past, these security devices simply triggered a loud siren when an intrusion was detected. As technology advanced, the systems were equipped with GSM modems to send an SMS alert to the home or building owner whenever an intrusion was detected. One drawback…
How to use MicroPython’s watchdog timer in ESP8266 and ESP32
A watchdog timer is an internal or external timer that monitors a microcontroller’s program to ensure the application remains operative without failure. It serves as a safety feature in critical applications by monitoring the microcontroller’s output signal. The watchdog can operate in two modes: Timeout mode – the timer establishes the microcontroller is not working properly if it…
MicroPython: How to program a real-time clock (RTC) in ESP8266 and ESP32
A real-time clock (RTC) is a computer clock to keep time and is one of the more popular microcontroller features. Microcontrollers without a built-in RTC require an external RTC chip for keeping time. Typically, mid-segment to high-end microcontrollers have a built-in RTC because time-keeping is necessary for several embedded applications. RTCs count seconds, minutes, hours,…
Getting started with ESP8266 and ESP32 on Arduino IDE
ESP8266 and ESP32 are popular WiFi development solutions that can be programmed in several ways using different programming languages. Common languages include MicroPython, C, JavaScript, and LUA script. The choice of embedded firmware and software tools makes it possible to program ESP8266 and ESP32 in different languages. The versatility and flexibility to program ESP boards…
How to play a video on an SSD1306 OLED
Small organic light-emitting diode (OLED) displays are commonly used in embedded devices. This is because OLEDs generally cost the same as character LCDs but feature a better user interface (UI) and user experience (UX). Typically, embedded OLED screens are used to display textual messages, but what about videos? For example, is it possible to playback…
How to send messages to WhatsApp or Telegram from ESP32
In many Internet-of-Things (IoT) applications, it’s necessary to send alerts to the user in the form of messages. Typically, text messages are sent via WiFi or SMS. But sometimes text messaging is unavailable between devices. So, what if these messages could be sent via the IoT to a user’s WhatsApp or Telegram account instead? In…
How to send MQTT data from ESP32/ESP8266 to Raspberry Pi
It’s possible to set up a do-it-yourself home automation system with an ESP board and Raspberry Pi (RPi). Both offer Wi-Fi connectivity and can easily communicate via a home network. However, a communication protocol is required for wireless communication for devices operating in a wider network. Since conventional internet protocols like HTTP are typically too…
How to extend solar and battery power in a weather station
Experiment 2 Aim To run an MCU on low power mode, read the temperature, pressure, and humidity readings using AHT10 and BMP280 Sensors, and send the readings over wifi. Requirements MCU: ESP32-WROOM-32D (Generic Wi-Fi + Bluetooth + Bluetooth LE MCU module) Temperature/Humidity Sensor: AHT10 (Temperature and humidity sensor) Pressure and Altitude Sensor: BMP280(Absolute Barometric Pressure…
How to achieve longer MCU battery life with low power sleep mode
There are generally six power modes in an MCU: Run: In full run mode, an MCU consumes full current. This mode is best suited for applications where power efficiency is not essential. Doze: As we know, power increases proportionally to the frequency. Therefore, we can conclude that higher clock speeds tend to higher power consumption.…
How to use MicroPython with ESP8266 and ESP32 to connect to a WiFi network
ESP8266 and ESP32 are popular WiFi development boards. These single-board microcontrollers are supported by the MicroPython framework and are often used for the internet of things (IoT). Using MicroPython, ESP8266 and ESP32 can connect to the internet via WiFi and Ethernet. The MicroPython ports use Ethernet or the wireless local area network (WLAN). In this…
How to use ESP8266/ESP32 as a TCP server and client with sockets
ESP8266 and ESP32 are popular WiFi development boards. These microcontroller boards are ideal for building the internet of things (IoT). We covered how to connect ESP8266 and ESP32 (or any MicroPython port) with a network connection for use as a WiFi station here. We used the MicroPython network module. This network module provides a driver…
How to use ESP32’s sleep and wake-up modes in MicroPython
In a previous article, we covered sleep modes in ESP8266. ESP32 is another popular Wi-Fi development board from Expressif systems. It’s more feature-rich than ESP8266, but also more power-hungry. The power consumption of ESP32 can reach up to 790 mA when the Wi-Fi and Bluetooth are both operational — nearly double that of ESP8266, which…