本帖最后由 hiyle 于 2016-12-14 15:53 编辑
由于麒麟座开发版申请很慢,而很多朋友之前都有机智云的GoKit的开发版,我们可以利用起来学习OneNET的接入。
例程:麒麟座OneNET_Demo_ESP8266_EDP_Sensors
开发版:机智云Gokit V2.1
移植过程:
1、 给ESP8266烧写AT固件
A、Gokit V2.1上面的ESP8266模块型号是ESP12-F,其引脚图如下:
001.jpg (0 Bytes, 下载次数: 426)
2016-12-14 14:33 上传
B、烧写固件需要将GPIO0拉低到地,如下图说明;
002.jpg (0 Bytes, 下载次数: 440)
2016-12-14 14:34 上传
C、下载1.5.4的AT固件
ESP8266-固件V1.5.4.zip
(612.69 KB, 下载次数: 1957)
2016-12-14 14:37 上传
点击文件名下载附件
D、下载固件烧写程序
E、硬件连接,使用USB-转USART TTL板,连接如下:
10091963721334957-1.jpg (0 Bytes, 下载次数: 435)
2016-12-14 14:39 上传
连接好之后的样子
119115931933157308-1.jpg (0 Bytes, 下载次数: 459)
2016-12-14 14:40 上传
F、打开烧写文件,按如下设置,按START之后再给开发版上电,烧写程序;
003.jpg (0 Bytes, 下载次数: 436)
2016-12-14 14:43 上传
004.jpg (0 Bytes, 下载次数: 430)
2016-12-14 14:43 上传
G、测试ESP8266模块,使用AT命令,有返回,表示模块正常;
005.jpg (0 Bytes, 下载次数: 461)
2016-12-14 14:45 上传
2、移植例程
A、ESP8266.h中修改使用的路由器的SSID和PASSOWRD;
006.jpg (0 Bytes, 下载次数: 440)
2016-12-14 14:48 上传
例如:
#define CWJAP "AT+CWJAP=\"ABCDEF\",\"123456789\"\r\n"
B、在EdpDemo.c修改APIKey和设备ID;
007.jpg (0 Bytes, 下载次数: 460)
2016-12-14 14:50 上传
如果大家还没有建立自己的edp设备,请查阅OneNET相关资料,在平台建立自己的设备;
C、在stm32f10x.h文件中,修改系统晶振频率(此步非常重要,因为麒麟是12M晶振,而GoKit是8M)
008.jpg (0 Bytes, 下载次数: 455)
2016-12-14 14:52 上传
将12M的晶振频率改为8M;
D、对EdpDemo.c程序的修改,由于硬件不同,底层驱动需要修改,在这里我们只是演示一下,因此没有去做相关的驱动,用随机函数获取数据;
修改如下:
void Save_AllSensorsToOneNet(void)
{
EdpPacket* send_pkg;
uint16_t f;
uint16_t hum[1], temperature[1];
int16_t adxl[3], hmc5883l[3];
/*读取温湿度*/
memset(data_string_dst, 0, sizeof(data_string_dst));
//SHT20_read_user_reg();
//mDelay(200);//延迟,设备没有那么快的响应时间,否则总线处理忙等
//SHT2x_MeasureHM(SHT20_Measurement_T_HM, temperature);
//mDelay(1000);
//SHT2x_MeasureHM(SHT20_Measurement_RH_HM, hum);
//mDelay(400);
//f = (uint16_t)Read_BH1750();
f = rand(); //测试,生成随机数
temperature[0] = (char)rand(); //测试,生成随机数
hum[0] = (char)rand(); //测试,生成随机数
snprintf((char *)data_string_t, sizeof(data_string_t), ",;BH1750FVI,%d;SHT20_temperature,%d;SHT20_hum,%d;", (uint16_t)f, (uint16_t)temperature[0], (uint16_t)hum[0]);
//读取BH1750FVI
printf("%s\n", data_string_t);
mDelay(400);
//读取ADXL345
//ADXL345_GETXYZ(adxl);
adxl[0] = (char)rand(); //测试,生成随机数
adxl[1] = (char)rand(); //测试,生成随机数
adxl[2] = (char)rand(); //测试,生成随机数
snprintf((char *)data_string_adxl, sizeof(data_string_adxl), "ADXL345_x,0x%x;ADXL345_y,0x%0x;ADXL345_z,0x%x;", (uint16_t)adxl[0], (uint16_t)adxl[1], (uint16_t)adxl[2]);
printf("%s\n", data_string_adxl);
mDelay(400);
//读取HMC588CL
//HMC5883L_GetXYZ(hmc5883l);
hmc5883l[0] = (char)rand(); //测试,生成随机数
hmc5883l[1] = (char)rand(); //测试,生成随机数
hmc5883l[2] = (char)rand(); //测试,生成随机数
snprintf((char *)data_string_hmc5883l, sizeof(data_string_hmc5883l), "HMC5883L_x,0x%x;HMC5883L_y,0x%x;HMC5883L_z,0x%x", (uint16_t)hmc5883l[0], (uint16_t)hmc5883l[2], (uint16_t)hmc5883l[1]);
printf("%s\n", data_string_hmc5883l);
strcat((char *)data_string_dst, (const char *)data_string_t);
strcat((char *)data_string_dst, (const char *)data_string_adxl);
strcat((char *)data_string_dst, (const char *)data_string_hmc5883l);
printf("%s\n", data_string_dst);
send_pkg = PacketSavedataSimpleString(NULL, (const int8_t*)data_string_dst);
DoSend(0, (const uint8_t *)send_pkg->_data, send_pkg->_write_pos);
DeleteBuffer(&send_pkg);
mDelay(1000);
}
保存工程。
3、编译及烧写测试
A、改CPU型号为STM32F103C8;
009.jpg (0 Bytes, 下载次数: 453)
2016-12-14 15:00 上传
B、STM32F10X_HD改成STM32F10X_MD;
010.jpg (0 Bytes, 下载次数: 452)
2016-12-14 15:02 上传
C、设置DEBUG,我这里使用的ST-LINK V2,用的SW接口,四线调试;
011.jpg (0 Bytes, 下载次数: 454)
2016-12-14 15:03 上传
012.jpg (0 Bytes, 下载次数: 468)
2016-12-14 15:06 上传
D、编译并使用仿真按钮下载程序到CPU,并运行
014.jpg (0 Bytes, 下载次数: 481)
2016-12-14 15:11 上传
013.jpg (0 Bytes, 下载次数: 434)
2016-12-14 15:08 上传
E、通过miniUSB进行运行监测
启动信息
015.jpg (0 Bytes, 下载次数: 431)
2016-12-14 15:13 上传
连接到OneNET,并有数据发送到平台
016.jpg (0 Bytes, 下载次数: 437)
2016-12-14 15:13 上传
F、在平台查看上传的数据,设备已经在线
017.jpg (0 Bytes, 下载次数: 452)
2016-12-14 15:23 上传
收到的数据
018.jpg (0 Bytes, 下载次数: 436)
2016-12-14 15:24 上传
G、应用
http://open.iot.10086.cn/appview ... 29d66a02e8bfd107bbd
019.jpg (0 Bytes, 下载次数: 445)
2016-12-14 15:28 上传
4、移植好的程序
2016-12-14 15:30 上传
点击文件名下载附件