查看: 171|回复: 0

【花雕动手做】ASRPRO语音识别(44)---光敏电阻光控继电器

[复制链接]

64

主题

86

帖子

477

积分

中级会员

Rank: 3Rank: 3

积分
477
发表于 2024-1-17 21:00:12 | 显示全部楼层 |阅读模式
本例实验使用光敏电阻模块

0.jpg

光敏电阻(photoresistor )
1、光敏电阻的概念——光敏电阻是用硫化镉或硒化镉等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应(光电导效应)。光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低,亮电阻值可小至1KΩ以下。光敏电阻对光线十分敏感,其在无光照时,呈高阻状态,暗电阻一般可达1.5MΩ。光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电阻器,又称为光电导探测器;入射光强,电阻减小,入射光弱,电阻增大。还有另一种入射光弱,电阻减小,入射光强,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化。光敏电阻的特殊性能,随着科技的发展将得到极其广泛应用。
2、光敏电阻的结构——在顶部有两片呈梳状的金属电极,一般分为九线跟七线,且两片金属电极的梳齿是互相交错的,从波纹状的梳齿间隙里露出来的物质即为半导体光敏层,从金属电极的上面还可以看到两只金属引脚的顶部。管芯中光导电体的膜越长,面积越大,受光后,其电阻值变化也越大。因此,一般都把光导电体膜做成弓字形(蛇形状),使两电极成为交叉的梳状。目前,用量最大的光导电体材料是硫化镉(CdS),且掺有少量铜、银等杂质,以有效提高光敏电阻的光灵敏度。结构示意图如图所示。

07.jpg

管芯是一块安装在绝缘衬底上带有两个欧姆接触电极的光电导体。光导体吸收光子而产生的光电效应,只限于光照的表面薄层,虽然产生的载流子也有少数扩散到内部去,但扩散深度有限,因此光电导体一般都做成薄层。上面是两片梳状金属电极,中间是半导体光敏层,实际上是通过涂抹、喷涂及烧结等方式,在陶瓷基板上形成一层很薄的半导体光敏层,下面是陶瓷基板,两侧是两只金属引脚。在整个结构的外部由一层透明树脂防潮膜包裹着,起到透光、防潮及加固的作用。剖面图如图所示。
06.jpg

3、光敏电阻的工作原理——是基于内光电效应(光电导效应)。在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻,为了增加灵敏度,两电极常做成梳状。用于制造光敏电阻的材料主要是金属的硫化物、硒化物和碲化物等半导体。通常采用涂敷、喷涂、烧结等方法在绝缘衬底上制作很薄的光敏电阻体及梳状欧姆电极,接出引线,封装在具有透光镜的密封壳体内,以免受潮影响其灵敏度。入射光消失后,由光子激发产生的电子—空穴对将复合,光敏电阻的阻值也就恢复原值。在光敏电阻两端的金属电极加上电压,其中便有电流通过,受到一定波长的光线照射时,电流就会随光强的增大而变大,从而实现光电转换。光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也加交流电压。半导体的导电能力取决于半导体导带内载流子数目的多少。当光照射到光电导体上时,若光电导体为本征半导体材料,而且光辐射能量又足够强,光导材料价带上的电子将激发到导带上去,从而使导带的电子和价带的空穴增加,致使光导体的电导率变大。为实现能级的跃迁,入射光的能量必须大于光导体材料的禁带宽度Eg,即式中ν和λ—入射光的频率和波长。在黑暗的环境下,它的阻值很高;当受到光照并且光辐射能量足够大时,光导材料禁带中的电子受到能量大于其禁带宽度ΔEg 的光子激发,由价带越过禁带而跃迁到导带,使其导带的电子和价带的空穴增加,电阻率变小。光敏电阻器通常由光敏层、玻璃基片(或树脂防潮膜)和电极等组成。光敏电阻器在电路中用字母“R”或“RL”、“RG”表示。

11.jpg

