Arduino IDEやVSCodeでPIC32MXマイコンの開発をする

How to develop PIC32MX MCUs with Arduino IDE/VS Code
 
ChipKITはArduinoと同じ環境をPICマイコンで実現すべく組まれたオープンソースプロジェクトです。完成済みのChipKITはほとんどが生産終了していますが、自分でChipKITクローンを作ることで、非常に簡単なプログラミングでPIC32MXのアプリを開発できます。

それではまずは回路を作りましょう。必要最低限の部品は下記の通りですが、予備の部品や入出力のためのピンヘッダも多めに用意しましょう。

部品名個数
PIC32MX250F128B1
LED1
タクトスイッチ2
抵抗(スイッチ用)/4.7kΩ2
抵抗(LED用)/330Ω1
水晶振動子/8MHz1
セラミックコンデンサ/0.1uF5
セラミックコンデンサ/22pF2
電解コンデンサ/10uF1
3.3v3端子レギュレータ1
セラミックコンデンサ(レギュレータ用)/0.1uF1
電解コンデンサ(レギュレータ用)/47uF1
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