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

LẬP TRÌNH THIẾT BỊ IoTs

36 109 3

Đ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 36
Dung lượng 5,78 MB
File đính kèm do an.zip (18 MB)

Nội dung

ESP8266 là dòng chip tích hợp WiFi 2.4Ghz có thể lập trình được, giá rẻ được sản xuất bởi một công ty bán dẫn Trung Quốc: Espressif Systems. Hiện nay tất cả các dòng chip ESP8266 trên thị trường đều mang nhãn ESP8266EX, là phiên bản nâng cấp của ESP8266 Được phát hành đầu tiên vào tháng 8 năm 2014, đóng gói đưa ra thị trường dạng Mô dun ESP01, được sản xuất bởi bên thứ 3: AIThinker. Có khả năng kết nối Internet qua mạng WiFi một cách nhanh chóng và sử dụng rất ít linh kiện đi kèm. Với giá cả có thể nói là rất rẻ so với tính năng và khả năng ESP8266 có thể làm được. Thuộc dòng Kit Lauchpad giá rẻ từ hãng sản xuất TI danh tiếng, MSP430 Lauchpad là kit thí nghiệm được rất nhiều các bạn sinh viên, người nghiên cứu và các trường đại học lựa chọn hiện nay

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 QUÂN 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 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 .8 CÔNG NGHỆ .8 a Node.js gì? b Framwork Express nodejs .8 c Mongodb CÁC LUỒNG CHẠY a Login 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 I Giới thiệu Mơ Hình – Kịch bản: Web Server Database Vi xử lý ESP8266 Người Dùng SHT10 (cảm biến nhiệt độ, độ ẩm) BH1750 (Cảm biến ánh sáng) MSP430 Lauchpad  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 - 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 TRANG - 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 II Báo cáo tiến độ công việc 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 TRANG 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 - 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 TRANG - 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: #include #include #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 void void void void void SendInfo2Server(uint8_t *buff, size_t size); // hàm gửi liệu máy chủ RecvFromMSP430(); // Hàm nhận liệu từ MSP430 STAConnectAP(char const* ssid, char const* pass); // hàm kết nối đến AP changeURL(); // Hàm thay đổi URL có thị từ máy tính changeWIFI(); // Hàm thay đổi kết nối wifi có thị từ máy tính 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(); TRANG delay(3000); // Tạm nghỉ 5s } /* Message format: message | message | */ 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: { "NhietDo" : int, "DoAm" : int, "AnhSang" : int } */ 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ị TRANG 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) { 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) TRANG { 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(); STAConnectAP(ssid, NULL); } } } void help() { Serial.println("Use: "); Serial.println("URL| - example: URL|http://IP/path"); Serial.println("WIFI|SSID|[PASSWORD]"); } IV Giới thiệu lập trình Web Server CƠNG NGHỆ a Node.js gì? TRANG Node.js tảng chạy mơi trường V8 JavaScript runtime trình thơng dịch JavaScript cực nhanh chạy trình duyệt Chrome b Framwork Express nodejs Express framework nhỏ tiện ích để xây dựng ứng dụng web, cung cấp lượng lớn tính mạnh mẽ để phát triển ứng dụng web mobile Nó dễ dàng để phát triển ứng dụng nhanh dựa Node.js cho ứng dụng Web c Mongodb MongoDB gì? - MongoDB hệ quản trị sở liệu mã nguồn mở thuộc học NoSQL Nó thiết kế theo kiểu hướng đối tượng, bảng MongoDB cấu trúc linh hoạt, cho phép liệu lưu trữ bảng không cần tuân theo cấu trúc định (điều thích hợp để làm big data) - MongoDB lưu trữ liệu theo hướng tài liệu (document), liệu lưu trữ document kiểu JSON nên truy vấn nhanh Ưu điểm mongoDB - Schema linh hoạt: Do MongoDB sử dụng lưu trữ liệu dạng Document JSON nên collection các kích cỡ document khác - Cấu trúc đối tượng rõ ràng: Tuy cấu trúc liệu linh hoạt đối tượng xác định rõ ràng Sử dụng nhớ nội tại, nên truy vấn nhanh - MongoDB dễ mở rộng - Khơng có join: Điều góp phần tạo nên tốc độ truy vấn cực nhanh mongoDB - MongoDB phù hợp cho ứng dụng realtime Nhược điểm mongoDB Điều phải kể đến MongoDB khơng có tính chất ràng buộc RDBMS nên thao tác với mongoDB phải cẩn thận MongoDB sử dụng hao tốn tài nguyên hệ thống nhiều RDBMS TRANG INTERRUPT: - Ngắt (interrupt) q trình dừng chương trình chạy để ưu tiên thực - chương trình khác , chương trình gọi chương trình phục vụ ngắt (ISR – - Interrupt Service Routine) - MSP430 có loại ngắt ngắt khả ngụy ngắt không khả ngụy  Ngắt không khả ngụy liên quan đến hoạt động Reset,phát lỗi xong clock , cố nhớ Flash.Nói chung ngắt có mức độ ưu tiên cao , chế độ bình thường khơng ảnh hưởng đến hoạt động chương trình Một số chế độ đặc biệt hướng dẫn loạt MSP430_Advance , viết sau,trình bày cách điều khiển hoạt động ngắt không khả ngụy tắt chức reset chân Reset,khởi động lại phần mềm.Ngắt không khả ngụy không điều khiển bit GIE ghi điều khiển  Ngắt khả ngụy loạt ngắt liên quan trực tiếp đến hoạt động hầu hết chương trình cho phép thực chương trình gọi từ ngắt cổng Inout,ngắt từ Timer , ADC , Các giao thức truyền thơng Có hai loại ngắt khả ngụy ngắt ngắt Ngắt khả ngụy điều khiển bit GIE ghi điều khiển.Tức muốn hoạt động BIT GIE phải set=1 (đây bit ghi trạng thái SR(đọc thêm sách Cơ sở lý thuyết MSP430)) - Ngắt ngắt tác động bên lên chip VD ngắt GPIO,ADC,Các giao thực truyền thông - 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) TRANG 20 NGẮT NGỒI - MSP430 thiết kế có nhiều ngắt ngoà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)  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) TRANG 21  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 } TRANG 22 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 TRANG 23  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: TRANG 24 TRANG 25 LỆNH: LỆNH KHỞI TẠO SHT10: PHẢN HỒI BẮT ĐẦU SHT10 KHI KHỞI TẠO BỊ LỖI: TRANG 26 VÍ DỤ: THANH GHI TRẠNG THÁI: TRANG 27 CƠNG THỨC TÍNH: TRANG 28 BH1750 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 TRANG 29 SƠ ĐỒ HOẠT ĐỘNG: LỆNH: TRANG 30 VÍ DỤ TRANG 31 ĐỒ ÁN: P1.6, P1.7 SHT10 Giống ii2 P2.0,P2.1 MSP430G2 BH1750 ii2 P1.1,P1.2 ESP8266 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: TRANG 32 Cấu hình kit Msp430: -Giao tiếp: uart, chân kết nối SHT10, BH1750(ii2) -Clock: 1MHz Khởi tạo: -SHT10 -BH1750 -Interrupt Đo nhiệt độ, độ ẩm, ánh sáng: -Lấy liệu nhiệt độ, độ ẩm, lỗi kết nói lại -Tính tốn liệu -Lấy liệu ánh sáng Nhận lệnh từ esp8266: -Nếu lệnh = ‘S’ truyền json cho esp 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-frameworkrQOvPKVgkYj mongodb: https://www.mongodb.com/ mơ hình mvc: https://techmaster.vn/posts/33903/giai-thich-vemo-hinh-mvc TRANG 33 TRANG 34 ... 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ị TRANG int statuscode = http.POST(buff,... 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... ngoai vi TRANG 19 INTERRUPT: - Ngắt (interrupt) q trình dừng chương trình chạy để ưu tiên thực - chương trình khác , chương trình gọi chương trình phục vụ ngắt (ISR – - Interrupt Service Routine)

Ngày đăng: 12/05/2020, 14:32

TỪ KHÓA LIÊN QUAN

w