4、光敏电阻的主要参数——  
(1)光电流、亮电阻。光敏电阻器在一定的外加电压下,当有光照射时,流过的电流称为光电流,外加电压与光电流之比称为亮电阻,常用100LX表示。
(2)暗电流、暗电阻。光敏电阻在一定的外加电压下,当没有光照射的时候,流过的电流称为暗电流。外加电压与暗电流之比称为暗电阻,常用0LX表示。
(3)灵敏度。灵敏度是指光敏电阻不受光照射时的电阻值(暗电阻)与受光照射时的电阻值(亮电阻)的相对变化值。
(4)光谱响应。光谱响应又称光谱灵敏度,是指光敏电阻在不同波长的单色光照射下的灵敏度。若将不同波长下的灵敏度画成曲线,就可以得到光谱响应的曲线。
(5)光照特性。光照特性指光敏电阻输出的电信号随光照度而变化的特性。从光敏电阻的光照特性曲线可以看出,随着的光照强度的增加,光敏电阻的阻值开始迅速下降。若进一步增大光照强度,则电阻值变化减小,然后逐渐趋向平缓。在大多数情况下,该特性为非线性。  
(6)伏安特性曲线。伏安特性曲线用来描述光敏电阻的外加电压与光电流的关系,对于光敏器件来说,其光电流随外加电压的增大而增大。
(7)温度系数。光敏电阻的光电效应受温度影响较大,部分光敏电阻在低温下的光电灵敏较高,而在高温下的灵敏度则较低。
(8)额定功率。额定功率是指光敏电阻用于某种线路中所允许消耗的功率,当温度升高时,其消耗的功率就降低。
(9)最高工作电压 最高工作电压是指光敏电阻器在额定功率下所允许承受的最高电压。

12 (2).jpg

光敏电阻模块参数:
工作电压:DC3.3-5V
光敏电阻型号:5516
模块针脚:3针或4针(4针的多出一个模拟输出端A0)

00.jpg

电原理图

24-.jpg

25.jpg

本例实验的SPI彩色液晶1.77寸显示屏(ST7735驱动)

01.jpg

电原理图

06.jpg

SPI彩色液晶显示屏:TFT177-SPI,型号为SX177QQVGA,像素128X160TFT,驱动芯片为ST7735S,这是一款支持SPI接口的1.77寸TFT彩屏,可以显示文字、图形、图片等内容,提高用户互动体验度。

本例实验采用板载1路继电器:
型号为HF32F/005-ZS3,这是一款支持1路继电器输出的模块,可以控制高压高电流的负载设备,实现智能开关等功能。

04.jpg

