◎マイコンプログラミングweek4(発展自己学習)
Week 4: WiFi通信とIoT基礎
目次
- WiFi接続の設定と管理
- HTTPクライアントの実装
- MQTT通信の基礎
- クラウドサービスとの連携(例:ThingSpeak)
- 実践演習
1. WiFi接続の設定と管理
概要
WiFi接続の基本的な設定方法と管理方法について学びます。Arduino UNO R4 WiFiを用いて、無線LANネットワークに接続するための手順を紹介します。
内容
- WiFiライブラリのインクルード
- SSIDとパスワードの設定
- WiFi接続の初期化
- 接続状況の確認
コード例
| #include <WiFi.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
void setup() {
Serial.begin(115200);
delay(10);
// WiFiに接続
WiFi.begin(ssid, password);
// 接続完了まで待機
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// ここにコードを記述
}
|
図: WiFi接続のフローチャート
graph TD;
A[スタート] --> B[WiFiライブラリのインクルード];
B --> C[SSIDとパスワードの設定];
C --> D[WiFi接続の初期化];
D --> E[接続状況の確認];
E --> F{接続成功?};
F -- はい --> G[IPアドレスの表示];
F -- いいえ --> D;
G --> H[終了];
2. HTTPクライアントの実装
概要
HTTPプロトコルを使用して、Webサーバーと通信する方法を学びます。Arduino UNO R4 WiFiを用いて、HTTPリクエストを送信し、レスポンスを受信する手順を紹介します。
内容
- HTTPクライアントライブラリのインクルード
- HTTP GETリクエストの送信
- HTTP POSTリクエストの送信
コード例
| #include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
void setup() {
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin("http://example.com"); // サーバーのURL
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
Serial.println(payload);
} else {
Serial.println("Error on HTTP request");
}
http.end();
}
}
void loop() {
// ここにコードを記述
}
|
3. MQTT通信の基礎
概要
MQTTプロトコルを使用して、デバイス間でメッセージをやり取りする方法を学びます。Arduino UNO R4 WiFiを用いて、MQTTブローカーに接続し、メッセージの送受信を行う手順を紹介します。
内容
- MQTTライブラリのインクルード
- MQTTブローカーへの接続
- トピックへのメッセージのパブリッシュとサブスクライブ
コード例
| #include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* mqtt_server = "broker.hivemq.com";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
if (client.connect("ArduinoClient")) {
client.subscribe("test/topic");
client.publish("test/topic", "Hello world");
}
}
void loop() {
client.loop();
}
void callback(char* topic, byte* message, unsigned int length) {
Serial.print("Message arrived on topic: ");
Serial.print(topic);
Serial.print(". Message: ");
for (int i = 0; i < length; i++) {
Serial.print((char)message[i]);
}
Serial.println();
}
|
4. クラウドサービスとの連携(例:ThingSpeak)
概要
クラウドサービスを使用して、センサーデータを保存・表示する方法を学びます。Arduino UNO R4 WiFiを用いて、ThingSpeakにデータを送信する手順を紹介します。
内容
- ThingSpeakライブラリのインクルード
- ThingSpeakアカウントの設定
- データの送信
コード例
| #include <WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
unsigned long myChannelNumber = YOUR_CHANNEL_NUMBER;
const char * myWriteAPIKey = "YOUR_API_KEY";
WiFiClient client;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
ThingSpeak.begin(client);
}
void loop() {
int sensorValue = analogRead(A0);
ThingSpeak.setField(1, sensorValue);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) {
Serial.println("Channel update successful.");
} else {
Serial.println("Problem updating channel. HTTP error code " + String(x));
}
delay(20000);
}
|
5. 実践演習
演習テーマ
- WiFiを使用したLED遠隔制御
- センサーデータのクラウド送信
- MQTTを使用した機器間通信
具体例
- WiFiを使用したLED遠隔制御
- スマートフォンやPCからHTTPリクエストを送り、LEDのオン/オフを制御します。
-
ステップ:
- ArduinoにWiFi接続
- HTTPサーバーを立ち上げる
- HTTPリクエストを受信し、LEDを制御
-
センサーデータのクラウド送信
- 温度センサーからのデータをThingSpeakに送信し、リアルタイムでデータを表示します。
-
ステップ:
- センサーからデータ取得
- ThingSpeakにデータ送信
- ThingSpeakでデータ確認
-
MQTTを使用した機器間通信
- 複数のArduinoデバイスがMQTTブローカーを通じてメッセージを交換し、協調動作を行います。
- ステップ:
- MQTTブローカーに接続
- トピックにメッセージをパブリッシュ
- トピックからメッセージをサブスクライブ
UNO R4 WiFiチートシート(NEW TAB)