Ala が 2026年05月02日12時31分06秒 に編集
初版
タイトルの変更
UIAPduinoでLチカ(内臓LEDと外付けLED)
タグの変更
UIAPduino
Lチカ
VSCode
PlatformIO
ch32fun
LED
メイン画像の変更
記事種類の変更
セットアップや使用方法
Lチカの変更
ライセンスの変更
(MIT) The MIT License
本文の変更
## はじめに UIAPduino という話題の290円マイコンを買ったのでLチカしてみました。 [公式ドキュメント](https://www.uiap.jp/uiapduino/pro-micro/ch32v003/v1dot4#with-arduino-ide) では Arduino IDE の方が標準開発スタイルとのことですが、バイナリファイルサイズは大きいとのこと。今回は環境としては VSCode + PlatformIO で ch32fun を使います。 UIAPduino 内にあるLEDと、ブレッドボード上に配置したLEDを光らせてみます。 **ゴール**:UIAPduinoのオレンジ色に光っているLEDと赤LEDの点灯  ## 1. 内臓LEDでLチカ ゴールとしては PlatformIO より Upload が成功し、ボード中央のLEDが点滅すれば成功です。 [公式ドキュメント](https://www.uiap.jp/uiapduino/pro-micro/ch32v003/v1dot4#with-arduino-ide) にも簡単に手順が書いてあります。「ch32fun開発環境で」の章が参考になります。 ### 事前準備 * UIAPduino Pro Micro CH32V003 V1.4 * USB TypeC ケーブル * VSCode + 拡張機能 PlatformIO ### 手順 #### 1. ch32fun リポジトリを取得して VSCode で開く ```bash git clone https://github.com/cnlohr/ch32fun.git cd ch32fun ``` 事前に VSCode に PlatformIO の拡張機能をインストールしておきます。 これによって、PlatformIO が依存関係を自動で読み込みはじめます。 時間がかかるので少し待ちます。 #### 2. platform.ini を UIAPduino 向けに設定する [公式ドキュメント](https://www.uiap.jp/uiapduino/pro-micro/ch32v003/v1dot4#with-arduino-ide) の通りに `ch32fun/platform.ini` を書き換えて、書き込みツールと書き込み対象をそれぞれminichlinkと[UIAPduinoのVIDとPID](https://pid.codes/1209/B803/) にします。 変更箇所は `upload_protocol = minichlink` と `upload_flags = -c 0x1209b803` です。 ```ini ; see https://docs.platformio.org/en/latest/projectconf/index.html [platformio] src_dir = . include_dir = . [env] platform = https://github.com/Community-PIO-CH32V/platform-ch32v.git monitor_speed = 115200 ; default upload and debug protocol is "wch-link", using OpenOCD and ; expecting a WCH-LinkE programming adapter. ; To use minichlink (handles WCH-Link(E), USB ISP and some others), uncomment this upload_protocol = minichlink ; can also use minichlink for SWD debugging. beware: step over not working ; correctly, only use "set breakpoint" and "continue". ;debug_tool = minichlink ; additionally uncomment this to use ardulink on a specific COM port upload_flags = -c 0x1209b803 ; to use USB ISP uploader (usually for CH5xx, V20x, V30x), uncomment this ; remember to replug the device in bootloader mode for it to be visible ;upload_protocol = isp ; ※注:以降は変更しない ``` #### 3. ビルド環境の設定 PlatformIOでは、複数の環境がある場合にどの環境を対象にするかを切り替えることができます。 Project Environment Switcher(下部のバーに表示されています)でenv:blinkを選択します。  #### 4. examples/blink/blink.c を UIAPduino の LED に合わせて書き換える コード全体としては下記のようにします。 ++補足 サンプルでは `PIN_KEVIN` 、 `PIN_BOB` と、人の名前?になっていましたが、LED制御用ということで `LED_PIN` に置き換えています。++ ```c #include "ch32fun.h" #include <stdio.h> // GPIOピン定義 #define LED_PIN PC0 int main() { SystemInit(); // GPIOを有効化 funGpioInitAll(); // LED_PINを出力に設定 funPinMode( LED_PIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); while(1) { // D2 を HIGH に設定して LED を点灯 funDigitalWrite( LED_PIN, FUN_HIGH ); Delay_Ms( 1000 ); // D2 を LOW に設定して LED を消灯 funDigitalWrite( LED_PIN, FUN_LOW ); Delay_Ms( 1000 ); } } ``` 以下の図の通り、PC0 が LED になります。 Arduino では、 `pinMode()` や `digitalWrite()` を使いますが、 ch32fun では `funPinMode()` と `funDigtalWrite()` が対応しています。  画像出典:UIAP「UIAPduino Pro Micro CH32V003 V1.4」ピン配置図 License: Creative Commons Attribution 4.0 International https://www.uiap.jp/uiapduino/pro-micro/ch32v003/v1dot4#with-ch32fun-development-environment #### 5. 書き込み 1. UIAPduino のリセットボタン(RSTと書かれた上にある唯一のボタン)を押しながら TypeC ケーブルでPCに接続する。 2. 接続したらリセットボタンを離します。(ずっと押し続けるとダメみたいです) 3. PlatformIO のサイドバーから Build, Upload で書き込みます。  4. LEDが点滅することを確認できたら成功です。 #### 6. 補足:初回以降のプロジェクト構築 1. 1 の手順にて PlatformIO に WCH CH32V がインストールされたため、毎回 ch32fun をクローンして example を使う必要はありません。  PIO Home の Projects から Create New Project を押して、Board に UIAP... と入力すると選択肢が出てきます。  (参考)ボード定義: https://github.com/Community-PIO-CH32V/platform-ch32v/blob/develop/boards/UIAPduino_Pro_Micro_CH32V003_v1dot4.json ただし、初回と同じように `platform.ini` に以下を追記する必要があります。 ```ini upload_protocol = minichlink upload_flags = -c 0x1209b803 ``` また、 `funconfig.h` を空でいいので配置する必要があります。  ```h #ifndef _FUNCONFIG_H #define _FUNCONFIG_H // Place configuration items here, you can see a full list in ch32fun/ch32fun.h // To reconfigure to a different processor, update TARGET_MCU in the Makefile #endif ``` 設定項目を置くためのユーザー側設定ファイルだけど、特に変更がなければ空でよい、という扱いのようです。 ==初回以降のプロジェクト設定まとめ Board で UIAP... を選択し新規プロジェクトを作成。platform.ini に書き込みツールと書き込み対象の設定を追記。funconfig.h の空ファイルを src に配置する。== ## 2. 外部LEDでLチカ ゴールとしてはブレッドボード上に配置したLEDが点滅すれば成功です。 私はいざやってみようと思ったら、「あれ?ブレッドボードにUIAPduino 配置しようと思ったらピンなくない?」となりピンヘッダを追加購入してはんだ付けしたりと人生2回目のはんだを触りました。 ### 事前準備 * UIAPduino Pro Micro CH32V003 V1.4 * USB TypeC ケーブル * VSCode + 拡張機能 PlatformIO * ブレッドボード * ブレッドボード用ジャンプワイヤ * LED * 抵抗 * ピンヘッダ とはんだこて ※ブレッドボードや、ジャンプワイヤ、LED、抵抗、ピンヘッダについては、 電子部品スターター等でAmazonで調べたらオールインワンのものが1700円くらいでありました。 #### 1. ピンヘッダを基板にはんだ付け  ブレッドボードに刺すためにピンヘッダを取り付けます。 基板にあわせてパキっと折ったピンヘッダを短い方を基盤の穴に通して、はんだ付けします。 (ちょっと焦げ?ちゃいました)  #### 2. 配線 外付けの赤LED を GPIO で制御するために、D2 → 抵抗 → LED(長い足) → LED(短い足) → GND とつなぎます。 今回は 内臓LEDとプログラムを同一にして同時に光らせるためにデジタルピンは D2 としました。  文字入り:  ++注意: ☆LED の長い足を + 側 、LEDの短い足をGND側につなぐ ☆LEDの前に抵抗を入れること++ ++補足: 左上の赤いジャンプワイヤの線は使いませんでしたので不要です。++ #### 3. 動作確認 プログラムは内臓LEDで利用したものを使うためすでにTypeCケーブルを接続します。 内臓のLEDと同時に外付けのLEDも点滅することが確認できたら成功です。  ## さいごに UIAPduino でのLチカをやってみました。 内臓LED光らせるのまではよかったですが、ブレッドボード使ってLED光らせようとすると問題が。 あれ?どうやって固定するの?あ、ピンがついてない…!となってはんだ付けまですることに。 購入したスターターキットにはタクトスイッチとかもあったので、 次の拡張としてはスイッチ押下で点灯とかやってみようかなと思っています。 安いと最悪壊れてもいいやの気持ちで使えるのがとても気楽で初心者に優しいですね。 ## 参考 * UIAP公式: https://www.uiap.jp/uiapduino/pro-micro/ch32v003/ * SwitchScienceの販売サイト: https://www.switch-science.com/products/9914 * ch32fun: https://github.com/cnlohr/ch32fun