สารบัญ:

เริ่มต้นใช้งานเซ็นเซอร์อุณหภูมิและการสั่นสะเทือนแบบไร้สายระยะไกล: 7 ขั้นตอน
เริ่มต้นใช้งานเซ็นเซอร์อุณหภูมิและการสั่นสะเทือนแบบไร้สายระยะไกล: 7 ขั้นตอน

วีดีโอ: เริ่มต้นใช้งานเซ็นเซอร์อุณหภูมิและการสั่นสะเทือนแบบไร้สายระยะไกล: 7 ขั้นตอน

วีดีโอ: เริ่มต้นใช้งานเซ็นเซอร์อุณหภูมิและการสั่นสะเทือนแบบไร้สายระยะไกล: 7 ขั้นตอน
วีดีโอ: ตรวจสอบเครื่องจักรด้วย เซนเซอร์วัดการสั่นสะเทือนของเครื่องจักร RS485 Sensor Vibration Modbus RTU 2024, กรกฎาคม
Anonim
เริ่มต้นใช้งานเซนเซอร์ตรวจจับอุณหภูมิและการสั่นสะเทือนแบบไร้สายระยะไกล
เริ่มต้นใช้งานเซนเซอร์ตรวจจับอุณหภูมิและการสั่นสะเทือนแบบไร้สายระยะไกล

บางครั้งการสั่นสะเทือนก็เป็นสาเหตุของปัญหาร้ายแรงในการใช้งานหลายอย่าง ตั้งแต่เพลาเครื่องและตลับลูกปืนไปจนถึงประสิทธิภาพของฮาร์ดดิสก์ การสั่นสะเทือนทำให้เครื่องเสียหาย การเปลี่ยนก่อนกำหนด ประสิทธิภาพต่ำ และกระทบต่อความแม่นยำอย่างมาก การตรวจสอบและการวิเคราะห์การสั่นสะเทือนในเครื่องเป็นครั้งคราวสามารถแก้ปัญหาความเสียหายและการสึกหรอของชิ้นส่วนเครื่องจักรได้

ในคำแนะนำนี้ เราจะทำงานกับเซ็นเซอร์การสั่นสะเทือนและอุณหภูมิแบบไร้สายระยะไกล IoT เหล่านี้เป็นเซ็นเซอร์ระดับอุตสาหกรรมที่มีการใช้งานอย่างกว้างขวางเช่น

  • งานโลหะ
  • การผลิตไฟฟ้า
  • การขุด
  • อาหารและเครื่องดื่ม

ดังนั้นในคำแนะนำนี้เราจะดำเนินการต่อไปนี้:

  • การกำหนดค่าเซ็นเซอร์ไร้สายโดยใช้ XCTU และ Labview UI
  • รับค่าการสั่นสะเทือนจากเซ็นเซอร์
  • ทำความเข้าใจการทำงานของอุปกรณ์ xbee และโปรโตคอล xbee
  • การกำหนดค่าข้อมูลรับรอง WiFi และการกำหนดค่า IP โดยใช้แคปทีฟพอร์ทัล

ขั้นตอนที่ 1: ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์

ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์
ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์
ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์
ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์
ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์
ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์

ข้อกำหนดฮาร์ดแวร์

  • เซนเซอร์ตรวจจับการสั่นสะเทือนและอุณหภูมิแบบไร้สาย
  • ตัวรับ Zigmo
  • อุปกรณ์ ESP32 BLE/ WiFi

ข้อกำหนดซอฟต์แวร์

  • Arduino IDE
  • ยูทิลิตี้ LabView

ขั้นตอนที่ 2: การกำหนดค่าเซ็นเซอร์ไร้สายและตัวรับสัญญาณ Zigmo โดยใช้ XCTU

การกำหนดค่าเซ็นเซอร์ไร้สายและตัวรับสัญญาณ Zigmo โดยใช้ XCTU
การกำหนดค่าเซ็นเซอร์ไร้สายและตัวรับสัญญาณ Zigmo โดยใช้ XCTU
การกำหนดค่าเซ็นเซอร์ไร้สายและตัวรับสัญญาณ Zigmo โดยใช้ XCTU
การกำหนดค่าเซ็นเซอร์ไร้สายและตัวรับสัญญาณ Zigmo โดยใช้ XCTU

อุปกรณ์ IoT แต่ละตัวต้องการโปรโตคอลการสื่อสารเพื่อวางอุปกรณ์ไว้บนคลาวด์และตั้งค่าอินเทอร์เฟซไร้สายระหว่างอุปกรณ์ต่างๆ

ที่นี่เซ็นเซอร์ไร้สายและตัวรับสัญญาณ Zigmo ใช้พลังงานต่ำและโซลูชัน XBee ระยะไกล XBee ใช้โปรโตคอล ZigBee ที่ระบุการทำงานในย่านความถี่ ISM 902 ถึง 928 MHz

