发布于:2019年9月30日 17:49
老哥在,你开头说的 “通过蓝牙修改wifi” 是怎么实现? 在博客中没有找到
发布于:2019年11月10日 10:34
回复 阿若 :已经能连上蓝牙并通信了,连接wifi无非就是用os.system执行一个命令而已,连接wifi的命令有很多,我用的是nmcli
树莓派开发完成后第一个遇到的问题就是怎么在不同环境下配置wifi。 通用的做法是树莓派开启蓝牙服务,通过蓝牙修改wifi。
此篇介绍了一些如何开启蓝牙、建立连接,如果急需开发,可以直接看第二篇 树莓派开发 —— 使用蓝牙配置wifi(2):使用bluez开启服务。
hciconfig
: 类似于ifconfig
用于查看蓝牙设备信息。sdptool
: 用于开启服务rfcomm
: 用于开启、连接rfcomm协议的服务这些命令一般都是自带的,你可以运行hciconfig
查看你的蓝牙设备名,默认都是hci0
修改/etc/systemd/system/bluetooth.target.wants/bluetooth.service
文件
如图所示
bluetoothd
增加-C
参数,允许不被推荐的命令行接口ExecStartPost=/usr/bin/sdptool add SP
,此命令表示开启串口服务重启
sudo systemctl daemon-reload
reboot
开启蓝牙发现,并允许配对请求
sudo hciconfig hci0 piscan
# 若需关闭发现,使用
sudo hciconfig hci0 noscan
如果一切正常,你可以在手机上搜到raspberrypi
设备,并可以配对
开启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
回复 阿若 :已经能连上蓝牙并通信了,连接wifi无非就是用os.system执行一个命令而已,连接wifi的命令有很多,我用的是nmcli
发表评论 (对文章评论)