树莓派开发 —— 使用蓝牙配置wifi(1):蓝牙串口通信

分类: 树莓派

2019-03-27

|

5458

|

评论:1

分享:

树莓派开发完成后第一个遇到的问题就是怎么在不同环境下配置wifi。 通用的做法是树莓派开启蓝牙服务,通过蓝牙修改wifi。

此篇介绍了一些如何开启蓝牙、建立连接,如果急需开发,可以直接看第二篇 树莓派开发 —— 使用蓝牙配置wifi(2):使用bluez开启服务

基本命令

  • hciconfig : 类似于ifconfig用于查看蓝牙设备信息。
  • sdptool : 用于开启服务
  • rfcomm : 用于开启、连接rfcomm协议的服务

这些命令一般都是自带的,你可以运行hciconfig查看你的蓝牙设备名,默认都是hci0

开启串口服务

  1. 修改/etc/systemd/system/bluetooth.target.wants/bluetooth.service文件

    如图所示  

    • bluetoothd增加-C参数,允许不被推荐的命令行接口
    • 增加启动后运行的命令ExecStartPost=/usr/bin/sdptool add SP,此命令表示开启串口服务
  2. 重启 

    sudo systemctl daemon-reload
    reboot
  3. 开启蓝牙发现,并允许配对请求

    sudo hciconfig hci0 piscan
    
    # 若需关闭发现,使用
    sudo hciconfig hci0 noscan

    如果一切正常,你可以在手机上搜到raspberrypi设备,并可以配对

  4. 开启rfcomm服务

    sudo rfcomm watch hci0

现在你已经在开启了树莓派的串口服务,可以在手机上下载任意一款“蓝牙串口”软件(推荐下载深圳飞易通公司开发的那个),就可以发送东西到树莓派了。

手机与树莓派建立通信后,你会看到

使用ls -l /dev 可以看到多出了一个新的设备/dev/rfcomm0

监听串口服务并发送消息

可以写个简单的程序与接收、发送串口消息,下面给出个python的样例:

"""
注:这只是一个样例程序,不要在生产环境中使用。
生产环境的程序看第二篇 https://www.ikaze.cn/article/40

pip instal pyserial

"""
import serial
import time
ser = serial.Serial('/dev/rfcomm0', 115200)
ser.write(b'hi')
try:
    while True:
        data=ser.read()
        print('read',data)
        ser.write(data)
        time.sleep(0.1)

except :
    pass
finally:
    ser.close()

然后就可接收手机发的信息了。


至此,第一部分介绍已经结束,下一篇会介绍如何使用bluez控制蓝牙并编写生存环境使用的服务。

Powered by Froala Editor



标签: 树莓派 蓝牙
本文共 1 个回复

阿若
发布于:2019年9月30日 17:49
老哥在,你开头说的  “通过蓝牙修改wifi” 是怎么实现? 在博客中没有找到

gojuukaze
发布于:2019年11月10日 10:34

回复 阿若 :已经能连上蓝牙并通信了,连接wifi无非就是用os.system执行一个命令而已,连接wifi的命令有很多,我用的是nmcli



发表评论 (对文章评论)

captcha