Arduino と Android で WiFiモジュール(ESP-WROOM-02) を動かす! [Arduino]
前回は PCからWiFi経由で ESP-WROOM-02 を動かすことができました。今回はいよいよスマホ(Android)からコントロールできるようにしたいと思います。
Androidのプログラミングには、Android Studio を使ってみました。まず画面の設計をします。IPアドレスとポート番号を設定できるようにエディットテキスト、ステータス表示用テキスト、そしてON,OFF用のボタンを配置しました。
次にスマホからインターネットアクセスできるように、AndroidManifest.xml に”android.permission.INTERNET"を追加します。
プログラムの本体は二つのクラスから構成されています。MainActivty.class と AsyncSocket.class です。次のようにプログラミングしてみました。
MainActivity.class
AsyncSocket.class
AsyncSocket については、こちらの記事も参考にしてください。Arduino側のプログラミングは前回の通りです。実際に動かしてみました。
無事に動きました。これで ESP-WROOM02 をスマホからもコントロールできるようになりました。アプリケーションの幅が広がりそうです。
(^^)/~
<関連記事>
Arduino で WiFiモジュール(ESP-WROOM-02) をWiFiで動かす!
Arduino で WiFiモジュール(ESP-WROOM-02) のLチカを試す!
Arduino 対応 WiFi モジュール(ESP-WROOM-02) の動作確認をしてみた(2)!
Arduino 対応 WiFi モジュール(ESP-WROOM-02) の動作確認をしてみた(1)!
Arduino 対応 WiFi モジュール(ESP-WROOM-02) のファームをアップデート!
Arduino 対応 WiFi モジュール (ESP-WROOM-02) の動作確認をしてみた
Arduino 対応激安 WiFi モジュール (ESP-WROOM-02) にピンヘッダをハンダ付け
Arduino 対応激安 WiFi モジュールが届きました!
Arduino 対応の激安WiFiモジュール
Androidのプログラミングには、Android Studio を使ってみました。まず画面の設計をします。IPアドレスとポート番号を設定できるようにエディットテキスト、ステータス表示用テキスト、そしてON,OFF用のボタンを配置しました。
次にスマホからインターネットアクセスできるように、AndroidManifest.xml に”android.permission.INTERNET"を追加します。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.blinkled" > <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
プログラムの本体は二つのクラスから構成されています。MainActivty.class と AsyncSocket.class です。次のようにプログラミングしてみました。
MainActivity.class
package com.example.blinkled; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText mEditText = null; private TextView mText = null; private Button mLedOn = null; private Button mLedOff = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mEditText = (EditText)findViewById(R.id.edittext); mText = (TextView)findViewById(R.id.result); mLedOn = (Button)findViewById(R.id.ledon); mLedOff = (Button)findViewById(R.id.ledoff); mLedOn.setOnClickListener(this); mLedOff.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.ledon: sendLedOperation("ON"); Log.v("LED" ,"ON"); break; case R.id.ledoff: sendLedOperation("OFF"); Log.v("LED", "OFF"); break; default: } } private void sendLedOperation(String OnOff) { String editText = mEditText.getText().toString(); String ip_and_port[] = editText.split(":"); AsyncSocket socket = new AsyncSocket(ip_and_port[0], ip_and_port[1], mText); socket.execute(OnOff); socket = null; } }
AsyncSocket.class
package com.example.blinkled; import android.os.AsyncTask; import android.widget.TextView; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; 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 text) { mIpAddress = ipStr; mPortNo = Integer.parseInt(portStr); mText = text; } @Override protected String doInBackground(String... params) { try { Socket socket = new Socket(mIpAddress ,mPortNo); OutputStream out = socket.getOutputStream(); out.write(params[0].getBytes()); out.flush(); out.close(); socket.close(); return params[0]; } catch (IOException e) { e.printStackTrace(); return "Failure"; } } @Override protected void onPostExecute(String s) { mText.setText(s); } }
AsyncSocket については、こちらの記事も参考にしてください。Arduino側のプログラミングは前回の通りです。実際に動かしてみました。
無事に動きました。これで ESP-WROOM02 をスマホからもコントロールできるようになりました。アプリケーションの幅が広がりそうです。
(^^)/~
<関連記事>
Arduino で WiFiモジュール(ESP-WROOM-02) をWiFiで動かす!
Arduino で WiFiモジュール(ESP-WROOM-02) のLチカを試す!
Arduino 対応 WiFi モジュール(ESP-WROOM-02) の動作確認をしてみた(2)!
Arduino 対応 WiFi モジュール(ESP-WROOM-02) の動作確認をしてみた(1)!
Arduino 対応 WiFi モジュール(ESP-WROOM-02) のファームをアップデート!
Arduino 対応 WiFi モジュール (ESP-WROOM-02) の動作確認をしてみた
Arduino 対応激安 WiFi モジュール (ESP-WROOM-02) にピンヘッダをハンダ付け
Arduino 対応激安 WiFi モジュールが届きました!
Arduino 対応の激安WiFiモジュール
ESP-WROOM-02実装済みmikroBUS(R)対応ブレークアウトボード
- 出版社/メーカー: マイクロテクニカ
- メディア: おもちゃ&ホビー
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
アプリを作ろう! Android入門 Android Studio版 Android5対応
- 作者: 高江 賢
- 出版社/メーカー: 日経BP社
- 発売日: 2015/08/18
- メディア: 単行本
素晴らしい!
by ktm (2015-10-31 09:13)
ktmさん、ありがとうございます!
by ys_oota (2015-10-31 19:51)