1. Trang chủ
  2. » Luận Văn - Báo Cáo

DO AN DIEU KHIEN THIET BI DIEN THONG MINH BANG DIEN THOAI QUA INTERNET SU DUNG NODE MCU ESP 8266

60 53 1

Đ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

Định dạng
Số trang 60
Dung lượng 3,31 MB

Cấu trúc

  • CHƯƠNG 1 Mở Đầu (7)
    • 1.1. Đặt vấn đề (7)
    • 1.2. Phương pháp nghiên cứu (8)
    • 1.3. Mục tiêu, nhiệm vụ (8)
  • CHƯƠNG 2: GIỚI THIỆU LÝ THUYẾT (9)
    • 2.1. Khái niệm Internet Of Things ( IOT) là gì? (9)
    • 2.2. Những ứng dụng thực tế trong cuộc sống (10)
      • 2.2.1. Vật dụng mang theo trên người (10)
      • 2.2.2. Ứng dụng trong lĩnh vực vận tải (11)
      • 2.2.3. Ứng dụng trong lĩnh vực sản xuất nông nghiệp (11)
      • 2.2.4. Ứng dụng trong nhà thông minh (12)
    • 2.3. Blynk (13)
      • 2.3.1. Hệ sinh thái Blynk (14)
      • 2.3.2. Tính năng của Blynk (15)
    • 2.4. Nhà thông minh ( Smart home) (15)
      • 2.4.1. Khái niệm (15)
      • 2.4.2. Chức năng (16)
      • 2.4.3 Các hệ sinh thái nhà thông minh trên thế giới (17)
  • CHƯƠNG 3: THIẾT BỊ VÀ GIẢI PHÁP CÔNG NGHỆ (18)
    • 3.1. Kit Node MCU Lua ESP8266 (18)
    • 3.2. Module và Board phát triển của ESP8266 (20)
    • 3.3. Giới thiệu về module ESP 12E (Node MCU V3) (21)
    • 3.4. Sơ đồ chân GPIO và những lưu ý khi sử dụng Node MCU (22)
    • 3.5. Phần mềm IDE (25)
      • 3.5.1. Cấu trúc một chương trình trong phần mềm IDE (25)
      • 3.5.2. Hàm nhập xuất Digital I/O (26)
      • 3.5.3. Hàm nhập xuất Analog I/O (29)
      • 3.5.4. Hàm thời gian (Delay) (30)
    • 3.6. Lập trình ESP 12E bằng Arduino IDE (32)
      • 3.6.1. Gới thiệu (0)
      • 3.6.2. Chuẩn bị phần cứng (32)
      • 3.6.3. Cài đặt phần mềm arduino IDE và thư viện cho ESP8266 (32)
      • 3.6.4. Hướng dẫn nạp chương trình cho ESP8266 12E (35)
  • CHƯƠNG 4: NỘI DUNG THỰC HIỆN VÀ MÔ HÌNH (37)
    • 4.1. Giới thiệu module rơ le (38)
    • 4.2. Thông số kỹ thuật (38)
    • 4.3. Phần cứng chuẩn bị (38)
    • 4.4. Lắp mạch nguyên lý (39)
    • 4.5. Code chương trình (39)
    • 4.6. Cấu hình Blynk (48)
    • 4.7. Hình ảnh thực tế (49)
  • CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI (50)
    • 5.1. Kết luận (50)
      • 5.1.1. Những mặt đã làm được (50)
      • 5.1.2. Những hạn chế tồn đọng (50)
    • 5.2. Hướng phát triển của đề tài (50)
    • 5.3. Tài liệu mở rộng (51)
      • 5.3.1. Tương lai smart home (51)
      • 5.3.2. Xu hướng ngành Smart home – Tương lai các ngôi nhà Việt (54)
  • TÀI LIỆU THAM KHẢO (58)
  • PHỤ LỤC (59)

Nội dung

