thiết kế ra được mạch đo nhiệt độ và thực hiện điều khiển thông qua kết nối Ethernet bằng tay hoặc điều tự động.+ Thực hiện giao diện điều khiển với thiết bị điện lưới 220V.+ Đo đạc thông số nhiệt độ giám sát trên máy tính kết nối trong mạng LAN.+ Cấu hình ngưỡng tự động điều khiển theo nhiệt độ.+ Thực hiện điều khiển từ xa qua mạng LAN sử dụng giao diện điều khiển trên PC.
MỤC LỤC Trang LỜI MỞ ĐẦU Ngày với phát triển khoa học công nghệ, đặc biệt cách mạng 4.0 mở cho nhiều thành thách thức lĩnh vực Một thành thách thức thiết bị thông minh điều khiển giám sát từ xa tạo đà cải tiến, có IOT (Internet of thing) gọi internet kết nối vạn vật Dựa kiến thức học môn vi xử lý điều khiển, kết hợp với thực tế cơng nghệ, tài ngun có sẵn, chúng em nghiên cứu thiết kế mạch đo nhiệt độ thực điều khiển thông qua kết nối Ethernet tay điều tự động Nội dung thực hiện: - Sử dụng bảng mạch trung tâm Adruino - Miêu tả chức hoạt động: + Thực giao diện điều khiển với thiết bị điện lưới 220V + Đo đạc thông số nhiệt độ giám sát máy tính kết nối mạng LAN + Cấu hình ngưỡng tự động điều khiển theo nhiệt độ + Thực điều khiển từ xa qua mạng LAN sử dụng giao diện điều khiển PC CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ỨNG DỤNG 1.1 Tổng quan cấu trúc phần cứng board mạch arduino R3 Hình 1.1: Arduino UNO R3 1.1.1 Một vài thông số Arduino UNO R3 Vi điều khiển ATmega328P họ 8bit Điện áp hoạt động 5V DC (chỉ cấp qua cổng USB) Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC Tần số hoạt động 16 MHz Dòng tiêu thụ khoảng 30mA Số chân Digital I/O 14 (6 chân hardware PWM) Số chân Analog (độ phân giải 10bit) Dòng tối đa chân I/O 30 mA Dòng tối đa (5V) 500 mA Dòng tối đa (3.3V) 50 mA Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bootloader SRAM KB (ATmega328) EEPROM KB (ATmega328 1.1.2 Vi điều khiển Arduino UNO sử dụng vi điều khiển họ 8bit AVR ATmega8, ATmega168, ATmega328 Bộ não xử lí tác vụ đơn giản điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm trạm đo nhiệt độ - độ ẩm hiển thị lên hình LCD,… hay ứng dụng khác 1.1.3 Năng lượng Arduino UNO cấp nguồn 5V thơng qua cổng USB cấp nguồn với điện áp khuyên dùng 7-12V DC giới hạn 6-20V Thường cấp nguồn pin vng 9V hợp lí khơng có sẵn nguồn từ cổng USB Nếu cấp nguồn vượt ngưỡng giới hạn trên, làm hỏng Arduino UNO 1.1.4 Các chân lượng • GND (Ground): cực âm nguồn điện cấp cho Arduino UNO Khi bạn dùng thiết bị sử dụng nguồn điện riêng biệt chân phải nối với • 5V: cấp điện áp 5V đầu Dòng tối đa cho phép chân 500mA • 3.3V: cấp điện áp 3.3V đầu Dòng tối đa cho phép chân 50mA • Vin (Voltage Input): để cấp nguồn cho Arduino UNO, bạn nối cực dương nguồn với chân cực âm nguồn với chân GND • IOREF: điện áp hoạt động vi điều khiển Arduino UNO đo chân Và dĩ nhiên ln 5V Mặc dù bạn khơng lấy nguồn 5V từ chân để sử dụng chức khơng phải cấp nguồn • RESET: việc nhấn nút Reset board để reset vi điều khiển tương đương với việc chân RESET nối với GND qua điện trở 10KΩ 1.1.5 Bộ nhớ Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng: • 32KB nhớ Flash: đoạn lệnh lập trình lưu trữ nhớ Flash vi điều khiển Thường có khoảng vài KB số dùng cho bootloader đừng lo, cần 20KB nhớ đâu • 2KB cho SRAM (Static Random Access Memory): giá trị biến khai báo lập trình lưu Khai báo nhiều biến cần nhiều nhớ RAM Tuy vậy, thực nhớ RAM lại trở thành thứ phải bận tâm Khi điện, liệu SRAM bị • 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): giống ổ cứng mini – nơi đọc ghi liệu vào mà khơng phải lo bị cúp điện giống liệu SRAM 1.1.6 Các cổng vào Arduino UNO có 14 chân digital dùng để đọc xuất tín hiệu Chúng có mức điện áp 0V 5V với dòng vào/ra tối đa chân 40mA Ở chân có điện trở pull-up từ cài đặt vi điều khiển ATmega328 (mặc định điện trở khơng kết nối) Một số chân digital có chức đặc biệt sau: • chân Serial: (RX) (TX): dùng để gửi (transmit – TX) nhận (receive – RX) liệu TTL Serial Arduino Uno giao tiếp với thiết bị khác thông qua chân Kết nối bluetooth thường thấy nói nơm na kết nối Serial không dây Nếu không cần giao tiếp Serial, không nên sử dụng chân không cần thiết • Chân PWM (~): 3, 5, 6, 9, 10, 11: cho phép xuất xung PWM với độ phân giải 8bit (giá trị từ → 28-1 tương ứng với 0V → 5V) hàm analogWrite() Nói cách đơn giản, điều chỉnh điện áp chân từ mức 0V đến 5V thay cố định mức 0V 5V chân khác • Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài chức thơng thường, chân dùng để truyền phát liệu giao thức SPI với thiết bị khác • LED 13: Arduino UNO có đèn led màu cam (kí hiệu chữ L) Khi bấm nút Reset, ta thấy đèn nhấp nháy để báo hiệu Nó nối với chân số 13 Khi chân người dùng sử dụng, LED sáng Arduino UNO có chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp khoảng 0V → 5V Với chân AREF board, để đưa vào điện áp tham chiếu sử dụng chân analog Tức cấp điện áp 2.5V vào chân ta dùng chân analog để đo điện áp khoảng từ 0V → 2.5V với độ phân giải 10bit Đặc biệt, Arduino UNO có chân A4 (SDA) A5 (SCL) hỗ trợ giao tiếp I2C/TWI với thiết bị khác 1.1.7 Lập trình cho Arduino Các thiết bị dựa tảng Arduino lập trình ngơn riêng Ngơn ngữ dựa ngôn ngữ Wiring viết cho phần cứng nói chung Và Wiring lại biến thể C/C++ Một số người gọi Wiring, số khác gọi C hay C/C++ Riêng gọi “ngơn ngữ Arduino”, đội ngũ phát triển Arduino gọi Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến dễ học, dễ hiểu Để lập trình gửi lệnh nhận tín hiệu từ mạch Arduino, nhóm phát triển dự án cấp đến cho người dùng mơi trường lập trình Arduino gọi Arduino IDE (Intergrated Development Environment) 1.2 Một số khối chức Atmega328 sử dụng đề tài 1.2.1 Khối truyền thơng SPI Hình 1.2: Khối truyền thông SPI Các chân giao tiếp SPI ATMega328 là: • SS - chân số 14 • MOSI - chân số 15 • MISO - chân số 16 • SCK - chân số 17 Các chân giao tiếp SPI Arduino Uno là: • SS - chân số 10 • MOSI - chân số 11 • MISO - chân số 12 • SCK - chân số 13 1.2.2 Khối ADC Hình 1.3: Khối ADC Các chân giao tiếp ADC ATMega328 là: • ADC0 - chân số 23 • ADC1 - chân số 24 • ADC2 - chân số 25 • ADC3 - chân số 26 • ADC4 - chân số 27 • ADC5 - chân số 28 Các chân giao tiếp ADC Arduino Uno là: • ADC0 - chân số A0 • ADC1 - chân số A1 • ADC2 - chân số A2 • ADC3 - chân số A3 • ADC4 - chân số A4 • ADC5 - chân số A5 1.3 Các khối ngoại vi ứng dụng Khối ngoại vi sử dụng đề tài Arduino Ethernet Shield 1.3.1 Cấu tạo Hình 1.4: Cấu tạo Arduino Ethernet Shield 1.3.2 Cách thức ghép nối Hình 1.5: Cách thức ghép nối Arduino Ethernet Shield - Chân nguồn 5V chân GND Arduino Ethernet Shield nối với chân nguồn 5V chân GND Arduino UNO R3 - Các chân 10, 11, 12, 13 Arduino Ethernet Shield nối với chân 10, 11, 12, 13 Arduino UNO R3 thông qua giao tiếp SPI - Chân số Arduino Ethernet Shield nối với chân số Arduino UNO R3 dùng để kết nối thẻ nhớ 10 LM35 có hiệu cao, công suất tiêu thụ 60uA Cảm biến LM35 hoạt động cách cho giá trị hiệu điện định chân Vout (chân giữa) ứng với mức nhiệt độ Như vậy, cách đưa vào chân bên trái cảm biến LM35 hiệu điện 5V, chân phải nối đất, đo hiệu điện chân pin A0 arduino (giống y hệt cách đọc giá trị biến trở), nhiệt độ tính bằng cơng thức: float temperature = (5.0*analogRead(A0)*100.0/1024.0); Hình 2.9: Sơ đồ kết nối với LM35 2.2.2.2 Arduino giao tiếp với Ethernet shield Arduino giao tiếp với hai module Ethernet shield thẻ SD cách sử dụng chuẩn SPI (thông qua cổng ICSP), chân 11, 12, 13 board arduino Uno R3, chân số 10 sử dụng để chọn W5100 chân số cho SD card Các chân sử dụng cho chức i/o , sử dụng module lúc chân số 10 board arduino Uno R3 phải để trống khơng board khơng thể hoạt động 20 Hình 2.10: Sơ đồ kết nối với Ethernet Shield Module Ethernet shield kết nối với thẻ SD, thẻ SD chứa file HTM để tạo trang web Arduino tạo địa IP cho Module Ethernet shield, đọc liệu từ thẻ SD Sau trình duyệt web yêu cầu tải trang web từ máy chủ web Arduino, JavaScript trang web gửi yêu cầu Ajax cho liệu từ Arduino giây Trang web lưu trữ Arduino Web Server Arduino đáp ứng yêu cầu Ajax cách gửi tệp XML trở lại trình duyệt web Tệp XML chứa giá trị từ bốn đầu vào tương tự Arduino (A0), trạng thái led(các cổng vào số) Khi đèn LED bật từ trang web cách chọn nhấn bật, JavaScript gửi trạng thái nhấn (gửi hướng dẫn để bật đèn LED) với yêu cầu Ajax Điều tương tự xảy đèn LED bị tắt nút sử dụng để bật tắt đèn LED 2.2.2.3 Arduino với cổng vào số điều khiển Rơ le thiết bị điện * Nguyên lý hoạt động rơ le Khi nguồn điện qua cuộn cảm tạo từ trường hút đẩy để đóng ngắt công tắc rờ le để điều khiển thiết bị Để cho rờ le hoạt động ta cần: - Nối nguồn vào chân công tắc rơ le nguồn vào cuộn cảm thông qua điều khiển ( ví dụ cơng tắc, nút nhấn ) 21 - Chân lại cuộn cảm mát chân dương chờ công tắc đến thiết bị cần điều khiển * Khi đầu cổng vào số mức cao cho phép bật thiết bị, ngược lại đầu cổng vào số mức thấp cho phép tắt thiết bị 2.3 Thuật toán thực 2.3.1 Sơ đồ khối thực thuật tốn Hình 2.11: Sơ đồ khối thực thuật toán Địa IP Ethernet Shield : 1, 8); Khởi tạo thẻ nhớ SD : 22 IPAddress ip(192, 168, Serial.println(F("Initializing SD card ")); if (!SD.begin(4)) { Serial.println(F("ERROR - SD card initialization failed!")); return; } Serial.println(F("SUCCESS - SD card initialized.")); 2.3.2 Lưu đồ thuật toán thực hiển thị nhiệt độ Hình 2.12: Lưu đồ thuật toán thực hiển thị nhiệt độ Đọc liệu từ cảm biến LM35: void XML_response(EthernetClient cl) { int reading = analogRead(2); float voltage = reading * 5.0 / 1024.0; float temp = voltage * 100.0; cl.print(""); cl.print(temp); cl.println("");} 23 Xuất nhiệt độ giao diện Web: document.getElementById("analog") innerHTML = this.responseXML.getElementsByTagName('analog') [0].childNodes[0].nodeValue; T = Độ C 2.3.3 Lưu đồ thuật toán thực điều khiển thiết bị Hình 2.13: Lưu đồ thuật tốn thực điều khiển thiết bị Code Arduino: void SetLEDs(void) { // LED (pin 2) if (StrContains(HTTP_req, "LED1=1")) { LED_state[0] = 1; digitalWrite(2, HIGH); } } void XML_response(EthernetClient cl) { cl.print(F("")); 24 if (LED_state[0]) { cl.print(F("on")); } else { cl.print(F("off")); } cl.println(F("")); } Code websever: if (this.responseXML.getElementsByTagName('LED') [0].childNodes[0].nodeValue === "on") { document.getElementById("LED1").innerHTML = "TẮT"; LED1_state = 1; document.getElementById("State_LED1").innerHTML = "BẬT"; } else { document.getElementById("LED1").innerHTML = "BẬT"; LED1_state = 0; document.getElementById("State_LED1").innerHTML = "TẮT"; } function GetButton1() { if (LED1_state === 1) { LED1_state = 0; strLED1 = "&LED1=0"; } else { LED1_state = 1; strLED1 = "&LED1=1"; } } 25 2.3.4 Lưu đồ thuật toán thiết lập giá trị ngưỡng tự động điều khiển thiết bị Hình 2.14: Lưu đồ thuật toán thiết lập giá trị ngưỡng tự động điều khiển thiết bị Code Websever: if(this.responseXML.getElementsByTagName('analog') [0].childNodes[0].nodeValue < result.value) { LED7_state = 0; strLED7 = "&LED7=0";LED2_state = 0; strLED2 = "&LED2=0"; } else { LED7_state = 1; strLED7 = "&LED7=1";LED2_state = 1; strLED2 = "&LED2=1"; } 26 CHƯƠNG 3: KẾT QUẢ ỨNG DỤNG 1.1 Kết mạch thật 27 28 29 30 Hình 3.1: Kết đề tài 3.2 Hướng phát triển ứng dụng Mạch thiết kế kết nối với router Wifi để đồng liệu websever lên mạng internet Khi đồng ta 31 kiểm sốt thiết bị nơi đâu giới có internet 3.3 Ưu nhược điểm ứng dụng 3.3.1 Ưu điểm - Có thể kiểm sốt thiết bị từ xa, bật tắt thiết bị, thông qua kết nối erthenet - Tốc độ xử lí nhanh - Thực việc cập nhật nhiệt độ liên tục không bị gián đoạn - Tự động bật thiết bị môi trường nhiệt độ ngưỡng cho phép - Có thể thiết lập mức nhiệt độ nhiệt độ ngưỡng thông qua giao diện web - Có thể điều khiển thiết bị điện xoay chiều thông qua Rơ le 3.3.2 Nhược điểm - Kết nối mạng LAN phí cho dây độ dài dây cần đủ lớn - Mạch xấu chưa tinh gọn 32 KẾT LUẬN Kết luận lại, nhóm chúng em thực đề tài nghiên cứu thiết kế chế tạo mạch thực đo nhiệt độ điều khiển thiết bị từ xa thông qua kiến thức học tài ngun có sẵn Thơng qua đề tài, nhóm chúng em học hỏi nhiều học kinh nghiệm thiết kế mạch, ứng dụng kiến thức lý thuyết học vào thực tế, có kĩ làm việc nhóm tốt hơn, kĩ làm báo cáo, làm mạch, mua linh kiện thiết bị… Chúng em nhận thấy đề tài nghiên cứu sát với thực tế, phát triển hệ thống IOT, ứng dụng công nghệ 4.0 vào đời sống người, giúp người xử lí cơng việc cách tự động đảm bảo nhanh gọn xác 33 34 ... cứu thiết kế mạch đo nhiệt độ thực điều khiển thông qua kết nối Ethernet tay điều tự động Nội dung thực hiện: - Sử dụng bảng mạch trung tâm Adruino - Miêu tả chức hoạt động: + Thực giao diện điều. .. diện điều khiển với thiết bị điện lưới 220V + Đo đạc thông số nhiệt độ giám sát máy tính kết nối mạng LAN + Cấu hình ngưỡng tự động điều khiển theo nhiệt độ + Thực điều khiển từ xa qua mạng LAN... thẻ SD Kết nối máy tính với Module Ethernet shield qua dây mạng RJ 45, vào web qua địa IP tạo từ Arduino, giao diện web hiển thị thông số nhiệt độ, điều khiển thiết bị thiết lập mức nhiệt độ ngưỡng