树莓派4B串口及蓝牙连接HC-05

4 篇文章 0 订阅
1 篇文章 0 订阅


前言

使用树莓派进行图像处理的时候,一般需要通过串口将数据传输给主控,但由于靠杜邦线连接容易出现断连,故有时可通过板载蓝牙的方式传输信息。由于树莓派的mini串口性能差,故一般只在蓝牙传输和串口传输之间选其一,将选择的方式配置到AMA0即可。


一、串口传输

树莓派配置串口的教程网上很多,可以参考链接

这里主要存一下引脚和示例代码

1.引脚连接

在这里插入图片描述
右上角的TXD和RXD就是我们用来串口通信的两个引脚

2.示例代码

import serial
import struct
from time import sleep
A = 1
B = 2


def serialConfig(port,baud):
    ser = serial.Serial(
        port,
        baudrate=baud,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout=1
    )      # Open port with baud rate
    ser.flushInput()
    return ser


if __name__ == "__main__":
    ser = serialConfig("/dev/ttyAMA0",9600)
    if ser.isOpen() is True:
        try:
            while True:
                pack = struct.pack('BBBB', 0xaa, A, B, 0x55)
                ser.write(pack)               # transmit data serially
        except KeyboardInterrupt:
            ser.close()
    else:
        print("cannot open serial")

二、板载蓝牙

1.前置要求

在使用蓝牙之前先要配置安装好相应的包

sudo apt-get install libbluetooth-dev
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -U pybluez

接着将HC05模块用USB-TTL模块连接电脑,使其处于配对模式,在树莓派端蓝牙处 Add New Device ,并记录下蓝牙地址
在这里插入图片描述
可以看到蓝牙的地址是98:da:20:02:90:60
当然地址也可以用AT指令集获取,这个之后写代码会用到

然后点击pair,看到以下提示说明配对成功
在这里插入图片描述

2.代码编写

在树莓派中创建文件bt_test.py,写入以下代码

import bluetooth
bt_addr = "98:da:20:02:90:60"
port = 1
def BlueToothInit():
    global sock
    sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
    sock.connect((bt_addr,port)
BlueToothInit()
sock.send('1')
sock.send('2')
sock.send('3')
sock.close()

执行文件

python3 bt_test.py

可以看到HC05端接收到的数据
在这里插入图片描述
将蓝牙移植到opencv找圆程序中测试

#import numpy as np
import cv2 as cv
# -*- coding:utf-8 -*-
import time
import bluetooth
bt_addr = "98:da:20:02:90:60"
port = 1
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((bt_addr,port))

# 串口配置
if __name__ == "__main__":
    cap = cv.VideoCapture(0)
    try:
        while True:
            ret, frame = cap.read()
            gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
            circles = cv.HoughCircles(
            gray, cv.HOUGH_GRADIENT, 2, 100, param1=100, param2=200, minRadius=10, maxRadius=500)
            if circles is not None:  # 如果识别出圆
                for circle in circles[0]:
                    #  获取圆的坐标与半径
                    x = int(circle[0])
                    y = int(circle[1])
                    r = int(circle[2])
                    cv.circle(frame, (x, y), r, (0, 0, 255), 3)  # 标记圆
                    cv.circle(frame, (x, y), 3, (255, 255, 0), -1)  # 标记圆心
                    text = 'x:  ' + str(x) + ' y:  ' + str(y)
                    #cv2.putText(frame, text, (10, 30), font, 1, (0, 255, 0), 2)  # 显示圆心位置
                    #print(text)
                    sock.send(text)

            else:
                #cv2.putText(frame, 'x: None y: None', (10, 30), font, 1, (0, 255, 0), 2)
                sock.send("none")
            cv.imshow('frame', gray)
            k = cv.waitKey(5) & 0xFF
            if k == 27:
                break
    except KeyboardInterrupt:
        sock.close()
    cap.release()
    cv.destroyAllWindows()
        



总结

以上就是树莓派配置蓝牙的具体步骤

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值