GIỚI THIỆU LÝ THUYẾT

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

Internet of Things (IoT) là mạng lưới kết nối mọi vật, nơi 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 phát triển từ sự kết hợp của công nghệ không dây, vi điều khiển, cơ điện tử và Internet, tạo thành một tập hợp các thiết bị có khả năng kết nối lẫn nhau, với Internet và thế giới bên ngoài để thực hiện các nhiệm vụ cụ thể.

IoT giúp mọi vật giao tiếp dễ dàng hơn, mang lại khả năng phòng ngừa và cảnh báo thông minh ở bất kỳ đâu.

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 sẽ khám phá.

2.2.1 Vật dụng mang theo trên người

Một số thiết bị công nghệ nổi bật hiện nay bao gồm Dashbon Mask, một chiếc tai nghe thông minh cho phép người dùng thưởng thức âm nhạc với âm thanh trung thực cao và xem phim HD qua máy chiếu ảo Bên cạnh đó, AMPL SmartBag là một chiếc ba lô tích hợp pin dự phòng, giúp sạc điện cho nhiều thiết bị di động, bao gồm cả máy tính.

2.2.2 Ứng dụng trong lĩnh vực vận tải Ứng dụng điển hình nhất trong lĩnh vực này là gắn chíp lấy tọa độ GPS lên xe chở hàng, nhằm kiểm soát lộ trình, tốc độ, thời gian đi đến của các xe chở hàng Ứng dụng này giúp quản lý tốt khâu vận chuyển, có những xử lý kịp thời khi xe đi không đúng lộ trình hoạt bị hỏng hóc trên những lộ trình mà ở đó mạng di động không phủ sóng tới được, kiểm soát được lượng nhiên liệu tiêu hao ứng với lộ trình đã được vạch trước Theo dõi lộ trình đi của xe chở hàng

2.2.3 Ứng dụng trong lĩnh vực sản xuất nông nghiệp

Quá trình sinh trưởng và phát triển của cây trồng bao gồm nhiều giai đoạn từ hạt nảy mầm đến khi ra hoa kết trái, mỗi giai đoạn yêu cầu sự chăm sóc khác nhau về dinh dưỡng và tưới tiêu Điều này đòi hỏi sự bền bỉ của người nông dân, nhưng nhờ vào ứng dụng khoa học kỹ thuật và cảm biến đo nhiệt độ, độ ẩm, độ pH của đất, hệ thống tưới tiêu tự động sẽ cung cấp chế độ chăm sóc phù hợp cho cây trồng Người nông dân chỉ cần theo dõi sự vận hành của hệ thống qua màn hình máy tính Ngoài ra, mỗi loại nông sản sẽ được gắn mã ID, giúp tự động gửi thông báo khi hàng hóa trong tủ lạnh sắp hết, và nông sản sẽ được giao tận nhà chỉ sau một thời gian ngắn.

2.2.4 Ứng dụng trong nhà thông minh:

Trong bối cảnh thế giới chuyển mình vào kỷ nguyên Internet of Things, nhà thông minh đã trở thành xu hướng công nghệ tất yếu và tiêu chuẩn của nhà ở hiện đại Tại các căn hộ thông minh, mọi thiết bị như rèm cửa, điều hòa, dàn âm thanh, hệ thống ánh sáng, an ninh và thiết bị nhà tắm được kết nối và hoạt động tự động theo kịch bản lập trình sẵn, đáp ứng nhu cầu sử dụng của khách hàng một cách tối ưu.

Vào buổi sáng, hệ thống tự động tắt đèn và điều chỉnh rèm cửa để tối ưu ánh sáng tự nhiên, giảm thiểu tiếng ồn từ bên ngoài Đến tối, đèn sáng lên, rèm cửa được kéo lên, cho phép người dùng ngắm nhìn thành phố lung linh ánh đèn, trong khi âm nhạc nhẹ nhàng vang lên những giai điệu yêu thích của gia đình.

Hình 2.12: Ví dụ về nhà thông minh

Khi gia đình vắng nhà, chế độ "Ra khỏi nhà" sẽ tự động kích hoạt, tắt toàn bộ thiết bị điện tử và phục hồi trạng thái ban đầu khi chủ nhân trở về Nước nóng cũng được chuẩn bị sẵn sàng trước khi gia chủ đến Hệ thống an ninh hoạt động liên tục 24/24, thông báo cho chủ nhà về mọi thay đổi đáng ngờ trong ngôi nhà, bất kể họ đang ở đâu.

Blynk

Đây là một nền tảng IoT được ưa thích bởi hơn 500.000 kỹ sư trong lĩnh vực IoT trên toàn thể giới

Có ba thành phần chính trong nền tảng Blynk:

Blynk App - cho phép tạo giao diện cho sản phẩm của bạn bằng cách kéo thả các widget khác nhau mà nhà cung cấp đã thiết kế sẵn

Blynk Server đóng vai trò quan trọng trong việc xử lý dữ liệu trung tâm giữa điện thoại, máy tính bảng và phần cứng Người dùng có thể lựa chọn sử dụng Blynk Cloud hoặc tự thiết lập máy chủ Blynk riêng Với mã nguồn mở, Blynk cho phép dễ dàng tích hợp vào các thiết bị khác nhau, bao gồm cả việc sử dụng Raspberry Pi làm máy chủ cho hệ thống.

Thư viện Blynk hỗ trợ hầu hết các nền tảng phần cứng phổ biến, cho phép giao tiếp hiệu quả với máy chủ và xử lý tất cả các lệnh gửi và nhận.

Hình 2.13: Sơ đồ hệ sinh thái Blynk

Nguyên lý hoạt động của Blynk là khi người dùng nhấn nút trong ứng dụng, yêu cầu sẽ được gửi đến server của Blynk, sau đó server kết nối với phần cứng thông qua thư viện Thiết bị phần cứng cũng sẽ truyền dữ liệu trở lại server Nhờ vậy, người dùng có thể xây dựng hệ sinh thái nhà thông minh dựa trên nền tảng Blynk.

- Cung cấp API & giao diện người dùng tương tự cho tất cả các thiết bị và phần cứng được hỗ trợ

- Kết nối với server bằng cách sử dụng:Wifi, Bluetooth và BLE, Ethernet, USB (Serial), GSM, …

- Các tiện ích trên giao diện được nhà cung cấp dễ sử dụng

- Thao tác kéo thả trực tiếp giao diện mà không cần viết mã

- Dễ dàng tích hợp và thêm chức năng mới bằng cách sử dụng các cổng kết nối ảo được tích hợp trên blynk app

- Theo dõi lịch sử dữ liệu

- Thông tin liên lạc từ thiết bị đến thiết bị bằng Widget

Nhà thông minh ( Smart home)

Nhà thông minh là loại hình nhà được trang bị các thiết bị điện tử có khả năng điều khiển tự động hoặc bán tự động, giúp thay thế con người trong việc quản lý và điều khiển Hệ thống này tương tác với người dùng thông qua bảng điều khiển điện tử, ứng dụng di động, máy tính bảng hoặc giao diện web, mang lại sự tiện lợi và hiệu quả trong việc sử dụng.

Trong một căn nhà thông minh, tất cả các thiết bị từ phòng ngủ, phòng khách đến toilet đều được trang bị bộ điều khiển điện tử kết nối Internet và điện thoại di động Điều này cho phép người dùng điều khiển thiết bị từ xa hoặc lập trình hoạt động theo lịch trình Hơn nữa, các đồ gia dụng có khả năng hiểu và tương tác với nhau, tạo nên một hệ thống thông minh và tiện lợi.

- Điều khiển chiếu sáng (on/off, dimmer, scence, timer, logic, )

