開発チュートリアルArduinoのesp8266 MQTTの使用

esp8266 Arduinoの開発は、IDEを開発するために使用される、またはSDKを使用して開発することができる
のArduino IDEの開発が最も簡単です使用。

ArduinoのIDE開発の使用、開発モジュールに直接開発アルドゥイーノ介し軟質または接続に分けることができます。

送信データにEsp826601s使用は、例えばMQTTは、
Arduinoの開発esp8266 MQTT以下の使用方法について説明します

arduino 配置IDE

  1. 追加ボードの追加マネージャURL:
    http://arduino.esp8266.com/stable/package_esp8266com_index.json

  2. インストールpubsubclient(MQTTサポートプロトコルライブラリ2.6.0)
    ここでの説明を入力します。
    mqtt_esp8266テストコードをテストすることができるが、例えば

  3. ツール開発ボード開発ボードマネージャを開きESP8266コミュニティ(2.4.2)でesp8266ダウンロードesp8266を検索
    ここでの説明を入力します。

  4. esp8266モジュールボー115200フラッシュサイズ1MはありませんSPIFS一般的なツールの選択ボード
    他の変わらない
    (下記のコードで)
    コードのアップロードGPIO0は低い電位を
    アップロードするために使用されるか、またはTTL ESPのダウンローダモジュール(簡単な)ツールを専門にすることができます
    ここでの説明を入力します。

  5. 接続コード行アップロードした後
    エンVccと接地3.3Vの電源を
    ** GPIO0高い
    GNDグラウンド

これは、例えばesp826601sある
ESPによるモジュールの対応する構成

ArduinoのIDE接続の無線LANサービスとMQTTを使用します

コード分​​析

Arduinoのクライアントに適用MQTT
APIドキュメント

  1. ダウンロードMQTTサポートライブラリPubsubclient、およびesp8266wifiライブラリだけでなく、開発ボードesp8266

/書式#include <ESP8266WiFi.h>
書式#include <PubSubClient.h>

  1. 情報MQTT無線LANサーバの情報を追加
    接続するため、後で使用するためにグローバル変数を宣言するとき

char * SSID =定数"YourNetworkName";
constのchar型*パスワード= "YourNetworkPassword";
constのchar型* mqttServer = "m11.cloudmqtt.com";
constのint型mqttPort = 12948;
のconstのchar * mqttUser = "YourMqttUser";
constのchar型* mqttPassword =「YourMqttUserPassword」;
ユーザー名とパスワードを追加することはできません後者の二つの場合)

  1. WIFIClien接続性を確立することを可能にするクラス宣言オブジェクトは、IPとポート
    入力WiFiClient先に定義されたコンストラクタとして受け、クラス宣言PubSubClientのオブジェクト

WiFiClient espClient;
PubSubClientクライアント(espClient)。

  1. シリアル接続が開かれた接続無線LANは、(削除可能)出力ポートの情報を表示することが可能です

Serial.begin(115200)。
WiFi.begin(SSID、パスワード);
(!WiFi.status()= WL_CONNECTED){ながら
遅延(500)。
Serial.print(「無線LANに接続しています...」);
}
Serial.println(「WiFiネットワークに接続されました」)。

  1. MQTT IPおよびサーバのポート、機能はのsetCallback加入メッセージを用いて受信した場合に、対応する機能を実行します

client.setServer(mqttServer、mqttport)。
client.setCallback(コールバック)。

  1. 接続されていない場合はwhileループを使用して、MQTT接続サーバ、連続接続、client.connected()は偽を返しトゥーレまたは
    使用する接続方法であって、実際の接続を。あなたが追加することはできませんされていない場合、ユーザ名・パスワードは、引数の最後に追加した場合、使用したいサーバに接続ESP8266ClientクライアントIDとき。
    状態関数は、接続が失敗した理由を返します。

(!client.connected()){しばらく
Serial.println(「MQTTに接続しています...」);
(client.connect(「ESP8266Client」、mqttUser、mqttPassword)){もし
Serial.println(「接続」)。
}他{
Serial.print(「状態で失敗しました」)。
Serial.print(client.state())。
遅延(2000);
}
}

  1. 購読およびトピックを投稿

client.publish(「テスト」、「こんにちは言葉」);
client.subscribe(テスト/ステータス)。

  1. 受信したメッセージを処理するために使用されるコールバック関数は、トピックをサブスクライブされています。パラメータは、テーマの名前、コンテンツの公開、およびコンテンツの長さを公開です。あなたは追加の修正に基づいて他の機能を追加することができます。

無効のコールバック(CHAR *トピック、バイト*ペイロード、unsigned int型の長さ){
Serial.print(「メッセージが話題に到着:「);
Serial.println(トピック)。
Serial.print(「メッセージ」);
以下のために(INT iが= 0; I <長さ、I ++){
Serial.print((CHAR)ペイロード[I])。
}
Serial.println(」-----------------------」)。
}

  1. ループ方式のPubSubClient、周期関数呼び出しのメインループを呼び出し、サーバの実装と受け入れメッセージはMQTTを送りました。

そのようなプロセスは、異なるコードに異なる機能モジュールを使用するための適切な修正を加えて、一般的です。

完全なコード

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
 
const char* ssid = "nihen_pc";
const char* password = "****";
const char* mqtt_server = "192.168.137.41";
const int mqttPort = 1883;

 
WiFiClient espClient;
PubSubClient client(espClient);
 
void setup() {
 
  Serial.begin(115200);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi..");
  }
  Serial.println("Connected to the WiFi network");
 
  client.setServer(mqtt_server, mqttPort);
  client.setCallback(callback);
 
  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");
 
    if (client.connect("ESP8266Client")) {
      Serial.println("connected");  
 
    } else {
 
      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(2000);
 
    }
  }
 
  client.publish("esp/test", "Hello from ESP8266");
  client.subscribe("esp/test");
 
}
 
void callback(char* topic, byte* payload, unsigned int length) {
 
  Serial.print("Message arrived in topic: ");
  Serial.println(topic);
 
  Serial.print("Message:");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
 
}
 
void loop() {
  client.loop();
}

参考記事
参照記事

ソフトシリアル接続のArduino

上記の方法は、直接上記のESPの実装にアップロードesp8266ボードを使用することです
ここでは、ESP(ESP時には共同使用が必要)制御Arduinoの使用を導入
9600に変更するボーレートESPモジュールのニーズが115200に初期化され
、「SoftwareSerial.h」ソフトの設定を使用しますシリアルポートとArduinoの間の通信

このATコマンドの基礎となる使用WiFiESPは、WiFi接続ライブラリをカプセル化されています

反応は、多くの場合、切断遅い明らかな欠点であります

参考http://xcx1024.com/ArtInfo/117805.html

SDK開発使用して参照リンクを

参照コードリンク

GitHubのアドレス

その他のチュートリアル

ESPの開発者は、基礎を学びます

基本の理解を含むESP認識と理解MQTT契約、ArduinoのIDEアプリケーションコードが書かれており、その上にあるモジュール。

  1. arduinoのベースの学習
  2. はじめにESPシリーズモジュール
  3. はじめに、使用するMQTT契約
  4. MQTT ESPモジュールArduinoのIDE開発方法論を使用して
  5. ATコマンドESPファームウェアモジュールを磨きます
  6. ESPスリープモードを使用してモジュール
  7. esp8266-01s導入と使用
  8. esp8266-12f導入と使用
  9. NodeMcuの導入と使用
IOTアプリケーションのESP開発

物事の実際の生産と需要に応じてベースのモジュールおよびその他のモジュールesp8266アプリケーションのシナリオ

  1. FRIDアクセス制御システムは、Arduinoのリレー電磁ロックベースの開発をFRID
  2. esp32カムビデオストリーム取得された画像処理
  3. ステッピングモータesp8266のMQTTは自動カーテンコントロールを開発しました
  4. DHT11 Esp8266 MQTTに基づいて、室内の温度と湿度を取得します。
  5. CCS811 esp8266 MQTTに基づいて室内空気質を取得します。
  6. 赤外線リモートコントロール、インテリジェントモジュールesp8266のMQTTの開発に基づいて、
  7. インテリジェントマルチレベルの照明の​​ベースws2812 esp8266 MQTT開発
  8. インテリジェントマルチモード光雰囲気のベースws2812 esp8266 MQTT開発
  9. 放送システムインテリジェント音声mp3player esp8266 MQTTベースの開発
  10. IOT教室プロジェクト開発の包括的なアプリケーションの知恵
公開された46元の記事 ウォン称賛59 ビュー70000 +

おすすめ

転載: blog.csdn.net/Nirvana_6174/article/details/104402855