【STM32 .Net MF开发板学习-17】Wifi遥控智能小车

恰好以前购买的一个PDAWifi功能,所以与其用PC通过Zigbee控制智能小车,不如用PDA来控制,这样更为方便,不过由于目前.NET MF开发板不直接支持Wifi功能,所以我们也只好间接控制了,也就是PDA控制PCPC通过Zigbee控制智能小车。

对我们开发者来说,Wifi和普通的网线接口一样,都是Socket编程。我们只需用在PDA上构建一个简单的TCP Client端,在PC构建一个TCP Server端即可,PDA发送相关指令,PC接收后通过Zigbee转发给智能小车。

PDA ===> WifiTCP/IP ===> PC ===> Zigbee(串口232/TTL) ===> 智能小车

PC通过Zigbee控制智能小车,在我的上篇博文《Zigbee遥控智能小车》已有介绍,所以这里就略过不提了。

我们先开发PDA上的程序(操作系统Windows Mobile 5.0),开发语言我们选择C#,相关代码如下:

public frmMain()

{

InitializeComponent();

Connect("192.168.1.2", 7722);

}

public void Connect(string server,int port)

{

sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

if (ipEndPoint != null) sock.Connect(GetEndPoint(server, port));

}

private void btnForward_Click(object sender, EventArgs e)

{

if (sock != null) sock.Send(new byte[] {48});

}

private void btnLeft_Click(object sender, EventArgs e)

{

if (sock != null) sock.Send(new byte[] { 49 });

}

private void btnRight_Click(object sender, EventArgs e)

{

if (sock != null) sock.Send(new byte[] { 50 });

}

private void btnBack_Click(object sender, EventArgs e)

{

if (sock != null) sock.Send(new byte[] { 51 });

}

private void btnStop_Click(object sender, EventArgs e)

{

if (sock != null) sock.Send(new byte[] { 52 });

}

编译运行后的效果图如下:

完成PDA上的编程,我们改造一下《Zigbee遥控智能小车》中提到的PC Zigbee通信程序,我们把相关TCP服务代码加入其中,相关代码如下:

listener = new TcpListener(IPAddress.Parse(ip),7722);

listener.Start();

Thread thread = new Thread(new ThreadStart(StartSocketListen));

thread.IsBackground = true;

thread.Start();

private void StartSocketListen()

{

while (true)

{

try

{

//当接收到一个客户端请求时,确认与客户端的连接

if (listener.Pending())

{

socket = listener.AcceptSocket();

//开辟线程(启动相关通信服务)

Thread threadServer = new Thread(new ThreadStart(ServiceRun));

threadServer.IsBackground = true;

threadServer.Start();

}

}

catch //(Exception ex)

{

socket = null;

}

Thread.Sleep(200);

}

}

private void ServiceRun()

{

//接收数据并存入buff数组中

byte[] buff = new byte[1024];

while (true)

{

if (socket != null)

{

if (socket.Available > 0)

{

//接收数据

socket.Receive(buff, socket.Available, SocketFlags.None);

switch (buff[0])

{

case 48:

serial.Write("0");

serial.DiscardInBuffer();

break;

case 49:

serial.Write("1");

serial.DiscardInBuffer();

break;

case 50:

serial.Write("2");

serial.DiscardInBuffer();

break;

case 51:

serial.Write("3");

serial.DiscardInBuffer();

break;

case 52:

serial.Write("4");

serial.DiscardInBuffer();

break;

}

}

}

Thread.Sleep(100);

}

}

运行PC程序,建好Zigbee通道,我们就可以用PDA来控制智能小车了。

相关控制视频如下:

http://video.sina.com.cn/v/b/40292055-1804832611.html

1)、小车底盘

http://item.taobao.com/item.htm?id=7218838776

2)、四路直流电机驱动器

http://item.taobao.com/item.htm?id=7218717808

3)、.NET Micro Framework开发板

http://item.taobao.com/item.htm?id=7117999726

注:需要红牛开发板固件在 V1.0.0以上

本文源码1http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/PCZigbee_Socket.rar

本文源码2http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/PDASocket_wifi.rar

MF快速参考: .NET Micro Framework 快速入门

MF中文讨论组:http://space.cnblogs.com/group/MFSoft/

微软官方论坛:MSDN微软中文技术论坛(.NET Micro Framework)

开发板简明手册:http://blog.sina.com.cn/s/blog_6b938f630100kh0k.html

【低价开发板】http://item.taobao.com/item.htm?id=7117999726

Wifi遥控小车使用说明: 本例程采用ESP8266 wifi模块与STM32串口连接,并提供AT指令封装库与STM32通讯,实现如下的通讯方式: 1、硬件部分 Wifi模块丝印图即引脚如下: 硬件连接如下: 2、手机APP部分 APP部分我们采用常用的APP wifi调试软件 ITEAD WIFI,安装完成后打开 如下界面,点击Set up进入设置: 进入后会自动获取到手机的IP,注意手机是连接到一个路由器下的,支持局域网内调试,先设置端口,一般是 8080 然后设置指令,我们使用到了如下红框内的指令,指令协议可以参考工程文件interface.h有如下描述: //指令定义 #define COMM_STOP 'I'//停止 #define COMM_UP 'A'//前进 #define COMM_DOWN 'B'//后退 #define COMM_LEFT 'C'//左转 #define COMM_RIGHT 'D'//右转 指令设置好之后就可以启动服务了,如下点击开始就好了 设置完成后如下,这里记下服务端IP和端口号,我这里是 192.168.31.195,端口 8080 ,然后返回: 3、stm32软件部分 设置完APP软件后,再来修改我们的工程文件,打开工程“wifi遥控小车”,打开main.c文件,修改红框内信息: HOST_NAME和HOST_PORT为手机上面的IP和端口号,SSID为您的路由器名,PSD为路由器密码,修改好后重新编译后下载。 下载完成复位一下,就可以运行了,程序会自动连接手机开启的服务,实现TCP/IP通信,连接成功后,看手机端的设置会有如下提示: 本程序还是用了串口1来输出调试信息,将串口1连接电脑后也会在串口调试助手看到如下信息: 连接成功后即可在如下界面按键,操作小车运行:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值