【PICマイコン入門1】初級者向け学習キットと開発環境

ソフト設計



この記事でわかること

・PICマイコン学習に必要なもの
・PICマイコンの開発環境
・PICマイコン学習キットの内容

PICマイコンは30年以上の歴史を持つ、
マイクロチップ・テクノロジー製のマイコンです。

PIC(ピック)とは、Peripheral Interface Controllerの略で、
Peripheral(ペリフェラル)とは「周辺機器」という意味です。

これはチップ内に、ADコンバータや、シリアル通信などの
各種機能を持つ回路が内蔵されており、
このIC1個でLEDやモータ等の周辺機器を制御できることから、
ワンチップマイコンと呼ばれています。

PICマイコンは安価で入手性が良く、
殆どの品種でDIPパッケージ品があることから、
電子工作で利用されることが多いです。

本記事では、このPICマイコンの使い方を学習するにあたり、
ハードウェアとソフトウェアの両方を理解できるように、
市販の学習キットを使った方法を紹介します。

<注意点>
本記事はPICマイコン学習方法の一例を紹介するものであり、
ここで紹介するキットや周辺機器の動作を保証するものではありません。

キット等の購入については自己責任でお願いします。
(不明点等の質問にはお答えできません)

PICマイコンの開発環境

PICマイコンの学習を行う上で必要な構成は以下になります。

・PICマイコンが搭載された基板(ターゲットボード)
 本記事では、以下の学習キットを使用します。

 新居浜高専PICマイコン学習キットVer.3(ACアダプタ付)¥3,300
 ※ACアダプタ無しのキット単体も販売されているので、購入の際は注意が必要です。

このキットは、新居浜工業高等専門学校でプログラミングの授業に使用されているもので、
秋月電子通商の通販サイトから購入できます。

学習キットはVer.1~3まであり、このVer.3は2022年に発売されたものです。

基板はVer.2と同じものですが、搭載PICマイコンがPIC16F886から、
現在の定番であるF1ファミリのPIC16F18857に置き換わっています。
(それに伴い、水晶振動子が20MHzから8MHzに変更)

PICマイコンには、キット上のLEDやブザー等を動作させる16種類のソフトと、
モニタプログラムが書込まれています。

モニタプログラムは、PICkit(後で説明)を介さずにパソコンと通信を行い、
コマンド操作により、LEDの点灯や、ブザーを鳴らしたりでき、
簡単なプログラムを組んで動作させることもできます。

但し、モニタプログラム上で作成したプログラムは
PICマイコン内のフラッシュメモリには記憶されないので、
電源を切ると消えてしまいます。(プログラムはPC内に保存できる)

<モニタプログラムについて>
16種類のソフトと同様、PICマイコンに書込まれたソフト上で動作します。
(キット上の4つのスイッチを操作することで、動作するソフトを指定)

これは、PCから送信された命令を一つづつ実行するもので、
その命令語は、インタプリタ言語のPython(パイソン)に似た専用のコードとなっており、
実際の開発で使用するC言語とは記述様式が若干異なります。

そして、作成できるプログラムは簡単なレベルのものに限定されますが、
ソフトの基本処理(for文やif文など)を学ぶことができます。

また、モニタプログラム上で、15種類のサンプルプログラムを動作できます。
これは、上記の16種類のソフトとは別物で、専用コードで記述されており、
自由に内容を変更できます。(電源オフで元の内容に戻る)

ここでは、プログラムを1行だけ変更して、すぐキットの回路を動作できるので、
ハードウェアの動作も理解しやすいです。

16種類のソフトはVer.2のキットにも入っていますが、
モニタプログラムはVer.3のみ対応しています。

Ver.3に付属するCDには、Ver.2とVer.3用の資料が両方収録されており、
取扱説明書やPICのデータシート等が入っています。

また、プログラムファイルについては、
Ver.2(PIC16F886用)のC言語ソースコード(ファイル)はありますが、
Ver.3(PIC16F18857用)は実行ファイル(Hexファイル)のみです。

