meta data for this page
This is an old revision of the document!
Overview of Hardware Components in the Kit
This page is a brief introduction of each component included in the Keyestudio IoT Smart Home Kit. For detailed instructions on testing and operating these components, click on this link.
The following is a diagram of a general control system flow.
- The process begins with Input Devices or Sensors, which collect data from the environment.
- This data is sent to a Processing Unit (such as a microcontroller or computer), where decisions are made based on the input.
- Finally, the Actuators execute the necessary actions, such as turning on lights, adjusting windows, or activating alarms.
List of components in the kit:
- Input Devices:
- Gas sensor
- Steam/water drop sensor
- Humidity and temperature sensor
- RFID sensor
- PIR motion sensor
- Button
- Processing Unit:
- ESP32 PLUS Development Board
- Output Devices:
- DC motor (connected to fan)
- Servo motor
- Buzzer
- Yellow LED
- RGB LED
- LCD Display
Input Devices
1. ESP32 PLUS Development board
The ESP32 PLUS is a versatile Wi-Fi + Bluetooth development board, designed for building IoT and smart home applications. It is based on the ESP32-WROVER-32 module and is compatible with Arduino. It has a hall sensor, high-speed SDIO/SPI, UART, I2S as well as I2C. Furthermore, equipped with freeRTOS operating system, which is quite suitable for the Internet of things and smart home.
2. Modules
RFID
An RFID system allows devices to exchange data wirelessly using radio waves. It consists of two parts, RFID Reader that sends out a magnetic field and reads data from nearby RFID tags; RFID Tag with integrated circuit chips to store data and an antenna to communicate with the reader.
The RFID reader generates a magnetic field using radio frequency signals. This magnetic field extends around the reader. The RFID tag, when placed within this field, doesn’t need its own battery. Instead, it uses the energy from the magnetic field to power itself due to Lenz’s Law, where a changing magnetic field induces an electrical current in the tag’s antenna.
Once powered, the tag’s chip becomes active and starts sending its stored data back to the RFID reader. The reader picks up these signals and processes them.
Passive Buzzer
A passive buzzer is an electronic component used to produce sounds and is often connected to an audio power amplifier. A passive buzzer doesn’t have a built-in oscillator, meaning it can’t generate sound independently. It relies on an external signal, such as a square wave (a type of electrical signal that switches between high and low voltage). To produce sound, you send square wave signals of different frequencies to the positive pole of the buzzer. * Take note that the negative pole of the buzzer is connected to the ground (GND).
Button
A button module is a simple input device that detects when a button is pressed or released. It is a digital sensor, meaning it only outputs two states:
High level (1): When the button is not pressed.
Low level (0): When the button is pressed.
When the button is not pressed, the module outputs a high signal (1), meaning the circuit is open. Pressing the button closes the circuit, connecting it to ground (GND). This results in a low signal (0), indicating the button is being pressed.
LED Light
An LED is a small electronic component that lights up when you pass electricity through it. It can be controlled by sending electrical signals from a microcontroller like an ESP32. The LED has three main connections:
GND (Ground): Connect this to the ground pin of your controller. VCC (Voltage): Connect this to the power pin of your controller. S (Signal): This pin controls whether the LED is ON or OFF based on the signal it receives.
To turn on the LED, you supply power to it by setting the signal pin (S) to a high level. If the signal pin is set to a low level, the LED turns off. The module can adjust the brightness or blink frequency of the LED by changing how fast we turn it on and off using a process called Pulse Width Modulation (PWM).
RGB LED An RGB LED is a more advanced type of LED that can emit red, green, and blue light. By mixing these colors at different brightness levels, you can create almost any color. The module uses serial communication, meaning you can control multiple LEDs with just one signal pin with each LED having a built-in signal amplifier to ensure consistent colors across all LEDs.
Key Parameters Working Voltage DC 3~5V Working current <20mA Power 0.1W
Adjusting blinking speed We can make the LED blink (turn on and off repeatedly) by sending alternating high and low signals to the S pin. The speed of the blinking depends on the delay time between these signals: Short delay: Faster blinking. Long delay: Slower blinking.
LCD Display
The 1602 LCD display is a simple and widely used electronic component for displaying text. It can show 16 characters per line and has 2 lines, hence the name “1602”.
The display communicates with the ESP32 microcontroller using the IIC protocol. IIC is a simple communication protocol for short-distance data exchange. To break down how it works, two wires are used to send messages to the screen, SCL and SDA. SCL synchronizes the data transfer and SDA carries the actual data.
IIC operates in 2 modes, master mode and Slave mode. The ESP32 acts as the Master, sending commands and data to the LCD. The 1602 LCD acts as the Slave, following the Master’s instructions. Each bit of data is synchronized with a “high-to-low” pulse on the clock line (SCL) to ensure that both the Master and Slave stay in sync.
To display characters on the 1602 LCD: Set up the IIC connection between the ESP32 and the LCD. Use a library (pre-written code) to simplify the process of sending commands to the LCD.
Required Files: i2c_lcd.py: Contains the implementation for controlling the 1602 LCD via I2C. lcd_api.py: Provides an interface to send high-level commands to the LCD.
3. Sensor
Temperature & humidity sensor
A temperature & humidity sensor is a device that measures two key environmental parameters: Temperature: How hot or cold the surrounding environment is. Humidity: The amount of water vapor in the air (measured as a percentage, relative humidity or RH). It communicates using serial data and a single-bus protocol, which means it transmits data one bit at a time over a single data line.
Measuring Range Temperature -20℃ ~ +60℃, with ±2℃ accuracy Humidity 5 ~ 95%RH, with ±5%RH accuracy
Smoke sensor
The MQ2 smoke sensor is a device used to detect gas leaks or smoke in homes, factories, and other environments. This makes it suitable for safety systems, such as gas leak detection and fire alarms.
The MQ2 sensor provides two types of outputs: Digital output (D): Indicates whether the gas concentration has crossed a set threshold. Analog output (A): Provides a proportional voltage corresponding to the gas concentration, allowing more detailed monitoring.
Inside the sensor, a chemical layer reacts with specific gases. This reaction changes the resistance in the sensor, which the module converts into an electrical signal. The digital pin (D) is typically used as a binary sensor—if gas is detected, the pin goes high (1); otherwise, it stays low (0). The analog pin (A) is used when you want to measure the exact gas concentration.
Motion Sensor
The PIR (Passive Infrared) motion sensor detects movement by sensing infrared radiation (heat) emitted by objects, such as humans or animals. It is commonly used in daily life for automation, such as stairway motion-activated lights, automatic faucets and security systems.
The sensor is “passive,” meaning it doesn’t emit any energy but instead detects infrared radiation naturally emitted by warm objects. When a warm object (like a person) moves within its range, the sensor detects the change in infrared levels. The PIR motion sensor is a digital sensor with two states: 0 (Low): No motion detected. 1 (High): Motion detected.
Water drop sensor
The raindrop sensor module detects water through its analog input. It is commonly used in IoT applications to sense the presence or amount of water on its surface.
The sensor has a conductive surface. When water droplets touch this surface, they close circuits and change the resistance. The more water on the surface, the lower the resistance and the greater the output value.
The sensor returns an analog value proportional to the water detected. The range of the output is 0 to 4096 (for systems like ESP32 with a 12-bit ADC). 0: No water detected. 4096: Maximum water coverage.
3. Motors
DC Motor
The 130 DC Motor is a small motor used to power devices like fans. In this case, it is paired with safe fan blades, making it suitable for DIY projects and IoT applications. DC Motor converts electrical energy into mechanical energy to spin the fan. PWM Speed Control use Pulse Width Modulation (PWM) to adjust the fan’s speed. The motor can rotate the fan clockwise or anticlockwise based on the inputs.
Two pins are required: INA (Input A): Controls one side of the motor. INB (Input B): Controls the other side of the motor. These pins are controlled using PWM signals (values range from 0 to 255). By comparing the PWM outputs on INA and INB, you can control the motor's rotation. INA - INB ⇐ -45 Rotate clockwise INA - INB >= 45 Rotate anticlockwise INA ==0, INB == 0 Stop
9G 90° Servo
A Servo Motor is a precision motor designed for accurate position control. The servo receives a signal from the MCU (Microcontroller Unit) or receiver. The input signal is a pulse with a period of 20ms and a width of 1.5ms as the reference. A potentiometer detects the current position of the servo. The servo compares the input pulse width with the signal generated from the potentiometer to calculate the voltage difference.
The integrated circuit (IC) on the circuit board determines the direction of rotation based on the voltage difference. The motor drives the position through a gear system and moves the swing arm. The position detector continuously monitors the angle and sends feedback to the system. The motor stops when the desired position is reached (voltage difference = 0).
The servo motor is controlled via PWM signals, where the pulse width determines the angular position. Generally, the angle range of servo rotation is 0° –180 °. The pulse period of the control servo is 20ms, the pulse width is 0.5ms ~ 2.5ms, and the corresponding position is -90°~ +90°.