小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 7416|回复: 5

arduino小车+703N:用ethernet通过LAN与703N连接,WIFI直接控制小车?

[复制链接]
发表于 2013-4-8 00:50:18 | 显示全部楼层 |阅读模式
手头有个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;
             }
      }
    }
   
  }

回复

使用道具 举报

发表于 2013-4-8 23:21:05 | 显示全部楼层
个人觉得使用arduino扩展板ethernet控制有点浪费了。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-9 01:04:47 | 显示全部楼层
扩展板ethernet W5100是套装中的,不用白不用。谢谢!
已解决!还是上位机程序的问题:
网络真伟大!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;


  

namespace MyProject

{
     public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //W前进
            IPAddress P = IPAddress.Parse("192.168.1.20");
            IPEndPoint IP = new IPEndPoint(P, 2001);
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            s.Connect(IP);//连接服务器
            byte[] bytes = new byte[8];
            String str = "W";
            bytes = System.Text.Encoding.Default.GetBytes(str);//类型转换:string 转byte[]
            s.Send(bytes);//向服务器发送数据

        }

}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-9 01:08:09 | 显示全部楼层
w5100ethernet sheild是套装中的,不用白不用,而且不用改造703N;
问题已解决,是上位机程序的问题。谢谢版主。一定先搞清SOCKETS;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;


  

namespace MyProject

{
     public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //W前进
            IPAddress P = IPAddress.Parse("192.168.1.20");
            IPEndPoint IP = new IPEndPoint(P, 2001);
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            s.Connect(IP);//连接服务器
            byte[] bytes = new byte[8];
            String str = "W";
            bytes = System.Text.Encoding.Default.GetBytes(str);//类型转换:string 转byte[]
            s.Send(bytes);//向服务器发送数据

        }

}
回复 支持 反对

使用道具 举报

发表于 2014-12-29 13:20:34 | 显示全部楼层
你好 ,看了你的帖子 arduino小车+703N:用ethernet通过LAN与703N连接,WIFI直接控制小车?
我也想做同样的小车控制端,可否分享下你的arduino library程序?谢谢先!
回复 支持 反对

使用道具 举报

发表于 2014-12-30 17:04:07 | 显示全部楼层
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;


  

namespace MyProject
这一串是用在哪里的,求解!
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-4-25 21:03 , Processed in 1.084961 second(s), 19 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表