机器学习项目-智能鞋垫开发项目记录,更改思路2

2025.2.17

项目要求使用树莓派接收来自传感器的蓝牙数据,经过一段时间的学习,基本掌握了蓝牙的用法,现尝试在树莓派上接收蓝牙数据

蓝牙设备的使用:按压设备闪烁红灯,变成蓝色就是开机成功了,在按压绿灯闪烁,松开后设备会关机

1.树莓派系统烧录

2.树莓派ip:

3.查看蓝牙在树莓派上面使用哪个串口:

ls -l /dev/tty*

4.树莓派换源

https://blog.youkuaiyun.com/Daiwood/article/details/139560959?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%A0%91%E8%8E%93%E6%B4%BE4b%E6%8D%A2%E6%BA%90&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-139560959.142^v100^pc_search_result_base2&spm=1018.2226.3001.4187

2025.2.19

5.考虑使用usb蓝牙与鞋垫蓝牙自动配对。

试验:

1.

使用 Python pyserial

  • pyserial 是一个 Python 库,用于串口通信。

  • 安装 pyserial

  • sudo apt-get update
    sudo apt-get install python3-pip
    pip3 install pyserial

    如果出错,则改用代码:

  • sudo apt-get update  # 更新软件包列表
    sudo apt-get install python3-serial  # 注意是 python3-serial,不是 python3-pyserial

  • 编写 Python 代码,查询与蓝牙模块通信是否正确:位置:home/pi/feet/ feetserial.py

  • import serial
    import time
    ser = serial.Serial('/dev/ttyUSB0', 115200,timeout=1)  
    message = "AT\r\n"
    ser.write(message.encode('utf-8'))
    response1 = ser.readline().decode('utf-8').strip()
    response2 = ser.readline().decode('utf-8').strip()
    print("1:", response1)
    print("2:", response2)
    ser.close()
    print("over")

    利用代码控制寻找蓝牙设备

2.将适配器与鞋垫传感器绑定:

将蓝牙主机连接到pc的usb口,然后使用【串口调试助手】进行命令调试

在windows的串口调试助手中输入:

"AT+SCAN\r\n"

AT+SCAN+回车 

搜索设备,得到:

3,@230909E453,EC230909E453,-62
2,@230909E01B,EC230909E01B,-48

其中

然后输入:

“AT+BONDNAME=@230909E453”

绑定设备

再去树莓派上写代码接收传感器数据(16进制)

import serial

ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.1)

while True:
    try:
        data = ser.read(1)

        if data:
            hex_data = data.hex()
            print(hex_data, end=" ")
        
    except serial.SerialException as e:
        print(f"error{e}")
        break

    except KeyboardInterrupt:
        print("\nover")
        break

ser.close()

位置:/home/pi/feet/ 16.py

第二个传感器同理

两个传感器都绑定了

3.树莓派和pc之间通过wifi通信:

获取pc的IP

  • 使用命令提示符:

    • 按下Win键 + R,输入cmd,然后按Enter键打开命令提示符。
    • 在命令提示符中输入ipconfig,然后按Enter键。
    • 在输出的信息中,找到以“IPv4 地址”开头的行,后面的数字就是你的PC的IP地址。

树莓派端代码:位置/home/pi/feet/ wifi.py

import socket


SERVER_IP ='192.168.11.88'
SERVER_PORT = 12345

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((SERVER_IP, SERVER_PORT))

data = 'Hello from Raspberry Pi!'
s.sendall(data.encode())

s.close()

pc端代码:

import socket

# 设置服务器IP地址和端口号
SERVER_IP ='192.168.11.88' # 将PC的IP地址替换为实际IP
SERVER_PORT = 12345  # 自定义端口号

# 创建Socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定IP地址和端口号
s.bind((SERVER_IP, SERVER_PORT))

# 监听连接
s.listen()

# 接受连接
conn, addr = s.accept()

# 接收数据
data = conn.recv(1024).decode()
print('Received data:', data)

# 关闭连接
conn.close()
s.close()

结果展示:

2025.2.20

1.实现树莓派接收蓝牙消息并用wifi发送到pc

树莓派端:

位置:/home/pi/feet/ serialfeet.py

import serial
import socket

SERIAL_PORT = '/dev/ttyUSB0'
BAUD_RATE = 115200

SERVER_IP = '192.168.11.88'
SERVER_PORT = 12345

try:
    ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=0.1)
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((SERVER_IP, SERVER_PORT))

    while True:
        try:
            data = ser.read(1)

            if data:
                hex_data = data.hex()
                s.sendall(hex_data.encode())

        except serial.SerialException as e:
            print(f"error1:{e}")
            break

        except socket.error as e:
            print(f"socketerror{e}")
            break

        except KeyboardInterrupt:
            print("\nover")
            break

finally:
    if ser:
        ser.close()
    if s:
        s.close()

pc端

文件名:feetwifi.py

import socket

# 网络配置
SERVER_IP = '192.168.11.88'  # PC的IP地址
SERVER_PORT = 12345  # PC的端口

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定IP地址和端口
s.bind((SERVER_IP, SERVER_PORT))

# 监听连接
s.listen()

while True:
    try:
        # 接受连接
        conn, addr = s.accept()

        while True:
            # 接收数据
            data = conn.recv(1024).decode()

            if data:
                print(data, end='')  # 打印接收到的16进制字符串
            else:
                break  # 连接断开

    except socket.error as e:
        print(f"socket错误:{e}")
        break

    except KeyboardInterrupt:
        print("\n程序结束")
        break

s.close()

pc端增加功能:接收蓝牙数据的同时像串口蓝牙发送数据:

import socket
import serial
# 网络配置
SERVER_IP = '192.168.11.88'  # PC的IP地址
SERVER_PORT = 12345  # PC的端口

# 串口配置
SERIAL_PORT = 'COM9'  # 串口COM9
BAUD_RATE = 115200  # 波特率

try:
# 创建socket对象
   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定IP地址和端口
   s.bind((SERVER_IP, SERVER_PORT))

# 监听连接
   s.listen()
   ser = serial.Serial(SERIAL_PORT, BAUD_RATE)
   while True:
       try:
           conn, addr = s.accept()

           while True:
            # 接收数据
              data = conn.recv(1024)

              if data:
                ser.write(data)
                print(data)  # 打印接收到的16进制字符串
              else:
                break  # 连接断开

       except socket.error as e:
           print(f"socket错误:{e}")
           break
       except serial.SerialException as e:
           print(f"串口错误:{e}")
           break
       except KeyboardInterrupt:
           print("\n程序结束")
           break

finally:
    if ser:
        ser.close()
    if s:
        s.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值