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

EBOOK Tài liệu IOT ESP8266

82 72 0

Đ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 đề Ebook Tài Liệu IoT Esp8266
Tác giả Phi Nguyen
Định dạng
Số trang 82
Dung lượng 6,88 MB

Cấu trúc

  • I. Khái niệm Internet Of Things ( IOT) là gì? (6)
    • 1. Khái niệm IOT (6)
    • 2. Những ứng dụng thực tế trong cuộc sống (6)
    • 3. ESP8266 dòng chip được sử dụng phổ biến nhất hiện nay trong IOT (7)
    • 4. Module và Board phát triển của ESP8266 (8)
    • 5. Giới thiệu về module ESP 12E( NodeMCU V1) (9)
    • 6. Lập trình ESP 12E bằng Arduino IDE (10)
  • II. Bài học mẫu ứng dụng lập trình esp8266 (15)
    • 1. Lập trình điều khiển ESP8266 12E bằng Arduino IDE (15)
    • 2. Bật tắt led theo ý muốn bằng esp8266 12E (19)
    • 3. Bật tắt led bằng nút nhấn ( không lưu trạng thái) (21)
    • 4. Bật tắt led bằng nút nhấn (lưu trạng thái) (23)
    • 5. Điều khiển relay bằng Esp8266 V_12E (25)
    • 6. Hiển thị lên màn hình LCD bằng ESP8266 12E (26)
    • 7. Đọc giá trị cảm biến nhiệt độ LM35 và gửi lên thingspeak (28)
    • 8. Điều khiển thiết bị điện bằng webserver (33)
    • 9. Điều khiển thiết bị điện bằng wifi và app MIT invertor (40)
    • 10. Điều khiển thiết bị điện bằng Nodemcu( esp8266 12E) và app Blynk (47)
    • 11. Hiển thị màn hình OLED với Nodemcu( esp8266 12E) (53)
    • 12. Gửi thông báo về điện thoại khi có trộm bằng cảm biến chuyển động sử dụng (54)
    • 13. Điều khiển LED ma trận Max7219 với module WIFI NodeMCU (60)
    • 14. Đọc giá trị nhiệt độ, độ ẩm hiển thị lên màn hình oled 0.96” và blynk sử dụng (65)
    • 15. Thiết kế xe robot 4 bánh điều khiển bằng sóng Wifi ( nodemcu ) (72)

Nội dung

Khái niệm Internet Of Things ( IOT) là gì?

Khái niệm IOT

Internet of Things (IoT) là một mạng lưới kết nối, trong đó mỗi đồ vật và con người đều có định danh riêng, cho phép truyền tải và trao đổi thông tin qua một mạng duy nhất mà không cần tương tác trực tiếp IoT hình thành từ sự kết hợp của công nghệ không dây, vi cơ điện tử và Internet, tạo ra một hệ thống các thiết bị có khả năng kết nối với nhau và với thế giới bên ngoài để thực hiện các nhiệm vụ cụ thể.

IoT, hay Internet of Things, giúp mọi vật giao tiếp dễ dàng hơn, với ưu điểm nổi bật là khả năng phòng ngừa và cảnh báo mọi lúc, mọi nơi.

Những ứng dụng thực tế trong cuộc sống

Các ứng dụng của IoT trong đời sống rất phong phú và đa dạng Dưới đây là một số ứng dụng điển hình của IoT mà chúng ta có thể khám phá.

Smart Home là ứng dụng IoT được tìm kiếm nhiều nhất trên Google, mang đến nhiều tính năng tự động giúp nâng cao chất lượng cuộc sống Chẳng hạn, hệ thống có thể tự động bật máy điều hòa khi bạn sắp về nhà, tắt đèn khi bạn rời đi, mở khóa cửa cho người thân khi họ đến, và mở garage khi bạn lái xe về Những tiện ích này tạo ra sự thuận tiện và an toàn cho người sử dụng.

 Vật dụng mang theo trên người - Có thể kể đến một số thiết bị như Dashbon

Mask là một chiếc tai nghe thông minh cho phép bạn thưởng thức âm nhạc với chất lượng âm thanh trung thực cao và xem phim HD thông qua máy chiếu ảo Ngoài ra, AMPL SmartBag là một chiếc ba lô tích hợp pin dự phòng, giúp sạc điện cho các thiết bị di động, bao gồm cả máy tính.

ESP8266 dòng chip được sử dụng phổ biến nhất hiện nay trong IOT

ESP8266 là một chip Wi-Fi 2.4GHz có khả năng lập trình, giá cả phải chăng, được sản xuất bởi công ty Espressif Systems của Trung Quốc Ra mắt lần đầu vào tháng 8 năm 2014, chip này đã nhanh chóng thu hút sự chú ý trong cộng đồng phát triển nhờ vào tính năng linh hoạt và khả năng kết nối dễ dàng.

Mô đun ESP-01, được sản xuất bởi AI-Thinker, nổi bật với khả năng kết nối Internet qua Wi-Fi nhanh chóng và tiêu thụ ít linh kiện Với mức giá hợp lý, ESP8266 mang đến nhiều tính năng ấn tượng Cộng đồng phát triển lớn mạnh trên toàn cầu cung cấp nhiều module lập trình mã nguồn mở, giúp người dùng dễ dàng tiếp cận và phát triển ứng dụng Tất cả các dòng chip ESP8266 hiện nay trên thị trường đều mang nhãn ESP8266EX, phiên bản nâng cấp của ESP8266.

Module và Board phát triển của ESP8266

