RTduino+sht31温湿度传感器

2023-05-16

本次博客使用的是STM32F103C8T6,因为该BSP已经对接好RTduino了可以直接上手使用。

一、RTduino简介

RTduino是RT-Thread实时操作系统的Arduino生态兼容层,为RT-Thread社区的子社区、Arduino开源项目的下游项目,旨在兼容Arduino社区生态来丰富RT-Thread社区软件包生态(如上千种分门别类的Arduino库,以及Arduino社区优秀的开源项目),并降低RT-Thread操作系统以及与RT-Thread适配的芯片的学习门槛。通过RTduino,可以让用户使用Arduino的函数、编程方法,轻松地将RT-Thread和BSP使用起来。用户也可以直接使用Arduino第三方库(例如传感器驱动库、算法库等)直接用在RT-Thread工程中,极大地补充了RT-Thread社区生态。

本软件包可以在RT-Thread Studio IDE和Keil-MDK编译环境下运行,但是,因为Arduino的库都是基于GCC环境开发的,因此强烈推荐使用RT-Thread Studio IDE运行。

参考链接:https://github.com/RTduino/RTduino

二、在C8T6上使用RTduino读取传感器sht31

打开兼容框架:

修改kconfig,由于C8T6flash只有64k,有些功能就不得不裁剪。

下一步就是去软件包里面拉去sht31的软件包(同时也是arduino那边的传感器库)。

然后保存后编译一下工程,到这一步基本上是不会报错的,如果报错的话就回头看看前面是否按照步骤来的。然后来到代码编写环节,不同于传统的RTthread编写方式,代码编写需要在arduino_main.c文件下进行。

这时来到packages文件下找到刚刚拉取的sht31软件包。将代码复制粘贴到arduino_main.cpp文件中去,然后开始修改。

主要是修改一下波特率,在arduino给的demo下是初始化的9600,但是我们RTthread使用的是115200,为了不乱码就不给Serial.begin()参数这样就使用RTthread的默认波特率。

最后编译一下代码,同时我也将最终代码放在下面:

/***************************************************
  This is an example for the SHT31-D Humidity & Temp Sensor

  Designed specifically to work with the SHT31-D sensor from Adafruit
  ----> https://www.adafruit.com/products/2857

  These sensors use I2C to communicate, 2 pins are required to
  interface
 ****************************************************/

#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"

bool enableHeater = false;
uint8_t loopCnt = 0;

Adafruit_SHT31 sht31 = Adafruit_SHT31();

void setup() {
  Serial.begin();

//  while (!Serial)
//    delay(10);     // will pause Zero, Leonardo, etc until serial console opens

  Serial.println("SHT31 test");
  if (! sht31.begin(0x44)) {   // Set to 0x45 for alternate i2c addr
    Serial.println("Couldn't find SHT31");
    while (1) delay(1);
  }

  Serial.print("Heater Enabled State: ");
  if (sht31.isHeaterEnabled())
    Serial.println("ENABLED");
  else
    Serial.println("DISABLED");
}


void loop() {
  float t = sht31.readTemperature();
  float h = sht31.readHumidity();

  if (! isnan(t)) {  // check if 'is not a number'
    Serial.print("Temp *C = "); Serial.print(t); Serial.print("\t\t");
  } else {
    Serial.println("Failed to read temperature");
  }

  if (! isnan(h)) {  // check if 'is not a number'
    Serial.print("Hum. % = "); Serial.println(h);
  } else {
    Serial.println("Failed to read humidity");
  }

  delay(1000);

  // Toggle heater enabled state every 30 seconds
  // An ~3.0 degC temperature increase can be noted when heater is enabled
  if (loopCnt >= 30) {
    enableHeater = !enableHeater;
    sht31.heater(enableHeater);
    Serial.print("Heater Enabled State: ");
    if (sht31.isHeaterEnabled())
      Serial.println("ENABLED");
    else
      Serial.println("DISABLED");

    loopCnt = 0;
  }
  loopCnt++;
}

最终运行结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RTduino+sht31温湿度传感器 的相关文章

随机推荐

  • 详解结构体与链表

    目录 1 定义使用结构体变量 2 使用结构体数组 3 结构体指针 4 结构体内存对齐 重点 5 typedef的使用 6 动态内存的分配与释放 7 链表的创立 增删查改插 什么是链表 xff1f 静态链表和动态链表 链表的创立 链表的插入元
  • c++头文件及函数

    目前小编只了解到这些 xff0c 如果还有其他的一些头文件或函数 xff0c 欢迎评论区留言或者私信小编 xff0c 谢谢大家的观看 1 include lt iostream gt system pause 系统暂停 system mod
  • 将Ubuntu虚拟机架设到GNS3拓扑网络上并进行TCP协议仿真分析

    目录 前言环境配置 xff08 将Ubuntu虚拟机挂载到GNS3拓扑网络上 xff09 配置Ubuntu虚拟机GNS3拓扑网络配置先进行一下数据传输检验通路是否正常 开始实验task1 TCP传输过程中的IP分片task2 TCP请求与一
  • HTTP协议---工作原理&报文详情&完整请求过程

    1 工作原理 1 1 OSI 七层模型 OSI xff08 Open System Interconnection xff0c 开放系统互连 xff09 七层网络模型称为开放式系统互联参考模型 xff0c 是一个逻辑上的定义 xff0c 一
  • Makefile和CMake的简单入门

    Makefile和CMake的简单入门 从源代码到可执行文件Makefile的产生背景从make的调用到MakefileMakefile的基本格式Makefile的扩展用法Makefile的生成和部署 一 从源代码到可执行文件 当编译文件依
  • ubuntu搭建HTTP服务器

    1 首先安装apache2工具 sudo apt get update sudo apt get install apache2 apache2安装成功后 xff0c 我们可以在 var www html 目录下看到一个index html
  • 2021 大学生电子设计竞赛 G题 无人机 识别部分

    硬件解决方案 前视OpenMV与下视OpenMV 赛题整体解决方案 视觉只负责识别部分 采用定焦镜头 OpenMV只负责发送像素坐标系下的坐标信息 其他解算等决策部分均由嵌入式控制解决 解决思想 xff1a 围绕田地即地图中的绿色边缘巡航喷
  • c++:不使用STL标准模板库,实现双端队列

    c 43 43 xff1a 不使用STL标准模板库 xff0c 实现双端队列 文章目录 c 43 43 xff1a 不使用STL标准模板库 xff0c 实现双端队列0 简介1 怎么写1 1思路1 2代码 2 结尾 0 简介 最近一个实验验收
  • Android Android Studio 4.0 牛逼功能预览

    作者 xff1a wanbo 地址 xff1a https juejin im post 5db8cee351882557134d0411 新的 Android Studio 4 0 更换了全新的启动界面 xff0c 在今天 Google
  • Qt学习笔记之类继承关系图

  • C++:头文件递归包含问题(互相包含问题)

    目录 引言初始版本头文件守卫递归包含会怎么样为什么会出错前置声明是什么如何解决递归包含问题参考 引言 最近正在疯狂补技术债 xff0c 以及疯狂赶项目 大一大二摸的鱼终归是要还的 xff0c 也奉劝大家少摸鱼 xff0c 不然临近找工作可能
  • 拓展:示波器使用_波形分析

    这里主要对上一个练习中的波形图来拓展 xff0c 讲讲怎么在示波器输出的波形图中 xff0c 对该界面上的一些功能的使用 01 关于适应全屏 放大 缩小 对于输出波形 xff0c 经常要用到的即是适应屏幕 xff0c 以及放大缩小 xff0
  • 【已解决】element-ui组件嵌套太多层,导致内部el-input和el-select 等组件无法正常输入解决方案

    如果 element ui 组件嵌套太多层 xff0c 可能会导致内部的 el input 和 el select 等组件无法正常输入 出现这种问题通常是由于 z index 属性设置不正确导致的 解决这个问题的方法是调整组件的 z ind
  • 两个半天一刷Ubuntu入门指令

    目录 两个半天一刷Ubuntu入门指令 一 Ubuntu初次体验 二 设备驱动 三 Ubuntu用户组及其权限分配 四 压缩解压 五 Linux连接文件 六 vim编辑器 七 Linux下C编程 八 gcc和make及其Makefile的引
  • ENV环境配置及其下载网络组件包问题

    准备工作 Env 工具包含了 RT Thread 源代码开发编译环境和软件包管理系统 从 RT Thread 官网下载 Env 工具 在电脑上装好 git xff0c 软件包管理功能需要 git 的支持 git 的下载地址为https gi
  • 芯片flash保护(解锁)

    报错结果 Error while accessing a target resource The resource is perhaps notavailable 就是无法下载程序 解决办法 1 下载ST LINK Utility 链接 x
  • 2.RTT-点灯大师的修炼

    1 创建工程模板 相信大家通过学习上一篇文章 1 RTT 环境搭建 现在能熟练的创建一个标准模板了 xff0c 如果不会就跳回去学习一下吧 链接 xff1a 1 RTT 环境搭建 嵌入式路上的流浪的博客 CSDN博客 建立好的工程模板编译并
  • 4.RTT-UART-中断接收及轮询发送

    本期博客开始分享RTT的UART xff0c 利用战舰V3的uart2来输入输出一些字符串 UART xff08 Universal Asynchronous Receiver Transmitter xff09 通用异步收发传输器 xff
  • 12.RTT-IIC设备-AHT10温湿度传感器

    本系列博客更新结束啦 xff01 完结啦 xff01 xff01 xff01 撒花 xff01 xff01 xff01 关于RTT的设备和驱动专题更新完毕啦 xff0c 本期是最后一期 一段学习旅途的结束意味着下一段学习冒险的开始 虽然本系
  • RTduino+sht31温湿度传感器

    本次博客使用的是STM32F103C8T6 xff0c 因为该BSP已经对接好RTduino了可以直接上手使用 一 RTduino简介 RTduino是RT Thread实时操作系统的Arduino生态兼容层 xff0c 为RT Threa