作者:邓尕恒_789 | 来源:互联网 | 2023-09-16 14:02
找了很多单片机和蓝牙模块的资料,根据自己已完成的经验简单说明下,希望帮助有理想又能坚持的人做出自己想要玩具。 孩子捡到一个Q7遥控车,用5节5号电池带差速,质量还不错。可没遥控器怎么办,总不能再去捡个
找了很多单片机和蓝牙模块的资料,根据自己已完成的经验简单说明下,希望帮助有理想又能坚持的人做出自己想要玩具。 孩子捡到一个Q7遥控车,用5节5号电池带差速,质量还不错。可没遥控器怎么办,总不能再去捡个吧,我有那么好的运气吗?还是自己想办法吧。 早年曾买过一套51单片机的资料,带很多零散硬件,于是想用单片机加蓝牙模块连手机,找资料买硬件搭环境,终于成功运行了!30s。。。必死机,换了一套成品单片机最小环境依旧。分离电源也尝试了。我觉得可能是电机运行对单片机有影响吧。算了,上第三套方案。
材料: 遥控玩具车, Arduino nano, L298n红板, HC06模块, 手机端用蓝牙串口助手。如果你想高大上一些就用App Inventor 2 WxBit 汉化增强版在线搭个程序吧,后面有详细步骤。嗯,就这些了。 开工了!放鞭炮!!!!!!!!!!!!!!! 这个玩具车电压是7.5v的,符合系统供电要求,如果低于5v还要改电源。它有2个电机,后驱+前转向,就是普通5v电机,不是舵机,其实没区别。首先当然是拆开它把它自带的遥控模块扔掉啦。 然后,电池仓正极接L298n 12v输入, L298n 5v输出到nano和HC06, L298n动力输出接2个电机,方向无所谓,代码里能调整, L298n逻辑输出接nano,注意下后电机,在D3、D5、D6、D9、D10、D11中选2个接上,因为它们支持PWM,没错,这台车能调速哦!所以L298n上的神马使能就不用了; HC06的TX和RX交叉连接nano的RX和TX,注意,刷写程序时要断开它们,因为nano的串口和usb是共用的,会导致冲突上传失败; 大灯和倒车灯正极分别串个220Ω电阻接Arduino(当然如果车灯是5v就不用电阻了或者你的玩具没车灯就省掉这一步); 以上除了电机,负极汇在一起接L298n地。 硬件搭建完了,复制粘贴下面代码吧:
//后电机 const int MA01 = 5 ; const int MA02 = 6 ; //前电机 const int MB01 = 3 ; const int MB02 = 4 ; //定义马达引脚名称
const int Spotlight = 12 ;//大灯 const int Taillight = 13 ;//倒车灯 //定义车灯引脚名称
boolean TaillightState;
void setup() { Serial.begin(9600); //定义通讯频率
pinMode(MA01, OUTPUT); pinMode(MA02, OUTPUT); pinMode(MB01, OUTPUT); pinMode(MB02, OUTPUT); //定义马达引脚模式
pinMode(Spotlight, OUTPUT); digitalWrite(Spotlight, LOW); pinMode(Taillight, OUTPUT); digitalWrite(Taillight, LOW);
}
void loop() { while (Serial.available()) //循环检测蓝牙输入信息 { char C = Serial.read(); switch © { //进入循环体,检测蓝牙指令。 //定义前进信号 case’A’: Serial.println(“go on”); analogWrite(MA01, 150);//初始半速,最大255,可根据马达体质调整 break; case’E’: Serial.println(“go on-stop”); digitalWrite(MA01, LOW); break; //前进 //定义后退信号 case’B’: Serial.println(“go back”); analogWrite(MA02, 150); digitalWrite(Taillight, HIGH); TaillightState = true ; break; case’F’: Serial.println(“go back-stop”); digitalWrite(MA02, LOW); digitalWrite(Taillight, LOW); TaillightState = false; break; //后退 //定义转左信号 case’C’: Serial.println(“go left”); digitalWrite(MB02, HIGH); break; case’G’: Serial.println(“go left-stop”); digitalWrite(MB02, LOW); break; //转左 //定义转右信号 case’D’: Serial.println(“go right”); digitalWrite(MB01, HIGH); break; case’H’: Serial.println(“go right-stop”); digitalWrite(MB01, LOW); break; //转右 case’T’: Serial.println(“go tubor”); analogWrite(MA01, 250); break; case’X’: Serial.println(“go tubor-shop”); digitalWrite(MA01, LOW); break; //定义开关车头大灯 case’L’: if (digitalRead (Spotlight) == HIGH) { Serial.println(“Colse Spotlight”); digitalWrite(Spotlight, LOW); } else if (digitalRead (Spotlight) == LOW) { Serial.println(“Open Spotlight”); digitalWrite(Spotlight, HIGH); } break; //开关车头大灯 default: break; }//switch }//while }
动下脑筋差不多就能理解代码的意思,需要说明的是,每个信号都有2个按键定义,分别是按下和松开的状态。 现在拿出手机打开蓝牙串口助手,按照代码里设定的自定义按键试试吧。 现在你已经拥有一台能用手机控制的智障玩具车了,其实还可以添加其他有趣的模块比如超声波红外循迹。。。让它更智能。
下面是我自己搭的app,适合装13,其实是为孩子玩方便,麻烦一点点也值得! 超级兔子是我很喜欢的软件,就用它全速前进啦。 打开这个网址https://app.wxbit.com/,新建个项目,按下图添加组件,图标布局啥的自己弄吧。 切到逻辑设计照下图搭。 生成apk开始炫耀吧!!!
总觉得用Arduino做这么个东东太委屈它了。第二套方案是啥呢?其实是我最先想到的,应该是第一套方案吧。CC2541是集51单片机和低功耗蓝牙为一体的小东东,真的很小,我觉得更适合这种玩具应用,可软件方面感觉复杂些,至少我还要好好的学习一阵,资料也不多,很希望有朋友能带带我。拜托了!