Arduino UNO和wifi shield v3的通讯问题

2014-06-081.1万
AI 快速预览详细 收起
本文讨论了Arduino UNO与WIFI Shield V3之间的TCP消息接收问题。作者发现通过串口可以正常通讯,但通过WiFi发送的消息无法正确返回,且接收到的字符为非ASCII码。文章提供了详细的故障排查方法,包括在loop中持续打印信息以保持WiFi通讯畅通,或先用串口工具连接后再进行WiFi通讯。这些方法有助于解决TCP通讯问题,确保项目的顺利进行。


首先提一个问题:
我知道Arduino可以通过Serial.print给TCP Client发送消息,但是不知道arduino能否接收到client发送的消息?
如果可以的话,我在使用的过程中遇到了下面两个问题:
1、用产品官方文档的测试代码https://wiki.dfrobot.com.cn/index.php/(SKU:TEL0078)WIFI_Shield_V3_PCB_Antenna_WIFI%E6%89%A9%E5%B1%95%E6%9D%BF_V3_PCB%E5%A4%A9%E7%BA%BF
可以通过串口进行通讯,就是我用串口对板子说什么,板子可以把我说的内容回复过来,显示在IDE的串口调试工具上,但是我使用TCP工具的时候,可以接受到板子setup函数里print的内容,却不能返回我通过wifi发送给板子的内容。
2、我用一些其他的代码进行测试,比如:
  1. void setup(){
  2.   Serial.begin(19200);
  3.   delay(100);
  4.   Serial.println("Start!");
  5. }
  6. void loop(){
  7.   int a = Serial.available();
  8.   Serial.println(a);
  9.     if (a > 0) {
  10.       int val = Serial.read();
  11.       Serial.println(val);
  12.       Serial.println("-------------------------------");
  13.     }
  14.   delay(1);
  15. }
复制代码


发现板子是可以接收到信息的,我输入1、2,但是给我返回的信息都是什么255、238这类的数字,很明显不是ASC2码。
另外在这个测试中还发现一点,就是我必须在loop中一直打印东西,比如Serial.println(a);,才能保证我用wifi可以发送消息,否则的话必须先用串口工具connect一下,才能接受到loop返回的信息。


希望在这里能得到一些有用的信息,谢谢!

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
Grey
Grey
是不是波特率的问题?wifi的空中波特率默认是115200,我看到你程序里面是19200,不是很确定空中波特率和串口是不是一定要一致。
另外你把wifi shield 设置为了服务器模式 还是客户端模式,能不能把其他设置的那张截图给贴出来一下。wiki中都有两个模式的介绍,可以参考一下
wifi shield工作在服务器模式:https://wiki.dfrobot.com.cn/index.php/(SKU:TEL0079)WIFI_Shield_V3_RPSMA_WIFI%E6%89%A9%E5%B1%95%E6%9D%BF_V3_PRSMA%E6%8E%A5%E5%8F%A3#wifi_shield.E5.B7.A5.E4.BD.9C.E4.BA.8ETCP-Server.E6.A8.A1.E5.BC.8F
wifi shield工作在客户端模式:https://wiki.dfrobot.com.cn/index.php/(SKU:TEL0079)WIFI_Shield_V3_RPSMA_WIFI%E6%89%A9%E5%B1%95%E6%9D%BF_V3_PRSMA%E6%8E%A5%E5%8F%A3#wifi_shield.E5.B7.A5.E4.BD.9C.E4.BA.8ETCP-Client.E6.A8.A1.E5.BC.8F[font=Helvetica, Tahoma, Arial, STXihei, ����ϸ��, Heiti, ����,]
[/font]
[font=Helvetica, Tahoma, Arial, STXihei, ����ϸ��, Heiti, ����,]wifi tcp client发送可以试一下putty这个软件,这边有一个wifi bee 用putty与PC端进行通信的例子,楼主可以参考一下:[/font]
https://wiki.dfrobot.com.cn/index.php/(SKU:TEL0067)Wifi_Bee%E6%97%A0%E7%BA%BF%E6%A8%A1%E5%9D%97#Wifi_Bee.E6.A8.A1.E5.9D.97.E4.B8.8EPC.E5.AE.A2.E6.88.B7.E7.AB.AF.E8.BF.9E.E6.8E.A5
Grey
Grey回复djhdder
可以尝试一下,用手机去连接,我用我自己的无线网卡的时候,折腾了很久才连上,但后来换成别人的,一连就通,那个叫郁闷啊,现在都是用手机去连的,配置完参数后,在局域网去访问它的ip地址
djhdder
djhdder回复Grey
我想问一下你的 wifi模块V3 发送出来那个无线信号 第一次就能连上吗? 我的电脑能搜到那个无线网 但是我连不上去。。谢谢
lauren
lauren
通过arduino调试助手发送字符串会有问题吗?
sanghongwei
sanghongwei
作者
回复lauren
串口发送没问题,通过wifi tcp client发送就收不到了
sanghongwei
sanghongwei
作者

我用tcp发送12345,返回的都是什么236、255,但是用串口就是正常的

串口调试返回的就是49没问题
- 没有更多了 -