2340|3

59

帖子

0

资源

一粒金砂(中级)

【基于KW41Z的环境传感器】第3贴 - Raspberrypi 3 model B配置BLE读取KW41Z的数据 [复制链接]

本帖最后由 liyuyao001 于 2017-7-24 23:48 编辑

1.修改OTP,使能MSD功能,从U盘启动系统。
拿到新的Raspberrypi 3 model B之后,想装个NOOBS/Raspbian系统,结果最新版的系统要求8GB以上的TF卡才能装带图形界面的Raspbian.
1.png
我手上能找到的最大的TF卡只有4GB……好在新的BCM2837支持MSD(Mass Storage Device)启动,也就是说可以把系统装在U盘里面,这样还不用担心TF卡经常写入导致损坏。
方法很简单明了,按照步骤一步一步来就行:
https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md
总结起来就是,先下载一个Raspbian Lite系统,用Etcher烧写到4GB的小TF卡中(实际上最小2GB的就够了),之后进入系统,修改/boot/config.txt文件,在最后添加一行program_usb_boot_mode=1
,这个命令在系统启动时候写入一个OTP Flag,使能Pi 3B的MSD启动功能。然后,按照正常步骤,把带图形界面的Raspbian用Etcher烧写进U盘就可以把TF卡收起来,单独用U盘启动了。
如果希望用更小的TF卡来启动U盘里面的系统,那么就需要参考Pi 2之类的教程了,这样的不足之处是TF卡还是不能不用,就是系统放在U盘里面,TF卡只是boot的引导程序。这样做的话,参考下面两个网页:
http://hugozhu.myalert.info/2015/03/05/56-boot-raspberrypi-from-16m-sdcard-and-install-raspbian-on-usb-sticker.html
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/
2.安装必要的工具,虚拟键盘,使能SSH和VNC的远程访问
因为树莓派新装的系统需要鼠标,键盘,HDMI显示器,但是不能总是用键盘加显示器来给树莓派干活啊,所以需要使能SSH,通过Putty等终端来登陆。
方法网上搜就能找到,我参考的是这个:
https://www.raspberrypi.org/documentation/remote-access/ssh/
下图是使用Putty通过SSH登陆Pi 3 model B
2.png
然后是VNC
https://www.raspberrypi.org/documentation/remote-access/vnc/README.md
还有这个 https://sspai.com/post/37363
考虑到家里没有键盘,所以想把树莓派连上电视机和鼠标,通过一个虚拟键盘输入密码,连上WiFi。
参考这个连接:
http://www.yoyojacky.com/archives/328
不过后来证明不需要这么干,因为我可以访问我家的路由器,所以,我只需要一根网线,连上路由器,然后登陆路由器得知其IP地址,然后,就可以通过VNC来登陆Pi,然后输入WiFi密码了。
下图是用VNC Viewer登陆 Pi 3B:
2a.png
3.安装Bluetooth LE的相关工具,BlueZ,以及BlueZ的Python封装接口后的Bluepy
参考 http://www.cnblogs.com/vamei/p/6753531.html
http://www.wowotech.net/bluetooth/bluepy_scan.html
http://www.elinux.org/RPi_Bluetooth_LE
我试了bleno和noble的example,运行正常。
运行bleno的pizza示例
sudo node node_modules/bleno/examples/pizza/peripheral
3.png
用手机的LightBlue,可以看到一个名为raspberrypi的BLE外设
3a.PNG

4.通过BLE连接KW41Z并获取数据
主要用到了几个命令: blueZ的bluetoothctl命令,以及blueZ的 hcitool & gatttool
首先,运行bluetoothctl
4.png
然后,在buetoothctl的界面内输入devices命令,可以列出搜索到的BLE设备。
4a.png
这个会话打开着不要关,如果BLE的连接状态有变化,可以看到通知
然后,打开一个新的会话,使用gatttool命令连接KW41Z
4b.png
可以先用sudo blescan 或者sudo hcitool lescan命令扫描BLE,获取MAC地址,然后,用gatttool连接上
4c.png
这个时候,在另外那个运行着bluetoothctl的窗口中,可以看到设备已连接
4d.png
之前曾经试了好久,用gatttool 连接总是提示设备忙 Error:Connect: Device or resource busy (16)
4e.png
后来发现,用bluetoothctl disconnect一下,然后就好了,虽然之前并没有连接,但是不知道为什么gatttool连接不上。
4f.png
用gatttool连接上之后,运行char-desc 可以看descriptor
4g.png
这么多,不知道哪个是哪个……
对比LightBlue的UUID:
4h.png

4i.png

4j.png

可以知道,电池电量的UUID是0x2A19, 当前温度的notification UUID是0x2A1E
使用gatttool可以读出电量的信息,但是无法读出温度
4k.png
因为温度属于notification,是需要打开一个开关,来使能接收的。
在网上找到了这个https://stackoverflow.com/questions/15657007/bluetooth-low-energy-listening-for-notifications-indications-in-linux
gatttool 输入char-read-uuid 2902,列出 CCC (Client Characteristic Configuration) 属性
4l.png
网上说“You can try setting them all to 0100 to get notifications, 0200 for indications, 0300 for both, or 0000 for everything off”
所以,退出gatttool的交互命令,然后输入
gatttool -b 00:60:37:00:00:07 --char-write-req --handle=0x0018 --value=0100 --listen

4m.png
同样,可以不在交互模式下用gatttool来读取电量
gatttool -b 00:60:37:00:00:07 --char-read --handle=0x0020
4n.png

至此,可以用命令来读到传感器的数据了。


此内容由EEWORLD论坛网友liyuyao001原创,如需转载或用于商业用途需征得作者同意并注明出处

此帖出自NXP MCU论坛

回复

59

帖子

0

资源

一粒金砂(中级)

占沙发
可能图片会挂掉,我正在想办法,因为我试过从world粘贴过来图片会挂掉,图又比较多,不想一张一张传到论坛再一张一张插进来。所以,我先把world的所有内容,写在了有道云笔记里,然后再粘贴过来,我自己能看到,以为这样别人也能看到……
有知道怎么解决的同学请教我一下。

回复

59

帖子

0

资源

一粒金砂(中级)

重新一张张上传到了论坛,这回图片正常了

点评

不好意思 ,来晚啦 下次可以试试红框的功能,远程下载图片,从网页过来的图片,可以直接下载下来 [attachimg]314170[/attachimg]  详情 回复 发表于 2017-7-25 16:36

回复

2万

帖子

71

资源

管理员

liyuyao001 发表于 2017-7-24 23:49
重新一张张上传到了论坛,这回图片正常了

不好意思 ,来晚啦
下次可以试试红框的功能,远程下载图片,从网页过来的图片,可以直接下载下来

QQ图片20170725163302.png


个人签名

不管是哪年,都要加油!继续为中国电子行业做出小小的贡献吧! 扣扣 1206973913


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/7 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表