Smart Home Projects with ACEBOTT Smart Home Education Kit (Arduino – Level 2)

Overview

This set of projects demonstrate how to build several smart home prototypes using the Acebott Smart Home Educational Kit (Arduino Level 2) powered by the ESP32 microcontroller. The kit allows users—especially STEM teachers and students—to explore real-world home automation and IoT concepts through hands-on learning.

We created multiple projects to highlight different aspects of smart home systems, each focusing on a specific application:

Intelligent Security System

By combining different sensors and actuators, learners can build systems that respond to emergencies and control access intelligently.

The Earthquake Alarm System and Fire Alarm System focus on early detection and alerting, showing how smart sensors help protect people during natural disasters and accidents.

Meanwhile, the Automatic Door and Password Access Control highlight secure and convenient entry solutions, reflecting the same technologies used in today’s smart buildings. Together, these projects provide a hands-on introduction to real-world security applications, bridging theory with practical experience.

Project 1: Earthquake Alarm System – This project simulates an early warning system by using a vibration sensor to detect seismic activity. When unusual vibrations are detected, an alarm is triggered to alert occupants of potential danger. It helps learners understand how smart sensors can be applied to disaster preparedness, improving safety and response times.

Project 2: Fire Alarm System – A flame or smoke sensor is used to identify signs of fire and automatically trigger a buzzer alarm. This project demonstrates the importance of early detection in preventing fire-related accidents. By simulating real fire alarm systems, it teaches how sensors can protect lives and property in emergency situations.

Project 3: Automatic Door – Using a motion or ultrasonic sensor paired with a servo motor, this project creates a door that opens and closes automatically when someone approaches. It showcases how automation enhances both convenience and accessibility in homes and offices. Learners gain insight into how sensor-driven systems can simplify everyday routines.

Project 4: Password Access Control – This project uses a keypad and microcontroller to restrict access to authorized users only. A correct password input opens the lock, while incorrect entries deny access and may trigger alerts. It provides a practical example of digital security systems, teaching how password-based authentication helps safeguard spaces.

Smart Automatic System 

By using sensors and programmed controls, common activities such as drying clothes, feeding pets, and watering plants can be managed automatically with little human effort. These smart solutions not only save time and energy but also promote convenience, reliability, and sustainable living within the modern home.

Project 1: Automatic Drying Rack – This project makes laundry care more convenient by using sensors and motors to automatically move clothes for drying. The rack can adjust its position based on sunlight or humidity levels, ensuring clothes dry efficiently without constant supervision. It reflects how smart systems can simplify household chores and save time.

Project 2: Automatic Pet Feeder – Designed for pet owners, this system dispenses food at scheduled times or when triggered by a sensor. It ensures pets are fed consistently, even when their owners are away, promoting both convenience and pet well-being. This project demonstrates how automation can make daily responsibilities easier to manage.

Project 3: Automatic Watering System – By using a soil moisture sensor, this system monitors the dryness of the soil and activates a water pump when plants need watering. It helps maintain healthy plant growth while reducing water waste. This project shows how smart technology can support sustainable gardening and reduce the effort needed for plant care.


Hardware Used

  • ACEBOTT QE024 Smart Home Education Kit Level 2

    Intelligent Security System

    Project 1: Earthquake Alarm System

    Project 2: Fire Alarm System

    Project 3: Automatic Door 

    Project 4: Password Access Control 

    Smart Automatic System 

    Project 1: Automatic Drying Rack 

    Project 2: Automatic Pet Feeder 

    Project 3: Automatic Watering System

Software Used

  • Arduino IDE 2.3.6

 

