那么,您想构建一个物联网项目吗?

2025-05-27

那么,您想构建一个物联网项目吗?

如果您有后续问题,请通过Twitter @nathangloverAUS与我联系!

这篇文章最初发表于DevOpStar 。点击此处查看

您是物联网开发的新手吗?或者,您从事嵌入式系统开发已有一段时间,但尚未跟上一些最新趋势。在这篇文章中,我将重点介绍一些我认为值得研究和投入时间的方面。我还将尝试打破人们在考虑构建物联网项目时认为存在的一些隐形障碍。

理念

在开始学习新知识之前,设定一个目标会很有帮助,这将有助于取得成果。构思一个想法时,请记住以下几点。

一切皆有可能

不要因为暂时看不到可能性就限制自己。热情占了整个过程的90%!如果你对某件事特别感兴趣,就能在学习中充分利用这份渴望。

热情占了整个过程的90%!

物联网项目迭代流程

要明白,无论如何,项目的迭代都是最终完成的关键,所以设定高目标意味着一路上会有更多的学习和原型设计。坦诚地面对自己,你的第一个设计可能并不完美,这能帮助你保持专注。

成本

启动物联网项目的前期成本可能没有你想象的那么高!我们将在后面的文章中详细介绍,不过你会发现,对于简单的单设备项目,入门级价格通常在 30 美元以下。

一旦你开始行动,你就会开始通过回收来积累随机零件。

独特性

猜猜怎么着?几乎肯定有人已经尝试过你想做的事情了。但这并非坏事,事实上,它会让你的生活轻松很多!我建议你看看下面这些网站,从中汲取灵感。

我们的想法

为了写这篇文章,让我们选择一个假设的项目想法来实施!

我们想要一个湿度感应系统,可以让我们监测花园的状况

我们想要实现的整体目标如下图所示。当你试图将你的想法形象化时,画一张漂亮的高级图表会很有帮助。

简单物联网项目概述

购物清单

在这个阶段,列出你认为可能需要的东西也是值得的。即使你的清单没有太多技术意义,它也能让你在以后购买零件时,在谷歌上搜索哪些信息时有所参考。

