【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台

 

准备工作:

  • iot board 潘多拉开发板
  • esp8266模块
  • 源码
  • env

实验:在bsp上跑onenet软件包,并获取AXIS SENSOR的数据

注册onenet:

  1. 注册账户
  2. 创建产品
  3. 创建设备

可以根据官方文章来进行:https://www.rt-thread.org/document/site/submodules/onenet/docs/samples/

env配置:

  1. uart2,这是ESP8266使用的。 【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第1张图片
  2. 打开AT组件,【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第2张图片
  3. 打开onenet软件包,并根据onenet网站中的设备、产品信息修改此处相应的参数。【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第3张图片【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第4张图片
  4. 打开AT软件包,其中还需要配置:esp8266模块、wifi账户与密码信息。【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第5张图片【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第6张图片
  5. 由于要读取六轴传感器(icm20608)的数据,所以打开他的软件包。注 :mpu6xx软件包兼容icm20608。【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第7张图片【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第8张图片
  6. 配置完成后,需要pkgs --update更新软件包
  7. scons --target=mdk5 生成新工程

代码:

打开工程,基于onenet例程进行修改:

  • 把上传的温度数据流改为:六轴传感器数据流

【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第9张图片

修改函数:onenet_upload_entry()

#include "mpu6xxx.h"

#define MPU6XXX_DEVICE_NAME  "i2c3"

/* upload random value to temperature*/
static void onenet_upload_entry(void *parameter)
{
    int value = 0;

    struct mpu6xxx_device *dev;
    struct mpu6xxx_3axes accel, gyro;
    int i;

    /* Initialize mpu6xxx, The parameter is RT_NULL, means auto probing for i2c*/
    dev = mpu6xxx_init(MPU6XXX_DEVICE_NAME, RT_NULL);

    if (dev == RT_NULL)
    {
        rt_kprintf("mpu6xxx init failed\n");
        return;
    }
    rt_kprintf("mpu6xxx init succeed\n");

    /* 20次*/
    for (i = 0; i < 20; i++)
    {
        value = rand() % 100;

        /* 假的温度数据,随机数*/
        if (onenet_mqtt_upload_digit("temperature", value) < 0)
        {
            log_e("upload has an error, stop uploading");
            break;
        }
        else
        {
            log_d("buffer : {\"temperature\":%d}", value);
        }
        
        /**********注意每个数据流之间要延时,否则onenet官网的设备下检测不到某些数据流***********/
        rt_thread_delay(rt_tick_from_millisecond(1000));
        
        /* 六轴传感器数据读取*/
        mpu6xxx_get_accel(dev, &accel);
        mpu6xxx_get_gyro(dev, &gyro);               
        
        /* 六轴传感器数据读取:accel*/
        if (onenet_mqtt_upload_digit("accel", accel.x) < 0)
        {
            log_e("upload has an error, stop uploading\n");
            break;
        }
        else
        {
            log_d("accel.x = %3d, accel.y = %3d, accel.z = %3d  ", accel.x, accel.y, accel.z);
        }

        /**********注意每个数据流之间要延时,否则onenet官网的设备下检测不到某些数据流***********/
        rt_thread_delay(rt_tick_from_millisecond(1000));
        
        /* 六轴传感器数据读取:gyro*/
        if (onenet_mqtt_upload_digit("gyro", gyro.x) < 0)
        {
            log_e("upload has an error, stop uploading\n");
            break;
        }
        else
        {
            log_d("gyro.x = %3d gyro.y = %3d, gyro.z = %3d\n ", gyro.x, gyro.y, gyro.z);
        }

        /**********注意每个数据流之间要延时,否则onenet官网的设备下检测不到某些数据流***********/
        rt_thread_delay(rt_tick_from_millisecond(1000));
    }
}

编译下载:

  • 终端输入:onenet_mqtt_init   ,进行初始化
  • 测试1:上传数据:onenet_upload_cycle

【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第10张图片

  • 查看onenet官网数据验证测试1:都有数据

【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第11张图片

  • 测试2:下发数据,终端键入 onenet_set_cmd_rsp

【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第12张图片

  • 去onenet官网数据验证测试2:

【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第13张图片

【RT-Thread潘多拉(iot board)】ESP8266使用bsp连接onenet云平台_第14张图片

 

你可能感兴趣的:(RT-Thread)