はじめに
うたたねこさんの電子ガジェット用USB5V給電ボードを購入して遊んでみました。
CH552Tマイコンも搭載されていてLチカできちゃいます!!
Windowsからは書き込みがすんなりできたんですが、LinuxのArduino IDEからだと上手くいかず…
ちょっと詰まったのでメモを残しておきます
環境
Linux mint 6.8.0-57-generic
Arduino 1.8.19
Arduino IDEの環境構築
こちらのブログを参考に設定しました。
書き込みできない
下記のようになって書き込みできませんでした(泣)
Found no CH55x USB Time limit reached, exit process
ちなみにWindowsからはバッチし書き込みできています。
Lチカチカ https://t.co/wPGKi3TsEo pic.twitter.com/EC1CaElOhn
— Xian DIY@技術書典18(え05) (@sabasabasabaniu) May 1, 2025
解決方法
権限の問題でした。下記で解決しました。(Grok先生に聞きました)
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="4348", MODE="0666"' | sudo tee /etc/udev/rules.d/50-ch55x.rules sudo udevadm control --reload-rules sudo udevadm trigger
権限の問題だったっぽい?
— Xian DIY@技術書典18(え05) (@sabasabasabaniu) May 1, 2025
LinuxのArduino IDEからも書き込みできた! https://t.co/we4llTyMWb pic.twitter.com/VQz0l85JdY
ch55xtool を使ってスケッチを焼いてみる
Arduino IDEでコンパイルして、生成されたhexファイルをbinに変換してch5xtoolでCH552Tに書き込みしてみました。 github.com
スケッチをコンパイルした後生成されるhexファイルは下記階層にありました。これは環境によって違うので注意。
/home/xian/Documents/arduino_tmp
こんな感じで設定しておくと
コンパイルすると保存先のパスがわかるぞ
コンパイルして生成されたファイルはこんな感じ
binファイルはないのでhexを変換する必要があるのでした。
from intelhex import IntelHex # 入力HEXファイルと出力BINファイルを指定 hex_file = "CH552T_ledblink.ino.hex" bin_file = "CH552T_ledblink.ino.bin" # HEXファイルを読み込み、BINファイルに変換 ih = IntelHex() ih.fromfile(hex_file, format='hex') ih.tobinfile(bin_file) print(f"Converted {hex_file} to {bin_file}")
このプログラムを実行してbinを生成したのち、CH552TをDFUモードにして
python3 -m ch55xtool -f CH552T_ledblink.ino.bin
を実行すると書き込みできた。
ch55xtool使っても書き込み出来た! https://t.co/tsp7rIXLsA pic.twitter.com/TJRFM2ynaR
— Xian DIY@技術書典18(え05) (@sabasabasabaniu) May 1, 2025
スケッチはこんな感じ
void setup() { // put your setup code here, to run once: pinMode(32,OUTPUT); pinMode(14,OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(32,HIGH); digitalWrite(14,LOW); delay(500); digitalWrite(32,LOW); digitalWrite(14,HIGH); delay(500); digitalWrite(32,HIGH); digitalWrite(14,HIGH); delay(500); }