- Điều khiển mành, rèm, cửa cổng

- Hệ thống an ninh, báo động, báo cháy

- Điều khiển điều hòa, máy lạnh

- Hệ thống âm thanh đa vùng

- Hệ thống Bảo vệ nguồn điện

2.4.3 Các hệ sinh thái nhà thông minh trên thế giới:

Với sự gia tăng nhu cầu về nhà thông minh toàn cầu, các công ty công nghệ lớn đã phát triển các hệ sinh thái SmartHome riêng biệt Những hệ sinh thái này thường bao gồm trợ lý ảo tích hợp AI, thiết bị điện thông minh kết nối IoT và ứng dụng hỗ trợ trên điện thoại thông minh Một số tên tuổi tiêu biểu trong lĩnh vực này bao gồm Amazon, Google, Samsung, Xiaomi và GeekLink.

THIẾT BỊ VÀ GIẢI PHÁP CÔNG NGHỆ

Kit Node MCU Lua ESP8266

Chip ESP8266, được phát triển bởi Espressif, cung cấp giải pháp giao tiếp Wifi cho thiết bị IoT Điểm nổi bật của ESP8266 là tích hợp các mạch RF như balun, switch ăng-ten, bộ khuếch đại công suất TX và bộ lọc RX ngay trong chip với kích thước chỉ 5x5mm, giúp giảm kích thước board mạch và số lượng linh kiện cần thiết.

Hình 3.1: Module NodeMCU Lua ESP8266

Module phát Wifi ESP8266 NodeMCU Lua là một kit phát triển dựa trên chip Wifi SoC ESP8266, nổi bật với thiết kế thân thiện và dễ sử dụng Nó cho phép lập trình và nạp code trực tiếp thông qua trình biên dịch Arduino, giúp đơn giản hóa quá trình phát triển các ứng dụng trên ESP8266.

Module phát Wifi ESP8266 NodeMCU Lua là một kit phát triển dựa trên chip Wifi SoC ESP8266, nổi bật với thiết kế thân thiện và dễ sử dụng Đặc biệt, nó cho phép lập trình và nạp code trực tiếp thông qua trình biên dịch của Arduino, giúp đơn giản hóa quá trình phát triển và triển khai các ứng dụng trên ESP8266.

Hình 3.2: Sơ đồ nguyên lý kit NodeMCU

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

ESP8266 cần thêm một số linh kiện để hoạt động, trong đó phần khó nhất là anten, yêu cầu sản xuất và kiểm tra bằng thiết bị hiện đại Do đó, nhiều module và board mạch phát triển đã xuất hiện trên thị trường, giúp người dùng dễ dàng hơn trong việc phát triển ứng dụ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 (Node MCU V3)

NodeMCU V1.0 được phát triển dựa trên Chip WiFi ESP8266EX bên trong Module ESP-12E dễ dàng kết nối WiFi với một vài thao tác Board còn tích hợp

IC CP2102 cho phép giao tiếp dễ dàng với máy tính qua Micro USB, hỗ trợ thao tác với board Board có nút nhấn và đèn LED, thuận tiện cho quá trình học tập và nghiên cứu Với kích thước nhỏ gọn và linh hoạt, board dễ dàng kết nối với các thiết bị ngoại vi, giúp tạo ra các dự án và 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

Sơ đồ chân GPIO và những lưu ý khi sử dụng Node MCU

Hình 3.6 Sơ đồ chân MODULE Node MCU

NodeMCU có 13 chân GPIO, mỗi chân có thể thực hiện nhiều chức năng khác nhau Tuy nhiên, một số chân được sử dụng cho các mục đích quan trọng khác, vì vậy cần lưu ý khi sử dụng chúng.

Tất cả các chân GPIO đều được trang bị trở kéo lên nguồn bên trong, ngoại trừ GPIO16, chân này sử dụng trở kéo xuống GND Người dùng có khả năng cấu hình để kích hoạt hoặc không kích hoạt các trở kéo này theo nhu cầu.