ESP8266 yêu cầu một số linh kiện bổ sung để hoạt động, trong đó ăng-ten là phần khó khăn nhất, cần được sản xuất và kiểm tra bằng thiết bị hiện đại Để đơn giản hóa quá trình phát triển ứng dụng cho người dùng, nhiều module và board mạch phát triển đã xuất hiện trên thị trường Một số module và board phát triển phổ biến bao gồm

Hiện nay phiên bản sử dụng phổ biến nhất là ESP8266 12E.

Giới thiệu về module ESP 12E( NodeMCU V1)

Sơ đồ chân của ESP12E

NodeMCU V1.0 được phát triển dựa trên Chip WiFi ESP8266EX bên trong

Module ESP-12E cho phép kết nối WiFi nhanh chóng và đơn giản Board được trang bị IC CP2102, giúp giao tiếp dễ dàng với máy tính qua cổng Micro USB Ngoài ra, board còn có nút nhấn và đèn LED hỗ trợ thuận lợi trong quá trình học tập và nghiên cứu.

Với kích thước nhỏ gọn, linh hoạt board dễ dàng liên kết với các thiết bị ngoại vi để tạo thành project, sản phẩm mẫu một cách nhanh chóng

 WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n

 Điện áp vào: 5V thông qua cổng USB

 Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)

 Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)

 Giao tiếp: Cable Micro USB

 Hỗ trợ bảo mật: WPA/WPA2

 Tích hợp giao thức TCP/IP

 Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU - Lua

Lập trình ESP 12E bằng Arduino IDE

ESP8266 12E là một lựa chọn tuyệt vời cho các dự án Wifi nhờ vào giá thành rẻ và tính dễ sử dụng Một trong những ưu điểm nổi bật của ESP8266 12E là khả năng lập trình bằng Arduino IDE Trước khi bắt tay vào các dự án với ESP8266, bài viết này sẽ hướng dẫn bạn cách cài đặt Arduino IDE để nạp code cho thiết bị.

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp

Cài đặt phần mềm arduino IDE và thư viện cho esp8266

Sau khi tải phần mềm Arduino IDE, hãy cài đặt như bình thường và mở chương trình Đừng quên cài đặt driver, file driver có sẵn trong bộ cài Để cài đặt thư viện và chức năng nạp code cho IDE, bạn cần thực hiện các bước sau:

Vào File→ Preferences, vào textbox Additional Board Manager URLs thêm đường link sau vào http://arduino.esp8266.com/stable/package_esp8266com_index.json

Click OK để chấp nhận

Tiếp theo vào Tool→Board→Boards Manager Đợi một lát để chương trình tìm kiếm Ta kéo xuống và click vào ESP8266 by

ESP8266 Community, click vào Install Chờ phần mềm tự động download và cài đặt

Hướng dẫn nạp chương trình cho ESP8266 12E:

Kết nối mudule ESP8266 -12E vào máy tính Vào Tool→Board→NodeMCU 1.0, chọn cổng COM tương ứng với module tương ứng

Chọn chế độ nạp Arduino as ISP và chọn cổng COM cho đúng nhé.Vậy là ta đã có môi trường lập trình cho esp8266 rất thân thiện

Sau khi kết nối ESP8266 với máy tính, các bạn có thể test code ESP8266 ở đây:

Code ở dưới test led trên board esp8266 12E ở chân 13 (D7 ) sáng tắt trong vòng 1 giây void setup() { pinMode(LED_BUILTIN, OUTPUT);

} void loop() { digitalWrite(LED_BUILTIN, HIGH); // bật led sáng 1 giây delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // tắt led 1 giây delay(1000); // wait for a second

Từ ví dụ đơn giản ở trên ta có thể bắt tay vào học lập trình cho ESP để làm những dự dán IOT có ứng dụng cao.

Bài học mẫu ứng dụng lập trình esp8266

Lập trình điều khiển ESP8266 12E bằng Arduino IDE

ESP8266 là một lựa chọn tuyệt vời cho các dự án Wifi nhờ vào giá thành rẻ và tính dễ sử dụng Đặc biệt, phiên bản ESP8266 V12E có thể lập trình bằng Arduino IDE Trong bài viết này, mình sẽ hướng dẫn cách cài đặt Arduino IDE để nạp code cho ESP8266, giúp các bạn khởi đầu những dự án thú vị.

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)

Cài đặt phần mềm arduino IDE và thư viện cho esp8266

Sau khi tải phần mềm Arduino IDE, bạn cần cài đặt và mở chương trình Để cài đặt thư viện và nạp code cho IDE, hãy thực hiện các bước sau đây.

Vào File→ Preferences, vào textbox Additional Board Manager URLs thêm đường link sau vào http://arduino.esp8266.com/stable/package_esp8266com_index.json

Click OK để chấp nhận

Tiếp theo vào Tool→Board→Boards Manager Đợi một lát để chương trình tìm kiếm Ta kéo xuống và click vào ESP8266 by

ESP8266 Community, click vào Install Chờ phần mềm tự động download và cài đặt

Hướng dẫn nạp chương trình cho ESP8266 12E:

Kết nối mudule ESP8266 -12E vào máy tính Vào Tool→Board→NodeMCU 1.0, chọn cổng COM tương ứng với module tương ứng

Chọn chế độ nạp Arduino as ISP và chọn cổng COM cho đúng nhé.Vậy là ta đã có môi trường lập trình cho esp8266 rất thân thiện

Sau khi kết nối ESP8266 với máy tính, các bạn có thể test code ESP8266 ở đây:

