邵林寺 发表于 2014-3-2 08:11:42

自问自答“帮忙给点意见,关于arduino之间互相通讯问题”

本帖最后由 邵林寺 于 2014-3-2 15:09 编辑

最近想做无线的开关,要求A通过无线发送数据给B和C,B和C执行完数据后依次返回执行结果给A.
找了好久也没找到合适的模块,蓝牙串口不合适,315模块、433模块试过,不稳定。24L01貌似只能单发多收。
希望了解的给指一条路。。。。。
17137



也是没有多少人回复,所以这周末自己研究了433Mhz和315Mhz的模块,大家都知道用RCSwitch.h库可以实现单发多收。
然后重点回传问题:库里边单发和单收的例子如果放在一起,要么只能收,要么只能发射,,,,,无语加郁闷。。。后来看到“蓝牙到433MHz无线通讯中转盒” 这篇文章,仔细阅读,然后看了代码,深受启发啊啊啊啊,,在这里感谢“Alexie ”的无私奉献。

自己考虑是否可以自己写一个简单的通讯协议,说做就做:其实很简单:
1.模块默认--主从都处在无线接收状态
2.主模块有外部触发,转为发送状态---发送数据完成---主模块转为接收---等待从模块返回结果---判断---正确复位,错误重发/报警。
3.从模块接收数据---从模块执行命令完成---转为发送状态---发送当前状态。
4.从模块有外部触发---从模块执行触发完成,转为发送状态--发送当前状态完成---等待主模块返回信息--判断--正确复位,错误重发/报警。
5.轮询,主模块发送轮询信号----从模块接收后回传状态信号----主模块判断回传信息---正确复位,错误重发/报警。


存在的缺陷:1.协议过于简单
            2.存在通讯冲突问题。但对于要求不高的场合,冲突就冲突吧,够用即可。
            3.最大的缺点就是造价太便宜了。。。适合平民化玩玩。
            

eddiewwm 发表于 2014-3-2 13:27:43

一股百多業通訊距離來說,SI4432無線模塊應可應付。

邵林寺 发表于 2014-3-2 14:45:33

eddiewwm 发表于 2014-3-2 13:27 static/image/common/back.gif
一股百多業通訊距離來說,SI4432無線模塊應可應付。

对谢,多谢。。。。。

Rayne_Hwang 发表于 2014-3-3 19:17:29

24L01可以多发一收的,最多可以支持SERVER节点开六个通道,因为你是轮询方式请求数据,不会出现包冲突的情况。如果开启自动应答的话,你协议里面的重发机制可以硬件完成的。至于距离问题,PCB天线0dBm一般来说二三十米问题不大,用SMA天线距离更长。就酱。

邵林寺 发表于 2014-3-3 22:12:59

Rayne_Hwang 发表于 2014-3-3 19:17 static/image/common/back.gif
24L01可以多发一收的,最多可以支持SERVER节点开六个通道,因为你是轮询方式请求数据,不会出现包冲突的情况 ...

嗯,24l01已经淘宝订货了,正在路上,等到了研究一下,有不会的地方还请多多指教

cciew 发表于 2015-3-13 23:12:29

请问,协议最后写好了,正好碰上类似问题,请教了!

cciew 发表于 2015-3-14 22:59:48

继续求助!

邵林寺 发表于 2015-3-16 15:27:26

还真的写好了,需要的话加我qq吧
247196451
页: [1]
查看完整版本: 自问自答“帮忙给点意见,关于arduino之间互相通讯问题”