1. Trang chủ
  2. » Giáo Dục - Đào Tạo

hệ thống thực hiện ý tưởng thiết kế và chế tạo mô hình nhà thông minh sử dụng esp32

20 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hệ thống thực hiện ý tưởng thiết kế và chế tạo mô hình nhà thông minh sử dụng ESP32
Định dạng
Số trang 20
Dung lượng 256,79 KB

Nội dung

Bộ điều khiển thiết kế có khả năng bật tắt các thiết bị một cách linh hoạt bằng các thiết bị di động có kết nối mạng Wifi hoặc mạng viễn thông di động.. Các trạng thái của thiết bị cũng

Trang 1

MỤC LỤC

Contents

Mục lục 1

CHƯƠNG I: Tổng quan 2

1 Giới thiệu về hệ thống 2

2 Các giải pháp 2

3 Mô hình kiến trúc hệ thống 2

4 Kịch bản hoạt động 3

CHƯƠNG II: Xây dựng hệ thống 4

1 Xây dựng hệ thống phần cứng 4

a Module ESP32 4

b Cảm biến nhiệt độ và độ ẩm DHT11 5

c Đèn LED 6

d Dây dẫn 6

2 Phần mềm điều khiển 6

3 Chương trình nạp vào ESP32 7

CHƯƠNG III: Kết nối hệ thống 12

1 Giải pháp 12

2 Web 13

3 Phát triển 19

Trang 2

CHƯƠNG I: TỔNG QUAN

1 Giới thiệu về hệ thống

Hệ thống thực hiện ý tưởng thiết kế và chế tạo mô hình nhà thông minh sử dụng ESP32 Bộ điều khiển thiết kế có khả năng bật tắt các thiết bị một cách linh hoạt bằng các thiết bị di động có kết nối mạng Wifi hoặc mạng viễn thông di động Các trạng thái của thiết bị cũng có thể được cập nhật tức thời lên các thiết bị này nhằm kiểm soát

sự hoạt động của ngôi nhà

2 Các giải pháp

Một số giải pháp về nhà thông minh tiêu biểu trên thị trường hiện nay:

3 Mô hình kiến trúc hệ thống

Trang 3

Module ESP32

Web Sever

Cảm biến nhiệt

độ DHT11

Các nút ấn trên

Web Sever

Đèn LED

Các ô hiển thị giá trị cảm biến

Cảm biến vật

4 Kịch bản hoạt động

Hệ thống nhà thông minh được hoạt động với kịch bản như sau:

Cảm biến DHT11 đọc nhiệt độ và độ ẩm từ môi trường, chuyển tín hiệu này thành tín hiệu điện áp Tín hiệu điện áp được truyền đến ESP32 ESP chuyển tín hiệu điện áp thành tín hiệu digital và dựa trên thuật toán để gửi lên Web Server

ESP32 đọc trạng thái chân đèn LED và quạt Trạng thái được truyền tín hiệu liên tục lên Web Server để hiển thị Mỗi lần nhấn nút ON hoặc OFF trên Web Sever sẽ gửi các tín hiệu 1 hoặc 0 để bật tắt đèn tại các chân GPIO gắn với LED hoặt quạt

Cảm biến vật cản LM393 truyền tín hiêu digital 1 hoặc 0 đến ESP32 khi có người xuất hiện Khi có người xuất hiện, cảm biến sẽ xuất tín hiệu 0 và ngược lại khi không có người tín hiệu sẽ luôn hiển thị là 1

Dữ liệu được cập nhật liên tục có đỗ trễ rất thấp

Trang 4

CHƯƠNG II: XÂY DỰNG HỆ THỐNG

1 Xây dựng hệ thống phần cứng

a Module ESP32

ESP32 là một hệ thống vi điều khiển trên chip (SoC) giá rẻ của Espressif Systems, nhà phát triển của ESP8266 SoC Nó là sự kế thừa của SoC ESP8266 và có

cả hai biến thể lõi đơn và lõi kép của bộ vi xử lý 32-bit Xtensa LX6 của Tensilica với Wi-Fi và Bluetooth tích hợp Điểm tốt về ESP32, giống như ESP8266 là các thành phần RF tích hợp của nó như bộ khuếch đại công suất, bộ khuếch đại nhận tiếng ồn thấp, công tắc ăng-ten, bộ lọc và Balun RF Điều này làm cho việc thiết kế phần cứng xung quanh ESP32 rất dễ dàng vì bạn cần rất ít thành phần bên ngoài Một điều quan trọng khác cần biết về ESP32 là nó được sản xuất bằng công nghệ 40 nm công suất cực thấp của TSMC Vì vậy, việc thiết kế các ứng dụng hoạt động bằng pin như thiết

