Innholdsfortegnelse:
- Trinn 1: Spesifikasjon for maskinvare og programvare
- Trinn 2: Konfigurering av trådløs sensor og Zigmo -mottaker ved hjelp av XCTU
- Trinn 3: Analyse av trådløs temperatur og vibrasjonsverdier ved hjelp av Labview Utility
- Trinn 4: Konfigurering av DHCP/statisk IP -innstillinger ved hjelp av Captive Portal
- Trinn 5: Lagre WiFi -innstillinger ved hjelp av Captive Portal
- Trinn 6: Publisering av sensoravlesninger til UbiDots
- Trinn 7: Visualisering av dataene
Video: Komme i gang med trådløse temperatur- og vibrasjonssensorer for lang rekkevidde: 7 trinn
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Noen ganger er vibrasjon årsaken til alvorlige problemer i mange applikasjoner. Fra maskinaksler og lagre til harddiskytelse, vibrasjoner forårsaker maskinskader, tidlig utskifting, lav ytelse og påfører nøyaktigheten et stort treff. Overvåking og tid til annen analyse av vibrasjoner i maskinen kan løse problemet med tidlig skade og slitasje på maskindelen.
I denne instruksen vil vi jobbe med IoT trådløse vibrasjons- og temperatursensorer for lang rekkevidde. Dette er sensorer av industriell kvalitet med mange utbredte applikasjoner som.
- Metallbearbeiding
- Kraftproduksjon
- Gruvedrift
- Mat og Drikke
Så i denne instruksen vil vi gå gjennom følgende:
- Konfigurere trådløse sensorer ved hjelp av XCTU og Labview UI.
- Henter vibrasjonsverdiene fra sensoren.
- Forstå hvordan xbee -enheten og xbee -protokollen fungerer.
- Konfigurering av WiFi -legitimasjon og IP -konfigurasjon ved hjelp av captive -portalen
Trinn 1: Spesifikasjon for maskinvare og programvare
Maskinvarespesifikasjon
- Trådløse vibrasjons- og temperatursensorer
- Zigmo mottaker
- ESP32 BLE/ WiFi -enhet
Programvarespesifikasjon
- Arduino IDE
- LabView -verktøy
Trinn 2: Konfigurering av trådløs sensor og Zigmo -mottaker ved hjelp av XCTU
Hver IoT -enhet trenger en kommunikasjonsprotokoll for å sette enheten over skyen og sette opp et trådløst grensesnitt mellom forskjellige enheter.
Her bruker de trådløse sensorene og Zigmo-mottakeren XBee med lav effekt og lang rekkevidde. XBee bruker en ZigBee -protokoll som spesifiserer operasjonen i 902 til 928 MHz ISM -bånd.
Xbee kan konfigureres ved hjelp av XCTU -programvare
- Søk etter Xbee -enheten eller legg til en ny Xbee -enhet ved å klikke på ikonet øverst til venstre.
- Enheten vil bli oppført på panelet til venstre.
- dobbeltklikk på enheten for å se innstillingene.
- Klikk nå på konsollikonet øverst til høyre
- Du kan se verdien komme på konsollutgangen
- Her får vi rammen med lengde 54 byte
- disse byte ville bli manipulert ytterligere for å få de virkelige verdiene. prosedyren for å få de virkelige temperatur- og vibrasjonsverdiene er nevnt i kommende trinn.
Trinn 3: Analyse av trådløs temperatur og vibrasjonsverdier ved hjelp av Labview Utility
Sensoren kjøres i to moduser
- Konfigurasjonsmodus: Konfigurer Pan -ID, forsinkelse, antall forsøk osv. Mer om dette er utenfor omfanget av denne instruksjonsboken og vil bli forklart i neste instruksjonsbaserte.
- Kjørmodus: Vi kjører enheten i Kjør -modus. Og for å analysere denne verdien bruker vi Labview Utility
Denne Labview UI viser verdiene i fine grafer. Den viser nåværende så vel som tidligere verdier. Du kan gå til denne lenken for å laste ned Labview UI.
klikk på Kjør -ikonet fra landingssidemenyen for å gå til kjøremodus.
Trinn 4: Konfigurering av DHCP/statisk IP -innstillinger ved hjelp av Captive Portal
Vi bruker den fangede portalen til å lagre WiFi -legitimasjonen og for å sveve gjennom IP -innstillingene. For en detaljert introduksjon på portalen, kan du gå gjennom følgende instrukser.
Den fangede portalen gir oss muligheten til å velge mellom statiske og DHCP -innstillinger. Bare skriv inn legitimasjonen som Statisk IP, Nettverksmaske, gateway og Wireless Sensor Gateway vil bli konfigurert på den IP -en.
Trinn 5: Lagre WiFi -innstillinger ved hjelp av Captive Portal
En webside blir vert der en liste som viser tilgjengelige WiFi -nettverk og det RSSI. Velg WiFi -nettverket og passordet og skriv inn. Legitimasjonen lagres i EEPROM og IP -innstillingen lagres i SPIFFS. Mer om dette finner du i denne instruksjonsboken.
Trinn 6: Publisering av sensoravlesninger til UbiDots
Her bruker vi trådløse temperatur- og vibrasjonssensorer med ESP 32 gatewaymottaker for å få data om temperatur og fuktighet. Vi sender dataene til UbiDots ved hjelp av MQTT -protokollen. MQTT følger en publiserings- og abonnementsmekanisme i stedet for forespørsel og svar. Det er raskere og pålitelig enn HTTP. Dette fungerer som følger.
Lesing av trådløse sensordata
Vi får en 29-byte ramme fra de trådløse temperatur- og vibrasjonssensorene. Denne rammen manipuleres for å få den faktiske temperaturen og vibrasjonsdata
if (Serial2.available ()) {data [0] = Serial2.read (); forsinkelse (k); if (data [0] == 0x7E) {Serial.println ("Got Packet"); mens (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); forsinkelse (1); } if (data [15] == 0x7F) /////// for å sjekke om mottatte data er riktige {if (data [22] == 0x08) //////// kontroller sensortypen er riktig {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 = ((((data [51]) * 256) + data [52])); flytebatteri = ((data [18] * 256) + data [19]); flytespenning = 0,00322 * batteri; Serial.print ("Sensornummer"); Serial.println (data [16]); Serial.print ("Sensortype"); Serial.println (data [22]); Serial.print ("Fastvareversjon"); Serial.println (data [17]); Serial.print ("Temperatur i Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS-vibrasjon i X-aksen:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS-vibrasjon i Y-aksen:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS-vibrasjon i Z-aksen:"); Serial.print (rms_z); Serial.println ("mg");
Serial.print ("Min vibrasjon i X-aksen:");
Serial.print (min_x); Serial.println ("mg"); Serial.print ("Min vibrasjon i Y-aksen:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Min vibrasjon i Z-aksen:"); Serial.print (min_z); Serial.println ("mg");
Serial.print ("ADC -verdi:");
Serial.println (batteri); Serial.print ("Batterispenning:"); Serial.print (spenning); Serial.println ("\ n"); if (spenning <1) {Serial.println ("Tid til å bytte batteri"); }}} annet {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); forsinkelse (1); }}}}
Koble til UbiDots MQTT API
Inkluder overskriftsfilen for MQTT -prosessen
#include "PubSubClient.h"
definere andre variabler for MQTT som klientnavn, megleradresse, token ID (Vi henter token ID fra EEPROM)
#define MQTT_CLIENT_NAME "ClientVBShightime123" char mqttBroker = "things.ubidots.com"; røye nyttelast [100]; røye emne [150]; // lage variabel for å lagre token ID String tokenId;
Lag variabler for å lagre forskjellige sensordata og lag en char -variabel for å lagre emne
#define VARIABLE_LABEL_TEMPF "tempF" // Vurder variabeletiketten #definer VARIABLE_LABEL_TEMPC "tempC" // Assosier variabeletiketten #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "variable" //
char topic1 [100];
røye topic2 [100]; røye topic3 [100];
publiser dataene til det nevnte MQTT -emnet, nyttelasten vil se ut som {"tempc": {value: "tempData"}}
sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (nyttelast, "%s", "");
// Renser nyttelast sprintf (nyttelast, "{"%s / ":", VARIABLE_LABEL_TEMPC);
// Legger til verdien sprintf (nyttelast, "%s {" verdi / ":%s}", nyttelast, str_cTemp);
// Legger til verdien sprintf (nyttelast, "%s}", nyttelast);
// Lukker ordbokens parenteser Serial.println (nyttelast);
Serial.println (client.publish (topic1, nyttelast)? "Publisert": "ikkepublisert");
// Gjør det samme for andre temaer også
client.publish () publiserer dataene til UbiDots
Trinn 7: Visualisering av dataene
- Gå til Ubidots og logg inn på kontoen din.
- Naviger til oversikten fra kategorien Data som er oppført øverst.
- Klikk nå på "+" - ikonet for å legge til de nye widgetene.
- Velg en widget fra listen, og legg til en variabel og enheter.
- Sensordataene kan visualiseres på dashbordet ved hjelp av forskjellige widgets.
Samlet kode
Over -koden for HTML og ESP32 finnes i dette GitHub -depotet.
- ncd ESP32 breakout board.
- ncd Trådløse temperatur- og fuktighetssensorer.
- pubsubclient
- UbiDots