不要羞于在清单上写下你可能有的任何问题

  • 物联网设备(需要无线
  • 湿度传感器
  • 将湿度传感器连接到设备的电缆

修改项目图

一旦你把你的想法写在纸上,最好修改你原来的架构图,以便它能包含任何出现的额外想法。

修订后的物联网项目图

正如您所看到的,我已经修改了原来的想法,现在包括:

  • 需要某种无线功能(我们真的不想在屋外铺设电缆)。
  • 服务器存储来自湿度传感器的数据。
    • 也许我们不需要这个,但我认为现在值得一提,这样我们就不会忘记我们需要某种方法来存储来自湿度传感器的数据。
    • 该服务器还可以让我们查看监控数据。

部分

简单的设计准备就绪后,我们就可以开始研究设计的各个部分,充实一些细节。

在这个阶段,你可能会感到不知所措,尤其是遇到一些新单词或术语的时候。但要坚持下去,不要试图一下子理解所有内容。

湿度传感器

我们以湿度传感器为例。我在谷歌上搜索了一下IoT Moisture Sensor,找到了一家本地在线零售商,他们有售卖这种传感器。

Core Electronics 的湿度传感器

向下滚动页面,你会发现大多数在线零售商都非常擅长引导你找到相关产品/常买的附加产品。虽然这主要是为了增加销量,但在启动项目时,了解你可能需要什么,会非常有帮助。

湿度传感器相关产品

在这种情况下,我看到人们购买Raspberry Pi Zero W设备和锂电池。这很合理,因为我们需要一个微控制器(小型物联网计算机)和一块电池,这样它就可以在没有电源线的情况下运行。

微控制器

微控制器是整个操作的大脑!在上一步中,我们介绍了Raspberry Pi Zero W,如果你是物联网领域的爱好者,它是一款非常值得拥有的主板,因为它功能多样。

有时,你买的板子并不一定适合最终产品。即使第一次选错了也不用担心,因为以后买的板子还可以重复使用。

就我们的场景而言,微控制器的选择可以从多个角度进行。以下列出了一些常用的开发板以及它们的平均价格范围。

设备 成本 连接性
树莓派 Zero W 约 18 美元 无线网络/蓝牙
ESP8266 5-20美元 无线上网
ESP32 10-30美元 无线网络/蓝牙

注意Raspberry Pi 等设备不考虑 MicroSD 卡的成本

对于我们在这里构建的保护,我决定选择 ESP8266,因为它很便宜,并且为我们提供 WiFi 功能

关于价格

电子产品的价格差异很大。根据您是在本地购买还是直接从中国购买,您会发现成本(有时质量也不同)差异巨大。以下是我常用的一些转售商;请记住,一分钱一分货此外,从中国发货的产品运输时间可能长达数月

代码

如果您已经是一名开发人员,那么您一定知道,拥有最好的工具会让生活变得多么轻松。物联网/微控制器领域与之类似,但发展程度不如前者。

不过别担心,你不需要编写原始的 C++ 代码,也不需要处理内存分配(即使需要,也不需要太多)。事实上,有一些项目纯粹就是为了将 Python 和 Node 等语言移植到微控制器领域。

Mongoose 操作系统

Mongoose OS在您的基础微控制器上运行并为您处理所有难题。

Mongoose OS 架构取自 https://mongoose-os.com/mos.html

它将运行在我们选择的 ESP8266 等开发板之上,使部署、监控和连接云端变得超级简单。对于我们正在构建的这种业余项目来说,这是一个绝佳的选择!缺点是,如果用于商业环境,则需要按设备级别支付相关费用。

PlatformIO

PlatformIO是一个非常完善的嵌入式设备开发工具链。它可以作为 VSCode 等流行编辑器的 IDE 扩展,使开发人员能够编写相同的代码并将其无缝部署到不同的架构上。

PlatformIO 徽标

PlatformIO 还提供了一个良好的社区构建库接口,并支持超过750 个开发板。所有内容也通过platformio.ini项目根目录中的文件进行管理,该文件定义了构建和部署所需的开发板类型和库。

[env:uno]
platform = atmelavr
board = uno
framework = arduino

lib_deps =
  FastLED@3.2.0
Enter fullscreen mode Exit fullscreen mode

不仅如此,通过对 TravisCI 等构建系统的支持,您还可以进行基本的持续集成测试

language: python
python:
  - "2.7"

sudo: false
cache:
  directories:
    - "~/.platformio"

install:
  - pip install -U platformio

script:
  - platformio run
Enter fullscreen mode Exit fullscreen mode

如果你想了解如何将 PlatformIO 用于基本项目,请查看t04glovern/office-christmas-lights

电路设计

当你开始设计电路时,不要羞于从互联网上获取设计。

寻找传感器使用示例的第一步查看供应商的产品页面。他们通常会提供代码和电路示例的链接,以及传感器的链接。

如果你只是在谷歌上搜索你的零件名称circuit example,或者code example我保证你会找到一些相关的信息来帮助你。但是,如果你确实需要自己设计电路,我建议你查看Fritzing 项目目录,然后使用Fritzing进行设计。

Fritzing 电路设计师

关于电子产品

我对一群人进行了调查,询问他们为何难以进入物联网项目,并发现主要原因是缺乏电子技能。

调查开发人员为何不执行物联网项目构想

对于大多数业余爱好者项目,您会发现所需的实际电子知识极低,并且基本上可以归结为了解几种类型的组件的作用以及在何处使用它们。

电压电流电阻示例

  • 电阻器- 减少电流,通常放置在敏感元件前面以确保满足特定的电流要求。
  • 电容器——储存能量,可用于平衡电流。
  • 电源——电路的电源和电流源。
但如果我搞砸了怎么办

电气元件的公差通常足够高,如果您使用错误的电压或提供错误的电流(在合理范围内),一切都会好起来。

一般的经验法则是,如果您第一次连接某个东西,如果触摸时感觉组件温热,则可能表明某些东西接线错误或接反了。

注意:请勿将手指伸到超过 5 伏的元件上。以上想法基于 5 伏以下物联网项目的经验。

即使你真的烧坏了什么东西,通常也不会是微控制器的问题,而是电路里的元件的问题。这些元件通常更换起来很便宜;所以我建议你订购比项目所需更多的元件。

连接到云

如今,将物联网项目连接到云端的方式多种多样。如前所述,像Mongoose OS这样的项目让数据传输变得非常简单;但这并非唯一的选择。

如果您想直接使用云提供商的物联网服务,通常可以通过 MQTT 协议并使用其提供的证书。例如,我编写了一个名为Cloudy Toast的项目,它是一个使用AWS IoT连接互联网的烤面包机

云朵吐司横幅

再举个例子,我在一篇关于AWS Sumerian Magic Cube的文章中,将 ESP8266 连接到 AWS IoT。这或多或少可以归结为通过 MQTT 发送消息,MQTT 是物联网领域常用的发布/订阅消息总线。

void aws_reconnect()
{
    // Loop until we're reconnected
    while (!client.connected())
    {
        Serial.print("[AWS] Attempting MQTT connection...");
        // Attempt to connect
        if (client.connect(aws_mqtt_client_id))
        {
            Serial.println("[AWS] connected");
            // ... and resubscribe
            client.subscribe(aws_mqtt_thing_topic_sub);
        }
        else
        {
            Serial.print("[AWS] failed, rc=");
            Serial.print(client.state());
            Serial.println(" try again in 5 seconds");
            // Wait 5 seconds before retrying
            working_led();
            delay(5000);
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

概括

在接下来的几个月里,我将深入探讨上述每个部分的具体细节。这篇文章的目标很艰巨,就是试图说服你有能力承担物联网项目。

我知道事情不会总是顺利的,所以我鼓励你通过Twitter @nathangloverAUS联系我并提出问题。

文章来源:https://dev.to/t04glovern/so-you-want-to-build-an-iot-project-2c0h
PREV
Next step Git for those that already know add and commit The list
NEXT
50 天 CSS 艺术课程的 5 个教训