bị đeo, thiết bị âm thanh, đồng hồ thông minh, , sử dụng ESP32 sẽ rất dễ dàng

ESP32 có nhiều tính năng hơn ESP8266 và rất khó để đưa tất cả các thông số

kỹ thuật vào bài này Vì vậy, Điện Tử Tương Lai đã lập danh sách một số thông số kỹ thuật quan trọng của ESP32 tại đây Nhưng để có bộ thông số kỹ thuật hoàn chỉnh, bạn nên tham khảo datasheet

Trang 5

 Ethernet MAC cho giao tiếp mạng LAN vật lý (yêu cầu PHY bên ngoài).

/ SPI

b Cảm biến nhiệt độ và độ ẩm DHT11

DHT11 là cảm biến đo nhiệt độ, độ ẩm đầu ra số có hiệu chỉnh đảm bảo kết quả

đo có độ chính xác cao Kết quả đo được lưu trữ trong bộ nhớ Khi giao tiếp với DHT11 thì kết quả đo sẽ được đọc ra từ bộ nhớ, module có kích thước nhỏ gọn và được đóng gói với 3 chân kết nối rất thuận tiện và phù hợp với nhiều ứng dụng thực tiễn

Thông số kỹ thuật của cảm biến

lần truyền dữ liệu là 5ms

Trang 6

 Dữ liệu truyền trên chân DATA bao gồm dữ liệu độ ẩm 16bits và dữ liệu nhiệt

độ 16bits

Khi MCU gửi tín hiệu start signal thì DHT11 thay đổi từ chế độ công suất thấp sang chế độ hoạt động Khi MCU giao tiếp với DHT11 thì cảm biến sẽ gửi tín hiệu đáp ứng của 40bits data chứa giá trị nhiệt độ và độ ẩm tới MCU Khi kết thúc cảm biến lại trở về chế độ công suất thấp

c Cảm biến vật cản hồng ngoại LM393

Hình 1: Cảm biến hồng ngoại LM393

Cảm biến vật cản hồng ngoại có khả năng thích nghi với môi trường, có một cặp truyền và nhận tia hồng ngoại Tia hồng ngoại phát ra một tần số nhất định, khi phát hiện hướng truyền có vật cản (mặt phản xạ), phản xạ vào đèn thu hồng ngoại, sau khi so sánh, đèn màu xanh sẽ sáng lên, đồng thời đầu cho tín hiệu số đầu ra (một tín hiệu bậc thấp)

Khoảng cách làm việc hiệu quả 2 ~ 5cm, điện áp làm việc là 3.3 V đến 5V Độ nhạy sáng của cảm biến vật cản hồng ngoại được điều chỉnh bằng chiết áp, cảm biến

dễ lắp ráp, dễ sử dụng,…

Có thể được sử dụng rộng rãi trong robot tránh chướng ngại vật, xe tránh chướng ngại vật và dò đường…

d Đèn LED

e Dây dẫn

5 Phần mềm điều khiển

Môi trường phát triển tích hợp Arduino IDE là một ứng dụng đa nền tảng được viết bằng Java, và được dẫn xuất từ IDE cho ngôn ngữ lập trình xử lý và các dự án lắp ráp Nó bao gồm một trình soạn thảo mã với các tính năng như làm nổi bật cú pháp,

Trang 7

khớp dấu ngoặc khối chương trình, thụt đầu dòng tự động và cũng có khả năng biên dịch và tải lên các chương trình vào board mạch với một nhấp chuột duy nhất Một chương trình hoặc mã viết cho Arduino được gọi là "sketch"

Chương trình Arduino được viết bằng C hoặc C++ Arduino IDE đi kèm với một thư viện phần mềm được gọi là "Wiring" từ dự án lắp ráp ban đầu, cho hoạt động đầu vào/đầu ra phổ biến trở nên dễ dàng hơn nhiều Người sử dụng chỉ cần định nghĩa hai hàm để thực hiện một chương trình điều hành theo chu kỳ Khi các chúng ta bật điện bảng mạch Arduino, reset hay nạp chương trình mới, hàm setup() sẽ được gọi đến đầu tiên Sau khi xử lý xong hàm setup(), Arduino sẽ nhảy đến hàm loop() và lặp vô hạn hàm này cho đến khi tắt điện board mạch Arduino

Dưới đây là giao diện của phần mềm:

6 Chương trình nạp vào ESP32