Application Discussion


  • ESP32

    Description: ESP32 is a low-power, highly integrated Wi-Fi and Bluetooth dual-mode microcontroller developed by Espressif Systems. The ESP32 development board is very popular due to its powerful features and abundant communication interfaces, making it suitable for various Internet of Things (IoT) applications, embedded system development, and project implementations.



    Pinout:

    Application: ESP32 serves as the main controller that connects and manages all components. It processes data from sensors, controls traffic lights, adjusts streetlight brightness, and operates safety devices like barriers and buzzers. With its Wi-Fi and Bluetooth capabilities, it enables responsive, automated, and energy-efficient transportation solutions. This makes the system smarter, safer, and more convenient for both vehicles and pedestrians.

  • ESP32 Expansion Board

    Description: The ESP32 expansion board is designed to make wiring connections easier and more reliable. It provides clearly labeled ports and a structured layout to reduce wiring errors, prevent short circuits, and simplify the assembly process when connecting sensors, modules, and other components.

    Application: Used to expand the ESP32’s connectivity, allowing quick and safe attachment of multiple modules in the Intelligent Transportation Kit without complex wiring.

  • Vibration Sensor

    Description: The vibration sensor detects shocks, tremors, or sudden movements and converts them into electrical signals that can be read by a microcontroller. It is small, lightweight, and sensitive enough to respond to even minor vibrations.

    Pinout:

    Application: Commonly used in earthquake alarms or intrusion detection systems, it helps identify abnormal activity. In smart security setups, it can activate LEDs, buzzers, or other alerts when vibration is detected, making it an effective safety component.

 

  • Red LED Module

    Description: The red LED module is a simple light-emitting diode that provides a clear, bright red signal when powered. It is one of the most basic yet essential components in electronic projects.

    Application: In smart home and security projects, it is often used as a visual warning light, status indicator, or alert system. Whether signaling a fire alarm, password error, or door lock status, it provides users with clear, immediate feedback.

  • Flame Sensor

    Description: The flame sensor is designed to detect infrared radiation emitted by open flames. It quickly responds to fire presence and sends signals to a controller for further action.


    Application: Used in fire alarm projects, it provides early detection of flames to prevent accidents. When paired with a buzzer or relay, it can trigger alarms, activate sprinklers, or alert users of danger in smart home security systems.

  • MQ-4 Gas Sensor

    Description: The MQ-4 gas sensor is designed to measure the presence of methane, propane, and other combustible gases in the air. It outputs an analog signal proportional to the gas concentration.
    Pinout:

    Application: In smart fire or safety systems, it is used to detect harmful gas leaks early. When levels exceed safety thresholds, the sensor can activate alarms, ventilation systems, or notifications to prevent accidents and ensure safety.

  • P-Buzzer

    Description: The piezoelectric buzzer is a small audio device that produces sound when powered. It can generate tones, beeps, or alarms to provide audio feedback in electronic systems.


    Pinout:

    Application: In smart home automation, it is used for alarms, fire warnings, door lock feedback, and notification signals. Its clear sound output ensures that users are alerted to important events or hazards immediately.

  • Ultrasonic Sensor

    Description: The ultrasonic sensor measures distance by emitting ultrasonic waves and detecting their echoes. It provides accurate and non-contact distance measurement for a wide range of projects.

    Pinout:

    Application: It is commonly applied in automatic doors, smart pet feeders, and security systems. By detecting movement or proximity, it allows systems to respond intelligently—for example, opening doors when someone approaches or releasing food when a pet is nearby.

  • Servo SG90 9G

    Description: The SG90 is a small, lightweight servo motor that provides precise angular movement between 0°–180°. Controlled by PWM signals, it allows reliable positioning of mechanical components.
    Pinout:

    Application: In smart home systems, it is used to open or close doors, control locks, move racks, or dispense food. Its compact design makes it ideal for small automation mechanisms where precision is required.

  • Touch Keyboard

    Description: The touch keypad module allows users to input numbers or commands digitally. It replaces traditional mechanical buttons with a sleek, reliable touch interface.

    Pinout:

    Application: In smart access control systems, it is used for password entry to secure doors or devices. It provides an added layer of security by allowing only authorized users to enter correct passcodes for access.

  • Raindrop Sensor

    Description: The raindrop sensor detects water presence through changes in resistance on its surface when raindrops fall. It provides both analog and digital outputs for flexible use.

    Pinout:

    Application: In smart home services, it can control automatic drying racks, windows, or irrigation systems by reacting to rainfall. This ensures clothes are protected, and plants are watered only when necessary.

  • Light Sensor

    Description: The light sensor uses a photoresistor to detect ambient brightness. Its resistance changes with light intensity, producing an analog signal for the controller.

    Pinout:
    Application: It is used in automatic lighting systems, drying racks, and smart energy-saving devices. By responding to day and night conditions, it enables systems to reduce energy use and operate efficiently.

  • I2C 1602 LCD Module

    Description: The 16×2 LCD display with I2C interface provides a simple way to show text output. It reduces wiring complexity while displaying multiple lines of information.

    Pinout:

    Application: In smart home systems, it is used to show sensor readings, alerts, and system status. From displaying soil moisture levels to access control messages, it gives users real-time feedback in a clear format.

  • Water Pump

    Description: The water pump is a compact DC-powered device that can move or circulate water. It is lightweight and easy to integrate into small automation systems.

    Pinout:

    Application: Often used in plant irrigation projects, it delivers water when triggered by soil sensors or relays. This makes it ideal for automatic watering systems in smart homes or gardens.

  • Moisture Sensor

    Description: The moisture sensor measures soil water content by detecting resistance changes. It provides analog data that indicates how wet or dry the soil is.

    Pinout:

    Application: Commonly used in smart irrigation systems, it helps determine when plants need water. Paired with a pump and relay, it ensures plants receive just the right amount of moisture.

  • 5V Relay Module

    Description: The relay is an electrically controlled switch that lets a low-power microcontroller operate high-power devices safely. It isolates the control circuit from the load circuit.

    Pinout:
    Application: In smart home automation, it controls pumps, fans, and other appliances. This allows small controllers like the ESP32 to manage heavy devices without risk, making systems safer and more versatile.


Hardware Setup 

Intelligent Security System

