#概要
最終的にはROS+Arduinoを試したかったのですが、まず第一歩として、VirtualBox上でUbuntuを起動、ArduinoをつないでLチカのやり方のメモ。
同じような道を進む人の参考になれば幸いです。
(ESPr Developer(ESP-WROOM-02)の場合を追記しました。(2020/05/09))
#マシン構成
windows10(ホスト側) + VirtualBox + Ubuntu16.04 + Arduino UNO
#進め方
実施した項目は以下の通りです。
※VirtualBox,Ubuntu,Arduino IDEのインストールは済んでいるものとします
- VirtualBoxのUSBの設定
- Arduinoと接続するポート番号の確認(Ubuntu側)
- 2.で確認したポートのパーミッションの変更(Ubuntu側)
- スケッチの作成(Ubuntu側)
- 動作確認(Ubuntu側)
1. VirtualBoxのUSBの設定
- VirtualBoxを起動する前にArduinoをマシンに接続します。
- 次にVirtualBoxを起動して、
設定
→USB
で、USBコントローラーを有効化、にチェックを入れます。 - USB1.1(OHCI)コントローラーで、右側の上から2番目、+がついたボタンを押すと、現在ホストマシンに接続されているUSB機器が表示されるので、Arduinoを選択するとデバイスフィルターに追加されます
※Arduinoを接続してすぐには認識されません、ちょっと待つと出てきます - OKを押して、マネージャーの画面に戻り、Ubuntuを起動します
- なお、ESPr Developer(ESP-WROOM-02)を接続した場合は、「FTDI FT231X USB UART」と表示されます、Arduinoとは表示されないので注意が必要です。
2. Arduinoと接続するポート番号の確認
- ArduinoをUSBでPCと接続します
- 以下のコマンドで、USBに接続されているポート名を確認します
ls -l /dev/serial/by-id/
USBに何も接続されていない場合は、"アクセスできません"、と言われてしまいますが、Arduinoが接続されていれば、私の場合は以下の名称が出てきました
../../ttyACM0
(Arduino UNOの場合)
../../ttyUSB0
(ESPr developerの場合)
3. 2.で確認したポートのパーミッションの変更
Ubuntu(Linux)ではwindowsと違ってポートを使用するのにパーミッションを変更する必要があります。
- 下記コマンドで、Arduinoを接続しているUSBのパーミッションを確認します
※Arduinoと接続した状態でないとアクセスできないと怒られます
ls -la /dev/ttyACM0
- 書き込み権限がなければchmodコマンドでパーミッションを変更します
sudo chmod 666 /dev/ttyACM0
- 最初のコマンドでパーミッションを確認します
crw-rw-rw-
となっているはずです
4. スケッチの作成(Ubuntu側)
3.でパーミッションが正しく設定されていれば後はArduinoIDEで作業するのみです。
今回はLチカなので以下のスケッチを書き込みました、1秒毎に点灯と消灯を繰り返す例のやつ。
使用したピンは13番とGNDです。
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
あとはツール
→シリアルポート
でArduinoを接続しているポートを選び、スケッチを書き込めばOK。
5. 動作確認
1秒毎に点灯、消灯が繰り返されればOKです。
Windowsをメインで使っている方(私も)は、ポートのパーミッションが最大の落とし穴かもしれません。
次回はいよいよROSを使用してのLチカになります(はず)、それでは。