산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

NodeMCU와 Raspberry Pi 3 B+ 간의 MQTT 통신

MQTT, NodeMCU, DHT22, RaspberryPi 및 IoT MQTT 패널을 사용하여 온도와 습도를 모니터링합니다.

IoT MQTT 패널 앱에서 온도와 습도를 측정하고 모니터링하는 DHT-22 센서가 있는 여러 NodeMCU의 브로커로 Raspberry Pi 3 B+를 사용합니다. NodeMCU와 Raspberry의 알고리즘을 확장 가능하게 만들었습니다. 게시 및 구독 주제를 변경하고 IoT MQTT 패널 앱에 추가하면 언제든지 모든 데이터를 사용할 수 있습니다.

라즈베리, 파이썬 및 MQTT에 대한 지식이 없기 때문에 인터넷에서 많은 정보를 검색했습니다. 그래서 저는 제가 배운 모든 것을 요약하고 해당 웹사이트에 공을 들였습니다.

인터넷 연결이 끊어지면 센서가 브로커에 계속 데이터를 보냅니다. 데이터를 저장할 수 있다는 의미!!! (물론 약간의 프로그래밍이 필요합니다)

업데이트가 있으면 팔로우하세요. 곧 모든 실행의 비디오를 게시할 것입니다! 🙂

1. 사물 연결:

네트워크의 모습:

2. 프로그래밍:

먼저 Arduino IDE와 Raspberry Pi 3B+에 모든 라이브러리가 설치되어 있는지 확인해야 합니다.

2.1 아두이노

Arduino IDE에 라이브러리를 설치합니다.

<울>
  • MQTT – https://github.com/knolleary/pubsubclient/releases/tag/v2.7
  • DHT 센서 라이브러리:https://github.com/adafruit/DHT-sensor-library
  • Adafruit 통합 센서 라이브러리:https://github.com/adafruit/Adafruit_Sensor
  • Esp8266 – https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi
  • 2.2 라즈베리 파이 3 b+

    Python IDE에 라이브러리를 설치합니다.

    <울>
  • time – Python의 기본 라이브러리
  • Paho MQTT – LX 터미널에 "pip install paho-mqtt"를 입력하여 MQTT 라이브러리를 설치합니다. 의심이 가는 경우 이 웹사이트는 굉장합니다!! http://www.steves-internet-guide.com/mqtt/
  • 2.3 코드 업로드

    NodeMCU와 Raspberry에 각각 코드를 업로드합니다.

    2.4 코드 설명 – ARDUINO IDE

    Arduino IDE에 설치하기 위해 앞에서 언급한 라이브러리입니다.

    #include  // Esp8266/NodeMCU 라이브러리#include  // MQTT 라이브러리#include "DHT.h" // DHT 센서  

    전체 코드에서 사용하도록 선언된 변수:

    const char* mqtt_server ="브로커_IP_주소"; // MQTT 서버 IP 주소 

    mqtt_server :Raspberry pi에서 IP 주소를 얻으려면 터미널 화면을 열고 다음을 입력하십시오.

    [이메일 보호]:~ $ ifconfigwlan0:flags=4163 mtu 1500 inet 192.168.1.200 넷마스크 255.255.2915.25 브로드캐스트 851  

    이 예에서 IP 주소는 192.168.1.200

    입니다.
    const char* clientID ="room1"; // 클라이언트 ID는 NodeMCU 장치를 식별합니다. 

    클라이언트 ID :사용 중인 NodeMCU를 식별하기 위한 이름 또는 번호입니다. 이 경우 room1에 위치합니다. 그래서 이름이 room1입니다.

    const char* topicT ="/실1/온도"; // 주제 temperatureconst char* topicH ="/room1/humidity"; // 주제 습도 

    주제T :온도를 공개할 주제입니다. 이 예에서 room1 온도에 대한 주제는 "/room1/temperature"가 됩니다.

    주제H :습도를 공개할 주제입니다. 이 예에서 room1 습도에 대한 주제는 "/room1/humidity"가 됩니다.

    const char* willTopic ="/room1/status"; // 토픽 Statusconst char* willMessage ="0"; // 0 - 연결 해제됨 

    willTopic :유언장 발표 주제. 이것은 NodeMCU가 연결/켜져 있는지 확인하는 데 사용됩니다. 연결이 끊어지면 willMessage가 게시됩니다. willTopic. 이 경우 "/room1/status"

    윌메시지 :willTopic에 게시될 메시지 NodeMCU가 연결 해제/꺼진 경우.

    int willQoS =0; 부울 willRetain =true; 

    willQoS :서비스 품질을 설정하기 위해 사용합니다. 이 경우 0.

    유지할 것입니다 :연결이 끊긴 경우에 메시지를 유지하기 위해 사용합니다. 으로 설정합니다.

    int 카운터 =0; // MQTT에 다시 연결하는 데 사용됩니다. serverconst char* swversion ="1.0"; // 소프트웨어 버전 

    카운터 :재접속 루틴에 사용되는 카운터입니다.

    swversion :내 소프트웨어 버전을 제어하는 ​​데 사용됩니다.

    WiFiClient wifiClient;PubSubClient 클라이언트(mqtt_server, 1883, wifiClient); // 1883은 브로커의 리스너 포트입니다. 

    와이파이 클라이언트 :client.connect()에 정의된 대로 지정된 인터넷 IP 주소 및 포트에 연결할 수 있는 클라이언트를 생성합니다.

    클라이언트() :클라이언트는 모든 WiFi 클라이언트 기반 호출의 기본 클래스입니다. 직접 호출되지 않고 의존하는 함수를 사용할 때마다 호출됩니다.

    <코드>DHT dhtA(2, DHT22); // dhtA라는 DHT 인스턴스, NodeMCU D4의 핀 및 센서 유형 

    DHT :dhtA라는 인스턴스를 생성하고 센서 DHT-22의 NodeMCU V3(D4) 핀 2를 할당합니다. 아래 회로도에 따라. 다른 핀을 사용하려면 값을 올바른 핀으로 변경하십시오. 사용된 핀을 변경하기 전에 아래 핀 배치를 확인하여 올바른 핀을 할당하십시오.

    <울>
  • 핀 D2 사용 -> GPIO4
  • DHT dhtA(4, DHT22)
  • DHT-11을 사용하는 경우:

    <울>
  • 핀 D2 사용 -> GPIO4
  • DHT dhtA(4, DHT11)
  • 참고: 나와 같은 라이브러리를 사용하는 경우. 다른 라이브러리를 사용하는 경우 라이브러리 설명서를 확인하여 사용된 핀 및 센서를 선언하는 방법을 확인하세요.

    무효 설정() :여기서 초기화를 합니다.

     무효 setup() {Serial.begin(9600); // 디버그 목적은 DHT 및 MQTT Broker와의 연결이 작동하는지 확인합니다.Serial.print(swversion);// 디버그. 소프트웨어 버전dhtA.begin(); // DHT-22 시작 

    MQTT 브로커에 연결 중입니다.

    지연(2000); // MQTT 브로커와의 첫 번째 연결을 허용하기 위한 지연 

    지연(2000) :첫 번째 연결이 실패하면 시간을 늘립니다. 이 경우 2000은 NodeMCU가 브로커에 연결할 수 있도록 합니다.

    if (client.connect(clientID,"","", willTopic, willQoS, willRetain, willMessage, true)) { // MQTT 브로커 연결 

    client.connect() :아래에서 설명합니다. 출처:https://pubsubclient.knolleary.net/api.html#connect5

    __________________________________________________________________________

    부울 연결(clientID, 사용자 이름, 비밀번호, willTopic, willQoS, willRetain, willMessage, cleanSession)

    Will 메시지, 사용자 이름, 암호 및 clean-session 플래그가 지정된 클라이언트를 연결합니다.

    참고 :cleanSession false로 설정됨 /<코드>0 클라이언트는 하지 않습니다. qos 1 게시에 실패했습니다. 이 플래그는 브로커에서 구독을 유지하는 데만 사용됩니다.

    매개변수

    <울>
  • clientID :서버에 연결할 때 사용할 클라이언트 ID입니다.
  • username :사용할 사용자 이름입니다. NULL이면 사용자 이름이나 암호가 사용되지 않습니다(const char[])
  • password :사용할 비밀번호입니다. NULL이면 암호를 사용하지 않습니다(const char[])
  • willTopic :will 메시지에서 사용할 주제(const char[])
  • willQoS :will 메시지에서 사용할 서비스 품질(int :0,1 또는 2)
  • willRetain :유언을 유지 플래그와 함께 게시할지 여부(int :0 또는 1)
  • willMessage :will 메시지의 페이로드(const char[])
  • cleanSession :clean session 연결 여부(boolean)
  • 반품

    <울>
  • 거짓 – 연결에 실패했습니다.
  • true – 연결에 성공했습니다.
  • 출처:NodeMCU와 Raspberry Pi 3 B+ 간의 MQTT 통신


    제조공정

    1. Python 및 Raspberry Pi 온도 센서
    2. Raspberry Pi 온도 및 광 센서
    3. Raspberry Pi 센서 및 액추에이터 제어
    4. 새로운 RASPBERRY PI 3 모델 B + 기능 및 구매
    5. Raspberry Pi 및 Python으로 로봇 구축
    6. 전기 도금과 아노다이징의 차이점 - 2020 - 다른 사람
    7. 비철금속과 철금속의 차이점 - 2020 - 다른 사람
    8. 브레이징과 납땜의 차이점
    9. 드릴링, 보링 및 리밍의 차이점
    10. 셰이퍼와 대패 기계의 차이점