Project 1: Earthquake Alarm System

Hardware Structure Diagram:

Assembly Instructions:

Step 1: Installing the base.

Note: Ensure the side of the wooden board with theletter 'A' faces up.

Step 2: Installing the ESP32 Controller Board.

Note: First, fix the copper column on the base, then install the ESP32
 ControllerBoard on the copper column, and finally install the expansion
 board.

Step 3: Installing the battery holder.

Note: Use double-sided tape to attach the battery holder to the underside of the base, and do not cover the electric wire and pin holes of the base.

Step 4: Installing the wooden board.

Note: Ensure the side of the wooden board with the letter 'B' faces forward.


Note: Ensure the side of the wooden board with the letter 'D1' or 'D2'
 faces up.

Step 5: Installing the vibration sensor.

Note: Use screws and nuts to fix the vibration sensor above the 'D2' wooden board.

Step 6: Installing the red LED module and the P-Buzzer module.

Note: Install the red LED module and buzzer module separately on the sensor baseplate.

Step 7: Secure the tethered LED module and buzzer module onto the baseplate.

Note: Before securing the LED module and the buzzer module, connect one end of the quick-connect Dupont wire to the LED module and the buzzer module.

Step 8: Fixing the standing card on the base.

Hardware Wiring Diagram :


Wiring Instructions:


Note:
Please make sure to strictly follow the wiring instructions when connecting the module to the ESP32 controller board. Incorrect wiring may cause a short circuit and damage the ESP32 controller board.

Project 2: Fire Alarm System

Hardware Structure Diagram:


Assembly Instructions:

Note: This project will continue to use the basic bracket structure used previously (as shown in the figure below).

Step 1: Installing the Flame Sensor.

Step 2: Installing the red LED module and the P-Buzzer module.

Note: Before securing the LED module and the buzzer module, connect the end of the quick-connect Dupont wire to the LED module and the buzzer module.

Step 3: Installing the Flame Sensor.

Step 4: Installing the MQ-4 Gas sensor.

Step 5: Installing the standing card on the base.

Step 6: Installing the LUMI.


Hardware Wiring Diagram :


Wiring Instructions:

Project 3: Automatic Door

Hardware Structure Diagram:


Assembly Instructions:
Note: This project will continue to use the basic bracket structure used previously (as shown in the figure below). We will proceed directly to the installation of the gear.

Step 1: Installing the gear.

Step 2: Installing the door.

Note: The upper and lower frames of the acrylic door are the same length, while the upper and lower frames of the acrylic clothes rack are not. Do not confuse them.

Step 3: Installing the Servo SG90.

Note:  Before installing the gear onto the servo motor, first adjust the servo motor to the 0-degree position. After adjusting to the 0-degree position, do not power off the servo motor. Then slide the acrylic door to the far right, and finally install the gear onto the servo motor.

 1. Before writing the program, you need to install the library file for servo. Click here to get the library file "ESP32_Servo" for the servo.
 2. Click here to access the servo adjustment program (servo_initialize).

Step 4: Installing the Ultrasonic Sensor.

Step 5: Installing the standing card.


Hardware Wiring Diagram :

Wiring Instructions:

Note:
 Before writing the program, you need to install the library file for ultrasonic sensor. Click here to get the library file "Acebott" for the ultrasonic sensor.

Project 4: Password Access Control

Hardware Structure Diagram:


Assembly Instructions:

Note:
This project will continue to use the basic bracket structure used previously (as shown in the figure below). We will proceed directly to the installation of the gear.

Step 1: Installing the gear.

Step 2: Installing the door.

Note: The upper and lower frames of the acrylic door are the same length, while the upper and lower frames of the acrylic clothes rack are not. Do not confuse them.

Step 3: Installing the Servo SG90.

 Note:  Before installing the gear onto the servo motor, first adjust the servo motor to the 0-degree position. After adjusting to the 0-degree position, do not power off the servo motor. Then slide the acrylic door to the far right, and finally install the gear onto the servo motor.

 1. Before writing the program, you need to install the library file for servo. Click here to get the library file "ESP32_Servo" for the servo.

 2. Click here to access the servo adjustment program (servo_initialize).

Step 4: Installing the red LED module and the P-Buzzer module.

Note: Before securing the LED module and the buzzer module, connect the end of the quick-connect Dupont wire to the LED module and the buzzer module.


Step 5: Installing the touch keyboard.


Hardware Wiring Diagram :


Wiring Instructions:


Note:

1. Before writing the program, you need to install the library file for Touch Keyboard. Click here to get the library file "ACB_KeyBoard_I2C" for the Touch Keyboard.

2.. Please make sure to strictly follow the wiring instructions when connecting the module to the ESP32 controller board. Incorrect wiring  may cause a short circuit and damage the ESP32 controller board.

Smart Automatic System

Project 1: Automatic Drying Rack

Hardware Structure Diagram:

Assembly Instructions:

