我正在尝试在 Arduino Mega 的帮助下使用 MDB 协议与自动售货机通信,我在这方面取得了部分成功。
我正在使用的电路附在这里
虽然电路图如下所示
Arduino Mega 通过 Serial 1 与笔记本电脑通信,自动售货机通信通过 Arduino Mega 的 Serial 2 完成。
USART被用于通信。
我面临的奇怪问题是,与自动售货机的通信只有在棕色线 A 和 B 最初未连接时才开始发送数据(它们将 Arduino TX 连接到自动售货机 RX)。一旦我看到来自自动售货机的数据,我将 A 和 B 线短接,Arduino 也开始向自动售货机发送数据。
但是如果 A 线和 B 线在自动售货机的启动处连接,自动售货机不会向 Arduino 发送任何数据,因此不会发生通信。我想让它工作,而无需每次都手动连接 A 线和 B 线。
我已经尝试将光耦 PC817C 替换为
- PC814
- 4N35
- 6N137 高速光耦
我尝试用 Hex Inverter 替换
- 74HC04AP
我尝试在 A 线和 B 线之间放置一个机械继电器,然后是固态继电器,并尝试通过外部输入连接它们,但没有任何反应。
我厌倦了在 A 线和 B 线之间添加一个光耦合器作为开关,并尝试通过固件控制它。
我什至尝试用十六进制缓冲器 HCF4050BE 和一个非门替换十六进制逆变器,但无论提到的组件的任何组合如何,问题都是一样的,只有当导线 A 和 B 最初没有连接,然后一旦数据开始来自自动售货机。
我正在使用MateDealer 的代码。
我想自动化这个手动过程,需要一个简单的解决方案。