本帖最后由 money0010 于 2013-8-21 17:44 编辑
Openjumper无线遥控小车教程 1. 简介 随着社会的不断发展,智能设备的不断出现,遥控器的运用越来越广泛。无线遥控器由于控制距离远,抗干扰性强,已越来越多的出现在生活的各个方面。本文介绍了2款通用的无线遥控模块,采用arduino作为控制核心,控制智能小车。
2. 需要的材料 1. 车体:Openjumper小车车体套件×1 2. 控制器:Arduino uno×1 3. 电机驱动:openjumperL298电机驱动板×1 4. 扩展板:UNO配套的传感器扩展板×1 5. 无线遥控模块:蓝牙模块×2或APC220模块×2 6. 尼龙柱,螺丝螺帽,杜邦线若干。
3. 小车规格
4. 引脚定义
5. 基本原理及步骤
1).arduino无线控制的基本原理Arduino和PC机(或手机)通过无线传输模块连接,通过串口来交换数据,完成对小车的控制。当两端的无线模块连接成功后,PC机和arduino就可以直接进行串口通讯,其方法和通过USB线串口通讯几乎没有区别。 A、蓝牙模块简介及配置方法OPENJUMPER蓝牙模块v2.0是主从一体的蓝牙串口通信模块HC-05,可通过AT模式改写其各参数。适用于Arduino与PC、手机等设备的无线连接。 使用USB转UART串口模块在PC端配置模块AT模式将蓝牙模块通过USB传串口模块连接到电脑USB端口,可直接通过串口助手发送AT命令来配置蓝牙模块。 1、设置AT模式前将AT引脚(转串口模块DTR信号)通过跳帽连接VCC,此时蓝牙state指示灯变为慢闪。如图。 2、打开串口助手,设置AT指令(通信波特率设置为38400,发送AT指令后加回车空格再点击发送指令)。 2、两个蓝牙模块分别设置AT模式 A、蓝牙主机 AT+NAME=Bluetooth-Master 蓝牙名称为Bluetooth-Master
AT+ROLE=1 蓝牙模式为主模式
AT+CMODE=0 蓝牙连接模式为任意地址连接模式
AT+PSWD=1234 蓝牙配对密码为1234
AT+UART=9600,0,0 蓝牙通信串口波特率为9600,停止位1位,无校验位
AT+RMAAD 清空配对列表
B、蓝牙从机 AT+NAME=Bluetooth-Slave 蓝牙名称为Bluetooth-Slave
AT+ROLE=0 蓝牙模式为从模式
AT+CMODE=0 蓝牙连接模式为任意地址连接模式
AT+PSWD=1234 蓝牙配对密码为1234
AT+UART=9600,0,0 蓝牙通信串口波特率为9600,停止位1位,无校验位
AT+RMAAD 清空配对列表
设置好AT指令后,让蓝牙主机通过转串口模块连接电脑,蓝牙从机连接小车上。蓝牙处于工作状态,也就是AT引脚接低电平或者悬空(工作状态下,蓝牙state灯为快闪)。此时蓝牙会自动搜索能够与之配对的模块,自动连接配对,配对成功后LINK灯变为常亮。
用串口设置AT模式的方法详见
B 、APC220模块简介及配置方法APC220无线通信模块是目前比较流行的无线通信模块之一,有了它,我们可以脱离繁杂的连线传输数据,使你的方案更加智能化,更具趣味性。APC220模块是高度集成半双工微功率无线数据传输模块,其嵌入高速单片机和高性能射频芯片。创新的采用高效的循环交织纠检错编码,抗干扰和灵敏度都大大提高,最大可以纠24bits连续突发错误,达到业内的领先水平。APC220模块提供了多个频道的选择,能够透明传输任何大小的数据,而用户无须编写复杂的设置与传输程序,并提供UART/TTL接口。同时小体积,宽电压运行,较远传输距离,丰富便捷的软件编程设置功能,使APC220模块能够应用与非常广泛的领域。 配置方法(使用RF—Magic软件)软件设置是通过USB转串口模块设置完成(RX、TX),APC220无线通信模块通过USB转串口模块连接电脑进行设置。 打开软件时,通过USB转串口模块连接APC220至电脑,此时需要USB转串口模块连接APC220模块的EN脚连接到CTS(CTS是通信的握手信号,通过跳帽选择连接) 。 软件的状态栏应显示Found Device(发现模块),这时就可以进行相应的读写操作。对于一般的客户,软件设置的选项选择默认即可(出厂时为默认值),除非有特别的用途,选项中空中速率,调制频偏,输出功率是不需要调整的。
RF—Magic软件设置
APC220模块使用默认设置便可以自动配对连接成功。此时一只模块通过转串口模块连接到电脑。另外一只模块接至arduino上便可以实现通信。
6.硬件的组装试调 1)车体组装及板卡安装详见车体组装教程和循迹小车组装教程 2)无线模块的安装传感器扩展板上有无线模块专用的插槽,如图安装即可。
3.PC端控制将无线模块用USB转串口连接到电脑端,打开串口助手,设置串口号,波特率即可发送指令对小车进行遥控 注意,遥控时一定要打开串口助手界面,并选择键盘控制模式,设置完毕后方可直接通过键盘控制小车。 7.示例代码
[mw_shl_code=cpp,true]char val;
int INA = 4; //电机A正反转控制端
int PWMA = 5; //电机A调速端
int INB = 7; //电机B正反转控制端
int PWMB = 6; //电机B调速端
void setup()
{
pinMode(INA,OUTPUT);
pinMode(INB,OUTPUT); //配置电机输出IO口为输出
Serial.begin(9600);//打开串口并初始化设置波特率
}
void loop()
{
val = Serial.read();
if (-1 != val) {
switch(val)
{
case 'c':Serial.println("testOk");break;//pc端发送字符c,若返回testOk,说明连接正常
case 'w':motosp(200,200);break; //按下w键,小车直行
case 's':motosp(-200,-200);break; //按下s键,小车后退
case 'q':motosp(100,200);break; //按下q键,向前左转
case 'e':motosp(200,100);break; //按下e键,向前右转
case 'a':motosp(-100,-200);break; //按下a键,向后左转
case 'd':motosp(-200,-100);break; //按下d键,向后右转
}
delay(20);
}
else motosp(0,0);//未接收到数据时,小车停止
}
void motosp(int sp1,int sp2)//电机速度控制函数。括号内分别为左右电机速度值,
{
if(sp1>0) //范围-255~+255,正值为正转,负值为反转。
{
digitalWrite(INA, HIGH);
}
else
{
digitalWrite(INA, LOW);
}
if(sp2>0)
{
digitalWrite(INB, HIGH);
}
else
{
digitalWrite(INB, LOW);
}
analogWrite(PWMA,abs (sp1));
analogWrite(PWMB,abs (sp2));
}[/mw_shl_code] 8.改进思路 1.通过手机蓝牙控制 随着智能手机的出现,蓝牙在手机上的应用也越来越普及。可通过手机连接到小车蓝牙,然后通过手机端蓝牙串口软件控制小车。 2.优化控制程序 可以通过修改小车程序来更好的控制小车,比如减少控制延时,增加速度控制按钮等。。 也可以自己编写上位机软件,丰富遥控指令。
|