极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13737|回复: 0

【Ameba Arduino】实战:QQ物联--手机QQ和Ameba通讯

[复制链接]
发表于 2016-7-5 11:49:53 | 显示全部楼层 |阅读模式
本帖最后由 Ameba_Arduino 于 2016-7-5 11:49 编辑

1      QQ LinkQQ物联提供的云端服务可将QQ帐号体系、好友关系链、QQ消息通道及音视频服务等核心能力与设备相连接,不再需要单独的APP,可通过手机QQ来与设备进行通讯。
Ameba目前已经提供支持QQ物联平台的解决方案,可在http://iot.open.qq.com/wiki/#!SDK/RTOS_SDK_Download.md中看到相关的Realtek8711 的库文件。
为方便用户使用,我们同时提供了范例在中。(申请公测账号需要1-3个工作日)

1.1  手机QQ与Ameba相互通讯1.1.1                       材料准备
l  Ameba x 1
2 Patch file for QQ-Link:

1.1.2                       QQ物联准备可结合http://iot.open.qq.com/wiki/#!CASE/Air_Purifier.md的步骤来完成准备。
1.1.2.1    申请公测进入链接http://iot.open.qq.com/?from=management,选择“申请公测”,为您的QQ号取得QQ物联的公测资格。公测申请提交到白名单开通,大约需要1-3个工作日时间。

1.1.2.2    配置平台在白名单开启后,可进入“开发配置平台” http://iot.open.qq.com/对设备进行注册及配置。

进入 配置平台 - 设备 之后,点击添加设备按钮,填写“设备名称“及选择“设备类型”后即可开始快速注册一个新设备

完成后,我们已经获得了该产品获得重要信息:pid和serverkey。
点击编辑设置设备的信息

即可开始对设备的相关信息进行设置

1.设备信息

·        设备型号 您可以自由填写。

·        操作系统 RTOS

·        联网方式 WiFi

·        配网方式QQLink(配合example使用)



        
    • QQLink: 可通过手机QQ将设备配置WiFi网络
        
    • WiFi      Router: 设备自行连接WiFi,手机QQ要连接同一WiFi在局域网内搜索设备

·        公钥上传 点击 网页上的”公钥&证书工具下载(Win 7 Only)”链接,然后运行”密钥生成工具”(CreateKeySnLicenceTool),点击下图中的”生成公私钥对”按钮,会在您指定的目录下生成一对非对称密钥文件: ec_key.pem (需妥善保管)和 public.pem。之后点击上传按钮上传public.pem 就可以了。



2. 功能配置
为配合提供的范例的使用,在公有功能中,开启ID:10000手机QQ给设备发文本消息以及ID:10101剩余电量功能。

3. 控制器设置
可使用默认的“自动生成控制器”,点击“下一步”进行保存。
4. OTA固件管理
在IAR编译好之后,可将固件上传至此。
5. “动作”设置
点击配置页面左侧的“动作”,然后点击“添加动作”,来添加由手机QQ所触发的设备需要做的动作内容。

以此example为例,设定动作名称(以“文本”为例),消息类型为“动态消息”,消息模板为“纯文本”,然后点击保存。

6. “触发器”设置
添加触发器来触发上一步中所设定的动作,以完成范例中设备要发给QQ的文本信息的动作。

设定触发器时,首先选定要设定的设备,然后选择“设备给手机QQ发消息”的功能,在设置触发条件时,临界值设定为“8”,在下面选择“等于”,被触发的动作选择在上一步中设定的动作“文本”。

此处设定的临界值为8是因为在qq_device.c($sdk\component\common\application\qqlink\v1.1.101\src)中设定了msg trigger为8.

