3258|3

50

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【基于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.

我手上能找到的最大的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

然后是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:

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

用手机的LightBlue,可以看到一个名为raspberrypi的BLE外设


4.通过BLE连接KW41Z并获取数据
主要用到了几个命令: blueZ的bluetoothctl命令,以及blueZ的 hcitool & gatttool
首先,运行bluetoothctl

然后,在buetoothctl的界面内输入devices命令,可以列出搜索到的BLE设备。

这个会话打开着不要关,如果BLE的连接状态有变化,可以看到通知
然后,打开一个新的会话,使用gatttool命令连接KW41Z

可以先用sudo blescan 或者sudo hcitool lescan命令扫描BLE,获取MAC地址,然后,用gatttool连接上

这个时候,在另外那个运行着bluetoothctl的窗口中,可以看到设备已连接

之前曾经试了好久,用gatttool 连接总是提示设备忙 Error:Connect: Device or resource busy (16)

后来发现,用bluetoothctl disconnect一下,然后就好了,虽然之前并没有连接,但是不知道为什么gatttool连接不上。

用gatttool连接上之后,运行char-desc 可以看descriptor

这么多,不知道哪个是哪个……
对比LightBlue的UUID:






可以知道,电池电量的UUID是0x2A19, 当前温度的notification UUID是0x2A1E
使用gatttool可以读出电量的信息,但是无法读出温度

因为温度属于notification,是需要打开一个开关,来使能接收的。
在网上找到了这个https://stackoverflow.com/questions/15657007/bluetooth-low-energy-listening-for-notifications-indications-in-linux
gatttool 输入char-read-uuid 2902,列出 CCC (Client Characteristic Configuration) 属性

网上说“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


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


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


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

此帖出自NXP MCU论坛

最新回复

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

回复
举报

50

帖子

0

TA的资源

一粒金砂(中级)

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

回复

50

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
重新一张张上传到了论坛,这回图片正常了
此帖出自NXP MCU论坛

点评

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

回复

2万

帖子

71

TA的资源

管理员

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

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




此帖出自NXP MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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