[原创] 【NXP Rapid IoT评测】+ 使用离线IDE构建显示传感器信息的应用

manhuami2007   2019-1-2 17:53 楼主
使用离线的IDE开发能够更灵活。本次实现了温湿度、光强、空气质量、电量和充电状态的采集,并通过屏幕显示出来。
123.png

在提供的模板例程中使用了操作系统。操作系统使用的是Freertos,但是其在rtos上又构建了一个抽象层。其入口是在
  1. void main_task(uint32_t param)
这个函数中。因此我也在这函数中新建了两个任务,获取数据的任务与显示任务。
  1. OSA_TASK_DEFINE(get_data_task, OSA_PRIORITY_NORMAL, 1, 1600, 0)  ;
  2. OSA_TASK_DEFINE(display_task, OSA_PRIORITY_LOW, 1, 1600, 0)  ;


获取数据的任务是没100ms获取一次各数据。代码没有进行优化,写的有点乱,大家先参考一下。
获取温湿度的代码:
  1. void get_temp_and_humity(int32_t *temp, int32_t *humity)
  2. {
  3.         ens210_meas_data_t data;
  4.         ENS210_Measure(mode_TH,&data);
  5.         *temp = data.T_Celsius;
  6.         *humity = data.H_Percent;
  7. }



获取空气质量,也就是获取CO2浓度的代码:
  1. void get_co2(int32_t *air)
  2. {
  3.         uint8_t ready;
  4.         uint16_t uCO2;

  5.         CCS811_dataAvailable(&ready);
  6.         if (ready == 1) {
  7.             CCS811_readAlgorithmResults();
  8.             uCO2 = CCS811_getCO2();
  9.             *air = uCO2;
  10.         }
  11. }

获取光强:
  1. void get_light(int32_t *light)
  2. {
  3.         float temp_light = 0;
  4.         TSL2572_ReadAmbientLight(&temp_light);
  5.         TSL2572_ClearALSInterrupt();
  6.         *light = (int32_t) temp_light;
  7. }

获取电量百分比与充电状态:
  1. void get_battery(int32_t *power_state,char *charge_state_string)
  2. {
  3.         uint8_t bat_level,bat_state;
  4.         BatterySensor_GetState(&bat_level, &bat_state);
  5.         if(bat_state == 0){
  6.                 sprintf(charge_state_string,"    ");
  7.         }else{
  8.                 sprintf(charge_state_string,"!   ");
  9.         }
  10.         *power_state = bat_level;
  11. }



获取数据任务的代码:
  1. void get_data_task(uint32_t param)
  2. {
  3.         while(1){
  4.                 get_temp_and_humity(&temp,&humity);
  5.                 get_light(&light);
  6.                 get_co2(&air);
  7.                 get_battery(&power,charge_state);
  8.                 OSA_TimeDelay(100);
  9.         }
  10. }

显示任务的代码:
  1. int32_t temp,humity,light,air,power;
  2. char charge_state[10];

  3. void display_task(uint32_t param)
  4. {
  5.         char dis_string[20];
  6.         while(1){
  7.                 //GUI_Clear();
  8.                 GUI_GotoXY(0,0);
  9.                 GUI_DispString("temperature is: \n");
  10.                 sprintf(dis_string,"    %d    \n",temp);
  11.                 GUI_DispString(dis_string);

  12.                 GUI_DispString("humity is: \n");
  13.                 sprintf(dis_string,"    %d    \n",humity);
  14.                 GUI_DispString(dis_string);

  15.                 GUI_DispString("light is: \n");
  16.                 sprintf(dis_string,"    %d    \n",light);
  17.                 GUI_DispString(dis_string);

  18.                 GUI_DispString("air is: \n");
  19.                 sprintf(dis_string,"    %d    \n",air);
  20.                 GUI_DispString(dis_string);

  21.                 GUI_DispString("power is: \n");
  22.                 sprintf(dis_string,"    % 3d, %s\n",power,charge_state);
  23.                 GUI_DispString(dis_string);
  24.                 OSA_TimeDelay(100);
  25.         }
  26. }






此内容由EEWORLD论坛网友manhuami2007原创,如需转载或用于商业用途需征得作者同意并注明出处

回复评论 (10)

下一步准备研究下离线IDE的蓝牙怎么用。这个模块是不支持wifi的,我也是晕,没有看清楚。模块支持的是Thread 802.15.4,而wifi是802.11。看来只能连接手机的蓝牙,然后再通过手机的wifi联网了。
点赞  2019-1-2 18:00
电池供电能用多长时间
点赞  2019-1-2 18:01
mark一下!
点赞  2019-1-2 18:11
引用: littleshrimp 发表于 2019-1-2 18:01
电池供电能用多长时间

这个没有试过,时间挺短的
点赞  2019-1-2 22:30
感兴趣、可以商用吗?
点赞  2019-1-5 15:36
引用: 0731tao 发表于 2019-1-5 15:36
感兴趣、可以商用吗?

可以商用,就是成本有点高
点赞  2019-1-9 11:43
请问一下:您用的IDE是MCUXpresso IDE吗?NXP给的SDK可以使用web IDE中的那些组件吗?使用MCUXpresso IDE可以自已封装成web IDE的组件吗?
点赞  2019-1-10 14:39
引用: bjemt 发表于 2019-1-10 14:39
请问一下:您用的IDE是MCUXpresso IDE吗?NXP给的SDK可以使用web IDE中的那些组件吗?使用MCUXpresso IDE可 ...

1、用的是MCUXpresso IDE
2、web ide是提供下载工程代码的,你可以把web ide写好的程序的源代码下载下来使用,这样你就可以使用其中的组件了
3、当然可以
点赞  2019-1-10 15:04
引用: bjemt 发表于 2019-1-10 14:39
请问一下:您用的IDE是MCUXpresso IDE吗?NXP给的SDK可以使用web IDE中的那些组件吗?使用MCUXpresso IDE可 ...

纠正一下,我刚才好像理解错你最后一个问题的意思了。我也不知道能不能封装成web ide的组件。我一开始理解的意思是,封装成能够在离线IDE中使用的组件。
点赞  2019-1-10 17:58
引用: manhuami2007 发表于 2019-1-10 15:04
1、用的是MCUXpresso IDE
2、web ide是提供下载工程代码的,你可以把web ide写好的程序的源代码下载下来 ...

我从web IDE上下载的项目进行调式时报错了。我发了个求助贴子:https://bbs.eeworld.com.cn/thread-1067258-1-1.html
您是怎么解决这个问题的?
点赞  2019-1-11 14:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复