在本文中,我想利用WLAN接口,为家庭网络中的web服务器提供温度和相对湿度。但是,我将使用物有所值的DHT20传感器和带有SH1106驱动IC的1.3英寸OLED,以尽量减少重复。
但首先是树莓派Pico W的引脚图,以及树莓派Pico和Pico W的区别:
虽然外形尺寸和引脚(很大程度上)保持不变,但布局上的差异很明显。这在WLAN芯片和用于DEBUG的三个空闲引脚上最为明显,由于WLAN天线的缘故,它们现在位于芯片的中间。内置LED的连接器已经更换;稍后会详细介绍。2.4 GHz无线局域网接口采用英飞凌CYW43439芯片。蓝牙尚未实现;这需要固件更新,但近期不打算更新。
下载了扩展名为。uf2的最新文件后,Pico被插入计算机的USB端口,并按下BOOTSEL键;然后显示为USB驱动器RPI-RP2;请看下图。只需将下载的文件复制到目录中。复制过程完成后,驱动器消失,并且在tony下将Pico W识别为虚拟COM端口。
对于那些还没有安装或更新的人。
目前截至2022年10月:thonny-4.0.1.exe
在Run/Execute选项卡下进行设置。
像往常一样,我们首先在命令行(也称为shell或REPL)中测试“hello world”。
物理计算中的“hello world”是闪烁的LED,我们的第二次尝试:
在程序中,您可以看到上述内置LED的差异。使用简单的Pico,这是通过引脚25控制的,引脚没有连接到外部。使用Pico W, LED连接到无线芯片,并通过名称“LED”进行寻址。
在一切解决之后,我想首先重建Jörn Weise的实验装置,然后使用另一个传感器,以及另一个显示器。
除了MicroPython模块机和utime模块bme280和ssd1306用于0.96英寸OLED。两者都可以在PyPI上找到,点击“附加”选项卡下的“管理软件包…”并在搜索窗口中输入术语。选择时请注意名称中的“micropython”字样。
示意图:
安装成功,见图:
现在我首先想把0.96英寸的显示屏换成1.3英寸的OLED显示屏。但是这个没有驱动IC SSD1306,而是SH1106;PyPI上没有MicroPython模块。
该模块实际上是为ESP8266编写的,但工作良好。因此,下载ZIP文件,将其解压为tony下的sh1106.py,并将其安装在Pico W的lib目录下。i2c示例程序中Pico W的唯一偏差是实例化期间的一个附加参数,i2c接口的编号:i2c= i2c (0, sda=sda, scl=scl, freq=400000)
当实例化显示时,我必须插入rotate=180:oled = sh1106。SH1106_I2C(128, 64, i2c, None, 0x3c, rotate=180)
有了这个,它马上就工作了。所以选择DHT20,而不是昂贵的BME280。
我已经在2022年7月的一篇博客文章中使用了DHT20。有趣的是i2c接口,这个组合温湿度传感器与DHT11和DHT22不同。PyPI上也没有为此提供MicroPython模块。所以我再次在GitHub上搜索。
再次下载ZIP、解压缩、dht20.py,用thony运行它,并将它保存在Pico W子目录lib子目录下。
下面是代码中的主要新行:
在while循环中:
现在所缺少的就是把Pico W变成一个大气数据的网络服务器。在互联网上进行研究。到目前为止失踪了。但是树莓派基金会有两个例子程序,已经被其他博主复制了:一个简单的web服务器,带有文本显示和通过内部网切换LED,可以在小册子“用pico-w连接到互联网”中找到。
总是需要登录到家庭WLAN的部分:
在队列中
请输入家庭网络的SSID和密码。
作为我项目的基础,我使用示例程序进行文本输出。在这里,我基本上必须增加第二行的字体大小,以便能够在智能手机上阅读文本,并将测量值作为字符串插入。测量值基于HTML行每10秒更新一次。最后我以这个名字创建了这个程序:main.py
在Pico W上,这个程序在Pico W通电时自动启动。因此,对花园棚或储藏室的监控很容易实现。
结论:与没有WLAN的Pico相比,您只需花费不到两欧元的额外费用,就可以获得带有Pico W的多功能微控制器,可以轻松地在家庭WLAN中注册,因此适合许多自己的智能家居项目。我自己很快就会把它用在我最喜欢的机器人汽车项目上。我不认为会有什么困难;我会回来报告的。