【花雕动手做】实验四十九:使用光敏电阻传感器模块通过光照度控制继电器
实验开源代码

  1. #define ASC2_12
  2. #define ST7735_CS_PIN 9
  3. #define ST7735_CS_GPIO_PIN gpio_pin_1
  4. #define ST7735_DC_PIN 1
  5. #define ST7735_DC_GPIO_PIN gpio_pin_1
  6. #define ST7735_RST_PIN 25
  7. #define ST7735_RST_GPIO_PIN gpio_pin_1
  8. #define ST7735_SCK_PIN 3
  9. #define ST7735_SCK_GPIO_PIN gpio_pin_3
  10. #define ST7735_MOSI_PIN 2
  11. #define ST7735_MOSI_GPIO_PIN gpio_pin_2
  12. #define ASC2_32
  13. #define ST7735S_RGB_GBR_ORDER   0

  14. #include "asr.h"
  15. extern "C"{ void * __dso_handle = 0 ;}
  16. #include "setup.h"
  17. #include "myLib/asr_st7735.h"
  18. #include "myLib/asr_event.h"
  19. #include "myLib/asr_ws2812.h"

  20. uint32_t snid;
  21. uint16_t liangdu;
  22. void pins_attached();
  23. void hardware_init();

  24. SPITFT spi_tft(128, 160);
  25. WS2812 ASR_WS2812_27(27);
  26. //{ID:250,keyword:"命令词",ASR:"最大音量",ASRTO:"音量调整到最大"}
  27. //{ID:251,keyword:"命令词",ASR:"中等音量",ASRTO:"音量调整到中等"}
  28. //{ID:252,keyword:"命令词",ASR:"最小音量",ASRTO:"音量调整到最小"}
  29. void sys_sleep_hook()
  30. {
  31.   digital_write((21),0);
  32.   ASR_WS2812_27.pixel_set_all_color(0,0,0);
  33.   digital_write((28),0);
  34.   ASR_WS2812_27.pixel_show();

  35. }

  36. void pins_attached(){
  37.   while (1) {
  38.     if((adc_read(18) > 3000)){
  39.       delay(200);
  40.       enter_wakeup(6000);
  41.       delay(200);
  42.       digital_write((28),1);
  43.       digital_write((21),1);
  44.       spi_tft.clear((0xFFFF));
  45.       spi_tft.set_text_color((0x001F),(0xFFFF));
  46.       spi_tft.set_cursor(0,30);
  47.       spi_tft.draw_hanzi_32("光照度为");
  48.       //{ID:500,keyword:"命令词",ASR:"耍接官",ASRTO:"光照度为"}
  49.       play_audio(500);
  50.       delay(300);
  51.       liangdu = adc_read(18);
  52.       play_num((int64_t)(liangdu * 100), 1);
  53.       spi_tft.set_text_color((0xF800),(0xFFFF));
  54.       spi_tft.set_cursor(35,65);
  55.       spi_tft.set_text_size(32);
  56.       spi_tft.println((String(liangdu)));
  57.       delay(300);
  58.       spi_tft.set_text_color((0x001F),(0xFFFF));
  59.       spi_tft.set_cursor(15,100);
  60.       //{ID:501,keyword:"命令词",ASR:"接耍官",ASRTO:"天黑了,关闭窗帘睡觉吧"}
  61.       play_audio(501);
  62.       spi_tft.draw_hanzi_24("天黑睡觉");
  63.       delay(8000);
  64.     }
  65.     if((adc_read(18) < 300)){
  66.       delay(200);
  67.       enter_wakeup(6000);
  68.       delay(200);
  69.       digital_write((28),1);
  70.       digital_write((21),1);
  71.       spi_tft.clear((0xFFFF));
  72.       spi_tft.set_text_color((0x001F),(0xFFFF));
  73.       spi_tft.set_cursor(0,30);
  74.       spi_tft.draw_hanzi_32("光照度为");
  75.       //{ID:502,keyword:"命令词",ASR:"官耍接",ASRTO:"光照度为"}
  76.       play_audio(502);
  77.       delay(300);
  78.       liangdu = adc_read(18);
  79.       play_num((int64_t)(liangdu * 100), 1);
  80.       spi_tft.set_text_color((0xF800),(0xFFFF));
  81.       spi_tft.set_cursor(40,65);
  82.       spi_tft.set_text_size(32);
  83.       spi_tft.println((String(liangdu)));
  84.       delay(300);
  85.       spi_tft.set_text_color((0x001F),(0xFFFF));
  86.       spi_tft.set_cursor(15,100);
  87.       //{ID:503,keyword:"命令词",ASR:"丝耍接",ASRTO:"太阳出来了,打开窗帘"}
  88.       play_audio(503);
  89.       spi_tft.draw_hanzi_24("天亮起床");
  90.       delay(8000);
  91.     }
  92.     delay(1);
  93.   }
  94.   vTaskDelete(NULL);
  95. }

  96. void ASR_CODE()
  97. {
  98.   //{ID:504,keyword:"命令词",ASR:"当前亮度",ASRTO:"开始测量"}
  99.   if(snid == 504){
  100.     digital_write((21),1);
  101.     ASR_WS2812_27.setBrightness(30);
  102.     ASR_WS2812_27.pixel_set_all_color(255,0,0);
  103.     ASR_WS2812_27.pixel_show();
  104.     spi_tft.clear((0x001F));
  105.     spi_tft.set_text_color((0xFFFF),(0x001F));
  106.     delay(300);
  107.     spi_tft.set_cursor(0,40);
  108.     spi_tft.draw_hanzi_32("环境亮度");
  109.     delay(300);
  110.     spi_tft.set_cursor(35,80);
  111.     spi_tft.set_text_size(32);
  112.     liangdu = adc_read(18);
  113.     spi_tft.println((String(liangdu)));
  114.     //{ID:505,keyword:"命令词",ASR:"粮耍接",ASRTO:"环境亮度"}
  115.     play_audio(505);
  116.     play_num((int64_t)(liangdu * 100), 1);
  117.     delay(300);
  118.   }
  119.   //{ID:506,keyword:"命令词",ASR:"效果不错",ASRTO:"有你的鼓励真好,谢谢啦!"}
  120.   if(snid == 506){

  121.   }
  122.   //{ID:507,keyword:"唤醒词",ASR:"智能管家",ASRTO:"我在"}
  123.   if(snid == 507){
  124.     digital_write((21),1);
  125.     ASR_WS2812_27.setBrightness(30);
  126.     ASR_WS2812_27.pixel_set_all_color(0,255,0);
  127.     ASR_WS2812_27.pixel_show();
  128.     spi_tft.clear((0xF800));
  129.     spi_tft.set_text_color((0xFFFF),(0xF800));
  130.     delay(300);
  131.     spi_tft.set_cursor(15,40);
  132.     spi_tft.draw_hanzi_24("光照控制");
  133.     delay(300);
  134.     spi_tft.set_cursor(28,80);
  135.     spi_tft.draw_hanzi_24("大窗帘");
  136.   }
  137. }

  138. void hardware_init(){
  139.   spi_tft.init();
  140.   digital_write((21),0);
  141.   spi_tft.set_direction(2);
  142.   spi_tft.set_text_wrap(true);
  143.   spi_tft.set_text_size(32);
  144.   spi_tft.set_bg_mode(1);
  145.   ASR_WS2812_27.pixel_init(3);
  146.   digital_write((28),0);
  147.   pinMode(18,input);
  148.   xTaskCreate(pins_attached,"pins_attached",256,NULL,4,NULL);
  149.   vTaskDelete(NULL);
  150. }

  151. void setup()
  152. {
  153.   //{speak:小美-娇美女声,vol:16,speed:10,platform:haohaodada}
  154.   //{playid:10001,voice:欢迎使用人工智能AI语音助手,用智能管家唤醒我}
  155.   //{playid:10002,voice:我退下了}

  156.   //{ID:84,keyword:"命令词",ASR:"条耍改",ASRTO:"零"}
  157.   //{ID:85,keyword:"命令词",ASR:"官接思",ASRTO:"一"}
  158.   //{ID:86,keyword:"命令词",ASR:"痛官松",ASRTO:"二"}
  159.   //{ID:87,keyword:"命令词",ASR:"削丝误",ASRTO:"三"}
  160.   //{ID:88,keyword:"命令词",ASR:"景粮载",ASRTO:"四"}
  161.   //{ID:89,keyword:"命令词",ASR:"博菌避",ASRTO:"五"}
  162.   //{ID:90,keyword:"命令词",ASR:"裁纯碉",ASRTO:"六"}
  163.   //{ID:91,keyword:"命令词",ASR:"插趣悟",ASRTO:"七"}
  164.   //{ID:92,keyword:"命令词",ASR:"辞暖慌",ASRTO:"八"}
  165.   //{ID:93,keyword:"命令词",ASR:"纵猛淡",ASRTO:"九"}
  166.   //{ID:94,keyword:"命令词",ASR:"锦耗暂",ASRTO:"十"}
  167.   //{ID:95,keyword:"命令词",ASR:"燃智截",ASRTO:"百"}
  168.   //{ID:96,keyword:"命令词",ASR:"佛驻延",ASRTO:"千"}
  169.   //{ID:97,keyword:"命令词",ASR:"隔枪绍",ASRTO:"万"}
  170.   //{ID:98,keyword:"命令词",ASR:"惨愤昂",ASRTO:"亿"}
  171.   //{ID:99,keyword:"命令词",ASR:"丙迈扯",ASRTO:"负"}
  172.   //{ID:100,keyword:"命令词",ASR:"铸猜隆",ASRTO:"点"}
  173.   xTaskCreate(hardware_init,"hardware_init",256,NULL,100,NULL);
  174. }
复制代码

生成模型与编译烧录

11.jpg

12.jpg

实验记录视频

【【花雕动手做】ASRPRO语音识别(44)---光敏电阻光控继电器】 https://www.bilibili.com/video/BV1Ni4y1q7xf/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987



14 (4).jpg

14 (3).jpg

14 (1).jpg

14 (2).jpg


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-4-28 09:52 , Processed in 0.344159 second(s), 26 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表