为电池供电的数据收集项目选择微控制器

物联网 微控制器 硬件 紫蜂
2021-06-03 22:55:44

我计划测量一口井的水位,该井深约 10 m,最高水位可达 5 m。我的计划是使用超声波传感器 HC SR04来测量深度,通过 ZigBee 将其传输到我家中的 Raspberry Pi。

正如我在上一个问题中所讨论的,我 需要选择一个微控制器来将超声波传感器和 ZigBee 模块连接在一起。

选择参数为:

  1. 低功耗:我打算用电池运行它,所以低功耗是一个优先事项。截至目前,我没有任何关于电源使用或电池更换间隔天数的目标,甚至没有使用哪种电池的目标。由于这更像是一个学习项目,而且它在我家中,所以我很灵活,但功耗越低越好。

  2. 低成本:这对我来说是一个学习项目,我不想在这上面花太多钱,所以成本越低越好。

  3. 在井内工作:整个项目将在井内工作,并会暴露在强烈的阳光和雨水中。不过,我将提供一个很好的案例和保护。

  4. 易于编程。

我选择 ZigBee 是因为它简单、满足我的用例和低功耗。但我的要求是传输传感器数据,我对其他传输持开放态度。从我的井到 Raspberry Pi 的距离约为 6 米,中间有一堵墙。我计划在水泵运行时每 10 分钟测量一次水深,每分钟测量两次(每天约 20 分钟)。

2个回答

微控制器选择的一般过程。

  1. 总结您对微控制器的要求。例如在这种情况下:
  • 1 个硬件定时器,用于测量触发和回波脉冲之间的时间。
  • 2 个 GPIO 引脚,用于连接传感器 Echo 和触发引脚。
  • 可能使用UART来连接 RF 通信模块。
  • 1 ADC 输入用于监控电池电压。


为此,您可以使用 8 引脚控制器,这可能也需要将编程器引脚用于一般用途。

  1. 确定所需的CPU 性能内存要求使用 8 位 MCU 就足够了,还是需要一个 32 位的 MCU?什么样的 CPU 时钟速度是可以接受的,几十 MHz 或 1 MHz 就足够了?需要多少程序存储器、RAM 和 ROM?

鉴于所描述的应用程序,您不需要高计算性能。可能 8 位控制器就足够了(虽然不会比 32 位控制器便宜多少,因此您可以在这里根据价格决定)。

  1. 低功耗当它不重要时,您可能可以使用其低电源电压和系统时钟频率的低功耗模式与几乎任何类型的控制器相处。如果更重要,您可以从专用的低功耗 MCU 内核(例如(ARM® Cortex®-M0 或 M0+ CPU 内核)开始缩小搜索列表的范围。通常数据表包含大多数低功耗模式/VCC/SysClk 频率的表格,更好的将列出每个外设的消耗。

  2. 开发者工具我认为这是一个非常重要的方面。专用的硬件程序员工具可能会花费很多钱,所以通常我会坚持使用我已经有程序员的 MCU。当您切换到另一个系列或品牌时,最好投资于具有板载编程器的开发板,该编程器稍后可用于对您的自定义板进行编程。一般来说,首先要检查将程序下载到微控制器的成本是多少。

正如@Sean 在评论中指出的那样,一种可能且具有成本效益的解决方案是寻找带有集成可编程应用 MCU 的此类 RF 模块,该 MCU 可以在处理 RF 通信部分的同时运行您的固件。此类模块适用于 BLE、WiFi 和 ZigBee,也可能适用于许多其他技术。

此外,关于任何 MCU 将如何在井中生存。这一切都将落在您为设备提供的外壳上。例如,如果外壳不是 100% 防水,那么您选择哪个 MCU 并不重要。


TL; 博士; 下面是产品特定部分。

  1. 您可以选择在Farnell上花费0.74 美元/1 件ATtiny258 位、8 针,因此不会占用太多空间。在掉电模式下,它在禁用看门狗的情况下消耗 0.2 μA,电压为 3 V。如果启用看门狗,则为 2-4 μA。它与Arduino 兼容,因此编程不会花费太多(USBasp 或 AVRdude 编程器在 eBay 上的成本约为 2 美元)。注意:你应该使用Arduino Software Serial library来连接RF通信模块,因为这个MCU只有硬件SPI。)总而言之,它体积小,价格便宜,功耗相对较低,但位碰撞的UART可能虽然复杂化它有 2 kB 的程序存储器,这对您来说应该足够了。

  2. 或者使用 ARM Cortex M0,它在待机模式下消耗 2 μA,在停止模式下消耗 5 μA。这种 MCU 是例如STM32F030F4,其成本为1.17 美元/1 片它是一个功能更强大的 32 位控制器,最大系统时钟频率为 48 MHz,但正如您看到的那样,只需 +0.3$。它带有 16 kB 的程序存储器,对于这个简单的任务来说已经足够了。它具有 SPI、UART、I2C 和大量其他外设。编程它会花费更多,专门的程序员在 Farnell 花费 20 美元。在我看来,不值得。相反,您可以为具有板载编程器 (ST-LINK) 的 F0 系列投资开发板STM32F0Discovery板成本~10$. 您可以使用该板开始原型设计,并在以后将其用作程序员。

考虑到易于编程和低成本,我可能会从某种 Arduino 模块(或低成本克隆)开始。超声波传感器的代码已经存在,ZigBee 的示例代码也是如此,例如使用 Digi XBee 模块。在后者上,您将 XBee 连接到串行端口,并在与古老的“AT”命令接口建立连接后,您将拥有一个点对点通道,您可以向下发送任何文本(到您的 Raspberry Pi )。ZigBee 不是最便宜的短程通信类型,但 XBee 模块在过去 5 年中的实际价格已经下降。

我知道有些人对 Arduino 上使用的基于 C/C++ 的语言有问题,但在这种情况下,您主要是将来自其他用户的现有脚本合并在一起。

如果您在 Google 周围搜索“Arduino 睡眠模式”,您会找到一些示例,说明如何将 Arduino 置于低功耗模式,并偶尔醒来读取读数,进行通信,然后重新进入睡眠模式。