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

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

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

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

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

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

[Arduinoをはじめよう 互換キット UNO R3対応互換ボード 初心者専用実験キット](https://www.amazon.co.jp/Arduino%E3%82%92%E3%81%AF%E3%81%98%E3%82%81%E3%82%88%E3%81%86-R3%E5%AF%BE%E5%BF%9C%E4%BA%92%E6%8F%9B%E3%83%9C%E3%83%BC%E3%83%89-%E5%88%9D%E5%BF%83%E8%80%85%E5%B0%82%E7%94%A8%E5%AE%9F%E9%A8%93%E3%82%AD%E3%83%83%E3%83%88-%E5%9F%BA%E6%9C%AC%E9%83%A8%E5%93%81%E3%82%BB%E3%83%83%E3%83%8820-sidekick/dp/B00UKXHKXC/ref=sr_1_1?ie=UTF8&qid=1484801060&sr=8-1&keywords=arduino)

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

[Arduinoをはじめよう 第3版 (Make:PROJECTS)](https://www.amazon.co.jp/Arduino%E3%82%92%E3%81%AF%E3%81%98%E3%82%81%E3%82%88%E3%81%86-%E7%AC%AC3%E7%89%88-Make-Massimo-Banzi/dp/487311733X/ref=sr_1_10?ie=UTF8&qid=1484801060&sr=8-10&keywords=arduino)

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

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

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

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

[ESP-WROOM-02 Wi-Fi シールド](https://www.amazon.co.jp/%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9-ESP-WROOM-02-Wi-Fi-%E3%82%B7%E3%83%BC%E3%83%AB%E3%83%89/dp/B01LWQ5A8R/ref=sr_1_1?ie=UTF8&qid=1484803795&sr=8-1&keywords=ESP-WROOM-02+Wi-Fi+%E3%82%B7%E3%83%BC%E3%83%AB%E3%83%89)  

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

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

[Arduino シールド用 スタッカブル・ヘッダー R3 (ピンソケット)](https://www.amazon.co.jp/Arduino-%E3%82%B7%E3%83%BC%E3%83%AB%E3%83%89%E7%94%A8-%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AB%E3%83%96%E3%83%AB-%E3%83%98%E3%83%83%E3%83%80%E3%83%BC-%E3%83%94%E3%83%B3%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88-%E5%90%88%E8%A8%8820%E5%80%8B%E5%85%A5/dp/B009VYHH7A/ref=sr_1_6?ie=UTF8&qid=1484804371&sr=8-6&keywords=%E3%83%94%E3%83%B3%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88)

## Arduino unoにWifi基盤をのせよう

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

はいその通りです。

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

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

[電子工作用はんだこて セット](https://www.amazon.co.jp/goot-%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C%E7%94%A8%E3%81%AF%E3%82%93%E3%81%A0%E3%81%93%E3%81%A6-%E5%AE%89%E5%AE%9A%E6%84%9F%E6%8A%9C%E7%BE%A4%E3%81%AE%E5%A4%A7%E5%9E%8B%E3%82%B3%E3%83%86%E5%8F%B0%E4%BB%98%E3%81%8D-%E3%81%AF%E3%82%93%E3%81%A0%E5%90%B8%E3%81%84%E5%8F%96%E3%82%8A%E7%B7%9A-BM-40S/dp/B01J9KPROU/ref=sr_1_1?ie=UTF8&qid=1484804807&sr=8-1&keywords=%E3%83%8F%E3%83%B3%E3%83%80%E3%82%B4%E3%83%86)

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

[サンハヤト 基板 Arduino用ユニバーサル基板](https://www.amazon.co.jp/%E3%82%B5%E3%83%B3%E3%83%8F%E3%83%A4%E3%83%88-%E5%9F%BA%E6%9D%BF-Arduino%E7%94%A8%E3%83%A6%E3%83%8B%E3%83%90%E3%83%BC%E3%82%B5%E3%83%AB%E5%9F%BA%E6%9D%BF-UB-ARD01/dp/B00429UNHU/ref=sr_1_2?ie=UTF8&qid=1484805058&sr=8-2&keywords=UB-ARD01)

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

※ こんな感じになればOKです！
![image1.png](https://qiita-image-store.s3.amazonaws.com/0/85552/97f6e53d-9f55-8cf4-5dae-a7640e50acf5.png)

(一応裏面も)
![image2.png](https://qiita-image-store.s3.amazonaws.com/0/85552/43c7315a-78e3-5542-58dc-2eb3c80d20f5.png)

(のせたらこんな感じ)
![image3.png](https://qiita-image-store.s3.amazonaws.com/0/85552/db2c4090-7e7f-32e3-d567-ea8e3163fa0a.png)

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

[Arduinoでwifi通信がならない](https://teratail.com/questions/61722)

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

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

[Arduino IDE](https://www.arduino.cc/en/main/software)

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

(全体的に)
![image4.png](https://qiita-image-store.s3.amazonaws.com/0/85552/eb7ff72f-c799-0159-0ba3-ca28dfc5a215.png)

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

# 3.Wifi接続させよう
ここが一番苦労しました。
ここでは答えだけを書きます。
自分はこちらのgitのコードを使いました。

[HTTPPOST.ino](https://github.com/qoosky/Arduino_HttpClient_ESP8266_AT/blob/master/examples/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](https://qiita-image-store.s3.amazonaws.com/0/85552/a9b8671a-903e-8aff-b34c-5ff9ce9e8b93.png)
このようになればOK!


とりあえず、前編はここまでとします。
[後編に続く・・・・](http://qiita.com/mizugasira/items/88575fc0f4117cdc849d)