Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 40 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
40
Dung lượng
2,08 MB
Nội dung
tranquang140894@gmail.com TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THƠNG BÁO CÁO ĐỒ ÁN LẬP TRÌNH THIẾT BỊ IoTs MƠN HỌC: CƠNG NGHỆ INTERNET OF THING HIỆN ĐẠI MÃ LỚP: NT532.I21 GVHD: GS-TS LÊ TRUNG QN Các thành viên nhóm: Nguyễn Hồng Thanh – 14520842 Lê Minh Thuận – 14520913 Phạm Lê Minh Trí – 14520998 Nguyễn Thành Triều – 14521005 Nguyễn Văn Tùng – 14521058 Ngày 20 tháng 04 năm 2018 tranquang140894@gmail.com Mục lục I Giới thiệu Mô Hình – Kịch bản: II Báo cáo tiến độ cơng việc III Giới thiệu lập trình ESP8266 IV Giới thiệu lập trình Web Server CƠNG NGHỆ a Node.js gì? b Framwork Express nodejs c Mongodb CÁC LUỒNG CHẠY a Login 9 b Post data 10 c Get data 11 Phân tích mã nguồn 12 a Mơ hình MVC 12 b Cấu trúc code 13 V Giới thiệu lập trình MSP430G2 15 VI TÀI LIỆU SỬ DỤNG, TRÍCH DẪN 34 tranquang140894@gmail.com I Giới thiệu Mơ Hình – Kịch bản: ● Mơ hình bao gồm : - Lauchpab MSP430 - Vi xử lý ESP8266 - Web server - Database lưu trữ thông tin gửi đến Server - SHT10 Cảm biến nhiệt độ, độ ẩm - BH1750 Cảm biến ánh sang ● Kịch Bản: - Quy trình : SHT, BH -> MSP430-> ESP-> web server -> database tranquang140894@gmail.com II - Cảm biến SHT BH đọc liệu môi trường gửi cho MSP sau MSP gửi cho ESP ESP yêu cầu ( chu kỳ 3s) Khi nhận thông tin EPS gửi yêu cầu cập nhật thông tin cho Server Server lưu thông tin xuống Database thống kê thành thị - Quy trình 2: client-> web server -> database - Người dùng click nút view, web browser tự động gửi request 3s lần, server cập nhật thông tin weather cho client từ database Báo cáo tiến độ cơng việc tranquang140894@gmail.com III Giới thiệu lập trình ESP8266 ESP8266 dịng chip tích hợp Wi-Fi 2.4Ghz lập trình được, giá rẻ sản xuất công ty bán dẫn Trung Quốc: Espressif Systems Hiện tất dòng chip ESP8266 thị trường mang nhãn ESP8266EX, phiên nâng cấp ESP8266 Được phát hành vào tháng năm 2014, đóng gói đưa thị trường dạng Mơ dun ESP-01, sản xuất bên thứ 3: AI-Thinker Có khả kết nối Internet qua mạng Wi-Fi cách nhanh chóng sử dụng linh kiện kèm Với giá nói rẻ so với tính khả ESP8266 làm ESP8266 có cộng đồng nhà phát triển giới lớn, cung cấp nhiều Module lập trình mã nguồn mở giúp nhiều người tiếp cận xây dựng ứng dụng nhanh Thông số phần cứng tranquang140894@gmail.com - 32-bit RISC CPU : Tensilica Xtensa LX106 chạy xung nhịp 80 MHz - Hổ trợ Flash từ 512KiB đến 4MiB - 64KBytes RAM thực thi lệnh - 96KBytes RAM liệu - 64KBytes boot ROM - Chuẩn wifi IEEE 802.11 b/g/n, Wi-Fi 2.4 GHz - Tích hợp TR switch, balun, LNA, khuếch đại công suất matching network - Hỗ trợ WEP, WPA/WPA2, Open network - Tích hợp giao thức TCP/IP - Hổ trợ nhiều loại anten - 16 chân GPIO - Hổ trợ SDIO 2.0, UART, SPI, I²C, PWM,I²S với DMA - ADC 10-bit - Dải nhiệt độ hoạt động rộng : -40C ~ 125C Board mạch nhóm sử dụng Wemos NodeMCU - ESP8266 CH340 Vì tính đơn giản dễ sử dụng nên nhóm sử dụng Arduino SDK Quá trình làm việc: - Bước 1: ModeMCU – ESP8266 cố gắng kết nối đến Access Point định trước - Bước 2: Gửi thông điệp “S” đến MSP430 - Bước 3: Nhận thông điệp phản hồi từ MSP430 - Bước 4: Khởi tạo kết nối HTTP request đến máy chủ - Bước 5: Gửi thông điệp bước đến máy chủ - Bước 6: Tạm nghỉ giây quay lại bước Một số dịng mã lập trình ESP8266: tranquang140894@gmail.com #include #include #include #include "SoftwareSerial.h" const char* SSID = "nhtcntt"; // Khai báo tên AP const char* PASS = "123456789"; // Mật cho AP String URL = "http://192.168.123.31:3000/update"; // URL máy chủ lưu trữ liệu SoftwareSerial sw(D1, D2, false, 128); //rx, tx khai báo chân dùng cho giao tiếp Serial SerialCommand sCmd; // Giao tiếp serial với máy tính void SendInfo2Server(uint8_t *buff, size_t size); // hàm gửi liệu máy chủ void RecvFromMSP430(); // Hàm nhận liệu từ MSP430 void STAConnectAP(char const* ssid, char const* pass); // hàm kết nối đến AP void changeURL(); // Hàm thay đổi URL có thị từ máy tính void changeWIFI(); // Hàm thay đổi kết nối wifi có thị từ máy tính void help(); void setup() { Serial.begin(115200); // thiết lập tỉ lệ bit/s cho giao tiếp serial với máy tính sw.begin(9600); // thiết lập tỉ lệ bit/s cho giao tiếp serial với MSP430 Serial.println("debug"); // Hiển thị lên máy tính Serial.print("Connectting to "); Serial.println(SSID); sCmd.addCommand("URL", changeURL); // Thiết lập hàm liên quan đến lệnh - tương tự việc dùng command line sCmd.addCommand("WIFI", changeWIFI); sCmd.addCommand("help", help); STAConnectAP(SSID, PASS); } void loop() { sCmd.readSerial(); // Đọc thông điệp từ máy tính gửi đến RecvFromMSP430(); delay(3000); // Tạm nghỉ 5s } /* Message format: message | message | */ tranquang140894@gmail.com void RecvFromMSP430() { sw.write('S'); // Bắt đầu gửi kí tự S đến MSP430 uint8_t buff[100]; if(sw.available() > 0) // Xác nhận có thơng điệp từ MSP430 gửi thực thi { size_t len = sw.readBytesUntil('|', buff, sizeof(buff)); // Đọc đến gặp kí tự | dừng lại if(len > 0) { SendInfo2Server(buff, len); // Gửi thông điệp vừa nhận lên máy chủ } } } /* URL: http://IPorName:80/update method: POST http header: User-Agent: MAC Address Content-Type: application/json Content-Length: length(http body) Connection: close http body: { " N h i } e */ t D o " : i n t , " D o A m " : i n t , " tranquang140894@gmail.com A n h S a n g " : i n t void SendInfo2Server(uint8_t *buff, size_t size) { HTTPClient http; // Khởi tạo đối tượng http http.begin(URL); // kết nối URL định http.addHeader("Content-Type", "application/json"); // Thiết lập nội dung gửi kiểu liệu JSON http.setUserAgent(WiFi.macAddress()); // Thiết lập user agent địa MAC thiết bị int statuscode = http.POST(buff, size); // Sử dụng phương thức POST gửi nội dung lên máy chủ if(statuscode > 0) { String payload = http.getString(); } http.end(); } void STAConnectAP(char const* ssid, char const* pass) { tranquang140894@gmail.com WiFi.mode(WIFI_STA); // chuyển chế độ station hay client để kết nối đến AP WiFi.begin(ssid, pass); // thiết lập tên wifi mật // Nếu trạng thái chưa kết nối cố gắng kết nối lại khoảng thời gian 10s unsigned long startTime = millis(); while( WiFi.status() != WL_CONNECTED && millis() - startTime < 10000 ) { delay(2000); Serial.println("Failed - Try connect"); } if(WiFi.status() != WL_CONNECTED) return; // Xuất liệu đến máy tính dùng để debug Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); Serial.print("MAC: "); Serial.println(WiFi.macAddress()); } void changeURL() { char *arg = sCmd.next(); if(arg) { URL = String(arg); } } void changeWIFI() { char ssid[20], pass[20]; ssid[0] = '\0'; pass[0] = '\0'; char *arg = sCmd.next(); if(arg) { Serial.println(arg); strncpy(ssid, arg, 20); arg = sCmd.next(); if(arg) { Serial.println(arg); strncpy(pass, arg, 20); WiFi.disconnect(); STAConnectAP(ssid, pass); } else { WiFi.disconnect(); tranquang140894@gmail.com - Ngắt loại ngắt sinh từ bên chip ngắt Timer/Counter,Watchdog - Hoặc dùng ngắt,tức nhấn nút Module GPIO xác nhận có thay đổi điện áp tự động chạy chương trình ngắt GPIO,bật led quay lại chương trình - Như thấy hỏi vịng thao tác bật đèn P1.6 bị trễ khoảng thời gian _delay_cycles(),cịn dùng ngắt P1.6 sáng tức thì.Đây điểm khác biệt kỹ thuật hỏi vòng ngắt,cũng gần giống việc VĐK bạn chạy chương trình lúc vậy(Về chất khơng phải) NGẮT NGỒI - MSP430 thiết kế có nhiều ngắt ngồi(đây điểm vượt trội so với dòng cũ AVR,PIC ).Các cổng P1 P2 hầu hết MSP430 có ngắt.Việc điều khiển ngắt đươc thơng qua ghi PxIE , PxIES , PxIFG - Mỗi chân P1 P2 làm ngắt yêu cầu Các chân thiết lập với ghi phụ như: ● Cho phép ngắt ( PxIE) : - Thanh ghi cho phép ngắt chân riêng rẽ ● Bit = 0: không cho phép ngắt ● Bit = 1: Cho phép ngắt - Mỗi Bit cho phép ngắt PxIE liên kết với cờ ngắt PxIFG tương ứng - Việc ghi vào ghi PxOUT PxDIR ảnh hưởng đến việc điều chỉnh PxIE ● Thanh ghi lựa chọn ngắt cạnh ( PxIES) : - Lựa chọn loại ngắt xuất biến đổi tín hiệu ( Nếu PxIE GIE Set) ● Bit = 0: Ngắt cạnh lên ● Bit = 1: Ngắt cạnh xuống - Thanh ghi cờ ngắt ( PxIFG) tranquang140894@gmail.com ● Cờ ngắt Set tự động theo chương trình lập trình trước xuất chuyển đổi tín hiệu Cờ PxIFG phải sử dụng chương trình để Reset o Bit = 0: Khơng có ngắt o Bit = 1: Có ngắt - Để thực ngắt cần bước: ● Thiết lập cấu hình Module phép ngắt xảy điều kiện xảy ngắt ● Gọi hàm thực ngắt tương ứng - Lấy ví dụ : Đèn P1.0 nháy chu kỳ 0.5Hz,nếu nhấn nút P1.3 đèn P1.6 đổi giá trị lập tức( sáng tối) ● Thiết lập cổng vào ra,phải cài đặt P1.3 cổng Input,có điện trở nội kéo lên để chống nhiễu,cài đặt cho phép ngắt cạnh xuống.Cài đặt cổng Output cho đèn P1.0 P1.6.Cuối set BIT GIE=1 hàm bis_SR_register(GIE);(đây số hàm set ghi trạng thái SR(đọc thêm sách Cơ sở lý thuyết MSP430)) ● Gọi hàm thực ngắt,có bố cục giống hàm ngắt khác #pragma vector = (Tên hàm ngắt mặc định) //xem cuối interrupt void (Tên hàm ngắt người dùng đặt)(void) { //Thực chương trình ngắt //Hàm xóa cờ ngắt } tranquang140894@gmail.com tranquang140894@gmail.com SHT10 THƠNG SỐ KỸ THUẬT: ● Điện áp cung cấp: 2.4 ~ 5.5VDC ● Dải đo độ ẩm: - 100% RH ● Độ xác độ ẩm: ± 4.5% RH ● Dải đo nhiệt độ: -40 ~ 123.8℃ ● Độ xác nhiệt độ: ± 0.4℃ ● Tín hiệu ngõ ra: digital ● Kích thước: 21 x 12 x 20mm tranquang140894@gmail.com ● Chuẩn kết nối: giống i2c Giao diện nối tiếp SHT1x tối ưu hóa cho cảm biến đọc tiêu thụ lượng hiệu Cảm biến giải theo giao thức I2C; nhiên, cảm biến kết nối với bus I2C mà không gây nhiễu với thiết bị khác kết nối với bus Bộ điều khiển phải chuyển đổi giao thức SƠ ĐỒ ĐẤU NỐI: ● Chân S: chân xung clock ● Chân +: chân cấp nguồn dương ● Chân -: chân cấp nguồn âm(mass) ● Chân D: chân liệu HIỆU SUẤT: tranquang140894@gmail.com tranquang140894@gmail.com LỆNH: tranquang140894@gmail.com LỆNH KHỞI TẠO SHT10: PHẢN HỒI BẮT ĐẦU SHT10 KHI KHỞI TẠO BỊ LỖI: VÍ DỤ: THANH GHI TRẠNG THÁI: tranquang140894@gmail.com CƠNG THỨC TÍNH: tranquang140894@gmail.com BH1750 tranquang140894@gmail.com Cảm biến cường độ ánh sáng BH1750 sử dụng để đo cường độ ánh sáng theo đơn vị lux, càm biến có ADC nội tiền xử lý nên giá trị trả giá trị trực tiếp cường độ ánh sáng lux mà qua xử lý hay tính tốn thơng qua giao tiếp I2C THÔNG SỐ: - Nguồn: 3~5VDC - Giao tiếp: I2C - Khoảng đo: -> 65535 lux - Kích cỡ: 21*16*3.3mm SƠ ĐỒ HOẠT ĐỘNG: tranquang140894@gmail.com LỆNH: tranquang140894@gmail.com VÍ DỤ ĐỒ ÁN: tranquang140894@gmail.com Sử dụng source có sẵn github để giao tiếp msp430 cảm biến Source nằm thư mục lib Sơ đồ làm việc: tranquang140894@gmail.com VI TÀI LIỆU SỬ DỤNG, TRÍCH DẪN http://Chipfc.com http://thuanbk55.blogspot com http://GitHub.com express: https://viblo.asia/p/nodejs-voi-express-framework-rQOvPKVgkYj mongodb: https://www.mongodb.com/ mơ hình mvc: https://techmaster.vn/posts/33903/giai-thich-ve-mo-hinh-mvc ... lục I Giới thiệu Mơ Hình – Kịch bản: II Báo cáo tiến độ công việc III Giới thiệu lập trình ESP8266 IV Giới thiệu lập trình Web Server CƠNG NGHỆ a Node.js gì? b Framwork Express nodejs c Mongodb... tranquang140894@gmail.com III Giới thiệu lập trình ESP8266 ESP8266 dịng chip tích hợp Wi-Fi 2.4Ghz lập trình được, giá rẻ sản xuất công ty bán dẫn Trung Quốc: Espressif Systems Hiện tất dòng chip ESP8266 thị... http.addHeader("Content-Type", "application/json"); // Thiết lập nội dung gửi kiểu liệu JSON http.setUserAgent(WiFi.macAddress()); // Thiết lập user agent địa MAC thiết bị int statuscode = http.POST(buff, size);