センサーのデータをインターネットでサーバに送信する仕組みを作りたいなと思ったところからこの壮大な記録がはじまります。(読み終わるまで5分)
PICというものを使うと幸せになれるらしいが全く分からなくていろいろ躓(つまず)いたことを折角なのでまとめる。
PICとは
PIC(Peripheral Interface Controller)とはマイコンの一種でMicrochip社が売っている製品。マイコンにはCPUやROM、RAMが搭載されておりプログラムを実行することが出来る。PIC用のプログラムはC言語で大体作ることができる。PICにプログラムを焼く時には専用のPICKITという道具が別途必要になる。
サイトとか本とか見た時に「PICにプログラム焼けるのは当たり前なので省略」ばっかで、全く理解できずに苦労したぜ。。
今回作る電子回路
もっと早くに見とけばよかった「
はじめてのPICマイコン」というページ。。マルツが書いてくれているのだが、4部構成になっていて入門にちょうどいい。(ちょっと説明汚かったり、無駄な説明あったりするけど。)
このマルツに出てくる次の2つの回路を作る。
1. 基本編
買ってくるもの一覧
電子部品とかコンビニで買えないからホントミス無く買い物した方がいい。
私なんかPICのプログラム焼くためにPICKIT3(またはPICKIT2)が必要になるって知らなかったしオンライン購入、秋葉へ買い物、秋葉へ買い物しましたからね。。ホント時間の無駄。
全部買っても1万円しないから次の物を買ってくるべし。
No. |
名前 |
購入数 |
備考 |
1 |
PICKIT3 |
1 |
4200円で買ったかな? |
2 |
ブレッドボード |
2 |
・PIC焼く用
・回路作る用
の2つがあるといいと思う。 |
3 |
ジャンパワイヤセット(コの字) |
1 |
ブレッドボードとセットになってた。
回路作るときにあると便利。 |
4 |
ジャンパワイヤセット(曲がる奴) |
1 |
PICKITとの接続に使った。
ピンヘッダっていう部品使うのが普通かも。 |
5 |
単3乾電池 |
3 |
「3Vでも動くっしょw」ってやったら動かない。
4.5Vになるように3つ使う。 |
6 |
単3電池3個用電池ボックス |
1 |
直列に繋ぐときに電池ボックス使うべし。
これが無いと無駄に疲れる。 |
7 |
普通のLED |
10 |
5個あれば足りるけど予備。
20mA位で光る普通のLED1個40円位。 |
8 |
220Ω抵抗 |
10 |
5個あれば足りるけど予備。
1個5円位。 |
9 |
10kΩ抵抗 |
2 |
1個あれば足りるけど予備。
1個5円位。 |
10 |
PIC12F683 |
2 |
1個あれば足りるけど予備。
1個250円位。
ベーシックなPICなので同じ型番探すこと。 |
PICプログラムの環境構築
分かってしまえばなんてこたぁ無いんだけど、情報少なくて分かりにくかった。Microchip社から販売されているPIC用のプログラムを作るため次の2つをインストールする必要がある。(ちなみに、Windows7環境で作りました。)
- MPLAB X IDE (プログラム作るIDE)
- XC8 (コンパイラ、有料版もあるけど素人は無料版で十分)
黙ってインストール!
PICプログラムの作成
MPLAB X IDEを起動してプロジェクトを作るところから。
手順。
1. メニューのFile -> New Project... を選択
2. Choose Projectでは標準のままNext
3. Select DeviceではPIC12F683を選択(Mid-Rangeでフィルタすると見つかりやすい)
4. Select HeaderではNoneのままNext
5. Select ToolではPICKIT3を選択してNext
6. Select CompilerではXC8を選択してNext
7. Select Project Name and Folderでは、プロジェクトのパスを適当に設定、エンコードはUTF-8にした
8. プロジェクトが作られた
9. Souce Filesの部分を右クリックして「New -> main.c」を選択
10. newmain.cというファイルを作成
11. だまって次のプログラム書くべし
(簡単な説明はマルツの
第三回の記事に書いてある)
--------------------------------------------------
#include <xc.h>
__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_ON & BOREN_ON & MCLRE_OFF & CP_OFF & IESO_OFF & FCMEN_OFF);
#define _XTAL_FREQ 1000000
void main()
{
OSCCON = 0x40;
ANSEL = 0;
CMCON0 = 0x07;
TRISIO = 0x08;
while(1)
{
GP2 = 1;
__delay_ms(300);
GP2 = 0;
__delay_ms(300);
}
}
--------------------------------------------------
この時にエラーが画面に表示されるんだけど気にしなくていいっぽい。
調べたけど意味わからんかったしそのまま動くから。。
以上でプログラム完成。
PICにプログラムを焼く
焼くのも難しかった。。USBに接続してるんだから勝手に電源供給すると思うやん。。
はい、手順説明しまーす。
1. PIC12F683にプログラムを焼くための回路を用意する
上記サイトにおいてあるこの図の通りに回路作る。
実際に繋いだところがこんな感じ。
2. PICKit3をPCとブレッドボードに接続する
3. PICKIT3の設定を変えるためにレンチマークをクリック
4. PICkit 3 -> Option categoriesでPowerを選択して、「Power target circuit from PICkit3」を選択しOKを押す
5. ハンマーマークをクリックしてビルド
メッセージでエラーが出ない事を確認。
6. PICに矢印が向いてるマークを押して書き込む
完了!
回路を作って動かす
買ってきた部品を回路図通りに並べます。
(プログラムはLED1つを点滅させるものですが、回路は応用編のLEDを5つ点滅させるものでも動きますのでどっちでもいいです。)
4番に10Kの抵抗入れて繋ぐ意味などは
マルツのページに書いてあるので後で読むとよいです。
あとは、間違えなければ動く!
応用編の回路で、LED1個のプログラム動かすとこんな感じ。
完成!
ちなみに、
ココの下の方に書いてある5つのLEDを光らすプログラムを書いて実行したら次のような感じ。
いやー、大変だった。
ホント、素人には厳しいですわ。
私と同じくらいの知識の人がこのページを見たらきっと幸せになるはず。