Ver.2と3のソフトの違いは、モニタプログラムの有無だけですが、
マイコンが異なるため、Ver.3のキットでは、
Ver.2のソースコードをそのまま使用することができません。(※1)

※1:PIC16F886とPFCF18857はピンの割当てが同じ(ピンコンパチ)ですが、
  各種機能を設定するレジスタの構成が異なるため、
  Ver.3で使用するにはプログラムを一部変更する必要があります。

このため、モニタプログラムを使用しないのであれば、
Ver.2のキットを購入すれば、ソースコードを利用できますが、(※2)
旧タイプのPICマイコンでのプログラミング学習になります。

※2:収録されているソースコードは、
  C言語(XC8コンパイラ)のVerが古いもので記述されているため、
  Ver.2のキット(PIC16F886)でも、割込関数の記述を修正しないと、
  ビルド(実行ファイル生成)時にエラーとなります。
  (void __interrupt() isr(void) → void interrupt isr(void)に修正)

・PICプログラマ(書込み器/デバッカ)
 PICマイコン内のフラッシュメモリへのプログラムの書込みと、デバックを行います。

 プログラムの不具合箇所をバグ(bug:虫)と呼ぶことから、
 デバック(debug:虫の駆除)とは、プログラムを修正することを意味し、
 デバッカはそれを行うための装置です。

 デバッカを使うことで、プログラムを1行づつ実行させたり、
 その時の各種データ値がわかるので、正しい動作か確認することができます。

 本記事ではマイクロチップ製のPICkit4を使用します。
 こちらも、秋月電子通商の通販サイトから購入できます。

 マイクロチップ製 PICkit4 ¥15,800

数年前に比べ、かなり値上げしており、購入するには躊躇する価格になっています。
また、2023年にPICkit5が発売されましたが、4より更に高価(¥17,800)です。

付属のUSBケーブルでパソコンと接続し、
PIC搭載基板とは、必要な配線を行います。(※3)

※3:PICkitのコネクタからの信号線をPICマイコンに接続できるように
  PIC搭載基板は配線及びコネクタを設ける必要があります。

  本記事の学習キットには通信用のコネクタが搭載されており、
   ピンヘッダを使用することで、PICkitと接続できます。

・パソコン
 プログラム開発ソフト(MPLAB(エム・ピー・ラボ) X IDE)はフリーソフトで、
 マイクロチップ社のHPからダウンロードできます。

IDEは統合開発環境(Integrated Development Environment)のことで、
ソフト開発の一連の作業(プログラム設計、デバック、書込み等)を
一つにまとめたソフトになります。

ちなみに、XはMPLAB IDEの後継として2011年リニューアル時に付きました。

また、キットのモニタプログラムを使用する場合には、
通信用ソフト(Tera Tarm(テラ・ターム))をインストールする必要があります。

Tera Tarm:外部機器とシリアル通信するためのソフトで、
     このような通信ソフトをターミナルソフトや、ターミナルエミュレータと呼びます。

Tera Tarmは30年の歴史があり、フリーのターミナルソフトとして有名です。
窓の杜(ソフト紹介サイト)からダウンロードできます。

以上の内容をまとめると、
本キットでPICマイコンの学習を行う場合、次の構成になります。

1.モニタプログラムを使用(初めての人向け)(上記 図2の構成)
 ・デバッカ(PICkit)無しで、作ったプログラムをPICマイコンで動作できる。

 ・モニタプログラム内にある15種類のサンプルプログラムは自由に変更できる。
 
 ・作成したプログラムはマイコンには書込みされない為、電源を切れば消える。

 ・1命令づつ作成(送信)してマイコンを動作できるので、理解しやすい。

2.PICkitを使用(基本知識のある人向け)(上記 図1の構成)
 ・作成したプログラムをマイコン内に書込めるので、電源を切っても消えない。

 ・16種類のソフトについて、プログラムを1行づつ動作させたり、内容を変更できる。

 ・本来のC言語によるマイコン開発環境であり、最終的には本構成での学習が必要。

