1 minute read

Raspberry Pi Zero W + Arduino で作ってみたいものがある。 ただ、わざわざSketchをPCから転送するのも面倒かつデバッグしにくい。。。。ので、Raspberry PiでArduino IDEを使えるようにしてみた。

目指す構成

Raspberry Pi/Arduino共に、コードを試行錯誤しやすい構成を目指す。Arduino IDEをRaspberry Pi上で動作させれば、macからリモートでRaspberry Pi/Arduinoいずれも開発ができて良さそうである。

    mac(OSX) 
        |
      [XWindow] on WIFI 
        |
    Raspberry Pi Zero W
        |
      [USB] on /dev/ttyACM0 
        |
    Arduino Leonard

① Raspberry Piのセットアップ

ディスプレイやキーボード無しでもやれるやり方のメモ

cd /Volumes/boot
touch ssh
vi wpa_supplicant.conf
#vi内で以下を投入して保存
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="WIFIのSSID"
    scan_ssid=1
    psk="WIFIのパスワード"
}
  • Micro SDをRaspberry Piに差して起動させる
  • Raspberry PiのIPを探す
    • 暫くしたらWIFIにRaspberry Piが繋がっているはず。なので、こんな方法でIPを特定する
      • 方法①:自宅ルーターの接続情報などを見る。見慣れないIPがRaspberry Piのもの
      • 方法②:arp -a で見慣れないIPがおそらくRaspberry Piのもの
      • 方法③:一応仕組み上はmacから「ping raspberrypi.local」が通るはず。。。
    • sshで接続
ssh pi@raspberrypi.local
  • 初期セットアップ諸々
    • sudo raspi-config と入力して以下設定を行う
      • change password
      • change hostname
      • change timezone
      • change locale
        • en_GB.UTF-8 を選び直しておいた(ja_JPにするとコンソールが日本語化されてエラーを踏みやすそうなので。。。)
      • enable Camera
      • expand filesystem
    • 再起動(sudo shutdown -r now)
    • sshの設定
      • keygenしてauthorized_keys作成
      • そのほか設定
        • port番号変更/rootログイン禁止/パスワードログイン禁止
      • 設定が終わったらsshd再起動(sudo /etc/init.d/ssh restart)
    • ipv6の無効化
    • アップデート
      • sudo apt-get update
      • sudo apt-get upgrade
      • 再起動(sudo shutdown -r now)
    • 必要最低限の追加パッケージ
      • sudo apt-get install vim

② XWindowの導入

vi ~/.ssh/config
#vi内で以下を投入して保存
XAuthLocation /opt/X11/bin/xauth
ForwardX11 yes
ForwardX11Trusted yes
    - これをやらないと「No xauth data; using fake authentication data for X11 forwarding」と表示されうまく画面転送できない。ここに解決策があった:[Problem with "Warning: No xauth data; using fake authentication data for X11 forwarding."](https://www.linuxquestions.org/questions/linux-virtualization-and-cloud-90/problem-with-warning-no-xauth-data%3B-using-fake-authentication-data-for-x11-forwarding-4175614680/)
export LANG=en_GB.UTF-8
export LC_ALL=$LANG
sudo locale-gen --purge $LANG
sudo dpkg-reconfigure -f noninteractive locales && sudo /usr/sbin/update-locale LANG=$LANG LC_ALL=$LANG
- sshdの設定をやる
sudo vi /etc/ssh/sshd_config
#vi内で以下を投入して保存
X11Forwarding yes
X11UseLocalhost no
    - やらないとこれが出る:X11 forwarding request failed on channel 0。こちらに対応方法があった:[X11 forwarding request failed on channel 0 Error and Solution][https://www.cyberciti.biz/faq/how-to-fix-x11-forwarding-request-failed-on-channel-0/]
- sshdを再起動(sudo /etc/init.d/ssh restart)
  • つないでみる
    • このコマンドを入れた後、XQuartsが起動してデスクトップが表示されたらOK。以下macのターミナルで実行
ssh -X pi@remote_Raspberry_Pi_hostname
lxsession
- 確認できたらctrl-cでデスクトップはけしておく。

③ Arduino IDEの導入

apt-getで入るVerは古いので、本家からARM用のバイナリを、Download & Uploadする。 https://www.arduino.cc/download_handler.php?f=/arduino-1.8.7-r1-linuxarm.tar.xz

  • 展開して起動する。Raspberry Piのターミナルで実行
tar xf ./arduino-1.8.7-r1-linuxarm.tar.xz
cd arduino-1.8.7/
./arduino
  • うまくいった!(XQuartsが起動し、その中で Arduino IDEの窓が立ち上がる)
  • 速度は(信じられないくらい)遅いが、外部Libraryも導入可能
  • 勿論問題なくArduinoへSketchを投入可能。DCモーターを動かして見た

感想

正直XWindow周りは仕組みを理解せずにやっているのでゴリ押し感が否めない。。。がひとまずはやりたいことができた。これでRaspberry Piに突っ込むコードはscpでUPしつつArduino側はIDEで突っ込めるはずである。WIFI経由で。

Updated: