20152浏览
查看: 20152|回复: 23

wifi shield v3应用实例,远程控制arduino引脚电平

[复制链接]
用到的硬件:
DFRduino UNO R3
WIFI扩展板 V3 RPSMA接口


首先是wifi shield v3的设置,直接看图吧,不懂的可以参考这里
wifi shield v3应用实例,远程控制arduino引脚电平图2
这里要输入你自己要连的无线路由和密码,并设置静态IP地址,
这里设置自己的ip为192.168.0.30
wifi shield v3应用实例,远程控制arduino引脚电平图1wifi shield v3应用实例,远程控制arduino引脚电平图3


这里将模式设置为TCP-Server(就是服务器模式),端口号设为8088(自定义)
wifi shield v3应用实例,远程控制arduino引脚电平图4



接着上代码:
  1. /*
  2. *        作者:        lisper (lisper.li@dfrobot.com)
  3. *        使用Uno + WIFI扩展板 V3 RPSMA接口
  4. *        官方产品链接:        https://www.dfrobot.com.cn/goods-861.html
  5. *        功能:        通过电脑wifi控制Arduino Uno的2~13号引脚的电平
  6. *
  7. *        需要的库:        DFRobot_utility
  8. *        下载链接:        https://github.com/DFRobot/DFRobot_utility
  9. *        电脑端需要的软件:putty
  10. *        下载链接:        https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
  11. *        当前wifi shield设为服务器模式
  12. */
  13. #include <DFRobot_utility.h>        //包含DFRobot_utility库头文件
  14. #define RECVBUF_MAX 20        //设定数据缓冲区大小      
  15. #define COMMAND_MAX 2        //设定命令参数的最大长度
  16. uint8_t recvBuf[RECVBUF_MAX];        //声明一个数组用来数据缓存
  17. char* command[COMMAND_MAX];        //声明一个指针数组用来从recbBuf获得多个参数
  18. void setup () {
  19.         Serial.begin (115200);                //设置串口0的波特率为115200,与WIFI SHIELD设置一致
  20.         for (int i=2; i<= 13; i++) {        //设置2~13引脚为输出模式
  21.                 pinMode (i, OUTPUT);
  22.         }
  23. }
  24. void loop () {
  25.         //从Serial最大读入RECVBUF_MAX-1的数据到recvBuf, 超时时间为3毫秒
  26.         int recvLeng = serialReads (Serial, recvBuf, RECVBUF_MAX-1, 3);
  27.         if (recvLeng) {
  28.                 int cmdleng = split (command, (char*)recvBuf, COMMAND_MAX);        //拆分数据为多个命令参数
  29.                 if (cmdleng == 1) {        //如果参数的个数为1
  30.                         if ( strcmp(command[0], "hello") == 0) {        //如果客户端输入hello
  31.                                 Serial.println ("I am here!");                //向客户返回:I am here!
  32.                         }
  33.                 }
  34.                 else if (cmdleng == 2) {        //如果参数的个数为2
  35.                         if (strcmp (command[0], "open") == 0) {        //如果客户端输入的第一个参数为open
  36.                                 int pin = atoi (command[1]);                //将第二个参数转为整数,即引脚号
  37.                                 if (pin >=2  && pin <= 13) {
  38.                                         digitalWrite (pin, HIGH);        //相应引脚输出高电平
  39.                                         Serial.println ("ok");                //向客户返回:ok
  40.                                 }
  41.                         }
  42.                         else if (strcmp (command[0], "close") == 0) {        //如果客户端输入的第一个参数为close
  43.                                 int pin = atoi (command[1]);           //将第二个参数转为整数,即引脚号
  44.                                 if (pin >=2  && pin <= 13) {        
  45.                                         digitalWrite (pin, LOW);                //相应引脚输出低电平
  46.                                         Serial.println ("ok");
  47.                                 }
  48.                         }
  49.                 }
  50.         }
  51. }
复制代码


接着,电脑上打开putty,输入服务器(就是arduino+wifi shield)的IP地址和端口号,Connection type选择Raw
wifi shield v3应用实例,远程控制arduino引脚电平图5

点open,在出现的窗口中输入hello,如果不出意外的话arduino会向我们返回"I am here!"
接着输入open 13,就会点亮13引脚上的led,再输入close 13就会关掉它
wifi shield v3应用实例,远程控制arduino引脚电平图6





nealscut  见习技师

发表于 2015-1-21 17:03:30

lisper 发表于 2015-1-21 10:57
电脑发送的数据会从串口Serial读取到recvBuf里

意思是会默认存在recvBuf里面??
要用SerialRead 命令来读取是吧?
像这样子:
int led1=SerialRead(recvBuf);  //就可以读取recvBuf的数据(wifi发过来的数据)了?

刚刚接触,很多不懂,大神指教
回复

使用道具 举报

nealscut  见习技师

发表于 2015-1-21 10:33:51

电脑用wifi发送的数据会自动存在#define RECVBUF_MAX 20 里面????
uno读取电脑发送数据的语句,是这一句不: int recvLeng = serialReads (Serial, recvBuf, RECVBUF_MAX-1, 3);????
我这样理解对不对?

不懂电脑发送的数据存在uno的哪里,然后用什么样的方式去读取这些数据。
大神求教。
回复

使用道具 举报

Youyou  初级技匠

发表于 2015-1-11 20:45:24

him 发表于 2015-1-8 20:48
为什么我在putty里面收不到i am here呢,我用ide的串口监视器发hello是可以的,putty会打印监视器发的hello ...

端口连接成功了吗?还有看看开关是不是打在arduino端?
回复

使用道具 举报

lauren  高级技师

发表于 2014-7-5 02:34:58

不明觉厉,LZ什么是合法字符?。
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2014-7-5 11:23:17

lauren 发表于 2014-7-5 02:34
不明觉厉,LZ什么是合法字符?。

C中的字符串以数值0结尾,之前说过了。。。
回复

使用道具 举报

ntgeralt  见习技师

发表于 2014-7-13 10:24:09

不错
我也玩wifi板,推荐你在手机安装wifi tcp/udp controller应用,玩法更多
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2014-7-13 16:06:05

ntgeralt 发表于 2014-7-13 10:24
不错
我也玩wifi板,推荐你在手机安装wifi tcp/udp controller应用,玩法更多

我没有安卓手机。。。
回复

使用道具 举报

bty2000  见习技师

发表于 2014-8-7 19:25:16

为什么我的板卡插上之后,笔记本找不到wifi shield v3 的网络呢
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2014-8-7 20:50:36

bty2000 发表于 2014-8-7 19:25
为什么我的板卡插上之后,笔记本找不到wifi shield v3 的网络呢

是不是改名了?
回复

使用道具 举报

bty2000  见习技师

发表于 2014-8-8 08:41:45

lisper 发表于 2014-8-7 20:50
是不是改名了?

改成什么了 看了一下都不像么:(
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2014-8-8 09:29:44

bty2000 发表于 2014-8-8 08:41
改成什么了 看了一下都不像么

你没改应该就没有改,你确定wifi扩展板有电?
回复

使用道具 举报

bty2000  见习技师

发表于 2014-8-8 10:43:17

lisper 发表于 2014-8-8 09:29
你没改应该就没有改,你确定wifi扩展板有电?

有的啊 除了link灯没有亮,其它pwr和ready灯都亮了啊
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2014-8-10 11:33:43

bty2000 发表于 2014-8-8 10:43
有的啊 除了link灯没有亮,其它pwr和ready灯都亮了啊

那就不清楚了
回复

使用道具 举报

him  见习技师

发表于 2015-1-8 20:48:21

为什么我在putty里面收不到i am here呢,我用ide的串口监视器发hello是可以的,putty会打印监视器发的hello这是为什么?哪里设置错了?
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2015-1-21 10:57:31

电脑发送的数据会从串口Serial读取到recvBuf里
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2015-1-21 10:57:52

nealscut 发表于 2015-1-21 10:33
电脑用wifi发送的数据会自动存在#define RECVBUF_MAX 20 里面????
uno读取电脑发送数据的语句,是这一 ...

电脑发送的数据会从串口Serial读取到recvBuf里
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2015-1-22 12:06:59

nealscut 发表于 2015-1-21 17:03
意思是会默认存在recvBuf里面??
要用SerialRead 命令来读取是吧?
像这样子:

不行,只能这么写int recvLeng = serialReads (Serial, recvBuf, RECVBUF_MAX-1, 3);
回复

使用道具 举报

shazhengq  学徒

发表于 2015-4-30 12:51:22

版主您好!看了你的文章用处很大。就是有一点,按照您的方法试验结果发现,用串口监视器可以控制,通讯调试软件可以收到返回信息。但是通讯调试软件不能发送信息,LED无法点亮。求解~~~
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2015-5-3 19:20:50

shazhengq 发表于 2015-4-30 12:51
版主您好!看了你的文章用处很大。就是有一点,按照您的方法试验结果发现,用串口监视器可以控制,通讯调试 ...

你用的什么通讯调试软件?为什么不能发送信息?
回复

使用道具 举报

shazhengq  学徒

发表于 2015-5-4 09:00:30

lisper 发表于 2015-5-3 19:20
你用的什么通讯调试软件?为什么不能发送信息?

谢谢您的回答,就是您介绍的软件。要不您给个联系方式,我截图给您。实在是万分感谢~~~~~~~
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail