Cài đặt môi trường lập trình cho ESP8266 bằng Arduino

Một phần của tài liệu DA2-N5_DHDT12A3HN-HTQSMNQMVT (Trang 28)

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{}; }

Một phần của tài liệu DA2-N5_DHDT12A3HN-HTQSMNQMVT (Trang 28)

Tải bản đầy đủ (DOCX)

(48 trang)
w