建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

mike_Peng

发帖: 6粉丝: 7

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-11-16 10:49:09 3369 2 楼主 显示全部楼层
[技术干货] 【Mike教你物联网开发】nrf51822+sim900a无操作系统对接OC demo

上周跑了一个NRF51822 Eval Kit(即NRF51822 + BLE400底板)与SIM900a 2g模块无操作系统对接OC的demo。主要使用的是agent tiny的SDK。在此记录一下。

 

下面给出BLE400的示意图。图片截取自板子官网:

http://www.waveshare.net/shop/NRF51822-Eval-Kit.htm


20180821161821309001.png

20180821161824881002.png


我们将51822模块**插槽20180821161825940003.png,就可以通过板子的插槽20180821161826537004.png方便的进行引脚的连接。插槽20180821161826537004.png主要使用了串口IO引脚P05与P06。


20180821161826297005.jpg  20180821161829910006.jpg


整个板子通过USB接口20180821161830897007.png进行供电,同时通过电源输入输出接口20180821161830360008.png对SIM900a供电。SIM900a的示意图如下,图片来自淘宝。


20180821161835579009.png


由于SIM900a工作在5v电压下,因此BLE接口20180821161830360008.png的5v输出与GND分别连接SIM900a接口20180821161836106010.png的VCC5与GND。而51822工作于3.3v,因此串口P05(RX)与P06(TX)分别连接SIM900a接口20180821161836816011.png的3VT与3VR。整个硬件连接与运行效果如下图所示:


20180821161837429012.jpg


图中不同的LED表示不同的状态,具体的对应关系如下。


LED灯

操作

功能说明

LED0

开:表示设备接入云平台成功

LED1

开关

关:表示设备准备上报数据

开:表示设备收到云平台ACK

LED2

翻转

翻转:表示成功处理云平台下发命令,每处理一次就翻转一次

LED3

开:表示程序正常运行

LED4

翻转

翻转:表示设备处理接收数据


下面对各LED状态进行说明。这里涉及到agent tiny连接OC的四个步骤:

atiny_init()→atiny_bind()→atiny_data_report()→atiny_cmd_ioctl()


首先是LED3。在主函数main()中,程序在进行必要的初始化后就会点亮LED3。


20180821161837269013.jpg


 

在函数agent_tiny_entry()中会进行atiny_init()与atiny_bind()的操作。在atiny_bind()中有一个主循环体


20180821161840682014.png


也就是只要连上OC且没有quit就保持LED0点亮,否则就熄灭。

 


在对timer进行初始化时有


20180821161844717015.jpg


而app_data_report()中调用了atiny_data_report(),该函数中执行了


20180821161845239016.jpg


即上报数据关闭LED1。

 


而在接收到OC平台ack信号后调用


20180821161847453017.jpg

并点亮LED1。



在agent tiny四步走的第四步atiny_cmd_ioctl()中会对云平台cmd进行判断:


20180821161851614018.jpg


函数atiny_write_app_write()实现如下:


20180821161853637019.jpg

即每收到一次命令LED2翻转一次。

 


LED4是通过串口中断来控制的。在函数sim900a_init()中将sim900a_data_handler()设为回调函数:


20180821161853350020.png


在sim900a_data_handler()中实现了LED4的翻转:


20180821161854907021.jpg

 

 

关于OC平台profile的制作,设备调测连接OC与相关demo演示等问题请参考:

https://developer.huawei.com/ict/forum/thread-50869.html

同时注意修改agent_tiny_demo.c中对应的配置哦~

 

20180821161855178022.png

 


举报
分享

分享文章到朋友圈

分享文章到微博

学长不知道

发帖: 2粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-1-22 14:54:02 沙发 显示全部楼层

有源码吗?

点赞 引用 举报

mike_Peng

发帖: 6粉丝: 7

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2019-1-23 09:53:57 板凳 显示全部楼层

有的。为了你专门上传的https://github.com/Yuheng-P/nrf51822

点赞 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册