RasPiとArduinoをつないで、Arduinoのシリアルから情報を取得します。
Arduino側には、GPSロガー的なものを付けています。
shuzo-kino.hateblo.jp
実際のところ
ハードウェア
特に工夫もなく、USBコネクタにArduinoのUSBをつなぐだけ。
通常の電力供給だとギリギリっぽいので外部電源なり太いUSBハブを使うべきかと思われます。
ソフトウェア
コネクタのttyACM0にそのまま流れてくるので、そいつをよろしく自動起動スクリプトで拾ってあげる構成を考えます。
まず、こんな感じでautorun.shを設定。
$ cat autorun.sh #!/bin/sh cd /home/pi cat /dev/ttyACM0 >> gpsdata.log
後で読み込むので実行権限を付けときます。
$ sudo chmod +x autorun.sh
さて、肝心の自動起動ですが……公式はsystemdを使えというとるので、したがいます。
もう、systemdが苦手とか言ってると今後の更新についてけない。
以下のような感じでautorun用のサービスを作成。
$ sudo cat /etc/systemd/system/autorun.service [Unit] Description=Auto Run for GPS on Arduino [Service] Type=simple ExecStart=/home/pi/autorun.sh [Install] WantedBy=multi-user.target
試しに起動してみましょう。
systemctlコマンドでOK。
$ sudo systemctl start autorun.service
コマンド実行後、試しにリストをみると……ありますね。
以前導入した4Gpiのサービスと一緒に。
$ sudo systemctl list-units --type=service | head UNIT LOAD ACTIVE SUB DESCRIPTION 4gpi-networkmanager-helper.service loaded active running NetworkManager Helper for 4GPi 4gpi-setup.service loaded active exited 4GPi Setup alsa-restore.service loaded active exited Save/Restore Sound Card State alsa-state.service loaded active running Manage Sound Card State (restore and store) autorun.service loaded active running Auto Run for GPS on Arduino avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack bluealsa.service loaded active running BluezALSA proxy bluetooth.service loaded active running Bluetooth service console-setup.service loaded active exited Set console font and keymap
さて、このまんまだと次起動したときに動いてくれないので、自動起動を設定します。
$ sudo systemctl enable autorun.service Created symlink /etc/systemd/system/multi-user.target.wants/autorun.service → /etc/systemd/system/autorun.service.
終わったら、再起動しましょう。
$ sudo reboot
つなぎなおしてプロセスを確認。
ちゃんと存在してますね。
$ sudo systemctl list-units --type=service | head | grep autorun autorun.service loaded active running Auto Run for GPS on Arduino
改良すべき事項
何らかの事情で断線したり、ポート割付が異なった場合の対処がされてません。
確実に動くシステムを作りたい方はその辺りを改良する必要があるかと思います。