Arduino IDEやVSCodeでPIC32MXマイコンの開発をする
How to develop PIC32MX MCUs with Arduino IDE/VS Code
ChipKITはArduinoと同じ環境をPICマイコンで実現すべく組まれたオープンソースプロジェクトです。完成済みのChipKITはほとんどが生産終了していますが、自分でChipKITクローンを作ることで、非常に簡単なプログラミングでPIC32MXのアプリを開発できます。
それではまずは回路を作りましょう。必要最低限の部品は下記の通りですが、予備の部品や入出力のためのピンヘッダも多めに用意しましょう。
部品名 | 個数 |
PIC32MX250F128B | 1 |
LED | 1 |
タクトスイッチ | 2 |
抵抗(スイッチ用)/4.7kΩ | 2 |
抵抗(LED用)/330Ω | 1 |
水晶振動子/8MHz | 1 |
セラミックコンデンサ/0.1uF | 5 |
セラミックコンデンサ/22pF | 2 |
電解コンデンサ/10uF | 1 |
3.3v3端子レギュレータ | 1 |
セラミックコンデンサ(レギュレータ用)/0.1uF | 1 |
電解コンデンサ(レギュレータ用)/47uF | 1 |
USBケーブル(オス) | 1 |
画像はChipKIT PIのソースコードをベースに作成しました。リセットピンにタクトスイッチ(押すと電気が流れなくなるようにする)を、RA0にLEDを、RB9にタクトスイッチ(押すと電気が流れる)の3つが特に重要です。
ブレッドボード型ユニバーサル基板を使った半田付けの例です。手持ちの3.3vレギュレーターが表面実装タイプだったので裏側に接着させています。
続いてファームウェア(ブートローダー)をPIC32MX250F128Bに書き込みます。
Githubのブートローダーファイル一覧から「CHIPKIT_PI_USB.hex」をダウンロードし、プログラムライターとMPLAB X IPEを使ってマイコンに書き込みます。ちなみに
ArduinoがあればそれをPickitの代わりにすることができます。
ブートローダーが正常に書き込まれれば、LEDランプが点滅し、ChipKITとなったマイコンがブートローダーモードになります。
続いて開発環境を作りましょう。Arduino IDEを起動したら、「環境設定」の「追加のボードマネージャのURL」に「
https://github.com/chipKIT32/chipKIT-core/raw/master/package_chipkit_index.json」を追加します。
ボード一覧がダウンロードされるので、ツールより「chipKIT Pi」を選びます。
マイコンボードをパソコンに接続すると、USBシリアルデバイス(chipKIT USB Serial)として認識されますので、シリアルポートにはこのポート番号を指定します。
こちらはプログラム例です。14は実装済みのLEDにつながっています。ほかのピンは先ほどの回路図のラベルで確認できます。
ltika.ino
#define PIN_LED 14
void setup()
{
pinMode(PIN_LED, OUTPUT);
}
void loop()
{
digitalWrite(PIN_LED, HIGH);
delay(2000);
digitalWrite(PIN_LED, LOW);
delay(1000);
}
プログラムが書き込まれると、マイコンがリセットされて、LEDの点滅周期が変わります。再度プログラムを書き込む場合は、マイコンボード上にあるプログラムスイッチを押しながらリセットスイッチを押して、マイコンをブートローダーモードとして再起動させる必要があります。
ちなみにArduino Leonardo(Pro Micro)とは記述方法が若干異なりますが、USBデバイスのプログラミングも可能です。
今回の記事のために制作した回路図などはすべて
Githubにアップロードしています。
2020/01/08