SSブログ

Arduino と Android で WiFiモジュール(ESP-WROOM-02) を動かす! [Arduino]

前回は PCからWiFi経由で ESP-WROOM-02 を動かすことができました。今回はいよいよスマホ(Android)からコントロールできるようにしたいと思います。


ESP-WROOM02 controlled by Android.JPG


Androidのプログラミングには、Android Studio を使ってみました。まず画面の設計をします。IPアドレスとポート番号を設定できるようにエディットテキスト、ステータス表示用テキスト、そしてON,OFF用のボタンを配置しました。


Android_BlinkLEDApp.png


次にスマホからインターネットアクセスできるように、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)対応ブレークアウトボード

ESP-WROOM-02実装済みmikroBUS(R)対応ブレークアウトボード

  • 出版社/メーカー: マイクロテクニカ
  • メディア: おもちゃ&ホビー



FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス



アプリを作ろう!  Android入門 Android Studio版 Android5対応

アプリを作ろう! Android入門 Android Studio版 Android5対応

  • 作者: 高江 賢
  • 出版社/メーカー: 日経BP社
  • 発売日: 2015/08/18
  • メディア: 単行本




nice!(38)  コメント(2)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 38

コメント 2

ktm

素晴らしい!
by ktm (2015-10-31 09:13) 

ys_oota

ktmさん、ありがとうございます!
by ys_oota (2015-10-31 19:51) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。