当前位置: 首页 > news >正文

做一个物联网温湿度传感器(一)SHT30传感器介绍

摘要:本文介绍物联网项目设计时常用的传感器之一——温湿度传感器。以SHT30传感器为例。

在阿里云物联网HaaS开发案例中,有一个全自动加湿器,使用的是SHT30温湿度传感器。就是下面这个案例。

 该传感器的外观有很多种,最常见的是这种电路板式的。

 

 还有这种带有外壳的,核心的器件都是相同的。驱动也是相同的。

 供电电压是2.4V到5.5V,所以常见的arduino控制器以及ESP32等都是可以用的。

 引脚定义如下图所示。通信协议选择IIC协议。

 通信时序图如下所示。

 下面用arduino来测试一下,具体连线如下图所示,供电采用3.3V。用5V也没关系,不会烧掉芯片。请注意用UNO,这个板子上没有专用的SCL SDA接线柱,然后它是用的A4复用为SDA,A5复用为SCL。

 

 

arduino版本

 驱动直接下载库

 编程的源代码如下所示。

//本程序是用UNO连接温湿度传感器SHT30
//供电用3.3V
//传感器的SCL连接UNO的A5
//传感器的SDA连接UNO的A4
//串口波特率是9600
//温湿度传感器的库,选择Adafruit_SHT31

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


Adafruit_SHT31 sht31 = Adafruit_SHT31();

void setup() {
Serial.begin(9600);


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);
}
}

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

if (! isnan(t)) { // check if 'is not a number'
Serial.print("Temp *C = "); Serial.println(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");

}
Serial.println();
delay(1000);
}

使用arduino自带的串口显示数据

 使用arduino调试,读取出来正确的温湿度之后,这些数据就可以作为参考,下一步使用ESP32来调试,并且将温湿度上传到阿里云物联网平台上。

 

敬请期待。

 

相关文章:

  • Sublime Text 最简单的更换主题和字体颜色的办法
  • 通过vue ui方式构建vue+electron项目
  • 2022最新一线大厂Java八股文合集PDF版震撼开源,堪称史上最强
  • 5.13一行代码就能解决的算法题
  • 序列查询新解
  • 5.10如何调度考生的座位
  • 基于retas的动漫动画制作与设计
  • 【Lua 入门基础篇(十)】文件I/O
  • Git 详细教程之五:SSH 免密登陆 GitHub
  • 单元测试啊
  • DolphinScheduler实例表备份、清理
  • java基于springboot+vue+elementui的校园志愿者活动管理系统
  • win7系统的两种硬盘格式mbr和gpt怎么选择?
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • Java网络教程之Socket
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Angular 响应式表单之下拉框
  • Fastjson的基本使用方法大全
  • js写一个简单的选项卡
  • js中forEach回调同异步问题
  • SwizzleMethod 黑魔法
  • Vue学习第二天
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 动态魔术使用DBMS_SQL
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 微信小程序--------语音识别(前端自己也能玩)
  • 我从编程教室毕业
  • 译有关态射的一切
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • linux 淘宝开源监控工具tsar
  • mysql面试题分组并合并列
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (10)ATF MMU转换表
  • (4)STL算法之比较
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (done) 两个矩阵 “相似” 是什么意思?
  • (LeetCode C++)盛最多水的容器
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (六)激光线扫描-三维重建
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 使窗口永不获得焦点
  • .NET基础篇——反射的奥妙
  • .NET运行机制
  • ?.的用法