文章目录
  • 一、前言
  • 二、代码展示
  • 三、实物演示


也是托更很久了,这次就上传吧

一、前言

先说好了,我这个毕设选的是真水,非常的水。(因为当初考虑到研究生复试需要去准备,所以就不敢选太难的,因为我的个人实力不咋滴,hhhh~)。对于那些有老师带的,就根据自己老师来就行,我这边是没有老师带的,就是自己瞎弄弄,把之前的大创换了个通信方式,就拿出来了。(吐槽下,pico的参考是真的很少)。

二、代码展示

from machine import UART,Pin
import utime
import imu
import machine
#串口配置


uart1 = UART(0, baudrate=115200, tx=Pin(12), rx=Pin(13))
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(26, Pin.OUT)
echo = Pin(18, 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

number_part_flag = 0
msgid_part_flag = 0

uart1.write('AT+CREG?\r')
utime.sleep_ms(100)
while uart1.any() > 0:
    rxData_One = uart1.read()
    str = rxData_One.decode(r'utf-8')
    while '+CREG: 0,2' in str:
        print("上网失败,再次尝试测试")
        utime.sleep_ms(100)
        uart1.write('AT+CREG?\r')
        while uart1.any() > 0:
            rxData_One = uart1.read()
            str = rxData_One.decode('utf-8')
    print("上网成功")
utime.sleep_ms(500)
while uart1.any() > 0:
    rxData_One = uart1.read()
# 创建实例
uart1.write('AT+MIPLCREATE\r')
utime.sleep_ms(100)
while uart1.any() > 0:
    rxData_two = uart1.read()
    str = rxData_two.decode(r'utf-8')
    if 'ERROR' in str:
        print("创建实例-失败")
    else:
        print("创建实例-成功")
utime.sleep_ms(500)
while uart1.any() > 0:
    rxData_One = uart1.read()
# 创建对象
uart1.write('AT+MIPLADDOBJ=0,3301,1,"1",7,1\r')
utime.sleep_ms(100)
while uart1.any() > 0:
    rxData_three = uart1.read()
    str = rxData_three.decode(r'utf-8')
    if 'ERROR' in str:
        print("创建对象-失败")
    else:
        print("创建对象-成功")
utime.sleep_ms(500)
while uart1.any() > 0:
    rxData_One = uart1.read()
# 注册(循环等待,等到0,68719,1,3301,0,-1),提取68719这个位置的数
uart1.write('AT+MIPLOPEN=0,30,120\r')
utime.sleep_ms(100)
while number_part_flag == 0:
    while uart1.any() > 0:
        rxData_four = uart1.read()
        rxData_four_str = rxData_four.decode('utf-8')
        # 检查是否存在 3301
        print(rxData_four_str)
        if '3301' in rxData_four_str:  
            print("响应中存在 3301.")
            comma_index = rxData_four_str.find(',') # 找到第一个逗号的位置
            second_comma_index = rxData_four_str.find(',', comma_index + 1) # 找到第二个逗号的位置
            third_comma_index = rxData_four_str.find(',', second_comma_index + 1)  # 找到第三个逗号的位置
            number_part = rxData_four_str[second_comma_index + 1: third_comma_index] # 提取出数字部分
            try: # 将提取出的部分转换成整数
                number_one = int(number_part)
                print("提取的第一次数字为:", number_one)
                number_part_flag = 1
            except ValueError:
                print("提取的第一次数字不是有效的整数。")
        else:
            print("响应中不存在 3301.")
utime.sleep_ms(500)
while uart1.any() > 0:
    rxData_One = uart1.read()
# 发送观察结果
uart1.write('AT+MIPLOBSERVERSP=0,%d,1\r' % (number_one))
utime.sleep_ms(100)
while msgid_part_flag == 0:
    while uart1.any() > 0:
        rxData_five = uart1.read()
        rxData_five_str = rxData_five.decode('utf-8')
        if '3301' in rxData_five_str:
            first_comma_index = rxData_five_str.find(',') # 找到第一个逗号的位置
            second_comma_index = rxData_five_str.find(',', first_comma_index + 1) # 找到第二个逗号的位置
            number_part = rxData_five_str[first_comma_index + 1: second_comma_index] # 提取出数字部分
            # 将提取出的部分转换成整数
            try:
                number_two = int(number_part)
                print("提取的第二次数字为:", number_two)
                msgid_part_flag = 1
            except ValueError:
                print("提取的第二次数字不是有效的整数。")
        else:
            print("失败")
utime.sleep_ms(500)
while uart1.any() > 0:
    rxData_One = uart1.read()
# 发送对象属性
uart1.write('AT+MIPLDISCOVERRSP=0,%d,1,29,"5700;5601;5602;5603;5604;5701"\r' % (number_two))
utime.sleep_ms(100)
while uart1.any() > 0:
    rxData_One = uart1.read()
    
# # 通知属性变化(数字)
# uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5700,4,4,17.5,0,0,116\r' % (number_one))
# utime.sleep_ms(100)
# while uart1.any() > 0:
#     rxData_One = uart1.read()  
#     rxData_One_str = rxData_One.decode('utf-8')
#     print(rxData_One_str)
#     if '0,26,116' in rxData_One_str:
#         print("修改成功")
#     else:
#         print("修改失败")
# utime.sleep_ms(100)
# while uart1.any() > 0:
#     rxData_One = uart1.read()

#     uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5601,4,4,25.5,0,0,116\r' % (number_one))
#     uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5602,4,4,22.5,0,0,116\r' % (number_one))
#     uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5603,4,4,22.5,0,0,116\r' % (number_one))

# 通知属性变化(文本)
#     uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5701,1,4,29cm,0,0,116\r' % (number_one))
#     utime.sleep_ms(100)
#     while uart1.any() > 0:
#         rxData_One = uart1.read()
#         rxData_One_str = rxData_One.decode('utf-8')
#         if '0,26,116' in rxData_One_str:
#             print("修改成功")
#         else:
#             print("修改失败")
while True:
    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))
    # x的数据正常,但是y\z\distance不行
    x_str = "{:.2f}".format(abs(sensor.gyro.x))
    y_str = "{:.2f}".format(abs(sensor.gyro.y))
    z_str = "{:.2f}".format(abs(sensor.gyro.z))
    
    x_str_len = len(x_str)
    y_str_len = len(y_str)
    z_str_len = len(z_str)
    
    distance_str = "{:.2f}".format(distance)
    distance_str_len = len(distance_str)+2

    # 对于温度要取绝对值以及判断位数
    uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5601,4,%d,%s,0,0,116\r' % (number_one,x_str_len,x_str))
    utime.sleep_ms(100)
    while uart1.any() > 0:
        rxData_One = uart1.read()
    utime.sleep_ms(100)
    while uart1.any() > 0:
        rxData_One = uart1.read()  
        rxData_One_str = rxData_One.decode('utf-8')
        print(rxData_One_str)
        if '0,26,116' in rxData_One_str:
            print("修改成功")
        else:
            print("修改失败")
    utime.sleep(1)
    while uart1.any() > 0:
        rxData_One = uart1.read()
    
    uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5602,4,%d,%s,0,0,116\r' % (number_one,y_str_len,y_str))
    utime.sleep_ms(100)
    while uart1.any() > 0:
        rxData_One = uart1.read()
    utime.sleep_ms(100)
    while uart1.any() > 0:
        rxData_One = uart1.read()  
        rxData_One_str = rxData_One.decode('utf-8')
        print(rxData_One_str)
        if '0,26,116' in rxData_One_str:
            print("修改成功")
        else:
            print("修改失败")
    utime.sleep(1)
    while uart1.any() > 0:
        rxData_One = uart1.read()

    uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5603,4,%d,%s,0,0,116\r' % (number_one,z_str_len,z_str))
    utime.sleep_ms(100)
    while uart1.any() > 0:
        rxData_One = uart1.read()
    utime.sleep_ms(100)
    while uart1.any() > 0:
        rxData_One = uart1.read()  
        rxData_One_str = rxData_One.decode('utf-8')
        print(rxData_One_str)
        if '0,26,116' in rxData_One_str:
            print("修改成功")
        else:
            print("修改失败")
    utime.sleep_ms(100)

