前回は 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
- メディア: 単行本