Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

MQTT-communicatie tussen NodeMCU en Raspberry Pi 3 B+

MQTT, NodeMCU, DHT22, RaspberryPi en IoT MQTT Panel gebruiken om temperatuur en vochtigheid te bewaken.

Een Raspberry Pi 3 B+ gebruiken als broker voor verschillende NodeMCU's met DHT-22-sensoren die temperatuur en vochtigheid meten en monitoren op IoT MQTT Panel-app. Ik heb het algoritme voor NodeMCU en Raspberry schaalbaar gemaakt. Wijzig gewoon de gepubliceerde en geabonneerde onderwerpen en voeg de IoT MQTT Panel-app toe om alle gegevens op elk moment bij de hand te hebben.

Ik heb op internet veel informatie gezocht omdat ik geen kennis heb van framboos, python en MQTT. Dus ik heb alles samengevat wat ik heb geleerd en heb die websites eer gegeven.

Als je internetverbinding wegvalt, blijven je sensoren gegevens naar je broker sturen. Dit betekent dat u uw gegevens kunt opslaan!!! (je moet natuurlijk wat programmeren)

Volg mij voor alle updates. Binnenkort zal ik een video plaatsen van alles wat draait!

1. Dingen verbinden:

Hoe uw netwerk eruit zal zien:

2. Dingen programmeren:

Eerst moet je er zeker van zijn dat alle bibliotheken op je Arduino IDE en op je Raspberry Pi 3B+ zijn geïnstalleerd.

2.1 Arduino

Installeer de bibliotheken op uw Arduino IDE.

  • MQTT – https://github.com/knolleary/pubsubclient/releases/tag/v2.7
  • DHT-sensorbibliotheek: https://github.com/adafruit/DHT-sensor-library
  • Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
  • Esp8266 – https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi

2.2 Raspberry Pi 3 b+

Installeer de bibliotheken op uw Python IDE.

  • time – Native bibliotheek op Python
  • Paho MQTT – typ "pip install paho-mqtt" op uw LX-terminal om de MQTT-bibliotheek te installeren. Bij twijfel is deze website GEWELDIG!! http://www.steves-internet-guide.com/mqtt/

2.3 Codes uploaden

Upload de codes respectievelijk naar uw NodeMCU en Raspberry.

2.4 De code uitleggen – ARDUINO IDE

Dat zijn de eerder genoemde bibliotheken die op uw Arduino IDE moeten worden geïnstalleerd.

#include  // Esp8266/NodeMCU Library#include  // MQTT Library#include "DHT.h" // DHT-sensor  

Variabelen die in de hele code worden gebruikt:

const char* mqtt_server ="Broker_IP_Address"; // MQTT-server IP-adres 

mqtt_server :om het IP-adres op Raspberry pi te krijgen, opent u een terminalscherm en typt u:

[email protected]:~ $ ifconfigwlan0:flags=4163 mtu 1500 inet 192.168.1.200 netmask 255.255.255.0 broadcast 192.168.1.255  

In dit voorbeeld zou het IP-adres 192.168.1.200 zijn

const char* clientID ="room1"; // De client-ID identificeert het NodeMCU-apparaat. 

klant-ID :Elke naam of nummer om de NodeMCU die u gebruikt te identificeren. In dit geval bevindt het zich op kamer 1. Dus het wordt kamer1 genoemd.

const char* topicT ="/room1/temperature"; // Onderwerp temperatuurconst char* topicH ="/kamer1/vochtigheid"; // Onderwerp vochtigheid 

topicT :Onderwerp om temperatuur te publiceren. In dit voorbeeld voor kamertemperatuur 1 is het onderwerp "/kamer1/temperatuur".

topicH :Onderwerp om vochtigheid te publiceren. In dit voorbeeld voor kamer1 vochtigheid is het onderwerp "/kamer1/vochtigheid".

const char* willTopic ="/room1/status"; // Onderwerp Statusconst char* willMessage ="0"; // 0 - Verbinding verbroken 

willTopic :Onderwerp om het testament te publiceren. Dit wordt gebruikt om te controleren of de NodeMCU is aangesloten/aan. Als de verbinding wordt verbroken, wordt de willMessage . gepubliceerd naar het willTopic. In dit geval “/room1/status”

willMessage :bericht wordt gepubliceerd op willTopic als de NodeMCU is losgekoppeld/uitgeschakeld.

int willQoS =0;boolean willRetain =true; 

willQoS :Wordt gebruikt om de servicekwaliteit in te stellen. In dit geval 0.

zal behouden :Wordt gebruikt om het bericht te bewaren in geval van verbreking. Instellen op True.

int counter =0; // Wordt gebruikt om opnieuw verbinding te maken met MQTT serverconst char* swversion ="1.0"; // Softwareversie 

teller :teller gebruikt bij herverbindingsroutine.

swversion :gebruikt om mijn softwarerevisie te beheren.

WiFiClient wifiClient;PubSubClient-client(mqtt_server, 1883, wifiClient); // 1883 is de luisteraarpoort voor de Broker 

wifiClient :maakt een client waarmee verbinding kan worden gemaakt met een opgegeven internet-IP-adres en -poort zoals gedefinieerd in client.connect().

klant() :Client is de basisklasse voor alle WiFi-clientgebaseerde oproepen. Het wordt niet rechtstreeks aangeroepen, maar aangeroepen wanneer u een functie gebruikt die erop vertrouwt.

DHT dhtA(2, DHT22); // DHT-instantie met de naam dhtA, pin op NodeMCU D4 en sensortype 

DHT :Creëert een instantie met de naam dhtA en wijst pin 2 van de NodeMCU V3 (D4) van sensor DHT-22 toe. Volgens onderstaande schema's. Als u een andere pin wilt gebruiken, wijzigt u de waarde in de juiste pin. Voordat u de gebruikte pin wijzigt, controleert u de pinout hieronder om de juiste pin toe te wijzen.

  • Pin D2 -> GPIO4 gebruiken
  • DHT dhtA(4, DHT22)

Als u DHT-11 gebruikt, is dit:

  • Pin D2 -> GPIO4 gebruiken
  • DHT dhtA(4, DHT11)

OPMERKING: Als u dezelfde bibliotheek gebruikt als ik. Als u een andere bibliotheek gebruikt, raadpleeg dan de bibliotheekdocumentatie om te zien hoe u pin en gebruikte sensoren moet declareren.

ongeldige setup() :Hier initialiseren we dingen.

void setup() {Serial.begin(9600); // Debug-doeleinden controleren of DHT en verbinding met MQTT Broker werkenSerial.print(swversion);// Debug. SoftwareversiedhtA.begin(); // De DHT-22 starten 

Verbinding maken met MQTT-makelaar.

delay(2000); // Vertraging om eerste verbinding met MQTT Broker toe te staan 

vertraging(2000) :verleng de tijd als de eerste verbinding mislukt. In dit geval staat 2000 de NodeMCU toe om verbinding te maken met de Broker.

if (client.connect(clientID,"","", willTopic, willQoS, willRetain, willMessage, true)) { // Verbinding maken met MQTT Broker 

client.connect() :hieronder uitgelegd. Overgenomen van: https://pubsubclient.knolleary.net/api.html#connect5

____________________________________________________________

boolean connect (clientID, gebruikersnaam, wachtwoord, willTopic, willQoS, willRetain, willMessage, cleanSession)

Verbindt de client met een Will-bericht, gebruikersnaam, wachtwoord en clean-session-vlag gespecificeerd.

Opmerking :zelfs als de cleanSession is ingesteld op false /0 de klant zal niet opnieuw proberen mislukt qos 1 publiceert. Deze vlag is alleen van nut om abonnementen op de broker te onderhouden.

Parameters

  • clientID:de client-ID die moet worden gebruikt bij het verbinden met de server.
  • gebruikersnaam :de gebruikersnaam die moet worden gebruikt. Indien NULL, wordt er geen gebruikersnaam of wachtwoord gebruikt (const char[])
  • wachtwoord :het te gebruiken wachtwoord. Indien NULL, wordt er geen wachtwoord gebruikt (const char[])
  • willTopic :het onderwerp dat moet worden gebruikt door het wilsbericht (const char[])
  • willQoS:de kwaliteit van de service die door het wilsbericht moet worden gebruikt (int:0,1 of 2)
  • willRetain:of het testament moet worden gepubliceerd met de vlag behouden (int:0 of 1)
  • willMessage :de payload van het wilsbericht (const char[])
  • cleanSession:wel of geen verbinding maken met clean-session (boolean)

Retourneren

  • false – verbinding mislukt.
  • waar - verbinding is gelukt.

Bron:MQTT-communicatie tussen NodeMCU en Raspberry Pi 3 B+


Productieproces

  1. Python- en Raspberry Pi-temperatuursensor
  2. Raspberry Pi temperatuur- en lichtsensor
  3. Raspberry Pi-sensor en actuatorbediening
  4. NIEUWE RASPBERRY PI 3 MODEL B + FUNCTIES EN AANKOOP
  5. Botten bouwen met Raspberry Pi en Python
  6. Verschil tussen galvaniseren en anodiseren
  7. Verschil tussen non-ferro en ferrometalen
  8. Verschil tussen solderen en solderen
  9. Verschil tussen boren, kotteren en ruimen
  10. Verschil tussen shaper en schaafmachine
  11. Verschil tussen centrifugaal- en zuigerpomp