Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

VirtualBoxとUbuntuとArduinoでLチカ

概要

最終的にはROS+Arduinoを試したかったのですが、まず第一歩として、VirtualBox上でUbuntuを起動、ArduinoをつないでLチカのやり方のメモ。
同じような道を進む人の参考になれば幸いです。
(ESPr Developer(ESP-WROOM-02)の場合を追記しました。(2020/05/09))

マシン構成

windows10(ホスト側) + VirtualBox + Ubuntu16.04 + Arduino UNO

進め方

実施した項目は以下の通りです。
※VirtualBox,Ubuntu,Arduino IDEのインストールは済んでいるものとします

  1. VirtualBoxのUSBの設定
  2. Arduinoと接続するポート番号の確認(Ubuntu側)
  3. 2.で確認したポートのパーミッションの変更(Ubuntu側)
  4. スケッチの作成(Ubuntu側)
  5. 動作確認(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チカになります(はず)、それでは。

kaji_demems
ようやくC++の勉強始めた末端自動車系解析エンジニア。教育用のロボカー程度は扱った経験あり。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away