秋月 GPSレシーバモジュールキット 組み立てのポイント

秋月の GPSモジュール:GPS-52D(B)-014 キットを組み立てる際のポイントです。

- 回路面


- 各部品のピン配置
付属の回路図では、極性のある電解コンデンサが記述されていますが、キットに付属しているコンデンサ(2種類)はいずれも極性がありませんので、向きはどちらでもかまいません。


- アンテナ面
アルミホイルが電池の足にあたってショートしないよう注意します。


- GPSモジュールへの配線
コネクタのピンはかなり折れやすいので注意してください。もし折ってしまった場合には、下記のようにコネクタを利用せず、直接配線することで、半田付けが比較的楽に行えます。


- GPSモジュールのピン配置
下記のようになっています。配線の必要が無いピン(6~8番ピン)には配線してはいけません。


- COMポートの確認
コントロールパネル/システム/ハードウェア タブ でデバイス マネージャー を選択して、ポート (COM と LPT)を確認します。


- 付属アプリケーションの画面
COMポートを正しく設定し、Baudrate を 9600 に、Raw Data を選択、Color のチェックボックスを有効にして、GPSモジュールに電源を入れると下記のような画面となります。



- 受信状態が良い場合
見晴らしの良い場所で2~3分ほど待つとこの色になります。緯度経度、高度などすべての情報が取得できている状態です。


 初出: 2008/03/30 02:27 ささお * 内容は随時追記・更新しています。
| 技術メモ::ハードウェア | comments (1) | trackback (1) |このエントリーを含むはてなブックマーク このエントリーをはてなブックマークする
この記事のトラックバックURL
http://tmp.junkbox.info/tb.php/44
新着トラックバック
秋月のGPSレシーバーモジュールキット 製作きろく。
GPSに最近、興味があったので買ってみた。必要に迫られてというのが正しいかもしれないが(笑)
| jm4lfa blog | 08/05/23 02:22 |

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);
    }
    // ここではスピーカーが停止状態
}
 初出: 2008/02/25 01:43 ささお * 内容は随時追記・更新しています。
| 技術メモ::ハードウェア | comments (0) | trackback (0) |このエントリーを含むはてなブックマーク このエントリーをはてなブックマークする

PIC16F88の内蔵クロックを利用する

PIC16F88は内蔵オシレータの周波数設定機能があり、8MHz±約1MHzの範囲を64段階で設定できます。これを利用することで、最大460800bps (誤差1%未満)のシリアル通信が外付けオシレータ(水晶発振子やセラロック)無しに可能となります。内蔵クロックの動作の確認のための最小限のコードを示します。
more ...
 初出: 2006/05/09 01:53 ささお * 内容は随時追記・更新しています。
| 技術メモ::ハードウェア | comments (3) | trackback (1) |このエントリーを含むはてなブックマーク このエントリーをはてなブックマークする
この記事のトラックバックURL
http://tmp.junkbox.info/tb.php/16
新着トラックバック
PIC16F88-I/SO
月頭定例カキコ。はあ~、忙しい。あと2週間はこの調子かと思うとウンザリ。と言うわけでネタがない。そこで今後の予定というか、今気になっていることというか、暇が出来たらした...
| 地質時代 | 06/11/02 17:04 |

半導体データシート検索サイト

ダイヤDatasheets.org.uk
http://www.datasheets.org.uk/

2006/5/3現在520万件のデータシートが検索できます。ログインも不要です。
 初出: 2006/05/04 01:04 ささお * 内容は随時追記・更新しています。
| 技術メモ::ハードウェア | comments (0) | trackback (0) |このエントリーを含むはてなブックマーク このエントリーをはてなブックマークする

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等の設定をあらかじめ行っておくこと。

AT+ZV EnableBond (PC側のID12桁) (任意のパスワード)
AT+ZV SPPConnect (PC側のID番号12桁)


例: ID 000a94021234 のデバイスに対して、PINをhogehogeに設定
AT+ZV EnableBond 000a94021234 hogehoge
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

 初出: 2006/04/30 03:24 ささお * 内容は随時追記・更新しています。
| 技術メモ::ハードウェア | comments (0) | trackback (0) |このエントリーを含むはてなブックマーク このエントリーをはてなブックマークする

RS-232C

右 Wikipedia: RS-232C

ダイヤ Dサブ9ピン ピン配置


ダイヤ Dサブ9ピンメスとMAX232等との接続例
MAX232等との接続例

ダイヤ MAX232の +3.3/+5V対応版 ADM3202AN データシート
右 datasheets.org.uk: ADM3202AN
 初出: 2006/04/29 22:12 ささお * 内容は随時追記・更新しています。
| 技術メモ::ハードウェア | comments (0) | trackback (1) |このエントリーを含むはてなブックマーク このエントリーをはてなブックマークする
この記事のトラックバックURL
http://tmp.junkbox.info/tb.php/8
新着トラックバック
無料でWebmoney(ウェブマネー)を稼げるサイト「げん玉」
げん玉とは日本最大級のポイントサイトの1つであり、通常のポイントカードと同じようにサイト内で特定のアクション(広告のクリックもしや案件の利用)をすることにより、ポイン...
| WebMoney(ウェブマネー)を稼ぐ方法 | 10/03/30 21:36 |

  
AMAZON
CALENDAR
S M T W T F S
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
<<   11 - 2024   >>
TRACBACK
PROFILE
LOGIN
現在のモード: ゲストモード
USER ID:
PASS:
OTHERS
LINK
POWERED BY
POWERED BY
ぶろぐん
SKIN BY
ゲットネット...¥