Note: This project will continue to use the basic bracket structure used previously (as shown in the figure below). We will proceed directly to the installation of the gear.

Step 1: Installing the gear.


Step 2: Installing the slide rail.

Step 3: Installing the Servo SG90

Note: Before installing the gear onto the servo motor, first adjust the servo motor to the 0-degree position. After adjusting to the 0-degree position, do not power off the servo motor. Then slide the acrylic clothes rack to the far left, and finally install the gear onto the servo motor. Click here to access the servo adjustment program (servo_initialize).

Step 4: Installing the clothes rack.


Step 5: Installing the light sensor and the raindrop sensor.


Step 6: Installing the standing card.


Step 7: Installing the LUMI.

Hardware Wiring Diagram :


Wiring Instructions:

Project 2: Automatic Pet Feeder

Hardware Structure Diagram:

Assembly Instructions:

Note: This project will continue to use the basic bracket structure used previously (as shown in the figure below). We will proceed directly to the installation of the gear.

Step 1:
Installing the I2C 1602 LCD Module.

Step 2: Installing the pet food storage container.

Step 3: Installing the gear.

Step 4: Installing the sliding baffle.

Note: The side of the basswood board with the letter 'C' should face up. The upper and lower frames of the acrylic door are of equal length, whereas the upper and lower frames of the acrylic clothes rack are not, so do not confuse them.

Step 5: Installing the servo motor.

Note: Before installing the gear onto the servo motor, first adjust the servo motor to the 0-degree position. After adjusting to the 0-degree position, do not power off the servo motor. Then slide the acrylic clothes rack to the far left, and finally install the gear onto the servo motor. Click here to access the servo adjustment program (servo_initialize).

Step 6: Installing the ‘C’ wooden board and the food storage
 container.

Step 7: Installing the Ultrasonic Sensor.

Step 8: Installing the buzzer module.

Step 9: Installing the Ultrasonic Sensor and the buzzer.

Note: Before securing the buzzer module and ultrasonic sensor, connect one end of the quick-connect Dupont wire to the buzzer module  and ultrasonic sensor.

Step 10: Installing the standing card.


Step 11: Installing the LUMI.


Hardware Wiring Diagram :

Wiring Instructions:

Note: 
1.Before writing the program, you need to install the library file for LCD1602. Click here to get the library file "hd44780" for the Touch LCD1602.

Project 3: Automatic Watering System

Hardware Structure Diagram:


Assembly Instructions:

Note: This project will continue to use the basic bracket structure used previously (as shown in the figure below). We will proceed directly to the installation of the I2C 1602 LCD Module. For this lesson, you need to bring a disposable cup to hold water and the water pump.

Step 1:
Installing the I2C 1602 LCD Module.


Step 2: Installing the Relay Module.


Step 3: Installing the Water Pump.

Note: The cup for placing the water pump needs to be provided by yourself.

Step 4: Installing the Moisture Sensor and the Moisture Sensor and the Standing Card.

Step 5: Installing the LUMI


Hardware Wiring Diagram :

Wiring Instructions:

Note:

1.)
Wiring instructions for the water pump: Connect the negative pole of the water pump to the NO port of the relay, connect the positive pole to the 5v port of the ESP32, and connect the COM port of the relay to the GND port of the ESP32.

 2.)
Please make sure to strictly follow the wiring instructions when connecting the module to the ESP32 controller board. Incorrect wiring may cause a short circuit and damage the ESP32 controller board.


Software Setup

Arduino IDE 

Description: Arduino IDE is a free, cross-platform programming tool used for writing, uploading, and debugging code for Arduino-compatible boards like the ESP32.

How to install the Arduino IDE Windows

A. Download and Install Arduino IDE
Go to the Official Website

  1. Go to the Official Website

    • Visit https://www.arduino.cc/en/Main/Software.

    • Select the correct version:

      • Windows 10 or above → Arduino IDE 2.x

      • Before Windows 10 → Arduino IDE 1.x

    • Click the download button and choose “Download Only” to get the .exe installer.

  2. Install the Arduino IDE

    • Locate and double-click the downloaded installer file.

    • Click “I Agree” to accept the license agreement.

    • Click “Next”, then “Install”.

    • Wait for the installation to finish, then click “Close”.

  3. Open Arduino IDE

    • Locate the Arduino IDE shortcut on your desktop or Start menu.

    • Double-click to launch it.


B. Install ESP32 Board Resources in Arduino IDE

  1. Open Preferences

    • Go to File → Preferences in the Arduino IDE.

  2. Add the Board Manager URL

  3. Install ESP32 Package

    • Go to Tools → Board → Board Manager (or click the Boards icon in the left toolbar).

    • Search for ESP32, select Version 2.0.12, and click Install.

  4. Verify Installation

    • Reopen Tools → Board and check if ESP32 Dev Module appears in the list.

