farmbot开发入门教程-高层概述
说明:
- 介绍FarmBot 软件的每个组件如何组合在一起
下表粗略概述了 FarmBot 软件系统的代码库及其开发语言。实际上,没有人需要了解所有这些语言;所需的实际工具集将根据您要执行的任务而有所不同
固件:C++
FarmBot 操作系统:灵丹妙药
休息 API:Ruby on Rails
Web 应用程序:ReactJS、Typescript 和 WebPack
硬件和物理外围设备
Farmbot 使用物理传感器和执行器与其环境进行交互。这需要在物理花园和软件层之间架起一座桥梁。
固件是负责与现实世界交互的软件。基于 Arduino 的微控制器运行固件并执行传感器和执行器命令。当 FarmBot 打开水阀或探测土壤湿度时,就会看到这样的示例。设备固件直接告诉这些外围设备何时以及如何运行。系统的其他部分可以通过向固件发送命令来请求访问外围设备。
固件包的功能范围在设计上是有限的。它是一个高度专业化的软件组件。它不是为开发人员的可扩展性而设计的。Farmbot的微控制器提供了出色的外围设备处理能力,但存在性能缺陷。对于任何需要超过几千字节内存的任务来说,它也是一个糟糕的主机。
由于这些原因,第三方定制最好在FarmBot OS或Web 应用程序(如下所述)中处理
日常运营和花园管理
Arduino 缺乏内存和处理非硬件任务的能力。为了克服这些限制,Farmbot 还包含一个Raspberry Pi 单板计算机。Raspberry Pi 提供更大的内存、CPU 和网络外围设备。FarmBot OS是一个嵌入式操作系统,它在 Raspberry Pi 上运行,用于管理以下任务:
- 向最终用户和REST API传达消息(例如报告或传感器数据)。
- 执行设备级安全功能。
- 维护和执行工作计划。
- 接受来自用户和设备外软件包的传入远程过程调用。
FarmBot OS 对于以下操作特别有用:
- 需要持续执行,即使在网络丢失的情况下。
- 对网络延迟的容忍度很低或者没有。
数据存储和云
Raspberry Pi 为许多任务提供了足够的处理能力。与 Arduino 非常相似,它也存在一些设计上的权衡。最值得注意的问题是数据完整性和可用性。离线时无法访问设备上的数据。设备还可能出现意外断电和电涌,从而损坏板载 SD 卡。此外,即使设备处于离线状态,也必须发生某些事件,例如电子邮件警报。
正是由于这些原因,FarmBot 无法 100% 自主运行。为了缓解数据完整性和可用性问题,该设备与始终在线的 Web 服务器(通常称为“Web 应用程序”)协同工作。
该 Web 应用程序在一个包中包含三个核心组件:
- 用于数据库、用户和设备之间消息传递的实时消息代理
- 用于最终用户设备控制的图形用户界面
- 用于数据存储和访问的 REST API
下表列出了常见的 FarmBot 用例及其适当的软件包。
常见组件用例
长期数据存储:REST API
设备离线时远程管理设备:Web 应用程序和REST API
管理设备和帐户数据:Web 应用程序和REST API
为执行器供电:固件
重复任务:FarmBot 操作系统
长时间运行的操作,例如浇水序列:FarmBot 操作系统
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号