Sử dụng cảm biến thu thập nhiệt độ, độ ẩm, ứng dụng vào điều khiển các thiết bị trong nhà như chiếu sáng, điều hòa ..... Sản phẩm có tính ứng dụng cao trong thực tế giúp cho việc điều kh
Trang 11 LÍ DO CHỌN ĐỀ TÀI
Cùng với sự phát triển của các ngành kỹ thuật điện tử, công nghệ thông tin, ngành kỹ thuật điều khiển, ngành tự động hóa đã và đang đạt được nhiều tiến bộ mới Tự động hóa không những làm giảm nhẹ sức lao động cho con người mà còn góp phần rất lớn trong việc nâng cao năng suất lao động, cải thiện chất lượng sản phẩm chính vì thế tự động hóa ngày càng khẳng định được vị trí cũng như vai trò của mình trong các ngành công nghiệp trên thế giới nói chung và ở Việt Nam nói riêng
Trong những năm gần đây, công nghiệp 4.0 đang phát triển trên toàn thế giới Vạn vật đều có thể trao đổi, kết nối với nhau thông qua mạng internet Do đó nhu cầu điều khiển, giám sát các thiết bị là rất lớn Tại Việt Nam, trong những năm gần đây, nhiều giải pháp tích hợp thông minh đang được sử dụng để quản lý và điều khiển hoạt động trong nhiều lĩnh vực công nghiệp, nông nghiệp và các dịch
vụ khác Đặc biệt là phục vụ nhu cầu trong đời sống hàng ngày, tạo ra môi trường sống an toàn, tiện nghi Vì vậy có nhiều công ty đã đưa ra thị trường các hệ thống điều khiển giám sát cho các tòa nhà Nhưng hầu hết các hệ thống này thường dành cho các tòa nhà hay căn hộ cao cấp, do đó giá thành rất cao, không phù hợp với các căn hộ bình thường Hơn nữa, mỗi tòa nhà, căn hộ có một đặc thù riêng nên ứng dụng cũng rất khác nhau Bên cạnh đó để sinh viên có thể tiếp cận học tập, nghiên cứu các sản phẩm này là rất khó khăn Do đó việc nghiên cứu thiết kế bộ điều khiển các thiết bị trong nhà thông minh nhằm phục vụ việc đào tạo, thực hành cho học sinh là công việc rất thiết thực và cần thiết Chính vì những lý do đó nên chúng
em đã lựa chọn đề tài: “Nghiên cứu, thiết kế bộ điều khiển thiết bị trong nhà
thông minh”.
2 CÂU HỎI NGHIÊN CỨU, VẤN ĐỀ NGHIÊN CỨU, GIẢ THIẾT KHOA HỌC 2.1 Câu hỏi nghiên cứu
1 Công nghệ Internet of Things (IoT) là gì?
2 Làm sao để điều khiển các thiết bị điện trong nhà (đèn chiếu sáng, động cơ cửa, động cơ bơm nước, quạt, điều hòa ) thông qua mạng wifi?
3 Cách ghép nối các thiết bị để tạo thành mô hình điều khiển thiết bị điện trong nhà?
2.2 Vấn đề nghiên cứu
1 Nghiên cứu công nghệ IoT
2 Nghiên cứu phần cứng, phần mềm sử dụng công nghệ IoT Sử dụng cảm biến thu thập nhiệt độ, độ ẩm, ứng dụng vào điều khiển các thiết bị trong nhà như chiếu sáng, điều hòa
Trang 23 Tính ứng dụng của sản phẩm
2.3 Giả thuyết khoa học
- Củng cố lí thuyết và nâng cao khả năng nghiên cứu thực tế của giáo viên và học sinh
- Tạo ra mô hình thực tế để phục vụ thực hành, thí nghiệm…
- Tạo ra sản phẩm mới để có thể chuyển giao công nghệ Sản phẩm có tính ứng dụng cao trong thực tế giúp cho việc điều khiển các thiết bị điện trong nhà được thuận tiện và dễ dàng hơn
3 THIẾT KẾ VÀ PHƯƠNG PHÁP NGHIÊN CỨU
3.1 Phương pháp nghiên cứu
Nghiên cứu lí thuyết
Phương pháp thực nghiệm
3.2 Thiết kế thí nghiệm
Hình 3-1: Sơ đồ khối hệ thống điều khiển
Khối cảm biến: Sử dụng cảm biến nhiệt độ độ ẩm DHT22, để thu thập nhiệt
độ, độ ẩm trong nhà và gửi dữ liệu về cho khối xử lý trung tâm
Khối xử lý trung tâm: Sử dụng module wifi ESP8266 để xử lý dữ liệu từ khối cảm biến gửi về và gửi chúng lên server thông qua internet
Khối hiển thị và cảnh báo: Dữ liệu từ khối xử lý trung tâm được gửi lên server thông qua internet, từ đây có thể sử dụng bất kì một máy tính hay các thiết
bị có khả năng truy cập vào mạng để truy cập vào server, mọi dữ liệu đều được hiển thị ở đó, khi nhiệt độ, độ ẩm đạt ngưỡng cảnh báo server sẽ gửi lệnh điều khiển quạt hoặc điều hòa
Khối nguồn: Sử dụng IC 7805 điều chỉnh điện áp phù hợp để cung cấp nguồn cho khối cảm biến, khối xử lý trung tâm
Khi hệ thống bắt đầu chạy, khối nguồn cấp điện áp 5VDC cho toàn bộ hệ thống Khối cảm biến với module cảm biến DHT22 có chức năng thu thập nhiệt độ
độ ẩm môi trường theo chu kỳ 10s (10s đọc dữ liệu 1 lần) và gửi dữ liệu về cho
Trang 3khối vi xử lý Khối vi xử lý với module ESP8266 sẽ gửi dữ liệu lên server thông qua đường truyền Internet Khối xử lý trung tâm có nhiệm vụ lắng nghe các lệnh điều khiển từ server như bật, tắt các thiết bị, sau đó điều khiển các thiết bị chấp hành thông qua module rơ le
3.2.3 Lựa chọn thiết bị
3.2.3.1 Module NodeMCU ESP8266 CP2102
Module NodeMCU ESP8266 CP2102 là kit phát triển dựa trên nền chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử dụng
và lập trình các ứng dụng trên ESP8266 trở nên rất đơn giản Module này được dùng cho các ứng dụng cần kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt là các ứng dụng liên quan đến IoT Module sử dụng chip nạp và giao tiếp UART mới và ổn định nhất là CP2102 có khả năng tự nhận Driver trên tất cả các
hệ điều hành Window và Linux
Thông số kỹ thuật
- Hỗ trợ Arduino IDE 1 và Arduino ESP8266
- Sử dụng module wifi ESP – 12E
- Kích thước: 49 x 24.5 x 13mm
- IC chính: ESP8266 Wifi SoC
- Phiên bản firmware: Node MCU
- Chip nạp và giao tiếp UART: CP2102
- GPIO tương thích hoàn toàn với firmware - Node MCU
- Cấp nguồn: 5VDC MicroUSB hoặc Vin
- GIPO giao tiếp mức 3.3VDC
- Tích hợp Led báo trạng thái, nút Reset, Flash
- Tương thích hoàn toàn với trình biên dịch Arduino
Sơ đồ chân
Trang 4Hình 3-2: Sơ đồ chân NodeMCU ESP8266
Chúng ta biết rằng ở mỗi chân trên vi điều khiển có thể thực hiện nhiều chức năng khác nhau, NodeMCU có tổng cộng 13 chân GPIO tuy nhiên một số chân được dùng cho những mục đích quan trọng khác vì vậy chúng ta phải lưu ý khi sử dụng như sau:
- Tất cả các GPIO đều có trở kéo lên nguồn bên trong (ngoại trừ GPIO16 có trở kéo xuống GND) Có thể cấu hình kích hoạt hoặc không kích hoạt trở kéo này
- GPIO1 và GPIO3: hai GPIO này được nối với TX và RX của bộ UART0, NodeMCU nạp code thông qua bộ UART này nên tránh sử dụng 2 chân GPIO này
- GPIO0, GPIO2, GPIO15: đây là các chân có nhiệm vụ cấu hình mode cho ESP8266 điều khiển quá trình nạp code nên bên trong NodeMCU (có tên gọi là strapping pins) có các trở kéo để định sẵn mức logic cho chúng như sau: GPIO0: HIGH, GPIO2: HIGH, GPIO15: LOW Vì vậy khi muốn sử dụng các chân này ở vai trò GPIO cần phải thiết kế một nguyên lý riêng để tránh xung đột đến quá trình nạp code
- 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
- 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
3.2.3.2 Cảm biến DHT22
Trang 5DHT22 là cảm biến nhiệt độ, độ ẩm được sử dụng cho khối cảm biến với các thông số kỹ thuật cơ bản sau:
+ Điện áp hoạt động 3.3VDC ÷ 5.5VDC
+ Dải đo độ ẩm 0 - 100%
+ Sai số độ ẩm ±2%
+ Dải đo nhiệt độ -40oC ÷ 80oC
+ Sai số nhiệt dộ ±0.5oC
Hình 3-3: Cảm biết DHT22
Chức năng chân của DHT22
+ Chân 1: VDD chân nối nguồn
+ Chân 2: DATA chân dữ liệu vào ra
+ Chân 3: NC( không dùng)
+ Chân 4: GND chân nối mass (0V)
Để có thể giao tiếp với DHT22 với vi xử lý thực hiện theo 2 bước như sau:
Bước 1: Gửi tín hiệu muốn đo (Start) tới DHT22, sau đó xác nhận lại
- MCU thiết lập chân DATA là output kéo chân DATA xuống 0 trong khoảng thời gian >= 1ms Khi đó DHT22 sẽ hiểu là MCU muốn đo nhiệt độ độ ẩm
- MCU đưa chân DATA lên 1 sau đó thiết lâp lại là chân đầu vào
- Sau khoảng 20-40µs DHT22 sẽ kéo chân DATA xuống thấp Nếu >40µs mà chân DATA chưa được kéo xuống thấp nghĩa là chưa giao tiếp được với DHT22
- Chân DATA sẽ ở mức thấp 80µs sau đó được DHT22 kéo lên múc cao trong 80µs Bằng việc giám sát chân DATA, MCU có thể biết được có giao tiếp được với DHT22 hay không Nếu tín hiệu đo được lên cao khi đó hoàn thiện quá trình giao tiếp của MCU với DHT22
Trang 6Hình 3-4: Gửi tín hiệu start
Bước 2: Đọc giá trị trên DHT22 - cảm biến sẽ gửi lại 5 byte dữ liệu đo được:
- Byte 1: Giá trị phần nguyên của độ ẩm
- Byte 2: Giá trị phần thập phân của độ ẩm
- Byte 3: Giá trị phần nguyên của nhiệt độ
- Byte 4: Giá trị phần thập phân của nhiệt độ
- Byte 5: Kiểm trả tổng
Chú ý: Nếu Byte 5 = (Byte 1 + Byte 2 + Byte 3 + Byte 4) thì giá trị nhiệt độ và độ
ẩm là chính xác còn nếu không thì kết quả đo bị sai
Cách tính nhiệt độ và độ ẩm: (Bytecao * 256 + Bytethấp)/10
Đọc dữ liệu: Sau khi giao tiếp được với DHT22, DHT22 sẽ gửi liên tiếp 40bit 0 hoặc 1 về MCU tương ứng với 5 byte giá trị nhiệt độ độ ẩm
- Bit 0
Hình 3-5: Đọc bit 0 của DHT22
- Bit 1
Hình 3-6: Đọc bit 1 của DHT22
Trang 7Sau khi tín hiệu được đưa về 0 ta đợi chân DATA của MCU được DHT22 kéo lên 1 Nếu chân DATA duy trì trong khoảng 26-28µs thì là 0 còn nếu tồn tại trong khoảng 70µs thì là 1 Do đó trong lập trình ta bắt sườn lên của DATA sau đó delay 50µs Nếu giá trị đo được là 0 thì đọc được bit 0 nếu giá trị đo được là 1 thì đọc được bit 1cứ thế ta đọc các bit tiếp theo
3.2.3.3 Khối nguồn
Module NodeMCU ESP8266 CP2102 sử dụng điện áp 5VDC có thể được cấp qua micro usb hoặc cấp vào chân Vin Do đó ta sử dụng IC 7805 tạo nguồn 5VDC 2A cấp cho hệ thống ESP8266 sử dụng điện áp 3,3VDC được chuyển từ đầu vào 5VDC qua mạch sau:
Hình 3-7: Nguồn 3,3VDC cho ESP8266
Hình 3- 8: Nguồn 5VDC2
3.2.3.4 Thiết bị chấp hành
Bộ điều khiển rơ le 8 kênh gồm 8 rơ le hoạt động tại điện áp 5VDC, chịu được hiệu điện thế lên đến 250VAC 10A Thiết kế chắc chắn, có khả năng cách
Trang 8điện tốt Trên module đã có sẵn mạch kích rơ le sử dụng transistor và IC cách ly quang giúp cách ly hoàn toàn mạch điều khiển với rơ le bảo đảm vi điều khiển hoạt động ổn định Có sẵn giắc kết nối với vi điều khiển
Hình 3-9: Bộ điều khiển rơ le 8 kênh
Thông số kỹ thuật của bộ điều khiển rơ le 8 kênh:
- Điện áp hoạt động: 5VDC
- Dòng tiêu thụ: 80mA/1 rơ le
- Tín hiệu kích: High (5V) hoặc Low (0V) chọn bằng Jumper
- Tiếp điểm đóng ngắt max: 250VAC-10A hoặc 30VDC-10A
3.2.4 Môi trường lập trình Arduino IDE
Arduino là một nền tảng mã nguồn mở bao gồm các thiết bị phần cứng và phần mềm Phần cứng Arduino (các board mạch vi xử lý) được sinh ra tại thị trấn Ivrea ở Ý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/
O kỹ thuật số tương thích với nhiều board mở rộng khác nhau
Được giới thiệu vào năm 2005, những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các cơ cấu chấp hành Những ví dụ phổ biến cho những người yêu thích mới bắt đầu bao gồm các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động Đi cùng với nó là một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường và cho phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc C++
3.2.4.1 Giới thiệu về Arduino IDE
Trang 9Để có môi trường lập trình Arduino thì bước đầu tiên chúng ta phải có bộ cài đặt Arduino IDE do nhà sản xuất Arduino cung cấp, phần mềm này được tải tại trang chủ theo đường dẫn sau: http://arduino.cc/en/Main/Software
Sau khi tải và cài đặt, chúng ta có giao diện như sau:
Hình 3-10: Giao diện lập trình Arduino IDE
Hình 3-11: Vùng làm việc và chức năng chính của Arduino IDE
Khi lập trình cần chú ý các bước:
Bước 1: Tạo file biên dịch mới
Bước 2: Lưu file code
Bước 3: Lập trình code điều khiển
Bước 4: Biên dịch file để kiểm tra lỗi
Trang 10Bước 5: Nạp chương trình vào Board
kiểm tra trạng thái có cổng COM kết nối Vào Tools→Serial Port để chọn cổng COM Vào Tool→Board để chọn board Arduino sử dụng Sau đó nhấn Upload chương trình để nạp mã nguồn vào ESP8266
3.2.4.2 Cấu trúc của một chương trình Arduino IDE
Cũng như các ngôn ngữ lập trình khác, Arduino sử dụng ngôn ngữ lập trình
C, C++ Cấu trúc một chương trình Arduino bao gồm 2 hàm chính:
void setup(){
//Thực hiện việc thiết lập ban đầu cho các ứng dụng
}
Void loop(){
//Vòng lặp thực hiện chương trình.
}
Hàm setup() được sử dụng để khởi tạo giá trị các biến, thiết lập chế độ chân, bắt đầu sử dụng các thư viện…Hàm setup chỉ thực hiện một lần khi cấp nguồn hoặc reset Arduino
Hàm loop() được hiểu như là chương trình chính, thực hiện các chức năng được lập trình và có tính lặp lại liên tục
3.2.5 Lập trình cho ESP8266 trên Arduino IDE
3.2.5.1 Cấu hình cho Arduino IDE
Để Arduino IDE có thể lập trình cũng như biên dịch code cho ESP8266 ta cần cấu hình như sau: Lựa chọn Board Manager trong Tools và cài đặt ESP8266
Hình 3-12: Cài đặt ESP8266 vào Arduino IDE
Trang 113.2.5.2 Tập lệnh AT giao tiếp với ESP8266
Khi sử dụng giao tiếp UART để gửi lệnh AT đến Module ESP8266, chúng
ta phải gửi kềm kí tư <CR><LF> để báo kết thúc lệnh Ta có các lệnh cơ bản sau:
Firmware
Bảng 3-1: Lệnh AT chung
Lệnh AT cấu hình module wifi
AT+CWMODE
1 = Station 2 = Access Point 3
= Both
AT+CWMODE=1
AT+CWMODE
?
Truy vấn chế độ đã cài
AT+CWMODE
=?
Truy vấn các chế độ
AT+CIPMUX =
<mode>
Cài đặt số lượng các kênh kết nối
0 = 1 kênh kết nối 1 = Nhiều kênh kết nối
AT+CIPMUX=1
AT+CIPMODE
0 = transparent
Bảng 3-2: Lệnh AT cấu hình wifi
Lệnh AT đối module wifi cấu hình là Station/Client
AT+CWJAP =
<ssid>,
<password>
Kêt nối với 1 mạng wifi
ssid "SSID"
pass
"password"
AT+CWJAP
= "MLAB", "1235678"
Trang 12AT+CIFSR Xem địa chỉ IP của
Bảng 3-3: Lệnh AT đối với module wifi cấu hình là Station/Client
Lệnh AT đối module wifi cấu hình là Access point
AT+CWSAP=
<ssid>,<passw
ord> , <chan>,
<enc>
Cài đặt các thông
số cho Access Point
ssid "SSID" pass
"password" chan
"channel" enc
"Encryption" (0 = Open 1= WEP 2= WPA_PSK 3=
WPA2_PSK 4=WPA_WPA2_PSK)
AT+CWSAP=
"MLAB","1234567 8",5,3
AT+CWSAP?
Xem cài đặt hiện tại của Access Point
AT + CWSAP?
AT+CWLIF
Danh sách các station đang kết nối
AT + CWLIF
Bảng 3-4: Lênh AT đối với module wifi cấu hình là Access point
3.3 Thực hiện thiết bị thực tế
3.3.1 Thiết kế phần cứng
a Mạch nguyên lý
Hình 3-13: Nguồn ESP8266
Trang 13
Hình 3-14: Bộ xử lý trung tâm ESP8266
Hình 3-15: In/Out của ESP8266
Hình 3-16: Reset, Flash của ESP8266
Hình 3-17: ADC của ESP8266
Trang 14Hình 3-18: Chuyển đổi USB - UART
Hình 3-19: Mạch kết nối ESP8266 với thiết bị ngoại vi
b Mạch in
Trang 15
Hình 3-20: Mạch in – mặt dưới
Hình 3-21: Mạch in – mặt trên
Hình 3-22: Mạch in - 3D
3.3.2 Thiết kế phần mềm
a Lập trình cho ESP8266
Giải thuật
Trang 16
Hình 3-23: Lưu đồ giải thuật
b Lập trình cho điện thoại di động
b.1 Thư viện mã nguồn mở Blynk
Blynk là bộ thư viện mã nguồn mở, giúp chúng ta có thể tạo ra được một App trên điện thoại một cách nhanh chóng Sử dụng máy chủ miễn phí của Blynk giúp chúng ta có thể thực hiện các dự án nhỏ của mình
Hình 3-24: Blynk
Blynk App - Cho phép tạo giao diện cho sản phẩm 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 - Chịu trách nhiệm 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 Bạn có thể sử dụng Blynk Cloud của Blynk cung cấp hoặc tự tạo máy chủ Blynk riêng của bạn Vì đây là mã nguồn mở, nên bạn có