GPIO1 và GPIO3 kết nối với TX và RX của bộ UART0, do đó NodeMCU sử dụng bộ UART này để nạp code Vì lý do này, bạn nên tránh sử dụng hai chân GPIO này.

GPIO0, GPIO2 và GPIO15 là các chân quan trọng trên ESP8266, có chức năng cấu hình chế độ cho việc nạp code Trong NodeMCU, các chân này được gọi là strapping pins và được trang bị các trở kéo để thiết lập mức logic mặc định cho chúng.

Khi sử dụng chân GPIO như GPIO2 và GPIO15, cần thiết kế một nguyên lý riêng để tránh xung đột trong quá trình nạp code, với GPIO2 ở mức cao và GPIO15 ở mức thấp.

GPIO9, GPIO10: hai chân này được dùng để giao tiếp với External Flash của ESP8266 vì vậy cũng không thể dùng được (đã test thực nghiệm).

Như vậy, các GPIO còn lại: GPIO 4, 5, 12, 13, 14, 16 có thể sử dụng bình thường.

Phần mềm IDE

Đây là phần mềm dùng để lập trình nạp code vô kit NodeMCU Lua ESP8266

3.5.1 Cấu trúc một chương trình trong phần mềm IDE:

Phần 1 : Khai báo biến Đây là phần khai báo kiểu biến, tên các biến, định nghĩa các chân trên board một số kiểu khai báo biến thông dụng:

Từ "define" có nghĩa là định nghĩa, trong khi hàm #define được sử dụng để gán tên cho một chân hoặc ngõ ra nào đó Ví dụ, bạn có thể sử dụng #define để gán tên cho một đèn LED.

Chú ý: sau #define thì không có dấu “,” (dấy phẩy)

*Khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…

Các chúng ta có thể tham khảo thêm các kiểu biến cũng như công dụng tại arduino.cc

Phần 2 : Thiết lập (void setup())

Phần này dùng để thiết lập cho chương trình, cần nhớ rõ cấu trúc của nó: void setup()

Cấu trúc của chương trình được xác định bằng dấu ngoặc nhọn ở đầu và cuối; nếu thiếu phần này, chương trình sẽ báo lỗi khi kiểm tra Phần này thiết lập tốc độ truyền dữ liệu và xác định kiểu chân là chân ra hoặc chân vào.

Serial.begin(9600); Dùng để truyền dữ liệu từ board Arduino lên máy tính pinMode(biến, kiểu vào hoặc ra); Dùng để xác định kiểu chân là vào hay ra

Ví dụ: pinMode(ChanDO, INPUT);

Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các nhiệm vụ mà chúng ta mong muốn, thường bắt đầu bằng: void loop()

Một số câu lệnh, cấu trúc thường gặp:

Dấu // được sử dụng để giải thích nội dung trên một dòng, giúp phần mềm kiểm tra chương trình bỏ qua phần này mà không thực hiện kiểm tra hay biên dịch.

#define: Dùng để định nghĩa một chân nào đó, hay gán biến tới 1 chân, địa chỉ ghi đọc tín hiệu Ví dụ: #define LED, 13

3.5.2 Hàm nhập xuất Digital I/O: a digitalWrite(): Miêu tả: Viết một giá trị HIGH hoặc một LOW cho một chân số của arduino

Khi chân được cấu hình là OUTPUT bằng lệnh pinMode(), điện áp sẽ được thiết lập tương ứng: 5V (hoặc 3.3V cho chế độ 3.3V) cho trạng thái HIGH và 0V cho trạng thái LOW.

Khi chân được thiết lập là INPUT, hàm digitalWrite() cho phép kích hoạt (HIGH) hoặc vô hiệu hóa (LOW) điện trở kéo lên nội bộ Do đó, cần sử dụng pinMode() để thiết lập chế độ INPUT_PULLUP, giúp kích hoạt các điện trở kéo lên bên trong.

