基于Arduino创建自己的自制设备网络(第1部分)

下午好,哈布拉夫尚! 今天,我将向您介绍Arduino与Windows和其他设备上的PC的集成。 早在2018年,我各种型号的Arduino开发板就终于出现了。

我一直想建立一个智能家居,并决定使用此特定平台。 怎么了 好吧,我对C#非常了解,并且对C ++也很了解,但是正如您所知,Arduino的固件是在已更改的优点上编写的。 此外,该平台还具有数模转换器,可简化模拟传感器的工作。 此外,该平台非常有名,并具有大型模块化基础。

凭借对微控制器的全部热爱,我更喜欢在Windows上计算所有内容,而我的长处在于.NET应用程序。 这是我的问题。 我根本无法掌握Arduino IDE开发环境。 我不得不适应它。 但是,简单的预热项目仍主要在PC上工作。 谁对该主题感兴趣,我要求削减!

我的第一个实验是通过USB(串行端口)进行的简单信息交换,通过该过程我发送了带有简单命令的数据包,以在微控制器上执行操作。 例如,我使用了Arduino UNO模型。



这是Windows的程序界面。 “吱吱声”-在恒定电信号的编号10处向引脚(Arduino引脚)发出信号,该信号由我连接的蜂鸣器供电。 “ LED”-引脚13的直流电源,默认情况下,控制器上的该引脚连接到内置的LED,用于调试草图(固件)。



但是,所有这些功能恰好位于控制器上。

该程序做什么? 只需将数字发送到端口! “ 0”表示禁用
LED,“ 1”-打开LED,“ 2”-关闭蜂鸣器,“ 3”-打开
蜂鸣器。 一切都使用Windows窗体的基本元素完成。 如果
有兴趣的人,数据交换率是115200波特。 谢谢啦
为此,我可以轻松地查看来自微控制器的消息内容
Arduino IDE。



我认为许多人现在想知道微控制器固件中的内容。 由于时间相对较长,因此搜索Arduino固件代码并不容易,但仍然可以找到该文件!

整个代码
吃了点东西,这是文件的旧版本,没有蜂鸣器,只有一个LED。

int i = 0; //       int led = 13; void setup() {  Serial.begin(115200);   //      pinMode(led, OUTPUT); //    13-      } void loop() {  i = i + 1; //         String stringOne = "Info from Arduino ";  stringOne +=i; //  Serial.println(stringOne); //     char incomingChar;  if (Serial.available() > 0)  {    //           incomingChar = Serial.read();   //        LED    switch (incomingChar)    {      case '1': digitalWrite(led, HIGH);        break;      case '0': digitalWrite(led, LOW);        break;    }  }  delay(300); } 


但是,这仅仅是一个例子。 唯一的事情-这个系统应该有一个集线器-即所有设备的交叉点。 这立即破坏了系统的整个分散化。

因此,结论-使用集线器的方法仅适用于信息收集和管理。 例如,需要一个集线器来访问Internet上的设备,但这并不是它们之间进行通信的关键点。

假设我们可以使用I2C或我们自己的协议连接所有设备。 但是如何在集线器中删除数据? 通常,什么将充当枢纽? 选项3:

  • 路由器的集线器。
  • 来自另一个Arduino开发板的集线器。
  • 来自Raspberry Pi的集线器。

让我们依次考虑一切。 因此,路由器。 首先,不仅需要路由器,还需要板载Linux和用于从系统连接任何 Arduino板的USB端口。 之所以如此,是因为网络将由大量设备和一般的“聊天”组成,所有设备都在其中发送有关其状态的消息。 例如,对于路由器,“ Linksys E2100L 802.11b / g / n”是合适的。



如您所见,该路由器具有USB连接器,其特性表明在Linux上一切都在旋转。 我个人没有使用它,但是根据它的特点它适合我们。 这不是广告。

如果是路由器,您可以在Windows上的串行端口上放置数据,并在Linux上运行脚本-消息处理程序(对不起,如果不这样说,我就是不熟悉Linux)。

考虑选项2。另一个Arduino开发板。 Nano,Mini,Micro模型在这里不再适用。 需要一个UNO或MEGA的Arduino模型。 但不要将开发板连接到网络。 作为一种选择,可以使用Arduino UNO WI-FI,或者更可靠的Arduino Yun或Tian。 后者的问题是相对较长的下载时间和价格,并且就功能而言,它们看起来像同一路由器,因为它们在Linux上工作。

最好使用所谓的以太网屏蔽。 这是用于Arduino的扩展板,它位于顶部,使您可以使用简单的PHP脚本在设备上引发一个简单的WEB服务器,以处理来自网络上其他设备的信息。



此扩展卡的某些型号配备了用于micro-sd存储卡的插槽,除了可以进行远程控制外,还可以进行本地记录。

选项3.与上一个几乎相同,而我最不喜欢。 使用微型计算机 Raspberry Pi。 它是一台计算机。 同意,为完成这项任务挂起一台完整的计算机,尽管这是一个非常薄弱的​​过程-浪费资源。 货币和计算。 就个人而言,我只会将Raspberry Pi用作视频监视服务器或现成的程序来管理Major DoMo等智能家居。 您还可以将其用于诸如即时通讯程序中的机器人程序和用于控制微气候的复杂算法之类的任务,或者在最不可能的情况下,您可以将人工智能放在那里。



如您所见,Raspberry Pi 3具有:

  • 4个USB端口
  • 1个以太网端口;
  • 1个HDMI端口
  • 无线网络
  • DSI接口,用于连接Raspberry Pi显示器和触摸屏;
  • 微型SD卡插槽。

还有更多。 但是,尽管具有所有优点,Raspberry Pi还是不适合作为集线器。

结论: Arduino UNO +以太网盾更适合作为我个人的集线器。 在所有考虑的选项中,这是最便宜,最容易实现的。



在这种配置下,系统的可操作性不取决于集线器。 即使集线器崩溃,也不会影响网络本身的性能。 网络将仅失去对Internet的访问。

我认为第一部分可以完成。 待会见!

Source: https://habr.com/ru/post/zh-CN414225/


All Articles