总体思想: 1. 使用ESP8266与手机客户端连接通信,使用串口通信,利用AT指令像ESP发送命令,同时配置需要的内容,配置完成以后用手机连接wifi。 2. 连接wifi以后,利用ESP自身的接受消息回显,让单片机捕捉回显中关键内容作为命令,来实施相应操作。要求:使用4800bps的比特率,捕捉命令和进行操作均在串口中断中做,并且不能做耗时操作,解决方法是使用即时性较高的指令,例如TR0 = 1 3. 接收到命令可以准确解析以后,就可以驱动电机,L293D驱动模块使用方法很简单,一个电机的两端置为一高一低就能全速转动,再配以相应的PWM波,就可以调节速度。 4. 注意,一开始不能把定时器0打开,从而产生定时器中断,这样会影响ESP的初始化,所以只有在ESP初始化结束以后才能打开定时器,来产生PWM波,驱动电机 5. 在while中循环检测是否发来过停止运动的命令,并且也和按钮抬起发来的停止运动命令相同,停止定时器和两个轮子。但是还是有时候会出现混乱电平,导致小车失控。 6. 避障的实现是,采用外部中断实现的,一旦在while中检测到了避障模块的引脚置低,那么就触发外部中断0,做相应的动作。我使用的是左边有障碍,那么就左轮反转,右轮停止,实现旋转后退避障。中间的是两轮同时后退。右边避障同左边。 7. 关于命令:前进和后退命令发出以后,不再重复发送,但是抬起时,会发出停止命令,使得小车停止运动。 8. 其他细节见程序注释。
|