wifi shield v3应用实例,远程控制arduino引脚电平
用到的硬件:DFRduino UNO R3
WIFI扩展板 V3 RPSMA接口
首先是wifi shield v3的设置,直接看图吧,不懂的可以参考这里
这里要输入你自己要连的无线路由和密码,并设置静态IP地址,
这里设置自己的ip为192.168.0.30
这里将模式设置为TCP-Server(就是服务器模式),端口号设为8088(自定义)
接着上代码:/*
* 作者: lisper (lisper.li@dfrobot.com)
* 使用Uno + WIFI扩展板 V3 RPSMA接口
* 官方产品链接: https://www.dfrobot.com.cn/goods-861.html
* 功能: 通过电脑wifi控制arduino Uno的2~13号引脚的电平
*
* 需要的库: DFRobot_utility
* 下载链接: https://github.com/DFRobot/DFRobot_utility
* 电脑端需要的软件:putty
* 下载链接: https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
* 当前wifi shield设为服务器模式
*/
#include <DFRobot_utility.h> //包含DFRobot_utility库头文件
#define RECVBUF_MAX 20 //设定数据缓冲区大小
#define COMMAND_MAX 2 //设定命令参数的最大长度
uint8_t recvBuf; //声明一个数组用来数据缓存
char* command; //声明一个指针数组用来从recbBuf获得多个参数
void setup () {
Serial.begin (115200); //设置串口0的波特率为115200,与WIFI SHIELD设置一致
for (int i=2; i<= 13; i++) { //设置2~13引脚为输出模式
pinMode (i, OUTPUT);
}
}
void loop () {
//从Serial最大读入RECVBUF_MAX-1的数据到recvBuf, 超时时间为3毫秒
int recvLeng = serialReads (Serial, recvBuf, RECVBUF_MAX-1, 3);
if (recvLeng) {
int cmdleng = split (command, (char*)recvBuf, COMMAND_MAX); //拆分数据为多个命令参数
if (cmdleng == 1) { //如果参数的个数为1
if ( strcmp(command, "hello") == 0) { //如果客户端输入hello
Serial.println ("I am here!"); //向客户返回:I am here!
}
}
else if (cmdleng == 2) { //如果参数的个数为2
if (strcmp (command, "open") == 0) { //如果客户端输入的第一个参数为open
int pin = atoi (command); //将第二个参数转为整数,即引脚号
if (pin >=2&& pin <= 13) {
digitalWrite (pin, HIGH); //相应引脚输出高电平
Serial.println ("ok"); //向客户返回:ok
}
}
else if (strcmp (command, "close") == 0) { //如果客户端输入的第一个参数为close
int pin = atoi (command); //将第二个参数转为整数,即引脚号
if (pin >=2&& pin <= 13) {
digitalWrite (pin, LOW); //相应引脚输出低电平
Serial.println ("ok");
}
}
}
}
}
接着,电脑上打开putty,输入服务器(就是arduino+wifi shield)的IP地址和端口号,Connection type选择Raw
点open,在出现的窗口中输入hello,如果不出意外的话arduino会向我们返回"I am here!"
接着输入open 13,就会点亮13引脚上的led,再输入close 13就会关掉它
lisper 发表于 2015-1-21 10:57
电脑发送的数据会从串口Serial读取到recvBuf里
意思是会默认存在recvBuf里面??
要用SerialRead 命令来读取是吧?
像这样子:
int led1=SerialRead(recvBuf);//就可以读取recvBuf的数据(wifi发过来的数据)了?
刚刚接触,很多不懂,大神指教
电脑用wifi发送的数据会自动存在#define RECVBUF_MAX 20 里面????
uno读取电脑发送数据的语句,是这一句不: int recvLeng = serialReads (Serial, recvBuf, RECVBUF_MAX-1, 3);????
我这样理解对不对?
不懂电脑发送的数据存在uno的哪里,然后用什么样的方式去读取这些数据。
大神求教。 him 发表于 2015-1-8 20:48
为什么我在putty里面收不到i am here呢,我用ide的串口监视器发hello是可以的,putty会打印监视器发的hello ...
端口连接成功了吗?还有看看开关是不是打在arduino端? 不明觉厉,LZ什么是合法字符?。 lauren 发表于 2014-7-5 02:34
不明觉厉,LZ什么是合法字符?。
C中的字符串以数值0结尾,之前说过了。。。 不错
我也玩wifi板,推荐你在手机安装wifi tcp/udp controller应用,玩法更多 ntgeralt 发表于 2014-7-13 10:24
不错
我也玩wifi板,推荐你在手机安装wifi tcp/udp controller应用,玩法更多
我没有安卓手机。。。 为什么我的板卡插上之后,笔记本找不到wifi shield v3 的网络呢
bty2000 发表于 2014-8-7 19:25
为什么我的板卡插上之后,笔记本找不到wifi shield v3 的网络呢
是不是改名了? lisper 发表于 2014-8-7 20:50
是不是改名了?
改成什么了 看了一下都不像么:( bty2000 发表于 2014-8-8 08:41
改成什么了 看了一下都不像么
你没改应该就没有改,你确定wifi扩展板有电? lisper 发表于 2014-8-8 09:29
你没改应该就没有改,你确定wifi扩展板有电?
有的啊 除了link灯没有亮,其它pwr和ready灯都亮了啊 bty2000 发表于 2014-8-8 10:43
有的啊 除了link灯没有亮,其它pwr和ready灯都亮了啊
那就不清楚了 为什么我在putty里面收不到i am here呢,我用ide的串口监视器发hello是可以的,putty会打印监视器发的hello这是为什么?哪里设置错了? 电脑发送的数据会从串口Serial读取到recvBuf里 nealscut 发表于 2015-1-21 10:33
电脑用wifi发送的数据会自动存在#define RECVBUF_MAX 20 里面????
uno读取电脑发送数据的语句,是这一 ...
电脑发送的数据会从串口Serial读取到recvBuf里 nealscut 发表于 2015-1-21 17:03
意思是会默认存在recvBuf里面??
要用SerialRead 命令来读取是吧?
像这样子:
不行,只能这么写int recvLeng = serialReads (Serial, recvBuf, RECVBUF_MAX-1, 3); 版主您好!看了你的文章用处很大。就是有一点,按照您的方法试验结果发现,用串口监视器可以控制,通讯调试软件可以收到返回信息。但是通讯调试软件不能发送信息,LED无法点亮。求解~~~ shazhengq 发表于 2015-4-30 12:51
版主您好!看了你的文章用处很大。就是有一点,按照您的方法试验结果发现,用串口监视器可以控制,通讯调试 ...
你用的什么通讯调试软件?为什么不能发送信息? lisper 发表于 2015-5-3 19:20
你用的什么通讯调试软件?为什么不能发送信息?
谢谢您的回答,就是您介绍的软件。要不您给个联系方式,我截图给您。实在是万分感谢~~~~~~~
页:
[1]
2