Arduino と Android で WiFiモジュール(ESP-WROOM-02) を動かす2! [Arduino]
Youtube のコメント上で海外の人とやりとりをしていて、Arduino から Android への通信は試していないことに気が付きました。ということで、試してみることにしました。
ESP-WROOM-02 の Arduinoスケッチです。Android から ON/OFF を受けたらクライアントにLEDの状態を返信するように作りました。
Android コードの通信部分は、コマンドを送信をしたら Arudino からの返信を受信するようにしました。典型的なクライアント・サーバー型のプログラムです。ベースとなるプロジェクトはこちらを参考にしてください。
実際に動いている様子はこちらです。
無事に送受信できました。Arduinoからのセンサーデータを受信できるようにするともっと面白くなりそうですね。
(^_^)/~
ESP-WROOM-02 の Arduinoスケッチです。Android から ON/OFF を受けたらクライアントにLEDの状態を返信するように作りました。
#include <ESP8266WiFi.h> const char* ssid = "your ssid"; const char* password = "your password"; const int LED = 16; WiFiServer server(8080); WiFiClient client; void connectWiFi(const char* ssid ,const char* password) { WiFi.disconnect(); WiFi.mode(WIFI_STA); WiFi.begin(ssid ,password); while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.print("."); } Serial.println(); Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void setup() { Serial.begin(115200); connectWiFi(ssid ,password); server.begin(); client = server.available(); pinMode(LED ,OUTPUT); } void loop() { while ((WiFi.status() != WL_CONNECTED)) { connectWiFi(ssid ,password); } while (!client) { client = server.available(); delay(10); } while (!client.available()) { delay(10); } Serial.println("client connected"); String res = client.readStringUntil('\n'); Serial.println(res); client.flush(); if (res.equals("ON")) { digitalWrite(LED ,HIGH); client.print("LED:ON"); } else if (res.equals("OFF")) { digitalWrite(LED ,LOW); client.print("LED:OFF"); } else { Serial.println("ERROR"); client.print("error"); } client.stop(); }
Android コードの通信部分は、コマンドを送信をしたら Arudino からの返信を受信するようにしました。典型的なクライアント・サーバー型のプログラムです。ベースとなるプロジェクトはこちらを参考にしてください。
public class AsyncSocket extends AsyncTask<String, Void, String> { private String mIpAddress = null; private Integer mPortNo = 0; private TextView mText = null; public AsyncSocket(String ipStr, String portStr ,TextView status) { mIpAddress = ipStr; mPortNo = Integer.parseInt(portStr); mText = status; } @Override protected String doInBackground(String... params) { String data = ""; try { Socket socket = new Socket(mIpAddress, mPortNo); OutputStream out = socket.getOutputStream(); Scanner in = new Scanner(socket.getInputStream()); out.write(params[0].getBytes()); out.flush(); while(!in.hasNextLine()); do { data += in.nextLine(); } while (in.hasNextLine()); out.close(); in.close(); socket.close(); return data; } catch (IOException e) { e.printStackTrace(); return "Socket Failure"; } } @Override protected void onPostExecute(String s) { mText.setText(s); } }
実際に動いている様子はこちらです。
無事に送受信できました。Arduinoからのセンサーデータを受信できるようにするともっと面白くなりそうですね。
(^_^)/~
ESP-WROOM-02実装済みmikroBUS(R)対応ブレークアウトボード
- 出版社/メーカー: マイクロテクニカ
- メディア: おもちゃ&ホビー
[改訂版]Android Studioではじめる 簡単Androidアプリ開発
- 作者: 有山 圭二
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/07
- メディア: 大型本
こんにちは。
いつも楽しく拝見しています。
>>Arduinoからのセンサーデータを受信できるようにするともっと面白くなりそうですね。
私は今ここでセンサーデータを更新できず止まっています。
ぜひ実装し詳細を今まで以上に丁寧に投稿してくださいねー。
応援してます!
by kei (2016-09-12 10:53)
keiさん、いつもご覧いただきありがとうございます。
あれ?随分前にやったような記憶があるのですが、記事にしていなかったのですね。記憶を絞り出して、そのうち記事にしたいと思います。ネタの提供ありがとうございます。^^
by ys_oota (2016-09-12 23:02)