文号
t78929
阅读
11581
回复
11
收藏
5
大功率蓝牙遥控车怎么写代码?
2016/02/16
IP:福建
本人手头有arduino uno r3、L298N电机驱动模块(直流六光耦全隔离)、HC-05主从机一体蓝牙模块、24V直流小型主轴电机40W想拿来做蓝牙遥控车,但是不知道怎么写代码,有哪位高手给指点一二?
10年10个月前IP:辽宁
809034
1楼
这问题提的有点泛啊
你手上这几个东西你先都熟悉一下
各自独立能玩转了
连起来就差不多了
蓝牙部分可以参考mit之前有一个appinventor开源项目
做手机蓝牙遥控小车很方便
我这存的网址是这个 不过好像打不开了现在XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
百度appinventor有一些资料可以看看 不知道现在还能用不了
引用
评论
10年10个月前IP:湖北
809044
2楼
两种选择。
第一种比较简单,HC系列模块蓝牙串口透传,遥控器与小车商量好协议用串口数据流控制就行。
第二种稍微复杂,用TI的CC系列Soc,例如CC2541/CC2640/CC2650等芯片。这种芯片相当于RF+单片机,运行官方的操作系统和蓝牙协议栈。
通过一片这样的芯片,就能够用App或者Btools这样的工具对蓝牙设备的属性数据进行修改,控制程序和算法也能在这种Soc上运行,这种比较高端了。
引用
评论
学员作者
10年10个月前IP:福建
809139
3楼
引用 zywzyw5:
这问题提的有点泛啊
你手上这几个东西你先都熟悉一下
各自独立能玩转了
连起来就差不多了
蓝牙部分可以参考mit之前有一个appinventor开源项目
做手机蓝牙遥控小车很方便
我这存的网址是这个 不过好像打不开了现在http:...
嗯,APP串口软件、电脑控制端本人都有,其他资料正在查询和消化。呵呵谢谢你咯
引用
评论
学员作者
10年10个月前IP:福建
809140
4楼
引用 rb-sama:
两种选择。
第一种比较简单,HC系列模块蓝牙串口透传,遥控器与小车商量好协议用串口数据流控制就行。
第二种稍微复杂,用TI的CC系列Soc,例如CC2541/CC2640/CC2650等芯片。这种芯片相当于RF+单片机,运行官方的操作系统和...
嗯,我用就是HC系列模块
引用
评论
学员作者
10年10个月前IP:福建
809142
5楼
引用 zywzyw5:
这问题提的有点泛啊
你手上这几个东西你先都熟悉一下
各自独立能玩转了
连起来就差不多了
蓝牙部分可以参考mit之前有一个appinventor开源项目
做手机蓝牙遥控小车很方便
我这存的网址是这个 不过好像打不开了现在http:...
关键是L298N电机驱动模块(直流六光耦全隔离)这个在写代码时是否和L298N电机驱动模块不一样?
引用
评论
10年10个月前IP:辽宁
809180
6楼
引用 学员:
关键是L298N电机驱动模块(直流六光耦全隔离)这个在写代码时是否和L298N电机驱动模块不一样?
你是想问带不带光耦的有没有区别?
引用
评论
学员作者
10年8个月前修改于 10年8个月前IP:福建
814656
7楼
本人参照资料写的
/*带调速*/
char getstr; 
int in1=3; 
int in2=4; 
int in3=7; 
int in4=8;
int n=0;
int inEN1=9;
int inEN2=10;
//上面定义了板上的4个控制端,1、2一组,3、4一组
void _mRight(int pin1,int pin2)//当in1和in2中有一个接高位时,电机会向某一方向转动
    
{ 
  digitalWrite(pin1,HIGH); 
  digitalWrite(pin2,LOW); 
} 
void _mLeft(int pin1,int pin2)//同上 
{ 
  digitalWrite(pin1,LOW); 
  digitalWrite(pin2,HIGH); 
} 
void _mStop(int pin1,int pin2)//紧急制动,实际就是将电机两个端短接了 
{ 
  digitalWrite(pin1,HIGH); 
  digitalWrite(pin2,HIGH); 
} 
void setup() 
{ 
  Serial.begin(9600); 
  pinMode(in1,OUTPUT); 
  pinMode(in2,OUTPUT); 
  pinMode(in3,OUTPUT); 
  pinMode(in4,OUTPUT);
  pinMode(inEN1,OUTPUT);
  pinMode(inEN2,OUTPUT); 
  //下面程序开始时让控制端都为高电平,电机保持不动。 
  digitalWrite(in1,HIGH); 
  digitalWrite(in2,HIGH); 
  digitalWrite(in3,HIGH); 
  digitalWrite(in4,HIGH); 
}
    
void loop() 
{ 
  getstr=Serial.read(); 
  if(getstr=='8') 
  { 
    Serial.println("go forward!"); 
    _mStop(in1,in2); 
    _mStop(in3,in4);
    _mRight(in1,in2); 
    _mRight(in3,in4); 
  } 
  else if(getstr=='2'){ 
    Serial.println("go back!"); 
    _mStop(in1,in2); 
    _mStop(in3,in4); 
    _mLeft(in1,in2); 
    _mLeft(in3,in4); 
  }
  else if(getstr=='4'){ 
    Serial.println("go left!"); 
    _mStop(in1,in2); 
    _mStop(in3,in4); 
    _mRight(in1,in2); 
    _mLeft(in3,in4); 
  } 
  else if(getstr=='6'){ 
    Serial.println("go right!"); 
    _mStop(in1,in2); 
    _mStop(in3,in4); 
    _mRight(in3,in4);
    _mLeft(in1,in2); 
  } 
  else if(getstr=='1'){
    Serial.println("growth!");
    n=n+85;                         //每次累加值为5
    if (n>=255) 
      n=255;
      analogWrite(9,n);
      analogWrite(10,n);
    }
    else if(getstr=='0'){
    Serial.println("Slow down!");
     n=n-85;
    if (n<=0)       n="0;"       analogwrite(9,n);       analogwrite(10,n);     }   else if(getstr="='5'){"     serial.println("stop!");     _mstop(in1,in2);     _mstop(in3,in4);     } }< code></=0)>
引用
评论
学员作者
10年8个月前IP:福建
814657
8楼
引用 zywzyw5:
你是想问带不带光耦的有没有区别?
嗯也是要问的
引用
评论
学员作者
10年8个月前IP:福建
814659
9楼
本人还准备给加个超声波模块,让它自动
引用
评论
10年8个月前IP:广东
814669
10楼
如果自己实现蓝牙协议栈的话,麻烦困难,但是如果是现成的模块的话,应该支持uart访问的,匹配了之后其实就是uart

Android上面的蓝牙通信倒是还是比较容易实现的。

但是个人对蓝牙确实比较讨厌,能用wifi以太网尽量用wifi,甚至2.4G 无线也好,最近调试了两个星期的Realtek 8723bs模组,出差Realtek一次,全是调试破蓝牙
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的