Cú pháp: digitalWrite(pin, value);

Thông số: pin: Số của chân digital mà bạn muốn thiết đặt value: HIGH hoặc LOW

Mã làm cho pin kỹ thuật số 13 OUTPUTvà chuyển đổi nó bằng cách luân phiên giữa HIGHvà LOWở tốc độ một giây

Ví dụ: int led ; void setup()

{ pinMode(led, OUTPUT); // led được nối với chân số 13

{ digitalWrite(led, HIGH); // bật led delay(1000); // dừng chương trình 1 giây digitalWrite(led, LOW); // tắt led delay(1000); // dừng chương trình 1 giây

Miêu tả: Đọc giá trị từ một Chân số đã được chỉ định, hoặc là HIGH hoặc LOW

Thông số: pin: số chân digital bạn muốn đọc

HIGH hoặc là LOW c pinMode():

Cấu hình 1 pin quy định hoạt động như là một đầu vào (INPUT) hoặc đầu ra (OUTPUT)

Cú pháp: pinMode(pin, mode)

Thông số: pin: số chân có chế độ bạn muốn thiết lập mode: INPUT, OUTPUT, Hoặc INPUT_PULLUP

{ pinMode (12, OUTPUT); // chân số 12 là đầu ra

{ digitalWrite (12, HIGH); delay(1000); digitalWrite (12, LOW); delay(1000);

3.5.3 Hàm nhập xuất Analog I/O: a analogRead()

Hàm analogRead() có nhiệm vụ đọc giá trị điện áp từ chân Analog (ADC) trên board Node MCU, với pin A0 tương ứng Board này có 1 pin A0, trong khi các board khác như UNO R3 có 5 pin, Mini và Nano có 8 pin, và Mega có 16 pin Bộ chuyển đổi tương tự 10-bit sang số cho phép lập bản đồ điện áp đầu vào từ 0 đến 5 volts thành các số nguyên từ 0 đến 1023 Điều này tạo ra độ phân giải giữa các lần đọc là 5 volts chia cho 1024 đơn vị, tương đương với 0,0049 volt (4,9 mV) trên mỗi đơn vị Dải đầu vào và độ phân giải có thể được thay đổi bằng các phương pháp khác nhau.

Hàm analogRead() cần 100 micro giây để thực hiện Khi người ta nói "đọc tín hiệu analog", bạn có thể hiểu đó chính là việc đọc giá trị điện áp

Cú pháp: analogRead (pin) ; b analogWrite()

Hàm analogWrite() trên mạch Arduino cho phép xuất tín hiệu analog từ một chân, thường được sử dụng để điều chỉnh độ sáng của đèn LED hoặc tốc độ của động cơ Tín hiệu PWM có tần số khoảng 490 Hz trên hầu hết các chân, trong khi trên board Node MCU và các board tương tự, tần số PWM đạt khoảng 980 Hz.

Trên mạch Arduino, bạn không cần sử dụng hàm pinMode() để thiết lập chân phát xung PWM ở chế độ OUTPUT Để phát xung PWM, bạn chỉ cần sử dụng cú pháp: analogWrite([chân phát xung PWM], [giá trị xung PWM]); trong đó giá trị xung PWM nằm trong khoảng từ 0 đến 255.

0 đến 255, tương ứng với mức duty cycle từ 0% đến 100% Trả về

Ví dụ: Đoạn code dưới có chức năng làm sáng dần một đèn LED được kết nối vào chân số 2 trên mạch Arduino int led = 2; void setup() {}

Tạm dừng chương trình cho khoảng thời gian (tính bằng mili giây) được chỉ định là tham số (Có 1000 mili giây = 1 giây.)

Thông số ms: số mili giây để tạm dừng ( unsigned long)

Trả về: Không có ví dụ: int ledPin = 13; // LED pin 13 void setup()

{digitalWrite(ledPin, HIGH); delay(1000);digitalWrite(ledPin, LOW); delay(1000);

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

3.6.1 Giới thiệu Để bắt đầu với những dự án Wifi các bạn cần ESP8266 với giá thành rẻ, và dễ dàng sử dụng Đặc biệt ESP8266 12E có thể được lập trình bằng Arduino IDE Trước khi bắt đầu những chuỗi dự án với ESP8266, ở bài viết này, mình sẽ chia sẻ cách cài đặt Arduino

IDE để nạp code cho ESP8266

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

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

Sau khi tải và cài đặt phần mềm Arduino IDE, bạn cần mở chương trình và cài đặt driver để phần mềm nhận diện module File driver đã có sẵn trong file cài đặt Để cài đặt thư viện và nạp code cho IDE, bạn thực hiện theo các bước hướng dẫn.

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

3.6.4 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, chúng ta sẽ thử nghiệm mã lập trình cho ESP8266 Mã này sẽ kiểm tra đèn LED trên board ESP8266 12E tại chân 13 (D7), làm cho đèn sáng và tắt trong vòng 1 giây Cấu trúc mã bắt đầu bằng việc thiết lập chế độ cho chân LED_BUILTIN là OUTPUT.

} void loop() { digitalWrite(LED_BUILTIN, HIGH); // bật led sáng 1 giây delay(1000); // wait for asecond 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 lập trình cho NODE MCU để làm những dự dán IOT có ứng dụng cao.

NỘI DUNG THỰC HIỆN VÀ MÔ HÌNH

Giới thiệu module rơ le

Rơ le 5Vdc 4, 8 kênh kích mức cao, thấp

Module Relay với opto cách ly nhỏ gọn, tích hợp opto và transistor cách ly, đảm bảo an toàn cho board mạch chính Mạch này được sử dụng để điều khiển nguồn điện AC (như quạt, đèn) hoặc DC Relay 4 kênh (4 relay) thuộc loại kích mức cao, với các tiếp điểm đóng ngắt bao gồm 3 tiếp điểm: NC (thường đóng), NO (thường mở) và COM (chân chung), hoàn toàn cách ly với board mạch chính Trong trạng thái bình thường, NC nối với COM; khi kích hoạt, COM sẽ chuyển sang nối với NO và mất kết nối với NC.

Thông số kỹ thuật

Sử dụng điện áp nuôi DC 5V

Relay mỗi Relay tiêu thụ dòng khoảng 80mA

Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc DC30V ~ 10A

Có đèn báo đóng ngắt trên mỗi Relay.

Phần cứng chuẩn bị

 Module Rơ le 4ch kích mức cao

Code chương trình

//Blynk Home Automation with Physical Button and ON OFF State Feedback

#include // For OTA with ESP8266

In the code, a BlynkTimer instance is created to manage timing functions The state of four relays is initialized to LOW, indicating they are off, while the corresponding push buttons are set to HIGH, showing they are not pressed The function checkPhysicalButton() is designed to monitor the status of these buttons for any user interactions.

#define AUTH "GXIpZOevO3MgUUaYLY6a8EcoUwSSaBKo" // You should get Auth Token in the Blynk App

#define WIFI_SSID "PHI QUANG" //Enter Wifi Name

#define WIFI_PASS "88888888" //Enter wifi Password

#define SERVER // Comment-out if use Blynk hosted cloud service

#define OTA_HOSTNAME "Control smart"

// Request the latest state from the server

// Alternatively, you could override server state using:

// Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);

// Blynk.virtualWrite(VPIN_BUTTON_2, relay2State);

// Blynk.virtualWrite(VPIN_BUTTON_3, relay3State);

// Blynk.virtualWrite(VPIN_BUTTON_4, relay4State);

// When App button is pushed - switch the state

BLYNK_WRITE(VPIN_BUTTON_1) { relay1State = param.asInt(); digitalWrite(RELAY_PIN_1, relay1State);

BLYNK_WRITE(VPIN_BUTTON_2) { relay2State = param.asInt(); digitalWrite(RELAY_PIN_2, relay2State);

BLYNK_WRITE(VPIN_BUTTON_3) { relay3State = param.asInt(); digitalWrite(RELAY_PIN_3, relay3State);

BLYNK_WRITE(VPIN_BUTTON_4) { relay4State = param.asInt(); digitalWrite(RELAY_PIN_4, relay4State);

{ if (digitalRead(PUSH_BUTTON_1) == LOW) {

// pushButton1State is used to avoid sequential toggles if (pushButton1State != LOW) {

// Toggle Relay state relay1State = !relay1State; digitalWrite(RELAY_PIN_1, relay1State);

Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);

} if (digitalRead(PUSH_BUTTON_2) == LOW) {

// pushButton2State is used to avoid sequential toggles if (pushButton2State != LOW) {

// Toggle Relay state relay2State = !relay2State; digitalWrite(RELAY_PIN_2, relay2State);

Blynk.virtualWrite(VPIN_BUTTON_2, relay2State);

} if (digitalRead(PUSH_BUTTON_3) == LOW) {

// pushButton3State is used to avoid sequential toggles if (pushButton3State != LOW) {

// Toggle Relay state relay3State = !relay3State; digitalWrite(RELAY_PIN_3, relay3State);

Blynk.virtualWrite(VPIN_BUTTON_3, relay3State);

} if (digitalRead(PUSH_BUTTON_4) == LOW) {

// pushButton4State is used to avoid sequential toggles if (pushButton4State != LOW) {

// Toggle Relay state relay4State = !relay4State; digitalWrite(RELAY_PIN_4, relay4State);

Blynk.virtualWrite(VPIN_BUTTON_4, relay4State);

Blynk.begin(AUTH, WIFI_SSID, WIFI_PASS);

ArduinoOTA.setHostname(OTA_HOSTNAME); // For OTA - Use your own device identifying name

To set up the Arduino for Over-The-Air (OTA) programming, initiate the process with `ArduinoOTA.begin()` Configure the first relay and push button by setting `RELAY_PIN_1` as an output and `PUSH_BUTTON_1` as an input with a pull-up resistor Then, update the state of `RELAY_PIN_1` using `digitalWrite()` Repeat this process for additional relays and buttons, ensuring that `RELAY_PIN_2`, `RELAY_PIN_3`, and `RELAY_PIN_4` are set as outputs, while `PUSH_BUTTON_2`, `PUSH_BUTTON_3`, and `PUSH_BUTTON_4` are configured as inputs with pull-up resistors, updating their respective states accordingly.

// Setup a function to be called every 100 ms timer.setInterval(200L, checkPhysicalButton);

ArduinoOTA.handle(); // For OTA timer.run();

Cấu hình Blynk

a) Tải app Blynk từ CH PLAY 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 rằng bạn đã đăng ký thành công Tiếp theo, bạn cần tạo một dự án để điều khiển bật tắt đèn LED.

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

Khi chọn OK ở hình số 2, Blynk sẽ gửi mã token về email đăng ký của bạn Bạn cần lấy mã này và chèn vào code trong IDE Đến hình số 6, bạn đã hoàn thành việc lập trình điều khiển trên ứng dụng Blynk Các kênh điều khiển khác cũng được thiết lập tương tự.

Chúng ta có thể điều khiển 8 thiết bị điện trong gia đình bằng cách sử dụng 2 module Node MCU và 1 module Relay 8ch Hệ thống này có khả năng mở rộng để phát triển thêm nhiều kênh điều khiển khác, tùy thuộc vào nhu cầu và mục đích sử dụng của người dùng.

Ngày đăng: 25/08/2021, 15:49

TỪ KHÓA LIÊN QUAN

w