|
1 |
| -### Project name |
| 1 | +### Project Name |
2 | 2 |
|
3 | 3 | **H3RU Home Control System**
|
4 | 4 |
|
5 |
| -### Explanation |
| 5 | +### Description |
6 | 6 |
|
7 |
| -This project is a system developed to provide security and automation at home using NVIDIA Jetson Nano and Arduino. The system works integrated with various cameras and a solenoid lock mechanism and provides control of the garage and entrance door. Users can open the door with their RFID card or keypad and specific messages are displayed for each user. |
| 7 | +This project is a system developed to provide security and automation at home using NVIDIA Jetson Nano and Arduino. The system integrates various cameras and provides control of the garage and entrance door through a web interface. Users can open the door via the web, receive doorbell notifications, and engage in voice communication. |
8 | 8 |
|
9 | 9 | ### Features
|
10 | 10 |
|
| 11 | +- **Web Control Interface**: |
| 12 | + - Control garage and entrance door through a web dashboard. |
| 13 | + - Real-time camera feeds accessible via the web. |
| 14 | + |
| 15 | +- **Doorbell Integration**: |
| 16 | + - Receive doorbell notifications on the web interface. |
| 17 | + - Play custom doorbell sounds when triggered. |
| 18 | + |
| 19 | +- **Voice Communication**: |
| 20 | + - Two-way voice communication through the web interface. |
| 21 | + |
11 | 22 | - **3 Camera Support**:
|
12 |
| - - Camera that detects motion and recognizes license plates outside the garage (10 meters away). |
13 |
| - - Camera detecting vehicle entry inside the garage. |
14 |
| - - Camera at the entrance door that detects ringtones and provides video streaming. |
15 |
| -- **RFID and Keypad Login**: Users can log in with their RFID cards or password. |
16 |
| -- **Personal Messages**: Personal greeting messages for each user. |
17 |
| -- **Control via Internet**: Possibility of control over the internet by connecting to Jetson Nano via Ethernet cable. |
18 |
| -- **Displaying Results**: Results from Arduino are displayed in the web interface via Jetson Nano. |
| 23 | + - Camera monitoring the garage exterior. |
| 24 | + - Camera monitoring the garage interior. |
| 25 | + - Camera monitoring the entrance. |
19 | 26 |
|
20 |
| -### Required Hardware |
| 27 | +- **Personalized Messages**: Displays personalized greeting messages for each user on the LCD screen. |
| 28 | + |
| 29 | +### Hardware Requirements |
21 | 30 |
|
22 | 31 | - NVIDIA Jetson Nano
|
23 | 32 | - Arduino (UNO or Mega)
|
24 |
| -- MFRC522 RFID Reader |
25 |
| -- RF transreceiver |
26 |
| -- 4x3 Keypad |
27 |
| -- RCSwitch library (RF control for garage door) |
| 33 | +- 4x3 Keypad (I created a button circuit that includes a common GND connection line that I created myself.) |
28 | 34 | - 3 USB Cameras
|
29 |
| -- Ethernet Cable |
30 |
| -- Solenoid lock |
31 |
| -- 16x2 screen |
| 35 | +- Ethernet Cable or Wi-Fi Module |
| 36 | +- 16x2 LCD Screen |
| 37 | +- Doorbell Button |
| 38 | +- Speaker or Audio Output Device |
32 | 39 |
|
33 |
| -### Required Software |
| 40 | +### Software Requirements |
34 | 41 |
|
35 |
| --Python 3 |
36 |
| -- Flask (web framework) |
| 42 | +- Python 3 |
| 43 | +- FastAPI (web framework) |
| 44 | +- Uvicorn (ASGI server) |
37 | 45 | - OpenCV (for image processing)
|
| 46 | +- PySerial (for serial communication) |
| 47 | +- Jinja2 (templating engine) |
38 | 48 | - Arduino IDE
|
39 | 49 |
|
40 |
| -### Setup |
| 50 | +### Setup Instructions |
| 51 | + |
| 52 | +1. **Clone the Repository** |
| 53 | + |
| 54 | + ```bash |
| 55 | + git clone https://github.com/SentryCoderDev/H3RU-Home_Control_System.git |
| 56 | + cd H3RU-Home_Control_System |
| 57 | + ``` |
| 58 | + |
| 59 | +2. **Install Python Dependencies** |
| 60 | + |
| 61 | + Install the required Python packages using the `requirements.txt` file: |
| 62 | + |
| 63 | + ```bash |
| 64 | + pip install -r requirements.txt |
| 65 | + ``` |
| 66 | + |
| 67 | +3. **Generate a Self-Signed SSL Certificate** |
| 68 | + |
| 69 | + The application uses secure WebSockets and requires SSL certificates. Generate a self-signed SSL certificate: |
| 70 | + |
| 71 | + ```bash |
| 72 | + openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem |
| 73 | + ``` |
| 74 | + |
| 75 | + Follow the prompts to enter the required information. |
| 76 | + |
| 77 | +4. **Set Up Arduino** |
| 78 | + |
| 79 | + - Install the Arduino IDE. |
| 80 | + - Connect the Arduino to your computer. |
| 81 | + - Open the Arduino sketch at `/arduino/arduino_code/arduino_code.ino`. |
| 82 | + - Upload the code to your Arduino board. |
| 83 | + - Ensure all hardware components are properly connected. |
41 | 84 |
|
42 |
| -1. **Jetson Nano**: |
43 |
| - - Install Jetson Nano and install necessary software. |
44 |
| - - Clone project files. |
45 |
| - - Run the Flask application. |
| 85 | +5. **Run the Application** |
46 | 86 |
|
47 |
| -2. **Arduino**: |
48 |
| - - Install Arduino and install the necessary libraries. |
49 |
| - - Upload the Arduino code. |
| 87 | + Start the FastAPI application using Uvicorn with SSL: |
50 | 88 |
|
51 |
| -### Use |
| 89 | + ```bash |
| 90 | + uvicorn app:app --host 0.0.0.0 --port 8001 --ssl-certfile=cert.pem --ssl-keyfile=key.pem |
| 91 | + ``` |
52 | 92 |
|
53 |
| -1. **Launch Flask Application**: |
54 |
| - ```bash |
55 |
| - python app.py |
56 |
| - ``` |
| 93 | +6. **Access the Web Interface** |
57 | 94 |
|
58 |
| -2. **Access the Web Interface**: |
59 |
| - Go to `http://<JetsonNano_IP>:5000` from your browser. |
| 95 | + Open your web browser and navigate to: |
60 | 96 |
|
61 |
| -3. **Watch Footage**: |
62 |
| - You can view images from three cameras in the web interface. |
| 97 | + ``` |
| 98 | + https://<JetsonNano_IP>:8001/ |
| 99 | + ``` |
63 | 100 |
|
64 |
| -4. **Open the Door**: |
65 |
| - Scan your RFID card or enter your password with Keypad. |
| 101 | + Replace `<JetsonNano_IP>` with the IP address of your Jetson Nano. |
66 | 102 |
|
67 |
| -5. **View Result Messages**: |
68 |
| - You can see the login process results in the web interface. |
| 103 | + **Note**: Since we're using a self-signed certificate, your browser may warn you about an insecure connection. You can proceed by accepting the risk and continuing to the site. |
69 | 104 |
|
70 | 105 | ### Directory Structure
|
71 | 106 |
|
72 | 107 | ```
|
73 |
| -HomeControlSystem/ |
| 108 | +H3RU-Home_Control_System/ |
74 | 109 | ├── app.py
|
| 110 | +├── daemon.py |
75 | 111 | ├── templates/
|
76 |
| -│ └── index.html |
77 |
| -├──static/ |
78 |
| -│ └── styles.css |
79 |
| -└── arduino/ |
80 |
| - └── arduino_code.ino |
| 112 | +│ └── index.html |
| 113 | +├── static/ |
| 114 | +│ ├── styles.css |
| 115 | +│ ├── sounds/ |
| 116 | +├── arduino/ |
| 117 | +│ └── arduino_code/ |
| 118 | +│ └── arduino_code.ino |
| 119 | +├── requirements.txt |
| 120 | +└── README.md |
81 | 121 | ```
|
82 | 122 |
|
83 | 123 | ### Contributing
|
|
0 commit comments