Samples_UART - gfd-dennou-club/mrubyc-esp32 GitHub Wiki
はじめに
UART クラスのメソッドについては,Class_UART を参照されたい.
UART の基礎
UART は非同期のシリアル通信である. 非同期のためにクロック用のラインは存在しない.
- 2 本の信号線で構成される (全二重通信)
- TX: データ出力
- RX: データ入力
- クロック同期式と比べて伝送速度は低速 (最大 20 kbps)
- UART にはクロック信号がないため, 通信をする前に送受信するデバイス間で通信速度 (ボーレート) を決める必要がある.
GPS
GPS GYSFDMAXB:https://akizukidenshi.com/catalog/g/gM-09990/
GPS の使い方の詳細は以下を参照のこと
- GPSのデータフォーマットを参照のこと.
- GPSのプログラミング (step by step)を参照のこと.
サンプル (1)
# GPSの電源を入れる (高専ボードの場合に必要)
gps_pw = GPIO.new(5, GPIO::OUT)
gps_pw.write(0)
# GPS初期化 txPin = 17, rxPin = 16 のため uart_num = 2 とする
gps = UART.new(2, 9600)
# 出力を RMS のみに
sleep 1
gps.write("$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29\r\n")
## 出力をデフォルトに戻すときは以下をコメントアウトすること.
## sleep 1
##gps.write("$PMTK314,-1*04\r\n")
# データの到着まで少し待つ
sleep 2
# read メソッドで 100 バイト分のデータを受け取る
# 指定したバイト数分のデータを受け取れない場合は nill が返る
puts "> gps.read"
p gps.read(100)
# 入力データをclear_tx_bufferで消去する
puts "> gps.clear_tx_buffer"
gps.clear_tx_buffer
# データの到着まで少し待つ
sleep 2
# 4096バイトのデータはないが、
# nonblockのため到着している分のデータが表示される
puts "> gps.read_nonblock(4096)"
puts gps.read_nonblock(4096)
# 入力データをclear_tx_bufferで消去する
puts "> gps.clear_tx_buffer"
gps.clear_tx_buffer
# こちらは消去されているため何も表示されない
puts "> gps.read_nonblock(4096)"
puts gps.read_nonblock(4096)
# 以下、到着したデータを 1 行ずつ読み込んで表示
puts "> gps.gets"
while true
puts gps.gets()
sleep 1
end