Thực tập thực tế Mạng cảm biến không dây dùng Module Lora SX1276 (SX1278) (UART SPI) , Giao tiếp module ESP8266 đưa dữ liệu lên và kết nối ThingSpeak để theo dõi dữ liệu. Có code mẫu và sơ đồ mạch chi tiết
MỤC LỤC NỘI DUNG ĐỀ TÀI .1 LỜI CẢM ƠN LỜI NÓI ĐẦU MỤC LỤC Chương TỔNG QUAN VỀ MẠNG CẢM BIẾN KHÔNG DÂY VÀ CHUẨN TRUYỀN THÔNG LORA 1.1 Giới thiệu chung 1.1.1 Mạng cảm biến khơng dây gì? 1.1.2 Các ứng dụng mạng cảm biến không dây 1.2 Kiến trúc ngăn xếp giao thức mạng cảm biến không dây 1.3 Tổng quan về Internet kết nối vạn vật 1.3.1 Internet of Things là gì? 1.3.2 Internet of Things là tương lai của thế giới 10 1.4 Một vài mơ hình ứng dụng về Internet of Things 10 1.4.1 Lưới điện thông minh 10 1.4.2 Nhà thông minh .11 1.6 Chuẩn truyền thông LoraWAN 12 1.6.1 Khái niệm LoraWAN 12 1.6.2 Cấu trúc mạng LoraWAN .13 1.6.3 Kiến trúc LoraWAN 14 1.6.4 Điều khiển truy cập theo kênh truyền 15 1.6.5 Nguyên lý hoạt động LoRa .15 CHƯƠNG THIẾT KẾ PHẦN CỨNG .17 2.1.Kit Arduino Uno R3 .17 2.1.1.Giới thiệu tổng quan 17 2.1.2.Thành phần phần cứng KIT .17 2.1.3 Arduino IDE 19 2.2 Module Lora SX1278 19 2.2.1 Module Lora SX1278 19 2.3 Cảm biến đo nhiệt độ, độ ẩm (DHT 11) 22 2.5 Module WIFI ESP8266 .25 2.6 Cảm biến ánh sáng (Tsl 2561) .27 2.7.1 Giải pháp thiết kế Node .28 2.7.1.1 Sơ đồ ghép nối phần cứng 28 2.7.1.2 Lưu đờ tḥt tốn Node 29 2.7.1.3 Sơ đồ nguyên lí thiết kế phần cứng 30 2.7.2 Giải pháp thiết kế GateWay .30 2.7.2.1 Sơ đồ ghép nối phần cứng 30 2.7.2.2 Lưu đờ tḥt tốn xử lý GateWay 31 2.7.2.3 Sơ đồ nguyên lí thiết kế phần cứng 32 2.8 Kết 33 CHƯƠNG XÂY DỰNG PHẦN MỀM 34 3.1 Mã ng̀n chương trình 34 3.1.1 Mã nguồn Node .34 3.1.2 Mã nguồn Gateway 36 3.2 Thingspeak Webserver lưu trữ dữ liệu giao diện Website người dùng .37 3.2.1.Truyền thông Internet .37 3.2.2.Giao diện người dùng 38 3.2.2.1 Hình ảnh trang chủ .38 3.2.2.2 Hình ảnh giao diện đăng nhập 39 3.2.2.3 Hình ảnh giao diện người dùng 39 3.2.3 Lưu đờ tḥt tốn .39 KẾT LUẬN 41 TÀI LIỆU THAM KHẢO .42 Chương TỔNG QUAN VỀ MẠNG CẢM BIẾN KHÔNG DÂY VÀ CHUẨN TRUYỀN THÔNG LORA 1.1 Giới thiệu chung 1.1.1 Mạng cảm biến không dây gì? Mạng cảm biến khơng dây (Wireless Sensor Network – WSN), mạng liên kết thiết bị tự vận hành, liên kết với kết nối sóng vơ tuyến (RF connection) trang bị cảm biến (sensor) để giám sát tham số một môi trường vật lý Trong WSN node mạng thường thiết bị đơn giản, nhỏ gọn, giá thành thấp, có số lượng lớn, thường phân bố một diện tích rộng, sử dụng nguồn lượng hạn chế (pin), có thời gian hoạt đợng lâu dài (vài tháng đến vài năm) hoạt đợng mơi trường khắc nghiệt (chất độc, ô nhiễm, nhiệt độ cao, v.v) Các node mạng thường có chức sensing (sensor node): cảm ứng, quan sát môi trường xung quanh như: nhiệt độ, độ ẩm, ánh sáng, âm thanh, độ rung, độ xạ, độ ô nhiễm, v.v., theo dõi hay định vị mục tiêu cố định di động Các node giao tiếp với qua mạng vô tuyến không dây phi thể thức (Wireless Ad-hoc network) truyền dữ liệu về trung tâm xử lý (base station) kỹ tḥt trùn đa chặng (multi-hop) Hình 1.1 Mơ hình đơn giản của mạng cảm biến khơng dây Mơ hình đơn giản WSN hình dung hình 1.1 Trong đó, nút cảm biến phân bớ một trường cảm biến Mỗi một nút cảm biến có khả thu thập dữ liệu trường cảm biến Các nút giao tiếp với qua mạng vô tuyến ad-hoc truyền dữ liệu về trung tâm xử lý kỹ thuật truyền đa chặng 1.1.2 Các ứng dụng mạng cảm biến không dây Cảm biến thường chia thành nhiều nhóm chức như: Cơ, hóa, nhiệt, điện, từ, sinh học, quang, chất lỏng, sóng siêu âm đưa bên ngồi môi trường độc hại, nhiệt độ cao, nhiễu lớn, môi trường hóa chất đợc hại, hệ thớng robot tự đợng hay hệ thớng nhà xưởng sản xuất…Nhờ đó, mà mạng cảm biến ứng dụng một cách rộng rãi nhiều lĩnh vực cuộc sống Các ứng dụng điển hình mạng cảm biến khơng dây bao gồm thu thập dữ liệu, theo dõi, giám sát y học… 1.2 Kiến trúc ngăn xếp giao thức mạng cảm biến không dây Kiến trúc ngăn xếp giao thức áp dụng cho WSN trình bày hình 1.2 Kiến trúc bao gồm lớp mặt phẳng quản lý Các mặt phẳng quản lý làm cho nút làm việc cùng theo cách có hiệu nhất, định tuyến dữ liệu mạng cảm biến di động chia sẻ tài nguyên giữa nút cảm biến Hình 1.2 Kiến trúc giao thức mạng cảm biến Mặt phẳng quản lý công suất: Quản lý cách cảm biến sử dụng nguồn lượng Ví dụ : Nút cảm biến tắt bộ thu sau nhận một tin Khi mức công suất nút cảm biến thấp, quảng bá sang nút cảm biến lân cận để thông báo mức lượng thấp khơng thể tham gia vào q trình định tuyến Mặt phẳng quản lý di động: Có nhiệm vụ phát đăng ký chuyển động nút cảm biến Các nút cảm biến giữ việc theo dõi xem nút nút hàng xóm chúng Mặt phẳng quản lý: Cân xếp nhiệm vụ cảm biến giữa nút một vùng quan tâm Không phải tất nút cảm biến đều thực nhiệm vụ cảm nhận cùng một thời điểm Lớp vật lý Lớp vật lý có trách nhiệm lựa chọn tần sớ, tạo tần sớ sóng mạng, phát tín hiệu điều chế dữ liệu Lớp liên kết liệu Lớp liên kết dữ liệu chịu trách nhiệm ghép dòng dữ liệu, phát khung dữ liệu, điều khiển lỗi điều khiển truy nhập kênh truyền Nó đảm bảo tin cậy kết nối điểm - điểm điểm - đa điểm mạng Lớp mạng Các nút cảm biến nằm rải rác với mật độ cao một trường cảm biến Lớp mạng mạng cảm biến thường thiết kế theo quy tắc sau đây: Vấn đề hiệu lượng vấn đề quan tâm Các mạng cảm biến chủ yếu tập trung dữ liệu Ngồi việc định tuyến, nút chuyển tiếp tổng hợp dữ liệu từ nút lân cận thông qua việc xử lý cục bộ Lớp giao vận Sự phát triển giao thức lớp giao vận mợt nhiệm vụ đầy thách thức nút cảm biến bị ảnh hưởng những hạn chế về phần cứng lượng bộ nhớ hạn chế Do đó, nút cảm biến khơng thể lưu trữ một lượng lớn dữ liệu một máy chủ mạng Internet Lớp ứng dụng Lớp ứng dụng bao gồm ứng dụng chính mợt sớ chức quản lý Ngồi chương trình ứng dụng cụ thể cho ứng dụng chức quản lý xử lý truy vấn nằm lớp 1.3 Tổng quan về Internet kết nới vạn vật 1.3.1 Internet of Things là gì? Mạng lưới vạn vật kết nối Internet Mạng lưới thiết bị kết nối Internet viết tắt IoT (tiếng Anh: Internet of Things) một kịch giới, mà đồ vật, người cung cấp mợt định danh riêng mình, tất có khả trùn tải, trao đởi thơng tin, dữ liệu qua một mạng mà không cần đến tương tác trực tiếp giữa người với người, hay người với máy tính IoT phát triển từ hội tụ công nghệ không dây, công nghệ vi điện tử Internet Nói đơn giản mợt tập hợp thiết bị có khả kết nối với nhau, với Internet với giới bên ngồi để thực mợt cơng việc Hình 1.3 Hình ảnh mơ tả Internet of Things 1.3.2 Internet of Things là tương lai của giới Ngay sau nhận ý cộng đồng, IoT cho thấy tiềm với những số liệu đáng kinh ngạc Cisco, nhà cung cấp giải pháp thiết bị mạng hàng đầu dự báo: Đến năm 2020, có khoảng 50 tỷ đờ vật kết nối Và không kể tới một thương hiệu Việt Nam Bkav đạt những thành tựu đáng ghi nhận về Internet of Things Hệ thống nhà thông minh SmartHome Bkav một tổ hợp thiết bị thông minh ngơi nhà, đều kết nới Internet tự động điều chỉnh điều khiển qua smartphone Bên cạnh đó, ơng lớn Google, Apple, Samsung, Microsoft không hề giấu diếm ý định xâm nhập thị trường này, hứa hẹn một cuộc cạnh tranh mạnh mẽ thời gian tới đây, đưa kỷ nguyên IoT đến sớm với người 1.4 Một vài mô hình ứng dụng về Internet of Things 1.4.1 Lưới điện thơng minh Lưới điện thơng minh (còn gọi hệ thớng điện thơng minh) hệ thớng điện có sử dụng công nghệ thông tin truyền thông để tối ưu việc truyền dẫn, phân phối điện giữa nhà sản xuất hộ tiêu thụ, hợp sở hạ tầng điện với sở hạ tầng thông tin liên lạc Có thể coi hệ thớng điện thơng minh gờm có lớp: lớp hệ thớng điện thơng thường bên lớp 2- hệ thớng thơng tin, trùn thơng, đo lường Hình 1.4 Mơ hình hệ thớng lưới điện thơng minh 1.4.2 Nhà thông minh Nhà thông minh (Smart Home) một nhà/căn hộ trang bị hệ thống tự động tiên tiến dành cho điều khiển đèn chiếu sáng, nhiệt độ, truyền thông đa phương tiện, an ninh, rèm cửa, cửa nhiều tính khác nhằm mục đích làm cho c̣c sớng ngày tiện nghi, an tồn góp phần sử dụng hợp lý ng̀n tài ngun Hình 1.5 Mơ hình hệ thớng nhà thơng minh 1.6 Chuẩn truyền thông LoraWAN 1.6.1 Khái niệm LoraWAN LoRa viết tắt Long Range Radio nghiên cứu phát triển Cycleo sau mua lại công ty Semtech năm 2012 Với công nghệ này, truyền dữ liệu với khoảng cách lên hàng km mà không cần mạch khuếch đại cơng suất; từ giúp tiết kiệm lượng tiêu thụ truyền/nhận dữ liệu Do đó, LoRa áp dụng rộng rãi ứng dụng thu thập dữ liệu sensor network sensor node gửi giá trị đo đạc về trung tâm cách xa hàng km hoạt động thời gian dài trước cần thay pin Một đổi Semtech, LoRa Technology mang lại một pha trộn hấp dẫn tầm xa, tiêu thụ lượng thấp truyền dữ liệu an tồn Các mạng cơng cợng mạng riêng sử dụng cơng nghệ cung cấp phạm vi phủ sóng lớn so với mạng di đợng có Dễ dàng kết nới với sở hạ tầng có cung cấp mợt giải pháp để phục vụ ứng dụng IoT sử dụng pin LoRa lớp vật lý điều chế không dây sử dụng để tạo liên kết truyền thông tầm xa Nhiều hệ thống không dây kế thừa sử dụng điều chế chuyển đổi độ lệch tần số (FSK) lớp vật lý mợt điều chế hiệu để đạt công suất thấp LoRa dựa điều chế phở tán xạ chirp, trì đặc tính lượng thấp tương tự điều chế FSK làm tăng đáng kể phạm vi truyền thông Ứng dụng LoraWAN: Smart city Wireless sensor network Smart home Internet Of Thing Hệ thống nông nghiệp thông minh 1.6.2 Cấu trúc mạng LoraWAN Mợt thiết bị hỗ trợ LoRaWan có cấu trúc software sau: Hình 1.6 Các cấu trúc Lora Thiết bị đầu cuối định hướng hai chiều (Class A): Thiết bị đầu cuối lớp A cho phép trùn thơng hai chiều, theo thiết bị truyền dẫn đường lên theo sau hai cửa sổ thu nhận đường xuống ngắn Các khe truyền dẫn lên kế hoạch thiết bị đầu cuối dựa nhu cầu trùn thơng riêng với mợt biến thể nhỏ dựa sở thời gian ngẫu nhiên (ALOHA-loại giao thức) Hoạt động Class A hệ thống thiết bị đầu cuối thấp cho ứng dụng mà cần truyền thông đường xuống từ máy chủ sau thiết bị đầu cuối gửi một đường truyền lên Liên lạc đường xuống từ máy chủ thời gian khác phải chờ đường lên Thiết bị đầu cuối định hướng hai chiều với khe tiếp nhận theo lịch trình (Lớp B): Ngồi cửa sở nhận ngẫu nhiên Class A, thiết bị lớp B mở cửa sổ nhận thêm vào thời gian theo lịch Để thiết bị đầu cuối mở cửa sổ nhận vào thời gian, nhận dẫn đờng bợ hóa thời gian từ gateway Điều cho phép máy chủ biết thiết bị đầu cuối nghe Thiết bị đầu cuối định hướng hai chiều với khe tiếp nhận cực đại (Class C): Thiết bị đầu cuối Class C gần liên tục mở cửa sở nhận, đóng trùn 10 uint16_t AnhSang = tsl.getLuminosity(TSL2561_VISIBLE); if (isnan(NhietDo) || isnan(DoAm) ) { Serial.println("Failed to read from DHT sensor!"); return; } String Humidity=String(NhietDo); String Temperature=String(DoAm); String Lux=String(AnhSang); //String data="id=1&NhietDo="+Humidity+"&(DoAm="+Temperature+"&AnhSang="+Lu x+""; // Serial.println(data); Data[0]=NhietDo; Data[1]=DoAm; Data[2]=AnhSang; Serial.write(Data,3); delay(2000); } 32 NODE 2: #include #define M0 #define M1 #define TX #define RX #define AUX_PIN A0 #define time_out 100 SoftwareSerial Lora(RX, TX); volatile byte do_am_kk = 25; volatile byte nhiet_do = 27; volatile byte do_am_dat = 29; volatile unsigned int cuong_do_as = 3579; volatile bool tt_1 = true, tt_2 = true, tt_3 = true, tt_4 = true, tt_5 = true; volatile bool tt_lam_kho, tt_m_bom, tt_quat, tt_che, tt_phan; volatile bool tt_tx = false, tt_nh = false; volatile uint8_t yc = 9, len; volatile uint8_t data[6]; unsigned long time0; bool AUX_HL; bool docAUX() { int val = analogRead(AUX_PIN); 33 if (val < 50) { AUX_HL = LOW; } else { AUX_HL = HIGH; } return AUX_HL; } void doiAUX() { uint8_t cnt = 0; while ((docAUX() == LOW) && (cnt++ < time_out)) { delay(10); } } void xoabd() { while (Lora.available()) { Lora.read(); } } void gui_tt() 34 { uint8_t tt[6] = {0, tt_1, tt_2, tt_3, tt_4, tt_5}; Serial.println("Done TT."); doiAUX(); xoabd(); Lora.write(tt, 6); delay(10); } void gui_data() { byte sang_cao = ((cuong_do_as >> 8) & 0xFF); byte sang_thap = (cuong_do_as & 0xFF); uint8_t dt[6] = {1, do_am_kk, nhiet_do, do_am_dat, sang_cao, sang_thap}; Serial.println("Done DATA."); doiAUX(); xoabd(); Lora.write(dt, 6); delay(10); } void nhan_data(uint8_t* doc_tu_bd, uint8_t do_dai) { uint8_t idx; for (idx = 0; idx < do_dai; idx++) { *(doc_tu_bd + idx) = Lora.read(); 35 } } void nhan_tt() { nhan_data(data, len); if (data[0] == 21) { tt_che = data[1]; tt_m_bom = data[2]; tt_quat = data[3]; tt_lam_kho = data[4]; tt_phan = data[5]; doiAUX(); //xoabd(); Lora.write(37); doiAUX(); Serial.print(tt_che); Serial.print(" "); Serial.print(tt_m_bom); Serial.print(" "); Serial.print(tt_quat); Serial.print(" "); Serial.print(tt_lam_kho); Serial.print(" "); Serial.println(tt_phan); } 36 } void setup() { // put your setup code here, to run once: pinMode(M0, OUTPUT); pinMode(M1, OUTPUT); pinMode(TX, OUTPUT); pinMode(RX, INPUT); digitalWrite(M0, LOW); digitalWrite(M1, LOW); //pinMode(AUX_PIN, INPUT); Lora.begin(9600); Serial.begin(9600); delay(50); Serial.println("Bat Dau: "); delay(50); xoabd(); time0 = millis(); } void loop() { // put your main code here, to run repeatedly: while (Lora.available() > 0) { len = Lora.available(); if (len == 1) { yc = Lora.read(); 37 if (yc == 1) { //1 gui_tt(); doiAUX(); //Serial.println("Done TT!") ; } else if (yc == 2) { //0 gui_data(); doiAUX(); // Serial.println("Done Data!") ; } else if (yc == 3) { tt_tx = true; tt_nh = true; Serial.print("TT_TX: ") ; Serial.println(tt_tx) ; doiAUX(); byte b=31; xoabd(); Lora.write(b); doiAUX(); delay(10); //xoabd(); } 38 else if (yc == 4) { tt_tx = false; Serial.print("TT_TX: ") ; Serial.println(tt_tx) ; doiAUX(); byte t = 34; //xoabd(); Lora.write(t); doiAUX(); delay(10); } } else if ((len == 6)&&tt_nh) { nhan_tt(); tt_nh = false; } else Lora.write("lai"); } } 39 3.1.2 Mã nguồn Gateway #include #include #define Led HTTPClient http; byte Data[3],NhietDo,DoAm,AnhSang; void setup(void) { // Khoi dong serial de debug pinMode(Led,OUTPUT); Serial.begin(9600); WiFi.mode(WIFI_STA); // Ket noi voi WiFi WiFi.begin("xxx","12345678"); while (WiFi.status() != WL_CONNECTED) { digitalWrite(Led,digitalRead(Led) == HIGH ? LOW : HIGH); delay(500); } } void loop() { //Đọc thông tin về 40 if(Serial.available()) { Serial.readBytes(Data,3); digitalWrite(Led,digitalRead(Led) == HIGH ? LOW : HIGH); //Tách dữ liệu từ mảng NhietDo = Data[0]; DoAm = Data[1]; AnhSang = Data[2]; // String chuoi = "Nhiet do: " + String(NhietDo) + " Do am: " + String(DoAm) + " AnhSang: " + String(AnhSang); String Data = "http://api.thingspeak.com/update? api_key=JSIPNSTNZCP6QREK&field1="+String(NhietDo) +"&field2="+String(DoAm)+"&field3="+String(AnhSang); http.begin(Data); int httpCode = http.GET();//Gửi truy vấn http.end();//Đóng kết nới } } 3.2 Thingspeak Webserver lưu trữ liệu và giao diện Website người dùng 3.2.1.Truyền thông Internet Ta thu thập dữ liệu từ KIT, cần mợt trang web để theo dõi từ xa Với ví dụ websever, ta sử dụng KIT một máy chủ web, nhiên ta khơng thể làm nhiều với dung lượng Ram KIT Vì vậy, bây giờ cần có mợt cơng cụ hỗ trợ để lưu trữ dữ liệu lâu dài hiển thị dữ liệu một cách trực quan cho người dùng Có mợt sớ trang web cung cấp máy chủ miễn phí mà ta sử dụng : Xilely, 2lemetry, exosite, carritots, grovestream, thingspeak, opennenergymonitor Ta chọn Thingspeak cho đề tài Thingspeak dễ dàng đăng ký dễ dàng sử dụng với 41 người bắt đầu với hệ thống lệnh API đơn giản Nó lưu trữ dữ liệu lâu hiển thị dữ liệu cảm biến đồ thị trực quan * Sử dụng Thingspeak: - Đăng ký một tài khoản https://thingspeak.com/users/sign_up, tạo channel để lưu dữ liệu - Sau tạo channel, ý thông tin quan trọng channel API Keys (quyền đọc/ghi dữ liệu) - Gửi dữ liệu lên Thingspeak sau chạy code, Thingspeak nhận data 3.2.2.Giao diện người dùng 3.2.2.1 Hình ảnh trang chủ Hình 3.0 Giao diện trang chủ 42 3.2.2.2 Hình ảnh giao diện đăng nhập Hình 3.1 Giao diện đăng nhập 3.2.2.3 Hình ảnh giao diện người dùng Hình 3.2 Giao diện hiển thị dữ liệu 3.2.3 Lưu đồ thuật toán Lưu đồ thuật toán : 43 Hình 3.3 Lưu đồ thuật toán Giải thích lưu đờ tḥt tốn : Sau cấp ng̀n nạp chương trình cho vi điều khiển thành cơng Vi điều khiển tiến hành cấu hình Ethernet kết nới internet, sau kết nối internet thành công vi điều khiên tiến hành gửi dữ liệu lên Webserver thông qua chuẩn trùn thơng Qúa trình lặp lặp lại 44 KẾT LUẬN 45 TÀI LIỆU THAM KHẢO [1] http://arduino.vn/ [2] https://cdn-shop.adafruit.com/datasheets/TSL2561.pdf [3] http://cem.gov.vn/Portals/0/2016/TinBai/Chuong%205.pdf [4] https://toc.123doc.org/document/1004260-hinh-3-2-cam-bien-nhiet- do-do-am-dht11.htm [5] http://www.semtech.com/images/datasheet/sx1276_77_78_79.pdf 46 ... 1.7 Các lớp LoraWAN Trong cấu trúc LoraWan bao gờm Lora Mac (Class A, Class B, Class C) hoạt động dựa lớp PHY chip Lora Ở vùng khác giới thiết bị LoraWan phải cấu hình cho chip Lora hoạt đợng... Hệ thống nông nghiệp thông minh 1.6.2 Cấu trúc mạng LoraWAN Một thiết bị hỗ trợ LoRaWan có cấu trúc software sau: Hình 1.6 Các cấu trúc Lora Thiết bị đầu cuối định hướng hai chiều (Class... ng̀n tài ngun Hình 1.5 Mơ hình hệ thớng nhà thơng minh 1.6 Chuẩn truyền thông LoraWAN 1.6.1 Khái niệm LoraWAN LoRa viết tắt Long Range Radio nghiên cứu phát triển Cycleo sau mua lại công ty