作者:贝壳物联 | 更新时间:2016-03-02 | 浏览量:9952
1、刷了openwrt的路由器,需引出TX、RX、GND针脚。
图为裸板GL-inet路由器,淘宝地址:
2、Arduino智能小车
淘宝地址:https://item.taobao.com/item.htm?id=523953094755
3、电脑
需安装WinSCP软件,向路由器上传文件用;
需通过有线或无线与openwrt路由器通讯。
路由器 Arduino
TX RX
RX TX
GND GND
1、控制界面,car.htm放在/www文件夹下。
car.htm代码如下:
<html> <head> </head> <body> <div style="float:left"> <script> function sendSer(value){ document.getElementById("ser").src="http://192.168.1.101/cgi-bin/web2ser?"+value; } </script> <table> <tr><td/><img id="ser" width="1" height="1"> <td><input type="button" onmousedown="sendSer('G')" onmouseup="sendSer('S')" value="前进" /></td><td/></tr> <tr><td><input type="button" onmousedown="sendSer('L')" onmouseup="sendSer('S')" value="左转" /></td><td/> <td><input type="button" onmousedown="sendSer('R')" onmouseup="sendSer('S')" value="右转" /></td></tr> <tr><td/><td><input type="button" onmousedown="sendSer('B')" onmouseup="sendSer('S')" value="后退" /></td><td/></tr> <tr><td colspan="3" align="middle"> <input type="button" onclick="sendSer('A')" value="自动控制" /></td></tr> <tr><td colspan="3" align="middle"> <input type="button" onclick="sendSer('M')" value="手动控制" /></td></tr> </table> </div> </body> </html>
2、lua代码,通过控制界面调用lua脚本web2ser放在/www/cgi-bin/下。
web2ser脚本如下:
#!/usr/bin/lua io.output("/dev/ttyATH0") io.write(os.getenv("QUERY_STRING"))
代码中ttyATHO为路由器串口,不同路由器其名称有所不同,可以通过ls /dev 命令查看。
/* Arduino小车WIFI遥控程序 功能:小车接收到WIFI模块串口发送过来命令,执行不同动作,字符“G”前进,字符“B”后退,字符“L”左转,字符“R”右转,字符“S”停止。 By 爱之家淘宝店 2015.11.5 小车DIY配件购买地址:https://item.taobao.com/item.htm?id=523953094755 */ const int L298nIn1 = 2;//L298N模块信号输入 const int L298nIn2 = 3; const int L298nIn3 = 4; const int L298nIn4 = 5; const String GO = "G";//串口发送信息代码定义 const String BACK = "B"; const String RIGHT = "R"; const String LEFT = "L"; const String STOP = "S"; void setup() { pinMode(L298nIn1, OUTPUT); pinMode(L298nIn2, OUTPUT); pinMode(L298nIn3, OUTPUT); pinMode(L298nIn4, OUTPUT); Serial.begin(115200); } void goForward() {//小车前进 digitalWrite(L298nIn1, HIGH); digitalWrite(L298nIn2, LOW); digitalWrite(L298nIn3, LOW); digitalWrite(L298nIn4, HIGH); } void goBack() {//小车后退 digitalWrite(L298nIn1, LOW); digitalWrite(L298nIn2, HIGH); digitalWrite(L298nIn3, HIGH); digitalWrite(L298nIn4, LOW); } void goStop() {//小车停止 digitalWrite(L298nIn1, LOW); digitalWrite(L298nIn2, LOW); digitalWrite(L298nIn3, LOW); digitalWrite(L298nIn4, LOW); } void turnRight() {//小车右转 digitalWrite(L298nIn1, LOW); digitalWrite(L298nIn2, HIGH); digitalWrite(L298nIn3, LOW); digitalWrite(L298nIn4, HIGH); } void turnLeft() {//小车左转 digitalWrite(L298nIn1, HIGH); digitalWrite(L298nIn2, LOW); digitalWrite(L298nIn3, HIGH); digitalWrite(L298nIn4, LOW); } String readTtl() { String comdata = ""; while (Serial.available()) { comdata += char(Serial.read()); delay(2); } return comdata; } void loop()//主循环函数 { String s = readTtl(); if (s == GO ) goForward();//发送“G”,小车前进,直到接收到“S”停止 if (s == LEFT ) turnLeft(); if (s == STOP ) goStop(); if (s == RIGHT ) turnRight(); if (s == BACK ) goBack(); }