C. Testing the ESP32 Setup

  1. Connect the ESP32 Board

    • Use a Type-C data cable to connect the ESP32 to your computer.

    • Open Device Manager and check under Ports (COM & LPT) for USB-SERIAL CH340 (COMx).

      • If it shows as “Unknown Device,” install the CH340 driver (instructions are at the end of the kit manual).

  2. Select Board and Port

    • In Arduino IDE, go to Tools → Board and choose ESP32 Dev Module.


    • Go to Tools → Port and select the COM port number matching your ESP32 in Device Manager.

  3. Upload a Test Program

    • Open the Arduino IDE, write or paste a simple test code (e.g., Serial.println("Hello ESP32");).

    • Click the Verify button (check mark icon) to compile.

      • If there’s an error, review your code or board settings.

    • Click Upload (right arrow icon).

      • Wait until “Done uploading” appears in the status bar.

  4. Check Serial Output

    • Open Tools → Serial Monitor.

    • Set the baud rate to match your code (e.g., 115200).

    • Confirm that your test message appears, verifying the board is working.

Intelligent Security System:

Project 1: Earthquake Alarm System 
Source Code:

#define LED 19 //Declare the pin for the LED
#define buzzer 18  //Declare the pin for the buzzer
#define vibration 32  //Declare the pin for the vibration sensor

void setup() {
  pinMode(LED,OUTPUT);  //Set the LED pin to output mode
  pinMode(buzzer,OUTPUT);  //Set the buzzer pin to output mode
  pinMode(vibration,INPUT);  //Set the vibration sensor pin to input mode
}

void loop() {
  int state = digitalRead(vibration);//Read the value from the vibration sensor
  if(!state){  //Check if vibration occurs
    //Vibration detected
    for(int i = 0; i < 5;i++)//Repeat 5 times
    {
      digitalWrite(LED,HIGH); //Turn on the LED
      for(int i = 500;i<=1000;i++){
        tone(buzzer,i);//Activate the buzzer at the specified frequency
        delay(2);
      }
      digitalWrite(LED,LOW);//Turn off the LED
      for(int i = 1000;i>=500;i--){
        tone(buzzer,i);//Activate the buzzer at the specified frequency
        delay(2);
      }
    }
  noTone(buzzer);//Turn off the buzzer
  }    
}

Project 2: Fire Alarm System
Source Code:
#define MQ4 25 // Declare the pin for the gas sensor #define flame 27 // Declare the pin for the flame sensor #define LED 19 // Declare the pin for the LED #define buzzer 18 // Declare the pin for the buzzer void setup() { pinMode(MQ4,INPUT);// Set the gas sensor pin to input mode pinMode(LED,OUTPUT); // Set the LED pin to output mode pinMode(buzzer,OUTPUT);// Set the buzzer pin to output mode pinMode(flame,INPUT);// Set the flame sensor pin to input mode Serial.begin(115200); } void loop() { int MQ4value = analogRead(MQ4);// Read the value from the gas sensor int flamevalue = digitalRead(flame);// Read the value from the flame sensor if(MQ4value > 3000 || flamevalue == 0)// Check if gas or flame is detected { for(int i = 0; i < 5; i++)// Repeat 5 times { digitalWrite(LED,HIGH);// Turn on the LED for(int i = 500; i <= 1000; i++){ tone(buzzer,i);// Activate the buzzer at a certain frequency delay(2); } digitalWrite(LED,LOW);// Turn off the LED for(int i = 1000; i >= 500; i--){ tone(buzzer,i);// Activate the buzzer at a certain frequency delay(2); } } noTone(buzzer);// Turn off the buzzer } }
Project 3: Automatic Door Project 
Source Code:

#include <ultrasonic.h>
#include <ESP32_Servo.h>

#define servoPin 13 // Declare the pin for the servo
#define trig 16//Declare echo pin of the ultrasonic
#define echo 17//Declare echo pin of the ultrasonic

ultrasonic myUltrasonic;  // Create an ultrasonic sensor object
Servo servo;  // Create a servo object

void setup() {
  myUltrasonic.Init(trig,echo);// Ultrasonic sensor initialization
  servo.attach(servoPin);// Initialize the servo
  servo.write(5);// Move the servo to the initial position
}

void loop() {
  // Read the value from the ultrasonic sensor:
  float dis = myUltrasonic.Ranging();
  if(dis < 10){// Check if someone is approaching
    for(int angle = 5; angle <= 110; angle++){// Open the door
      servo.write(angle);
      delay(25);
    }
    delay(5000);// Wait for 5 seconds
    for(int angle = 110; angle >= 5; angle--){// Close the door
      servo.write(angle);
      delay(25);
    }    
  }
}

4: Password Access Control
Source Code:

