查看“迎门人体检测/zh”的源代码
←
迎门人体检测/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{| style="width: 800px;" |- | ==概述== *项目名称:Microduino迎门人体检测 *目的:当有人靠近时,彩灯变色并播报欢迎语音 *难度:中 *耗时:2小时 *制作者: *简介: 本次教程我们将使用Microduino产品模块快速搭建一个迎门人体检测体统, 该系统通过热释传感器探测3米范围内是否有人靠近,在有人靠近时,可以通过彩色LED灯变换色彩进行提示,并播报出欢迎语音。 [[File:Welcome.jpg||600px|center]] ==材料清单== *Microduino设备 {|class="wikitable" |- |模块||数量||功能 |- |[[Microduino-Core/zh]]||1||核心板 |- |[[Microduino-USBTTL/zh]] ||1||下载程序 |- |[[Microduino-Audio/zh]] ||1||音频控制 |- |[[Microduino-Amplifier/zh]] ||1||功率放大 |- |[[Microduino-Sensorhub/zh]] ||1||与传感器和舵机相连 |- |[[Microduino-PIR/zh]] ||1||热释红外传感器 |- |[[Microduino-Lantern/zh]] ||1||彩色LED灯 |} *其他设备 {|class="wikitable" |- |模块||数量||功能 |- |[[Micro-USB线]]||1||下载程序,供电 |- |[[喇叭]] ||2||发声 |- |[[螺丝]] ||5||固定模块 |- |[[外壳]] ||1|| |} ==实验原理== 迎门人体检测系统主要分为检测与控制两个部分。检测部分采用红外热释传感器Microduino-PIR,能探测附近人体的红外特征信号。控制部分为声光控制,发光部件采用Microduino-Lantern模块,能让LED呈现美轮美奂的颜色;音频部分通过Microduino-Aduio模块管理音频文件,Microduino-Amplifier功率放大模块驱动2个喇叭发出洪亮的声音。 [[File:Doorwelcome1.jpg||600px|center]] 整体系统的控制原理即接入以上两个部分,Microduino-Core核心通过PIR传感器探测到附近有人靠近后,控制Lantern模块变换颜色,Auido模块播报“欢迎光临”语音,从而达到迎宾欢迎的效果。 *主要传感器 [[Microduino-PIR/zh]] 人体都有恒定的体温,一般在37摄氏度,所以会发出特定波长10um左右的红外线,热释传感器就是通过被动式红外探头探测10um左右红外线而进行工作的。人体发射的10um左右的红外线经过菲涅尔滤光片增强后聚集到红外探头上。 红外探头通常采用热释电元件,这种元件在接受到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经过处理就能产生可以处理的电信号。 菲涅尔透镜利用透镜的特殊光学原理,在探测器前方产生一个交替变化的“盲区”和“高灵敏区”,以提高他的探测接收灵敏度。当有人从透镜前走过时,人体发出的红外线就不断地交替从“盲区”进入“高灵敏区”,这样就使接收到的红外信号以忽强忽弱的脉冲形式输入,从而增强其能量幅度。热释红外传感器只有配合菲涅尔透镜使用才能发挥最大作用。 ==文档== ==调试过程== *下载程序 将Microduino-Core与Microduino-USBTTL叠加(无上下顺序),通过USB数据与电脑连接起来。 [[File:download1.jpg||200px|center]] 打开Arduino IDE编程软件,点击【文件】->【打开】 [[File:Dl1.jpg||300px|center]] 浏览到项目程序地址,点击“body_welcome.ino”程序打开。 [[File:Doorwelcome2.jpg||500px|center]] 点击【工具】,在板选项里面选择板卡(Microduino-Core),在处理器选项里面选择处理器(Atmega328p@16M,5V),再在端口选项里面选择正确的端口号,然后直接烧录程序。 [[File:Dl3.jpg||500px|center]] 使用USB数据线将Microduino-Audio模块与电脑连接。 连接成功能显示出一个名为Microduino Audio的CD驱动器,然后执行以下步骤: [[File:Dl5.jpg||200px|center]] 打开CD驱动器后会出现音乐更新软件Music Update tool,选择“音频加载”选项; [[File:Dl6.jpg||400px|center]] 点击“浏览”,选择“music”文件夹中的"bye.wav,欢迎.wav"音频文件,将音频文件添加到软件中 欢迎与再见音频下载地址:http://pan.baidu.com/s/1pJpJK5X 提取码:hkks [[File:Doorwelcome3.jpg||600px|center]] 在”更新下载”选项中选择“更新”,更新完成后,音频文件就已写入flash中。 [[File:Dl8.jpg||600px|center]] *搭建 拼装时首先将Microduino-Duo-S1板用尼龙螺柱固定在A2底板上面。 [[File:Welcome1.png||600px|center]] 之后将Core(在最下),Audio,Amplifier,Sensorhub(在最上)按顺序叠加起来,之后加在Microduino-Duo-S1底板上 [[File:Welcome2.png||600px|center]] 将喇叭连接到Amplifier的接口上(没有左右顺序区别) [[File:Welcome3.png||600px|center]] 首先使用螺丝和螺柱将两个红外热释传感器固定在两块侧板上,之后在拼接边框时先确定两个热释传感器的位置,按如图所示位置,相邻的放置在UPIN27开口方向的旁边。 [[File:Welcome4.png||600px|center]] 将Microduino-ColorLED使用螺柱和螺母固定在顶板上 [[File:Welcome5.png||600px|center]] 将传感器和Sensorhub用传感器线连接起来,两个红外热释传感器连接到D4/D5与D6/D7接口(图中蓝色标注),将Microduino-ColorLED连接到A0/A1接口(图中红色标注) [[File:Welcome6.png||600px|center]] 将顶盖盖上,注意图中黄色框中的插槽要与底部的插槽放在对应位置,此位置是固定喇叭的木片使用的。之后使用插销固定住每个插孔,顶部与底部共6*2总共12个固定口。 [[File:Welcome7.png||600px|center]] 之后使用USB线连接底板上的USB接口给其供电。此时热释传感器检测到附近有人后,LED灯会变换颜色,喇叭播放出欢迎语音。并且会根据人来往的方向判断是进门还是出门。 ==程序说明== 百度盘地址:http://pan.baidu.com/s/1o6nJT70 提取码:q54r *body_welcome.ino <source lang="cpp"> #include "audio.h" #include "key.h" #include <Adafruit_NeoPixel.h> #define PIN A0 Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, PIN, NEO_GRB + NEO_KHZ800); //#include <SoftwareSerial.h> uint32_t color[9] = { strip.Color(0, 0, 0), strip.Color(255, 0, 0), strip.Color(248, 141, 30), strip.Color(255, 255, 0), strip.Color(0, 255, 0), strip.Color(0, 127, 255), strip.Color(0, 0, 255), strip.Color(139, 0, 255), strip.Color(255, 255, 255) }; #define body_pin 4 #define body_pin2 6 int i = 1; int music_vol = 28; //初始音量0~30 boolean play_pause; boolean play_stop; boolean FLAG_1 = 0; boolean FLAG_2 = 0; void setup() { // initialize serial: Serial.begin(9600); pinMode(body_pin, INPUT); pinMode(body_pin2, INPUT); // key_init(); audio_init(DEVICE_Flash, MODE_One_END, music_vol); strip.begin(); //初始化LED strip.show(); // Initialize all pixels to 'off' for (int i = 0; i < 9; i++) { colorWipe(color[i]); delay(300); } colorWipe(color[0]); } void loop() { judge(); if (!digitalRead(body_pin)&&!digitalRead(body_pin2)) { colorWipe(color[0]); FLAG_1 = 0; FLAG_2 = 0; } } void colorWipe(uint32_t c) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); } } void judge() { if((digitalRead(body_pin)==1)&&(digitalRead(body_pin2)==0)) { FLAG_1 = 1; delay(200); } if((digitalRead(body_pin)==1)&&(digitalRead(body_pin2)==1)&&(FLAG_1 == 1)) { colorWipe(color[random(1, 10)]); audio_choose(1); Serial.println("COMING IN"); FLAG_1 = 0; delay(1300); //1300 } if((digitalRead(body_pin)==0)&&(digitalRead(body_pin2)==1)) { FLAG_2 = 1; delay(200); //2000 } if((digitalRead(body_pin)==1)&&(digitalRead(body_pin2)==1)&&(FLAG_2 == 1)) { colorWipe(color[random(1, 10)]); audio_choose(2); Serial.println("GOING OUT"); FLAG_2 = 0; delay(1300); //2000 } } </source> *Audio.h <source lang="cpp"> #include "arduino.h" //#include <SoftwareSerial.h> //SoftwareSerial mySerial(2, 3); // RX, TX #define AUDIO_PORT Serial1 //Core+ //#define AUDIO_PORT mySerial //Core byte sn_reset[4]= { 0x7E,0x02,0x0C,0xEF }; byte sn_choose[6]= { 0x7E,0x04,0x03,0x00,0x01,0xEF }; byte sn_vol[5]= { 0x7E,0x03,0x06,0x18,0xEF }; byte sn_device[5]= { 0x7E,0x03,0x09,0x01,0xEF }; byte sn_pause[4]= { 0x7E,0x02,0x0E,0xEF }; byte sn_play[4]= { 0x7E,0x02,0x0D,0xEF }; byte sn_mode[5]= { 0x7E,0x03,0x11,0x00,0xEF }; byte sn_down[4]= { 0x7E,0x02,0x01,0xEF }; byte sn_up[4]= { 0x7E,0x02,0x02,0xEF }; byte sn_eq[5]= { 0x7E,0x03,0x07,0x01,0xEF }; //----------------------------- void audio_pause() { AUDIO_PORT.write(sn_pause,4); delay(50); } void audio_play() { AUDIO_PORT.write(sn_play,4); delay(50); } //play eq (Normal/Pop/Rock/Jazz/Classic/Base) 0-5 void audio_eq(byte _audio_eq) { sn_mode[3]=_audio_eq; AUDIO_PORT.write(sn_eq,5); delay(100); } #define MODE_loopAll 0 #define MODE_loopOne 1 #define MODE_One_STOP 2 #define MODE_One_END 4 //play mode (ALL/FOL/ONE/RAM/ONE_STOP) 0-4 void audio_mode(byte _audio_mode) { sn_mode[3]=_audio_mode; AUDIO_PORT.write(sn_mode,5); delay(100); } #define DEVICE_Flash 5 #define DEVICE_TF 1 //device select (U/TF/AUX/SLEEP/FLASH) 0-4 void audio_device(byte _audio_device) { sn_device[3]=_audio_device; AUDIO_PORT.write(sn_device,5); delay(1500); } void audio_down() { AUDIO_PORT.write(sn_down,4); delay(500); } void audio_up() { AUDIO_PORT.write(sn_up,4); delay(500); } void audio_vol(byte _audio_vol) { sn_vol[3]=_audio_vol; AUDIO_PORT.write(sn_vol,5); delay(50); } void audio_choose(byte _audio_choose) { sn_choose[4]=_audio_choose; AUDIO_PORT.write(sn_choose,6); delay(100); } void audio_reset() { AUDIO_PORT.write(sn_reset,4); delay(500); } void audio_init(int _audio_init_device,int _audio_init_mode,int _audio_init_vol) { AUDIO_PORT.begin(9600); delay(500); audio_reset(); audio_device(_audio_init_device); audio_mode(_audio_init_mode); audio_vol(_audio_init_vol); audio_pause(); } </source> ==视频==
返回至
迎门人体检测/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息