热度 19
2013-5-31 13:48
1203 次阅读|
0 个评论
多亏了它的开源平台和易用的软件硬件,在线有详细的数以千计的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 7 void 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 == 0x0A) (rcvdBuf == 0x0D) (rcvdBuf == 0x0A) (rcvdBuf == 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 .write((byte *)rcvdBuf); } myHTMLParser.Parsing() 函数是解析接收数据 GetNextLine() 函数使HTML页根据浏览器请求应答。 感谢阅读! 与我们更多交流: WIZnet邮箱:wiznetbj@wiznettechnology.com WIZnet中文主页:http://www.iwiznet.cn WIZnet中文博客:http://blog.iwiznet.cn WIZnet企业博客:http://e.weibo.com/wiznet2012