开发环境介绍
ARDUIN开发环境,和KEL对比
优点:集成很多开发库如串口,网络,SG9O等
各种硬件开发接口,迅捷开发
自带串口调试工具
缺点:程序编译速度慢
硬件平台介绍
特性
1.基于ESP-8266EX
2. ARDUIN兼容,使用 RDUINO DE来编程
3.11位I/O引脚
4.1位ADC引腳(输入范围O-3.3V)
5.板载5V1A开关电源(高输入电压24V)
工作中
和sTM32模块开发类似,集成度高 STM32方案也更经济便宜
元件清单
1.WeMos D1
2.SG90舵机
3.超声波模块
4.LD3320
5.连接线若干
超声波模块
工作电压:5V、15mA
感测距离:2~400cm
超声波测距原理
关于距离中除以58的说明
58也很好理解,声音在干燥、摄氏20度的空气中的传播速度大约为343米/秒,合34,300厘米/秒。
我们作一下单位换算,34,300除以1,000,000厘米/微秒。即为:0.0343厘米/微秒,再換一个角度,1/(0.0343厘米/微秒)即:29.15微秒/厘米。
这就意味着,每291.5微秒表示10CM的距离。1厘米就是29.15微秒。但是发送后到接收到回波,声音走过的是2倍的距离呀。所以实际距离就是1厘米,对应58.3微秒。
SG90舵机
参数:
关于舵机核心代码
#define PIN_SE D5
Servo SteeringEngine//创建一个舵机,名叫SteeringEngine
myservo, attach(PIN SERVO)//链接舵机
myservo. write(30) //舵机的转动控制
LD3320语音模块
关于语音模块不作过多介绍,在某宝购买后,卖家会给出示例代码。给出我的语音模块与WeMos D1模块连接
LD3320 ___ WeMos D1
RXD _______ TX
TXD _______ RX
3.3V _______ 3.3V
GND _______ GND
对于语音模块代码可参考相应手册。
arduino代码:
这里请注意关于串口通信这块不是很懂,所以这里开始我未对接受、输出引脚进行低电平处理致使开始一直未串口通信成功。若有大佬看见希望能指点迷津。
#include<Servo.h>
#define Echo D5
#define Trig D8
#define PIN_SE D9
Servo SteeringEngine;
int key=0;
long getroundtriptime()/*得到超声波从发出到遇到障碍物折回所需要的时间*/
{
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
return pulseIn(Echo, HIGH);
}
void initStadiometry()
{
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
}
void setup() {
// put your setup code here, to run once:
initStadiometry();
SteeringEngine.attach(PIN_SE);
Serial.begin(9600);
pinMode(D9,OUTPUT);
digitalWrite(D1,LOW);
digitalWrite(D0,LOW);
}
void loop() {
// put your main code here, to run repeatedly:
long dis;
int cmd;
dis=getroundtriptime()/58;
if ( Serial.available() > 0 ) { //检测串口是否有数据
cmd =Serial.read(); // 读取串口数据,数据以十六进制方式接收
Serial.println(cmd); //打印接收的信息
switch(cmd)
{
case 1: //前面提到的读取到1表示向前
SteeringEngine.write(20);
key=1;
break;
case 2:
SteeringEngine.write(180);
key=0;
break;
default:
break;
}
}
if(key==0)
{
if(dis<10)
{
SteeringEngine.write(20);//write函数用于角度控制
delay(2000);
}
else
{
SteeringEngine.write(180);
}
}
}
总结
这次的一个校级比赛,所以对于小白的我,将之前的课程结合语音模块做了这个项目,参加比赛,自知能力尚浅,但是众在参与,当项目做出来的时候,还是有一定的喜悦感。
2020.11.18