工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino MKR1000 + DHT11 で MQTT IoT デモ - Samsung ARTIK Cloud連携

必要な部品と材料

部品 数量
Arduino MKR1000(Wi-Fi内蔵) 2
DHT11 温湿度センサー(4ピン) 1
LED(赤・黄等、アクチュエーター模擬用) 2

使用アプリ・オンラインサービス

プロジェクト概要

2台のArduino MKR1000を用い、一方をDHT11センサー搭載の「送信デバイス」、もう一方をLED搭載の「受信/アクチュエーターデバイス」として、Samsung ARTIK CloudのMQTTブローカー経由で連携させるデモです。送信側が温湿度を定期的にパブリッシュし、ARTIK Cloudのルールエンジンで閾値判定を行い、受信側へアクション(LED点灯/消灯)をコマンド送信します。※ARTIK Cloudは2020年にサービス終了していますが、アーキテクチャは汎用MQTTブローカー(Mosquitto, EMQX, AWS IoT Core等)へ容易に移植可能です。

Arduino IDE セットアップ

ライブラリマネージャから以下をインストール:

  1. WiFi101(MKR1000用Wi-Fiドライバー)
  2. MQTT by Joel Gaehwiler(軽量MQTTクライアント)
  3. ArduinoJson(JSONシリアライズ/パース)

送信側:DHT11 センサーデバイス設定

  1. ARTIK Cloudでデバイスタイプ「DHT11 Sensor」作成
  2. デバイス「DHT11 Sensor A1」登録、デバイスID/トークン取得
  3. 物理配線:DHT11 Data → MKR1000 ピン2、VCC/GND接続
  4. MQTTパラメータ設定(SSL/TLSポート8883)

送信側キーコード

// MQTT設定
char mqttCloudServer[] = "api.artik.cloud";
int mqttCloudPort = 8883;
char mqttCloudClientName[] = "ARTIK-Arduino";
char mqttCloudUsername[] = "[device-id]";
char mqttCloudPassword[] = "[device-token]";
char mqttCloudDataOut[] = "/v1.1/messages/[device-id]";

WiFiSSLClient ipCloudStack;
MQTTClient mqttCloudClient;

void sendToArtikCloud(float temperature, float humidity) {
  loadBuffer(temperature, humidity);
  mqttCloudClient.publish(mqttCloudDataOut, buf);
}

void loadBuffer(float temperature, float humidity) {
  StaticJsonBuffer<200> jsonBuffer;
  JsonObject& dataPair = jsonBuffer.createObject();
  dataPair["temperature"] = temperature;
  dataPair["humidity"] = humidity;
  dataPair.printTo(buf, sizeof(buf));
}

void getNextSample(float* Temperature, float* Humidity) {
  delay(2000);
  *Humidity = dht.readHumidity();
  *Temperature = dht.readTemperature();
  Serial.print("Temperature="); Serial.println(*Temperature);
  Serial.print("Humidity="); Serial.println(*Humidity);
}

受信側:LED アクチュエーターデバイス設定

  1. デバイスタイプ「DHT11 Actor」作成
  2. デバイス「DHT11 Actor A1」登録
  3. 物理配線:赤LED → ピン11、黄LED → ピン13
  4. MQTTパラメータ(非SSLポート1883、アクショントピック購読)

受信側キーコード(アクション受信・パース・LED制御)


char mqttCloudActionsIn[] = "/v1.1/actions/[device-id]";
WiFiClient ipCloudStack;
MQTTClient mqttCloudClient;

void messageReceived(String topic, String payload, char* bytes, unsigned int length) {
  parseBuffer(payload);
}

void parseBuffer(String payload) {
  StaticJsonBuffer<200> jsonBuffer;
  JsonObject& root = jsonBuffer.parseObject(payload);
  const char* nameparam = root["actions"][0]["name"];
  int actionLEDRed = root["actions"][0]["parameters"]["led_red"];
  int actionLEDYellow = root["actions"][0]["parameters"]["led_yellow"];

  // 赤LED制御(遅延OFF付き)
  if (actionLEDRed == 1) {
    if (savedRedValue != 1) { digitalWrite(LED_RED_PIN, HIGH); savedRedValue = 1; }
    savedRedTime = millis();
  } else {
    if (savedRedValue != 0 && millis() - savedRedTime > RED_DELAY) {
      digitalWrite(LED_RED_PIN, LOW); savedRedValue = 0;
    }
  }
  // 黄LED制御(同様)
  // ...
}

ARTIK Cloud ルール設定例

4つのルールで温湿度の組み合わせによりLEDを制御:

完全スケッチ(2ファイル)

記事内に artik_dht11_sensor.ino と artik_led_actor.ino の全文が掲載されています。主な構成:

移行・応用のヒント

製造プロセス

  1. DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
  2. Bluetooth操作のArduinoスパイボットを自作する
  3. FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
  4. 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
  5. 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
  6. ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
  7. Arduinoプロジェクトのための最適化電源ソリューション
  8. Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
  9. スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
  10. DHT11 と Blynk で温湿度をリアルタイム監視する Arduino チュートリアル
  11. MKR1000ピン配置完全解説:IoT開発に最適なArduinoボード