今回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さんで購入できます。)
日本の技適もあり安心して使う事ができますね。
あと、Arduino unoに上のWifi基盤をのせるためにピンソケットも購入しましょう。
※ 上記のArduinoをはじめよう 互換キットの方にはピンソケットは入っていません。
Arduino シールド用 スタッカブル・ヘッダー R3 (ピンソケット)
Arduino unoにWifi基盤をのせよう
これでよし! と思ったのですが、さすがわ初心者やらかしました。
「あれ、きちんとピンソケットつけたのに電力供給されない・・・・・。」
はいその通りです。
「ハンダ付け」という物を知りませんでした。(ゆとりって恐ろしい・・)
ということでまたも購入しました。
いきなり基盤にハンダするのはナンセンスなので、練習用の基盤を購入しましょう。
もっと安い練習用の基盤もあるのでそれで練習しても構いません。
とりあえず、練習あるのみです。
下の記事を参考にしております。 (質問しているのも私ですが・・・)
2.きちんと接続できているか確認
もうここまで読んでいるならしているでしょうが一応書きます。
ArduinoのIDEを公式からインストール
そして、1章の最後の画像までうまくできたらArduinoに接続したUSBをコンピュータに接続させる。
私の環境はMac OS X Yosemite 10.10.5でした。
ここでpwrというランプが光っていれば問題なく電力供給されています。
3.Wifi接続させよう
ここが一番苦労しました。
ここでは答えだけを書きます。
自分はこちらのgitのコードを使いました。
自分が書き直したコードを載せておきます。
#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に書き込んでシリアルモニタを起動させると。
このようになればOK!
とりあえず、前編はここまでとします。
後編に続く・・・・