#include <WiFi.h> // thư viện mạng

#include <WebServer.h>

#include "PageIndex.h" //input trang web

#include <DHT.h>

#define LED_1 18 // 2 chân led

#define LED_2 19

Trang 8

#define LEDCB 21

#define cambien 22

int a = 0;

const int DHTTYPE = DHT11;

const char *ssid = "NHÀ THÔNG MINH"; //pass và tến wifi const char *password = "12345678";

IPAddress local_ip(192, 168, 2, 1);//kế9 t nố9 i wifi NHÀ THÔNG MINH, nhập 192.168.2.1 vào chrome là xong

IPAddress gateway(192, 168, 2, 1);

IPAddress subnet(255, 255, 255, 0);

WebServer server(80);

DHT dht(DHTPIN, DHTTYPE);

float nhietdo, doam;

void handleRoot()

{

server.send(200, "text/html", MAIN_page); //khở7 i tạo HTML

}

void handleLED_1() //hàm bật led1

{

String LightState = "OFF";

String t_state = server.arg("LEDState");

Serial.print("GPIO 18 | ");

Serial.print(t_state);

if (t_state == "1")

{

Trang 9

digitalWrite(LED_1, LOW);

LightState = "OFF";

Serial.println(" | LED 1 OFF");

}

else

{

digitalWrite(LED_1, HIGH);

LightState = "ON";

Serial.println(" | LED 1 ON");

}

server.send(200, "text/plane", LightState);

}

void handleLED_2() //hàm bật led 2