1.1.2.3    初始化信息要完成手机QQ与Ameba的对接,需要几个关键信息。PID,SN, LICENSE以及二维码。具体的名词解释可参考http://iot.open.qq.com/wiki/#!FUNC/ExplanationOfTerms.md。
·        pid(product id:产品ID)
成功添加设备后即可获得,可在设备配置页面的上方找到。
进入http://iot.open.qq.com,选择相应的设备,点击“编辑”,即可在页面上方获取“设备PID”。
·        sn(serialnumber:序列号)
依然使用生成公私密钥时使用的工具(CreateKeySnLicenceTool),若没有,可到http://iot.open.qq.com/wiki/#!SDK/RTOS_SDK_Download.md的“工具下载”中下载“key_tools”
可选择“使用自有序列号”,序列号格式要求:长度必须是16个字符的字母、数字或者连词符的组合;
也可以选择随机生成
然后点击下方的“生成SN”,所有生成的SN将会保存至所填的“选择路径”下。

·        license(sn对应的认证签名)
生成license时需要使用到“设备信息”中和公钥一起产生的私钥ec_key.pem。
添加私钥,然后点击“生成Licence”,在每个SN对应的文件夹中,就会存有对应license的txt 文档。点击“验证文件签名是否正确”对SN和license进行验证。




·        二维码
每一个SN会对应一个二维码,内容为http://iot.qq.com/add?pid=<PID>&sn=<SN>
您可以到http://liantu.com/或使用其他二维码生成工具来获取二维码。
以“联图网”为例,点击左侧的“网址”图标,输入URL内容,将PID和SN改为对应的值,点击“保存图片”即可获得二维码。

1.1.2.4    下载手机QQ可以在http://im.qq.com/下载最新的手机QQ版本,支持智能硬件接入的手机QQ的版本为:
Android QQ : 要求5.7版本以上 iPhoneQQ : 要求5.7版本以上

1.1.3                       范例说明1.1.3.1    将QQLink patch加入Ameba project
1.      将QQLink patch中的文件添加到SDK对应的位置
·        qqlink 文件夹复制到SDK下“\component\common\application”中
·        atcmd_qqlink_example.c 复制到SDK下“\component\common\api\at_cmd\”中
·        lib_rtlstd.a文件替换SDK中的“\component\soc\realtek\8195a\misc\bsp\lib\common\IAR\lib_rtlstd.a
·        
2.      在IAR中添加相关文件。
·        IARproject中,在“console”文件夹中添加“atcmd_qqlink_example.c
右键单击“console”文件夹,选择“Add”下的“Add Files”,加入刚刚复制到“component\common\api\at_cmd”中的“atcmd_qqlink_example.c”。


·        IARproject中,添加“qqlink”文件夹
单击右键,选择“Add”下的“Add Group”, “Group name”为“qqlink”。

·        添加“...\qqlink\v1.1.101\src”中的C文件以及lib文件到“qqlink”文件夹
右键单击“qqlink”,选择“Add”下的“Add Group”,添加“...\qqlink\v1.1.101\src”中的所有C文件,
若为芯片为RTL8711AF, 添加“Lib_txdevice_1.1.101_sram.a”;
若为RTL8711AM或RTL8195AM, 添加“Lib_txdevice_1.1.101_sdram.a”

1.1.3.2    修改相关设定并编译有四个文档需要修改:
·        platform_opts.h($sdk\project\realtek_ameba1_va0_example\inc)($sdk\component\common\application\)
添加: “#define CONFIG_QQ_LINK    1”
关闭“fast reconnect”:#define CONFIG_EXAMPLE_WLAN_FAST_CONNECT 0
关闭“simple config”:  #defineCONFIG_INCLUDE_SIMPLE_CONFIG                0

·        example_entry.c($sdk\component\common\example\)
在example_entry()中添加:

voidexample_entry(void)
{
... ...
#if CONFIG_QQ_LINK
example_qq_link();
#endif
... ...
}

·        update.c($sdk\component\common\utilities)
打开WRITE_OTA_ADDR:   #defineWRITE_OTA_ADDR 1

·        qq_device.c($sdk \component\common\application\qqlink)
1.      将void device_run()中info.product_id = XXXXXXXXX;的 info.product_id的数值改为在QQ物联中您的设备的PID值。
2.      uint8_tCLIENT_PUB_KEY[] 和uint8_t AUTH_KEY[]的值
需要用到密钥生成工具以及服务器公钥
点击设备编辑页面中的“服务器公钥下载”

