Raspberry Pi の Arduino IDE で Digispark を使う
1.概要
- Raspberry Pi (Raspbian)のArduino IDEにDigisparkの開発環境をインストールしました。
- Digistump提供のDigisparkインストールパッケージ定義ではRaspbianに対応したHEXダウンローダが用意されていないためDigispark開発環境をインストールできません。
- この辺り(https://forum.arduino.cc/index.php?topic=461404.0)に解決策がありました。これに沿ってインストールすると無事Digisparkが使えるようになりました。
- 他のRaspberry Piにインストールするとき,手動でコピーしてインストールするのは面倒なのでDigisparkインストールパッケージ定義を再構築しRaspbian用ツールを用意しました。これによりArduino IDEボードマネージャからツール一式が自動インストールされます。
- ただし,Digispark-USBデバイスへのアクセスルールをボードマネージャから自動インストールする方法が不明だったので、アクセスルールのインストールは手動で行う必要があります。
2.インストール
- 下のURLの2つのインストールパッケージ定義によりArduino IDEのボードマネージャからDigispark開発環境をインストールします。
https://kimio-kosaka.github.io/digispark-clone/package_digispark-clone_index.json
https://kimio-kosaka.github.io/udev_rules/package_udev-rules_index.json
- まず,Digisparkボードの定義 Digispark AVR Boards (clone) by Kosaka.Lab をインストールします。
- 続いてUSBデバイス・アクセス・ルール
udev_rules by Kosaka.Lab をインストールします。図1
- 次の手動操作でデバイスルールをインストールします。
- メニュー「ツール」→「ボード」と進み「Install Digispark udev-rule」を選択します。図2
これはルールをインストールするための仮装ボードです。
- 再度,メニュー「ツール」を開き,「ブードローダの書き込む」をクリックするとデバイスルールが書き込まれます。
図1 |
図2 |
- デバイスルールのインストールが終ったら,パッケージマネージャで udev_rules by Kosaka.Lab を削除します。
- 参考
- Install Digispark udev-rule を選択し ブートローダ書き込み を実行すると
~/.arduino15/packages/udev_rules/hardware/avr/1.0.1/bootloaders/配下の
シェルスクリプト mk_digispark_rule.sh が実行されます。
mk_digispark_rule.sh
#!/bin/sh
rule_file=/etc/udev/rules.d/49-micronucleus.rules
str1='SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", \
ATTRS{idProduct}=="0753", MODE:="0666"'
str2='KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0",\
ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1"'
echo "Make roule file: $rule_file"
#
if [ -e $rule_file ]; then
echo "Already '$rule_file' is existing"
exit 0
else
sudo touch $rule_file
sudo chmod 666 $rule_file
sudo echo $str1 >>$rule_file
sudo echo $str2 >>$rule_file
sudo chmod 644 $rule_file
exit 0
fi
- これにより,デバイスルールファイル
/etc/udev/rules.d/49-micronucleus.rules が生成されます。
- Arduino IDE 内で任意のシェルスクリプトを実行する仕組みについては下記を参照してください。
Arduino IDE 配下でシェルスクリプトを実行する。
3.その他
- Digistumpのオジリナルのインストールパッケージ定義では旧バージョンのavr-gccがオーバーライドされ不具合が発生しますが,ここで用いたインストールパッケージ定義はavr-gccのオーバーライドはしません。