Arduino UnoのWi-FiシールドはCC3000 Wi-Fiシールドなど高価なものが多くArduino Uno本体より高くなります。なるべく安く仕上げたいのと、Arduino Pro Miniやmbedでも使いたいのでESP8266をaitendoから680円で購入しました。USB-TTLシリアル変換ケーブルを使いWindowsを接続してインターネットへの接続を確認します。
ブレッドボード配線
今回のArduinoはESP8266に3.3V電源を供給する用途で使います。USB-TTLシリアル変換ケーブルはPL2303HXチップを搭載しています。ESP8266とPL2303HXはどちらも3.3Vで動作します。USBケーブルはWindowsのUSBポートに接続します。
- RX (ESP8266) -> TX (USB-TTL)
- TX (ESP8266) -> RX (USB-TTL)
- CH_PD (ESP8266) -> VCC (Arduino Uno 3.3V)
- VCC (ESP8266) -> VCC (Arduino Uno 3.3V)
- GND (ESP8266) -> GND (Arduino)
- GND (USB-TTL) -> GND (Arduino)
CoolTerm
WindowsにCoolTermをインストールします。CoolTermからESP8266にシリアル接続をしてATコマンドを発行します。ESP8266のATコマンドはWikiにリファレンスがあります。
接続の確認
CoolTermを起動したらOptionsボタンを押して設定を確認します。今回の環境ではCOM7ポートを使います。
Terminalタブをクリックします。Handle BS and DEL Characters
にチェックをいれてターミナルでBackSpaceキーを使えるようにします。
ReceiveタブではCapture Local Echo
をチェックして後でテストするHTTPレスポンスが表示されるようにします。
AT
ATでESP8266への接続をテストします。
AT+GMR
AT+GMRでファームウェアのバージョンを表示します。
AT+GMR |
AT+CWJAP
AT+CWJAPでアクセスポイントに接続します。SSIDとパスワードを入力します。
AT+CWJAP="ssid","pwd" |
AT+CIPSTART
AT+CIPSTARTでMeshbluのサーバーに接続します。
AT+CIPSTART="TCP","xxx.xxx.xxx.x",3000 |
AT+CIPSEND
AT+CIPSENDは最初に送信するデータのバイト数を指定します。HTTPのリクエストの文字列は以下です。最後は空行になります。
GET /status |
送信するデータのバイト数をPythonで計算します。
$ python |
AT+CIPSEND=45
コマンドでリクエストのバイト数を入力すると>
が表示されます。
AT+CIPSEND=45 > |
続けて先ほどPythonでバイト数を計算したリクエスト文字列を入力します。
AT+CIPSEND=45 > |
HTTPリクエストを送信するとターミナルにレスポンスが表示されます。MesubluステータスのJSON{"meshblu":"online"}
が表示されました。
SEND OK |