秋月 GPSレシーバモジュールキット 組み立てのポイント
秋月の GPSモジュール:GPS-52D(B)-014 キットを組み立てる際のポイントです。
- 回路面
- 各部品のピン配置
付属の回路図では、極性のある電解コンデンサが記述されていますが、キットに付属しているコンデンサ(2種類)はいずれも極性がありませんので、向きはどちらでもかまいません。
- アンテナ面
アルミホイルが電池の足にあたってショートしないよう注意します。
- GPSモジュールへの配線
コネクタのピンはかなり折れやすいので注意してください。もし折ってしまった場合には、下記のようにコネクタを利用せず、直接配線することで、半田付けが比較的楽に行えます。
- GPSモジュールのピン配置
下記のようになっています。配線の必要が無いピン(6~8番ピン)には配線してはいけません。
- COMポートの確認
コントロールパネル/システム/ハードウェア タブ でデバイス マネージャー を選択して、ポート (COM と LPT)を確認します。
- 付属アプリケーションの画面
COMポートを正しく設定し、Baudrate を 9600 に、Raw Data を選択、Color のチェックボックスを有効にして、GPSモジュールに電源を入れると下記のような画面となります。
- 受信状態が良い場合
見晴らしの良い場所で2~3分ほど待つとこの色になります。緯度経度、高度などすべての情報が取得できている状態です。
- 回路面
- 各部品のピン配置
付属の回路図では、極性のある電解コンデンサが記述されていますが、キットに付属しているコンデンサ(2種類)はいずれも極性がありませんので、向きはどちらでもかまいません。
- アンテナ面
アルミホイルが電池の足にあたってショートしないよう注意します。
- GPSモジュールへの配線
コネクタのピンはかなり折れやすいので注意してください。もし折ってしまった場合には、下記のようにコネクタを利用せず、直接配線することで、半田付けが比較的楽に行えます。
- GPSモジュールのピン配置
下記のようになっています。配線の必要が無いピン(6~8番ピン)には配線してはいけません。
- COMポートの確認
コントロールパネル/システム/ハードウェア タブ でデバイス マネージャー を選択して、ポート (COM と LPT)を確認します。
- 付属アプリケーションの画面
COMポートを正しく設定し、Baudrate を 9600 に、Raw Data を選択、Color のチェックボックスを有効にして、GPSモジュールに電源を入れると下記のような画面となります。
- 受信状態が良い場合
見晴らしの良い場所で2~3分ほど待つとこの色になります。緯度経度、高度などすべての情報が取得できている状態です。
この記事のトラックバックURL
http://tmp.junkbox.info/tb.php/44
dsPIC30F3012 で PCMデータ再生
比較的メモリサイズの大きい PIC である dsPIC30F3012 を使うと、18 pin DIP の1チップで2秒程度PCMデータが鳴らせます。
2秒あると意外といろいろできますよ!
実装例 (動画)
回路図
詳細は、ソースコードを見たほうが手っ取り早いと思いますので貼り付けます。フリーのC30コンパイラを利用しています。
ソースコード他一式はこちらからダウンロードしてください。
//-------------------------------------------------------
// dsPIC30F3012 で PCM データ再生 (2008/2/25, ksasao)
//-------------------------------------------------------
// - 8kHz, 8bit の PCMデータを再生します。外付けメモリ
// 無しで合計約2秒間鳴らせます。
// - PCMの再生には RD0 の PWM 出力を利用します。
// - dsPICの内蔵クロックを PLLx8 で利用すると3Vで駆動
// できます(PLLx16にしたい場合は5Vが必要です)。
// 本ソースコードは煮たり焼いたりお好きなように。
//-------------------------------------------------------
#include <p30f3012.h>
#include <outcompare.h>
#include <timer.h>
// 設定値は、
// %ProgramFiles%MicrochipMPLAB C30supporthp30f3012.h や
// dsPIC30F3012の PDF を参照してください。
_FWDT(WDT_OFF); // ウォッチドッグタイマ無効
_FGS(CODE_PROT_OFF); // コードプロテクト無効
_FOSC(CSW_FSCM_OFF & FRC_PLL8); // FRC(7.37MHz)xPLL8/4=7.37MIPS * 2
_FBORPOR(PBOR_OFF & PWRT_64 & MCLR_EN);
// 遅延のための関数です
void delay(int count){
while(count--);
}
// 再生処理の宣言です。
void playP(int start,int end);
// 8kHz, 8bitの PCMデータを適当に作成してください(128が中央値です)
const unsigned char WAV_DATA[] = {
129,130,128,126,128,128,131,128,125,128,128,129,128,128,128,128,
// 略
127,126,125,126,128,129,130,131,130,129,128,128,128,128,127,126
};
// ピン割り当て (dsPIC30F3012)
//--------------------------------------------------------------
// 1(I) /MCLR (10kでプルアップ) 18(I) AVdd (+3V)
// 2(I) スイッチ0(RB0) 17(I) AVss (GND)
// 3(I) スイッチ1(RB1) 16(N.C.)
// 4(I) スイッチ2(RB2) 15(N.C.)
// 5(I) スイッチ3(RB3) 14(I) Vdd (+3V)
// 6(N.C.) 13(I) Vss (GND)
// 7(N.C.) 12(N.C)
// 8(I) スイッチ4(RC13) 11(N.C)
// 9(I) スイッチ5(RC14) 10(O) PWM出力(RD0)
//--------------------------------------------------------------
// dsPIC30F3021 の 2 - 5, 8, 9 番ピンは 10kΩでプルアップしておき、
// スイッチが押されたら Lになるよう1kΩの抵抗を各スイッチのGND側に
// 配置します。
int main(void){
// 各ポートの出力値設定
PORTB = 0xFFFF;
PORTC = 0xFFFF;
PORTD = 0xFFFE;
// 入出力設定 (O: 出力, I: 入力, -:無効)
TRISB = 0x000F; // ---- ---- OOOO IIII
TRISC = 0x6000; // OII- ---- ---- ----
TRISD = 0x0000; // ---- ---- ---- ---O
// ADコンバータ設定(0:ADコンバータを利用 1:ディジタルI/Oを利用)
// デフォルトでは、ADコンバータが有効なため、PORTB をディジタル
// I/Oとして利用したい場合は、下記設定は必須です><
ADPCFG = 0xFFFF;
// 今回は適当です。各ボタンが押されたら単純に
// 指定した範囲を再生します。
while (1) {
if(!PORTCbits.RC13){
playP(0,116*16-1);
}
if(!PORTCbits.RC14){
playP(116*16,218*16-1);
}
int b = PORTB;
if(!(b & 0x1)){
playP(218*16,437*16-1);
}
if(!(b & 0x2)){
playP(437*16,570*16-1);
}
if(!(b & 0x4)){
playP(570*16,722*16-1);
}
if(!(b & 0x8)){
playP(722*16,972*16-1);
}
}
return 0;
}
// PCMデータを start から end まで再生します。
void playP(int start,int end){
int p = start;
const int MAX = 256;
TRISD = 0x0000; // ---- ---- ---- ---O
// PWM関連の設定です。リンクするライブラリが結構大きいので、
// インラインアセンブラで書いたほうが良いと思います。
SetDCOC1PWM(0);
OpenOC1(OC_IDLE_CON & OC_TIMER2_SRC & OC_PWM_FAULT_PIN_DISABLE, 0, 0);
// 7.37MHz * 8逓倍(PLL) / 4命令 / MAX段階 = 57.6kHz(@MAX=256)
OpenTimer2(T2_ON & T2_GATE_OFF & T2_PS_1_1 & T2_SOURCE_INT, MAX - 1);
const int WAIT = 360; // 決めうち :-)
// スピーカーが「カチっ!」というのを抑える
int startup = 0;
while(startup < 128){
SetDCOC1PWM(startup++);
delay(WAIT);
}
// ここからがメインの再生
unsigned int c0;
while(p<end) {
c0 = WAV_DATA[p];
p++;
SetDCOC1PWM(c0);
delay(WAIT);
}
// スピーカーが「カチっ!」というのを抑える
int count = 127;
while(count > 0){
SetDCOC1PWM(count--);
delay(WAIT);
}
// ここではスピーカーが停止状態
}
2秒あると意外といろいろできますよ!
実装例 (動画)
回路図
詳細は、ソースコードを見たほうが手っ取り早いと思いますので貼り付けます。フリーのC30コンパイラを利用しています。
ソースコード他一式はこちらからダウンロードしてください。
//-------------------------------------------------------
// dsPIC30F3012 で PCM データ再生 (2008/2/25, ksasao)
//-------------------------------------------------------
// - 8kHz, 8bit の PCMデータを再生します。外付けメモリ
// 無しで合計約2秒間鳴らせます。
// - PCMの再生には RD0 の PWM 出力を利用します。
// - dsPICの内蔵クロックを PLLx8 で利用すると3Vで駆動
// できます(PLLx16にしたい場合は5Vが必要です)。
// 本ソースコードは煮たり焼いたりお好きなように。
//-------------------------------------------------------
#include <p30f3012.h>
#include <outcompare.h>
#include <timer.h>
// 設定値は、
// %ProgramFiles%MicrochipMPLAB C30supporthp30f3012.h や
// dsPIC30F3012の PDF を参照してください。
_FWDT(WDT_OFF); // ウォッチドッグタイマ無効
_FGS(CODE_PROT_OFF); // コードプロテクト無効
_FOSC(CSW_FSCM_OFF & FRC_PLL8); // FRC(7.37MHz)xPLL8/4=7.37MIPS * 2
_FBORPOR(PBOR_OFF & PWRT_64 & MCLR_EN);
// 遅延のための関数です
void delay(int count){
while(count--);
}
// 再生処理の宣言です。
void playP(int start,int end);
// 8kHz, 8bitの PCMデータを適当に作成してください(128が中央値です)
const unsigned char WAV_DATA[] = {
129,130,128,126,128,128,131,128,125,128,128,129,128,128,128,128,
// 略
127,126,125,126,128,129,130,131,130,129,128,128,128,128,127,126
};
// ピン割り当て (dsPIC30F3012)
//--------------------------------------------------------------
// 1(I) /MCLR (10kでプルアップ) 18(I) AVdd (+3V)
// 2(I) スイッチ0(RB0) 17(I) AVss (GND)
// 3(I) スイッチ1(RB1) 16(N.C.)
// 4(I) スイッチ2(RB2) 15(N.C.)
// 5(I) スイッチ3(RB3) 14(I) Vdd (+3V)
// 6(N.C.) 13(I) Vss (GND)
// 7(N.C.) 12(N.C)
// 8(I) スイッチ4(RC13) 11(N.C)
// 9(I) スイッチ5(RC14) 10(O) PWM出力(RD0)
//--------------------------------------------------------------
// dsPIC30F3021 の 2 - 5, 8, 9 番ピンは 10kΩでプルアップしておき、
// スイッチが押されたら Lになるよう1kΩの抵抗を各スイッチのGND側に
// 配置します。
int main(void){
// 各ポートの出力値設定
PORTB = 0xFFFF;
PORTC = 0xFFFF;
PORTD = 0xFFFE;
// 入出力設定 (O: 出力, I: 入力, -:無効)
TRISB = 0x000F; // ---- ---- OOOO IIII
TRISC = 0x6000; // OII- ---- ---- ----
TRISD = 0x0000; // ---- ---- ---- ---O
// ADコンバータ設定(0:ADコンバータを利用 1:ディジタルI/Oを利用)
// デフォルトでは、ADコンバータが有効なため、PORTB をディジタル
// I/Oとして利用したい場合は、下記設定は必須です><
ADPCFG = 0xFFFF;
// 今回は適当です。各ボタンが押されたら単純に
// 指定した範囲を再生します。
while (1) {
if(!PORTCbits.RC13){
playP(0,116*16-1);
}
if(!PORTCbits.RC14){
playP(116*16,218*16-1);
}
int b = PORTB;
if(!(b & 0x1)){
playP(218*16,437*16-1);
}
if(!(b & 0x2)){
playP(437*16,570*16-1);
}
if(!(b & 0x4)){
playP(570*16,722*16-1);
}
if(!(b & 0x8)){
playP(722*16,972*16-1);
}
}
return 0;
}
// PCMデータを start から end まで再生します。
void playP(int start,int end){
int p = start;
const int MAX = 256;
TRISD = 0x0000; // ---- ---- ---- ---O
// PWM関連の設定です。リンクするライブラリが結構大きいので、
// インラインアセンブラで書いたほうが良いと思います。
SetDCOC1PWM(0);
OpenOC1(OC_IDLE_CON & OC_TIMER2_SRC & OC_PWM_FAULT_PIN_DISABLE, 0, 0);
// 7.37MHz * 8逓倍(PLL) / 4命令 / MAX段階 = 57.6kHz(@MAX=256)
OpenTimer2(T2_ON & T2_GATE_OFF & T2_PS_1_1 & T2_SOURCE_INT, MAX - 1);
const int WAIT = 360; // 決めうち :-)
// スピーカーが「カチっ!」というのを抑える
int startup = 0;
while(startup < 128){
SetDCOC1PWM(startup++);
delay(WAIT);
}
// ここからがメインの再生
unsigned int c0;
while(p<end) {
c0 = WAV_DATA[p];
p++;
SetDCOC1PWM(c0);
delay(WAIT);
}
// スピーカーが「カチっ!」というのを抑える
int count = 127;
while(count > 0){
SetDCOC1PWM(count--);
delay(WAIT);
}
// ここではスピーカーが停止状態
}
PIC16F88の内蔵クロックを利用する
PIC16F88は内蔵オシレータの周波数設定機能があり、8MHz±約1MHzの範囲を64段階で設定できます。これを利用することで、最大460800bps (誤差1%未満)のシリアル通信が外付けオシレータ(水晶発振子やセラロック)無しに可能となります。内蔵クロックの動作の確認のための最小限のコードを示します。
more ...
more ...
この記事のトラックバックURL
http://tmp.junkbox.info/tb.php/16
新着トラックバック
月頭定例カキコ。はあ~、忙しい。あと2週間はこの調子かと思うとウンザリ。と言うわけでネタがない。そこで今後の予定というか、今気になっていることというか、暇が出来たらした...
| 地質時代 | 06/11/02 17:04 |
Bluetooth RS232 シリアルアダプター AKC121
Network Devices: Bluetooth RS232シリアルアダプター
AKC121 動作確認手順 (Windows XP SP2の場合)
0. 用意するもの
(ハードウェア)
- SPP (Serial Port Profile)対応のBluetoothモジュール (Bluetooth v1.2以上に対応したもの)
Amazon.co.jp:BT-01UDE Bluetooth USBアダプタ (AKC121と接続できることを確認済み)
- USB-シリアル変換ケーブル
- D-sub 9 pin シリアルクロスケーブル
- AKC121
- 5V電源
基板に直接電源を供給する例
(ソフトウェア)
- UTF-8 TeraTerm Pro with TTSSH2 ( 窓の杜: UTF-8 TeraTerm Pro with TTSSH2)
COM1~4だけではなく、COM99までをサポート
1. 接続準備
(準備中)
2. 接続確認
AKC121 側から以下のKCコマンドを実行する。AKC121のデフォルトの通信設定は、115200 bps, N81, ハードウェアフロー, 改行コード=CR であるので、TeraTerm等の設定をあらかじめ行っておくこと。
例: ID 000a94021234 のデバイスに対して、PINをhogehogeに設定
ここまで入力すると Windows側でデバイスが発見されパスワード(デバイスキー)を求められるので、上記で設定したパスワードを入力する。これ以降は通常のシリアル通信と同様に動作する。
3. 自動接続
任意のシリアルケーブル接続デバイスと接続する場合、接続デバイス側でATコマンドを発行することができないことが普通である。AKC121をあらかじめPCに直接接続してSmartCableSetupモードに設定しておくことでこの問題を解決できる。
例: 接続が切れた場合、3秒間隔で100回自動リトライする。
この指定を無効にする場合は、接続が切れた状態で以下のコマンドを実行する。
4. 通信速度の変更
以下のコマンドで通信速度が変更可能である。これは電源を切っても値が保持される。一時的に変更したい場合には ChangeBaud コマンドを利用する。
なお、設定可能な通信速度は、9600, 19200, 38400, 57600, 115200 (出荷時), 230400, 460800, 921600 bps である。
例: デフォルトの通信速度を 38400 bps に設定する。
AKC121 動作確認手順 (Windows XP SP2の場合)
0. 用意するもの
(ハードウェア)
- SPP (Serial Port Profile)対応のBluetoothモジュール (Bluetooth v1.2以上に対応したもの)
Amazon.co.jp:BT-01UDE Bluetooth USBアダプタ (AKC121と接続できることを確認済み)
- USB-シリアル変換ケーブル
- D-sub 9 pin シリアルクロスケーブル
- AKC121
- 5V電源
基板に直接電源を供給する例
(ソフトウェア)
- UTF-8 TeraTerm Pro with TTSSH2 ( 窓の杜: UTF-8 TeraTerm Pro with TTSSH2)
COM1~4だけではなく、COM99までをサポート
1. 接続準備
(準備中)
2. 接続確認
AKC121 側から以下のKCコマンドを実行する。AKC121のデフォルトの通信設定は、115200 bps, N81, ハードウェアフロー, 改行コード=CR であるので、TeraTerm等の設定をあらかじめ行っておくこと。
AT+ZV EnableBond (PC側のID12桁) (任意のパスワード)
AT+ZV SPPConnect (PC側のID番号12桁)
AT+ZV SPPConnect (PC側のID番号12桁)
例: ID 000a94021234 のデバイスに対して、PINをhogehogeに設定
AT+ZV EnableBond 000a94021234 hogehoge
AT+ZV SPPConnect 000a94021234
AT+ZV SPPConnect 000a94021234
ここまで入力すると Windows側でデバイスが発見されパスワード(デバイスキー)を求められるので、上記で設定したパスワードを入力する。これ以降は通常のシリアル通信と同様に動作する。
3. 自動接続
任意のシリアルケーブル接続デバイスと接続する場合、接続デバイス側でATコマンドを発行することができないことが普通である。AKC121をあらかじめPCに直接接続してSmartCableSetupモードに設定しておくことでこの問題を解決できる。
AT+ZV SmartCableSetup (PC側のID12桁) (自動接続リトライ数: 0~999) (リトライ間隔: 1~1000x100 ms)
例: 接続が切れた場合、3秒間隔で100回自動リトライする。
AT+ZV SmartCableSetup 000a94021234 100 30
この指定を無効にする場合は、接続が切れた状態で以下のコマンドを実行する。
AT+ZV DeleteSmartCable
4. 通信速度の変更
以下のコマンドで通信速度が変更可能である。これは電源を切っても値が保持される。一時的に変更したい場合には ChangeBaud コマンドを利用する。
AT+ZV ChangeDefaultBaud (通信速度/bps)
なお、設定可能な通信速度は、9600, 19200, 38400, 57600, 115200 (出荷時), 230400, 460800, 921600 bps である。
例: デフォルトの通信速度を 38400 bps に設定する。
AT+ZV ChangeDefaultBaud 38400
RS-232C
この記事のトラックバックURL
http://tmp.junkbox.info/tb.php/8
新着トラックバック
げん玉とは日本最大級のポイントサイトの1つであり、通常のポイントカードと同じようにサイト内で特定のアクション(広告のクリックもしや案件の利用)をすることにより、ポイン...
| WebMoney(ウェブマネー)を稼ぐ方法 | 10/03/30 21:36 |
TOP PAGE △