查看: 22702|回复: 7

Openjumper无线遥控小车教程

[复制链接]

该用户从未签到

发表于 2013-8-21 17:44 | 显示全部楼层 |阅读模式
本帖最后由 money0010 于 2013-8-21 17:44 编辑

                  Openjumper无线遥控小车教程
1.   简介
51.jpg
随着社会的不断发展,智能设备的不断出现,遥控器的运用越来越广泛。无线遥控器由于控制距离远,抗干扰性强,已越来越多的出现在生活的各个方面。本文介绍了2款通用的无线遥控模块,采用arduino作为控制核心,控制智能小车。

2.   需要的材料
1.      车体:Openjumper小车车体套件×1
2.      控制器:Arduino uno×1
3.      电机驱动:openjumperL298电机驱动板×1
4.      扩展板:UNO配套的传感器扩展板×1
5.      无线遥控模块:蓝牙模块×2或APC220模块×2
6.      尼龙柱,螺丝螺帽,杜邦线若干。

3. 小车规格


  
控制器
  
Arduino uno
电机驱动
L298
驱动部分工作电流
2A
驱动部分输入电压
4.8~25V
逻辑部分输入电压
5V
长*宽*高
200mm*180mm*110mm
重量
520g
电机型号
130
电机电压
3-6v
转速
125转/分
减速比
48/1
最大行驶速度
47.7米/分
电机空载电流
110ma
电机堵转电流
150ma
车轮直径
65mm
底盘离地面高度
20-22mm
4. 引脚定义
  
IO
  
类型
作用
描述
D4
数字输出
电机A正反转控制端
1为正转0为反转
D5
PWM输出
电机A调速端
电机速度0-255
D6
PWM输出
电机B调速端
电机速度0-255
D7
数字输出
电机B正反转控制端
1为正转0为反转
D0
数字输入
RX
串口接收
D1
数字输出
TX
串口发送
D2
数字输出
CS
蓝牙接AT,ACP220接EN

5. 基本原理及步骤
1.arduino无线控制的基本原理
Arduino和PC机(或手机)通过无线传输模块连接,通过串口来交换数据,完成对小车的控制。当两端的无线模块连接成功后,PC机和arduino就可以直接进行串口通讯,其方法和通过USB线串口通讯几乎没有区别。
A、蓝牙模块简介及配置方法
52.jpg
OPENJUMPER蓝牙模块v2.0是主从一体的蓝牙串口通信模块HC-05,可通过AT模式改写其各参数。适用于Arduino与PC、手机等设备的无线连接。
使用USBUART串口模块在PC端配置模块AT模式
53.jpg
将蓝牙模块通过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=960000       蓝牙通信串口波特率为9600,停止位1位,无校验位
AT+RMAAD                 清空配对列表

  B、蓝牙从机
AT+NAME=Bluetooth-Slave  蓝牙名称为Bluetooth-Slave
AT+ROLE=0                蓝牙模式为从模式
AT+CMODE=0               蓝牙连接模式为任意地址连接模式
AT+PSWD=1234             蓝牙配对密码为1234
AT+UART=960000       蓝牙通信串口波特率为9600,停止位1位,无校验位
AT+RMAAD                 清空配对列表

设置好AT指令后,让蓝牙主机通过转串口模块连接电脑,蓝牙从机连接小车上。蓝牙处于工作状态,也就是AT引脚接低电平或者悬空(工作状态下,蓝牙state灯为快闪)。此时蓝牙会自动搜索能够与之配对的模块,自动连接配对,配对成功后LINK灯变为常亮。

最新版串口助手下载地址http://x.openjumper.com/serial/
用串口设置AT模式的方法详见
54.jpg

B APC220模块简介及配置方法
APC220无线通信模块是目前比较流行的无线通信模块之一,有了它,我们可以脱离繁杂的连线传输数据,使你的方案更加智能化,更具趣味性。APC220模块是高度集成半双工微功率无线数据传输模块,其嵌入高速单片机和高性能射频芯片。创新的采用高效的循环交织纠检错编码,抗干扰和灵敏度都大大提高,最大可以纠24bits连续突发错误,达到业内的领先水平。APC220模块提供了多个频道的选择,能够透明传输任何大小的数据,而用户无须编写复杂的设置与传输程序,并提供UART/TTL接口。同时小体积,宽电压运行,较远传输距离,丰富便捷的软件编程设置功能,使APC220模块能够应用与非常广泛的领域。
配置方法(使用RFMagic软件
软件设置是通过USB转串口模块设置完成(RX、TX),APC220无线通信模块通过USB转串口模块连接电脑进行设置。
55.jpg
打开软件时,通过USB转串口模块连接APC220至电脑,此时需要USB转串口模块连接APC220模块的EN脚连接到CTS(CTS是通信的握手信号,通过跳帽选择连接) 。
软件的状态栏应显示Found Device(发现模块),这时就可以进行相应的读写操作。对于一般的客户,软件设置的选项选择默认即可(出厂时为默认值),除非有特别的用途,选项中空中速率,调制频偏,输出功率是不需要调整的。

56.jpg

RF—Magic软件设置
APC220的详细资料参见http://x.openjumper.com/apc220/

APC220模块使用默认设置便可以自动配对连接成功。此时一只模块通过转串口模块连接到电脑。另外一只模块接至arduino上便可以实现通信。
57.jpg

6.硬件的组装试调
1)车体组装及板卡安装
详见车体组装教程和循迹小车组装教程
2)无线模块的安装
传感器扩展板上有无线模块专用的插槽,如图安装即可。

       58.jpg
59.jpg
3PC端控制
将无线模块用USB转串口连接到电脑端,打开串口助手,设置串口号,波特率即可发送指令对小车进行遥控
注意,遥控时一定要打开串口助手界面,并选择键盘控制模式,设置完毕后方可直接通过键盘控制小车。
60.jpg
7.示例代码

kittenblock中小学创客名师推荐的图形化编程软件

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));
}
8.改进思路
1.通过手机蓝牙控制
         随着智能手机的出现,蓝牙在手机上的应用也越来越普及。可通过手机连接到小车蓝牙,然后通过手机端蓝牙串口软件控制小车。
2.优化控制程序
可以通过修改小车程序来更好的控制小车,比如减少控制延时,增加速度控制按钮等。
也可以自己编写上位机软件,丰富遥控指令。

  • TA的每日心情
    无聊
    2018-11-21 17:03
  • 签到天数: 38 天

    [LV.5]常住居民I

    发表于 2014-7-23 16:59 | 显示全部楼层
    如果用手机蓝牙串口软件是不是只把val = Serial.read()该为val = Serial1.read()就可以了吗
  • TA的每日心情
    开心
    2015-1-14 14:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-1-14 15:40 | 显示全部楼层
    挺美的。用的上位机 软件(原OpenJumper串口助手现已更名为Arduino串口工具集



    串口监视工具

    键盘控制工具

    蓝牙模块配置工具

    Hex上传工具)能分享下吗?下载不了,2415413557@qq.com

    该用户从未签到

    发表于 2015-10-15 11:25 | 显示全部楼层
    你好,我使用手机的蓝牙连接 OpenJumer的蓝牙v2.0(就是你这款蓝牙模块),蓝牙模块上的state灯由快闪变成了双闪,但是Link灯并没有亮,这是为啥? 我哪里出错了?

    但是我通过手机串口工具可以和蓝牙模块进行正常的通讯,手机发,蓝牙可以收,蓝牙发,手机可以收。

    谢谢

    该用户从未签到

    发表于 2016-4-22 21:25 | 显示全部楼层
    大神,我也买了一个双足,但卖家的上位机只能发指令,但目前我想用键盘控制双足的动作,不知道怎么编程,希望大神指点指点
  • TA的每日心情
    开心
    2016-11-10 00:14
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-10-2 17:46 来自手机 | 显示全部楼层
    你好,请问有ios 系统的蓝牙模块软件么

    该用户从未签到

    发表于 2017-3-2 19:52 | 显示全部楼层
    串口助手下载地址好像失效了呢
  • TA的每日心情
    开心
    2019-1-3 13:34
  • 签到天数: 65 天

    [LV.6]常住居民II

    发表于 2017-7-2 11:03 | 显示全部楼层
    如果可以,建议用BLE蓝牙
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    MAC arduino ESP8266mDNS.h不能加载。。。
    MAC arduino ESP8266mDNS.
    SpiderRobot 蜘蛛
    SpiderRobot 蜘蛛
    关于SpiderRobot 项目实行方案 之前有人推荐我做这个项目,于是乎就有了这个 h
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    项目分享——arduino梦幻交互雪花2019
    项目分享——arduino梦幻
    雪花由30颗LED打造,分为17个独立的部分,由Arduino Nano控制。每组LED都可以用PWM调
    体验OneNET4.0,一起来拼开发板
    体验OneNET4.0,一起来拼
    一、 活动时间2019年04月09日-2019年6月30日 二、活动链接1.登录Arduino中文社区账
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表