制作特效装备

物联网 树莓派 阿杜伊诺 节点红色
2021-06-23 07:55:07

我不确定这是否是最好的提问地点,但我会尝试一下。我构建的机制用于商业广告、电视节目、橱窗展示、多媒体艺术等。它们通常涉及对继电器、螺线管、步进电机、直流电机等的电子控制。通常有不到 10 个输出,但它会有所不同。有时需要输入,例如限位开关。

我通常只是为特定应用程序编写一个 arduino。这工作正常,但我想要一个可以快速重复用于不同应用程序并可以提供其他功能的设置。我喜欢使用某种类型的可视化编程语言(如 node red 或 max/msp)的想法。这将使我更容易(不是一个伟大的程序员,也不总是能够挖掘最新的 arduino 草图)即时进行更改。我也喜欢创建 guis/dashboards 的能力,比如 node red 中的那些,这将允许客户登录并能够自己调整东西,这看起来很容易而且看起来很专业。

我想知道这里的人们是否可以提出任何建议,这是我正在考虑的:

  • 带有节点红色的树莓派控制运行着firmata的arduino
  • 树莓派与 node-red 使用 gpio 直接控制事物
  • 运行 live/maxmsp 的 PC 使用 maxuino 控制 arduino
  • 某种PLC/智能继电器?
  • 触摸设计师?touchOSC 或其他我没有想到的东西?

任何建议,将不胜感激

更新:感谢您的建议。我倾向于类似的东西,虽然是有线的,因为组件靠得很近。我只是不确定使用节点红色控制步进器的最有效方法。我现在正在为一个商业广告做两种设置,我正在尝试两种不同的系统。一个是一组按顺序控制气动装置的螺线管。另一个主要是步进电机和几个继电器。对于主要是简单的继电器/电磁阀开/关的气动装置,我在 pi 上使用 node-red 进入运行 Firmata 的 arduino mega。对于主要是步进器的镜头,我使用了一个 velocio.net plc,它本机控制步进器。我更喜欢将 node-red 用于步进器,但 velocio 似乎更容易,我希望你能得到其他证明。我希望步进器速度/位置的控制尽可能多地处于红色节点,但又不会使流程变得复杂。有任何想法吗?

2个回答

我会制作很多wifi模块。然后,您可以使用各种更高级别的工具(例如 node-red)来快速对复杂的动作和反应进行排序。

将 ESP8266 连接到所有东西,并在固件中为每个东西提供一个通用的低级 rest API。对于继电器模块,这可能支持三个端点:/on/off,和/toggle温度传感器可能有类似/read/f. 无论如何,编写这样的固件来完成最基本的功能是微不足道的。

有些可能需要推出操作,这需要在每个设备的固件中保存一个服务器 url。例如,按钮固件可能有一个“reportingURL”配置字段,当按下按钮时,按钮会向服务器发送一个 HTTP/WS/MQTT 数据包,并带有类似ping(reportingURL + "?id=btn"+String(myDevID)+"&state=pressed").

无论如何,一旦您将所有东西都连接到网络,使用 node-red 或其他任何东西都非常简单;您只需根据需要拖动并连接动作和反应。您可以在功能强大的漂亮 GUI 中完成所有繁重的工作,而不是在 C++ 中。操作更简单,只需很少的固件升级,而且非常灵活。

想要在双击按钮而不是单击时将电机更改为停止吗?只需编辑 node-red 并重新部署,无需闪烁,无需困难的调试,也无需为每个项目定制 C++ 代码。

如果我是你,我会做以下事情:

  • 选择一个负责向对方询问信息的主人
  • 选择一个你熟悉的奴隶,他们将负责回应主人
  • 选择你熟悉的通讯协议
  • 枚举您可以使用的所有模块

现在,您想要的灵活性越大,您的代码就会变得越复杂。如果我必须这样做,我可能会选择 ESP 和树莓派作为主控。

  • 我会为您将与 ESP(ADC/DAC/电机)一起使用的任何可能的模块编写某种驱动程序。

例如,master 需要对它拥有的每个 slave 进行描述,它需要知道它是否可以读取,是否可以写入以及什么。

您还可以使用从站的大固件来改进此解决方案,其中主站还可以向从站描述从站连接的内容。例如,主人将使用一个函数,例如:

  • 声明_slave_ADC(slave0,I2C_Addr);
  • 声明_slave_motor(slave0, GPIO0, GPIO1);
  • read_slave_ADC(slave0, I2C_Addr);
  • set_slave_motor_speed(slave0, GPIO0, GPIO1);
  • set_slave_GPIO(slave0, GPIO_1, 0);

为了便于使用,我会选择大型单片固件,但您可以逐步使用。

在那之后,您可以在主服务器上添加任何类型的 UI 来控制所有这些,但不幸的是,对于这部分,我没有任何建议,但运行网络服务器可能是一个好主意,以便它可以访问从任何地方,几乎可以使用网络浏览器的任何东西。