毕设(四)——传感器数据采集

简介: 毕设(四)——传感器数据采集

一、情况简述

现在就是准备把MPU6050gps定位模块超声波模块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)
相关文章
|
3月前
|
存储 传感器 数据采集
LabVIEW数控磨床振动分析及监控系统
LabVIEW数控磨床振动分析及监控系统
28 1
|
3月前
|
传感器 数据采集 监控
LabVIEW智能温度监控系统
LabVIEW智能温度监控系统
47 2
LabVIEW智能温度监控系统
|
3月前
|
传感器 存储 SQL
LabVIEW智能变电站监控系统设计与实现
LabVIEW智能变电站监控系统设计与实现
48 5
|
3月前
|
传感器 数据采集 运维
LabVIEW智能监测系统
LabVIEW智能监测系统
26 2
|
3月前
|
传感器 编解码 运维
LabVIEW开发感应电机在线匝间短路故障诊断系统
LabVIEW开发感应电机在线匝间短路故障诊断系统
32 1
|
3月前
|
数据采集 安全 C++
LabVIEW开发空气动力学实验室的采集和控制系统
LabVIEW开发空气动力学实验室的采集和控制系统
24 1
|
3月前
|
数据采集 传感器 存储
LabVIEW开发航空航天器风洞的数据采集系统
LabVIEW开发航空航天器风洞的数据采集系统
23 0
|
传感器 芯片
【单片机课程设计】环境监测控制系统
【单片机课程设计】环境监测控制系统
116 0
|
3月前
|
传感器
毕业设计 基于STM32的单片机智能门禁热释人体感应报警设计
毕业设计 基于STM32的单片机智能门禁热释人体感应报警设计
111 0
|
3月前
|
监控 安全 算法
基于UWB技术高精度人员定位系统源码
基于UWB技术高精度人员定位系统源码
57 0