#include <ACB_KeyBoard_I2C.h>
#include <ESP32_Servo.h> #define LED 19 // Declare the pin for the LED #define buzzer 18 // Declare the pin for the buzzer #define servoPin 13 // Declare the pin for the servo Servo servo; // Create a servo object ACB_KeyBoard_I2C kb;// Create a keypad object char password[7] = "123456"; // Set the password for the lock char input_password[7];// Store the entered password char input; void setup() { pinMode(LED,OUTPUT); // Set the LED pin to output mode pinMode(buzzer,OUTPUT);// Set the buzzer pin to output mode servo.attach(servoPin);// Initialize the servo servo.write(5);// Move the servo to the initial position Serial.begin(115200); } void loop() { Serial.print("Please enter a 6-digit password: "); for(int i = 0;i<6;i++){// Loop to enter a 6-digit password input = kb.getKey();// Get the value of the key while(!input){// Wait for a key touched input = kb.getKey();// Get the value of the key } Serial.print(input); input_password[i] = input;// Store the value of the key in the character array delay(500); } Serial.println(); // Compare the entered password with the set password if(strcmp(input_password,password) == 0){ Serial.println("Correct password! Opening the door."); door_open();// Open the door } else{ servo.detach();//disconnect servo Serial.println("Incorrect password!"); tone(buzzer,800);// Activate the buzzer digitalWrite(LED,HIGH);// Turn on the LED delay(1000); noTone(buzzer);// Turn off the buzzer digitalWrite(LED,LOW);// Turn off the LED } } void door_open(){ // Door opening function servo.attach(servoPin); for(int angle = 5;angle<=110;angle = angle+5){ servo.write(angle); delay(25); } delay(2000); for(int angle = 110;angle>=5;angle = angle-5){ servo.write(angle); delay(25); } }

Smart Home Services: 

Project 1: Automatic Drying Rack
Souce Code:

#include <ESP32_Servo.h>

#define servoPin 13 // Declare the servo pin
#define rainSensor 39  // Declare the rain sensor pin
#define PR 33  // Declare the light sensor pin
// Define the state variable representing the state of the clothes drying rack, true means indoors, false means outdoors
bool state = true;
Servo servo; // Create a servo object
void setup() {
  servo.attach(servoPin); // Initialize the servo
  pinMode(rainSensor,INPUT); // Set the rain sensor pin to input mode
  pinMode(PR,INPUT); // Set the light sensor pin to input mode
  Serial.begin(115200);
  servo.write(5); // Move the servo to the initial position
}
void loop(){
  int rainValue = analogRead(rainSensor); // Read the value of the rain sensor
  int lightValue = analogRead(PR); // Read the value of the light sensor
  Serial.println(rainValue);
  Serial.println(lightValue);
  // If the light value is less than 3000 and the rain value is less than 100, it means it's daytime and not raining
  // Check if it's daytime and not raining
  if(lightValue < 3000 && rainValue < 100) {
    // It's daytime and not raining
    if(state){// Check if the clothes drying rack is indoors
      // Indoors
      for(int angle = 5;angle<=120;angle++){// Extend the clothes drying rack
        servo.write(angle);
        delay(25);
      }
    }
    state = false;// Set the state of the clothes drying rack to outdoors
  }
  else{// Nighttime or raining
    if(!state){// Check if the clothes drying rack is outdoors
      // Outdoors
      for(int angle = 120;angle>=5;angle--){// Retract the clothes drying rack indoors
        servo.write(angle);
        delay(25);
      }
    state = true;// Set the state of the clothes drying rack to indoors
    }
  }
}

Project 2: Automatic Pet Feeder
Source Code:
#include <Wire.h> #include <hd44780.h> #include <hd44780ioClass/hd44780_I2Cexp.h> #include <ultrasonic.h> #include <ESP32_Servo.h> #define buzzer 18 // Declare the buzzer pin #define servoPin 13 // Declare the servo pin #define trig 16 // Declare echo pin of the ultrasonic #define echo 17 // Declare echo pin of the ultrasonic const int i2cAddress = 0x27; // Declare the I2C address of the LCD display const int numRows = 2; // Number of rows in the LCD display const int numCols = 16; // Number of columns in the LCD display // Create an LCD display object: hd44780_I2Cexp lcd(i2cAddress, numRows, numCols); ultrasonic myUltrasonic; // Create an ultrasonic object Servo servo; // Create a servo object int timer = 0; // Define a variable to represent the timer int last_time; // Record the total running time of the program up to this point int h, m, s; // Define variables to represent hours, minutes, and seconds void setup() { Wire.begin(); lcd.begin(numCols, numRows); // Initialize the LCD display lcd.backlight(); // Turn on the backlight of the display delay(500); lcd.clear(); // Clear the display last_time = millis(); // Record the total running time of the program up to this point Serial.begin(115200); pinMode(buzzer, OUTPUT); // Set the buzzer to output mode myUltrasonic.Init(trig, echo); // Initialize the ultrasonic sensor servo.attach(servoPin); // Initialize the servo servo.write(0); // Initialize the position of the servo } void loop() { if (millis() - last_time > 1100) { // Check if 1 second has passed timer++; // Increment the timer by 1 last_time = millis(); // Update the total running time of the program } Serial.println(timer); s = timer % 60; // Calculate the seconds to display m = (timer / 60) % 60; // Calculate the minutes to display h = (timer / 3600) % 24; // Calculate the hours to display lcd.setCursor(0, 0); // Display the timer on the LCD display lcd.print("Timer:"); lcd.setCursor(6, 0); lcd.print(h / 10); lcd.print(h % 10); lcd.print(":"); lcd.setCursor(9, 0); lcd.print(m / 10); lcd.print(m % 10); lcd.print(":"); lcd.setCursor(12, 0); lcd.print(s / 10); lcd.print(s % 10); lcd.setCursor(0, 1); lcd.print("Feeding:"); lcd.setCursor(8, 1); lcd.print("off"); if (timer == 5) { // Check if 5 seconds have passed servo.detach(); // disconnect servo tone(buzzer, 800); // Activate the buzzer delay(1000); // Delay for 1 second noTone(buzzer); // Turn off the buzzer timer = 0; // Reset the timer // Wait for the pet to approach: while (myUltrasonic.Ranging() > 10); lcd.setCursor(8, 1); lcd.print("on "); servo.attach(servoPin); // Start feeding for (int angle = 0; angle <= 90; angle++) { servo.write(angle); delay(25); } delay(1000); for (int angle = 90; angle >= 0; angle--) { servo.write(angle); delay(25); } delay(1000); } }

