|
本帖最后由 41257203 于 2013-10-23 12:07 编辑
2013-10-23更新:
使用USB连接的初衷:不想破坏原路由、不喜欢折腾、用TTL连接时遇到电平不一致无法通讯、703n 171-3g 151-3g焊接技术不好等
经过几天努力google、baidu、BBS求助终于搞定不用拆机引出TTL线直接通过USB传输数据了,废话少说直接奔主题:
我的硬件平台arduino nuo r3+mw151-3G(其他arduino板可能有差异)
1.路由使用任何可以刷openwrt并且至少要有1个USB接口,如果下载论坛的专用固件只需要在路由上安装1个arduino nuo r3专用驱动即可(kmod-usb-acm)其他的板子请自行搜索相关驱动;如果使用openwrt官方固件则需要再自行安装小车中需要的ser2net和摄像头驱动
2.用winscp登陆路由 打开/etc/ser2net.conf配置文件在最后添加2222:raw:0:/dev/ttyACM0:9600(其中2222为端口号可以自由填写,ttyACM0是根据你插入的硬件决定,也有可能是ttyACM1或ttyACM2或ttyUSB0之类,请自行在putty命令行输入ls /dev查看)
3.没有3了直接拔掉TTL线使用USB直接连接即可
注意:本教程适用于Arduino单片机同样可以适用于51单片机(不过51单片机需要外接一个USB转TTL的小板,例如PL2303),如果要使用摄像头只需要再添加一个USB HUB(最好是带外置供电那种,尽可能买一些正规厂家的例如:ssk,川宇之类,山寨厂商的可能无法驱动),还有就是下面的代码请不要使用了,请自行搜索论坛的下位机程序,上位机的设置需要修改端口号与在ser2net.conf配置文件中添加的一致请看第2点。
下位机源码参考:
http://www.wifi-robots.com/forum.php?mod=viewthread&tid=1736
http://www.wifi-robots.com/thread-5730-1-1.html
http://www.wifi-robots.com/thread-6384-1-1.html
现在就剩下传感器的加入了,希望高手可以支招!
2013-10-16号原帖:
现在只能实现行走其他功能还要慢慢学,如果以后加上的新的功能将继续更新,本来是想做一个兼容论坛上位机的,但经过10来天的研究和查各种资料,无奈TTL硬是不通讯,只好另辟奇径具体参照http://v.youku.com/v_show/id_XMzUwOTY0MDQ0.html?firsttime=197做了一个基于路由与单片机通过USB链接的半成品,以下是我的小车资料:
我的分了4层,全部用洞洞板(1.1元1张*10)叠加做的纯手工打造:稍后放上视频,力气很大喔.......!
希望有高手能够指点一二,好少走点弯路,接下来将做好电脑端的网页控制和传感器的加入,如果谁能能够告诉我直接能修改论坛的上位机能通过USB链接就好了!
我的小车原理是openwrt安装minicom与arduino通信再到L298N下面是详细的细节
第一层:电机采用24V 21:1 120转/分钟 5KG扭力 *4,螺丝、铜柱每样30个左右
第二层:电池3.7V6200mah*3串联(之前DIY移动电源拆下来2块+后买1块 这个贵了,花了160多)+升压板升至16V作为动力
第三层:DB120+mini风扇(28.8/台)
第四层:arduino nuo r3+V5扩展板+传感器+L298N*2(目前只用了1个)+摄像头
以上可做参考下面是我的小车
我的L298N的输入端为EMA/EMB是短接的剩下IN1、IN2 A电机/IN3/IN4 B电机 分别控制电机的正反转
源码:
void setup()
{
Serial.begin(9600); //初始波特率为9600
pinMode(4, OUTPUT); //设置IO口4的模式为输出
pinMode(5, OUTPUT); //设置IO口5的模式为输出
pinMode(6, OUTPUT); //设置IO口6的模式为输出
pinMode(7, OUTPUT); //设置IO口7的模式为输出
}
void loop()
{
char i;
if (Serial.available())
{
i = Serial.read(); //read
switch (i)
{
case 's': //back 输入s即代表后退(这个可以自定义,等会就相当于是按下键盘上的的“s”键即代表小车后退)
Serial.println("back"); //当按下s即返回back值(这个可以自定义)
digitalWrite(4, LOW); //IO口4输出低电平
digitalWrite(5, HIGH); //IO口5输出高电平
digitalWrite(6, LOW); //IO口6输出低电平
digitalWrite(7, HIGH); //IO口7输出高电平 下面的是和这里的意思是一样的
break;
case 'w': //forward
Serial.println("forward");
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
break;
case 'a': //left
Serial.println("left");
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
break;
case 'd': //right
Serial.println("right");
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
break;
case ' ': //stop
Serial.println("stop");
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
break;
default:
break;
}
}
}
|
评分
-
查看全部评分
|