#     # 通知属性变化(文本)
#     uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5701,1,%d,%s cm,0,0,116\r' % (number_one,distance_str_len+3,distance_str))
#     utime.sleep_ms(100)
#     while uart1.any() > 0:
#         rxData_One = uart1.read()
#         rxData_One_str = rxData_One.decode('utf-8')
#         if '0,26,116' in rxData_One_str:
#             print("修改成功")
#         else:
#             print("修改失败")
#     utime.sleep(1)
    
    # 通知属性变化(文本)
    uart1.write('AT+MIPLNOTIFY=0,%d,3301,0,5701,1,%d,%scm,0,0,116\r' % (number_one,distance_str_len,distance_str))
    utime.sleep_ms(100)
    while uart1.any() > 0:
        rxData_One = uart1.read()
        rxData_One_str = rxData_One.decode('utf-8')
        if '0,26,116' in rxData_One_str:
            print("修改成功")
        else:
            print("修改失败")
  • 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.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146.
  • 147.
  • 148.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153.
  • 154.
  • 155.
  • 156.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.
  • 164.
  • 165.
  • 166.
  • 167.
  • 168.
  • 169.
  • 170.
  • 171.
  • 172.
  • 173.
  • 174.
  • 175.
  • 176.
  • 177.
  • 178.
  • 179.
  • 180.
  • 181.
  • 182.
  • 183.
  • 184.
  • 185.
  • 186.
  • 187.
  • 188.
  • 189.
  • 190.
  • 191.
  • 192.
  • 193.
  • 194.
  • 195.
  • 196.
  • 197.
  • 198.
  • 199.
  • 200.
  • 201.
  • 202.
  • 203.
  • 204.
  • 205.
  • 206.
  • 207.
  • 208.
  • 209.
  • 210.
  • 211.
  • 212.
  • 213.
  • 214.
  • 215.
  • 216.
  • 217.
  • 218.
  • 219.
  • 220.
  • 221.
  • 222.
  • 223.
  • 224.
  • 225.
  • 226.
  • 227.
  • 228.
  • 229.
  • 230.
  • 231.
  • 232.
  • 233.
  • 234.
  • 235.
  • 236.
  • 237.
  • 238.
  • 239.
  • 240.
  • 241.
  • 242.
  • 243.
  • 244.
  • 245.
  • 246.
  • 247.
  • 248.
  • 249.
  • 250.
  • 251.
  • 252.

三、实物演示


毕业设计