使用树莓派Pico W构建您自己的气象站
扫描二维码
随时随地手机看文章
在这个项目中,我们将建立一个基于物联网的天气监测系统,可以在我们的智能手机上无线显示温度和湿度。只有我们需要稳定的互联网连接我们的模块到互联网。
我们使用树莓派Pico W作为内置WiFi功能的微控制器。树莓派Pico W是一款经济实惠的开发板,由RP2040微控制器供电。它具有内置2.4 GHz WIFI,支持无线连接。采用英飞凌CYW43439 WIFI+ BLE芯片,集成单频段2.4 GHz无线接口(802.11n)。这允许用户创建用于无线控制和远程监控的AIoT解决方案。微控制器支持Micropython和C/ c++编程。
如果您想了解更多关于Raspberry Pi Pico W的信息,您可以使用此链接参考制造商统计数据。
我们将创建一个网页,其中所有的传感器数据将被显示,并可以监控。为了测量温度和湿度,我们使用所谓的著名传感器“DHT11”。
对于所有这些传感器和web编程,我们使用Arduino IDE来编程我们的微控制器。对于那些不知道如何在Arduino IDE中编程Raspberry Pi Pico W的人来说,这可能会让他们感到惊讶。但可以在Arduino IDE中使用C/ c++进行编程。
此前,我们使用其他微控制器和云服务构建了许多基于物联网的气象站,
•使用NodeMCU和ThingSpeak的太阳能Wi-Fi气象站
•基于物联网的树莓派气象站,使用DHT11和BMP180传感器
•基于物联网的ESP32 Wi-Fi气象站,使用DHT11和BMP180传感器
•物联网无线气象站使用Arduino, ESP8266和ThingSpeak
气象站所需部件
1.树莓派Pico W
2.DHT11传感器
3.跳线
4.电路试验板
Raspberry Pi Pico W Pinout
模块板侧共有40个引脚端子,其中GPIO引脚共26个,包括3个ADC引脚。其余的包括电源、接地和参考引脚。
气象站线路图
电路连接非常容易理解和实现。下图显示了一个全面的电路图。
让我们看看这些连接是如何工作的:
DHT11有三个端子,分别是VCC、GND和Signal。将Vcc连接到电路板的3.3v输出电源,该电源位于引脚36上。同样,将GND连接到引脚23上的板的接地。船上有各种各样的地面终端,你可以选择其中任何一个。
信号引脚应连接到Pico板的任何数字GPIO引脚,因为我们将其连接到GPIO 16。
用Arduino IDE编程树莓派Pico W
让我们看看如何使用Arduino IDE对树莓派Pico W板进行编程。为此,我们需要安装支持Raspberry Pi Pico w的Raspberry Pi RP2040板包。如果已经安装,请离开安装过程。
1.打开Arduino IDE,进入File > Preferences。现在将给定的链接粘贴到Additional Boards Manager url中,并按Ok保存。
2.打开Arduino IDE,导航到Boards Manager,搜索“Pico”。您将找到带有电路板名称的软件包,安装它。
3.现在,选择板为Raspberry Pi Pico W,其余的保持原样。
4.最后,复制并编译下面提供的示例代码。
5.要上传代码,您必须将Pico W板连接到显示在任何COM端口的计算机。为此,同时按住Pico W上的BOOTSEL按钮,立即使用micro-USB电缆将Board连接到计算机。释放BOOTSEL按钮,如果RPI-RP2驱动器通知出现在您的计算机上。
因此,下图显示了文件管理器中的RP1-RP2驱动器,这意味着驱动器引导模式。因此,设备已准备好接受代码/固件。
6.将编译后的代码上传到Pico W板,选择正确的端口。
7.上传代码成功后,打开串口监视器,将波特率设置为115200。
Arduino编程代码说明
项目代码很容易理解,因为我们正在读取传感器数据并将其发布到web服务器,所以我们的代码必须包括连接WiFi,读取传感器数据和创建网页。
首先,我们必须包含所有必要的基本库Wifi.h和DHT.h。通过WiFi成功连接到internet是访问网页的必要条件。为此,我们使用库WIFI .h将Pico W板连接到WIFI连接。图书馆拥有通过WiFi网络连接和通信的所有必要功能。我们需要通过我们的登录凭据,包括SSID和密码来加入加密的网络。
安装DHT库:
必须包含DHT库来读取传感器的数字输出数据。该库使处理这种类型的传感器很容易,只需要定义某些引脚,并调用一些函数将使您能够访问就绪数据。
通过Sketch进入Arduino的库管理器> include libraries> manage libraries。
搜索“DHT”,你会发现滚动后,图书馆命名为“DHT传感器库”由Adafruit。
安装它,这就是如何容易库安装。
我们还定义了在进一步编程中使用的必要变量和对象。我们已经将DHT11传感器信号引脚定义为连接到Pico板的GPIO引脚16。
创建了存储WiFi连接SSID和密码所需的变量。你必须根据你的WiFi证书更改它才能成功连接到网络。
我们创建了一个名为“server”的wiiserver对象。我们传递HTTP端口号。80作为参数。
在setup()函数中,我们以115200年的波特率初始化硬件串行通信.WiFi.begin()函数以名称和密码作为参数初始化WiFi。
成功连接WiFi网络后,IP地址将显示在串口监视器上。
Dht.begin()初始化传感器以与微控制器通信。类似地,我们使用命令Server .begin()启动类WIFI Server的Server对象。
在Loop函数中,最初,我们通过调用DHT类的readHumidity()和readTemperature()函数来读取温度和湿度,并将其显示给串行监视器以进行测试。
Web服务器建设
每当web服务器接收到来自web客户端的请求时,它将打印“新客户端已连接”并生成一个web页面。它只是将HTML代码连接到一个长字符串中,然后输出响应。该函数使用我们之前访问过的类型转换,将温度和湿度变量读取为字符串。
首先,我们总是需要声明来表明我们正在发送HTML代码。
元素使网页在浏览器中响应。
我们添加一些CSS来样式化网页的整体外观。我们选择的字体为Helvetica,没有中间对齐的边距。此外,我们还为body、h1和p标记设置样式。
然后我们使用温度和湿度的字符串类型转换值将其显示在网页上。
气象站示范
按照上面讨论的步骤正确地将代码上传到Raspberry Pi Pico W。请记住,要添加所有必要的库以成功执行,而不会出现任何错误。
打开串口监视器,设置正确的波特率,检查WiFi连接,等待,直到显示IP地址。
在需要与Pico Board连接同一WiFi网络的设备上打开浏览器,进入IP地址,进入网页。
您需要刷新页面才能在web页面上获得更新后的数据。
本文编译自iotdesignpro