#きっかけ#
ロボカップジュニア2019を観戦しに行ったのを機に、EV3とPCあるいはEV3同士複数台での接続方法を研究したいと思ったため。
#環境#
- EV3 インテリジェントブロック
- シリアル-USB変換モジュール(今回はサンハヤト製MM-FT232)
- パソコン(WindowsでもMacでも可)
↓これがMM-FT232というモジュール
FTDI社製のICであるFT232RQを搭載しています。
同じような変換治具があるならば、これでなくても構いません。
#接続の準備#
EV3のシリアルコンソールに入るには、本体のUSB-Aやmini-Bなどではなく、センサーポート1から仮想シリアルポートとしてPCに接続しなければなりません。
まずはポート1にセンサーケーブルを挿し、もう片側をなんらかの方法で電子回路に組み込めるようにします。
一番ラクなのは、mindsensors.comで売っているBreadboard Connector Kit for NXT or EV3という変換ボードを使う方法だと思います。
しかしながら、海外のサイトということで購入するのは少し難易度が高かったため別の方法を考えました。
EV3(NXT)のセンサーケーブルはモジュラージャックの規格であるRJ11/RJ12とほぼ同じ形状です。
すなわち、同じような形状で6極6芯のソケットを用意すれば良いと考え、以下のようなパーツを購入しました。
これなら電子部品屋に売ってました。
このパーツの右上を削ることでケーブルを挿せるようにしました。
つづいて、配線について。
上の画像のようになっており、以下のように配線します。
(画像は「ロボジョイくらぶ・マイスターブログ/EV3のUSBシリアル変換治具について」のページより)
ざっくりいうと、UARTの通信方式に従い、片方のTXDをもう片方のRXDに接続する感じ。
#FTDI社のドライバをインストール#
ICを動作させるためにFTDI社のホームページからドライバをダウンロード・インストールする必要があります。
https://www.ftdichip.com/Drivers/VCP.htm
ダウンロード・インストールは手順に従って行えばいけるはずです。
#u-bootの起動#
前提として、EV3のボーレートは**115200
**です。
##windowsの場合##
毎度おなじみ、TeraTermを使います。
インストールしていない人は先にやっておいてください。
TeraTermのインストール方法
ではまず、Tera Termを開きます。
開くとどのポートに接続するか選択する画面が出てくるので、以下を参考に適切なものを選んでください。
恐らくUSB Serial Portと出ていると思います。
次に、ボーレートの設定を行います。
[設定]->[シリアルポート]と進んでください。
ここでスピードを115200
に変更します。
これを怠ると文字化けします。
これで準備完了です。
macの場合
ターミナルでscreen
コマンドを使うのが無難でしょう。
まずはポートを調べる必要があるので以下のようにします。
$ ls -la /dev/tty.*
crw-rw-rw- 1 root wheel 21, 4 5 26 20:03 /dev/tty.MindstormsEV3-SerialPor
crw-rw-rw- 1 root wheel 21, 6 6 2 10:47 /dev/tty.usbserial-AK05LF65
この場合、下の/dev/tty.usbserial-AK05LF65がMM-FT232のポートになります。
(上はEV3rtを使用してBluetooth接続したときの仮想ポートです。)
つぎに実際に接続を試みます。
$ screen /dev/tty.usbserial-AK05LF65 115200
これで真っ白な画面になればおそらく繋がっています。
EV3を起動
では起動ボタンを押してみましょう。
以下のように文字列がダダぁーーーと流れるはずです。
(今回はEV3rtでやっています。)
流れてくる文字列は以下に記します。
Mindstorms EV3 標準OS
EV3 initialization passed!
Booting EV3 EEprom Boot Loader
EEprom Version: 0.60
EV3 Flashtype: N25Q128A13B
EV3 Booting system
Jumping to entry point at: 0xC1080000
U-Boot 2009.11 (Oct 26 2012 - 10:30:38)
I2C: ready
DRAM: 64 MB
MMC: davinci: 0
In: serial
Out: serial
Err: serial
ARM Clock : 300000000 Hz
DDR Clock : 132000000 Hz
Invalid MAC address read.
Hit 'l' to stop autoboot: 0
Card did not respond to voltage select!
16384 KiB M25P128 at 0:0 is now current device
## Booting kernel from Legacy Image at c0007fc0 ...
Image Name: Linux-2.6.33-rc4
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1965008 Bytes = 1.9 MB
Load Address: c0008000
Entry Point: c0008000
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
IP-Config: No network devices available.
INIT: version 2.86 booting
Please wait: booting...
Starting udev
Remounting root file system...
Caching udev devnodes
Configuring network interfaces... ifconfig: SIOCGIFFLAGS: No such device
done.
Setting up IP spoofing protection: rp_filter.
INIT: Entering runlevel: 5
Starting system message bus: dbus.
Setting up VirtualDrive...
Initialize Bluetooth...
Found a Texas Instruments' chip!
Firmware file : /lib/firmware/TIInit_6.2.31.bts
Loaded BTS script version 1
texas: changing baud rate to 2000000, flow control to 1
Device setup complete
Serial Port service registered
Starting lms2012
玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻玻
TOPPERS/EV3rt
EV3 initialization passed!
Booting EV3 EEprom Boot Loader
EEprom Version: 0.60
EV3 Flashtype: N25Q128A13B
EV3 Booting system
Jumping to entry point at: 0xC1080000
U-Boot 2009.11 (Oct 26 2012 - 10:30:38)
I2C: ready
DRAM: 64 MB
MMC: davinci: 0
In: serial
Out: serial
Err: serial
ARM Clock : 300000000 Hz
DDR Clock : 132000000 Hz
Invalid MAC address read.
Hit 'l' to stop autoboot: 0
reading boot.scr
** Unable to read "boot.scr" from mmc 0:1 **
reading uImage
871472 bytes read
## Booting kernel from Legacy Image at c0007fc0 ...
Image Name: TOPPERS/hrp2 Kernel (EV3)
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 871408 Bytes = 851 kB
Load Address: c0008000
Entry Point: c0008000
Loading Kernel Image ... OK
OK
Starting kernel ...
TOPPERS/HRP Kernel Release 2.2.1 for EV3(AM1808(ARM926ES-J)) (Aug 1 2018, 09:58:58)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2014 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPAN
EDMA3_CC0.ER: 0x00010c00
EDMA3_CC0.EMR: 0x00000000
Card is present
<6>fb0: ST7586 frame buffer device, using 7 KiB of video memory
<3>fb0: Initing display
System logging task is started on port 1.
<3>fb0: Initing display
brick_dri initialized.
analog_dri initialized.
motor_dri initialized.
i2c_dri initialized.
uart_dri initialized.
sound_dri initialized.
bluetooth_dri initialized.
BT Chip: CC2560
_____ ______ ___ ______
/ __/ | / /_ // _ \/_ __/
/ _/ | |/ //_ </ , _/ / /
/___/ |___/____/_/|_| /_/
==================>Beta 7-2<=
Powered by TOPPERS/HRP2 RTOS
Initialization is completed..
BT Addr: 00:17:EC:F5:93:35
u-bootを操作する。
起動時にパソコン側から**"l"**キーを送り続けると自動起動がキャンセルされ、任意のコマンドが打てるモードに入ります。
考察
今回の経験から、EV3のかなり核心まで迫ることができ、まだまだ未探索部分があることが分かった。
そして、EV3rtにはUARTで情報を吐き出すことが出来るので、それを例のセンサー値監視アプリに応用することもできた。
従って、Connect to EV3は有線でも無線でも使用可能となった。
次回、その件について詳しく書きます。