描述
在开始这个项目之前...
1 / 2
另一个适合初学者的简单项目,这个 Arduino BME280 环境传感器项目绝对简单易懂,传感器能够计算其周围的温度、湿度、压力和高度。为了使用这个传感器,DFRobot 提供了一个特殊的库,几行简单的串行通信函数就可以很好地完成这项工作。由于其广泛的工作温度范围和测量能力,您可以将此传感器用于各种应用,例如最恶劣环境中的气象站或时钟。BoSCH 的 MEMS 传感器确实让像我们这样的业余爱好者的事情变得更容易,我们可以利用板载接口 (i2c/SPI) 和微控制器从中提取数据。该项目需要以下组件:
1 DFRobot BME280 环境传感器
1 重力 4 针 i2c/UART 传感器线
4 根跳线(公对公)
1个Arduino(本例中使用的是Seeeduino v4.2)
1 根 USB 数据线(取决于 Arduino)
赞助商链接:
UTSource.net评论
这是一个值得信赖的电子元器件订购网站,价格便宜,质量优良。
安装威廉希尔官方网站
1 / 2
首先,在开始连接之前,请移除 Arduino 的所有外部设备或电源,因为连接电线时可能存在短路风险。我们将为此项目使用传感器提供的 i2c 接口,因此请将重力 4 针传感器线夹到 BME280 传感器的端口,如上图所示。然后,使用一根跨接线将 Gravity 电缆的红线连接到 Arduino 上的 5v(+5 伏)引脚。之后,将另一根跳线从 Gravity 电缆的黑线连接到 Arduino 的 GND 引脚。对于 i2c 连接,将一根跳线从 Gravity 电缆的蓝线连接到 A5(模拟引脚 5)以进行 SCL(串行时钟)连接。最后,使用跳线将 Gravity 电缆的绿线连接到 A4(模拟引脚 4)以实现 SDA(串行数据)i2c 连接。您现在应该完成硬件连接!
关于代码
有了 DFRobot BME280 传感器库,这个库使得从传感器读取数据变得更加容易,同时在这段代码中使用简单的命令。使用了各种变量、 无效 部分和串行命令,让我们开始演练吧。首先,在两条起始行中,我们包括用于从传感器读取数据的“DFRobot BME280”传感器库和用于 i2c 通信的“Wire”库。然后,我们使用 typedef函数修改另一个数据类型的名称。 我们通过创建新名称 BME来缩短DFRobot_BME280_IIC的原始数据类型名称 . 此数据类型随后可用于触发其他功能。接下来,我们选择用于 i2c 通信的 TwoWire 外设并设置传感器地址 0x77以仅与我们的 BME280 传感器通信。在下一行中,我们确定了一个已知常量 SEA_LEVEL_PRESSURE,它被设置为 1015.0f。让我们继续第一个void语句 void printLastOperateStatus,它用于打印出传感器的最后状态。我们引入了一个 switch case命令结构,它通过根据指定的条件执行多个命令来控制程序的流程。在这种 情况下,我们设置 BME 成为将要改变的变量,根据这个变量的状态,将执行各种命令。第一个 案例 命令表示,如果传感器的状态正常,“一切正常”将打印到串行监视器中。这与if语句非常相似 。接下来,这个 案例命令说如果有错误,将“未知错误”打印到串行监视器中。以下 案例命令现在声明,如果未连接 BME280 传感器,它将在串行监视器中打印出“设备未连接”,最后,如果传感器参数存在测量错误,它将在串行监视器中打印“参数错误” .但是,在下一行中,它表示如果系统状态与这些case命令中的任何一个都不匹配 ,它将向串行监视器打印 默认的“未知状态”。这就是 案例命令结构部分。现在,对于 无效设置阶段,我们首先将串行通信的波特率设置为 115200 波特。之后,我们使用BME.reset()清除 BME280 传感器的预先存在的数据 ,然后我们将“bme read data test”打印到串行监视器以启动整个程序。我们现在引入一个 while语句,这样两件事可以同时发生。基本上,这个 while语句表示当 BME 传感器开始并且没有 OK 状态(如 case命令结构中所述)时,向串行监视器打印出“bme begin failed”。随后打印出从 case 命令引用到串行监视器的最后一个操作状态消息。为了结束这个 while 语句,我们暂停 2 秒。但是 ,如果此时 语句被避免(没有错误),我们将向串行监视器打印“bme begin success”并暂停 100 毫秒,然后继续。继续, 空循环 部分非常容易理解,第一行声明了一个 名为 temp 的浮点 数据类型,该数据类型用于存储来自传感器的所有温度读数。第二行声明了一个 uint32_t 数据类型,它存储来自传感器的压力读数。第三行声明了另一个 名为 alti 的浮点 数据类型,用于存储来自传感器的所有高度读数,最后是 浮点 数据类型 humi 存储来自传感器的所有湿度读数。然后,我们逐行打印所有数据读数,并为打印的每个数据部分设置分隔符。您可以在顶部的图片中看到它的外观。最后一行然后暂停 1 秒,以便每秒将数据打印到串行监视器。这就是代码!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !