手头有个arduino小车+703N+ethernet5100:
想不用TTL而用ethernet通过LAN与703N连接,再在PC上通过WIFI连接703N从而连接ARDUINO控制小车,如何实现?
703N 刷OPENWRT;带ser2net,
我用secuireCRT工具通过TELNET可以连接小车,并通过输入相关符号控制小车,成功。
但是想设计一个上位机控制程序,该如何设计?大致设计思路?我的要求很简单,窗体上设计个按钮,按它,发从一个字符(如W),通过WIFI,传到ARDUINO小车,小车识别字符,触发指令,驱动。下一步再说视频吧!
我用论坛中放出的上位机,通过WIFI可以连接我的小车,但是当按键W时,小车没有反映!如何处理?
下位机程序如下:
/********************************************
通过telnet输入经过ethernet控制电机
W正转、X反转
-Ethernet库
使用Arduino控制板、Ethernet Shield扩展板、
IP地址:192.168.1.20
MAC地址:0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
网关:192.168.1.1
子网掩码:255.255.255.0
This example code is in the public domain.
*********************************************/
// 包含SPI库头文件和Ethernet库头文件
#include <SPI.h>
#include <Ethernet.h>
// 定义两个数组用来存储MAC地址和IP地址.
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {192,168,1, 20 };
byte gateway[] = {192,168,1, 1};
byte subnet[] = {255, 255, 255, 0};
// 初始化Ethernet server 库(port 80 is default for HTTP):
EthernetServer server(2001);
/**********************************************
初始化部分——setup函数
**********************************************/
void setup()
{
//SPI接口初始化
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
//由于W5100的外部中断使用引脚3,此处将引脚3置为输出,同时输出高电平
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
// 初始化网络端口
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.begin (9600);
//设置4号引脚为输出,控制直流电机正反转
pinMode(7, OUTPUT);
//设置5号引脚为输出,控制直流电机转速
pinMode(6, OUTPUT);
}
/**********************************************
执行部分——loop函数
**********************************************/
void loop()
{
//侦听
EthernetClient client = server.available();
if (client)
{
while (client.connected())
{
if (client.available())
{
;
byte c = client.read(); // 将输入的BYTE改为INT
if (c == 'W')
{
// 如果输入为w,前进
digitalWrite(7,HIGH);
analogWrite(6,100);
}
else
if (c == 'X')
{
// 如果输入为x,后退
digitalWrite(7,LOW);
analogWrite(6,100);
}
else if (c == 'S')
{
//如果输入为S,停止
digitalWrite(7,LOW);
analogWrite(6,0);
}
break;
}
}
}
}
|