资料介绍
描述
该项目是一个相当简单的天气数据收集和存储程序。
天气数据由 Arduino 记录,并通过向网络服务器发送特制的 GET 请求每 10 分钟发送到数据库。
或者,您也可以将输出发送到 20x4 LCD。
先决条件:
您必须已经配置了 Web 服务器、数据库和服务器端脚本语言,它们可以处理 HTTP GET 请求的查询字符串中的名称/值对。如果您使用的是 Windows,在典型的 LAMP/WAMP/WIMP 堆栈上启动和运行非常容易,但让所有这些一起工作超出了本文的范围。
在我的例子中,我已经配置了一台 Windows 7 机器来运行一个标准的 WIMP 堆栈——
- Windows 7 上的 Microsoft IIS 7.5
- PHP 7.1.24 - windows.php.net/download/
- MySQL 社区 8.0.13 - dev.mysql.com/downloads
- 我还使用 PHPMyAdmin 的副本来帮助进行数据库配置 - phpmyadmin.net/
- 必须启用 mysqli PHP 扩展
重要的提示:
这个项目完全忽略了任何表面上的安全(不要按原样将它放在 Internet 上,但它对您的 LAN 没问题)并且我的数据库优化可能需要一些工作。
概述:
本文的重点是将数据从传感器中获取到我们的数据库中,然后提取该数据并以某种方式显示它,让我们知道接下来会发生什么。
从现在开始,本文假设您有一个可用的 Web 服务器、PHP 和 MySQL。
数据库配置:
对于这个项目,我创建了一个名为 weatherdata 的数据库,并在该数据库中创建了一个名为 master 的表。
除了每个数据库条目的唯一标识符之外,我们还想记录 4 件事:
- 时间;
- 温度
- 气压
- 湿度
所以我们需要 5 个我命名如下的字段:
- 流体;
- 时间戳
- 温度
- 压力
- 湿度
这是 phpMyAdmin 的样子:
使用 phpMyAdmin 创建数据库 weatherdata。跳过从界面创建表并在 MySQL 命令行客户端中使用下面的脚本来创建表和字段:
CREATE TABLE master
(
uid INT(11) NOT NULL AUTO_INCREMENT,
timestamp DATETIME NOT NULL,
temperature DOUBLE(8,4) NOT NULL,
pressure DOUBLE(8,4) NOT NULL,
humidity DOUBLE(8,4) NOT NULL,
PRIMARY KEY (uid)
);
测试注意事项:
您可以通过在浏览器的地址栏中手动输入 WEBSERVER_IP_ADDRESS/processincoming.php?t=9.30&p=98.80&h=75.70 并按回车键来测试设置(如果需要,可以更改值)。如果服务器正确处理它,您将看到这些值记录在数据库中并且它工作正常。如果它不起作用,则某处存在配置或设置错误。
服务器端处理
数据库输入是通过 Arduino 每 10 分钟向 Web 服务器发送一次 GET 请求来完成的,请求的查询字符串中包含温度、压力和湿度值。
在 Arduino 代码中,构建并发送 URL 字符串:
urlString = "GET /processincoming.php?t=" + temperatureToDB + "&p=" +
pressureToDB + "&h=" + humidityToDB + " HTTP/1.1";
sendDataToServer(urlString);
sendDataToServer() 函数接受完整的字符串并将其发送到局域网中位于 192.168.1.35 的 Web 服务器:
void sendDataToServer(String stringToSend) {
//make sure i'm sending what I think I'm sending
Serial.println(stringToSend);
if (client.connect(server, 80))
{
client.println(stringToSend);
client.println("Host: 192.168.1.35");
client.println("Connection: close");
client.println();
}
else
{
Serial.println("connection failed");
}
}
我们发送的完整请求如下所示:
GET /processincoming.php?t=9.30&p=98.80&h=75.70 HTTP/1.1
应该很明显,但 t = 温度值,p = 压力值和 h = 湿度值
我在这里要注意的一件事是,此页面请求不会产生通常会发送到浏览器的任何输出(除了默认响应标头之外)。一旦 Arduino 发送数据,它就完成了直到下一个周期并且不需要解析响应,甚至不需要等待响应。
提示:为您的网络服务器提供 LAN 上的静态 IP 地址。如果您依赖 DHCP,您可能会发现自己在修改 Arduino 代码以说明每次服务器重新启动时主机 IP 都会发生变化。
此处包含的代码 (WeatherStation_v1_webclient_no_lcd.ino) 编译为 1304 字节,因此适用于较小的设备。
显示数据:
文件 weather.php 负责显示我们的天气数据。显示页面是由脚本生成的简单 HTML 表格,不需要除 mysqli 之外的任何其他 PHP 扩展。
默认情况下,此页面显示长达 3 小时的数据,因此我们的 Arduino 应该至少运行了那么长时间才能记录足够的数据量。如果您尝试在没有足够数据点的情况下运行它,您将收到数组错误。
收集数据至少 3 小时后,输出 HTML 应如下所示:
最后,随附的原理图附有 LCD 输出 - 可以忽略。
备选方案
在这种情况下,不要忽视 LCD,您将需要它。我还包括第二个 Arduino 程序,它结合了上述内容并输出到 20x4 LCD。
可以在此处找到 LCD 组件的完整描述:https ://create.arduino.cc/projecthub/ragingradish/improved-weatherstation-20x4-18dd89
程序的 LCD 部分已更新,以确认以太网已启动并正在运行,但其他方面没有变化。
为了将数据发送到服务器,添加并初始化了适当的库,然后将条件插入到循环中:
//send data to server every 10 minutes
if ((mainLoop == 0) || (mainLoop % 10 == 0))
{
temperatureToDB = currentTemp;
pressureToDB = currentPressure;
humidityToDB = currentHumid;
urlString = "GET /processincoming.php?t=" + temperatureToDB + "&p=" +
pressureToDB + "&h=" + humidityToDB + " HTTP/1.1";
sendDataToServer(urlString);
}
运行 LCD 版本的代码是 WeatherStation_20x4_v1_webclient.ino 并编译为 2090 字节。你需要一个有足够内存的设备来运行它。
- 物联网迷你天气预报开源分享
- Farmaid数据收集器开源分享
- 通过HTTP请求调用API从Open Weather下载天气数据
- 航空天气按钮开源分享
- 天气预报显示开源项目
- 电子纸潮汐和天气追踪器开源分享
- 使用Blues Wireless和Qubitro的物联网天气数据记录器
- 基于Arduino MKR ZERO的天气数据记录器 0次下载
- 使用TTGO ESP32和Visuino从互联网上获取天气数据
- Zambreti天气预报器开源分享
- BME680天气监测装置开源分享
- 基于STM32的ESP8266天气时钟(2)--------MCU获取天气数据
- USB数据抓包软件程序下载 7次下载
- PIC24H系列参考手册之程序存储器
- 一种智能大气数据测量系统的设计与实现
- AWTK 开源串口屏开发(11) - 天气预报 270次阅读
- 燃气数字压力记录仪的设计及应用 593次阅读
- 用小安派开源硬件制作一个桌面天气站 809次阅读
- GaussDB数据库存储过程介绍 1054次阅读
- 前沿开源技术领域的开源大数据一一解读 1005次阅读
- S7-200 CPU扩展程序存储区 975次阅读
- Python如何爬取天气数据 1669次阅读
- 如何为MSP430设计固件以收集和处理IC的数据 1881次阅读
- C语言编程程序的存储类别 3685次阅读
- 关于腾讯的开源分布式存储系统DCache 1970次阅读
- 浅谈 Linux 程序 Orbital Apps 开源程序集合 845次阅读
- 开源存储的六大优势 3975次阅读
- 浅谈外部程序存储器数据存储器操作命令 5260次阅读
- 剖析混合存储阵列的优势,以及最适合混合存储的各种数据类型 6854次阅读
- 51单片机存储程序和数据 9600次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多