Code ở dưới test led trên board esp8266 12E ở chân 13 (D7 ) sáng tắt trong vòng 1 giây void setup() { pinMode(LED_BUILTIN, OUTPUT);

In the loop function, the built-in LED is activated by setting the voltage to HIGH, followed by a one-second delay Afterward, the LED is turned off by lowering the voltage to LOW, and another one-second delay is implemented This cycle of turning the LED on and off continues, creating a blinking effect.

Bật tắt led theo ý muốn bằng esp8266 12E

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)

 Chân ( + ) của led được nối chân D3 ( tương ứng với chân số GPIO0 )

 Chân ( ) của led được nối chân GND của ESP

// initialize digital pin 0 ( D3 ) as an output pinMode(0, OUTPUT);

The loop function continuously executes, turning the LED on by setting the voltage to HIGH for one second, followed by turning it off by setting the voltage to LOW for another second.

Bật tắt led bằng nút nhấn ( không lưu trạng thái)

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)

 Chân ( + ) của led được nối chân D0 ( tương ứng với chân số GPIO16 )

 Chân ( ) của led được nối chân GND của ESP

 Chân D3 ( chân GPIO0 ) được nối với nút nhấn như hình dưới

Lập trình: int ledPin = 16; // LED connected to digital pin 16 ( D0) int btnPin = 0; // BUTTON connected to digital pin 0 ( D3)

//int ledState = LOW; void setup()

{ pinMode(ledPin, OUTPUT); // sets the digital pin as output pinMode(btnPin, INPUT); // sets the digital pin as input digitalWrite(btnPin, HIGH);

Bật tắt led bằng nút nhấn (lưu trạng thái)

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)

 Chân ( + ) của led được nối chân D0 ( tương ứng với chân số GPIO16 )

 Chân ( ) của led được nối chân GND của ESP

 Chân D3 ( chân GPIO0 ) được nối với nút nhấn như hình dưới

Khai báo biến int nutnhan = 0 để định nghĩa chân số GIPO0 là nút nhấn (D3), và khai báo biến int led = 16, t = 0 cho đèn LED tại GIPO16 (tương ứng D0) Biến int status1 được sử dụng để lưu trữ các trạng thái của nút nhấn.

// viết hàm chống dội boolean chong_doi()// int char float ngoại trừ void

{ int sta =!digitalRead(nutnhan); // đọc trạng thái nút nhấn return sta;// khi co nhan nut la true

Serial.begin(9600); pinMode(nutnhan,INPUT); digitalWrite(nutnhan, HIGH); pinMode(led,OUTPUT);

//Serial.println(buttonState); status1 = chong_doi(); if(status1==true)

} while(status1==true){status1=chong_doi();}

Điều khiển relay bằng Esp8266 V_12E

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)

 1 relay 5vd (1 hoặc 2) kênh mức cao

// the setup function runs once when you press reset or power the board void setup() {

// initialize digital pin 13 as an output pinMode(13, OUTPUT);// chân điều khiển relay là chân GIPO13 ( D7)

The loop function continuously executes, turning the relay on by setting digital pin 13 to HIGH for 5 seconds, then turning it off by setting the pin to LOW for 2 seconds.

Lưu ý: khi ra làm mô hình thực tế nên có nguồn cấp riêng cho module relay.

Hiển thị lên màn hình LCD bằng ESP8266 12E

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)

LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x20 for a 16 chars and 2 line display void setup()

{ lcd.init(); // initialize the lcd

// Print a message to the LCD lcd.backlight(); lcd.print("Hello, world!");

Đọc giá trị cảm biến nhiệt độ LM35 và gửi lên thingspeak

Cảm biến nhiệt độ LM35 là một cảm biến tương tự phổ biến, thường được sử dụng trong các ứng dụng đo nhiệt độ thời gian thực, mặc dù vẫn có sai số lớn Với kích thước nhỏ gọn và giá thành phải chăng, LM35 mang lại nhiều lợi ích cho người sử dụng Đặc biệt, nhờ vào tính năng là cảm biến tương tự, giá trị đo được có thể dễ dàng truy cập thông qua hàm analogRead().

Nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra của LM35

→ Nhiệt độ thay đổi tuyến tính: 10mV/°C Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng 2°C tới 150°C công suất tiêu thụ là 60uA

Cảm biến LM35 hoạt động bằng cách cho ra một giá trị hiệu điện thế nhất định tại chân Vout (chân giữa) ứng với mỗi mức nhiệt độ

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)

 1 cảm biến nhiệt độ LM35

 Đăng kí 1 tài thoản miễn phí trên thingspeak

Cài đặt trên thingspeak: sau khi đăng kí một tài khoản miễn phí ta được giao diện như sau và ta chọn New

Sau đó ta thực hiện các thao tác sau:

Và ta được giao diện như hình sau:

Và mã Writekey ta lấy từ đây:

To connect to the Thingspeak API, set the `apiWritekey` to "VXMLHG2R6DDPUCNT", and configure your Wi-Fi credentials by specifying the `ssid` as "coffee" and the `password` as "coffee" The server address should be set to "api.thingspeak.com" Additionally, calculate the `resolution` using the formula 3.3/1023, where 3.3 represents the supply voltage and 1023 is the maximum analog read value.

WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.print("NodeMcu connected to wifi ");

A0 OUT void loop() { float temp = (analogRead(A0) * resolution) * 100; if (client.connect(server,80))

To send data to ThingSpeak, concatenate the API write key with the temperature value, formatted as a string Begin the HTTP POST request by specifying the endpoint and headers, including the host, connection type, API key, content type, and content length The two carriage returns signal the end of the header fields and the start of the data, which includes the formatted string containing the temperature information.

Serial.println("uploaded to Thingspeak server ");

Serial.println("Waiting to upload next reading ");

// thingspeak needs minimum 15 sec delay between updates delay(15000);

Sau khi upload code ta mở cổng serial monitor và thingspeak: và được kết quả như sau

Điều khiển thiết bị điện bằng webserver

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)

#include const char* ssid = "Truong Phi"; const char* password = "01695304802";

Serial.begin(115200); delay(10); pinMode(5, OUTPUT); pinMode(4, OUTPUT); pinMode(0, OUTPUT); pinMode(16, OUTPUT); digitalWrite(5, LOW); digitalWrite(4, LOW); digitalWrite(0, LOW); digitalWrite(16, LOW);

WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500);

// Start the server server.begin();

Serial.print("Use this URL to connect: ");

// Check if a client has connected

WiFiClient client = server.available(); if (!client) { return;

// Wait until the client sends some data

Serial.println("new client"); while(!client.available()){ delay(1);

// Read the first line of the request

Serial.println(request); client.flush();

// Match the request if (request.indexOf("/light1on") > 0) { digitalWrite(5, HIGH);

} if (request.indexOf("/light1off") >0) { digitalWrite(5, LOW);

} if (request.indexOf("/light2on") > 0) { digitalWrite(4, HIGH);

} if (request.indexOf("/light2off") >0) { digitalWrite(4, LOW);

} if (request.indexOf("/light3on") >0) { digitalWrite(0, HIGH);

} if (request.indexOf("/light3off") > 0) { digitalWrite(0, LOW);

} if (request.indexOf("/light4on") > 0) { digitalWrite(16, HIGH);

} if (request.indexOf("/light4off") > 0) { digitalWrite(16, LOW);

// Set ledPin according to the request

To control electrical devices using the ESP8266 12E, the server sends an HTTP response with a status of 200 OK and specifies the content type as HTML The HTML document begins with a DOCTYPE declaration, followed by the opening HTML and head tags, which include meta tags for mobile web app capabilities The body of the document is set with a background color of #f7e6ec, and it features horizontal rules along with a centered heading that introduces the device control functionality.

This article provides a user-friendly interface for controlling multiple devices, specifically four lights Each device has dedicated buttons for turning it on or off, allowing for easy management Users can simply click on the "Turn On" or "Turn Off" buttons for Device 1, Device 2, Device 3, and Device 4 The layout is organized and visually appealing, with each device's controls centered on the page for quick access This setup enhances the user experience by facilitating seamless operation of smart lighting systems.

{ client.print("Light 1 is ON");

{ client.print("Light 1 is OFF");

} client.println(""); if (digitalRead(4))

{ client.print("Light 2 is ON");

{ client.print("Light 2 is OFF");

} client.println(""); client.println(""); if (digitalRead(0))

{ client.print("Light 3 is ON");

{ client.print("Light 3 is OFF");

{ client.print("Light 4 is ON");

{ client.print("Light 4 is OFF");

} client.println(""); client.println(""); client.println(""); client.println(""); delay(1);

Sau khi upload chương trình thành công ta mở cổng serial monitor lên:

Từ hình trên ta được địa chỉ ip để truy cập webserver để điều khiển thiết bị điện là :

192.168.100.11 địa chỉ sẽ khác đi tùy vào router wifi nữa nhé

Ta nhập địa chỉ ip vào trình duyệt và cho ra giao diện giống hình dưới

Hình điều khiển thực tế

Điều khiển thiết bị điện bằng wifi và app MIT invertor

Phần mền cần chuẩn bị

 App inverter (được đính kèm trong file code)

Phần cứng cần chuẩn bị:

 1 Điện thoại sử dụng hệ điều hành android

 4 Led ( các bạn có thể thay thế bằng relay để đóng ngắt thiết bị điện)

#include const char* ssid = "Truong Phi"; //Identifier is the name of your WIFI const char* password = "xxxxxxxxx"; // Your Wifi password int R1 int R2 int R3 int R4

WiFiServer server(80); //port is 80 void setup() {

Serial.begin(115200); delay(10); pinMode(R1, OUTPUT); pinMode(R2, OUTPUT); pinMode(R3, OUTPUT); pinMode(R4, OUTPUT); digitalWrite(R1,HIGH); digitalWrite(R2,HIGH); digitalWrite(R3,HIGH); digitalWrite(R4,HIGH);

WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500);

// Start the server server.begin();

Serial.print("Use this URL to connect: ");

Serial.print(WiFi.localIP()); //Gets the WiFi shield's IP address and Print the IP address of serial monitor

WiFiClient client = server.available(); if (!client) { return;

Serial.println("new client"); while(!client.available()){ delay(1);

The code snippet processes an HTTP request, checking if it contains the string "/Relay1On." If found, it activates Relay 1 by setting its corresponding pin low, responds with a "200 OK" status, and sends an HTML message indicating that "Relay 1 is ON" before stopping the client connection and introducing a brief delay.

The code snippet checks if the request contains "/Relay1Off" and, if true, it sets Relay 1 to OFF by writing a HIGH signal to R1 It then sends an HTTP response with a status of 200 OK, indicating successful processing, and includes an HTML message stating "Relay 1 is OFF" before stopping the client connection and introducing a brief delay.

To control Relay 2 via HTTP, the code checks if the request contains "/Relay2On" If it does, it sets Relay 2 to LOW, sends a 200 OK response, and displays a simple HTML message indicating that Relay 2 is ON After sending the response, the client connection is stopped, and a brief delay is implemented.

The code snippet handles an HTTP request to turn off Relay 2, indicated by the endpoint "/Relay2Off" When this request is received, the relay is switched off by setting the digital pin R2 to HIGH The server then responds with a status of "200 OK" and sends a simple HTML message stating "Relay 2 is OFF" before closing the connection.

When the request contains "/Relay3On", the system activates Relay 3 by setting it to LOW It then responds with an HTTP 200 OK status, indicating a successful request, and sends an HTML message confirming that "Relay 3 is ON" before closing the client connection and pausing briefly.

The code snippet checks if the request contains "/Relay3Off" and, if true, sets Relay 3 to OFF by writing a HIGH signal It then responds to the client with an HTTP 200 OK status and sends a simple HTML message indicating that "Relay 3 is OFF" before stopping the client connection and introducing a brief delay.

The code snippet activates Relay 4 when the request includes "/Relay4On", sending an HTTP response with a status of 200 OK and a content type of text/html It generates a simple HTML page indicating that "Relay 4 is ON" before closing the client connection and introducing a brief delay.

The code snippet handles an HTTP request to turn off Relay 4 When the request contains "/Relay4Off", it sets Relay 4 to a HIGH state, indicating it's off, and responds with a 200 OK status The response includes HTML content that confirms Relay 4 is OFF before closing the client connection and introducing a brief delay.

Cài đặt app cho điện thoại ( Andriod):

Viết app mit inverter (có file kèm theo), các bạn nên đăng kí một tài khoản trên web app mit invetor

Ta mở màn hình serial monitor nên và ta có được kết quả giống như dưới sau mỗi lần ta bật tắt

Điều khiển thiết bị điện bằng Nodemcu( esp8266 12E) và app Blynk

Phần mền cần chuẩn bị

 App Blynk các bạn tải trên App Store hoặc CH play đều được

Phần cứng cần chuẩn bị:

 1 Điện thoại sử dụng hệ điều hành android hoặc ISO

 1 Led ( các bạn có thể thay thế bằng relay để đóng ngắt thiết bị điện)

 Chân ( + ) của led được nối chân D3 ( tương ứng với chân số GPIO0 )

 Chân ( ) của led được nối chân GND của ESP

Trước hết chúng ta phải tải về cài thư viện Blynk cho Arduino IDE, thư viện được kèm theo trong file code

Tiếp đến sau khi đã add thư viện blynk cho IDE ta mở code mẫu có sẵn trong thư viện như hình sau:

Và ta được code như sau:

To connect your ESP8266 to Blynk, begin by including the necessary library with `#include ` Next, define your authentication token as `char auth[] = "YourAuthToken";`, which you will receive via email after registering your project on Blynk Additionally, specify your Wi-Fi credentials with `char ssid[] = "YourNetworkName";` for the network name and `char pass[] = "YourPassword";` for the password Finally, implement the setup function to initialize your connection.

Blynk.begin(auth, ssid, pass);

Các bước thực hiện như sau: a) Tải app Blynk b) Đăng kí tài khoản trên blynk khi đăng nhập

Sau khi cài đặt ứng dụng và đăng ký tài khoản email, Blynk sẽ thông báo bạn đã đăng ký thành công Tiếp theo, bạn tiến hành tạo một dự án để bật tắt LED.

Ta thực hiện theo thứ tự như hình dưới:

Hình số 2 khi ta chọn OK thì blynk sẽ gửi về email đăng kí 1 mã token và ta lấy mã đó cho vào code IDE:

Tới hình số 6 là ta hoàn thành việc lập app trên Blynk d) Chỉnh sửa code:

#include char auth[] = "8b77ceab91c5406e99624623d2af0e3c"; char ssid[] = "Truong Phi"; char pass[] = "xxxxxxxx"; void setup()

Blynk.begin(auth, ssid, pass);

Hiển thị màn hình OLED với Nodemcu( esp8266 12E)

Phần mền cần chuẩn bị

 Thư viện OLED : https://github.com/ThingPulse/esp8266-oled- ssd1306

Phần cứng cần chuẩn bị:

Trước hết chúng ta phải tải về cài thư viện OLED cho Arduino IDE, thư viện các bạn tải ở link trên nhé

SSD1306 display(0x3c, 4, 5); int thoi_gian = 0; void setup()

Serial.begin(115200); display.init(); display.setFont(ArialMT_Plain_10); display.drawString(0, 0, "Hello world"); display.display(); delay(1000); display.clear();

{ int gio, phut, giay; delay(1000); thoi_gian ++; gio = thoi_gian/3600; phut = (thoi_gian%3600)/60; giay = thoi_gian % 60; display.clear(); display.drawString(0, 0, String(gio) + ":" + String(phut) + ":" + String(giay)); display.display();

Gửi thông báo về điện thoại khi có trộm bằng cảm biến chuyển động sử dụng

động sử dụng board NodeMCU và app BLYNK

 Gửi thông báo về điện thoại khi có trộm vào nhà

Phần mền cần chuẩn bị

 Cài đặt phần mềm arduino IDE

 Cài đặt app blynk vào điện thoại

Phần cứng cần chuẩn bị:

 1 module cảm biến chuyển động

Code chương trình: https://drive.google.com/open?idsZXBW4QHBffT-LyULQgI1fYuXiUVoIo

To set up a Blynk project, first define the BlynkTimer and authentication token, which is sent to your email upon project creation Next, configure your Wi-Fi credentials by specifying the SSID and password for your home network Initialize a status variable and set the LED pin to 5, followed by implementing a notification function for alerts.

Blynk.begin(auth, ssid, pass); pinMode(12,INPUT_PULLUP);//D6 pinMode(5,INPUT_PULLUP); timer.setInterval(1000L,canhbao);

Upload code cho Nodemcu ( trước khi upload phải chọn giống như hình dưới)

Cài app blynk cho điện thoại:

Bước 1: Tải app blynk trên CH play hoặc App Store

Bước 2: Mở app lên đăng kí tài khoản miễn phí bằng email sau đó chọn NEW PROJECT

Bước 3: Lập app như hình dưới

Bước 4: Chọn vào nút OK sau đó dùng tay trượt theo dấu mũi tên

Bước 5: Chọn đến mục như hình ở dưới

Bước 6: Chọn vào hình tam giác như hình dưới để chuyển qua chế độ online

Sau khi hoàn thiện app và upload chương trình cho board NodeMCU chúng ta thử test:

Tin nhắn gửi về điện thoại thông qua app blynk như sau:

Điều khiển LED ma trận Max7219 với module WIFI NodeMCU

 Lập trình chạy chữ led ma trận Max7219 sử dụng module Wifi

Phần mền cần chuẩn bị

 Cài đặt phần mềm arduino IDE

Phần cứng cần chuẩn bị:

 1 module led ma trận Max7219 (32x8)

Code chương trình: https://drive.google.com/open?idk3z4h7CQalLODKQOUCFj8AzO_tVpC7J

#include const char* ssid = "Trinh Quang Nam."; // Thay đôi tên wifi const char* password = "bubu123789"; // Thay đổi pass wifi

// TCP server at port 80 will respond to HTTP requests

WiFiServer server(80); const uint8_t LEDMATRIX_CS_PIN = 15;

// Define LED Matrix dimensions (0-n) - eg: 32x8 = 31x7 const int LEDMATRIX_WIDTH = 31; const int LEDMATRIX_HEIGHT = 7; const int LEDMATRIX_SEGMENTS = 4;

LEDMatrixDriver lmd(LEDMATRIX_SEGMENTS, LEDMATRIX_CS_PIN); void displayText ( char * theText)

{ if ( myTime + ANIM_DELAY < millis())

// Draw the text to the current position drawString(theText, len, x, 0);

// In case you wonder why we don't have to call lmd.clear() in every loop: The font has a opaque (black) background

// Toggle display of the new framebuffer lmd.display();

// Advance to next coordinate if( x < len * -8 )

* This function draws a string of the given length to the given position

*/ void drawString(char* text, int len, int x, int y )

{ for( int idx = 0; idx < len; idx ++ )

// stop if char is outside visible area if( x + idx * 8 > LEDMATRIX_WIDTH ) return;

// only draw if char is visible if( 8 + x + idx * 8 > 0 ) drawSprite( font[c], x + idx * 8, y, 8, 8 );

* This draws a sprite to the given position using the width and height supplied (usually

*/ void drawSprite( byte* sprite, int x, int y, int width, int height )

// The mask is used to get the column bit from the sprite row byte mask = B10000000; for( int iy = 0; iy < height; iy++ )

{ for( int ix = 0; ix < width; ix++ )

//Yes my font is backwards so I swap it around

//lmd.setPixel(x + ix, y + iy, (bool)(sprite[iy] & mask )); lmd.setPixel(x + (width - ix), y + iy, (bool)(sprite[iy] & mask ));

// shift the mask by one pixel to the right mask = mask >> 1;

Sau khi nạp code chương trình cho NodeMCU thì trên màn hình led sẽ xuất hiện địa chỉ IP, ví dụ : 192.168.1.70

Khi sở hữu địa chỉ IP, người dùng có thể sử dụng máy tính hoặc điện thoại để truy cập vào địa chỉ đó, từ đó điều khiển dòng chữ hiển thị trên màn hình LED ma trận.

Đọc giá trị nhiệt độ, độ ẩm hiển thị lên màn hình oled 0.96” và blynk sử dụng

blynk sử dụng board NodeMCU

 Đọc và hiển thị giá trị nhiệt độ và độ ẩm hiển thị màn hình oled và blynk

Phần mền cần chuẩn bị

 Cài đặt phần mềm arduino IDE

 Cài đặt app Blynk cho điện thoại

Phần cứng cần chuẩn bị:

Code chương trình: https://drive.google.com/file/d/1oHGKSNTXN-FSvqPlGY8R3EW07s5VwO_H/view?usp=drive_open

// You should get Auth Token in the Blynk App char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

// Set password to "" for open networks char ssid[] = "Trinh Quang Nam."; char pass[] = "bubu123789";

#define DHTPIN 4 // what pin we're connected to

// Initialize the OLED display using Wire library

// Initialising the UI will init the display too display.init(); display.flipScreenVertically(); display.setFont(ArialMT_Plain_16); display.setTextAlignment(TEXT_ALIGN_LEFT); dht.begin(); // initialize dht

Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8080); timer.setInterval(1000L, sendSensor);

} void displayWeather(){ float h = dht.readHumidity();

// Read temperature as Celsius float t = dht.readTemperature();

// Read temperature as Fahrenheit float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)){ display.clear(); // clearing the display display.drawString(5,0, "DHT Failed!"); return;

} display.clear(); display.drawString(30, 0, "Weather"); display.drawString(0, 20, "Humidity: " + String(h) + "%\t"); display.drawString(0, 40, "Temp: " + String(t) + "°C");

//Uncomment to get temperature in farenheit

Blynk.run(); // Running the blynk code displayWeather(); //Calling back the displayWeather function display.display(); timer.run();

{ float h = dht.readHumidity(); //Read the humidity float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit if (isnan(h) || isnan(t)) {

Serial.println("Failed to read from DHT sensor!"); return;

// You can send any value at any time

// Please don't send more that 10 values per second

Bước 1: Tải app blynk trên CH play hoặc App Store

Bước 2: Mở app lên đăng kí tài khoản miễn phí bằng email sau đó chọn NEW PROJECT

Bước 3: Lập app như hình dưới

Bước 4: Chọn vào nút OK mã token sẽ được gửi vào email sau đó dùng tay trượt theo dấu mũi tên

Bước 5: Chọn đến mục như hình ở dưới ( chọn 2 lần )

Bước 6: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giồng hình

Bước 7: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giồng hình

Bước 8: Chọn vào hình tam giác như hình dưới để chuyển qua chế độ online

Thiết kế xe robot 4 bánh điều khiển bằng sóng Wifi ( nodemcu )

 Điều khiển xe robot 4 bánh bằng sóng wifi sử dụng NodeMCU

Phần mền cần chuẩn bị

 Cài đặt phần mềm arduino IDE

 Đăng kí 1 tài khoản miễn phí trên MIT App Inventor 2

Phần cứng cần chuẩn bị:

 Breadboard còn gọi testboard nhỏ

 4 động cơ giảm tốc v1 màu vàng

 1 tấm mica 5mm ( 11cmx17cm)

Bước 1: Dùng keo nến đính đông cơ và bánh xe vào khung mica hoặc gỗ

Hai động cơ cùng 1 phía ta nối dây chung với nhau ( chạy song song ) Như mạch nguyên lý vẽ ở trên

Bước 2: Đính module L298N lên thân xe và kết nối ( GND  GND nguồn dây màu đen), ( +12V  + của nguồn pin dây màu đỏ)

Nối dây động cơ vào chân điều khiển động cơ của mạch L298N như sơ đồ nguyên lý ở trên

Bước 3: Đính board NodeMCU lên thân xe bằng keo nến và cấp nguồn +5V và gnd từ module L298N như sơ đồ nguyên lý ở trên

Bước 4: Upload chương trình cho board NodeMCU ( lưu ý: cách cài đặt board nodeMCU các bạn xem lại trang 323 nhé )

File code: https://drive.google.com/open?id=1RUhXB-QuqAqTa51-fleDk_PUfERC7Yfs

Trước hết các bạn phải add thư viện ESP8266WiFi cho phần mền IDE Thư viện kèm theo code.

#define ENA 14 // Enable/speed motors Right GPIO14(D5)

#define ENB 12 // Enable/speed motors Left GPIO12(D6)

#define IN_1 15 // L298N in1 motors Right GPIO15(D8)

#define IN_2 13 // L298N in2 motors Right GPIO13(D7)

#define IN_3 2 // L298N in3 motors Left GPIO2(D4)

#define IN_4 0 // L298N in4 motors Left GPIO0(D3)

String command; int speedCar = 800; // 400 - 1023 int speed_Coeff = 3; const char* ssid = "WIFI Car";

ESP8266WebServer server(80); void setup() { pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN_1, OUTPUT); pinMode(IN_2, OUTPUT); pinMode(IN_3, OUTPUT); pinMode(IN_4, OUTPUT);

Serial.print("AP IP address: ");

Serial.println(myIP); server.on ( "/", HTTP_handleRoot ); server.onNotFound ( HTTP_handleRoot ); server.begin();

} void goAhead(){ digitalWrite(IN_1, LOW); digitalWrite(IN_2, HIGH); analogWrite(ENA, speedCar); digitalWrite(IN_3, LOW); digitalWrite(IN_4, HIGH); analogWrite(ENB, speedCar);

} void goBack(){ digitalWrite(IN_1, HIGH); digitalWrite(IN_2, LOW); analogWrite(ENA, speedCar); digitalWrite(IN_3, HIGH); digitalWrite(IN_4, LOW); analogWrite(ENB, speedCar);

} void goRight(){ digitalWrite(IN_1, HIGH); digitalWrite(IN_2, LOW); analogWrite(ENA, speedCar); digitalWrite(IN_3, LOW); digitalWrite(IN_4, HIGH); analogWrite(ENB, speedCar);

} void goLeft(){ digitalWrite(IN_1, LOW); digitalWrite(IN_2, HIGH); analogWrite(ENA, speedCar); digitalWrite(IN_3, HIGH); digitalWrite(IN_4, LOW); analogWrite(ENB, speedCar);

} void goAheadRight(){ digitalWrite(IN_1, LOW); digitalWrite(IN_2, HIGH); analogWrite(ENA, speedCar/speed_Coeff); digitalWrite(IN_3, LOW); digitalWrite(IN_4, HIGH); analogWrite(ENB, speedCar);

} void goAheadLeft(){ digitalWrite(IN_1, LOW); digitalWrite(IN_2, HIGH); analogWrite(ENA, speedCar); digitalWrite(IN_3, LOW); digitalWrite(IN_4, HIGH); analogWrite(ENB, speedCar/speed_Coeff);

} void goBackRight(){ digitalWrite(IN_1, HIGH); digitalWrite(IN_2, LOW); analogWrite(ENA, speedCar/speed_Coeff); digitalWrite(IN_3, HIGH); digitalWrite(IN_4, LOW); analogWrite(ENB, speedCar);

} void goBackLeft(){ digitalWrite(IN_1, HIGH); digitalWrite(IN_2, LOW); analogWrite(ENA, speedCar); digitalWrite(IN_3, HIGH); digitalWrite(IN_4, LOW); analogWrite(ENB, speedCar/speed_Coeff);

} void stopRobot(){ digitalWrite(IN_1, LOW); digitalWrite(IN_2, LOW); analogWrite(ENA, speedCar); digitalWrite(IN_3, LOW); digitalWrite(IN_4, LOW); analogWrite(ENB, speedCar);

In the loop function, the server processes client requests and retrieves the command from the "State" argument Depending on the command received, the robot can move in various directions: "F" for forward, "B" for backward, "L" for left, "R" for right, "I" for forward-right, "G" for forward-left, "J" for backward-right, and "H" for backward-left Additionally, the command can adjust the robot's speed with values ranging from "0" to "9," corresponding to speeds between 400 and 1023 The command "S" is used to stop the robot's movement.

} void HTTP_handleRoot(void) { if( server.hasArg("State") ){

Serial.println(server.arg("State"));

} server.send ( 200, "text/html", "" ); delay(1);

Trường hợp máy tính không nhận cổng COM ( PORT ) thì các bạn phải cài driver CP2102 hoặc CH340 tùy vào chip nạp của NodeMCU cho máy tính nhé

Bước 5: Tải app về cài cho điện thoại andriod

Link tải app được lưu trong file code các bạn nhé

Sau khi tải về và cài đặt ta được app như hình dưới

Bước 6: Lắp 3 pin 3.7V vào đế pin và bật công tắc ON/OFF lên.

Ngày đăng: 16/11/2021, 13:13

HÌNH ẢNH LIÊN QUAN

Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 14)
Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 20)
Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 22)
 Chân D3 (chân GPIO 0) được nối với nút nhấn như hình dưới. - EBOOK Tài liệu IOT ESP8266
h ân D3 (chân GPIO 0) được nối với nút nhấn như hình dưới (Trang 23)
Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 25)
Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 26)
Từ hình trên ta được địa chỉ ip để truy cập webserver để điều khiển thiết bị điện là: - EBOOK Tài liệu IOT ESP8266
h ình trên ta được địa chỉ ip để truy cập webserver để điều khiển thiết bị điện là: (Trang 39)
Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 39)
Hình điều khiển thực tế - EBOOK Tài liệu IOT ESP8266
nh điều khiển thực tế (Trang 40)
Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 46)
Hình thực tế: - EBOOK Tài liệu IOT ESP8266
Hình th ực tế: (Trang 47)
Hình số 2 khi ta chọn OK thì blynk sẽ gửi về email đăng kí 1 mã token và ta lấy mã đó cho vào code IDE:  - EBOOK Tài liệu IOT ESP8266
Hình s ố 2 khi ta chọn OK thì blynk sẽ gửi về email đăng kí 1 mã token và ta lấy mã đó cho vào code IDE: (Trang 51)
Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 52)
11. Hiển thị màn hình OLED với Nodemcu( esp8266 12E). - EBOOK Tài liệu IOT ESP8266
11. Hiển thị màn hình OLED với Nodemcu( esp8266 12E) (Trang 53)
Upload code cho Nodemcu( trước khi upload phải chọn giống như hình dưới) - EBOOK Tài liệu IOT ESP8266
pload code cho Nodemcu( trước khi upload phải chọn giống như hình dưới) (Trang 56)
Bước 3: Lập app như hình dưới. - EBOOK Tài liệu IOT ESP8266
c 3: Lập app như hình dưới (Trang 57)
Bước 6: Chọn vào hình tam giác như hình dưới để chuyển qua chế độ online. - EBOOK Tài liệu IOT ESP8266
c 6: Chọn vào hình tam giác như hình dưới để chuyển qua chế độ online (Trang 59)
Bước 6: Chọn vào hình tam giác như hình dưới để chuyển qua chế độ online. - EBOOK Tài liệu IOT ESP8266
c 6: Chọn vào hình tam giác như hình dưới để chuyển qua chế độ online (Trang 59)
Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 64)
14. Đọc giá trị nhiệt độ, độ ẩm hiển thị lên màn hình oled 0.96” và blynk sử dụng board NodeMCU - EBOOK Tài liệu IOT ESP8266
14. Đọc giá trị nhiệt độ, độ ẩm hiển thị lên màn hình oled 0.96” và blynk sử dụng board NodeMCU (Trang 65)
Bước 3: Lập app như hình dưới. - EBOOK Tài liệu IOT ESP8266
c 3: Lập app như hình dưới (Trang 69)
Bước 3: Lập app như hình dưới. - EBOOK Tài liệu IOT ESP8266
c 3: Lập app như hình dưới (Trang 69)
Bước 5: Chọn đến mục như hìn hở dướ i( chọ n2 lần ). - EBOOK Tài liệu IOT ESP8266
c 5: Chọn đến mục như hìn hở dướ i( chọ n2 lần ) (Trang 70)
Bước 6: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giồng hình.hình. - EBOOK Tài liệu IOT ESP8266
c 6: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giồng hình.hình (Trang 70)
Bước 7: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giồng hình. - EBOOK Tài liệu IOT ESP8266
c 7: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giồng hình (Trang 71)
Hình ảnh thực tế: - EBOOK Tài liệu IOT ESP8266
nh ảnh thực tế: (Trang 72)
Lắp mô hình: - EBOOK Tài liệu IOT ESP8266
p mô hình: (Trang 73)
Sau khi tải về và cài đặt ta được app như hình dưới. - EBOOK Tài liệu IOT ESP8266
au khi tải về và cài đặt ta được app như hình dưới (Trang 81)
Bước 5: Tải app về cài cho điện thoại andriod. Link tải app được lưu trong file code các bạn nhé - EBOOK Tài liệu IOT ESP8266
c 5: Tải app về cài cho điện thoại andriod. Link tải app được lưu trong file code các bạn nhé (Trang 81)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN