MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Arduinoの基礎 - MQTTのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Arduinoの基礎 - MQTT
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == 必要な構成 == * ハードウェア ** Arduino UNO R4 WiFi *: <br> * ソフトウェア ** Arduino IDE 2.0以降 ** Arduino_ConnectionHandlerライブラリ ** ArduinoMqttClientライブラリ ** WiFiS3ライブラリ <br><br> == MQTT通信 == Arduino R4 WiFiを使用して、MQTT通信でトピックの送受信を行っている。<br> <br> * Wi-Fiへの接続 *: SSIDとパスワードを使用して、Wi-Fiネットワークに接続する。 *: 接続状態をシリアルモニタに表示する。 * MQTTブローカーへの接続 *: 指定されたMQTTブローカーとポートに接続する。 * トピックの送信 *: 5秒ごとにカウンター値をMQTTトピックに送信する。 *: 送信内容はシリアルモニタにも表示する。 * トピックの受信 *: 購読しているトピックからメッセージを受信した場合に表示する。 *: また、メッセージの内容をシリアルモニタに出力する。 <br> ==== 送信 (MQTTパブリッシャー側) ==== 以下の例では、5秒ごとにカウンタの値を送信 (パブリッシュ) している。<br> <br> <syntaxhighlight lang="c++"> #include <WiFiS3.h> #include <ArduinoMqttClient.h> // Wi-Fi設定 const char ssid[] = "<Wi-FiのSSID>" const char pass[] = "<WiFiのパスワード>" // MQTTブローカーの設定 const char mqtt_broker[] = "<MQTTブローカーのアドレス 例: test.mosquitto.org>"; const int mqtt_port = 1883; // MQTTのポート番号 const char mqtt_topic[] = "arduino/sensor"; // 投稿するトピック WiFiClient wifiClient; MqttClient mqttClient(wifiClient); void setup() { Serial.begin(9600); while (!Serial); // シリアルポートの準備待ち // Wi-Fi接続 Serial.print("Connecting to WiFi"); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println("\nConnected to WiFi"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); // MQTTブローカーへの接続 Serial.print("Connecting to MQTT broker..."); if (!mqttClient.connect(mqtt_broker, mqtt_port)) { Serial.print("MQTT connection failed! Error code = "); Serial.println(mqttClient.connectError()); while (1); } Serial.println("Connected to MQTT broker!"); } void loop() { // MQTT接続の維持 mqttClient.poll(); // 5秒ごとにメッセージを送信 static unsigned long previousMillis = 0; unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= 5000) { previousMillis = currentMillis; // サンプルデータの作成(ここでは単純なカウンター) static int counter = 0; String message = "Count: " + String(counter++); // メッセージの送信 Serial.print("Sending message: "); Serial.println(message); mqttClient.beginMessage(mqtt_topic); mqttClient.print(message); mqttClient.endMessage(); } } </syntaxhighlight> <br> ==== 受信 (サブスクライバ側) ==== 以下の例では、受信したトピックの購読 (サブスクライブ) している。<br> <br> <syntaxhighlight lang="c++"> #include <WiFiS3.h> #include <ArduinoMqttClient.h> // Wi-Fi設定 const char ssid[] = "<Wi-FiのSSID>" const char pass[] = "<WiFiのパスワード>" // MQTTブローカーの設定 const char mqtt_broker[] = "<MQTTブローカーのアドレス 例: test.mosquitto.org>"; const int mqtt_port = 1883; // MQTTのポート番号 const char mqtt_topic[] = "arduino/sensor"; // 投稿するトピック WiFiClient wifiClient; MqttClient mqttClient(wifiClient); void setup() { Serial.begin(9600); while (!Serial); // シリアルポートの準備待ち // Wi-Fi接続 Serial.print("Connecting to WiFi"); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println("\nConnected to WiFi"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); // MQTTブローカーへの接続 Serial.print("Connecting to MQTT broker..."); if (!mqttClient.connect(mqtt_broker, mqtt_port)) { Serial.print("MQTT connection failed! Error code = "); Serial.println(mqttClient.connectError()); while (1); } Serial.println("Connected to MQTT broker!"); // トピックの購読 (サブスクライブ) Serial.print("Subscribing to topic: "); Serial.println(mqtt_topic); mqttClient.subscribe(mqtt_topic); } void loop() { // MQTT接続の維持 mqttClient.poll(); // 受信したメッセージの処理 int messageSize = mqttClient.parseMessage(); if (messageSize) { Serial.print("Received a message with topic '"); Serial.print(mqttClient.messageTopic()); Serial.print("', length "); Serial.print(messageSize); Serial.println(" bytes:"); // メッセージの内容を読み取って表示 while (mqttClient.available()) { Serial.print((char)mqttClient.read()); } Serial.println(); } } </syntaxhighlight> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:Arduino]]
Arduinoの基礎 - MQTT
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse