当前位置:首页 > 物联网 > IoT设计分享
[导读]在这个项目中,我们将学习如何创建一个气象站,它将在web服务器中显示来自BME280模块的读数和来自OpenWeatherMap API的实时天气数据。该设备将从BME280传感器获取温度、湿度、气压和高度,并从OpenWeatherMap API获取外部温度、湿度、天气状况以及日出和日落。我们可以在网络浏览器中看到他们在阅读。

在这个项目中,我们将学习如何创建一个气象站,它将在web服务器中显示来自BME280模块的读数和来自OpenWeatherMap API的实时天气数据。该设备将从BME280传感器获取温度、湿度、气压和高度,并从OpenWeatherMap API获取外部温度、湿度、天气状况以及日出和日落。我们可以在网络浏览器中看到他们在阅读。

BME280温度,湿度和压力传感器

BME280是一款专为移动应用和可穿戴设备开发的集成环境传感器,尺寸和低功耗是关键设计参数。该装置结合了高线性度和高精度传感器,是完全可行的低电流消耗和长期稳定。BME280传感器提供了极快的响应时间,因此支持新兴应用的性能要求,例如上下文感知,以及在宽温度范围内的高精度。

该传感器测量相对湿度范围为0 ~ 100%,精度为±3%,气压范围为300Pa ~ 1100hpa,绝对精度为±1hpa,温度范围为-40℃~ 85℃,精度为±1.0℃。

BME280支持I2C接口和SPI接口。我们使用的模块支持1.7 - 3.3V的电压范围。当以1Hz的刷新率测量所有参数时,BME280的平均电流消耗为3.6µA。传感器支持休眠、正常、强制三种电源模式。

在购买BME280模块时要记住的一件事是,外观相似的模块也带有缺乏湿度测量功能的BMP280传感器,这使得它比BME280便宜得多。识别BME280和BMP280传感器的最佳方法是查看产品代码。BME280传感器将有一个以“U”开头的产品代码,例如UP, UN等。而BMP280将有一个以“K”开头的产品代码,例如KN, KP等。另一个视觉差异是BME280有点方形,而BMP280是矩形。

OpenWeatherMap API

OpenWeatherMap是一个在线服务,通过API提供全球天气数据,包括当前天气数据、预报、临近预报和任何地理位置的历史天气数据。通过他们的API,我们可以访问地球上任何位置的当前天气数据,包括超过20万个城市!他们收集和处理来自不同来源的天气数据,如全球和当地天气模型、卫星、雷达和一个庞大的气象站网络。数据有JSON、XML和HTML三种格式。我们将使用HTTP GET来请求这个项目的JSON数据。

气象站线路图

连接相当简单。按照上面的连接图进行操作。我们增加了一个18650电池和TP4056充电模块,并为备份提供保护。首先将电池的负极连接到TP4056模块的B-引脚,将正极连接到模块的B+引脚。现在将模块的OUT+连接到ESP32 Devkit的VIN引脚,B-连接到GND引脚。TP4056模块还包含DW01保护芯片,可以防止电池过放电和短路。

现在让我们将BME280模块连接到ESP32 Devkit。BME280的VCC引脚接3.3V引脚,GND接GND引脚。该模块同时支持SPI和I2C。我们将使用I2C接口进行通信。为此,将SDA引脚连接到ESP32 Devkit的D22,将SCL引脚连接到D21。

代码说明和Arduino IDE安装库

对于这个项目,我们需要安装几个Arduino库,它可以直接通过库管理器完成。要安装库,请导航到Arduino IDE > Sketch > Include Library > Manage libraries…等待Library Manager下载库索引并更新已安装库列表。然后搜索并安装以下库。

•Adafruit BME280库

•Adafruit统一传感器

•Arduino_JSON图书馆

使用zip文件安装以下库。

•ESPAsyncWebServer

•AsyncTCP

在Arduino IDE中安装ESP32文件系统上传器

我们使用SPIFFS来托管web服务器文件。我们可以像使用普通文件系统一样使用ESP32闪存,就像在SD卡或USB大容量存储中一样,借助SPIFFS将这些文件上传到文件系统中,我们需要一个称为ESP32文件系统上传器的工具。要将此工具安装到Arduino IDE,请遵循以下步骤

•到GitHub发布页面下载ESP32FS-1.0.zip。

•将zip文件解压缩到Arduino IDE目录下的Tools文件夹。解压后的路径看起来像这样“C:\Users\Username\Documents\Arduino\tools\ESP32FS\tool\ ESP32FS .jar”

•重新启动Arduino IDE,您可以通过单击Tools Menu使用此工具。

web服务器文件结构

正如我们已经说过的,我们将使用ESP32文件系统来托管web服务器。文件系统结构如下所示。需要加载到文件系统的所有数据都存储在sketch文件夹中名为data的文件夹中。

HTML文件

html文件是服务器收到请求时加载的主文件。它包含了网页的所有结构编程。

CSS文件

css文件用于定义HTML页面的样式。使用CSS,我们可以控制颜色,字体,文字大小,元素之间的间距,元素如何定位和布局,使用什么背景图像或背景颜色,不同设备和屏幕尺寸的不同显示,等等!

JavaScript文件

javascript文件负责图像操作、JSON解码和内容的动态更改。这有助于我们更新网页上的值。它控制数据更新的事件侦听器。

Arduino草图

这是ESP32气象站的草图。

让我们看一下代码是如何从传感器读取数据,从API获取天气数据,并将其发送到web服务器的。

包括库

WiFi、HTTPClient、AsyncTCP和ESPAsyncWebServer库用于WiFi通信和web服务器的创建和维护。

SPIFFS库用于文件系统管理,Arduino_JSON库用于处理JSON字符串。

最后,Adafruit传感器库和Adafruit BME280库用于处理BME280传感器。

用户可修改参数

在代码中,需要更改一些值才能使其正常工作。将“您的WiFi SSID”和“您的WiFi密码”替换为您的WiFi SSID和密码。另外,根据您的城市代码和温度测量单位更改。

下一个也是最重要的参数是API密钥。这个密钥是唯一的,这是我们从OpenWeatherMap服务器提取数据的认证密钥。获取API密钥的过程非常简单。去OpenWeatherMap网站,创建一个账户。如果你已经有一个帐户,就登录进去。。在该页面上,您可以看到您的默认API密钥。如果您愿意,可以稍后创建密钥。复制API密钥并将其粘贴到代码中。这样就可以从OpenWeatherMap服务器获取数据了。

获取BME280读数

下面的函数用于从BME280获取读数。

在这个函数中,每次读取都从BME280传感器获取,并将其编码为JSON字符串,然后将JSON字符串返回给事件处理程序。当事件被触发时,事件处理程序将把这些数据发送到web页面。

从OpenWeatherMap API获取天气数据

为此,我们创建了另一个函数。它将以JSON格式从API获取天气数据,解码,并将其排列成我们需要的格式。然后,与BME280读取函数类似,该函数将这些编码为JSON字符串,并在触发特定事件时将其发送到服务器。HTTP GET用于从服务器获取数据。

Web设置和事件请求处理

下面的setup函数部分将创建和设置web服务器,并在网页加载时处理事件请求。当收到加载网页的请求时,第一个事件处理程序将发送网页数据。第二个事件处理程序将监听重置请求,并将页面上显示的所有变量设置为零。第三个even处理程序是检查客户端连通性,如果客户端断开连接,服务器将尝试在一秒钟的间隔内重新建立连接。

在循环函数中,还可以看到另外两个事件处理程序。这些处理程序不会监听任何请求。它们将在设定的时间定期发送数据。这将刷新网页上的数据。BME280的数据更新速度比开放天气图数据快。

上传代码和文件

上传代码很简单。就像其他Arduino板一样,将ESP32 Devkit连接到PC上。选择正确的“Board”和“Port”,单击“upload”。就是这样。要上传Web Server文件,请确保所有文件都位于名为data的文件夹中,该文件夹与.ino文件位于同一文件夹中。进入“工具-> ESP32草图数据上传”。IDE将上传文件并重新启动ESP32。上传文件时,请确保未打开串行监视器。如果它被打开,你会得到一个错误。如果是,只需关闭串行监视器并再次上传文件。您可以从以下链接下载草图和web服务器文件。

访问Web服务器

现在,一旦代码被编译并编程到ESP32中,你可以检查串行监视器,一旦ESP32连接到WiFi网络,它就会打印出IP地址。

或者你可以检查你的路由器和分配给ESP32的IP是什么。这取决于你的路由器。一旦你获得了IP,你就可以通过简单地在浏览器中输入这个地址并进入页面来访问网络服务器。这就是结果。

天气状况图标会根据从API接收到的数据而改变。日出和日落时间也从OWM API中提取。

本文编译自iotdesignpro

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