Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 76 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
76
Dung lượng
5,47 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC BÁCH KHOA TRƢƠNG HOÀI NAM SƠN THIẾT KẾ VÀ THỬ NGHIỆM CÁC GIẢI PHÁP THU THẬP NĂNG LƢỢNG CHO THIẾT BỊ DI ĐỘNG ĐEO TAY CĨ TRUYỀN DẪN KHƠNG DÂY DIỆN RỘNG LoRA LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA Đà Nẵng - Năm 2018 ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC BÁCH KHOA TRƢƠNG HOÀI NAM SƠN THIẾT KẾ VÀ THỬ NGHIỆM CÁC GIẢI PHÁP THU THẬP NĂNG LƢỢNG CHO THIẾT BỊ DI ĐỘNG ĐEO TAY CÓ TRUYỀN DẪN KHÔNG DÂY DIỆN RỘNG LoRA Chuyên ngành : Kỹ thuật điều khiển Tự động hóa Mã số : 60 52 02 16 LUẬN VĂN THẠC SĨ Ngƣời hƣớng dẫn khoa học: TS Lê Quốc Huy Đà Nẵng - Năm 2018 LỜI CAM ĐOAN Tôi cam đoan cơng trình nghiên cứu tơi Các số liệu, kết nêu luận văn trung thực chƣa đƣợc công bố công trình khác Đà Nẵng, ngày 12 tháng năm 2018 Tác giả luận án TRƢƠNG HOÀI NAM SƠN THIẾT KẾ VÀ THỬ NGHIỆM CÁC GIẢI PHÁP THU THẬP NĂNG LƢỢNG CHO THIẾT BỊ ĐEO TAY CĨ TRUYỀN DẪN KHƠNG DÂY DIỆN RỘNG LoRa Học viên: Trƣơng Hoài Nam Sơn Chuyên ngành: Kỹ thuật Điều khiển Tự động hóa Mã số: 60520216 Khóa: 33PFIEV Trƣờng Đại học Bách khoa-ĐHĐN Tóm tắt- Tại Pháp, số nhà cung cấp dịch vụ mạng bắt đầu triển khai mạng lƣới LoRa cho thị trƣờng IoT Trong khuôn khổ này, mục tiêu dự án tạo nguyên mẫu thiết bị đeo để giám sát ngƣời cao tuổi hoạt động hàng ngày họ dựa công nghệ Internet-of-Things (IoT) Thiết bị cho phép lai hợp vị trí (ngồi trời nhà), phù hợp cho ngƣời cao tuổi trƣờng hợp khẩn cấp (ví dụ: trƣờng hợp điển hình ngƣời già bị bệnh Alzheimer bị lạc thành phố) Bộ định vị tồn cầu (GPS), mơ đun WiFi Bluetooth, tất đƣợc bao gồm thiết bị đeo nhất, đƣợc thiết kế cho ngƣời cao tuổi sử dụng để giảm thiểu tiêu thụ lƣợng Việc sử dụng hệ thống thu thập lƣợng khác (máy phát điện nhiệt, pin lƣợng mặt trời) để mở rộng tự chủ thiết bị Tác giả nghiên cứu giải pháp thu thập lƣợng để kéo dài tuổi thọ pin thiết bị Một vài kỹ thuật thu hoạch đƣợc đánh giá kết hợp Từ khóa – thu thập lƣợng, lƣợng mặt trời, piezoelectric, lƣợng nhiệt điên, quản lý lƣợng ENERGY HARVESTING FOR A WEARABLE IOT DEVICE USING LORA TECHNOLOGY Abstract- In France, several network providers have started to deploy a LoRa network for IoT market In this framework, the objective of this project is the creation of a prototype of a wearable device enabling the monitoring of elderly people during their everyday activities based on Internetof-Things (IoT) technologies The device will enable hybrid (outdoor and indoor) localization, allowing elderly people to be located in case of emergency (e.g typical case of an old person suffering of Alzheimer’s disease who gets lost in town) Localization will be based on the smart use of a variety of data sources, such Global Positioning System (GPS) receiver, WiFi and Bluetooth modules, which will be all included in a single wearable device, designed for use by elderly people and to minimize energy consumption The use of various energy harvesting systems (thermo-electric generator, mechanical or solar cell) to extend the device autonomy The author were dedicated to the study of energy harvesting solution to extend the device battery life Several harvesting techniques will be evaluated and combined Key words – energy harvesting, photovoltaic, piezoelectric, thermoelectric, power management MỤC LỤC TRANG PHỤ BÌA LỜI CAM ĐOAN MỤC LỤC DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH MỞ ĐẦU 1 Lý chọn đề tài Mục tiêu nghiên cứu Đối tƣợng phạm vi nghiên cứu Phƣơng pháp nghiên cứu Ý nghĩa khoa học thực tiễn Tổng quan nghiên cứu nghiên cứu thu thập lƣợng Cấu trúc luận văn CHƢƠNG 1.TỔNG QUAN VỀ THU THẬP NĂNG LƢỢNG 1.1 Năng lƣợng gì? 1.2 Tại cần thu thập lƣợng? 1.3 Các nguồn lƣợng sẵn có thƣờng đƣợc khai thác cho thu thập lƣợng CHƢƠNG CÁC PHƢƠNG PHÁP THU THẬP NĂNG LƢỢNG 2.1 Thu thập lƣợng mặt trời 2.1.1 Đặc tính pin mặt trời 2.1.2 Đặc tính Mơ đun 2.1.3 Hệ thống quang điện 10 2.1.4 Bộ Điều khiển sạc 11 2.1.5 Bộ chuyển đổi DC-DC điểm công suất cực đại (MPTT) 12 2.2 Thu thập lƣợng rung động 13 2.2.1 Vật liệu 14 2.2.2 Mơ hình 14 2.3 Thu thập lƣợng nhiệt điện 16 2.3.1 Hiệu ứng Seebeck 17 2.3.2 Máy phát nhiệt điện 17 2.3.3 Vật liệu 19 CHƢƠNG QUẢN LÝ NĂNG LƢỢNG 21 3.1 Quản lý lƣợng 21 3.2 Hệ thống lƣu trữ 23 CHƢƠNG NGHIÊN CỨU THỬ NGHIỆM CHO THIẾT BỊ ĐEO TAY CĨ TRUYỀN DẪN KHƠNG DÂY DIỆN RỘNG LoRa 25 4.1 Đo lƣợng tiêu thụ thiết bị đeo tay 26 4.2 Cấu trúc hệ thống thu thập lƣợng 27 KẾT LUẬN VÀ KIẾN NGHỊ 44 DANH MỤC TÀI LIỆU THAM KHẢO PHỤ LỤC QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN (bản sao) DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT TEG Thermoelectric Generator DANH MỤC CÁC BẢNG Số hiệu Tên bảng bảng Trang 1.1 Nguồn lƣợng thu thập 1.2 Nguồn rung động 2.1 Mật độ lƣợng công nghệ thu hoạch lƣợng khác 4.1 Ngƣỡng điện áp sử dụng chân VS1 VS2 30 4.2 Bảng ngƣỡng điện áp sử dụng D0,D1 38 DANH MỤC CÁC HÌNH Số hiệu Tên hình hình Trang 1.1 Tổng quan hệ thống thu thập lƣợng 1.2 Tải điển hình (a) Biểu đồ thể đặc tính I-V tế bào lƣợng mặt trời lý tƣởng bóng tối (tối hơn, đƣờng cong phía trên) dƣới 2.1 ánh sáng (nhẹ, đƣờng cong dƣới) Các yếu tố điền tỷ lệ khu vực hình chữ nhật (b) Mạch tƣơng đƣơng cho pin mặt trời lý tƣởng, bao gồm nguồn dịng IL diode qua ID dịng thơng Dịng điện cịn lại, I, chạy qua tải 2.2 Thiết kế pin lƣợng mặt trời silicon đơn tinh thể 10 2.3 Kết nối pin thành mô đun 10 2.4 (a) Chuyển mạch nối tiếp (b) Bộ điều chỉnh chuyển mạch shunt 12 2.5 (a) Buck (b) Boost DC-DC 13 2.6 Bố cục chung vật liệu piezoelectric 14 2.7 Bố cục chung dao động piezoelectric 16 2.8 Bố cục chung dao động piezoelectric với cƣỡng 16 2.9 Hiệu ứng Seebeck: điện áp tạo chênh lệch nhiệt độ điểm nối 17 2.10 Bố trí chung cặp nhiệt điện 18 2.11 Máy phát nhiệt điện 18 3.1 Sơ đồ khối vi điều khiển cơng suất thấp 23 3.2 Dạng tiêu thụ dịng điện điển hình cho thu phát khơng dây 23 4.1 Sơ đồ cấu trúc ứng dụng 25 4.2 Năng lƣợng tiêu thụ chế độ hoạt động 26 4.3 Năng lƣợng tiêu thụ chế độ ngủ 26 4.4 Cấu trúc đơn 27 4.5 Cấu trúc kép 28 Các khối LTC3108 với mạch điều khiển sạc hai 4.6 MOSFET bên cung cấp luồng lƣợng kép: có lƣợng thu thập (VIN ≥ 20mV), COUT đƣợc nạp vào điện áp điều chỉnh (1) trƣớc CSTORE đƣợc sạc (2) Khi khơng có lƣợng thu hoạch đƣợc nữa, COUT đƣợc tính CSTORE (3) 29 Số hiệu Tên hình hình 4.7 4.8 4.9 Bộ chuyển đổi cặp nhiệt điện (TEG) Điện áp thu thập nhiệt điện TEG (40mmx40mm) thông qua nhiệt độ thể với môi trƣờng xung quanh V=147 mV, I=38 uA Sơ đồ nguyên lý mạch thu lƣợng nhiệt điện Trang 31 31 32 Kết thu thập lƣợng nhiệt điện dựa chênh lệch nhiệt 4.10 độ thể ngƣời môi trƣờng xung quanh không kết 32 nối tải 4.11 Thu lƣợng TEG tạo VOUT =3.3V không kết nối tải 33 4.12 Tấm pin mặt trời 33 4.13 Sơ đồ nguyên lý thu lƣợng mặt trời 34 4.14 Kết thu lƣợng mặt trời tạo VOUT=3.3V sạc tụ 680uF 16V không kết nối tải 34 4.15 Thu thập lƣợng mặt trời để cung cấp cho thiết bị IoT sử dụng công nghệ truyền không dây diện rộng LoRa 35 Các khối LTC3588 với mạch điều khiển BUCK hai 4.16 MOSFET bên để tăng hiệu cung cấp lƣợng cho tụ điện đầu 36 4.17 Mối quan hệ điện áp VIN, VIN2, VCAP 37 4.18 Bộ chuyển đổi Piezoelectric 39 4.19 Điện áp thu thập từ modul piezo dựa lực nhấn làm biến dạng vật thể 40 4.20 Sơ đồ nguyên lý thu lƣợng Piezoelectric 40 4.21 Điện áp đo chân VIN LTC3588 41 4.22 Sơ đồ nguyên lý thu lƣợng Piezo tạo điện áp VOUT=3.3V 42 4.23 Thu thập lƣợng Piezoelectric tạo VOUT=3.3V không kết nối tải 42 uint8_t seq; // can add other fields such as LoRa mode, }; sx1272config my_sx1272config; #endif char *ftoa(char *a, double f, int precision) { long p[] = {0,10,100,1000,10000,100000,1000000,10000000,100000000}; char *ret = a; long heiltal = (long)f; itoa(heiltal, a, 10); while (*a != '\0') a++; *a++ = '.'; long desimal = abs((long)((f - heiltal) * p[precision])); itoa(desimal, a, 10); return ret; } //byte ledPin[]={2,3,4,5,6}; //byte pinCount; Khối cài đặt chƣơng trình void setup () { int e; // for the temperature sensor pinMode(TEMP_PIN_READ, INPUT); //delay(3000); Serial.begin(38400); PRINT_CSTSTR("%s","Simple LoRa Power Battery\n"); #ifdef ARDUINO_AVR_PRO PRINT_CSTSTR("%s","Arduino Pro Mini detected\n"); #endif sx1272.ON(); #ifdef WITH_EEPROM // get config from EEPROM EEPROM.get(0, my_sx1272config); // found a valid config? if (my_sx1272config.flag1==0x12 && my_sx1272config.flag2==0x34) { PRINT_CSTSTR("%s","Get back previous sx1272 config\n"); // set sequence number for SX1272 library sx1272._packetNumber=my_sx1272config.seq; PRINT_CSTSTR("%s","Using packet sequence number of "); PRINT_VALUE("%d", sx1272._packetNumber); PRINTLN;} else { // otherwise, write config and start over my_sx1272config.flag1=0x12; my_sx1272config.flag2=0x34; my_sx1272config.seq=sx1272._packetNumber;} #endif // Set transmission mode and print the result e = sx1272.setMode(loraMode); PRINT_CSTSTR("%s","Setting Mode: state "); PRINT_VALUE("%d", e); PRINTLN; // enable carrier sense sx1272._enableCarrierSense=true; #ifdef LOW_POWER // TODO: with low power, when setting the radio module in sleep mode // there seem to be some issue with RSSI reading sx1272._RSSIonSend=false; #endif // Select frequency channel e = sx1272.setChannel(DEFAULT_CHANNEL); PRINT_CSTSTR("%s","Setting Channel: state "); PRINT_VALUE("%d", e); PRINTLN; #ifdef PABOOST sx1272._needPABOOST=true; powerLevel='x'; #endif e= sx1272.setPower(powerLevel); e = sx1272.setPowerDBM((uint8_t)MAX_DBM); PRINT_CSTSTR("%s","Setting Power: state "); PRINT_VALUE("%d", e); PRINTLN; // Set the node address and print the result e = sx1272.setNodeAddress(node_addr); PRINT_CSTSTR("%s","Setting node addr: state "); PRINT_VALUE("%d", e); PRINTLN; // Print a success message PRINT_CSTSTR("%s","SX1272 successfully configured\n"); delay(500); } Khối chƣơng trình void loop (void) { long startSend; long endSend; uint8_t app_key_offset=0; int e; //digitalWrite(TEMP_PIN_POWER,HIGH); // security? //delay(200); // Measure Voltage int value = analogRead(TEMP_PIN_READ); delay(200); // change here how the temperature should be computed depending on your sensor type // temp = 2*value*TEMP_SCALE/1024.0; PRINT_CSTSTR("%s","Reading "); PRINT_VALUE("%d", value); PRINTLN; PRINT_CSTSTR("%s","Temp is "); PRINT_VALUE("%f", temp); PRINTLN; app_key_offset = sizeof(my_appKey); // set the app key in the payload memcpy(message,my_appKey,app_key_offset); uint8_t r_size; // then use app_key_offset to skip the app key ftoa(float_str,temp,2); // this is for testing, uncomment if you just want to test, without a real temp sensor plugged //strcpy(float_str, "21.55567"); r_size=sprintf((char*)message+app_key_offset,"\\!#%d#%s",field_index,float_str); PRINT_CSTSTR("%s","Sending "); PRINT_STR("%s",(char*)(message+app_key_offset)); PRINTLN; PRINT_CSTSTR("%s","Real payload size is "); PRINT_VALUE("%d", r_size); PRINTLN; int pl=r_size+app_key_offset; sx1272.CarrierSense(); startSend=millis(); // indicate that we have an appkey sx1272.setPacketType(PKT_TYPE_DATA | PKT_FLAG_DATA_WAPPKEY); // Send message to the gateway and print the result // with the app key if this feature is enabled #ifdef WITH_ACK int n_retry=NB_RETRIES; { e = sx1272.sendPacketTimeoutACK(DEFAULT_DEST_ADDR, message, pl); if (e==3) PRINT_CSTSTR("%s","No ACK"); n_retry ; if (n_retry) PRINT_CSTSTR("%s","Retry"); else PRINT_CSTSTR("%s","Abort"); } while (e && n_retry); #else e = sx1272.sendPacketTimeout(DEFAULT_DEST_ADDR, message, pl); #endif endSend=millis(); #ifdef WITH_EEPROM // save packet number for next packet in case of reboot my_sx1272config.seq=sx1272._packetNumber; EEPROM.put(0, my_sx1272config); #endif PRINT_CSTSTR("%s","LoRa pkt size "); PRINT_VALUE("%d", pl); PRINTLN; PRINT_CSTSTR("%s","LoRa pkt seq "); PRINT_VALUE("%d", sx1272.packet_sent.packnum); PRINTLN; PRINT_CSTSTR("%s","LoRa Sent in "); PRINT_VALUE("%ld", endSend-startSend); PRINTLN; PRINT_CSTSTR("%s","LoRa Sent w/CAD in "); PRINT_VALUE("%ld", endSend-sx1272._startDoCad); PRINTLN; PRINT_CSTSTR("%s","Packet sent, state "); PRINT_VALUE("%d", e); PRINTLN; PRINT_CSTSTR("%s","Remaining ToA is "); PRINT_VALUE("%d", sx1272.getRemainingToA()); PRINTLN; #ifdef LOW_POWER PRINT_CSTSTR("%s","Switch to power saving mode\n"); e = sx1272.setSleepMode(); if (!e) PRINT_CSTSTR("%s","Successfully switch LoRa module in sleep mode\n"); else PRINT_CSTSTR("%s","Could not switch LoRa module in sleep mode\n"); FLUSHOUTPUT delay(50); nCycle = idlePeriodInMin*60/LOW_POWER_PERIOD + random(2,4); for (int i=0; i