はじめに
UIAPduino という話題の290円マイコンを買ったのでLチカしてみました。
公式ドキュメント では Arduino IDE の方が標準開発スタイルとのことですが、バイナリファイルサイズは大きいとのこと。今回は環境としては VSCode + PlatformIO で ch32fun を使います。
UIAPduino 内にあるLEDと、ブレッドボード上に配置したLEDを光らせてみます。
ゴール:UIAPduinoのオレンジ色に光っているLEDと赤LEDの点灯
1. 内臓LEDでLチカ
ゴールとしては PlatformIO より Upload が成功し、ボード中央のLEDが点滅すれば成功です。
公式ドキュメント にも簡単に手順が書いてあります。「ch32fun開発環境で」の章が参考になります。
事前準備
- UIAPduino Pro Micro CH32V003 V1.4
- USB TypeC ケーブル
- VSCode + 拡張機能 PlatformIO
手順
1. ch32fun リポジトリを取得して VSCode で開く
git clone https://github.com/cnlohr/ch32fun.git
cd ch32fun
事前に VSCode に PlatformIO の拡張機能をインストールしておきます。
これによって、PlatformIO が依存関係を自動で読み込みはじめます。
時間がかかるので少し待ちます。
2. platform.ini を UIAPduino 向けに設定する
公式ドキュメント の通りに ch32fun/platform.ini を書き換えて、書き込みツールと書き込み対象をそれぞれminichlinkとUIAPduinoのVIDとPID にします。
変更箇所は upload_protocol = minichlink と upload_flags = -c 0x1209b803 です。
; 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 に置き換えています。
#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. 書き込み
- UIAPduino のリセットボタン(RSTと書かれた上にある唯一のボタン)を押しながら TypeC ケーブルでPCに接続する。
- 接続したらリセットボタンを離します。(ずっと押し続けるとダメみたいです)
- PlatformIO のサイドバーから Build, Upload で書き込みます。
- LEDが点滅することを確認できたら成功です。
6. 補足:初回以降のプロジェクト構築
PIO Home の Projects から Create New Project を押して、Board に UIAP... と入力すると選択肢が出てきます。
ただし、初回と同じように platform.ini に以下を追記する必要があります。
upload_protocol = minichlink
upload_flags =
-c
0x1209b803
また、 funconfig.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
投稿者の人気記事



-
Ala
さんが
昨日の12:31
に
編集
をしました。
(メッセージ: 初版)
ログインしてコメントを投稿する