作者:Sandeep Mistry 2022年6月30日
在基于Arm的树莓派Pico W上使用MicroPython,搭配Pimoroni Grow Kit
和Twilio,创建一种可以给你发信息的植物!
在这个项目中使用的东西
硬件组件
软件、应用程序和在线服务
手工工具和设备
故事
本指南是代表Arm软件开发团队(https://developer.arm.com/)创建的,请在Twitter上关注我们:@ArmSoftwareDev(https://twitter.com/armsoftwaredev)和YouTube:Arm软件开发者(https://www.youtube.com/channel/UCHUAckhCfRom2EHDGxwhfOg)获取更多资源!
介绍
你忘了给植物浇水了吗?如果你的植物需要水时能发短信给你呢?该项目将使用树莓派Pico W开发板(https://www.raspberrypi.com/news/raspberry-pi-pico-w-your-6-iot-platform/)以及Pimoroni Grow HAT Mini(https://shop.pimoroni.com/products/grow-hat-mini?variant=32345076006995)来实现这一点!
为什么要到此为止?我们可以通过添加更多信息,赋予植物个性,从而扩大项目范围,使其更加有趣:
. 早上好☀️ 晚安😴 - 基于光传感器和一天中的时间
. 随机的🎲 信息
. 我需要一些水💧 谢谢你的水🙏 - 基于土壤湿度传感器
Pico W开发板将使用Twilio可编程短信API向您的手机发送短信。
MicroPython将用于开发在树莓派 Pico W板上运行的代码。
“MicroPython是Python3编程语言的精简高效实现…”
它运行在多个基于Arm Cortex-M的微控制器(MCU)和开发板上,包括树莓派Pico W。
硬件概述
在这个项目中,我们将使用树莓派Pico W为主要开发板。该板基于树莓派 RP2040微控制器(MCU),其中包含一个双核Arm Cortex-M0+处理器。该板还配备了英飞凌CYW439芯片,用于2.4 GHz Wi-Fi通信,并包含Arm Cortex-M3处理器。
Pimoroni Grow Kit 将用于监测植物及其周围环境。该套件包含以下项目:
. Pimoroni Grow HAT Mini-具有板载LTR559光和接近传感器以及带ST7735R液晶控制器的0.96英寸160x80像素IPS液晶显示器。Grow HAT Mini还包含压电蜂鸣器和按钮,但这些功能将不会在本项目中使用。
. 生长湿度传感器(一包3个)
. 生长湿度传感器用3针JST-SH电缆(3包)
传感器(输入)的详细信息:
LTR559光和接近传感器具有I2C接口,可用于读取周围环境的照度(以勒克斯为单位)。
湿度传感器输出频率在1Hz至30Hz之间的数字脉冲信号。较高频率表示传感器干燥,而较低频率表示传感器潮湿。
例如,当湿度传感器处于露天时,它会输出~25 Hz的脉冲。
如果水分传感器留在水中,它将输出~1 Hz的脉冲。
执行器(输出)的详细信息:
ST7735R LCD控制器具有SPI接口,允许MCU控制LCD屏幕上显示的像素。该屏幕将用于显示电路板Wi-Fi连接的名称标签和状态。
硬件组装
焊接
将公头焊接到树莓派Pico W板上。请参阅MagPi的“如何将GPIO引脚头焊接到树莓派Pico”指南(https://magpi.raspberrypi.org...),了解将引脚头焊接至树莓派PicoW板的更多详细信息。
Pimoroni Grow Kit附带的Pimoroni Grow HAT Mini旨在与普通树莓派板一起使用。我们需要创建一个适配器板,使用Adafruit Perma Proto HAT for Pi Mini Kit-无EEPROM板将Grow HAT Mini连接到树莓派Pico W板。
Perma-Proto HAT附带的树莓派 A+/B+/Pi 2/Pi 3/Pi 4/Zero-2x20母头GPIO头焊接到板的顶部。然后将两个Adafruit 20引脚0.1“母接头焊接到下图所示的板上。
之后,需要焊接10根导线,才能使用Grow Hat Mini的内置SPI LCD显示器、I2C光传感器和湿度传感器连接器。请使用下图和表格将导线焊接到适当的位置。
电源配置
数据接口
有关每个组件的更详细引脚信息,请参见以下页面:
- 树莓派Pico 引脚(https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf)
- Grow HAT Mini 引脚(https://pinout.xyz/pinout/grow_hat_mini)
- Grow HAT Mini 电路图(https://cdn.shopify.com/s/files/1/0174/1800/files/grow-mini_1.pdf?v=1600422759)
一旦焊接完成,电路板的顶部应如下所示:
我们建议您使用万用表验证您焊接的所有接头和导线是否处于正确位置,并且没有相互短路。您还可以(可选)在电路板背面放置电工胶带,以保护电气连接。
装配
将树莓派 Pico W板插入白色接头,USB接口朝向板的右侧。
然后,将树莓派GPIO公头-2x20,较长的引脚朝下,插入我们之前焊接到顶部的2x20母头-这将为我们堆叠Grow HAT mini提供额外的高度。
下一步,将Pimoroni Grow HAT mini插在公头顶部。
将Pimoroni Grow Ki中包含的生长水分传感器的一根3针JST-SH电缆连接到Grow HAT Mini的中间(S2)端口。
然后将电缆的另一端连接到其中一个土壤湿度传感器上
一旦完成,您的设置将如下所示:
软件开发环境的设置
在主板上下载并安装MicroPython
下载具有网络支持的Pico W MicroPython UF2镜像:rp2-Pico-W-latest.UF2(https://micropython.org/download/rp2-pico-w/rp2-pico-w-latest.uf2)
按住Pico W板上的白色启动按钮,将micro USB B电缆插入该板,然后将电缆的另一端插入计算机。如果操作正确,新的RPI-RP2引导卷将出现在您的计算机上:
接下来,将先前下载的.uf2 MicroPython uf2文件复制到RPI-RP2引导卷。然后,电路板将重置并开始运行MicroPython。
下载并安装Thonny
Thonny IDE将用于将代码上传到树莓派 Pico W板。从您计算机的Thonny主页下载Thonny的操作系统(OS)特定版本。在编写本指南时,Thonny 3.3.13是最新版本。
有关如何在树莓派 Pico板上使用Thonny和MicroPython的更多详细信息,请参阅HackSpace《在树莓派Pico上使用Micropythons》一书的第2章。https://hackspace.raspberrypi.com/books/micropython-pico
设置Thonny
接下来,打开Thonny应用程序并单击窗口右下方的“Python 3.7.9”标签:
然后从菜单中选择“MicroPython(Raspberry Pi Pico)”:
设置Twilio帐户
Twilio的可编程短信API将用于从主板向手机发送短信。您需要创建并设置Twilio帐户才能使用此API。
1.首先创建一个免费帐户并验证您的电子邮件地址。
2.接下来输入您的电话号码进行验证。Twilio试用帐户仅允许您向已验证的电话号码发送短信。
3.填写对问题的回答,然后单击“开始使用Twilio”按钮。
4.单击“获取Twilio电话号码”按钮获取用于发送短信的电话号码。
5.向下滚动页面,从Twilio控制台的“帐户信息”部分查看您的帐户SID、身份验证令牌和Twilio电话号码。这些值将需要在指南中进一步细化。
通过向Twilio“消息列表资源URI”发送HTTP POST请求,帐户SID、身份验证令牌和Twilio电话号码将用于从开发板发送SMS消息:
https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json
Twilio使用HTTP基本访问身份验证来验证HTTP请求-帐户SID将用作用户名,Auth令牌将用作密码。
有关SMS API的更多信息,请参阅Twilio的“创建消息资源”文档。(https://www.twilio.com/docs/sms/api/message-resource#create-a-message-resource)
注意:从Twilio试用帐户发送的短信将以“从您的Twilio试用帐户发送-”作为前缀。您需要升级到付费Twilio帐户才能删除此前缀。
软件应用程序概述
在Cortex-M0+处理器上运行的MicroPython应用程序将由几个组件组成:
. 作为LTR559光和接近传感器的驱动程序,该驱动程序将使用MicroPython I2C类通过I2C读取和写入LTR555传感器上的寄存器(地址0x23)。
. ST7735R LCD控制器的驱动程序,将使用MicroPython SPI类和Pin类通过SPI控制ST7735R LCD控制器。它还将使用MicroPython FrameBuffer类来处理绘图操作,并在通过SPI将像素数据传输到LCD显示器之前缓冲像素数据。
. 湿度传感器的驱动程序,将使用MicroPython的RP2040 PIO相关函数,使用RP2040可编程输入/输出(PIO)状态机实例从湿度传感器读取输入脉冲信号。
. TwilioClient Python类,用于处理与Twilio SMS API的交互。该类将使用MicroPython的urequests模块向Twilio发送HTTP POST请求。
JSON文件将用于存储开发板通过短信发送的预定义消息集。配置详细信息-包括:Wi-Fi SSID和密码、Twilio帐户SID和Auth令牌-将存储在单独的Python config.py文件。
当应用程序启动时,它将:
. 加载配置值和预配置消息。
.初始化驱动程序(液晶显示器、光传感器、湿度传感器)、Twilio客户端和Wi-Fi网络接口。
初始化后,主应用程序将连续循环并执行以下操作:
.如果未建立Wi-Fi连接,请连接到Wi-Fi网络,并将电路板时间与网络时间协议(NTP)服务器同步。
.根据当前时间、光线和接近传感器读数发送任何预定消息。
.使用水分传感器读取土壤水分,然后在必要时:a)如果该值已超过配置的阈值,则发送“需要水分”消息;或b)如果土壤先前干燥但不再干燥,则发送一条“感谢”消息。
.如果适用,安排下一组消息。
将软件部署到板上
从GitHub下载代码
该项目中使用的MicroPython代码可以在GitHub上找到。您可以使用git下载:
git clone https://github.com/ArmDeveloperEcosystem/smart-plant-example-for-pico-w.git
如果您不熟悉git,还可以下载并提取zip文件版本。
将代码上载到电路板
1.在Thonny中,单击顶部菜单栏中的查看->文件。然后按工具栏中的停止按钮刷新Pico W板上的文件。
2.在“此计算机”部分,导航到先前从GitHub下载的代码的src文件夹。
4.在按下键盘上的shift键的同时,选择“此计算机”部分中的所有文件。然后右键单击并选择上载到/以将文件上载到Pico W板。
应用程序配置
打开树莓派Pico区的config.py文件。
然后填写以下配置信息:
.WIFI_SSID是您的Wi-Fi网络SSID
.WIFI_PASSWORD是您的Wi-Fi网络密码
.ACCOUNT_ SID是您的TWILIO帐户SID(在本指南前面获得)
.TOKEN是您的TWILIO AUTH令牌(在本指南前面获得)
.TWILIO_FROM是您的TWILIO电话号码(在本指南前面获得)
.TWILIO_TO是您希望发送消息的电话号码
.TIMEZONE_OFFSET是您所在位置与UTC的小时偏移量
还可以选择使用自定义值配置以下项:
.名称-显示在LCD显示屏上的名称标签上的名称
.GOOD_MORNING_HOUR-24小时格式的小时,此时可以开始发送“早安”消息
.GOOD_NIGHT_HOUR-24小时格式的小时,此时可以开始发送“晚安”消息
.PROXIMITY_BRIGHT_THRESHOLD-发送“早上好”消息时的亮度阈值,单位为LUX
.SOIL_DRY_THRESHOLD-报告土壤干燥的湿度传感器阈值
.SOIL_WET_THRESHOLD-报告土壤湿润的湿度传感器阈值
运行应用程序
打开树莓派Pico区的main.py文件,然后单击绿色运行按钮在板上运行当前脚本。
然后,开发板将尝试连接到您的Wi-Fi网络。
开发板成功连接到Wi-Fi网络后,将在屏幕上显示一个名字标签。
应用程序将每秒打印一次传感器值,这些值可用于微调config.py中的配置设置。
注意:在编辑主板上的文件之前,您需要按下Thonny IDE的“停止”按钮。然后必须打开py文件并手动运行。
连接植物
一旦您成功地为该项目设置了硬件和软件,您现在就可以将其连接到您的植物了!
USB电源适配器可用于在没有计算机的情况下为电路板供电。MicroPython将自动开始在main中运行代码。当电路板通电时为py。
结论
该项目在基于Arm Cortex-M0+的树莓派 Pico W板上使用了MicroPython,该板带有Pimoroni Grow HAT Mini,用于监测土壤湿度和光传感器值。
然后,该板的内置Wi-Fi功能被用于通过Twilio的可编程SMS API根据一天中的时间和传感器值向您的手机发送短信。这给了你的植物一种个性!
下一步。。。
该项目可通过以下方式进行定制和进一步扩展:
自定义与MicroPython应用程序捆绑的文本消息列表。
添加附加消息和应用程序逻辑以处理特定于一周中某一天的消息,如“星期三驼峰日快乐!🐪或者“准备好摇滚了,周末到了!”!🤘".
使用接近传感器检测附近是否有人,并在Pimoroni Grow HAT Mini的LCD屏幕上显示信息。
焊接额外的电线以使用Pimoroni Grow HAT Mini的按钮、压电蜂鸣器、剩余的两个湿度传感器和水泵接头。然后更新MicroPython应用程序以使用附加的硬件特性。
请分享您在Twitter上进行的任何自定义,并标记@ArmSoftwareDev。
代码下载: https://github.com/ArmDeveloperEcosystem/smart-plant-example-for-pico-w/archive/main.zip