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

ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム

必要な部品と材料

Arduino UNO ×1
Espressif ESP8266 ESP-01(Wi-Fiモジュール) ×1
DHT11 温湿度センサー(3ピンタイプ) ×1
ブレッドボード ×1
ジャンパーワイヤー ×1セット
ブレッドボード用電源モジュール 5V/3.3V ×1

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

プロジェクト概要

IoTへの第一歩

IoT初心者にとって、膨大な選択肢からどこから始めればよいか迷うものです。ThingSpeakなら安価で理解しやすく、しかも「かっこいい」最初のプロジェクトになります。

ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム

必要なもの

  1. Arduino UNO
  2. ESP-01
  3. DHT-11センサー
  4. ブレッドボード
  5. ブレッドボード用電源モジュール
  6. ジャンパーワイヤー

重要: ESP-01のピーク電流はArduinoからの給電では賄えません。必ず外部電源(ブレッドボード用電源モジュール等)を使用してください。

配線

ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム

ESP-01接続

DHT-11接続

ブレッドボード電源モジュールのジャンパーを3.3V側に設定するのを忘れずに。

ThingSpeakセットアップ

  1. ThingSpeakでアカウント作成
  2. New Channel作成、フィールドを「Temperature」「Humidity」の2つに設定
  3. API Keysタブの「Write API Key」をメモ(後でコードに貼り付け)
ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム

Arduino IDEライブラリ設定

以下2つのライブラリをZIP形式でダウンロードし、IDEの「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」で追加:

  1. DHT Sensor Library by Adafruit: GitHub
  2. Adafruit Unified Sensor Library: GitHub

SoftwareSerial.hは標準ライブラリなので追加不要。

ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム

コードの準備と書き込み

コード: GitHub または以下をコピー

書き込み前の修正箇所

  1. Write API Keyをコード内の myAPIkey に貼り付け
  2. Wi-FiのSSIDとパスワードを設定
String myAPIkey = "Your Write API key here";
#include <SoftwareSerial.h>
#include <DHT.h>;
SoftwareSerial ESP8266(2, 3); // Rx, Tx
#define DHTTYPE DHT11
#define DHTPIN A0
DHT dht(DHTPIN, DHTTYPE,11);
float humidity, temp_f;
long writingTimer = 17; // 17秒間隔(ThingSpeak無料版は15秒以上)
long startTime = 0;
long waitTime = 0;
boolean relay1_st = false;
boolean relay2_st = false;
unsigned char check_connection=0;
unsigned char times_check=0;
boolean error;

void setup() {
  Serial.begin(9600);
  ESP8266.begin(9600);
  dht.begin();
  startTime = millis();
  ESP8266.println("AT+RST");
  delay(2000);
  Serial.println("Connecting to Wifi");
  while(check_connection==0) {
    Serial.print(".");
    ESP8266.print("AT+CWJAP=\"Wifi Network's name\",\"PassWord\"\r\n");
    ESP8266.setTimeout(5000);
    if(ESP8266.find("WIFI CONNECTED\r\n")==1) {
      Serial.println("WIFI CONNECTED");
      break;
    }
    times_check++;
    if(times_check>3) {
      times_check=0;
      Serial.println("Trying to Reconnect..");
    }
  }
}

void loop() {
  waitTime = millis()-startTime;
  if (waitTime > (writingTimer*1000)) {
    readSensors();
    writeThingSpeak();
    startTime = millis();
  }
}

void readSensors(void) {
  temp_f = dht.readTemperature();
  humidity = dht.readHumidity();
}

void writeThingSpeak(void) {
  startThingSpeakCmd();
  String getStr = "GET /update?api_key=";
  getStr += myAPIkey;
  getStr += "&field1=";
  getStr += String(temp_f);
  getStr += "&field2=";
  getStr += String(humidity);
  getStr += "\r\n\r\n";
  GetThingspeakcmd(getStr);
}

void startThingSpeakCmd(void) {
  ESP8266.flush();
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += "184.106.153.149"; // api.thingspeak.com IP
  cmd += "\",80";
  ESP8266.println(cmd);
  Serial.print("Start Commands: ");
  Serial.println(cmd);
  if(ESP8266.find("Error")) {
    Serial.println("AT+CIPSTART error");
    return;
  }
}

String GetThingspeakcmd(String getStr) {
  String cmd = "AT+CIPSEND=";
  cmd += String(getStr.length());
  ESP8266.println(cmd);
  Serial.println(cmd);
  if(ESP8266.find(">")) {
    ESP8266.print(getStr);
    Serial.println(getStr);
    delay(500);
    String messageBody = "";
    while (ESP8266.available()) {
      String line = ESP8266.readStringUntil('\n');
      if (line.length() == 1) {
        messageBody = ESP8266.readStringUntil('\n');
      }
    }
    Serial.print("MessageBody received: ");
    Serial.println(messageBody);
    return messageBody;
  } else {
    ESP8266.println("AT+CIPCLOSE");
    Serial.println("AT+CIPCLOSE");
  }
}

動作確認

書き込み成功後、ThingSpeakのチャネルページで温度・湿度グラフが15秒間隔で更新されます。

ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム

問題があればコメント欄で質問してください。詳細はvirginrobotics.blogspot.comも参照。

回路図

ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム

コード: GitHub

製造プロセス

  1. Raspberry Pi 2とADS-WS1で屋外気象観測ステーションを構築
  2. Raspberry Piで気象観測ステーションを構築し、日次天気データをメール送信
  3. 高度気象ステーション v2.0:温度・気圧・湿度・高度のリアルタイム監視
  4. Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
  5. Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
  6. ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
  7. Arduino駆動3Dプリントロボットアームの製作:ステップバイステップガイド
  8. DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
  9. 10ドルで作る携帯型Arduino気象観測ステーション – Nano、DHT22、BMP180、LCDで簡単DIY
  10. eDOT:高精度Arduino時計・気象ステーション(IRリモコン・自動輝度調整内蔵)
  11. ゲーム用カスタムArduinoジョイスティックハンドルの製作