基于MicroChip ATmega4808的阿里云IOT连接开发套件方案

MicroChip(MCHP)的ATmega4808阿里云IOT连接开发套件(简称套件)由功能强大的AVR 8-bit MCU ATmega4808加密认证IC ATECC608A及经过认证的ATWINC1510 Wi-Fi模块组成用户简单的操作即可快速连接到阿里云IOT平台。



借助该套件用户可快速开发智慧家庭、智慧城市、智慧工厂等相关产品;例如在智慧家庭中通过阿里云平台远程控制洗衣机、探测环境光亮度后智能调节窗帘开合、门磁及求助报警等。
硬件上,套件集成温度、亮度传感器、LDE指示灯以及板载调试器;高度集成、即插即用,无需其它部件即可完成IOT连接及应用开发。
软件方面,使用免费开发环境Atmel Studio 或MPLAB X IDE进行代码开发,借助Atmel START或MPLAB Code Configurator(MCC)提供的代码等快速开发相关应用,极大的缩短开发周期。

采用8-bit MCU极大的优化了成本、降低开发难度,MCHP通过Atmel START提供了阿里云IOT开发源码,用户将代码导入后MPLAB X IDE,根据阿里云IOT平台设备证书信息进行少量的修改后,即可将套件连接到阿里云IOT平台;用户可借助MCC生成MCU外设初始化及操作API函数,无需耗费时间查阅芯片手册通过寄存器操作,缩减了开发周期。


经过全面认证(美国、加拿大、欧洲、日本、韩国、中国、印度和台湾均有认证)的ATWINC1510 Wi-Fi模组支持802.11 b/g/n;SOC所需外部元器件非常少;固件包含TCP/IP协议栈,支持TLS v1.2以及Wi-Fi AP和直连等;MCU通过SPI接口连接模组后,代码调用WiFi API函数即可获得无线连接能力,加速IOT产品联网的开发。




加密认证器件ATECC608A基于硬件的密钥存储与硬件加密加速器;具备为每一个物联网硬件设备硬件设备创建唯一、信任且受保护的身份,构建完整的信任链的能力。本方案中ATECC608A用于用于存储设备证书信息(包含设备秘钥)、根据Client ID通过和设备密钥HMAC计算获得Password(Client ID包含时间戳,可以保证每次生成的HMAC都不同);

        简而言之,使用ATmega4808阿里云IOT连接开发套件可以低成本、快速的开发安全的IOT产品

一、硬件设计
        设计原文件可以参考附件中的“AVR-IoT_WG_SCH_PCB_DesignFiles(AltiumDesigner格式)”

1) 原图设计
        方案原理图核心部分如下:
 
1.1) 连接WiFi模组
        MCU与wifi模组连接参考如下资料进行设计,使用MCU 8个IO口(4线SPI、EN、RESET、WAKE、IRQ);
 
2) 连接ECC608
        MCU使用IIC总线与ECC608进行连接,注意需要外部上拉电阻
 
2) PCB设计
2.1) 套件PCB
        下图分别是套件PCB的走线图、Top视图、Bottom视图;





2) WiFi模块布局要点
        PCB设计时,按照常规走线进行设计,需要注意的主要是wifi模组的布局,请参考以下图原则进行设计;
 
二、代码设计
1) 下载源码
        打开网址“https://start.atmel.com”,点击“Browse example”;在打开的网页中的“Search”栏中输入“Alibaba”,点选查找的结果激活下载选项,点击“DOWNLOAD SELECTED EXAMPLE”下载源码;

        点选下载后,服务器开始生成代码,耐心等待一小会,等待生成后,自动下载;
 
2) 导入及编译源码
        首导代码前,要确保已经安装MPLAB X IDE(方案编写时版本为:v5.30)及MPLAB® XC8 Compiler,(方案编写时版本为:v2.10,
方案中使用的是v2.05);
        安装完成后打开IDE,依次选择“File”-->“Import”-->“START MPLAB Project”;

        在新窗口中,根据要求选择下载的文件的存储路径,并点击“Next”;
 
        选择编译器;
 
        点击菜单栏中的“锤子 ”图标,编译工程;
 
        若操作你没有错误,应能编译成功;
 
3) 修改代码
        下文操作一定要仔细核对,避免出错导致云平台设备无法上线
3.1) 根据设备证书信息修改代码
        依据阿里云IOT平台设备证书信息修改文件“AVR_IoT_Alibaba_Cloud_Sensor_Node\Header Files\config
\IoT_Sensor_Node_config.h”中的如下宏定义:PRODUCT_KEYDEVICE_NAMEDEVICE_SECRET以及DEVICE_SECRET (将设备证书信
息烧录进ECC608);
 
3.2) 修改wifi信息
        根据可连接公网的wifi路由信息修改文件“AVR_IoT_Alibaba_Cloud_Sensor_Node\Header Files\config\conf_winc.h”中的
CFG_MAIN_WLAN_SSIDCFG_MAIN_WLAN_PSK建议使用手机热点功能作为wifi路由,路由的SSID及密码不要过于复杂
 
4) 编译下载修改后的固件
        完成以上修改后,点击菜单栏中的“锤子 ”图标,编译修改后的工程,如操作无误应能顺利编译通过;
 
        通过USB连接线将开发板连接到电脑,点击菜单栏的“ 编程”图标,下载生成的固件;
 
        若顺利应能看到选择工具界面,若未找到开发板,重新启动IDE后重新操作以上步骤
 
        若操作无误,应能顺利下载固件;若需要更新调试器固件,按照提示操作即可;
 
        固件烧录成功后,重新给开发板上电;稍等片刻应亮“蓝灯+绿灯”若红灯亮,检查修改设备证书信息以及WiFi信息是否正确
5) 定制外设代码建议
        如果用户自己设计PCB并且不使用套件的引脚配置,可在下载源码前通过“Atmel Start”进行外设、引脚及时钟的配置;
 


6) 部分代码解读
        为了加速用户应用落地,对源码部分代码进行分析,抛砖引玉;
        首先从main.c文件中的main函数开始,main函数主要代码如下:
            application_init();
            while (1) {
                runScheduler();
            }
        我们这里主要分析application_init()
        runScheduler();这个函数通过定时器机制调度各个"任务”;
        a) application_init()函数中调用了“wifi_init(wifiConnectionStateChanged, mode)”初始化wifi模组获得联网能力;同时调
用“CLOUD_init(attDeviceID)”连接云平台;
 
        b) CLOUD_init()函数创建“CLOUD_taskTimer”任务;CLOUD_taskTimer实际是"CLOUD_task”;
 

        c) CLOUD_task调用connectMQTT();
 
        d) connectMQTT函数调用updateJWT();
 
        e) updateJWT函数中看到使用设备证书信息及HMAC计算

三、主要操作步骤
        详细步骤参考附件中的文档“ AVT_IOT_Aliyun_Getting Started (SAC)”
1) 阿里云平台中新建设备并获取设备证书
1.1) 登录阿里云IOT平台后新建产品并增加功能;

1.2) 添加设备并获取设备证书;

2) 修改代码并烧录固件
        参考“代码设计”章节进行操作;
3) 设备上线及在线调试
3.1) 设备上线
        登录到阿里云IOT平台,设备状态从“未激活”变为的“在线”;

3.2) 查看运行状态
        点击“设备”页面“查看”操作后,在新页面中点击“运行状态”,查看设备的运行状态,增加照明等方式改变环境光亮度,此时页面中的“亮度”值应增加;

3.3) 在线调试
        在“在线调试”页面,“调试功能”选择择“黄灯状态”,“方法”选择“设置”修改值为“0”或 “1”;查看开发板黄灯状态(0对应关,1对应开);
        电脑上使用串口调试工具(如putty),打开开发板对应串口,波特率4800;

4)手机APP
        该功能最新状体已经下线,若以前的IOT项目仍能继续使用;

场景应用图

sceneryUrl

产品实体图

imgUrl