搜索

[uCOS/RTOS] 【RTOS】+ RT-Thread物联网环境监测平台

[复制链接]
2426|1
 楼主 | 2020-6-14 21:31 | 显示全部楼层 |阅读模式
报名的时候没有申请板子,自己手里还有好多板子不会用在吃灰
今年寒假回来开始学的单片机,所以用的自己的stm32f767igt6开发版。
rt-thread的教程还没看明白,所以先硬着头皮上了。
做的是一个sht30采集温湿度数据,上传到自己的emq服务器,然后在nodered平台进行显示,用的报名申请的ucloud服务器。

就是简单的连线,哈哈
现在来看程序:
创建的一个SHT30获取温湿度数据的线程,使用rtthread studio 自带的sht3x软件包和模拟i2c。
  1. /*
  2. * Copyright (c) 2006-2020, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date           Author       Notes
  8. * 2020-06-14     wangy       the first version
  9. */
  10. #include <rtthread.h>
  11. #include <board.h>
  12. #include <sht3x.h>
  13. #include <string.h>
  14. #define THREAD_PRIORITY         10
  15. #define THREAD_STACK_SIZE       1028
  16. #define THREAD_TIMESLICE        20

  17. static rt_thread_t tid1 = RT_NULL;

  18. /* 入口函数 */
  19. static void sht30_init_thread_entry(void *parameter)
  20. {
  21.     sht3x_device_t  sht3x_device;

  22.     sht3x_device = sht3x_init("i2c1", 0x44);

  23.     rt_thread_mdelay(100);

  24.     char num[100];

  25.     while (1)
  26.     {
  27.         if(RT_EOK == sht3x_read_singleshot(sht3x_device))
  28.         {
  29.             memset(num,0,100);
  30.             sprintf(num,"{\"humidity\": %d,\"temperature\": %d}",(int)sht3x_device->humidity,(int)sht3x_device->temperature);
  31.             rt_device_write(rt_device_find("uart2" ), 0, num, (strlen(num)));
  32.             rt_kprintf("sht30 humidity   : %d.%d  ", (int)sht3x_device->humidity, (int)(sht3x_device->humidity * 10) % 10);
  33.             rt_kprintf("temperature: %d.%d\n", (int)sht3x_device->temperature, (int)(sht3x_device->temperature * 10) % 10);
  34.         }
  35.         else
  36.         {
  37.             rt_kprintf("read sht3x fail.\r\n");
  38.             break;
  39.         }
  40.         rt_thread_mdelay(2000);
  41.     }
  42. }

  43. /* 创建线程 */
  44. int sht30_init(void)
  45. {
  46.     /* 创建线程*/
  47.     tid1 = rt_thread_create("sht_30_init",
  48.             sht30_init_thread_entry, RT_NULL,
  49.                             THREAD_STACK_SIZE,
  50.                             THREAD_PRIORITY, THREAD_TIMESLICE);

  51.     /* 如果获得线程控制块,启动这个线程 */
  52.     if (tid1 != RT_NULL)
  53.         rt_thread_startup(tid1);

  54.     return 0;
  55. }

复制代码
主函数包括了串口2 和 sht30的初始化。
  1. /*
  2. * Copyright (c) 2006-2020, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date           Author       Notes
  8. * 2020-05-15     RT-Thread    first version
  9. */

  10. #include <rtthread.h>
  11. #include <string.h>
  12. #define DBG_TAG "main"
  13. #define DBG_LVL DBG_LOG
  14. #include <rtdbg.h>
  15. #include <sht3x.h>

  16. extern int sht30_init(void);

  17. //static char str[] = "hello wty!\r\n";  /* 需要发送的数据 */

  18. static int uart2_init(void)
  19. {
  20.     rt_device_open(rt_device_find("uart2"), RT_DEVICE_FLAG_INT_RX);
  21.     return 0;
  22. }

  23. int main(void)
  24. {
  25.     int count = 1;
  26.     sht30_init();
  27.     uart2_init();

  28.     while (count++)
  29.     {
  30.      //   LOG_D("Hello RT-Thread!");
  31.      //   rt_kprintf("hello");

  32.         rt_thread_mdelay(1000);
  33.     }

  34.     return RT_EOK;
  35. }


  36. MSH_CMD_EXPORT(uart2_init, uart device sample);
复制代码
mqtt模块用的透传模块,设置好topic那些信息,开机进入透传所以没有程序了。
下面是自己搭建的emq服务器

以下为nodered显示效果



图片3.png
图片2.png
批注 2020-06-14 211940.png

物联网环境监测平台.rar

260.44 KB, 下载次数: 20

使用特权

评论回复
| 2020-6-16 08:42 | 显示全部楼层
谢谢分享,,,,,,,,,,,,,,

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表