Project 3: Automatic Watering System
Source Code:
#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>

#define moistureSensor 25 // Declare the soil moisture sensor pin
#define relay 23 // Declare the relay pin

const int i2cAddress = 0x27; // I2C address
const int numRows = 2; // Number of rows in the LCD1602
const int numCols = 16; // Number of columns in the LCD1602
hd44780_I2Cexp lcd(i2cAddress, numRows, numCols); // Create the display object

void setup(){
  Wire.begin(); // Start I2C communication
  lcd.begin(numCols, numRows); // Initialize the LCD display
  lcd.backlight(); // Turn on the backlight
  delay(500);
  lcd.clear(); // Clear the LCD display
  pinMode(relay,OUTPUT); // Set the relay to output mode
  pinMode(moistureSensor,INPUT); // Set the soil moisture sensor to input mode
  Serial.begin(115200);
}

void loop(){
  // Read the value of the soil moisture sensor
  int moisture_value = analogRead(moistureSensor);
  Serial.println(moisture_value);
  lcd.setCursor(0, 0);
  lcd.print("H:");
  lcd.print(moisture_value); // Display the soil moisture value on the LCD display
  lcd.setCursor(0, 1);
  lcd.print("Water:");
  if(moisture_value<1000){
    // Turn on the water pump for watering:
    lcd.print("Turn on");
    digitalWrite(relay,HIGH);
    delay(500);
    digitalWrite(relay,LOW);  
  }
  else{
    // Turn off the water pump:
    lcd.print("Turn off");
    digitalWrite(relay,LOW);
  }
  delay(1000);
  lcd.clear();
}


Code Breakdown


Intelligent Security System

Project 1: Earthquake Alarm System

 

Pin Definitions:

#define LED 19       // LED indicator
#define buzzer 18    // Buzzer alarm
#define vibration 32 // Vibration sensor

  • LED – Provides visual alert.
  • buzzer – Provides sound alert.
  • vibration – Detects shaking or earthquake activity.

setup() Function:

  • Configures LED and buzzer as outputs.
  • Configures vibration sensor as input.

loop() Function:

  • Reads vibration sensor value.
  • If vibration detected → blinks LED and activates buzzer with rising/falling tones (5 cycles).
  • Turns buzzer OFF after alert sequence.

Project 2: Fire Alarm System

Pin Definitions:

#define MQ4 25   // Gas sensor
#define flame 27 // Flame sensor
#define LED 19   // LED indicator
#define buzzer 18// Buzzer alarm

  • MQ4 – Detects gas leaks.
  • flame – Detects fire or flame.
  • LED – Visual warning.
  • buzzer – Audio alarm.

setup() Function:

  • Configures sensors as inputs, LED & buzzer as outputs.
  • Starts serial monitor.

loop() Function:

  • Reads gas sensor and flame sensor values.
  • If gas > threshold OR flame detected → triggers alarm cycle (LED flashing + buzzer tone sweep).
  • Repeats sequence 5 times, then turns buzzer OFF.

Project 3: Automatic Door

Libraries Used:

#include <ultrasonic.h>
#include <esp32_servo.h>

Pin Definitions:

#define servoPin 13 // Servo motor pin
#define trig 16     // Ultrasonic trigger
#define echo 17     // Ultrasonic echo

  • servoPin – Controls door movement.
  • trig/echo – Detect distance of approaching person.

setup() Function:

  • Initializes ultrasonic sensor.
  • Attaches servo at closed position.

loop() Function:

  • Reads distance from ultrasonic sensor.
  • If object/person within 10 cm → opens door by rotating servo.
  • Waits 5 seconds, then closes door.


