余っていたDIP版のPIC18F14K50とユニバーサル基板でテスト用のボードを作ってみました。
このボードを作ってみたのは、部品が余っていたから・・・というのもありますが、秋月の800円PIC18F14K50ボードとブレッドボードの組み合わせでは不便な点があったからです。それは、
- 秋月の800円PIC18F14K50ボードではRA3はPICkit3へ接続するようになっている。
よって、ブレッドボードではこの端子は扱えない。 - USBでいろいろなソフトウェアを作って試すには、ブレッドボードでは持ち運びには不便。
というところからです。双方向でのデータのやりとりを試してみたいので、余っていた気圧センサとI2Cのキャラクタ液晶も載せてあります。気圧センサは液晶の下に置いてあります。(最初の写真は気圧センサから読み取った値を液晶に表示しています)
裏面はこんな感じです。(自分用です。回路図を作っていないのでその代用(^^;。クリックすると特大画像が開きます。)
各部分の説明(自分用です)
- 基板裏面から見て右上の部分
USBのBコネクタで、緑色の部品は100mAの保護用ポリスイッチです。 - 基板裏面から見て真ん中やや上
PIC18F14K50です。GND周りに付いている2個の小さな1608のコンデンサは1uFのチップコンです。VUSBのコンデンサは0.22~0.47uFが推奨だったと思いますが、半端な容量のコンデンサが手持ちになかったので1uFとしています。茶色の2012の大きなコンデンサ2個はクリスタル周りの22pFで、その左の4.7kΩはRA3のプルアップ抵抗、その左の1.2kΩ×2個はLEDの電流制限抵抗、その左の24kΩはタクトスイッチのプルアップ抵抗です。ポートCは内蔵プルアップがないので外付けせざるを得ませんでした。 - 基板裏面から見て左の部分
アナログジョイスティックと3.3VのCMOSレギュレータです。CMOSレギュレータIN/OUTには1uF16Vのチップコンがそれぞれついています。 - 基板裏面から見て左下の部分
2個のタクトスイッチです - 基板裏面から見て右下の部分
LCDモジュールへのコネクタと気圧センサです。4.7kΩ×2個はI2Cバスのプルアップ抵抗です。
ポートアサインは以下の通りとしています。
- RA3 – ブートローダスイッチ(L:ブートローダ起動)
- RB4 – I2CバスSDA
- RB5 – not use
- RB6 – I2CバスSCL
- RB7 – not use
- RC0 – 3.3Vリファレンス電圧入力
- RC1 – アナログジョイスティックY軸入力
- RC2 – アナログジョイスティックX軸入力
- RC3 – LED GREEN(H:点灯)
- RC4 – LED RED(H:点灯)
- RC5 – not use
- RC6 – スイッチ入力左(L:ON)
- RC7 – スイッチ入力右(L:ON)
I2Cバスのアドレスアサインは以下の通りです。
- 0x3E – AQM0802A液晶モジュール
(WRITE : 0x7C) - 0x5C – LPS331AP大気圧センサ
(WRITE : 0xB8 / READ : 0xB9)
ソフトウェアはとりあえず以下の通りです。
- PIC18F14K50側ブートローダ
タクトスイッチとLEDのポートアサインを修正 - PIC18F14K50側アプリケーション
カスタムHIDデバイスのデモプログラムをベースにして、先に作った気圧センサ用のPIC16F1823用のI2C/LPS331/LCDドライバを移植。
さらにTimer0割り込みを使って時間管理(似非マルチタスク処理)ができるように割り込み処理を追加。 - Linuxホスト側ブートローダ
Microchipのサンプルプログラムのまま - Linuxホスト側アプリケーション
昔作ったHIDRAWでデータをやりとりするプログラムを改造し、双方向で希望するデータのやりとりができることを確認
これでLinux環境下でデータのやりとりをUSB経由で好きなようにできそうです。