GR-M10-RP の話。ボーレートの変更の方法。Python スクリプトを使って。私の場合、初期値は、38400bps になっていました。
出荷時のボーレートは 9600bps または 38400bps (2024年6月以降出荷分) に設定されています。
QZSS の災危通報をデコードするスクリプトを、ラズベリーパイで再起動しても自動で起動するように、system で管理をしていました。今回、ボーレートの数値を変更するにあたり、system を止める必要があります。
$ sudo systemctl stop <サービス名>
スクリプトを止めて、GR-M10-RP を使用していない状態にします。そして、下記の Python スクリプトを実行して、ボーレートを、115200bps に変更します。
from pyubx2 import UBXMessage, UBXReader import serial import time def send_ubx_message(ser, msg): ser.write(msg.serialize()) time.sleep(0.1) def read_ubx_response(ubr): try: while True: response = ubr.read() if response: print(response) break except serial.SerialException as e: print(f"Error reading from serial port: {e}") except Exception as e: print(f"An error occurred: {e}") # シリアルポートの設定 ser = serial.Serial('/dev/ttyS0', 38400, timeout=1) ubr = UBXReader(ser, protfilter=2) # UBXプロトコルのみをフィルタリング # NMEAメッセージを無効化するためのUBXメッセージの作成 nmea_off = [ UBXMessage.config_set(1, 0, [("CFG_MSGOUT_NMEA_ID_GGA_UART1", 0)]), UBXMessage.config_set(1, 0, [("CFG_MSGOUT_NMEA_ID_GLL_UART1", 0)]), UBXMessage.config_set(1, 0, [("CFG_MSGOUT_NMEA_ID_GSA_UART1", 0)]), UBXMessage.config_set(1, 0, [("CFG_MSGOUT_NMEA_ID_GSV_UART1", 0)]), UBXMessage.config_set(1, 0, [("CFG_MSGOUT_NMEA_ID_RMC_UART1", 0)]), UBXMessage.config_set(1, 0, [("CFG_MSGOUT_NMEA_ID_VTG_UART1", 0)]) ] # NMEAメッセージの無効化 for msg in nmea_off: send_ubx_message(ser, msg) # UBX-CFG-VALSETメッセージの作成 layers = 1 # RAMレイヤー transaction = 0 # トランザクションなし cfgData = [("CFG_UART1_BAUDRATE", 115200)] msg = UBXMessage.config_set(layers, transaction, cfgData) # メッセージの送信 send_ubx_message(ser, msg) # 応答の確認 read_ubx_response(ubr) # シリアルポートを閉じる ser.close() # 新しいボーレートで再接続して確認 time.sleep(1) # 少し待機してから再接続 ser = serial.Serial('/dev/ttyS0', 115200, timeout=1) ubr = UBXReader(ser, protfilter=2) # UBXプロトコルのみをフィルタリング # 再度応答の確認 read_ubx_response(ubr) # シリアルポートを閉じる ser.close()
その後、デコードするスクリプトの引数を変更します。
/dev/ttyS0 38400 ↓ /dev/ttyS0 115200
そして、system をスタートします。
$ sudo systemctl start <サービス名>
または、ラズベリーパイを再起動。
$ sudo reboot
きちんと、変更されたボーレートで、Python スクリプトが働いているかどうかは、次のコマンド、または出力されるログを見るなど。
$ ps aux | grep python
上のコマンドで、引数を確認できます。下のシェルで、アウトプットされるデータを確認することができます。
$ tail -f output.log # などの、出力されるデータ