CCS-C学習のTOPへ
[ はじめに ]
多くのPIC関連の書籍を出してこられた後閑哲也氏が、「PICと楽しむRaspberry Pi 活用ガイドブック」を出されました。出版された時に購入していましたが、なかなか取り掛かる時間が取れなかったのですが、やっと始めることとなりました。著者のていねいな説明と図解でおもしろく学習できます。ありがとうございます。
この書籍では、PIC16F1 シリーズを使用してあります。簡単な制御には、ほとんどの場合この PIC16F1 シリーズ で事足りることが多いようです。また
PIC16F1 シリーズを、 IoT やファイルアクセスなどを得意とする Raspberry Pi と共用してして使用すれば、多くの複雑なアプリケーションを実現できることを、この書籍では示されています。この書籍の
PIC サンプルソフトは、XC8 なのですが、当方では実作業で CCS-C を使うことが多いので、サンプルソフトのいくつかを CCS-C に移植してみました。XC8
を使う場合、MCC という便利なツールがあり、この本ではこれを使うことが前提になっていますが、それなり、もしくはそれ故にの難しさもあるようです。ここではソフトの仕様を元に、ダイレクトにCCS-C
で記述してみました。コードを見ていただければお判りになると思いますが、CCS-C で記述したものはシンプルな表現となり、スッキリとしていると思います。どちらを使うかは、それぞれの好みの問題です。ただ、XC8
のソフトもこのように CCS-C に移植して動かすことができます。
[ Contents ]
1. おしゃべり時計の製作
2. 赤外線リモコン付きインターネットラジオ
1. おしゃべり時計の製作
学習用のフォルダ「Clock2_Rasp1」を作成して下さい。下のリストの main.c の範囲をドラッグして選択します、その状態で右クリックしてコピーします。それをメモ帳などのエディタに貼り付けて、「名前を付けて保存」で名前を
main.c として、「Clock2_Rasp1」内に保存してください。
リスト CLOCK
さて、MPLAB-IDEを起動してプロジェクト「Clock2_Rasp1」を作成して下さい。
下図のようにプロジェクトを作成してください。Header に16F1938.h を入れていますが、ここに入れなくてもコンパイルできるし、ここになくとも問題ないです。ただこのファイルはディバッグ中に見ることが多いので、いれておくと便利です。
このファイルは、C:\Program Files (x86)\PICC\Devices (32bitOS, C:\Program Files\PICC\Devices)
にあります。
プロジェクトの作成法については以前に演習でやりました chap1 をご参照ください。

写真では、既に書込器は取り外していますが、CN-PRG に書込器・PICkit3 を接続しラズパイの電源を入れておきます。コンパイルを実行し、HEX
ファイルのダウンロードが完了すると、CN-PRGから書込器を取り外してください。PICの書込ピンを LED-DSP の制御ピンと共用しているからです。RESETボタンを押して、PICを再起動してください。
書籍のラズパイ側の設定が完了していれば、全体として既に動作をしています。LED-DSP の初期値は "12.34" ですが、今の時刻が表示されるとラズパイからのUART受信ができていることになります。

やや見にくいですが(スモークアクリルを付けるとよく見える)、この場合時刻は、"08.29" と表示しています。接近するとL1が点灯し、点灯が
10秒以上継続すると、音声で時刻と天気予報を発声します。音量は VR1 です。

