I am using the Holybro GPS M8N module on my PX4 board and can see all GPS data. However, I want to read GPS data on a Raspberry Pi and then send it externally to the PX4 board. (My purpose is to control the drone via VIO while verifying the accuracy of my VIO data using the GPS readings.)
First, I wanted to examine the GPS data using Arduino and Raspberry Pi Pico, so I wrote the necessary code. I successfully accessed and read data from the I2C compass, RGB LED, as well as an external switch and red LED controller. However, I am unable to read the GPS data correctly; instead, I receive meaningless characters. What could be the reason for this?
I tried different baud rates, and the result was the same in each case.
Arduino Code:
#define SER1_BAUDRATE 115200
#define SER2_BAUDRATE 57600
// 38400, 57600, 9600, 115200, 230400, 460800, 921600
char my_string[128];
void setup()
{
Serial.begin(SER1_BAUDRATE);
Serial2.begin(SER2_BAUDRATE);
}
void loop()
{
if(Serial2.available() > 0)
{
byte a = Serial2.read();
Serial.write(a);
}
}
RPi pico Code:
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"
#define UART_ID uart1
#define UART_TX_PIN 4
#define UART_RX_PIN 5
const uint32_t baud_rates[] = {
50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400,
4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800,
500000, 921600, 1000000, 1500000, 2000000, 3000000
};
#define NUM_BAUD_RATES (sizeof(baud_rates) / sizeof(baud_rates[0]))
int main() {
stdio_init_all();
sleep_ms(2000);
gpio_set_function(UART_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART_RX_PIN, GPIO_FUNC_UART);
for (int i = 0; i < NUM_BAUD_RATES; i++) {
uint32_t baud = baud_rates[i];
uart_init(UART_ID, baud);
printf("\n📡 Attempted Baud Rate: %d\nData: ", baud);
sleep_ms(500);
uint64_t start_time = to_ms_since_boot(get_absolute_time());
while (to_ms_since_boot(get_absolute_time()) - start_time < 3000) {
if (uart_is_readable(UART_ID)) {
uint8_t c = uart_getc(UART_ID);
printf("%c ", c);
}
}
printf("\n");
}
printf("\n✅ All baudrates tested.\n");
while (1) sleep_ms(1000);
}
OUTPUT:
📡 Attempted Baud Rate: 110
Data: � � � � �
📡 Attempted Baud Rate: 134
Data: � � � � � � �
📡 Attempted Baud Rate: 150
Data: � � � � � � � � � �
📡 Attempted Baud Rate: 200
Data: � � � � � � � � � � � � � � �
📡 Attempted Baud Rate: 300
Data: � � � � � � � � � � � � �
📡 Attempted Baud Rate: 600
Data: � � � � � � � � � � � � � � � � � �
📡 Attempted Baud Rate: 1200
Data: � � � � � � � � � � � � � � � � � �
📡 Attempted Baud Rate: 1800
Data: % � � � D � E � � � � � � �
📡 Attempted Baud Rate: 2400
Data: � �
� � � � � � � " � � �
📡 Attempted Baud Rate: 4800
Data: � � � � � � � � � � � � � & � � � � � � � � � � 0 D � � � � � � � �
📡 Attempted Baud Rate: 9600
Data: B ! � � � � @ 2 � � 0 � � � , � � � � � � � 2 � � � ` 2 � , 2 � � h 2 � � h � � � � 6 � B � ` � � x � � x � � � 2 � h : � � � � 2 � h � � � 0
📡 Attempted Baud Rate: 19200
Data: | < � � � � | � � 0 0 � � x < � � ! l � � # h x � � � ! � # ` � � � | � 0 0 � � x � � � � � � � � � J � � $ | � h � � " h | w H � � ! H � � p | � � � @ � � H � � � @ < @ � ! @ l w c � @ � � ! H � � � B � � $ ` � t \ � 0 0 0 � � t � � ! @ � �
📡 Attempted Baud Rate: 38400
Data: �
� ! B B � 7 ! ! ! % ! � � � � � � � �
� - B B � 5 ! !
� ! � 5 ! ! ! % ! � � � ( M
� C B B � 5 ! ! ! % ! � � � �
� ! B B � 7 ! ! ! % ! � � � � � � M
� - B B � 5 ! ! ! % ! � H � �
� = B B � 7 ! ! ! % ! � � � � M
� - B B � 1 ! ! ! % ! � H � � �
� C B B � 3 ! ! ! % ! � � � �
� ! B B � 1 ! ! ! % ! � � � � � � � �
� - B B � 3 ! ! ! % ! � � � �
� = B B � 1 ! ! ! % ! � � � � ( �
� - B B � 3 ! ! ! % ! � � � � �
� C B B � 3 ! ! ! % ! � � � ( � � 3 | 5 � G N � � � ! � M
� ! B B � 1 ! ! ! % ! � H � � � H � �
� - B B � 3 ! ! ! % ! � � � (
� = B B � 1 ! ! ! % ! � � � �
📡 Attempted Baud Rate: 57600
Data: � = / � � � ! ! � ! = k � � � � 1 / � = / � � � ! ! � ! = C � � � ! = � � 1 O � � � � ! ! � � � � � � 5 G � � � ! ! i � � � � � 9 / � � � ! ! � ! 9 C � � � � 5 G � � � ! ! a ! 5 k � � � � = / � � � ! = K � � � ! = � � 1 / � � � � ! ! 1 ! 1 k � � � � 5 G � � � ! ! � ! 5 k � � � � 9 / � � � ! ! ! ! 9 k � � � � 5 O � � � ! ! � ! 5 k � � � � 9 / i � � � � ! ! y ! 9 K � � � ! 9 � � = / � � � � ! ! 1 ! = k � � � � 1 / � � � ! ! 1 ! 1 k � � � � 9 / � � � ! ! � ! 9 k � � � � % / � � � ! ! � ! % C � � �
📡 Attempted Baud Rate: 115200
Data: z � F ^ B a % z X - � < z � X B � � * B B B H � - � < H � B r � I � � � � � � � ^ � z R F � B a % � z � - � < H � B r � I H 8 � � � � � � � �
� � � � � � � �
�
� � � Z { 9 � � y
� n n B � � z r F � B � z � � � - � < H � B r ! I � 8 � � � � � � �
! X � � z � F � B � � z � - � < H � B r � I � F � � � � � � � ~ � z B F � B � ( ! % ! z ( � � H � B r � I 8 � � � � � � � z � F � B � � * B B B H h � � H � B r � I � F � � � � � � � F z R B � � z ( � � H � B r o I H 8 � � � � � � � z b B � z x � � � � R b � � � � � � � � H � X � � z � B a ) � z � � � H � B r a R � � � � � � � � � z r B � ( ! % ! z � � � H � B r X (
� � � � � � � � z � B � R { � * B B H � � � � H � B r � I H � � � � � � � z B B � � z � � � H � B r Z I 8 � � � � � � � � z b B a + z 8 � � H � B r � I � 8 � � � � � � � / � � f � � � � � z � B a + � z x � � H � B r Z I H � � � � � � � � z r B a + ( ! % z ( � � H � B r 9 I � 8 � � � � � � �
📡 Attempted Baud Rate: 230400
Data: � b \ / �
� � � � � F � # � b \ � 0 �
� � � � � � � � � � b ' ' ' ' r � 0 � � b \ x 1 �
� � � � � � �
� � � � b 1 ' ' R � b \ @ 2 �
� � � � � � � � � � � b 2 ' ' s � b \ 3 �
� � � � � F � # � � � � � ' ' ' ' � � b \ � 3 �
� � � � � � � / � � � � � 3 ' ' � � b \ � 4 �
� � � � � � � � � � � � ' ' ' ^ � 4 � � b \ ` 5 �
� � � � � � �
� � � � � ` ' ' ' ' ' � b \ ( 6 �
� � � � � � � � � � @ � � b ( ' ' ' � b \ � 6 �
� � � � � F � # � � � � b 6 ' ' � b \ � 7 �
� � � � � � � / � � � @ � � � ' ' ' 8 � b
< � � � _ � � � �
� � 5 � � o � � � � b \ � 8 �
� � � � � � � � � � � ' ' ' ' J � � � b \ H 9 �
� � � � � � �
� � � � b 9 ' z � b \ : �
� � � � � � � � � � � b ' ' ' ' � b \ � : �
� � � � � F � # � � � � b : ' � � b \ � ; �
� � � � � � � / � � � � � > ; ' �
📡 Attempted Baud Rate: 460800
Data: f � f ~ � � f � � � � � ~ � � ` � f ` � � � � f � f ~ � � f � � � ~ � � ` � f ` � � � � � x � � � ` � � � � � � f � f ~ � � f � � � � � ~ � � ` � f ` � � � � � � ~ � � � � ` � � ` � � � ` � � � � f f � f ~ � � f f f � ~ � � ` � x ` � � � � � ` � � � � � � � � ~ � � � � f � f ~ � � f � ` f � ~ � � ` � x ` � � � � � � � � � ` � � ~ � � � � � � f � f ~ � � f � � � ~ � � ` � x ` � � � � � ` � ~ ~ ` � ~ � � � � � � � � f � f ~ � � f � � � � � ~ � � ` � x ` � � � � � x � � ` � � f � � � � � � f � f ~ � � f � � f � ~ � � ` � x ` � � � � � � ~ � � � � ` � � � � � � � � � f � f ~ � � f � f � ~ � � ` � ~ ` � � � � � ` � � � � � � � ` � � � � � f � f ~ � � f f � � � ~ � � ` � ~ ` � � � � � � � � � ` � � � ` ` � � � � ~ f � f ~ � � f � � f � � � ~ � � ` � ~ ` � � � � � ` � ~ ~ ` � � x � � � � � � f � f ~ � � f x f � ~ � � ` � ~ ` � � � � � x � � ` � � � � � � � � � f � f ~ � � f � f ` � � ~ � � ` � ~ ` � � � � � � ~ � � � � ` � � � � � � � � � � f � f ~ � � f f � ~ � � ` � � ` � � � � � ` � ~ � � � � � � � � x f � f ~ � � f � � � � � � ~ � � ` � � ` � � � � � � � � � � � � � � � � � � � � f � f ~ � � f � f � ~ � � ` � � ` � � � � � ` � ~ ~ ` � � � ` � � � � �
📡 Attempted Baud Rate: 500000
Data: � � < � � � � � � ? � � � � � < � � � � � � ? � � � � � � � � � � � � � � � � � � � < � � � � � � � ? � � � � � � � � � � � �
� � � � � < � � � � � � � ? � � � � � � � � � � � � � � < � � � � � ? � � � � � � � 0 � � � �
� �
� � � � � < � � � � � � ? � � � � � � � � � � � � � � � � � � < � � � � � � ? � � � � � � � � � � �
� � � � � � � < � � � � � � � � ? � � � � � � � � �
� � � � � � < � � � 3 � � ? � � � � � � � � � � � � �
< � � � � � < � � � 3 � � ? � � � � � � � � � �
� � � � � < � � � � � � � � ? � � � � � � � � � � � � �
< � � � � � < � � � � � � � � ? � � � � � � � � � � � �
� � � � � � < � � � � � � � � ? � � � � � � � � � � � � � � � � < � � � � 3 � � ? � � � � � � � � � � �
� � � � � < � � � � � � � � ? � � � � � � � � � � � < � � � � < � � � � 3 � � ? � � � � � � � � � � � �
� � � � � �
📡 Attempted Baud Rate: 921600
Data: x � � x � x � x x � � � � x � � x � � x � x � � x � � � � x � � x � x x � x � � x x � � � � � x � � x � x � � x � � � � x � � x � � � � � � � x � � � � � � x � � x � x x � � � x � � � � x � � x � � � � � � � � � x x � � � x � � x � x x x � � � � x � � x x � � � � � x � � � � � � � x � � x � x � x � x � � � � x � � x x � � � � x � � x � � � x � � x � x � x � � � � x � � x x � � � x x � � � x � � � x � � x � x � � x � � � � x � � x x � � � � � � � � � � � � � x � � x � x x � � � x x � � � � x � � � � � � x x x � � � � � � x � � x � x � � x � � � � x � � x � � x � � x � � � x � � x � � x � x x x � � � � x � � x � � � � � � � � � � x � � � x � � x � x � x x � � � � x � � x � � � � � � � � x x � � � x x � � x � x � x x � � � � x � � x � � x x � x x � � � x � � � � x � � x � x � � x � � � � x � � x � � � � � x x � � x � � � x � � x � x x � x � � � � x � � x � � � � � x � � � x � � � � � x � � x � � x � x x � x � � � � x � � x � � � � � � x � � x x � � � x � � x � x x � x � � � � x � � x � � � � � x � � � � � �
📡 Attempted Baud Rate: 1000000
Data: � < � � � < � � < � � < � � < � � � � � < � � � < � � < � � � < � � � � � � � � � � < � � � < � � � � < � � � < � � < � � � � < � � � � � � � � � � � � � � � � < � � � < � � < � � < � � � � � � � � < � � � � � � < � � � < � � < � � � � � < � � � � � � � � � � � � � � � � � < � � � < � � < � � � < � � � � � � � � � � � � � � � � � < � � � < � � < � � � � � < � � � � � � � � � � � � � � � � < � � � < � � < � � < � � � � � � � � � � < � � � < � � � < � � < � � � < � � � � � � � � � � � � � < � � � < � � < � � � � � < � � � � � � � � � � � � < � � � < � � � < � � < � � � � � < � � � � � � � � � < � � < � � � � � < � � � < � � < � � � < � � � � � � � � � � < � � � � � � � � < � � � < � � < � � � < � � � � � � � � � � � < � � � � < � � � < � � < � < � � � � � � � � � � � � � � � < � � � < � � < � � < � � � � � � � � � � � � � < � � � < � � < � < � � < � � � � � � � � � � � < � � � < � � � � � � � � � � � � � � � � � � � � < � � � � � � � � �
📡 Attempted Baud Rate: 1500000
Data: � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