10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

プリメイドaiをWiFiで動かそう 分解からアプリ起動まで

Last updated at Posted at 2019-12-21

プリメイドai用WiFiブリッジを作ったよ プリメイドaiをWiFi化を以前書きました
https://qiita.com/usashirou/items/622cb3d7ab2e46ecf5e8
が、分解からアプリまでをマニュアルにしてほしいということで今回書きました。

工具

精密ドライバー(♯0や♯00サイズなど +ネジのみです)
(ケース)オープナー(先端が平たい工具で、傷防止のため樹脂の方が良いです)

分解

まずは耳を分解をしましょう。
DSC_0034 (2).JPG

突起の部分にオープナーを入れてこじ開けます。(力は要りませんので過度な力をかけない事)
*写真は耳の部品が上下逆になっていると思います。
DSC_0032 (2).JPG

両耳の内側のネジ3本ずつを外します。
DSC_0028 (2).JPG

両側の蓋パーツを外し、頭頂部のパーツを外します。
DSC_0029 (2).JPG

最後に、基板のネジ2本を外します。
DSC_0025 (2).JPG

組立

WiFiブリッジ基板を元の基板と同じように取り付け、元に戻します。
配線も同じように取り付けます。
ただし、4ピンコネクタは、向きが上下逆なので反転させてください。
(Ver1.0は正しい向きにシルク印刷が入っています)
DSC_0023 (2).JPG

ファーム更新

組み立て済み基板はファームウェアが入っています。
キット版や、独自のファームウェアを入れたい場合は、以下のようにしてください。
なお、4ピンコネクタは輸送中の破損防止の為ハンダ付けされていません。
必要に応じてはんだ付けをしてください。

Arduinoの準備

これは、M5Stackをはじめよう Arduino編からの引用です。
https://qiita.com/usashirou/items/3d5f03b0de320cf0ee57

まずは、Arduinoをインストールします。
https://www.arduino.cc/en/Main/Software
Arduinoをダウンロードしましょう
Arduino-DL.jpg

ファイル⇒環境設定を開きます
ESP-32-Arduino-0.jpg

以下のアドレスをボードマネージャーのURLに入力します。
https://dl.espressif.com/dl/package_esp32_index.json
ESP-32-Arduino.jpg

ツール→ボード(???ここは気にしないでね)→ボードマネージャーをクリックします。
M5Stack-1.jpg
「ESP32」と入力し、インストールします。
M5Stack-2.jpg

ボードをESP32にします
(ここで選択するESP32は、どれでもいいわけではありませんが、ESP32Dev Moduleならば、問題ないようです)
image.png

次に、上記のGithubのページからファイルをダウンロードします。
・ESP32-Serial-Bridge
https://github.com/AlphaLima/ESP32-Serial-Bridge
Clone or Downloadをクリックし
Download ZIPを選択します
image.png

ダウンロードしたファイルを解凍し、実行します。
すると、こんな画面が出てきます。
image.png
OKを押した場合、必ずConfig.hを同じフォルダに入れるようにしてください。
ArduinoIDEの仕様により、プロジェクト毎にフォルダを作るようになりました。
同じフォルダの中に、conhig.hが入っていないとエラーが出てしまいます。
image.png

書込

プログラムを修正したら、マイコンボードに書き込みます。
このためにはUSB-シリアル変換ケーブルを用意する必要があります。
ただし、出力が800mA以上のものを用意してください。
M5Stackや、ESP-32DevBoardであれば対応可能です。
また、ESP ProgrammerなどのESP専用に作られているものも対応しています。

結線は、USBシリアル変換ケーブルのTXと、基板のTXを、RXとRXにつなぎます。
(基板のTXは、ESP-32のRXへ、RXは、ESP-32のTXにつながっています。)
わかりやすくするために、シルクを接続先のものにしましたが、わかりにくいという指摘を受けたので、Ver1では変更しました。

USBシリアル変換ケーブルをパソコンと接続します。
Arduinoでツール⇒シリアルポートで接続先のCOMポートを指定します。
image.png

シリアルモニタを起動します。
image.png
キチンと動作した場合、画像のように出力されるはずです。
出力内容がループしている場合は、電流不足と思われます。
image.png
それでは、書き込みをしましょう。
基板のPSボタンを押しながらResetを押します。
すると、「waiting for download」と出ます。
これで書き込みが可能になりました。
image.png

この状態で、⇒を押します。
image.png
これで書き込みが開始されます。

通信モードの変更

conhig.hを変更します。
標準では、WIFiのアクセスポイントモードになっていますが、クライアントに変更することが可能になっているようです。

//#define BLUETOOTH
# define OTA_HANDLER 
# define MODE_AP // phone connects directly to ESP
//#define MODE_STA // phone connect station

image.png
使用しないものは先頭に // を加えます。

SSIDとPASS、IPアドレスの設定は15行目(上記がないと13行目)からです。
*IPアドレスはDHCPなのでここでIPアドレスを指定しても反映されないはずです。

// For AP mode:
const char *ssid = "premaidai2";  // You will connect your phone to this Access Point
const char *pw = "Flightcomputer"; // and this is the password
IPAddress ip(192, 168, 4, 1); // From RoboRemo app, connect to this IP
IPAddress netmask(255, 255, 255, 0);

image.png

クライアントの際はIPアドレスを知りたいので返答するようにします。
Mainのコードに以下を追加します。(81行目辺り)

  if(debug) COM[DEBUG_COM]->println(WiFi.localIP());

image.png

うまくつながるとこのようになります。
image.png

SmartConfigの設定

SmartConfigを使うと、アクセスポイントの設定をiOSやAndroidのアプリから入れることができるようになります。
外で作業することが多い人にはお勧めの機能です
日本語資料としてはこちらがおススメ
Keri'sLabo ESP32にSmartConfigでWiFi情報を伝える
https://kerikeri.top/posts/2018-02-16-esp32-smartconfig/

config.hへ追加

#define Smrtconfig // Smrtconfig

メインファイルへ追加

# ifdef Smrtconfig//https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiSmartConfig/WiFiSmartConfig.ino
  WiFi.mode(WIFI_AP_STA);//APモードにする
  WiFi.beginSmartConfig();//SmartConfigをスタート
  Serial.println("Waiting for SmartConfig.");//SmartConfigのデータを待つ
  while (!WiFi.smartConfigDone()) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("SmartConfig received.");//SmartConfigデータ受信

  //APポイントへ接続
  Serial.println("Waiting for WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("WiFi Connected.");//WiFi接続
  Serial.print("IP Address: ");//IPアドレス
  Serial.println(WiFi.localIP());
 #endif

image.png

スマホアプリからWiFiの情報を送信します
2BEBDEFB-8137-44D9-9ECC-5B9BC11099CC.jpeg

当方が書き換えたプログラム
https://github.com/taisirou/premaidai

仮想シリアルポートの設定

今回は、仮想シリアルポートとしてUSRVCOMを使用します。
https://www.usriot.com/support/downloads/usr-vcom-virtual-serial-software.html
USR-VCOM_V3.7.2.525_Setup.exeをインストールします。

基本Nextで進んでいきます。
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

インストールが完了したら、USR-VCOMを起動して、AddCOMをクリックします。
image.png
今回は、192.168.4.1の8880になっています。(私は8881も同じ設定になっています)
image.png

アプリケーション

今回は、プリメイドAI-プレイヤーを使用します。
日本Androidの会秋葉原支部ロボット部 第86回勉強会 / 低レベル勉強会2019年12月 〜はんだ付け大会と深セン体験〜で斉藤 辰一郎さん(@wtoy2saito)が動かされていたことをWiFi経由で可能になります。

プリメイドAI-プレイヤーをダウンロードします。
http://www.wtoy.net/static/pmait/

Ai-Playerを起動し、COMPortを設定し接続ボタンを押します。
これで、プリメイドAiをコントロールできるようになります。
image.png

ロボットのタブでは個別に制御することが可能になります。
https://qiita.com/wtoy2saito/items/2b4fdd0a3d9614a11d9e
image.png

立ち上がらない場合

ESP-32は電流が起動時に800mA必要です。
USBシリアル変換アダプターを使用した場合、電流が足りない為にブート中に落ちて再起動するケースがあります。
起動時にループするときは電流が足りないようです。

また、初期ファームは、アクセスポイントモードになっており、周辺に強力なアクセスポイントがあると立ち上がらないケースがあります。

出荷前検査

完成品のボードは、出荷前に以下を全数しています。
・Reset、GPOOボタンの確認(ダウンロードモードへ入れること)
・WiFiのアクセスポイントへ接続し、電圧、サーボデータの受信、基本操作の送信及び、動作
・初期導入ファームの書き込み

検査時の不良

GPIOのはんだ付けが甘い為にダウンロードモードに入らない
これは半数出ていました(修正の為に、半田をかなり盛っているので汚いです、申し訳ございません)

上記の通り、アクセスポイントモードで立ち上がらない時がある。
ステーションモードで立ち上げることで解決。(なお、問題ないときは全く問題なく立ち上がるんです)

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?