{

String LightState = "OFF";

String t_state = server.arg("LEDState");

Serial.print("GPIO 19 | ");

Serial.print(t_state);

if (t_state == "1")

{

digitalWrite(LED_2, LOW);

LightState = "OFF";

Serial.println(" | LED 2 OFF");

}

else

{

digitalWrite(LED_2, HIGH);

LightState = "ON";

Serial.println(" | LED 2 ON");

}

server.send(200, "text/plane", LightState);

Trang 10

void docdulieunhietdo() // hàm đọc dữ liệu nhiệt độ

{

nhietdo = dht.readTemperature();

String snhietdo = String(nhietdo);

if (isnan(nhietdo))

{

server.send(200, "text/plain", "Failed to read DHT11 Sensor");

}

else

{

server.send(200, "text/plain", snhietdo);

}

}

{

doam = dht.readHumidity();

String sdoam = String(doam);

if (isnan(doam))

{

server.send(200, "text/plain", "Failed to read DHT11 Sensor");

}

else

{

server.send(200, "text/plain", sdoam);

}

}

Trang 11

void setup(void)

{

Serial.begin(115200);

delay(1000);

Serial.println("");

pinMode(LED_1, OUTPUT); //chân led out

pinMode(LEDCB, OUTPUT);

pinMode(LED_2, OUTPUT);

pinMode(cambien, INPUT);

dht.begin();

WiFi.softAP(ssid, password);

WiFi.softAPConfig(local_ip, gateway, subnet);

server.on("/", handleRoot);

server.on("/setLED1", handleLED_1);//gư7 i trạng thái led 1

server.on("/setLED2", handleLED_2);//gư7 i trạng thái led 2

server.on("/docnhietdo", docdulieunhietdo); //gư7 i

server.on("/docdoam", docdulieudoam); //gư7 i biế9 n độ â7 m vào web

server.begin();

Serial.println("HTTP server started");

}

void loop(void)

{

server.handleClient();

a = digitalRead(cambien);

if( a == 1)

Trang 12

{

digitalWrite(LEDCB, LOW);

}

else{

digitalWrite(LEDCB, HIGH);

}

}

Trang 13

CHƯƠNG III: KẾT NỐI HỆ THỐNG

1 Giải pháp

Chúng ta đang sống trong một thời đại với rất nhiều công nghệ hiện đại khiến cho cuộc sống của chúng ta trở nên dễ dàng hơn Trong vài năm trở lại đây, các bước tiến lớn về công nghệ đã khiến cho ngôi nhà của chúng ta ngập tràn các thiết bị công nghệ cao Nói một cách đơn giản thì các giải pháp công nghệ này cho phép có thể điều hành căn nhà của mình thông qua các thiết bị điều khiển từ xa, thường là điện thoại thông minh hoặc máy tính bảng Có thể kiểm soát các thiết bị điện chiếu sáng đến các thiết bị đảm bảo an ninh

Giới thiệu về bộ điều khiển: Cấu trúc đơn giản, dễ điều khiển Mô hình nhà thông minh được thiết kế với các chức năng như sau:

Với các chức năng thiết kế nêu trên, sơ đồ khối của hệ thống được thiết kế như sau

Cảm biến nhiệt độ

và độ ẩm bật Bắt đầu Cảm biến vật cản bật

Gửi dữ liệu nhiệt độ tín hiệu digital về ESP32

Gửi tín hiệu digital

về ESP32

Gửi tín hiệu 1 hoặc 0

về ESP32

Kiểm tra dữ liệu nhận được có phải dạng số nguyên không

In ra màn hình cảm biến hoạt động Gửi dữ liệu đến hàm Script của HTML

In ra màn hình cảm biến không hoạt động

Khởi tạo WebServer

Khởi tạo WebServer

Input co de HTML dưới dạng text, khởi chạy cấu hình trang web

Script nhận tín hiệu đúng địa chỉ đính kèm

Kiểm tra tín hiệu nhận được

Đèn tắt

Đèn sáng

Hiển thị lên trên Web Server Kết thúc

7 Web

Chương trình tạo giao diện trên Web:

Trang 14

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width, initial-scale=1">

href='https://use.fontawesome.com/releases/v5.7.2/css/all

integrity='sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpv LbHG9Sr' crossorigin='anonymous'>

<title>NHA THONG MINH</title>

<style>

html {

font-family: Arial;

display: inline-block;

margin: 0px auto;

text-align: center;

}

h1 { font-size: 3.0rem;}

p { font-size: 2.0rem; }

units {

font-size: 1.2rem;

}

dht-labels{

font-size: 1.5rem;

vertical-align:middle;

padding-bottom: 15px;

}

buttonON {

display: inline-block;

Trang 15

padding: 15px 25px;

font-size: 24px;

font-weight: bold;

cursor: pointer;

text-align: center;

text-decoration: none;

outline: none;

color: #fff;

background-color: #4CAF50;

border: none;

border-radius: 15px;

box-shadow: 0 5px #999;

}

.buttonON:hover {background-color: #3e8e41}

.buttonON:active {

background-color: #3e8e41;

box-shadow: 0 1px #666;

transform: translateY(4px);

}

buttonOFF {

display: inline-block;

padding: 15px 25px;

font-size: 24px;

font-weight: bold;

cursor: pointer;

text-align: center;

text-decoration: none;

outline: none;

color: #fff;

background-color: #e74c3c;

border: none;

Trang 16

border-radius: 15px;

box-shadow: 0 5px #999;

}

buttonOFF:hover {background-color: #c0392b}

buttonOFF:active {

background-color: #c0392b;

box-shadow: 0 1px #666;

transform: translateY(4px);

}

</style>

</head>

<body>

<div>

<h1>NHA THONG MINH</h1>

<p>

<span class='dht-labels'>NHIET DO: </span>

<span id="nhietdos">0</span>

<sup class='units'>&deg;C</sup>

</p>

<p>

<span class='dht-labels'>DO AM: </span>

<span id="doams">0</span>

<sup class='units'>&percnt;</sup>

</p>

</div>

<div>

<p style="color:#2c3e50;font-weight:

id="LEDState1">NA</span></p>

</div>

Trang 17

<div>

<button type="button" class="buttonON" onclick="sendDataLED1(0)">DEN BAT</button>

<button type="button" class="buttonOFF" onclick="sendDataLED1(1)">DEN TAT</button><BR>

</div>

<div>

<p style="color:#2c3e50;font-weight:

id="LEDState2">NA</span></p>

</div>

<div>

<button type="button" class="buttonON" onclick="sendDataLED2(0)">DEN BAT</button>

<button type="button" class="buttonOFF" onclick="sendDataLED2(1)">DEN TAT</button><BR>

</div>

<script>

setInterval(function()

{

getnhietdo();

getdoam();

}, 1000);

function getnhietdo() {

var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function() {

Trang 18

if (this.readyState == 4 && this.status == 200) {

document.getElementById("nhietdos").innerHTML

= this.responseText;

}

};

xhttp.open("GET", "docnhietdo", true);

xhttp.send();

}

function getdoam() {

var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function() {

if (this.readyState == 4 && this.status == 200) {

document.getElementById("doams").innerHTML = this.responseText;

}

};

xhttp.open("GET", "docdoam", true);

xhttp.send();

}

function sendDataLED1(LED) {

var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function() {

if (this.readyState == 4 && this.status == 200) {

document.getElementById("LEDState1").innerHTM

L = this.responseText;

}

};

Ngày đăng: 03/07/2024, 16:16

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w