Project 4: Password Access Control

Libraries Used:

#include <acb_keyboard_i2c.h>
#include <esp32_servo.h>

Pin Definitions:

#define LED 19      // LED indicator
#define buzzer 18   // Buzzer alert
#define servoPin 13 // Servo lock

  • LED – Visual feedback (incorrect password).
  • buzzer – Audio feedback.
  • servoPin – Controls lock mechanism.

Variables:

  • password[7] – Stores correct password.
  • input_password[7] – Stores user input.

setup() Function:

  • Initializes LED, buzzer, servo, keypad.
  • Positions servo in locked state.

loop() Function:

  • Waits for 6-digit password entry via keypad.
  • Compares entered password with stored one.
  • If correct → opens door with servo motor.
  • If incorrect → flashes LED, sounds buzzer.

Helper Function:

  • door_open() – Rotates servo to unlock/lock door.

 

 Smart Home Services

Project 1: Automatic Drying Rack

Libraries Used:

#include <esp32_servo.h>

Pin Definitions:

#define servoPin 13   // Servo motor
#define rainSensor 39 // Rain sensor
#define PR 33         // Light sensor

  • servoPin – Moves rack in/out.
  • rainSensor – Detects rainfall.
  • PR – Detects daylight levels.

Variables:

  • state – Tracks rack position (true = indoors, false = outdoors).

setup() Function:

  • Attaches servo to motor.
  • Configures rain & light sensors as inputs.
  • Sets rack initially indoors.

loop() Function:

  • Reads light and rain values.
  • If daytime and no rain → extends rack outdoors.
  • If night or raining → retracts rack indoors.

 

Project 2: Automatic Pet Feeder

Libraries Used:

#include <wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>
#include <ultrasonic.h>
#include <esp32_servo.h>

Pin Definitions:

#define buzzer 18
#define servoPin 13
#define trig 16
#define echo 17

  • buzzer – Audio alert for feeding.
  • servoPin – Opens/closes food container.
  • trig/echo – Detects pet presence.
  • LCD – Displays timer and feeding status.

Variables:

  • timer, h, m, s – Feeding interval timer.
  • myUltrasonic – Detects pet near feeder.

setup() Function:

  • Initializes LCD, ultrasonic sensor, buzzer, servo.
  • Starts feeding timer at 0.

loop() Function:

  • Updates timer on LCD.
  • Every 5 seconds → activates buzzer & checks pet presence.
  • If pet detected → rotates servo to dispense food, then closes.

 

Project 3: Automatic Watering System

Libraries Used:

#include <wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>

Pin Definitions:

#define moistureSensor 25 // Soil moisture
#define relay 23          // Relay pump

  • moistureSensor – Detects soil dryness.
  • relay – Controls water pump.
  • LCD – Displays soil moisture and pump status.

setup() Function:

  • Initializes LCD, relay, and sensor.
  • Starts serial monitor for data logging.

loop() Function:

  • Reads soil moisture sensor value.
  • If value < 1000 → turns pump ON (watering).
  • Else → pump remains OFF.
  • Displays status on LCD.


Video Demonstration

 Intelligent Security System

 

Smart Home Services



Conclusion

The Acebott Smart Home Edu Kit (Arduino Level 2) offers a practical and engaging way to explore the future of intelligent living. By combining sensors, actuators, and controllers into an accessible platform, it allows learners to understand how technology can transform homes into safer, more convenient, and more efficient environments. Its plug-and-play design lowers barriers to entry, while coding through the Arduino IDE builds essential problem-solving and programming skills.

Beyond individual projects, the kit encourages creativity and experimentation, giving students and hobbyists the tools to design their own smart solutions. From enhancing security to automating daily routines, the Acebott Kit demonstrates how IoT concepts can be applied to real-world needs, turning abstract theories into meaningful, hands-on experiences.

Whether used in classrooms, innovation labs, or at home, the Acebott Smart Home Edu Kit serves as a bridge between learning and application. More than just an educational resource, it inspires the next generation of innovators to imagine and create intelligent systems that will define the future of smart homes and sustainable living.

 

References

  • Acebott Official Tutorials – Smart Home Edu Kit (Arduino Level 2)
  • Acebott Product Page – Smart Home Educational Kit (Arduino Level 2)
  • Arduino IDE Official Documentation
  • ESP32 Technical Reference Manual
  • I2C LCD1602 Datasheet and Library Documentation
  • MFRC522 RFID Module Datasheet and Arduino Library
  • PIR Motion Sensor (HC-SR501) Datasheet
  • Light Sensor Module Documentation
  • Servo Motor (SG90) Technical Datasheet
Acebott smart home kitArduino level 2 projectsArduino sensors and modulesBeginner arduino projectsDiy smart home projectsEducational robotics and iotIot education kitSmart pet feeder arduinoStem education kitsVibration sensor alarm

Leave a comment

All comments are moderated before being published