上図は、動作基板の回路図です。元の回路図のドップラーセンサー(U1)は、良い製品(NJR4265)ですが値段が高額(秋月:3,800円)なので、中国製のドップラーセンサー(RCWL-0516、Amazon:120円)にしました。ただしこれは、接近・離反は区別しません。対象物が動いている限り検知します。それで、ソフトを改変し、10秒以上の検知を継続しないと検出フラグ(PlayF)をONしないようにし、また一旦、検出フラグ(PlayF)をONしたら、20秒は無視するようにしました。その部分の変更は、timer1の割り込みルーチン(void
isr1())内を参照してください。
回路図の U2 は、DC-DC コンバータで、ドップラーセンサーの検出距離を伸ばすため +12V を供給するために使いましたが、実際のところ
+5V で十分なので、 U2 は取り付けず J-PWR の 1番ピンを +5Vに接続してください。
また、ラズパイのGPIOに接続するコネクタ(CN-RASP)は、書籍の回路図とは異なり、ラズパイのコネクタ番号と同じ並びをにしているので、接続には注意してください。電源も含まれているので慎重に願います。コネクタ付きフラットケーブルで、合うものを探せなかったので、両端メスの単線コネクタを複数本使って接続しています。
|
2.赤外線リモコン付きインターネットラジオ
学習用のフォルダ「Radio3_Rasp3」を作成して下さい。このフォルダ「Radio3_Rasp3」の中に次の4つのファイルを入れて下さい。下のリストの
main.c の範囲をドラッグして選択します、その状態で右クリックしてコピーします。それをメモ帳などのエディタに貼り付けて、「名前を付けて保存」で名前を
main.c とします。同様に、 lcd_lib_SC2004.c の範囲をコピーして、 lcd_lib_SC2004.c とし、次に、 lcd_lib_SC2004.h
の範囲をコピーして lcd_lib_SC2004.h とし、さらに HardProfile.h の範囲をコピーして HardProfile.h
として保存して下さい。4つのファイルの境目の目印である・・・
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
・・・は、無視して良いです。
ターゲット基板に Raspberry Pi を接続し、更に書き込みディバック基板に Pickit 3 を接続し、PROGコネクタでターゲットに接続し
Raspberry Pi の電源を入れておいてください。
この章では、PIC16F1716が MPLAB-IDE でサポートされていないので、MPLAB-X-IDE でプロジェクトを作成します。しかし、特に、MCC
などは利用しませんのでシンプルに作成できるはずです。プロジェクト作成法については以前に演習でやりました chap4_1 をご参照ください。
リスト RADIO
プロジェクト作成の結果が下図のようになるようにしてください。lcd_lib_SC2004.c は、Important Files に入れていることにご注意ください。lcd_lib_SC2004.c
は、main.c ファイルの中で、#include されています。Header に16F1716.h を入れていますが、ここに入れなくてもコンパイルできるし、ここになくとも問題ないです。ただこのファイルはディバッグ中に見ることが多いので、いれておくと便利です。
次に金槌マークのコンパイルを実行し、「BUILD SUCCESSFUL」が出ればOKです。

先に、書籍のラズパイ側の設定をしておいてください(自動起動: P169の設定)。
次に、下矢印マークのダウンロードを実行してください。ダウンロードが終了すると既に動作を開始していますが、初回は音声が出ない場合があるのでリモコンの選局操作(←,→)をしてください。テラタームを起動し、115200bpsで開くと、下図の右図のようにリモコンを操作した時の該当ボタンの表示をしますのでリモコンが受け付けられていることを確認できます。これの表示は追加で、void
ContactRaspPi() 関数の中の puts() 関数で行っており、使っていないボタンも表示しています。リモコンの電池の接触不良の場合がママ有るので、動作確認には便利です。

回路図は、生基板(初期基板)から赤マークの部分を改造しています。

CN-RASPは、ラズパイの GPIO の 40ピンと同じサイズ・配列で用意していますが、ここでは、写真のように必要なところだけを接続しています。
LCDのコネクタは、CN-LCD と CN-LCD-CABLE の2つを用意しています。CN-LCD は LCD を直付けするためのもの(書籍通り)で、CN-LCD-CABLE
は、写真で行っているようにケーブルを延長するためのものです。ピン番の奇遇が逆になります。どちらも使えます。
この「赤外線リモコン付きインターネットラジオ」を作ってから、もっと手軽な「インターネットラジオ」が欲しくなり、小さな Raspberry Pi
Zero WH で作ってみました。それを ラズパイ Zero によるインターネット・ラジオ として掲載しましたので見てみてください。
1. おしゃべり時計の製作
2. 赤外線リモコン付きインターネットラジオ
・・・の生基板(要・修正改造)をお譲りします。(各1,200円・〒税込み)
必要な方は、汎用製品価格表のトップからご連絡ください。
「PICと楽しむRaspberry Pi 活用ガイドブック」のオリジナルの回路図とは異なっているところ、特に CN-RASP には電源が含まれますので、それだけは十分に注意して接続してください。また、おしゃべり時計の
U1 と U2 のピン径は細ピンになっています(ノーマルピンにするつもりでしたが、ミスです)。
これらの基板は、書籍の XC8 コードでも動かしていますから、XC8 で動かす方も、もちろん使えます。
|