如何通过 Wi-Fi 将真实传感器数据发送至云端,将 Arduino 转变为一个联网的物联网设备
扫描二维码
随时随地手机看文章
简介
倘若你的 Arduino 能够将数据发送至互联网,而你又能从全球任何地方访问这些数据,那会是怎样的情景呢?
在本教程中,您将学习如何将 Arduino 连接到 Wi-Fi 并将真实传感器数据发送至云端平台。这是您迈向构建物联网系统的首个实际步骤。
如果您是初次访问此页面,欢迎光临!这是名为《Arduino 初学者教程》的 24 集系列课程中的第 23 课。
解释
要将您的 Arduino 项目接入网络,您需要一种将它们与互联网连接起来的方法。这就是 Wi-Fi 物联网模块发挥作用的地方。这个小板能让像 Arduino 这样的微控制器与网络服务和云平台进行通信。
该模块有四个主要引脚:D/T、C/R、GND 和 VCC。D/T 和 C/R 用于数据通信。D/T 表示数据线/发送器,而 C/R 表示时钟线/接收器。
如果您仔细观察这个模块,就会发现有一个小开关。这个开关能让您选择使用 UART 还是 I2C 通信方式。在本项目中,我们将使用 UART,因为它更简单且支持度更广,尤其适合初学者使用。
该模块的工作电压范围为 3.3V 至 5V,最大电流可达 240mA。对于 Arduino 来说,这个电流值算是比较高的了。所以在这个简单的设置中,我们会直接从 5V 引脚为其供电,但在更复杂的应用中,通常还是建议使用外部电源。
另一个实用的功能是内置的 RGB 灯。它能即时显示连接状态(有三种颜色可供选择)。
•红色表示该模块未连接。
•蓝色表示它正在尝试连接。
•绿色确认其已成功连接到无线网络。
既然你已经了解了这个模块的运作原理,那我们就来实际操作一下吧。
赞助商
该项目是由 DFRobot 提供支持的一系列项目之一。
DFRobot 是开源硬件领域的一家知名公司。他们提供种类繁多的产品,包括与 Arduino 兼容的板子、传感器以及开发工具包等。
在此次系列活动中,他们提供了“MindPlus Arduino 编程套装”。这是一款专为希望亲手实践项目并通过实践学习的初学者设计的完整套装。如果您想更轻松地跟上学习进度,使用这样的套装会大有帮助。
感谢 DFRobot 对此内容的赞助,这有助于让 STEM 教育变得更加普及。
项目
在这个项目中,我们将构建一个简单的系统,该系统能够读取环境数据并将其发送至云端。这是一个基础但功能强大的物联网应用示例。
要构建这个监控系统,首先将 I/O 扩展板安装到 Arduino 上。这样可以使布线过程更加简便和整洁。
接下来,将 DHT11 传感器连接到数字端口 3 。
然后连接 Wi-Fi 模块:D/T 引脚连接到数字引脚 4,C/R 引脚连接到数字引脚 5。
最后,安装 I2C 液晶模块,其中 SCL 端口连接至 A5,SDA 端口连接至 A4。
一旦所有设备都连接好,就该搭建云平台了。我们将使用 ThingSpeak 来存储和展示数据。
创建一个账户并登录。然后前往“频道”部分,创建一个新的频道。给它起个名字,比如“Arduino 气象站”,并设置两个字段:一个用于温度,一个用于湿度。
保存该频道后,前往“API 密钥”选项卡并复制“写入 API 密钥”。此密钥将使您的 Arduino 能够安全地向平台发送数据。
完成设置后,请从 GitHub 仓库下载项目代码(cloud-weather-station.ino),并将其打开在 Arduino IDE 中。
代码
在代码的开头,您会看到三个变量:ssid、password 和 apiKey。这些变量需要根据您的 Wi-Fi 登录信息以及 ThingSpeak 的写入 API 密钥进行更新。
setup() 函数会初始化所有组件。它会启动传感器、设置串行通信、初始化液晶显示屏,并将模块连接到您的 Wi-Fi 网络。程序会一直等待连接建立完成,然后才继续执行。
主要的逻辑都在“loop()”函数内部运行。每隔 30 秒,Arduino 会从 DHT11 传感器读取温度和湿度数据。
这些数值会显示在串行监视器中以及液晶显示屏上。之后,数据会通过 HTTP 请求发送至 ThingSpeak。
有两个辅助函数来支持这一过程。其中一个会等待服务器的响应以确认数据已接收成功,而另一个则会从 Wi-Fi 模块读取传入的消息。
一旦您完成了变量的设置并检查了代码,就将其上传到您的 Arduino 上。
结果
系统启动时,Wi-Fi 模块的指示灯会引导您完成连接过程。它一开始是红色的,表示尚未连接;接着变为蓝色,表示正在尝试连接;最后变成绿色,表示连接成功。
几秒钟后,液晶显示屏将开始实时显示温度和湿度的数据。
如果您打开 ThingSpeak 通道,您会看到两个随着时间不断更新的图表——一个显示温度,另一个显示湿度。这些数据存储在云端,这意味着即使您的 Arduino 被关闭,这些数据仍可访问。
这是物联网背后的关键理念之一:在本地收集数据,并将其传播至全球范围。
结论
在这个项目中,你们构建了一个能够读取传感器数据并将其发送至互联网的完整系统。这是许多实际的物联网应用(从气象站到智能家居系统)所必需的基础组成部分。
一旦你理解了这种工作流程——即读取数据、对其进行处理以及将其发送至云端——你就可以开始构建更为复杂的系统了。
本文编译自hackster.io





