你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

微信读取温湿度传感器数值开发实例V1.1(下)

[复制链接]
micolover2015 发布时间:2015-7-29 17:52
4.7.    使用MiCO SDK开发固件
(a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;
(b) 重新打开mico.io首页,开发者中心 ==> Wiki中心—MiCOKit发布中心,下载MiCOKit SDK。
(c) 打开MiCOKit SDK中的微信开发实例工程:
1),开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台
2)将FogCloud上创建的产品ID/KEY写入固件必须替换
3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH
4)添加读取温湿度代码:
5)改为从开发板上读取温湿度数据后,打包成JSON格式,并上传到FogCloud。




6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。



7)MiCOKit SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)
选择使用的烧录工具J-Link或者ST-LINK:
8)编译/连接:
9)烧录/下载:
4.8.    用IAR或MDK工具开发MiCOKit固件代码(代码注释)
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
OSStatus user_main( mico_Context_t * const mico_context )
{
  user_log_trace();
  OSStatus err = kUnknownErr;
  json_object *send_json_object = NULL;
  const char *upload_data = NULL;
  uint8_t ret = 0;
  uint8_t dht11_temperature = 0;
  uint8_t dht11_humidity = 0;
  // 将温度与湿度数值同步显示在OLED上
  char oled_show_line[OLED_DISPLAY_MAX_CHAR_PER_ROW+1] = {'\0'};
  require(mico_context, exit);
  // 初始化温湿度传感器DHT11
  ret = DHT11_Init();
  if(0 != ret){
// 检查初始化时是否有错误
    err = kNoResourcesErr;
    user_log("DHT11 init failed!");
    goto exit;
  }
  else{
    err = kNoErr;
  }
    while(1){
    mico_thread_sleep(2);  // 每隔2秒进行一次数据采集和上报云端
        // 检查与Fogcloud的连接状态
    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){
      continue;
    }
        // 与Fogcloud连接后,开始数据采集
    ret = DHT11_Read_Data(&dht11_temperature, &dht11_humidity);
    if(0 != ret){
      err = kReadErr;
    }
    else{
      err = kNoErr;

      // 在OLED显示温度与湿度数值,每行最多显示16个字母
      OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_2, "                ");  // 第二行不显示

      memset(oled_show_line, '\0', OLED_DISPLAY_MAX_CHAR_PER_ROW+1);
      snprintf(oled_show_line, OLED_DISPLAY_MAX_CHAR_PER_ROW+1, "T: %2dC         ", dht11_temperature);
      OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_3, (uint8_t*)oled_show_line);

      memset(oled_show_line, '\0', OLED_DISPLAY_MAX_CHAR_PER_ROW+1);
      snprintf(oled_show_line, OLED_DISPLAY_MAX_CHAR_PER_ROW+1, "H: %2d%%  ", dht11_humidity);
      OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_4, (uint8_t*)oled_show_line);

      // 创建一个json对象
      send_json_object = json_object_new_object();
      if(NULL == send_json_object){
        user_log("create json object error!");
        err = kNoMemoryErr;
      }
      else{
        // 创建完成后,将温度与湿度数值打包为json格式
        json_object_object_add(send_json_object, "dht11_temperature", json_object_new_int(dht11_temperature));
        json_object_object_add(send_json_object, "dht11_humidity", json_object_new_int(dht11_humidity));
        upload_data = json_object_to_json_string(send_json_object);
        if(NULL == upload_data){
          user_log("create upload data string error!");
          err = kNoMemoryErr;
        }
        else{
          // 将json包发至Fogcloud, 第二个参数(NULL)代表发送默认值: '<device_id>/out'
          MicoFogCloudMsgSend(mico_context, NULL, (unsigned char*)upload_data, strlen(upload_data));
          user_log("upload data success!\r\ntopic=%s/out\tdht11_temperature=%d, dht11_humidity=%d",
                   mico_context->flashContentInRam.appConfig.fogcloudConfig.deviceId,
                   dht11_temperature, dht11_humidity);
          err = kNoErr;
        }

        // 释放json对象,这步不能省略,否则会造成内存溢出
        json_object_put(send_json_object);
        send_json_object = NULL;
      }
    }
  }

exit:
  user_log("ERROR: user_main exit with err=%d", err);
  return err;
}
4.9.    使用Github工具托管APP代码
在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见《上传文件到GitHub》。
index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)
xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)
详细代码见附件代码包,部分代码解释如下:
修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
4.10. FogCloud上生成设备二维码
(a) 创建新设备
(b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。

(b) 为设备生成微信二维码
点击“同步到微信”按钮:

选择创建的产品和要使用的APP后点击同步按钮。
成功后提示:{"result":200,"message":"success"}
极少数情况会出现result:500问题。解决方法:
(1)确认步骤4.6节中微信测试号已开通所有测试功能。
(2)因为微信公共平台具有“延时”的问题,等待几分钟后重试。
返回到产品界面,可看到你的新设备。

4.11. 使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能
(a) Airkiss配网
Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)
按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
   
(b) 设备控制
Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。
注意:
(1)若配网成功后,没有自动跳转至设备列表页面,请确认步骤4.9节中设备页面html文件名已改为FogCloud中的产品ID。
(2)若配网成功后,设备依然显示设备不在线,可点击右上角刷新按钮。
若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288。
已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面。
   
如果您完成到此步骤,那么恭喜您通关啦!!
最简单的物联网设备已经被您开发出来了!!
没有完成也不要灰心,仔细参照本文检查之前的步骤,如果还有问题,请移步至MiCO社区http://mico.io
Good Luck
5.    版本更新
日期
修改人
版本
更新内容
2015-7-23
Bruce Li
V1.0
1. 初始版本
2015-7-29
Jenny Liu
V1.1
1. 增加4.6节中,“开通微信测试号的所有测试功能”说明
2. 增加4.10节中,“同步微信”时result:500说明
3. 增加4.11节, “设备列表页面无跳转”注意事项



收藏 评论5 发布时间:2015-7-29 17:52

举报

5个回答
lkl0305 回答时间:2015-7-29 21:58:22
学习了,支持
mark0668 回答时间:2015-7-29 22:57:46
3.jpg
micolover2015 回答时间:2015-7-30 11:14:36

谢谢支持~~
micolover2015 回答时间:2015-7-30 11:15:53

加油加油!!!
Brady 回答时间:2015-7-30 17:42:39
加油, 这东西,顿时感觉高大上了

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版