สารบัญ:
- ขั้นตอนที่ 1: ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์
- ขั้นตอนที่ 2: การกำหนดค่าเซ็นเซอร์ไร้สายและตัวรับสัญญาณ Zigmo โดยใช้ XCTU
- ขั้นตอนที่ 3: การวิเคราะห์ค่าอุณหภูมิและการสั่นสะเทือนแบบไร้สายโดยใช้ Labview Utility
- ขั้นตอนที่ 4: การกำหนดการตั้งค่า DHCP/สแตติก IP โดยใช้ Captive Portal
- ขั้นตอนที่ 5: บันทึกการตั้งค่า WiFi โดยใช้ Captive Portal
- ขั้นตอนที่ 6: เผยแพร่การอ่านเซ็นเซอร์ไปยัง UbiDots
- ขั้นตอนที่ 7: การแสดงภาพข้อมูล
วีดีโอ: เริ่มต้นใช้งานเซ็นเซอร์อุณหภูมิและการสั่นสะเทือนแบบไร้สายระยะไกล: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
บางครั้งการสั่นสะเทือนก็เป็นสาเหตุของปัญหาร้ายแรงในการใช้งานหลายอย่าง ตั้งแต่เพลาเครื่องและตลับลูกปืนไปจนถึงประสิทธิภาพของฮาร์ดดิสก์ การสั่นสะเทือนทำให้เครื่องเสียหาย การเปลี่ยนก่อนกำหนด ประสิทธิภาพต่ำ และกระทบต่อความแม่นยำอย่างมาก การตรวจสอบและการวิเคราะห์การสั่นสะเทือนในเครื่องเป็นครั้งคราวสามารถแก้ปัญหาความเสียหายและการสึกหรอของชิ้นส่วนเครื่องจักรได้
ในคำแนะนำนี้ เราจะทำงานกับเซ็นเซอร์การสั่นสะเทือนและอุณหภูมิแบบไร้สายระยะไกล IoT เหล่านี้เป็นเซ็นเซอร์ระดับอุตสาหกรรมที่มีการใช้งานอย่างกว้างขวางเช่น
- งานโลหะ
- การผลิตไฟฟ้า
- การขุด
- อาหารและเครื่องดื่ม
ดังนั้นในคำแนะนำนี้เราจะดำเนินการต่อไปนี้:
- การกำหนดค่าเซ็นเซอร์ไร้สายโดยใช้ XCTU และ Labview UI
- รับค่าการสั่นสะเทือนจากเซ็นเซอร์
- ทำความเข้าใจการทำงานของอุปกรณ์ xbee และโปรโตคอล xbee
- การกำหนดค่าข้อมูลรับรอง WiFi และการกำหนดค่า IP โดยใช้แคปทีฟพอร์ทัล
ขั้นตอนที่ 1: ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์
ข้อกำหนดฮาร์ดแวร์
- เซนเซอร์ตรวจจับการสั่นสะเทือนและอุณหภูมิแบบไร้สาย
- ตัวรับ Zigmo
- อุปกรณ์ ESP32 BLE/ WiFi
ข้อกำหนดซอฟต์แวร์
- Arduino IDE
- ยูทิลิตี้ LabView
ขั้นตอนที่ 2: การกำหนดค่าเซ็นเซอร์ไร้สายและตัวรับสัญญาณ Zigmo โดยใช้ XCTU
อุปกรณ์ IoT แต่ละตัวต้องการโปรโตคอลการสื่อสารเพื่อวางอุปกรณ์ไว้บนคลาวด์และตั้งค่าอินเทอร์เฟซไร้สายระหว่างอุปกรณ์ต่างๆ
ที่นี่เซ็นเซอร์ไร้สายและตัวรับสัญญาณ Zigmo ใช้พลังงานต่ำและโซลูชัน XBee ระยะไกล XBee ใช้โปรโตคอล ZigBee ที่ระบุการทำงานในย่านความถี่ ISM 902 ถึง 928 MHz
Xbee สามารถกำหนดค่าได้โดยใช้ซอฟต์แวร์ XCTU
- ค้นหาอุปกรณ์ Xbee หรือเพิ่มอุปกรณ์ Xbee ใหม่โดยคลิกที่ไอคอนด้านซ้ายบน
- อุปกรณ์จะแสดงรายการบนแผงด้านซ้ายมือ
- ดับเบิลคลิกที่อุปกรณ์เพื่อดูการตั้งค่า
- ตอนนี้คลิกที่ไอคอนคอนโซลที่มุมบนขวา
- คุณสามารถเห็นค่าที่มาบนคอนโซลเอาท์พุต
- เราจะได้เฟรมที่มีความยาว 54 ไบต์
- ไบต์เหล่านี้จะถูกจัดการเพิ่มเติมเพื่อรับค่าจริง ขั้นตอนการรับอุณหภูมิจริงและค่าการสั่นสะเทือนจะกล่าวถึงในขั้นตอนต่อไป
ขั้นตอนที่ 3: การวิเคราะห์ค่าอุณหภูมิและการสั่นสะเทือนแบบไร้สายโดยใช้ Labview Utility
เซนเซอร์ทำงานในสองโหมด
- โหมดการกำหนดค่า: กำหนดค่า Pan ID, ความล่าช้า, จำนวนการลองใหม่ ฯลฯ เพิ่มเติมเกี่ยวกับสิ่งนี้อยู่นอกเหนือขอบเขตของคำแนะนำนี้และจะอธิบายในคำแนะนำถัดไป
- โหมดรัน: เรากำลังเรียกใช้อุปกรณ์ในโหมดรัน และเพื่อวิเคราะห์ค่าเหล่านี้ เรากำลังใช้ Labview Utility
Labview UI นี้แสดงค่าเป็นกราฟที่ดี แสดงค่าปัจจุบันและค่าในอดีต คุณสามารถไปที่ลิงค์นี้เพื่อดาวน์โหลด Labview UI
คลิกที่ไอคอนเรียกใช้จากเมนูหน้า Landing Page เพื่อไปที่โหมดการทำงาน
ขั้นตอนที่ 4: การกำหนดการตั้งค่า DHCP/สแตติก IP โดยใช้ Captive Portal
เรากำลังใช้แคปทีฟพอร์ทัลเพื่อบันทึกข้อมูลรับรอง WiFi และเลื่อนเมาส์ผ่านการตั้งค่า IP สำหรับคำแนะนำโดยละเอียดเกี่ยวกับพอร์ทัลแบบ Captive คุณสามารถอ่านคำแนะนำต่อไปนี้
พอร์ทัลแบบ Captive ช่วยให้เราเลือกระหว่างการตั้งค่าแบบคงที่และ DHCP เพียงป้อนข้อมูลประจำตัว เช่น IP แบบคงที่ Subnet Mask เกตเวย์ และ Wireless Sensor Gateway จะได้รับการกำหนดค่าบน IP นั้น
ขั้นตอนที่ 5: บันทึกการตั้งค่า WiFi โดยใช้ Captive Portal
กำลังโฮสต์หน้าเว็บซึ่งมีรายการแสดงเครือข่าย WiFi ที่พร้อมใช้งานและมี RSSI เลือกเครือข่าย WiFi และรหัสผ่านและป้อนส่ง ข้อมูลประจำตัวจะถูกบันทึกไว้ใน EEPROM และการตั้งค่า IP จะถูกบันทึกไว้ใน SPIFFS ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้สามารถพบได้ในคำแนะนำนี้
ขั้นตอนที่ 6: เผยแพร่การอ่านเซ็นเซอร์ไปยัง UbiDots
เราใช้เซ็นเซอร์อุณหภูมิและการสั่นสะเทือนแบบไร้สายกับตัวรับสัญญาณเกตเวย์ ESP 32 เพื่อรับข้อมูลอุณหภูมิและความชื้น เรากำลังส่งข้อมูลไปยัง UbiDots โดยใช้โปรโตคอล MQTT MQTT ปฏิบัติตามกลไกการเผยแพร่และสมัครรับข้อมูลแทนที่จะเป็นคำขอและการตอบสนอง เร็วกว่าและเชื่อถือได้มากกว่า HTTP นี้ทำงานดังนี้
การอ่านข้อมูลเซ็นเซอร์ไร้สาย
เราได้รับเฟรม 29 ไบต์จากเซ็นเซอร์อุณหภูมิและการสั่นสะเทือนแบบไร้สาย เฟรมนี้ได้รับการจัดการเพื่อให้ได้ข้อมูลอุณหภูมิและการสั่นสะเทือนจริง
ถ้า (Serial2.available ()) { data [0] = Serial2.read (); ล่าช้า (k); if(data[0]==0x7E) { Serial.println("มีแพ็คเก็ต"); ในขณะที่ (!Serial2.available()); สำหรับ (i = 1; i< 55; i++) { data = Serial2.read(); ล่าช้า(1); } if(data[15]==0x7F) /////// เพื่อตรวจสอบว่าข้อมูลที่ได้รับนั้นถูกต้องหรือไม่ { if(data[22]==0x08) //////// ตรวจสอบให้แน่ใจว่าประเภทเซ็นเซอร์ ถูกต้อง { rms_x = ((uint16_t)(((data[24])<<16) + ((data[25])<<8) + (data[26]))/100); rms_y = ((uint16_t)(((data[27])<<16) + ((data[28])<<8) + (data[29]))/100); rms_z = ((uint16_t)(((data[30])<<16) + ((data[31])<<8) + (data[32]))/100); max_x = ((uint16_t)(((data[33])<<16) + ((data[34])<<8) + (data[35]))/100); max_y = ((uint16_t)(((data[36])<<16) + ((data[37])<<8) + (data[38]))/100); max_z = ((uint16_t)(((data[39])<<16) + ((data[40])<<8) + (data[41]))/100);
min_x = ((uint16_t)(((data[42])<<16) + ((data[43])<<8) + (data[44]))/100); min_y = ((uint16_t)(((data[45])<<16) + ((data[46])<<8) + (data[47]))/100); min_z = ((uint16_t)(((data[48])<<16) + ((data[49])<<8) + (data[50]))/100);
cTemp = (((((ข้อมูล[51])) * 256) + ข้อมูล[52])); แบตเตอรี่ลอย = ((ข้อมูล [18] * 256) + ข้อมูล [19]); แรงดันไฟลอย = 0.00322 * แบตเตอรี่; Serial.print("หมายเลขเซนเซอร์"); Serial.println (ข้อมูล [16]); Serial.print("ประเภทเซนเซอร์"); Serial.println(ข้อมูล[22]); Serial.print ("เวอร์ชันเฟิร์มแวร์"); Serial.println (ข้อมูล [17]); Serial.print("อุณหภูมิในเซลเซียส:"); Serial.print(cTemp); Serial.println("C"); Serial.print("การสั่น RMS ในแกน X:"); Serial.print(rms_x); Serial.println(" มก."); Serial.print("การสั่น RMS ในแกน Y:"); Serial.print(rms_y); Serial.println(" มก."); Serial.print("การสั่น RMS ในแกน Z:"); Serial.print(rms_z); Serial.println(" มก.");
Serial.print("การสั่นต่ำสุดในแกน X:");
Serial.print(min_x); Serial.println(" มก."); Serial.print("การสั่นขั้นต่ำในแกน Y:"); Serial.print(min_y); Serial.println(" มก."); Serial.print("การสั่นขั้นต่ำในแกน Z:"); Serial.print(min_z); Serial.println(" มก.");
Serial.print("ค่า ADC:");
Serial.println (แบตเตอรี่); Serial.print("แรงดันแบตเตอรี่:"); Serial.print (แรงดันไฟฟ้า); Serial.println("\n"); ถ้า (แรงดันไฟฟ้า < 1) { Serial.println ("ถึงเวลาเปลี่ยนแบตเตอรี่"); } } } else { สำหรับ (i = 0; i< 54; i++) { Serial.print(data); Serial.print(", "); ล่าช้า(1); } } } }
กำลังเชื่อมต่อกับ UbiDots MQTT API
รวมไฟล์ส่วนหัวสำหรับกระบวนการ MQTT
#include "PubSubClient.h"
กำหนดตัวแปรอื่น ๆ สำหรับ MQTT เช่น ชื่อลูกค้า ที่อยู่นายหน้า รหัสโทเค็น (เรากำลังดึงรหัสโทเค็นจาก EEPROM)
#define MQTT_CLIENT_NAME "ClientVBShightime123"char mqttBroker = "things.ubidots.com"; เพย์โหลดถ่าน[100]; หัวข้อถ่าน[150]; //สร้างตัวแปรเพื่อเก็บรหัสโทเค็น สตริง tokenId;
สร้างตัวแปรเพื่อเก็บข้อมูลเซนเซอร์ต่างๆ และสร้างตัวแปร char เพื่อจัดเก็บหัวข้อ
#define VARIABLE_LABEL_TEMPF "tempF" // กำหนดป้ายกำกับตัวแปร#define VARIABLE_LABEL_TEMPC "tempC" // กำหนดป้ายกำกับตัวแปร #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid" // กำหนดป้ายกำกับตัวแปร
หัวข้อถ่าน1[100];
ถ่าน หัวข้อ2[100]; หัวข้อถ่าน3[100];
เผยแพร่ข้อมูลไปยังหัวข้อ MQTT ที่กล่าวถึง payload จะมีลักษณะดังนี้ { "tempc": {value: "tempData"}}
sprintf(topic1, "%s", "");sprintf(topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf(เพย์โหลด, "%s", "");
// ทำความสะอาด payload sprintf(payload, "{"%s\":", VARIABLE_LABEL_TEMPC);
// เพิ่มค่า sprintf(payload, "%s{"value\":%s}", payload, str_cTemp);
// เพิ่มค่า sprintf(payload, "%s}", payload);
// ปิดวงเล็บพจนานุกรม Serial.println(payload);
Serial.println(client.publish(topic1, payload) ? "published": "notpublished");
//ทำแบบเดียวกันกับหัวข้ออื่นด้วย
client.publish() เผยแพร่ข้อมูลไปยัง UbiDots
ขั้นตอนที่ 7: การแสดงภาพข้อมูล
- ไปที่ Ubidots และลงชื่อเข้าใช้บัญชีของคุณ
- ไปที่แดชบอร์ดจากแท็บข้อมูลที่แสดงด้านบน
- ตอนนี้คลิกไอคอน "+" เพื่อเพิ่มวิดเจ็ตใหม่
- เลือกวิดเจ็ตจากรายการและเพิ่มตัวแปรและอุปกรณ์
- ข้อมูลเซ็นเซอร์สามารถมองเห็นได้บนแดชบอร์ดโดยใช้วิดเจ็ตต่างๆ
รหัสโดยรวม
โค้ด Over สำหรับ HTML และ ESP32 มีอยู่ในที่เก็บ GitHub นี้
- บอร์ดฝ่าวงล้อม ncd ESP32
- ncd อุณหภูมิไร้สายและเซ็นเซอร์ความชื้น
- ไคลเอนต์สาธารณะ
- UbiDots
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง