LoginSignup
12
14

More than 5 years have passed since last update.

arduino wifiと温度センサを使い簡易的なグラフに出力してみた。(前編)

Last updated at Posted at 2017-01-19

今回qiitaのある記事で興味を惹かれ、軽い気持ちで「とりあえず・・やってみようかな〜」と思いやってみました。

// 元記事です。
http://qiita.com/shanonim/items/c61c1ec3add75f0a471d

1.とにかく物を揃えよう。

とりあえず基礎となる物から

正直何もarduinoのことについてはわからなかったので、とりあえずAmazonにGo!
すると、手頃な物を発見しました。

Arduinoをはじめよう 互換キット UNO R3対応互換ボード 初心者専用実験キット

あと知識0なので書籍も購入。

Arduinoをはじめよう 第3版 (Make:PROJECTS)

とりあえずこれだけ購入、まずはLチカから始めました。
作成キットの中に温度センサも入っているので安心ですね。それに書籍にもセンサ関連のページもあったのであまり困りませんでした。

Wifi接続させるための基盤を。

ここで私のタイトルにあるのを課題としました。
「温度センサを使い、取得した値をWifiを使いデータベースに飛ばし、それをWebページから出力させよう!」というものです。

またここで必要な物が出てきました。
Wifi接続させる物がありませんね。
と言う事で、Wifi接続させる基盤を買いましょう。(こちらもAmazonさんで購入できます。)

ESP-WROOM-02 Wi-Fi シールド

日本の技適もあり安心して使う事ができますね。

あと、Arduino unoに上のWifi基盤をのせるためにピンソケットも購入しましょう。
上記のArduinoをはじめよう 互換キットの方にはピンソケットは入っていません。

Arduino シールド用 スタッカブル・ヘッダー R3 (ピンソケット)

Arduino unoにWifi基盤をのせよう

これでよし! と思ったのですが、さすがわ初心者やらかしました。
「あれ、きちんとピンソケットつけたのに電力供給されない・・・・・。」

はいその通りです。

「ハンダ付け」という物を知りませんでした。(ゆとりって恐ろしい・・)

ということでまたも購入しました。

電子工作用はんだこて セット

いきなり基盤にハンダするのはナンセンスなので、練習用の基盤を購入しましょう。

サンハヤト 基板 Arduino用ユニバーサル基板

もっと安い練習用の基盤もあるのでそれで練習しても構いません。
とりあえず、練習あるのみです。

※ こんな感じになればOKです!
image1.png

(一応裏面も)
image2.png

(のせたらこんな感じ)
image3.png

下の記事を参考にしております。 (質問しているのも私ですが・・・)

Arduinoでwifi通信がならない

2.きちんと接続できているか確認

もうここまで読んでいるならしているでしょうが一応書きます。
ArduinoのIDEを公式からインストール

Arduino IDE

そして、1章の最後の画像までうまくできたらArduinoに接続したUSBをコンピュータに接続させる。
私の環境はMac OS X Yosemite 10.10.5でした。

(全体的に)
image4.png

ここでpwrというランプが光っていれば問題なく電力供給されています。

3.Wifi接続させよう

ここが一番苦労しました。
ここでは答えだけを書きます。
自分はこちらのgitのコードを使いました。

HTTPPOST.ino

自分が書き直したコードを載せておきます。

HTTPPOST.ino
#include <HttpClient_ESP8266_AT.h>

// Arduino UNO の場合は、例えばデジタル入出力の 2 番, 4 番ピンを利用して
// ESP-WROOM-02 とシリアル通信するように設定します。

const byte rxPin = 2; // Wire this to Tx Pin of ESP8266
const byte txPin = 4; // Wire this to Rx Pin of ESP8266
HttpClient_ESP8266_AT httpClient(rxPin, txPin);

void setup() {
    // HardwareSerial settings
    Serial.begin(115200);

    // Setup HttpClient_ESP8266_AT
    while(true) {
        if(httpClient.statusAT()) { Serial.println("AT status OK"); break; }
        else Serial.println("AT status NOT OK");
        delay(1000);
    }
    while(true) {  // SSID, PASSWORDは書き換えてください
        if(httpClient.connectAP("SSID", "PASSWORD")) { Serial.println("Successfully connected to an AP"); break; }
        else Serial.println("Failed to connected to an AP. retrying...");
        delay(1000);
    }
    while(true) {
        if(httpClient.statusWiFi()) { Serial.println("WiFi status OK"); break; }
        else Serial.println("WiFi status NOT OK");
        delay(1000);
    }
}

void loop() {
    while(true) {  // post("接続させたいドメイン", "postさせたいファイルまでのパス", "送信させる値", "エンコードの指定")
        // Let's start HTTP POST request
        httpClient.post("www.example.com", "/", "name=hoge%27hoge&val=123", "application/x-www-form-urlencoded");

        // レスポンス status code が 0 以上であればリクエスト成功です。
        //   -1: ノイズ等でシリアル通信ができず、そもそもデータ送信ができなかった。
        //    0: データ送信はできたが、受信データがノイズで壊れてしまっていた。
        //   else (>0): 受信データから正常に HTTP レスポンス status code が得られた。

        if(httpClient.responseStatusCode() >= 0) {
            // 本ページでは電圧レベルコンバータを用意していない想定のため、
            // 受信データが壊れている可能性が高く、したがって 200 が 100 になっていたりするため、
            // 値には興味をもたず、0 以上の値が得られることが重要であると考えてコーディングします。

            Serial.println("SUCCESS");
            break;
        }
        else {
            Serial.println("FAILURE, retrying...");
        }
    }
    delay(1000);
}

これをArduinoに書き込んでシリアルモニタを起動させると。
image5.png
このようになればOK!

とりあえず、前編はここまでとします。
後編に続く・・・・

12
14
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14