Xbee สามารถกำหนดค่าได้โดยใช้ซอฟต์แวร์ XCTU

  1. ค้นหาอุปกรณ์ Xbee หรือเพิ่มอุปกรณ์ Xbee ใหม่โดยคลิกที่ไอคอนด้านซ้ายบน
  2. อุปกรณ์จะแสดงรายการบนแผงด้านซ้ายมือ
  3. ดับเบิลคลิกที่อุปกรณ์เพื่อดูการตั้งค่า
  4. ตอนนี้คลิกที่ไอคอนคอนโซลที่มุมบนขวา
  5. คุณสามารถเห็นค่าที่มาบนคอนโซลเอาท์พุต
  6. เราจะได้เฟรมที่มีความยาว 54 ไบต์
  7. ไบต์เหล่านี้จะถูกจัดการเพิ่มเติมเพื่อรับค่าจริง ขั้นตอนการรับอุณหภูมิจริงและค่าการสั่นสะเทือนจะกล่าวถึงในขั้นตอนต่อไป

ขั้นตอนที่ 3: การวิเคราะห์ค่าอุณหภูมิและการสั่นสะเทือนแบบไร้สายโดยใช้ Labview Utility

การวิเคราะห์ค่าอุณหภูมิและการสั่นสะเทือนแบบไร้สายโดยใช้ยูทิลิตี้ Labview
การวิเคราะห์ค่าอุณหภูมิและการสั่นสะเทือนแบบไร้สายโดยใช้ยูทิลิตี้ Labview
การวิเคราะห์ค่าอุณหภูมิและการสั่นสะเทือนแบบไร้สายโดยใช้ยูทิลิตี้ Labview
การวิเคราะห์ค่าอุณหภูมิและการสั่นสะเทือนแบบไร้สายโดยใช้ยูทิลิตี้ Labview

เซนเซอร์ทำงานในสองโหมด

  • โหมดการกำหนดค่า: กำหนดค่า Pan ID, ความล่าช้า, จำนวนการลองใหม่ ฯลฯ เพิ่มเติมเกี่ยวกับสิ่งนี้อยู่นอกเหนือขอบเขตของคำแนะนำนี้และจะอธิบายในคำแนะนำถัดไป
  • โหมดรัน: เรากำลังเรียกใช้อุปกรณ์ในโหมดรัน และเพื่อวิเคราะห์ค่าเหล่านี้ เรากำลังใช้ Labview Utility

Labview UI นี้แสดงค่าเป็นกราฟที่ดี แสดงค่าปัจจุบันและค่าในอดีต คุณสามารถไปที่ลิงค์นี้เพื่อดาวน์โหลด Labview UI

คลิกที่ไอคอนเรียกใช้จากเมนูหน้า Landing Page เพื่อไปที่โหมดการทำงาน

ขั้นตอนที่ 4: การกำหนดการตั้งค่า DHCP/สแตติก IP โดยใช้ Captive Portal

การกำหนดการตั้งค่า DHCP/สแตติก IP โดยใช้ Captive Portal
การกำหนดการตั้งค่า DHCP/สแตติก IP โดยใช้ Captive Portal
การกำหนดการตั้งค่า DHCP/สแตติก IP โดยใช้ Captive Portal
การกำหนดการตั้งค่า DHCP/สแตติก IP โดยใช้ Captive Portal
การกำหนดการตั้งค่า DHCP/สแตติก IP โดยใช้ Captive Portal
การกำหนดการตั้งค่า DHCP/สแตติก IP โดยใช้ Captive Portal

เรากำลังใช้แคปทีฟพอร์ทัลเพื่อบันทึกข้อมูลรับรอง WiFi และเลื่อนเมาส์ผ่านการตั้งค่า IP สำหรับคำแนะนำโดยละเอียดเกี่ยวกับพอร์ทัลแบบ Captive คุณสามารถอ่านคำแนะนำต่อไปนี้

พอร์ทัลแบบ Captive ช่วยให้เราเลือกระหว่างการตั้งค่าแบบคงที่และ DHCP เพียงป้อนข้อมูลประจำตัว เช่น IP แบบคงที่ Subnet Mask เกตเวย์ และ Wireless Sensor Gateway จะได้รับการกำหนดค่าบน IP นั้น

ขั้นตอนที่ 5: บันทึกการตั้งค่า WiFi โดยใช้ Captive Portal

การบันทึกการตั้งค่า WiFi โดยใช้ Captive Portal
การบันทึกการตั้งค่า 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 นี้

  1. บอร์ดฝ่าวงล้อม ncd ESP32
  2. ncd อุณหภูมิไร้สายและเซ็นเซอร์ความชื้น
  3. ไคลเอนต์สาธารณะ
  4. UbiDots

แนะนำ: