3.1.1 cảm biến
Cảm biến siêu âm SR04 sử dụng nguyên lý phản xạ sóng siêu âm. Cảm biến gồm 2 module.1 module phát ra sóng siêu âm và 1 module thu sóng siêu âm phản xạ về. Đầu tiên cảm biến sẽ phát ra 1 sóng siêu âm với tần số 40khz. Nếu có chướng ngại vật trên đường đi, sóng siêu âm sẽ phản xạ lại và tác động lên module nhận sóng. Bằng cách đo thời gian từ lúc phát đến lúc nhận sóng ta sẽ tính được khoảng cách từ cảm biến đến chướng ngại vật.
Khoảng cách = (thời gian * vận tốc âm thanh (340 m/s) / 2
2.1.2. Esp8226
Node MCU là một IoT platform mã nguồn mở được phát triển dựa trên chip WIFI ESP8266EX bên trong module ESP8266 v12. Trên board có tích hợp IC CP2102 giúp việc upload chương trình một cách dễ dàng.
2.1.3. Nguồn
Esp8226
Nguồn Power Adaptor AC-DC 5V 2A tại Hshop.vn được đặt hàng gia công với chất lượng tốt, công suất đầu ra thực tế được Hshop.vn kiểm định và đảm bảo luôn lớn hơn 80% công suất trên thông tin sản phẩm (nếu không Quý Khách sẽ được hoàn tiền), các loại trôi nổi giá rẻ trên thị trường hiện nay khi được kiểm định thường chỉ đạt 20~30% thông số thực tế (ví dụ ghi 5V 1A nhưng thực tế kiểm tra chỉ được 5V 150~200mA).
Nguồn Power Adaptor AC-DC 5V 2A được sử dụng để cấp nguồn cho các thiết bị sử dụng điện áp 5VDC, nguồn có thiết kế nhỏ gọn, linh kiện gia công chất lượng tốt, dây điện có lõi đồng dày, độ bền cao, dòng đầu theo thông số nhà sản xuất lên đến 2A.
Thông số kỹ thuật:
Điện áp ngõ vào:100~240VAC, 50/60Hz. Điện áp ngõ ra: 5VDC
Dòng điện ngõ ra tối đa: 2A (nếu sử dụng liên tục nên cung cấp ở mức 80% công suất).
Kiểu nguồn: nguồn xung.
Kiểu giắc ngõ ra: Chuẩn Jack DC tròn đường kính ngoài 5.5mm, đường kính trong phù hợp với lỗ kim từ 2.1~2.5mm.
Sơ đồ nguyên lý
Hình 2.2. Sơ đồ nguyên lý
2.1.3 Cài đặt môi trường lập trình cho ESP8266 bằng Arduino
2. Sau khi cài xong các bạn mở Arduino IDE lên, vào phần File- >Preferences. Tại phần Additional Boards Manager URLs các bạn thêm đường dẫn: http://arduino.esp8266.com/stable/package_esp8266com_index.json v à ấn OK.
Chạy DEMO ESP8266 Blink.
2.2 Nguyên lí hoạt động, Lắp ráp mạch thực tế 2.2.1 Lắp ráp mạch thực tế
Hình 2.4
Hình 2.6
Cách đấu các chân:
Chân VCC (LCD) nối với chân VIN (NodeMcu V3) Chân GND (LCD) nối với chân G (NodeMcu V3) Chân SDA (LCD) nối với chân D2 (NodeMcu V3) Chân SCL (LCD) nối với chân D1 (NodeMcu V3) ---
Chân VCC (Ultrasonic Sensor) nối với chân 3V (NodeMcu V3) Chân Trig (Ultrasonic Sensor) nối với chân D5 (NodeMcu V3) Chân Echo (Ultrasonic Sensor) nối với chân D6 (NodeMcu V3)
Chân GND (Ultrasonic Sensor) nối với chân G (NodeMcu V3)
2.2.2 Nguyên lí hoạt động
Cảm biến siêu âm hoạt động dựa trên nguyên lý phát sóng và phản xạ sóng. Nguyên lý này tương tự như ở loài dơi. Khi tìm mồi trong đêm, dơi thường phát ra các dạng sóng siêu âm và khi các sóng siêu âm này gặp các vật cản sẽ phản xạ lại sóng và giúp dơi xác định được chướng ngại vật trước mặt.
Đối với cảm biến siêu âm cũng vậy; khi ta cấp nguồn hoạt động, cảm biến sẽ phát ra 1 chùm sóng siêu âm liên tục. Khi các chùm sóng này chạm đến bề mặt vật cản sẽ phản xạ ngược lại cảm biến. Lúc này cảm biến sẽ thu lại các chùm sóng và tính toán khoảng cách từ cảm biến đến vật cản dựa trên thời gian phản xạ và vận tốc của sóng.
Hình 2.7
Khi thu được tín hiệu, sẽ hiển thị lên màn hình LCD và đồng thời gửi tin nhắn về gmail 30 phút một lần.
Hình 2.8
Khi ấn nút trên broad thì sóng sẽ tiếp tục đo mực nước lúc đó rồi gửi về gmail đã được cài đặt trước đó.
CHƯƠNG 3: KẾT QUẢ, HƯỚNG PHÁT TRIỂN 3.1.1 Kếtquả:
Hình 3.1
Chúng ta có thể áp dụng sản xuất hàng để bán. Sản phẩm phù hợp với cả ngành công nghiệp và trong đời sống hàng ngày.
Để phát triển thêm có thể làm kết nối với cảnh báo hoặc vòi bơm nước, để xả nước khi quá nhiều hoặc bơm tự động khi mực nước quá thấp. Cũng có thể kiểm tra các thùng nhiên liệu để biết nhiều ít một cách an toàn.
KẾT LUẬN
Hệ thống thông báo mức nước qua mạng viễn thông đã được áp dụng khá rộng dãi trong đời sống và các ngành trong xã hội, điều đó cho thấy sự cần thiết cũng như phổ biến, lợi ích mà hệ thống mang lại là tốt.
DANH MỤC TÀI LIỆU KHAM KHẢO
Tham khảo Arduino nào có thể gửi mail:
ESP8266 – Wikipedia tiếng Việt
Tham khảo Cảm biến siêu âm là gì :
Cảm biến siêu âm là gì? Cấu tạo và nguyên lý hoạt động? | huphaco.vn (donghodoapsuat.vn)
Tham khảo cách đo mực nước bằng cảm biến siêu âm:
Arduino | Hướng dẫn sử dụng CHI TIẾT cảm biến Siêu Âm HY-SRF05 - YouTube
Mạch đo và hiển thị mực nước sử dụng arduino (dientutuonglai.com) [Arduino Basic #21] Cảm biến siêu âm HC-SR04 - YouTube
Tìm chi tiết sơ đồ chân esp8266:
Sơ đồ chân ESP8266 - Nên sử dụng chân nào (dientutuonglai.com)
Tham khảo cách gửi email từ ESP 8266:
IoT webserver- Gửi thông báo bằng email từ ESP8266 không dùng IFTTT - Lưu và chia sẻ kiến thức robocon, IoT, Embedded... (luuvachiase.net)
ESP8266 NodeMCU Gửi email bằng Máy chủ SMTP: HTML, Văn bản và Tệp đính kèm (Arduino) - Điều khiển & Tự động hoá (hatinh.tech)
Esp8266 send email part 2 / Gửi email đính kèm file các loại - YouTube Esp8266 send email - YouTube
PHỤ LỤC Code:
const int trig = 14; // D5 chân trig của HC-SR04 const int echo = 12; // D6 chân echo của HC-SR04
int gui = 1800000; //30 phút gửi mail 1 lần /Thời gian để gửi mail 1 lần int het = 10;
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //Thêm thư viện đi kèm trong thư mục đi kèm
LiquidCrystal_I2C lcd(0x27,20,4); #include "Arduino.h"
#include <EMailSender.h> #include <ESP8266WiFi.h> int but = D3; //Nút nhấn gửi mail
const char* ssid = "TMQ"; //Tên Wifi
const char* password = "quyetnew123"; //Mật khẩu Wifi long times;
uint8_t connection_state = 0;
uint16_t reconnect_interval = 10000;
EMailSender emailSend("hungdaoduy0703@gmail.com", "Hung0703"); //Mail và mật khẩu mail Gửi tin nhắn.
{
static uint16_t attempt = 0; Serial.print("Connecting to "); if(nSSID) { WiFi.begin(nSSID, nPassword); Serial.println(nSSID); } uint8_t i = 0;
while(WiFi.status()!= WL_CONNECTED && i++ < 50) { delay(200); Serial.print("."); } ++attempt; Serial.println(""); if(i == 51) {
Serial.print("Connection: TIMEOUT on attempt: "); Serial.println(attempt);
if(attempt % 2 == 0)
Serial.println("Check if access point available or SSID and Password\r\n");
return false; }
Serial.print("Got IP address: "); Serial.println(WiFi.localIP()); return true; } void Awaits() { uint32_t ts = millis(); while(!connection_state) { delay(50);
if(millis() > (ts + reconnect_interval) && !connection_state){ connection_state = WiFiConnect(); ts = millis(); } } } void setup() {
Serial.begin(9600); // giao tiếp Serial với baudrate 9600 lcd.init();
lcd.backlight(); times = millis();
pinMode(trig,OUTPUT); // chân trig sẽ phát tín hiệu pinMode(echo,INPUT); // chân echo sẽ nhận tín hiệu pinMode(but,INPUT_PULLUP);
lcd.setCursor(2,0);
lcd.print("DO MUC NUOC");
connection_state = WiFiConnect(ssid, password); if(!connection_state) // nếu không kết nối với WIFI Awaits(); // sẵn sàng thử lại kết nối
Serial.println("Sending status: ");
}
void loop() {
unsigned long duration; // biến đo thời gian int distance; // biến lưu khoảng cách
digitalWrite(trig,1); // phát xung từ chân trig
delayMicroseconds(5); // xung có độ dài 5 microSeconds digitalWrite(trig,0); // tắt chân trig
/* Tính toán thời gian */
// Đo độ rộng xung HIGH ở chân echo. duration = pulseIn(echo,HIGH);
// Tính khoảng cách đến vật. distance = int(duration/2/29.412);
/* In kết quả ra Serial Monitor */ Serial.print(distance); Serial.println("cm"); lcd.setCursor(0,1); lcd.print("T: Cm"); lcd.setCursor(3,1); lcd.print(distance); delay(200);
if(millis()- times == gui){
EMailSender::EMailMessage message;
message.message = String("MUC NUOC HIEN TAI LA: ") + String(distance) + String(" Cm ") ;
EMailSender::Response resp =
emailSend.send("tranminhquyet20@gmail.com", message); ///Mail nhận tin nhắn
times = millis(); }
if(digitalRead(but) == 0){ delay(300);
Serial.println("DA GUI MAIL");
EMailSender::EMailMessage message;
message.subject = "HE THONG DO MUC NUOC";
message.message = String("NUT NHAN DUOC NHAN <br> MUC NUOC HIEN TAI LA: ") + String(distance) + String(" Cm ") ;//<br>
EMailSender::Response resp =
emailSend.send("tranminhquyet20@gmail.com", message); }
else{}; }