需要模块: 1.STC89C52RC单片机+最小系统 2.HC06蓝牙从机模块 3.L298电机驱动模块 4.电源(7v) 5.电机+车轮 以上都可以在淘宝上购买的到。不过建议DIY的同志还是自己买单个原件焊接,比较有学习意义。 第一步 ——车体 小车车体建议自己制作,一是简单,而是可以节省成本,找一块塑料板,买一瓶502胶水,把在网上买的电机直接粘上去就可以了,很稳固。淘宝也有成品的车体,我就是直接买成品的。自己动手太浪费时间也不好看,但是就没有成就感了。 第二步——控制系统 动手制作一个单片机最小系统,安上芯片,非常的简单 51单片机最小系统的电路图大家应该都知道—— 第三部——电机驱动 底盘和最小系统搞好了,小车还是跑不起来——缺少电机驱动。 单片机的I/O是驱动不了电机的,我选用的是L298N电机专用驱动芯片。 我当时是偷懒,所以就在网上买了一个电机驱动,6块钱吧,买单个L298芯片好像是3块钱,感觉买一个现成的更划算 第四步——HC06蓝牙转串口模块 既然使用手机蓝牙控制,那小车上必须要有一个蓝牙模块与手机蓝牙通信。在这里选用了HC06蓝牙转串口模块。 HC06蓝牙转串口模块的作用是将从手机蓝牙发送过来的指令接收到后转换成串口的形式通过单片机的串口传给单片机。只需将该模块的TXD接上51单片机的RXD引脚就行(当然还有电源),TXD不用接,因为我们只用它接收手机蓝牙信号,不发送数据。它出厂默认设置的波特率9600 ,不重新设置它的波特率的话,在写单片机串口程序时,也要将波特率设置为9600。 第五步——电源 你可以根据实际情况选择电源,用电池组或小型蓄电池,我用的是两块3.7V的电池串联来给电机驱动供电,然后用一块手机电池3.7V给单片机和蓝牙串口供电。 最后一步: 用安卓手机下载一个叫“蓝牙串口”的软件,一般人只要玩玩都会用, 手机通过蓝牙向单片机发送一个数据(字符),单片机检测到便执行相应的指令。程序看文件夹下“参考程序” 附加功能:给小车加了四个灯,通过手机可以打开,关闭。 在车子前进和后退时四个灯会闪烁。转向时也会有相应的转向灯。 做成功后可以在上面添加别的模块,比如避障,寻迹,测距。。。 教你做Android手机蓝牙遥控车
/****************************************************************************** * 串口通信实验* 实现现象:下载程序后打开串口调试助手,将波特率设置为4800,选择发送的数据就可以显示 在串口助手上。具体操作参考操作视频 注意事项:无。 ******************************************************************************/ #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; u8 a; sbit in1=P2^0; sbit in2=P2^1; sbit in3=P2^2; sbit in4=P2^3; /******************************************************************************* * 函数名 :UsartInit() * 函数功能 :设置串口 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void UsartInit() { SCON=0X50; //设置为工作方式1 TMOD=0X20; //设置计数器工作方式2 PCON=0X80; //波特率加倍 TH1=0XF4; //计数器初始值设置,注意波特率是4800的 TL1=0XF4; ES=1; //打开接收中断 EA=1; //打开总中断 TR1=1; //打开计数器 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { UsartInit(); // 串口初始化 while(1) { switch(a) { case'a':in1=0;in2=1; in3=1; in4=0; break; // 前进 case'b':in1=1;in2=0; in3=0; in4=1; break; // 后退 case'c':in1=0;in2=1; in3=0; in4=0; break; // 左转 case'd':in1=0;in2=0; in3=1; in4=0; break; // 右转 case'e':in1=0;in2=0; in3=0; in4=0; break; // 停止 } } } /******************************************************************************* * 函数名 : Usart() interrupt 4 * 函数功能 : 串口通信中断函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Usart() interrupt 4 |
|