下载后打开密钥生成工具,点击“生成共享密钥和客户端公钥”,用记事本打开刚刚下载的服务器公钥,将其复制到“请输入服务器公钥:”中,点击“生成”,即可获得”client_pub_key”和”ecdh_key”.
uint8_t CLIENT_PUB_KEY[] = “client_pub_key”后面的内容,
uint8_t AUTH_KEY[] = “ecdh_key”后面的内容

完成如上修改后,点击make,然后将其download到Ameba中。

1.1.3.3    使用步骤
1.      如果是第一次是有,Ameba会提示没有“SN/LICENSE”,因此需要用AT commad “ATCQ”将您生成好的一组SN 和LICENSE存入flash。

2.      ATcommad “ATCQ” 使用方法: 因为license较长,因此将其分为part1和part2两部分存入。您可输入ATCQ来查看其用法。
·        ATCQ=sn,xxxxxxxxxx
·        ATCQ=licensepart1,xxxxxxxxxxxxx
·        ATCQ=licensepart2,xxxxxxxxxxxxx

3.      ResetAmeba, “**********RTOS SDK 1.1.101**********”的字样将会显示,并且Ameba 开始scan channel

4.      将手机连上可连接网络的WiFi,并打开手机QQ(需版本5.7以上)。
5.      在QQ联系人列表中,打开“我的设备”,点击“发现新设备”,准备好Ameba中储存的SN和PID所对应的二维码,用“扫一扫”来锁定设备(二维码的内容为http://iot.qq.com/add?pid=<PID>&sn=<SN>)


6.      扫描二维码后,在添加新设备页面点击“我已确认”,然后输入WiFi的相关信息点击“下一步”进行配置。


7.      Ameba在搜索到网络配置信息后,会锁定channel,然后连接WiFi。


8.      配置好后,手机将会搜索到该设备,并提示进行绑定,点击“确认绑定”,即可将设备添加到手机QQ的通讯录中。Ameba的log也会显示“[device_on_bind_status] : Bind status[bound].”



9.      点击“进入设备”可看到显示电量的界面,也可点击右上方的信息按钮,进入聊天模式,example中,ameba会回复用户它刚收到的信息


1.1.3.4    OTA在设备编辑页面选择OTA固件管理,点击”上传OTA包”, 将IAR 编译后的固件上传。固件为ota.bin($ sdk\ project\realtek_ameba1_va0_example\EWARM-RELEASE\Debug\Exe),并设置版本号为100。

若有更新,将最新的ota.bin上传,并更改版本号为大于100的数值。在手机QQ中,点击设备的“设置”,选择“检查设备更新”,若检测到不是最新版本,可选择“下载更新文件”来升级固件。

在下载没有完成时,可随时点击红色×来停止下载。

下载完成后,手机QQ会显示“重启设备安装更新”,Ameba的log会显示 “Otadownload succeed”。



下载完成后,点击“重启设备安装更新” ,再点击“确认”后,Ameba会reset进入新的固件。


关于更多介绍请访问官方主页:http://ameba.realsil.com.cn/
QQ交流群:Ameba Arduino 技术交流群(184666894
论坛干货:
【新品推荐】Ameba Arduino全功能IoT解决方案
【Ameba Arduino】入手教程之一:开发环境搭建
【Ameba Arduino】入门教程之二:5分钟玩转小车无线控制
【AmebaArduino】入门教程之三: Wi-Fi之初体验
【Ameba Arduino】入门教程之四:Ameba WebServerLED 控制
Ameba Arduino】入门教程之五:给无线小车添加“眼睛”
Ameba Arduino】入门教程之六:无线小车进阶控制---六轴姿态控制
Ameba Arduino】实战:用Ameba打造Wi-Fi控制的MP3播放器
【AmebaArduino】实战:用Ameba读写SD卡
【AmebaArduino】实战:Airkiss配置Ameba连接Wi-Fi

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-23 22:46 , Processed in 0.039836 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表