由于项目的需要,需要一个水上 stm32 单片机与水下的电子仓里面的 stm32 进行通讯。
我的思路是这样的,先不考虑距离传输,直接采用串口进行传输。
然后我的思路是,采用 对串口进行配置,因为是全双工的,所以我想法是利用串口 ttl 模块
通过查阅资料,一般的串口通讯 ttl 能传播的距离为 10m 左右,对于水下机器人的传播距离显然不适用,所以之后我们会采用 485 模块,通过 485 模块,将水下机器人的传播距离增大至 1km.
之前测试的时候,我是想通过 ttl 模块,直接对单片机发送 16 进制的数据,测试 hal 库的中断接收好不好用,但是在测试的过程中,我发现,通过 ttl 模块对单片机发送的数据和在 hal 里面,调用发送中断函数,其发送的 16 进制的数据,并不一样,在这个地方。我卡了好久,
现在考虑怎么把控制速度和舵机的进行融合,我们可以这样。
在接受中断里面,通过接收中断,把舵机的信号接收,然后通过判断其正确之后,我们将其和单片机采集的 ADC 值进行融合,然后发送数据包,通过 485 发送给水下单片机,从而操作其工作。