「誰でもわかるマイコン入門」GPSを付ける
前回までにグラフィック液晶を付けました。これだけでは面白くないので、今日はGPSモジュールを付けてみましょう。
使ったGPSモジュールは、またまたアイテンドーで、これ
http://www.aitendo.com/product/1007
早速、マイコンとつなげてみますが、ここでワンポイント知識。GPSモジュールはシリアル通信で通信します。パソコンなどのRS232Cと同じです。ただパソコンのRS232Cは電圧を上げていますが、これは3.3Vのままです。あまり距離を長くできません。また電圧が低い場合はRS232Cとは言いませんが、規格自体はRS232Cと同じです。
RS232Cは、送信(TX)と受信(RX)の2本の信号線で通信します。あとGNDを入れて計3本です。ただGPSモジュールは一方的にデータを送ってくるので、GPSモジュールか見て送信(TX)、(マイコン側から見れば受信(RX))の一本の線をつなげばOKです。それに電源が2本なので、計3本の配線が必要です。
それでは配線しましょう。こんな感じ。
手前黒い線がGND、赤い線が3.3V、青い線が(GPSから見れば)送信(TX)です。青い線はマイコンのP27につなぎます。
また、GPSモジュールの裏側はこのように配線してください。
配線がすんだら、プログラムです。プログラムは前回の液晶のデモプログラムを改造する形で行います。demo.cppをいったん白紙にし、次のようなプログラムを記述します。
-----------------------------------------------------------
#include "mbed.h"
#include "ILI9340_Driver.h"
Serial gps(p28, p27);
int main() {
// create the display object
ILI9340_Display tft = ILI9340_Display(p5, p6, p7, p24, p25, p26);
// initialise the display
tft.DispInit();
gps.baud(4800);
char GpsInput[256];
while (1) {
gps.gets(GpsInput, 255);
tft.FillScreen(ILI9340_WHITE);
tft.DrawString(GpsInput, 0, 100, 1, ILI9340_BLUE);
}
}
------------------------------------------------------------
液晶以外の部分だけ説明しましょう。
Serial gps(p28, p27);
p28、p27をシリアル通信で使う。名前をgpsと名づける。p28は実際には使いません。また順番に注意してください。gps(p27, p28)と書いたらだめです。
gps.baud(4800);
シリアル通信のボーレートを4800に設定しています。
char GpsInput[256];
前回、変数というものを説明しました。これは連続した番地をもつ256個の変数を定義しています。配列といいます。文字列(文字の並び)を格納するために使われます。文字列は最後のデータが0でないといけないので、それを除外して255文字ま格納できます。
gps.gets(GpsInput, 255);
GPSから送られてくる文字列のデータを受信します。255というのは最大255文字です。受信した文字列は先ほどの配列に格納します。
tft.FillScreen(ILI9340_WHITE);
液晶に文字列を表示する前に、前の文字列をクリアするため、いったん全画面を白に塗りつぶします。
tft.DrawString(GpsInput, 0, 100, 1, ILI9340_BLUE);
受信した文字列を液晶に表示します。
さて、このプログラムをコンパイルして実行すると、液晶にチカチカ文字を表示されます。こうなれば正常です。
まだ、この文字列はなんのことかわかりませんね。次回はこの文字列を解析して、日付、時間、北緯、経度などを表示させてみます。それでは。
| 固定リンク
コメント