まずはPICマイコンを動かしてみたい人は、1から始めて、
マイコンの動作をある程度理解してから、2に移行するのが望ましい
ですが、
C言語やデバッカについての基本的な知識があれば、2から始めても良いです。



PICマイコン学習に必要なもの

本記事では、上記の他に以下のものを準備しました。
全て、秋月電子通商の通販サイトで購入できます。([ ]は通販コード)
(送料が都度発生する為、出来るだけまとめて購入した方が良いです)

・両端ロングピンヘッダ 1×40P [C-09056] ¥50
 5ピンを2個分切り取り、PICkitとキット間の接続と、
 この後に登場するUSBシリアル変換モジュールのピン実装に使用しました。
 (40ピンも使いませんが、ピン数が少ないものと価格があまり変わりません

 PICkit及び学習キットのコネクタ挿入時に緩くならない様にロングピンを選び、
 片方のピンを曲げてライトアングルにしました。

・FT234X 超小型USBシリアル変換モジュール [M-08461] ¥780
 キットのモニタプログラムを使用する場合、
 パソコンのUSB端子~キットのシリアル通信コネクタ間の接続に必要となります。

 本モジュールに付属の4Pヘッダはピンが細く、
 キットのコネクタ接続時に緩くなるため使用せず、
 先程の40Pロングピンヘッダから5ピン分を切り取って実装しました。

・USBケーブル USB2.0 Aオス-マイクロBオス 1.5m [C-07607] ¥170
 USB TYPE Aオス~マイクロUSB TYPE Bオスのケーブルで、
 パソコンとUSBシリアル変換モジュール間を接続するのに使用します。

・PICマイコン PIC16F18857 – I/SP [I-11888] ¥330
 学習キットについているマイコンと同じもので、予備として購入しました。

 キットについているプログラム書込済品をマスターとして保管し、
 こちらの未書込品に、キット付属CDに入っている
 実行(HEX)ファイルを書込んで使用しました。(書込みにはPICkitが必要)

・マイクロサーボ SG-90 [M-08761] ¥550
 Tower Pro製のマイクロサーボモータです。
 キットのPICマイコンに書込まれている16種類のソフトにある
 RCサーボの回転制御プログラムを動作させる際に使用します。

・新居浜高専PICマイコン学習キットVer.3 完全ガイド  ¥2,420
 学習キットについてのガイドブックです。

 内容ですが、前半がキットの回路動作や、使用電子部品の知識、
 半田付けのコツ等のハードウェア関連の説明で、
 後半はモニタプログラムを用いたプログラミングの学び方について解説しており、
 初級者向けの参考書となっています。 

 但し、16種類の書込済ソフトの内容や、マイコンへの書込み方、
 MPLABによるプログラム設計方法については解説していないため、
 関連書籍やネット情報から学ぶ必要があります。



新居浜高専PICマイコン学習キットの製作

<キットの内容>
新居浜高専PICマイコン学習キットVer.3(ACアダプタ付)の内容は以下になります。

 ・基板(11.5cm×9cm 両面基板)
 ・電子部品
  PICマイコン(PIC16F18857)
  3 to 8 デコーダ(74LS138)
  トランジスタ(2SC1815、2SA1015)
  LED(単体LED(赤、緑、黄)、7セグメントLED、フルカラーLED)
  抵抗、コンデンサ、水晶振動子、
  スイッチ、ブザー、コンデンサマイク、Cdsセル等
 ・ACアダプタ
 ・資料収録CD-R
  (取説、Ver.2のC言語ソースファイル、Ver.3の実行ファイル等)

取説には、回路図や部品表、組立て方やソフトの使用方法が記載されています。
(取説は通販サイトの商品ページからもダウンロード可能)

<付属CD-Rの内容>
 主なフォルダとファイルのみ記載
 CD-ROM
  │
  ├ NNCT_Kit_Ver2_886(Ver.2用資料フォルダ)
  │  ├ NNCT_Kit_Ver2.X(Ver.2用ソフトのプロジェクトフォルダ)
  │  │  │ nnct_kit_v2.c(Ver.2用C言語ソースファイル)
  │  │  ├ build
  │  │  ├ dist
  │  │  │  ├ default
  │  │  │  │  └ production
  │  │  │  │    NNCT_Kit_Ver2.X.production.hex(Ver.2用機械語実行ファイル)
  │  │  │  │     
  │  │  │  └ default(95)
 │  │  └ nbproject
  │  │
  │  ├ sample_LED.X(LED点滅ソフトのプロジェクトフォルダ)
  │  │  │  sample_LED.c(C言語ソースファイル)
  │  │  ├ build
  │  │  ├ dist
  │  │  │  └ default
  │  │  │    └ production
  │  │  │      sample_LED.X.production.hex(機械語実行ファイル)
  │  │  │
  │  │  └ nbproject
  │  │
  │  └─資料
  │     41291D.pdf(PIC16F886データシート)
  │     キット取扱説明書.pdf(Ver.2用キット取扱説明書)
  │     回路動作説明.pdf
  │
  └ NNCT_Kit_Ver3_with_monitor_18857(Ver.3用資料フォルダ)
     AE-NIIHAMA-ver3.pdf(Ver.3用キット取扱説明書)
     NNCTkit_v3.X.production.hex (Ver.3用機械語実行ファイル)
     PIC16LF1885777_Data_Sheet_40001825F.pdf(PIC16F18857データシート)
     モニタプログラムの使い方.pdf

・C言語ソースファイルはVer.2用のみで、Ver.3は無い。
 ソースコードを変更すればVer.3でも16種類のソフトを動作できるが、
 モニタプログラムは入っていない。

・LED点滅ソフトはLED(D4)を点滅させるプログラムで、
 Ver.3で動作させるには、ソースコードの変更が必要。

・Ver.3の実行ファイルがあるので、PICkitがあれば、
 PICマイコンにVer.3用ソフトの書込みは可能。

<作成手順>
紹介する学習キットは半田ごてを使って部品を実装する必要があります。
完成までの所要時間は3時間半程度です。

半田付けの際は、基板にフラックスを塗布した方が
基板のランド(取付穴の部分)に半田が付き易くなり、製作が楽になります。

半田ごての紹介と、半田付け方法については、以下記事で解説しています。

背の低い部品から実装することで、半田付けがしやすくなり、
実装済の部品を組立中に曲げてしまうリスクを低減できます。

1.部材の確認
 部品表の部品が全て揃っているか確認します。
 (ちなみに、私の場合は抵抗が1個余分に入っていました)

2.抵抗をリードフォーミングする
 抵抗のリードを基板の取付ピッチに合う様に曲げておきます。
 (ラジオペンチを使うと、綺麗に直角曲げできます)

 但し、330Ω(橙橙茶金 R24~R31)は縦向きに実装するので、
 片足のみ曲げて、U型にフォーミングします。
 
3.抵抗(R24~R31除く)を実装する
 縦向き実装となる330Ω(R24~R31)以外の抵抗を最初に半田付けします。

 この時、抵抗のカラーコードが合うように向きを揃えておくと
 後で抵抗値を確認しやすいです。

 半田付け後、余ったリードをエッジニッパーでカットします。
 この後、実装する部品についても同様に行います。
 (エッジニッパーは半田付けの解説記事内で紹介してます)

 カットしたリードは、この後、部品として使用するので捨てずに取っておきます。
 (完成後も、改造等に利用できます)

4.LED(3mmΦ)を実装する
 極性(リードの長い方がアノード)に注意して実装します。

5.背の低い部品を実装する
 D18:フルカラーLED
   基板のシルクと部品の形状(切り欠き)を合わせる
 X1:水晶振動子
 IC1、IC2:ICソケット・・・1ピン方向のマーキングに合わせる
 SW1~SW4:タクトスイッチ
 VR1:半固定抵抗
 D100、D101 :7セグメントLED・・・上下の向きを基板シルクと合わせる
 MIC:コンデンサマイク・・・シルクに合わせる
 J1:DCジャック
 C1~C4、C8:セラミックコンデンサ

6.ジャンパー線(GND,TP1)を実装する
 抵抗の余ったリードをU字型に加工したものを使用します。

7.背の高い部品を実装する
 C5~C7:電解コンデンサ・・・極性に注意する
 J2、J3:コネクタ、ピンヘッダ
 RA1:集合抵抗・・・1ピンマークに合わせる
 R24~R31:330Ω抵抗
       16種類のソフトにある電子ピアノの鍵盤として使用するため、
       高さを揃えて実装するのが意外と難しいです。
       (フラックスを使うと半田の付きが良くなり楽です)

 PSW:トグルスイッチ・・・取付の極性は無い
 TR1~TR12:トランジスタ
       NPN(2SC1815)とPNP(2SA1015)を間違えない様にします。

    リードを広げ過ぎると部品にストレスがかかるため、
    あまり奥まで部品を挿入しないようにします。
    (基板表面から5mm程度浮かす)

 BZ:圧電スピーカー
   本体は半田付けせずに、余ったリードを使用し、
   基板の穴に通して巻き付けて固定します。

   赤黒のリード線は芯線部分を半田でコーティングし、
   素線がばらけないようにした上で、
   BZのシルク表示部分にあるスルーホールに通して半田付けします。
   (赤線をR、黒線をB)

  リード線への半田付けの方法については、下記記事で解説しています。

 IC1、IC2:PICマイコンとロジックICをソケットに挿入する
      ICのピン幅が広がっているので、ソケットの幅に合わせてから
      向き(1ピン方向のマーキング)に注意して挿入します。

     ICのピンはペンチで曲げると、傾きがピン毎にズレてしまい、
     ソケットに入り難くなってしまう為、片側ずつ平面に押し付けて、
     ピンの列が均等な傾きで曲がるようにします。

 CDS:Cdsセル
    取付後のリードが長くなるので、最後に取り付けます。
    トランジスタ同様、無理をして入れ過ぎないようにします。

 基板用足:スペーサとビスを基板の4隅の穴に取り付けて完成です。

<PICkitとの接続方法>
PICマイコンの書き換えや、MPLABによるプログラミングを行う場合は
キットとPC間にPICkitを仲介させる必要があります。
(USBシリアル変換モジュールは使用しない)

こちらも、40Pロングピンヘッダから
5ピン分を切り取り、片方のピンを曲げてライトアングルにした上で、
PICkitのコネクタとキットのJ2コネクタを接続します。



USBシリアル変換モジュールの製作

モジュールには4ピンヘッダが付属していますが、
ピンが細く、キットのコネクタと接続が緩くなるため使用せず、
標準の太さのものを使用します。

ここでは、先述した40Pロングピンヘッダから5ピン分を切り取って実装しました。

写真の様に片方のリードのうち2本をカットし、曲げてライトアングルにした上で、
残りの3ピン(GND,TXD,RXD)を半田付けします。

3ピンしか接続しないのに5ピンを実装するのは、
キットの5Pコネクタ(J2)接続時に誤挿入を防止するためです。

最後に、USBケーブルのマイクロBオス側を接続し、
キットのコネクタにはモジュールの部品面が外側になるように挿入します。

以上で、ハードウェアのセットアップは終了です。

次回は、プログラム開発ソフト(MPLAB)について解説します。

下記記事で、Tera Tarmの使い方や、本キットのモニタプログラムを使用する際に
Tera Tarmのマクロを使って、ファイルに保存したプログラムをロードしたり、
マイコン内のプログラムをファイルに保存する方法を解説してます。