资料介绍
本指南最终有点冗长,还包括将我带到这一点的旅程的详细信息,而不是一套简短的说明。这样做的原因是,在这段旅程中,我遇到了很多选择,我相信在这里和那里提供更多的细节可能会帮助任何人——像我一样——开始成为一名制造商、室内园丁或程序员。
我在这个项目中使用的每一项知识都是自学的,并且是从互联网上免费提供的资料中获取的。我希望这会鼓励您学习、试验,让您和您的社区的生活更美好,并在途中获得很多乐趣。我当然会:)
花园
这一切都始于大约 2 年前,当时我收到一小篮子罗勒和欧芹作为乔迁礼物,我很快就迷上了用新鲜香草烹饪的想法,即使是在隆冬。由于这些年来我也在休假,所以事情注定会失控——以一种好的方式
首先,我开始从当地超市特意购买新的罗勒植物,很快我的橱窗里就有 6 到 7 株,脑子里有无数的新计划和想法。因此,唯一合乎逻辑的下一步是购买一些生长灯,并最终将该项目发展成一个半自动化的气培花园,只需要不时手动更换营养液。
这也是我对 Maker 世界的介绍。
种植容器和气培法
我最终选择了气培法而不是其他方法,因为它似乎是最有效的资源利用方式,而且想到拥有一大桶根茎,在我家中间悬挂在蒸发的营养液中也具有奇怪的吸引力。
因为它计划是一个实验性的构建,我使用了一个宜家盒子(可能不是食品级的,所以我不推荐它)在顶部为网杯切几个洞,就是这样。
单一容器方法效果很好,但也有缺点:一旦根部接触到营养液,就很难控制根腐病,因为造雾器不能使水充分充氧。我经常需要使用过氧化氢 (H2O2) 对其进行消毒。还有其他更好的变体(参见:高压气培法),但这个是最容易建造的。
在为 netcups 钻孔之前找到正确的安排
到目前为止,使用超声波雾化器并不是最好的解决方案,但它是气培法的简单介绍,效果好且维护成本低。
一定要买一个带有“漂浮物”的,因为它们只能在理想的深度下工作。如果造雾机有一个浸没传感器,它也有帮助,这样它就不会在离开水时打开并损坏自身(例如,当容器在炎热的夏天排水得更快时)。
当您更换营养物时,还要确保清洁装置和漂浮物,因为它可能是细菌的培养箱。
外壳:
几个月来,我一直在看着我客厅中央的一个相当丑陋的帐篷,它是用反光救生毯、锡箔和电线搭起来的,让它看起来更像是一个废弃的临时***实验室,而不是罗勒花园。所以我决定使用木框和双面反光板来升级外壳。它便宜、易于制造,最终大大提高了生长灯的效率。
使用专为该任务打造的材料:耐热、表面不平整的反光材料(以避免形成热点)、耐用、不透明、一侧颜色适合您的环境。通常一个简单的热屏就足够了。
正在制作中的新外壳
控制器单元
带DS18B20温度传感器的控制器
原理图
免责声明
在这一点上,我必须补充一点,我只是一个爱好者,而不是工程师,所以挑战我的解决方案总是一个好主意。也就是说,当前的设置是对无数项目和指南进行数月研究的结果,旨在寻找最佳实践来构建负担得起但安全的解决方案。
它经历了多次迭代,并且总是有很大的改进空间,但目前的原型已经在我的花园里全天候服务了一年多,并被证明是可靠的。
电源连接:
请注意,输入和输出电源连接器均为IEC_60320 C14,可轻松更换,并且也是许多生长灯和计算机制造商的标准。
我使用 PC 电源线作为输入,并使用组装好的自定义连接器作为输出。
电源输入通过电线连接器分配,我使用的是 wago 221s。微控制器(3V3)和继电器模块(5V)有一个 5V 直流电源,其余通过继电器模块路由到生长灯和灌溉。
安全注意事项:
继电器缺点:对于输出电源连接器,接地是直接连接的,但火线和中性线只有一根由继电器切换,因为这在这类家庭项目中很常见。因此,即使继电器处于关闭状态,也应将末端的任何东西视为带电。在进行任何手动交互之前,将它们与设备完全断开。
入口和出口:对于像我这样的新手来说,区分相同连接器标准的入口和出口可能也不是很明显(我只熟悉 PC 电源的入口),但是有非常明显和合乎逻辑的安全原因使用插座作为输出连接器,否则您最终会在设备侧面的裸露金属针脚上获得电源电压。这是次优的:)
传感器:
经过几次尝试,我发现将我的传感器连接到设备的最简单方法是通过 3.5 毫米音频连接器(具有 3 个或更多极)和音频电缆(至少具有相同数量的电线)。端口、连接器和电缆均易于采购、易于组装并符合 3V3-5V 标准。
在这个项目中,我只使用了 DS18B20 温度传感器的防水变体来监测营养液的温度。但在房间的另一边,有一个类似的单元负责照看土壤种植的罗勒,它使用电容式土壤湿度传感器、DHT11 温湿度传感器,这些也可以在 MCU 侧项目的模块中找到模板:: https://github.com/tlvlp/iot-mcu-modules/tree/master/modules
继电器模块:
我使用的是 5V 电源和 3V3 控制,非常适合 ESP32。
确保它额定切换电源电压并且它可以承受灌溉和植物生长灯的负载。请注意“电源连接”部分中的安全警告!
生长灯:
网上有很多关于为你的花园选择合适的灯的材料,它本身就是一门艺术,这取决于你的植物的要求和主要的书呆子水平:)
由于控制器可以处理任何由电源电压供电的生长灯,您只需考虑继电器模块的额定值或选择适合您选择的照明的继电器。
组件清单:
ESP32 WROOM 或 WROVER 开发板
固态继电器模块
交直流5V电源
3.5 毫米音频连接器
3+线音频线
信号线
DS18B20水温传感器
生长灯
PC电源线插头
输入的电源兼容开关
电源插座
3 个额定电源线连接器https://www.wago.com/221/us/
项目箱 - 最好是防水的
MCU、固件和软件:
选择微控制器 - ESP32
首先,我在 Arduino Nanos 上碰了碰运气,它非常适合学习,但几乎无法用于物联网目的。我最终选择了 ESP32 WROVER 和 WROOM 开发板,因为即使它们是市场上的新产品,对于内置 WiFi 且具有良好性能和存储容量的 MCU 来说,它们也相对便宜。
我为 ESP 构建了一个小型对接平台,并将所有传感器、继电器控制和电源连接到该平台,使开发板可从设置中移除。
选择语言 - MicroPython
在使用 C++ 和 PlatformIO 大约一个月后,一旦我想对项目进行模块化,我很快就不知所措,最终在不得不调试一些晦涩的 mqtt 连接问题时放弃了。
那是我找到 MicroPython 并最终在项目中使用它的时候。
它在性能方面当然有其缺点,但使用相对强大的 ESP 芯片,我很乐意用一些性能损失来换取可读性、开发和调试的便利性。
与编译后的 C++ 不同,MP 还必须在内存中有其解释器,占用更多空间。但它的优点是不必每次更改都重新编译和上传整个项目,而只需上传已修改的脚本。
通过串行连接的 REPL 也是加速编写和测试代码的一个很好的特性。
为您的硬件编写自定义模块
由于硬件模块种类繁多,您很有可能会为它们编写自定义软件模块。
最好的开始方式是决定您的硬件设置,从下面克隆模块存储库,实施您的解决方案。另请参阅上面的传感器部分以获取更多信息。
UAsyncIO 和协作式多任务处理:
在自定义 MCU 模块和设置时,确保使用与现有实现类似的 uasyncio(Python 的 asyncio 的微型版本)库,尤其是对于较慢的模块,以保持单元响应 - 否则,例如。等待较慢的传感器会阻止设备接收 MQTT 调用。
代码库:
https://github.com/tlvlp/iot-mcu-modules - MCU 端 API 详细信息和启动您自己的项目的通用模板
https://github.com/tlvlp/iot-mcu-modules - MCU 端 API 详细信息和启动您自己的项目的通用模板
https://github.com/tlvlp/iot-mcu-bazsalikon-aero - 在这里您可以找到我的花园中当前使用的上述模板的实现
更新固件并将项目上传到 MCU:
https://github.com/tlvlp/micropython-upload - 我用来更新固件、上传项目文件、访问 REPL 等的脚本集合。
https://micropython.org/ - 官方 MicroPython 资源,包括开发板特定的固件和一个非常有用的社区
ESP32 - Lolin32 v1.0.0 开发板
服务器端
因为在做这个项目的时候,我也正在转行成为一名软件开发人员,所以我发现用这个项目作为学习新技术的动力是一个好主意。
因此,服务器端并不像您对类似规模的创客项目所期望的那样轻巧,它不需要在 MCU 或 Raspberry Pi 上运行,它需要一个中等大小的家用服务器或计算机,但作为回报,它可以扩展以处理更多的 MCU :)
可以在此处找到项目摘要存储库,其中包含部署所需的所有详细信息和材料:https ://github.com/tlvlp/iot-project-summary
特点:
机组监控
每个单元中的模块电平控制(例如继电器)
以计划任务的形式实现自动化
报告:使用原始数据和每小时、每天、每周、每月和每年的平均值为单元动态生成模块级报告。
安全——所有公开的端点都使用 TLS、身份验证和授权规则。所有密码均在安装期间生成并存储在 Docker 机密中。
Dockerized 服务堆栈提供安全可靠性并与服务器的其余部分分离
大多数服务都可以通过 Docker Swarm 进行扩展(详情在部署仓库中)
部分:
Linux服务器
网络连接
TLS 证书(最好使用域加密)
下图显示了服务之间可能的 API 调用的概览。除了 MQTT 代理之外的所有服务都使用数据库,因此为了清楚起见,我省略了这些连接。
API 网关控制大部分流程,但 MQTT 客户端和调度程序也可以通过专用的内部用户帐户调用网关。
服务器后端+前端服务图
后端部署:
我已经为几种情况编写了安装、部署和卸载脚本。
在获得 TLS 证书和简短配置后,安装是完全自动的。
所有详细信息都可以在https://github.com/tlvlp/iot-server-deployment repo 中找到。
网络门户:
https://github.com/tlvlp/iot-api-gateway是与服务交互的最稳定方式,您可以制作自己的前端实现。
在撰写此摘要时,我对前端世界还比较陌生,因此在当前状态下,该项目附带的门户充其量是粗糙的,尤其是在涉及 UX 时,但它是安全且功能齐全的。
特征:
完全实现后端 API
由 TLS 保护
桌面和移动兼容
PWA(渐进式 Web 应用程序),您可以将其作为应用程序安装到桌面和手机以方便访问
单元详细信息部分包含从单元列表视图中选择的单个单元的所有详细信息和可用操作,例如:
开关继电器模块
添加、编辑预定事件
查看单元活动日志
为单元的给定模块生成报告
单位详情查看
报告部分显示单个单元模块的可自定义报告。
可以同时显示不同的平均范围,这将在当前基于文本的报告被可视化图表取代时更有用。
如果从“单元详细信息”视图打开,报告参数会预先填充单元和模块特定详细信息。
报告视图
Admin 部分仅供具有 ADMIN 角色的用户访问,目前是注册新用户的唯一途径。
用户管理员视图
构建您自己的自定义轻量级后端的技巧:
您可以将项目的后端部分替换为您自己的解决方案。
只要满足以下条件,您就可以使用您熟悉的任何语言和库:
它需要包括一个 MQTT 服务器和客户端
它必须实现https://github.com/tlvlp/iot-mcu-modules的 README 中详述的 MCU 端 API
如果您了解一点 java 和 SpringBoot,快速构建在 RaspberryPi 上运行的轻量级单体后端的一种方法是:
安装和配置 MQTT 代理(例如 Mosquitto 或 VerneMQ)
克隆https://github.com/tlvlp/iot-mqtt-client存储库
在 /mqtt/MessagingService.java 中,将您的自定义逻辑添加到这些方法:handleIncomingMessage() 和 handleOutgoingMessage()
使用 Spring security 添加身份验证和 TLS。示例可以在https://github.com/tlvlp/iot-api-gateway/ repo 的 src/.../config 包中找到
您还可以在各自的 repos 中找到调度、报告和单元处理相关逻辑,所有这些都在https://github.com/tlvlp/iot-project-summary中引用
- 使用ESP32 Web服务器进行家庭自动化设置
- 自动化城市花园控制器
- 制作BMP280 ESP32天气预报器
- 使用Blynk IR Remote和ESP32实现家庭自动化
- 使用ESP32和IR Remote的Alexa家庭自动化
- ESP32带红外遥控继电器的蓝牙家庭自动化
- ESP32家庭自动化开源分享
- 使用ESP32制作ESP RainMaker IoT项目
- 乐鑫ESP32_蓝牙配网用户指南
- 乐鑫ESP32_蓝牙架构用户指南
- 乐鑫ESP32_ECO_V3_使用指南
- 乐鑫ESP32-MeshKit-Light_使用指南
- ESP32 Flash加密指南
- 基于ESP32的12通道IOT家庭自动化
- ESP32开发指南的详细教程免费下载 616次下载
- ESP32能取代STM32吗?哪个更好? 2384次阅读
- 自动化设备的伺服电机选型指南 490次阅读
- 工业自动化和自动化区别是什么 1033次阅读
- ESP32-C3开发板设计指南 3653次阅读
- 什么是ESP32-CAM摄像头? 2.1w次阅读
- 基于ESP32的简易web服务器设计 3305次阅读
- 使用ESP32实现UDP通信的方法 5727次阅读
- ESP32使用MiroPython编程环境搭建 2690次阅读
- 基于ESP32制造有趣的超级马里奥主题时钟 4021次阅读
- ESP8266/ESP32自动下载原理 4249次阅读
- esp32物联网的应用实例 LoRa网关制作、触屏DIY电视、Sygic导航HUD 5405次阅读
- ESP32的数字遥测实现 1521次阅读
- 基于PlatformIO IDE的家庭自动化系统设计方案实现 2298次阅读
- dfrobotBeetle-ESP32控制器简介 2695次阅读
- 自动化领域初涉水 非标自动化和自动化到底有哪些区别? 6091次阅读
下载排行
本周
- 1普中科技HC6800-EM3使用操作手册
- 21.69 MB | 3次下载 | 2 积分
- 2PL4807单节锂离子电池充电器中文手册
- 1.36 MB | 2次下载 | 免费
- 3智能小车proteus仿真+C源程序
- 0.02 MB | 1次下载 | 免费
- 4TMR技术在电流传感器中的应用
- 616.47 KB | 1次下载 | 免费
- 5开关电源设计原理手册
- 1.83 MB | 1次下载 | 免费
- 6BQ769142技术参考手册
- 2.99MB | 1次下载 | 免费
- 7CBM8605_8606_8608-运算放大器【中文排版】-202406271735
- 2.70 MB | 1次下载 | 免费
- 801-07-06-CBM8655_CBM8656精密运算放大器
- 4.49 MB | 1次下载 | 免费
本月
- 1XL4015+LM358恒压恒流电路图
- 0.38 MB | 154次下载 | 1 积分
- 2PCB布线和布局电路设计规则
- 0.40 MB | 35次下载 | 免费
- 3智能门锁原理图
- 0.39 MB | 13次下载 | 免费
- 4GB/T4706.1-2024 家用和类似用途电器的安全第1部分:通用要求
- 7.43 MB | 11次下载 | 1 积分
- 5JESD79-5C_v1.30-2024 内存技术规范
- 2.71 MB | 10次下载 | 免费
- 6elmo直线电机驱动调试细则
- 4.76 MB | 9次下载 | 6 积分
- 7WIFI智能音箱原理图完整版
- 0.09 MB | 7次下载 | 10 积分
- 8PC1013三合一快充数据线充电芯片介绍
- 1.03 MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935115次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183333次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73806次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65985次下载 | 10 积分
评论
查看更多