一、情况简述
现在就是准备把MPU6050
、gps定位模块
、超声波模块
、NB-LOT模块
搭载到pico模块上,基于上一次智能垃圾桶的教训,我决定额外加个电池(一开始想的是太阳能板,但是我怕电压不够),接到pico的VSYS
端口上
二、电源情况(待)
上面就是从左端输入的micro-usb的电压5V供电、再从VSYS进行额外输入
NB-LOT:5V、TXD与RXD
三、超声波+mpu6050
import machine from machine import Pin import utime import imu i2c = machine.I2C(0, sda=machine.Pin(16), scl=machine.Pin(17), freq=400000) print("I2C addr: ", i2c.scan()[0]) sensor = imu.MPU6050(i2c) # 超声波测距,单位:厘米 def getDistance(trigger, echo): # 产生10us的方波 trigger.low() utime.sleep_us(2) trigger.high() utime.sleep_us(10) trigger.low() while echo.value() == 0: start = utime.ticks_us() while echo.value() == 1: end = utime.ticks_us() d = (end - start) * 0.0343 / 2 return d # 主程序 trigger = Pin(18, Pin.OUT) echo = Pin(26, Pin.IN) while True: #print(sensor.accel.xyz, sensor.gyro.xyz, sensor.temperature) print("加速度:{:7.2f}{:7.2f}{:7.2f} 陀螺仪:{:9.2f}{:9.2f}{:9.2f} 温度:{:5.1f}" \ .format(sensor.accel.x, sensor.accel.y, sensor.accel.z, \ sensor.gyro.x, sensor.gyro.y, sensor.gyro.z, \ sensor.temperature)) distance = getDistance(trigger, echo) print("距离:{:.2f} cm".format(distance)) utime.sleep(1)
四、gps对于$GNGGA的输出
不得不说,chatgpt是真好用
from machine import UART,Pin #串口配置 uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1)) while True: while uart0.any() > 0: rxData_One = uart0.read() # 将接收到的数据按换行符分割成多行 data_lines = rxData_One.split(b'\r\n') # 遍历每一行数据,找到包含 $GAGGA 的数据行 for line in data_lines: if b'$GNGGA' in line: # 找到包含 $GNGGA 的数据行 print("Found $GNGGA data line:") # print(line) # 转换成字符串 str_data = line.decode('utf-8') print(str_data)
五、三个传感器一起输出
from machine import UART,Pin import machine import utime import imu uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1)) i2c = machine.I2C(0, sda=machine.Pin(16), scl=machine.Pin(17), freq=400000) # print("I2C addr: ", i2c.scan()[0]) sensor = imu.MPU6050(i2c) # 主程序 trigger = Pin(18, Pin.OUT) echo = Pin(26, Pin.IN) # 超声波测距,单位:厘米 def getDistance(trigger, echo): # 产生10us的方波 trigger.low() utime.sleep_us(2) trigger.high() utime.sleep_us(10) trigger.low() while echo.value() == 0: start = utime.ticks_us() while echo.value() == 1: end = utime.ticks_us() d = (end - start) * 0.0343 / 2 return d while True: while uart0.any() > 0: rxData_One = uart0.read() # 将接收到的数据按换行符分割成多行 data_lines = rxData_One.split(b'\r\n') # 遍历每一行数据,找到包含 $GAGGA 的数据行 for line in data_lines: if b'$GNGGA' in line: # 找到包含 $GNGGA 的数据行 print("Found $GNGGA data line:") # print(line) str_data = line.decode('utf-8') print(str_data) print("加速度:{:7.2f}{:7.2f}{:7.2f} 陀螺仪:{:9.2f}{:9.2f}{:9.2f} 温度:{:5.1f}" \ .format(sensor.accel.x, sensor.accel.y, sensor.accel.z, \ sensor.gyro.x, sensor.gyro.y, sensor.gyro.z, \ sensor.temperature)) distance = getDistance(trigger, echo) print("距离:{:.2f} cm".format(distance)) utime.sleep(1)