厨师长最近用的pi比较多,整天忙于折腾的时候不免有点怀疑:树莓派设置个wifi这么麻烦,要是初学者可能连上网之前可能就放弃了。。

虽然厨师长还不是pi老司机,但起码也是有一定的里程的。每次要连新的wifi,我都是将sd卡拿出来,pc上用读卡器里放一个wpa_supplicant文件,再放到pi上去启动。可是万一身边没有电脑,读卡器,没有显示器键盘,怎么办呢?还真的是凉拌了呢。。如果是3B还好说,厨师长是很喜欢用zero w的,mini hdmi转接线、otg线可不是说有就有的。总之,无法连网这种情况还真不少见。

在github上看到大致两种设置wifi的方案:

第一种:在树莓派未联网的时候,将wifi变成一个AP,访问树莓派AP时候,手机连上AP打开一个网页,设置树莓派连接其他wifi。这个方案听起来还是很可行的,但据说不是很稳定,反正厨师长也没有跑通过。另外如果用这种方式连上了wifi之后,你并不能知道树莓派的ip是多少,那么你就成功的把pi出嫁了!P.S. 厨师长以前喜欢用fing(ios app)来扫描局域网,可是最新的ios都不支持把mac地址和机器名显示出来,所以看着一堆ip也不知道那个是自己的pi,非常无奈。

第二种:通过蓝牙设置树莓派连接wifi。通过蓝牙的好处是跟wifi是相互独立的,就算wifi换了,蓝牙可以照常通讯。这个是个很不错的思路,反正厨师长也很少用到pi的蓝牙。不过这个方案缺点也是有的:蓝牙需要事先绑定好信任的mac地址,另外手机需要下载一个专门用来设wifi的app。其实这两个步骤也足够让初学者放弃了,厨师长觉得主要原因是懒。。

在了解到蓝牙方案之后,厨师长就想起了微信小程序是支持低功耗蓝牙BLE的。如果用小程序来做,那首先可以免去下载app的麻烦。另外低功耗蓝牙的好处是不需要进行设备绑定!直接操作!尽管这个有一定安全风险,厨师长觉得加一个自定义的key可以解决这个问题。

于是厨师长决定自己动手,捣鼓了两三天的蓝牙服务,大家可以在这里看源码:

https://github.com/PiSugar/sugar-wifi-conf

sugar-wifi-conf 重点解决两个问题:

  1. 随时随地设置、切换周围树莓派的wifi
  2. 随时随地获取周围树莓派的ip

解决了这两个问题,便可满足诸多应用场景:

  1. 如果你将树莓派带在身上,可以随时设置树莓派连接wifi,可以连接自己的手机热点,不需要懊恼忘了事先没有设置好连接手机热点。(厨师长经常懊恼这个)
  2. 如果你将树莓派和笔记本带到了奶茶店,却发现忘了带读卡器(其实厨师长主要是忘了带macbook的type-c转换头),你还是可以设置树莓派连接wifi。
  3. 如果你是将树莓派做成一个小作品送给朋友,你只需要告诉人家用微信搜索一个小程序就可以设置wifi了,微信大家都会用,非常便捷。
  4. 如果你是树莓派老司机,可以把这个功能烧在镜像里,以后就拿这个烧录sd卡就可以了。(厨房菜品总监正打算这么做,方便大家吃pi)
  5. 未来可以用蓝牙传输其他简单命令,比方说关机、重启、查看cpu负载等等,虽然BLE不适合做大的数据传输,但是传输一些小字符串还是非常合适的。

说了这么多,最后还是推荐给大家使用吧~

sugar-wifi-conf

PiSugar MiniAPP

让树莓派提供蓝牙BLE服务,使用小程序即可随时更改树莓派的wifi连接,获取wifi名称和ip地址等信息。
适用于带有蓝牙的树莓派型号(已测试4B,3A,3B+, zero w),在Raspbain官方镜像可运行

简易安装步骤

wget http://cdn.pisugar.com/release/sugarwificonfig.sh -O- | sh

关于这个小程序就先说到这里了,经过了一番折腾发现蓝牙确实是挺值得研究的。如果觉得小程序好用,记得Github给个星星啊!