KE0126 Keyes Ai voice control V3.0 红色 环保

  Arduino 兼容开发板, Arduino系列

正面

目录

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”,继续安装。

C:\Users\keyess\Desktop\tu\8.png

选择点击 “Next”,继续安装、

C:\Users\keyess\Desktop\tu\9.png

点击“Browse” 选择安装IDE位置,然后点击“Install” 安装IDE。

C:\Users\keyess\Desktop\tu\10.png

最后,等待几秒钟后安装成功。

C:\Users\keyess\Desktop\tu\11.png

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口,点击 图标开始编译程序,检查错误,检查无误,如下图。

点击点击 图标开始上传程序,上传成功,如下图。

程序上传成功后,开始测试功能,功能如下。

  1. 按下控制板上KEY1,控制板自带的红色LED亮起,否则熄灭。
  2. 点击 打开串口监视器,设置波特率为9600,按1下控制板上KEY2,开始测试红外接收功能,显示如下图。当红外遥控对准控制板红外接收头按下任意按键,红外接收头接收到信息,靠近红外接收头的绿色的贴片LED亮起。

  1. 再按1下控制板上KEY2,开始测试控制板4个RGB灯,4个RGB灯循环亮起各种颜色,串口监视器显示如下。

  1. 再按1下控制板上KEY2,开始测试控制板摇杆元件,串口监视器显示摇杆X Y轴对应的模拟值,如下图。

  1. 再按1下控制板上KEY2,开始测试控制板两个光敏电阻,串口监视器显示对应两个光敏电阻的模拟值,光照强度越低,数据越大,如下图。

  1. 再按1下控制板上KEY2,开始测试控制板温敏电阻,串口监视器显示对应温敏电阻的模拟值,如下图。

  1. 再按1下控制板上KEY2,开始测试控制板有源蜂鸣器,蜂鸣器响起,再按1下控制板上KEY2,开始测试控制板红外接收功能,这样我们就可以通过不断按下控制板上KEY2,选择测试功能,如下图。

5、原理图

AI UNO Control board v3.0 控制板

6、驱动文件和库文件下载地址

https://pan.baidu.com/s/1hujDKegPTF5E0zg_J48sHg

https://pan.baidu.com/s/1dyQ8awcDi8_YHv_jLUTOEg