Gpsship
Gpsship
要使用树莓派4B实时读取GPS定位数据并将其传回电脑,可以按照以下步骤进行配置:
1. 硬件连接
- GPS模块连接:
- 将GPS模块的VCC连接到树莓派的5V电源引脚。
- 将GPS模块的GND连接到树莓派的GND引脚。
- 将GPS模块的TX引脚连接到树莓派的RX引脚(GPIO10)。
- 将GPS模块的RX引脚连接到树莓派的TX引脚(GPIO9)。
2. 软件配置
- 启用串口:
- 运行
raspi-config
:1
sudo raspi-config
- 选择 Interfacing Options -> Serial。
- 禁用通过串行连接访问login-shell的可能性,并在下一步中选择 Yes 以保留串行端口启用。
- 运行
- 安装必要的软件包:
- 安装
gpsd
和gpsd-clients
:1
sudo apt-get install gpsd gpsd-clients
- 安装
- 配置GPS服务:
- 停止默认的
gpsd
服务:1
sudo systemctl stop gpsd.socket
- 启动一个新的
gpsd
实例,指定正确的串行端口:1
sudo gpsd /dev/serial0 -F /var/run/gpsd.sock
- 停止默认的
- 验证GPS数据:
- 使用
cgps
或gpsmon
查看GPS数据:1
sudo cgps -s
或
1
sudo gpsmon
- 使用
3. 读取GPS数据并传输到电脑
- 使用Python读取GPS数据:
- 安装
pynmea2
库:1
pip3 install pynmea2
- 创建一个Python脚本来读取和解析GPS数据:
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
import serial import pynmea2 import socket def read_gps_data(): port = "/dev/serial0" ser = serial.Serial(port, baudrate=9600, timeout=0.5) while True: newdata = ser.readline().decode('ascii', errors='replace') if newdata[0:6] == "$GPRMC": newmsg = pynmea2.parse(newdata) lat = newmsg.latitude lng = newmsg.longitude return lat, lng def send_data_to_computer(lat, lng): # 配置电脑的IP地址和端口号 computer_ip = "192.168.1.100" port = 5000 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((computer_ip, port)) data = f"Latitude: {lat}, Longitude: {lng}" s.sendall(data.encode()) if __name__ == "__main__": while True: lat, lng = read_gps_data() send_data_to_computer(lat, lng) time.sleep(1)
- 安装
- 在电脑上接收数据:
- 创建一个简单的服务器脚本来接收数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
import socket def receive_data(): computer_ip = "192.168.1.100" port = 5000 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((computer_ip, port)) s.listen() conn, addr = s.accept() with conn: print(f"Connected by {addr}") while True: data = conn.recv(1024) if not data: break print(data.decode()) if __name__ == "__main__": receive_data()
- 创建一个简单的服务器脚本来接收数据:
4. 运行脚本
- 在树莓派上运行GPS数据读取和发送脚本。
- 在电脑上运行接收脚本。
通过以上步骤,树莓派可以实时读取GPS定位数据并将其传回电脑。 在电脑上接收树莓派发送的GPS数据,可以使用以下Python脚本创建一个简单的TCP服务器来接收数据:
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
import socket
def receive_gps_data():
# 配置电脑的IP地址和端口号
computer_ip = "192.168.1.100" # 替换为电脑的IP地址
port = 5000 # 替换为与树莓派脚本中相同的端口号
# 创建TCP套接字
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# 绑定到指定的IP和端口
s.bind((computer_ip, port))
print(f"服务器已启动,正在监听 {computer_ip}:{port}...")
# 开始监听
s.listen()
conn, addr = s.accept()
with conn:
print(f"已连接到 {addr}")
while True:
# 接收数据
data = conn.recv(1024)
if not data:
break
# 打印接收到的数据
print("接收到的数据:", data.decode())
if __name__ == "__main__":
receive_gps_data()
配置步骤:
- 确定电脑的IP地址:
- 在Windows系统中,打开命令提示符(CMD)或PowerShell,输入
ipconfig
命令,找到以太网或无线网络适配器的IPv4地址。 - 在Linux或macOS系统中,打开终端,输入
ifconfig
命令,找到以太网或无线网络接口的inet地址。
- 在Windows系统中,打开命令提示符(CMD)或PowerShell,输入
- 修改脚本中的IP地址和端口号:
- 将脚本中的
computer_ip
替换为电脑的实际IP地址。 - 确保端口号与树莓派发送数据时使用的端口号一致。
- 将脚本中的
- 运行脚本:
- 保存脚本为
receive_gps.py
。 - 在终端或命令提示符中运行脚本:
1
python receive_gps.py
- 保存脚本为
- 接收数据:
- 当树莓派发送GPS数据时,电脑上的脚本会接收并打印数据。
注意事项:
- 网络连接:确保树莓派和电脑在同一个局域网中。
- 防火墙设置:如果遇到连接问题,检查电脑的防火墙设置,确保允许指定端口的TCP连接。
- 脚本兼容性:确保在电脑上安装了Python,并且安装了必要的库。
通过以上步骤,电脑可以成功接收树莓派发送的GPS数据。
This post is licensed under CC BY 4.0 by the author.