目录
1、概述 3
2、规格参数 3
3、 各个接口和主要元件说明 3
4、详细使用方法 4
4.1安装Arduino IDE 4
4.2安装驱动文件 6
4.3 Arduino IDE设置和工具栏介绍 10
4.4 测试控制板 13
5、原理图 24
6、驱动文件和库文件下载地址 24
1、概述
Keyes Ai voice control V3.0 控制板兼容arduino传感器开发平台。控制板上有两个USB端口,其中一个mini USB端口我们用来上传代码,另一个micro USB端口用于外部供电。控制板的USB转串口芯片为CH340芯片,安装驱动时需安装CH340的驱动。控制板上自带一个拨码开关,用于控制外接电源的开关。
为方便我们学习使用arduino开发平台,这个控制板上集合了一些我们生产中常用的传感器和电子元件,如有源蜂鸣器、红外接收头、红外发射头、光敏电阻、温敏电阻、SK6812-P6 RGN灯、摇杆元件等等。同时控制板上另外设置了一些接口方便你外接其他电子元件。
为方便你将模块固定在其他设备,控制板还自带7个定位孔。
2、规格参数
主控芯片:ATMEGA328P-AU
USB转串口芯片:CH340G
Mini USB接口:上传代码 接口电流为500mA
供电电源(推荐):5V 2A(Micro USB供电)
自带有源蜂鸣器: D7控制
自带4个SK6812-P6 RGB 灯: D11控制
自带红外接收头: D8控制
自带红外发射头: D3控制
自带2个光敏电阻:控制A6和A7
自带热敏电阻:控制A3
自带摇杆元件:控制A1和A2
自带两个控制按键:KEY1控制D4、KEY2控制D5
自带2个LED灯:D5控制红灯和D6控制绿灯(需要利用黑色跳线帽跳线,默认完成)
自带1个拨码开关和1个复位按键:拨码开关用于控制电源输入开关
自带两个USB端口:mini USB端用于上传程序,micro USB端用于外接电源
各个接口和主要元件说明
4、详细使用方法
在使用控制板时,我们需要安装Arduino IDE,我们可以在arduino的官网中下载,链接为https://www.arduino.cc/en/Main/OldSoftwareReleases#1.5.x。里面有各个系统各个版本的IDE,在这里我们下载一个Windows系统的,1.5.6版本的IDE,我最喜欢的一个版本的IDE,其中点击 ,代表的是直接下载软件,下载后不需要安装,点击
,代表的是下载的是安装文件,我们需要安装IDE。我们选择下载安装文件,点击
下载。
4.1安装Arduino IDE
双击 arduino-1.5.6-r2-windows开始安装IDE.
选择“I Agree”,继续安装。
选择点击 “Next”,继续安装、
点击“Browse” 选择安装IDE位置,然后点击“Install” 安装IDE。
最后,等待几秒钟后安装成功。
4.2安装驱动文件
这个控制板实验的USB转串口芯片为CH340G,我们需要安装这芯片的驱动,驱动为usb_ch341_3.1.2009.06,我们把该驱动放到D盘,然后开始安装驱动。在不同系统在安装驱动方式大同小异,这里我们在win7系统上开始安装驱动。
首先将Keyes Ai voice control V3.0 利用mini USB线连接的电脑的USB端口,右键点击“计算机” —>“属性”—> “设备管理器”后,你可以看到“USB2.0-Serial”。
右键点击“USB2.0-Serial”, 选择 “Update Driver software”。
在这里,选择点击 “Browse my computer for driver software”。
找到 “usb_ch341_3.1.2009.06” 文件夹,然后点击“Next”,开始安装驱动。
安装完成,点击“Close”。
驱动安装成功,再次进入“设备管理器”, 右键点击“计算机” —>“属性”—> “设备管理器”,你可以看到CH340的驱动安装成功,显示有对应的COM口。
4.3 Arduino IDE设置和工具栏介绍
首先我们点击 图标,打开Arduino IDE。
为了避免在将程序上载到板上时出现任何错误,必须选择正确的Arduino板名称,该名称与连接到计算机的电路板相匹配。转到Tools→Board,然后选择你的板。
然后再选择正确的COM口(安装驱动成功后可看到对应COM口)。
我们的程序上传到板之前,我们必须演示Arduino IDE工具栏中出现的每个符号的功能。
A – 用于检查是否存在任何编译错误。
B – 用于将程序上传到Arduino板。
C – 用于创建新草图的快捷方式。
D – 用于直接打开示例草图之一。
E – 用于保存草图。
F – 用于从板接收串行数据并将串行数据发送到板的串行监视器。
4.4 测试控制板
将以下程序复制粘贴在Arduino IDE中。
//RGB
#include <Adafruit_NeoPixel.h>
#define PIN 11 //RGB的控制引脚
Adafruit_NeoPixel strip = Adafruit_NeoPixel(4, PIN, NEO_GRB + NEO_KHZ800);
uint8_t brightness = 100; //LED的亮度
//RGB结束
//红外接收
#include <IRremote.h>
int RECV_PIN = 8; //红外接收引脚 D8
IRrecv irrecv(RECV_PIN);
decode_results results;
//红外发射
IRsend irsend; //红外发射使用这个库<IRremote.h>其引脚默认为 D3
//光敏
int sensorPin1 =A6; //光敏传感器的引脚A6
int sensorPin2 =A7; //光敏传感器的引脚A7
int CDS1 = 0; //用于存放光敏传感器的所测到的值
int CDS2 = 0;
//蜂鸣器
int buzzPin = 7; //定义蜂鸣器的连接引脚为数字口 D7
//红绿led灯
const int led_red = 5;
const int led_green = 6;
//两个按钮
const int key1 = 4;
const int key2 = 2;
//遥感
int JoyStick_X = A1; //x
int JoyStick_Y = A2; //y
char count = 0; //计算按钮按下次数
char flag = 0; //作为进行计算按钮按下次数的条件
char display_flag = 0;
void setup()
{
pinMode(led_red,OUTPUT); //设定led灯连接的引脚为输出状态
pinMode(led_green,OUTPUT);
digitalWrite(led_red,LOW); //初始化led灯为低电平,就是让led灯不亮
digitalWrite(led_green,LOW);
pinMode(key1,INPUT); //设定按钮连接的引脚为输入状态
pinMode(key2,INPUT);
//RGB
strip.begin();
strip.show(); // Initialize all pixels to ‘off’
//RGB结束
//遥感
pinMode(JoyStick_X, INPUT); //设定遥感的连接引脚为输入状态
pinMode(JoyStick_Y, INPUT);
//遥感结束
//红外接收
irrecv.enableIRIn(); // Start the receiver pinMode(IR_S, OUTPUT); //设定红外发射的连接引脚为输出状态
//光敏
int sensorPin1 =A6; //定义两个光敏传感器的控制引脚为A6和A7
int sensorPin2 =A7;
int CDS1 = 0; //定义两个变量,初始化为0,用于将光敏传感器测得的值赋给这两个变量
int CDS2 = 0;
//蜂鸣器
pinMode(buzzPin, OUTPUT); //设定蜂鸣器的连接引脚为输出状态
Serial.begin(9600); // 设定串口的波特率是9600
}
void loop()
{
if(digitalRead(key1) == 0) //判断按钮1是否被按下(按钮1被按下,button1就等于0)
{
delay(10); //延时10ms
if(digitalRead(key1) == 0) //再次判断按钮1是否被按下,如果确定按钮1按下了
{
digitalWrite(led_red,HIGH); //led1灯(板上的红灯)就亮
}
}
else
{digitalWrite(led_red,LOW);}
if(digitalRead(key2)==0) //判断按钮2是否被按下
{
delay(10); //延时10ms
if(digitalRead(key2) == 0) //再次判断按钮2是否被按下,如果确定按钮2被按下了
{
display_flag=0;
//digitalWrite(led_red,LOW); //led1灯(红灯)熄灭
//digitalWrite(led_green,HIGH); //led2灯(板上的绿灯)亮
flag=1; //作为下个判断语句的判断条件,让其能执行
}
}
if(flag == 1) //判断flag是不是等于1
{
while(digitalRead(key2) == 0); //判断按钮2是否被松开了,如果没松开就不执行下面的语句
flag = 0; //将flag置0,跳出这个语句(if(flag == 1) )便于再判断按钮2是否被按下
count++; //count自身加1,计算按钮2(button)被按下的次数
if(count >= 7) //限制count的数值,如果count大于或等于8
{
count = 1; //就将count重新赋值为0
}
}
switch(count) //switch函数,用于判断按钮2按下的次数,就执行对应次数的函数
{
case 1:
if(display_flag==0)
{Serial.println(“IR_test”);delay(500);}
ir_test(); //执行这个子函数(板上的红外接收)
display_flag=1;
break;
case 2: //对应按钮2被按下1次,就执行下面语句
if(display_flag==0)
{Serial.println(“RGB_test”);delay(500);} //在串口监视器里打印出1
RGB(); //执行这个子函数(板上的4个RGB灯)
display_flag=1;
break; //count的值不是等于1了就退出这个子函数
case 3: //对应按钮2被按下2次
colorWipe(strip.Color(0, 0, 0), 30); //RGB OFF
if(display_flag==0)
{Serial.println(“JY_test”);delay(500);} //在串口监视器里打印出2
yaogan(); //执行这个子函数(控制板上的遥感模块)
display_flag=1;
break; //count的值不是等于2了就退出这个子函数
case 4:
if(display_flag==0)
{Serial.println(“CDS_test”);delay(500);}
digitalWrite(led_green,LOW);
guangmin(); //执行这个子函数(板上的两个光敏传感器)
display_flag=1;
break;
case 5:
if(display_flag==0)
{Serial.println(“NTC_test”);delay(500); }
temperature(); //执行这个子函数(板上的温度传感器)
display_flag=1;
break;
case 6:
if(display_flag==0)
{Serial.println(“BUZZER_test”);delay(500); }
buzzer(); //执行这个子函数(板上的蜂鸣器)
display_flag=1;
break;
default: //其它的不执行任何语句
break;
}
}
//4个RGB
void RGB()
{
colorWipe(strip.Color(50, 0, 0), 30);
delay(300);
colorWipe(strip.Color(0, 50, 0), 30);
delay(300);
colorWipe(strip.Color(0, 0, 50), 30);
delay(300);
}
//RGB结束
//遥感
void yaogan()
{
int x,y; //定义两个变量为x和y
x=analogRead(JoyStick_X); //将遥感读取到X轴方向的值赋给x
y=analogRead(JoyStick_Y); //将遥感读取到Y轴方向的值赋给y
Serial.print(“X = “); //在串口监视器中打印出:X =
Serial.println(x ,DEC); //在串口监视器中打印出遥感传感器读取到的X轴的值x的10进制数
Serial.print(“Y = “); //在串口监视器中打印出:Y =
Serial.println(y ,DEC); //在串口监视器中打印出遥感传感器读取到的Y轴的值y的10进制数
delay(100); //延时100ms
}
//红外接收
void ir_test()
{
char IR_flag=0;
if(irrecv.decode(&results)) //检测是否接收到数据
{
if ( results.bits > 0 ) //数据bit数是否大于0
{
if ( 0x01 == results.value ) //接收到的数据是否等于0x01
{
digitalWrite(led_green,HIGH);
delay(500);
IR_flag=1;
digitalWrite(led_green,LOW);
}
irrecv.resume(); // prepare to receive the next value
}
}
if(IR_flag==1)
{
irsend.sendRC5(0x01, 8);
delay(200);
IR_flag=0;
}
irrecv.enableIRIn(); //must
delay(300);
}
//两个光敏传感器
void guangmin()
{
CDS1 = analogRead(sensorPin1); //读取一个光敏传感器的测到的值并赋给CDS1
CDS2 = analogRead(sensorPin2); //读取另一个光敏传感器的测到的值并赋给CDS2
Serial.print(“CDS1 = “); //在串口监视器中打印出:CDS1 =
Serial.println(CDS1, DEC); //在串口监视器中打印出光敏传感器的测到的值CDS1的10进制数
Serial.print(“CDS2 = “); //在串口监视器中打印出:CDS2 =
Serial.println(CDS2, DEC); //在串口监视器中打印出光敏传感器的测到的值CDS2的10进制数
delay(50); //延时50ms
}
//temperature
void temperature()
{
int sensorValue = analogRead(A3); //读取温度传感器测到的值并赋给sensorValue
Serial.println(sensorValue); //在串口监视器中打印出sensorValue这个值
delay(1);
}
//蜂鸣器
void buzzer()
{
digitalWrite(buzzPin, HIGH); //将有源蜂鸣器的控制引脚置高电平
delay(1); //延时1ms(延时的长短不同,发出的声音也不同)
digitalWrite(buzzPin, LOW); //再将蜂鸣器的控制引脚置低电平
delay(1); //延时1ms
}
////////////////////////////////////////////////////////////////////////////////
//RGB LED Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait)
{
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}
//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
for (int j=0; j<10; j++) { //do 10 cycles of chasing
for (int q=0; q < 3; q++) {
for (int i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, c); //turn every third pixel on
}
strip.show();
delay(wait);
for (int i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}
在打开arduino IDE上传代码前,需要添加Adafruit_NeoPixel.h库文件,首先找到arduino IDE文件位置,进入libraries文件夹,将带有Adafruit_NeoPixel.h库文件的文件夹放入libraries文件夹,如下图。
按照前面方法设置板和COM口,IDE右下角显示对应板和COM口,点击 图标开始编译程序,检查错误,检查无误,如下图。
点击点击 图标开始上传程序,上传成功,如下图。
程序上传成功后,开始测试功能,功能如下。
- 按下控制板上KEY1,控制板自带的红色LED亮起,否则熄灭。
- 点击
打开串口监视器,设置波特率为9600,按1下控制板上KEY2,开始测试红外接收功能,显示如下图。当红外遥控对准控制板红外接收头按下任意按键,红外接收头接收到信息,靠近红外接收头的绿色的贴片LED亮起。
- 再按1下控制板上KEY2,开始测试控制板4个RGB灯,4个RGB灯循环亮起各种颜色,串口监视器显示如下。
- 再按1下控制板上KEY2,开始测试控制板摇杆元件,串口监视器显示摇杆X Y轴对应的模拟值,如下图。
- 再按1下控制板上KEY2,开始测试控制板两个光敏电阻,串口监视器显示对应两个光敏电阻的模拟值,光照强度越低,数据越大,如下图。
- 再按1下控制板上KEY2,开始测试控制板温敏电阻,串口监视器显示对应温敏电阻的模拟值,如下图。
- 再按1下控制板上KEY2,开始测试控制板有源蜂鸣器,蜂鸣器响起,再按1下控制板上KEY2,开始测试控制板红外接收功能,这样我们就可以通过不断按下控制板上KEY2,选择测试功能,如下图。