UIAPduinoを試してみた
安価でそれなりの性能のマイコンとして,WCH社のCH32V003を時々使うようになった. 最初はICを基板に半田付けして使っていたが,特に3.3Vで使いたい時には,三端子レギュレータなども使わなければならないので,面倒に感じていた. CH32V003を使ったマイコンボードとしては,WeAct Studioの開発ボードを見付けたので,少し使ってみたが,USBを使うためにはチップ抵抗を三つ半田付けしなければならないことが判った. そのままでUSBを使うことができるCH32V003のマイコンボードとしてUIAPduinoというものがあり,興味はあったが入手経路が限られていたので見送っていたが,なんと開発者の方から連絡があって,譲ってもらえることになった. 昨日届いたのだが,同じ日にUIAPduinoについての記事が出ていたので読んでみたが,興味深いものだった. 積極的に普及活動を行っているようで,大いに感謝したい. 早速,少し使ってみたので,Debian13でのArduino IDEからUIAPduinoを使う方法を説明したい.
まずはArduino IDEをaptでインストールする.
sudo apt install arduino
arduinoを立ち上げると,UIAPduinoには関係しないが,dialoutのgroupに追加するかを聞かれるので,addを指定する. ここでインストールされるarduinoのversionは1.8.19であり, UIAPduinoの公式ページによると,このversionは動作確認されていないそうだが,aptで簡単に使えるversionで使えた方が良いので,以下ではこのversionについて説明する. UIAPduinoを使えるようにするために,ファイル-環境設定として,追加のボードマネージャのURLに
https://github.com/YuukiUmeta-UIAP/board_manager_files/raw/main/package_uiap.jp_index.json
を入れて, ツール-ボード-ボードマネージャで"uiap"などと検索すると,UIAPduinoが出てくるので,インストールする. そして,USBでの書き込み権限を与えるために,以下のコマンドを実行する.
sudo wget -O /etc/udev/rules.d/99-minichlink-uiap.rules https://raw.githubusercontent.com/YuukiUmeta-UIAP/ch32fun/3bfa603f11d493710f2a811b5a2dfad905d9425c/minichlink/99-minichlink-uiap.rules sudo udevadm control --reload-rules sudo udevadm trigger
インストール作業は基本的にはこれで終了であるが,このversionでは書き込み時にエラーが出るので,少し後に説明するような修正が必要である.
それでは,実際の使い方である. 新しいUIAPduinoをUSBに接続すると,二つのLEDが点灯し,一つのLEDが点滅する. 明るさがゆるやかに変化するので,PWMでも使っているのかな. arduino IDEではボードの種類を,ツール-ボード-CH32V EVT Boards Support-Pro Micro CH32V003と選択する. 別のボードをインストールしている場合には,“CH32V EVT Boards Support"が複数出てくることもあるが,その下に"Pro Micro CH32V003"だけがあるものを選択する. 一番簡単な例として, ファイル-スケッチ例-01.Basics-Blinkを選んで,LEDをon/offするプログラムを呼び出す. setup()よりも前に,
#define LED_BUILTIN 2
という行を追加する. ボードのピン番号の2の代りに,ICのピンの名前のPC0でも良い. しかし,いざ書き込みをしようとすると,コンパイルが終った後に,
書き込み中にエラーが発生しました:設定パラメータの「upload.params.quiet」が見つかりません
というエラーが出てしまう. これを回避するためには,設定ファイル ~/.arduino15/packages/UIAP/hardware/ch32v/1.0.42/boards.txt の適当な場所に,
CH32V00x_EVT.upload.params.quiet= CH32V00x_EVT.upload.params.verbose=
という行を追加して,arduinoを立ち上げ直せば良い. すると,書き込み時には
Found UIAPduino Pro Micro CH32V003 V1.4 Bootloader Halting Boot Countdown Interface Setup Image written.
と表示されて,うまく終了する. RSTボタンを押すと,LEDが点滅し,プログラムが動いていることが確認できる.
ここで,実際に基板を手に取ってみて,基板上に半田付などができるランドがあることに気が付いたので, 配線図などを見ながら,これらにどのような役割りがあるかを調べたので,それを説明したい. USBの反対側には,SparkFunのQwiicという規格のコネクタを付ける端子があり,I2C用に使うことができる. また,繋っている配線を切断できる場所が三個所あり,これらを切ると, cut1は電源のLEDを切り離す, cut2はUSBのD-のLEDを切り離す, cut3はD2のLEDを切り離す ということができる,LEDの近くにあるランドそれぞれに対応している. さらに,半田を盛って繋ぐことができる場所が三個所あり, JP1はマイコンへの電源電圧の選択, JP2はUSB type-CのCC1(A5)をPC4に接続, JP3はUSB type-CのCC2(B5)をPD2に接続 という操作に対応している.
デフォルトの状態では,マイコンのVCCとGNDを除く18本のピンの内,他の素子と繋っているのは以下のピンであり,これらをGPIOとして使いたい場合には,注意する必要がある. PC0はLEDに接続されている. Qwiicに使われているPC1とPC2は3.3Vでプルアップされている. PD3とPD4はUSBに使われており,PD4はLEDに接続されたりプルアップされたりしている. resetに使うPD7はスイッチとコンデンサを介してGNDにつながっている. つまり,USBに使っている二つは基本的にGPIOには使うことができず,I2C用の二つは3.3Vにプルアップされていることを意識して使わなければならず,RSTの一つは設定によっては入力として使うことが出来る. 個人的には,USBで書き込みする時以外は,PD3とPD4をGPIOとして使えた方が良いと思うが,UIAPduinoのピンには割り振られておらず,これらのピンを使いたい場合には,WeAct Studioの開発ボードを使う方が良いかも知れない. プルアップはソフトからも出来たと思うが,Qwiicは3.3Vなので,電源が3.3Vの時にはQwiicのプルアップは無くても良い気がするが,電源が5Vのときにも使えるようにハードとして実装しているのだろう. どうしてもプルアップしたく無い場合には,Qwiic用のランドの近くの小さなチップ抵抗を外せば良いのだと思う. また,PD1は,WCH-LinkEを用いた書き込みに使うので注意が必要である. 残りの12ピンは,ほぼ自由にGPIOとして使うことが出来る.
今後は,このボードを使って何か機能のあるものを作ってみたい.