用无线插板控制RC(远程遥控)小车
来源:互联网 发布:华为软件开发云 编辑:程序博客网 时间:2024/04/28 05:35
多亏了它的开源平台和易用的软件&硬件,在线有详细的数以千计的Arduino项目,供每个爱好者享用。这个项目展示了,如何改装一个不昂贵的RC小车套件,并可以用网络界面控制。你可以在这个Arduino板子上编程,让这个小车实现任意方向的行驶~
第一步:备齐材料
来自Sparkfun的迷你Bot套件
我使用了如下材料:
- Sparkfun的迷你Bot套件:ProtoSnap MiniBot提供一个Arduino兼容控制器,发动机控制器板,红外接近传感器&大量的原型空间都在一个单板上。
- WIZnet的无线插板:WizFi插板利用完全认证的WizFi210无线模块,提供Arduino无线功能。SPI接口用来提供更快的传输速度&空出Arduino UART接口。所有的软件&硬件的材料都是免费且开源的
- 锂电池
第二步:将WizFi插板与迷你Bot套件连接
要用Wi-Fi控制RC小车,我们需要6个GPIO和1个模拟引脚(如下)。
描述
Arduino 兼容板
WizFi 插板
SCLK
D13
JP2.13
MISO
D12
JP2.12
MOSI
D11
JP2.11
/SS_WIFI
D10
JP2.4
Data_ready
D9
JP2.3
WIFI_RST
D8
JP2.2
电池电压检测器
A2
分压后
连接电池输出
第三部:代码
Sparkfun的教程使用3个引脚来控制,但是我们需要6个引脚来分别控制两个轮子。代码如下:
#define LEFT_PWM 3#define LEFT_1 4#define LEFT_2 2#define RIGHT_PWM 6#define RIGHT_1 5#define RIGHT_2 7void pinSetup(){ // Motor control pins- the PWM pins are speed control while the other pins // control the "mode" of operation- forward, reverse, stop, brake. These // functions are abstracted in some utility functions below, so a user need // only call the "driveFwd()" function, eg, to move the robot forward. pinMode(LEFT_PWM, OUTPUT); pinMode(LEFT_1, OUTPUT); pinMode(LEFT_2, OUTPUT); pinMode(RIGHT_PWM, OUTPUT); pinMode(RIGHT_1, OUTPUT); pinMode(RIGHT_2, OUTPUT);}void driveStop(){ rightStop(); leftStop();}void rightStop(){ digitalWrite(RIGHT_1, LOW); digitalWrite(RIGHT_2, LOW); analogWrite(RIGHT_PWM, 0);}void leftStop(){ digitalWrite(LEFT_1, LOW); digitalWrite(LEFT_2, LOW); analogWrite(LEFT_PWM, 0);}void moveForward(){ rightFwd(); leftFwd();}void moveBackward(){ rightBwd(); leftBwd();}void turnRight(){ rightBwd(); leftFwd();}void turnLeft(){ rightFwd(); leftBwd();}void rightFwd(){ digitalWrite(RIGHT_1, LOW); digitalWrite(RIGHT_2, HIGH); analogWrite(RIGHT_PWM, current_speed);}void rightBwd(){ digitalWrite(RIGHT_1, HIGH); digitalWrite(RIGHT_2, LOW); analogWrite(RIGHT_PWM, current_speed);}void leftFwd(){ digitalWrite(LEFT_1, LOW); digitalWrite(LEFT_2, HIGH); analogWrite(LEFT_PWM, current_speed);}void leftBwd(){ digitalWrite(LEFT_1, HIGH); digitalWrite(LEFT_2, LOW); analogWrite(LEFT_PWM, current_speed);}
当你用网络浏览器连接你的WizFi插板时,你可以看见如上的网页,并且可直接控制RC小车。如果你点击按钮,网络浏览器发送HTTP GET信息&WizFi插板会解析以下用以控制发动机。
下面的代码说明了怎样解析HTML请求,控制发动机并制作HTML页。
myHTMLParser.Parsing((char *)rcvdBuf); if((rcvdBuf[retval - 1] == 0x0A) && (rcvdBuf[retval - 2] == 0x0D) && (rcvdBuf[retval - 3] == 0x0A) && (rcvdBuf[retval - 4] == 0x0D)) { retval = myHTMLParser.GetParam(); if(retval == FW_CMD) { Serial.println("FW_CMD Rcvd"); myHTMLParser.SetParam(NO_CMD); moveForward(); }else if(retval == BW_CMD) { Serial.println("BW_CMD Rcvd"); myHTMLParser.SetParam(NO_CMD); moveBackward(); }else if(retval == RT_CMD) { Serial.println("RT_CMD Rcvd"); myHTMLParser.SetParam(NO_CMD); turnRight(); }else if(retval == LF_CMD) { Serial.println("LW_CMD Rcvd"); myHTMLParser.SetParam(NO_CMD); turnLeft(); } while(myHTMLPages.GetNextLine((char *)rcvdBuf)) { myClient[i].write((byte *)rcvdBuf); }
myHTMLParser.Parsing() 函数是解析接收数据& GetNextLine() 函数使HTML页根据浏览器请求应答。
感谢阅读!
欢迎与我们更多交流!
- 用无线插板控制RC(远程遥控)小车
- 无线遥控小车android客户端图展
- 《Android基于Socket无线遥控(2)--无线控制篇》
- WIFI-Robot Car无线智能远程遥控小车
- 用iArduino app+以太网插板实现“iPhone,iPad&iPod无线控制Arduino”!
- 遥控小车
- 用32板实现ps2无线遥控的实时控制
- 蓝牙远程控制小车实现
- 键盘遥控小车,代码复用
- WiFi遥控小车(一):基于wicam模块的小车
- 红外遥控智能小车
- arduino 红外遥控小车
- 树莓派遥控小车
- DIY手机遥控小车
- 用红外传感器控制小车
- 使用nodejs开发树莓派远程控制小车
- 无线小车
- 看我们的WIFI-Robot无线远程遥控智能机器人
- emacs 24 IDE配置(YASnippet、ECB、Cedet、Auto-complete)
- javascript Page Visibility API
- erlang热更新
- SQL Server 查看列,添加列,修改列,删除列
- 多线程断点续传后台下载
- 用无线插板控制RC(远程遥控)小车
- mysql所使用的管理工具
- android WIFI检测与设置
- jqGrid 各种参数 详解
- TCP/IP RFC
- unity基础开发----物品展示必备代码(旋转,缩放)
- 47款 Android UI 组件开源软件
- 多线程断点下载器
- SVN服务器搭建和使用(二)