我是一名经验丰富的开发人员,使用各种技术以及实时。我想学习如何为不是计算机、平板电脑或任何大家都知道的熟悉设备的设备进行开发。
我注意到全球购物网站提供物联网硬件,例如2通道中继模块、nodeMCU开发板,以及更多与物联网相关的硬件。我不知道该做什么或开始做什么。
假设我知道如何编码,我该如何开始开发我的第一个 IoT 设备?
我是一名经验丰富的开发人员,使用各种技术以及实时。我想学习如何为不是计算机、平板电脑或任何大家都知道的熟悉设备的设备进行开发。
我注意到全球购物网站提供物联网硬件,例如2通道中继模块、nodeMCU开发板,以及更多与物联网相关的硬件。我不知道该做什么或开始做什么。
假设我知道如何编码,我该如何开始开发我的第一个 IoT 设备?
这是一个非常广泛的问题,但我会尝试给出一些一般性的建议,希望对其他人以及您有用(因此,如果我发布了您已经知道的内容,请接受我的道歉)。
如果您问的是读取传感器,这是遥测技术,不一定是物联网。我编写了许多项目,其中独立 PC 读取并显示一些测量值。
如果您还想控制连接的硬件,这就是SCADA。同样,它不一定需要连接到互联网。
这是 SCADA 的图表,总体上给人一种非常好的物联网感觉。请注意,图中的PLC是支持物联网的设备的传感器和控件。
而且,一旦您有了一些代码,您就可以在Stack Overflow 上获得有关问题的建议。
通常,工业物联网涉及客户端/服务器模型,客户端测量/控制硬件设备并向服务器报告/接收命令。服务器通常还具有数据库,并允许生成用于管理和警报的报告(并且可以根据接收到的数据指示远程硬件重新配置/关闭)。
呼!这就是介绍的方式。现在让我们的手变脏。
如果您想深入了解编码的本质,请查看套接字,并了解TCP和UDP之间的区别。
幸运的是,几十年来,大多数棘手的东西都包含在库中,最好建议您阅读 RESTful 服务。根据您的语言,有许多免费的在线教程、课程和视频;C 是一种传统的嵌入式语言,其中一些使用 C++,但当然,请使用您知道/感到舒服的任何语言。Python 非常流行且易于学习,并且是 Raspberry Pi 的推荐语言。
就我个人而言,我更喜欢编译型语言而不是解释型语言,因为它更容易消除错误,但选择完全取决于你。只要确保它对通过 USB、以太网和 - 在工业中仍然非常普遍 - 串行端口访问外围设备有良好的支持。
对于服务器端,全球 90%+ 的服务器仍然运行在 PHP 上。然而,使用 NodeJS 的人主要是编写浏览器应用程序的人,目前只能用 JavaScript 完成并且不想学习两种语言。我不建议开发基于浏览器的 IoT 应用程序,因为对访问文件系统和外围设备的浏览器代码有限制(不过,如果你想为智能手机开发,我会提到Cordova 之类的应用程序)。
首先,我会推荐一个Raspberry Pi(用 Python 或 C 编码)。
我*强烈*推荐传感器帽。这只是一个例子,但它并不昂贵并且包含
这将允许您收集一些数据并将其报告给您的服务器。您或许可以在线找到一项免费服务来接收和显示您的数据。我在其他 SO 网站上看到过一些,但忘记了在哪里。
但是,您可能想要编写自己的服务器。我会推荐 PHP 作为编程语言。对于 Linux,您可以使用LAMP(Linux、Apache、Mysql 和 PHP)。对于 Windows,您必须安装WAMP(Windows 等)。
你可以随意挑选。我已经在工业应用中使用XAMPP十多年了。你不具备使用MySQL,SQLite的可以起到一样好(shaless塞了我自己的SO问题6年前,“ SQLite的或MySQL?如何决定? “)。您还必须了解CRUD。
根据从客户端/传感器收到的数据,您可能想要发回一个命令,甚至只是一个简单的命令(显示:“温度太高”,这可能会转化为关闭工业系统中的阀门)。
您可能想要实时发出警报(发送电子邮件说温度太高)。
而且,您可能还想考虑生成报告。从显示接收到的数据的表格开始。考虑一个图表,或者更高级的东西。添加导出为逗号分隔值(CSV)的选项,允许最终用户将数据导入电子表格以进行进一步分析和操作。
如果您确实决定需要精美的报告,则可以在 PHP 中进行,但是,经过几十年的努力,我现在已转向在客户端的浏览器中处理大部分报告内容。
对于一般原则,获得单页应用程序和AJAX的概述 。我个人做了大量研究并选择了 Google 的AngularJS作为我的编程语言(有很多教程和强大的支持),但是您可以随意使用纯 JS、Jquery 等。
如果您也决定为浏览器编写代码,那么您也可以在服务器端使用NodeJ,这样您只需学习一种新的编程语言。
选择太多?对不起 :-(
我希望这给了你一些建议,但请随时提出问题,如果这里缺少任何一般性建议,请告诉我。
作为一名经验丰富的开发人员,您有能力理解逻辑、读写代码、解决问题以及其他一些重要技能。您可能不了解基本的电子技术以及从在小型设备上运行的桌面获取代码的艺术。
以错误的复杂程度跳入可能令人生畏,并且可能意味着您过早放弃。例如,人们推荐 ESP8266 和 NodeMCU,而没有想到你需要得到正确的,你需要在开发板上安装芯片,你必须在上面安装你的软件,你需要把它连接到什么东西上,而且只有那么你能运行 JavaScript 吗?这是您需要的许多不同技能,您可以放弃其中任何一个阶段。
我的建议是从 Arduino 开始。Arduino 在创客社区中的不同之处在于将 Arduino 插入 USB 端口是多么容易,并且编译、构建、部署链都为您分类。您可以编写一些代码,然后非常快速地闪烁一些 LED。
我还建议您从官方Arduino 入门套件开始。虽然它非常简单,但说明很简单,你会得到一堆有用的电子零件(面包板、跳线、LED 等),它们仍然有用。
不要被 Arduino 的基本功能所拖延。在尝试任何过于复杂的事情之前,先对电子产品和动手部分产生一些热情。如果您发现电子产品很有趣并想做更多,请坚持使用 Arduino 并获得更复杂的套件。我买了BOE Shield-Bot 机器人。它可能不是最好或最便宜的机器人,但有一个非常好的教程,详细介绍了如何控制伺服系统等。您还会获得更多有用的信息。
如果你克服了这一点,你要么放弃并回到服务器端软件,要么购买更多的位、烙铁、更多的电路板和组件。很快,你会像我们其他人一样,带着一抽屉破碎的梦想。
我不建议过早使用 Pi。它更像是一台计算机而不是一件东西,并且没有在您的理解之旅开始时所必需的重要功能(例如模拟输入)。您很快就会超越 Arduino(它不会很容易地连接到 Internet),但这是一个了解这是否会成为您喜欢的东西的好地方。
我将继续回答您的第一个问题。
如果您只想学习,我可以向您推荐一些有关物联网的书籍,但我想您可以自己搜索。如果这很清楚,那么我建议您开始从事自己的小项目,这是您在面对现实生活中的问题时最好的学习方式。
您需要决定要创建什么。这里有一些灵感和很酷的想法可以开始:
Arduino 项目-> 微控制器
Raspberry Pi 项目-> 微处理器(更强大)
hackaday.com -> 混合组件
一旦你有了想要做什么的想法,那么你需要为你的项目提出要求。微控制器、传感器、执行器、通信协议等。
如您所见,最受欢迎的设备是Arduino、Raspberrypi和所有其他亲戚、beaglebone black、onion等,还有更多,差异在于价格、与其他传感器的兼容性和受欢迎程度。流行的更兼容,在论坛上有更多的支持。
我们会根据您的项目帮助您满足要求。祝你好运!
其他人则关注您问题的第一方面;我将专注于后者。你问是否任何人都可以进入物联网,或者你是否必须成为一家拥有众多资源的大公司。
如果您浏览 智能家居标记,您会看到有些物联网设备已经为您完成了所有服务器端。有很多“任何人”都可以购买的物联网设备,包括 Nest 摄像头、恒温器等、亚马逊 Echo、Google Home、智能烤箱、冰箱等。
甚至许多新车也有资格作为远程感应或控制的对象……尽管可能还不是受控部分。:)
这导致你的第一个问题的答案:
如何开始练习开发我的第一个物联网设备?
您不一定必须从开发开始:您可以从更简单的事情开始。如果你想进入它的开发方面,你可以简单地冒险,正如一些人所建议的那样,但你确实可以选择从简单开始并逐渐进入更复杂的领域。