关注树莓派很久了,只是没有很感兴趣的应用场景,就没有买来玩。几个月前偶然得到一个小度音箱,发现了新大陆,各种语音控制功能,便捷性不言而喻,还买了一些外部设备可以通过小度控制,发现有红外遥控器可以控制家里的大部分红外家电,奈何码库不是很全,有些设备还是不能控制的,而且不支持定制功能。恰好在知乎看到了一些 geek 视频,想着自己也做一个,可以支持红外数据的定制,做到自由遥控。于是乎说干就干,从一个什么硬件都不懂的小白一步步的了解了点硬件知识,软件部分相对好实现一些。主要计划的功能是通过语音来控制红外家电、温湿度监控以及智能提醒等功能,先完成主体框架然后再不断开发插件形式来增强可玩性。

计划主要分为两个子系统

  1. 软件子系统,主要实现语音到文字和文字到语音的转换,逻辑功能的处理等。
  2. 硬件子系统提供收音、音箱、温湿度传感器、红外收发、系统供电等能力的支持。

总体功能点进度如下

  • ok 显示,信息简单展示界面,计划采用 OLED12832 屏。
  • ok 收音,收集外接语音信息。
  • ok 音响,输出系统响应结果。
  • 温湿度,收集设备所处环境的温度和湿度。
  • ok 风扇,硬件系统散热。
  • ok 红外收/发,红外设备系统的录入和红外信号的发射,用于控制红外家电。
  • 供电模块,给音响和树莓派硬件供电。
  • ok pcb 电路版设计,传感器集成。
  • 3d 打印外壳,最后根据硬件的排列情况定制一个简洁的外壳。
  • ok 语音汉字互转,计划采用讯飞 API 接口实现,后面尝试做简单的语音识别模型。
  • ok 逻辑控制和输出输入设备控制模块,基于硬件传感器数据的采集和信息的归纳整理能力。

硬件部分

一直以来都是做的软件,这次从 0 到 1 一点点学的硬件,到 PCB 打样,焊板。也没研究什么设计规范,按照能用的级别做的。

实验数据收集

树莓派4 GPIO 引脚

关于树莓派 IO 接口部分参考了:

树莓派IO接口你了解吗?看完这篇就够了

一、电源输出引脚

3v3、5v代表:3.3伏特和5伏特,是输出供电的正极,也就是我们常说的Vcc

GND代表接地和输出供电的负极

特别注意:每个引脚最大输出电流为16毫安(mA),且同一时刻所有引脚的总输出电流不超过51毫安

二、GPIO

GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。GPIO是个比较重要的概念,用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。GPIO口的使用非常广泛。掌握了GPIO,差不多相当于掌握了操作硬件的能力。树莓派有26个GPIO接口,其中有一部分是复用接口。

  1. 引脚3、5为IC总线复用接口
  2. 引脚7为(GCLK)全局时钟引脚复用接口
  3. 引脚19、21、23为SPI总线复用接口
  4. 引脚8、10为串口复用接口,TX发送,RX接收
  5. 引脚12、32、33、35为PWM复用接口

三、IC总线

IC是内部整合电路的称呼,是一种串行通讯总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边装置而发展。IC的正确读法为”Inter-Integrated Circuit” 。

  • SDA:数据线
  • SCL:时钟线

四、SPI总线

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。

  • MISO:数据输入
  • MOSI:数据输出
  • SCLK:时钟信号
  • SS:使能信号

五、UART总线

UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。
可以理解为计算机的串口。RS232、TTL。

  • RX是接收
  • TX是发送

六、PWM脉冲宽度调制

脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

AD 教程

AD 使用与硬件电路图画图和PCB图设计使用的。主要是看了B站的一个入门视频教程,然后再不断搜搜改改来实现的。

B 站上的一小时速成教程:

Altium Designer一小时快速入门

其它参考资料:

详解如何用AD 生成Gerber文件
如何制作一张印刷电路板(PCB)的3D渲染效果图?

单位转换

  • 1.0mil = 0.025mm
  • 1.2mil = 0.030mm
  • 1.25mil = 0.032mm

DHT11 温湿度传感器

下面是温湿度传感器的基本电路图,这里本来是3pin方案到树莓派的,板子上也画好了,只不过在焊接的时候没有处理好,现在系统始终无法正确读数,只是在测试期间能正常读。

树莓派直接读取 DHT11 温湿度的方法

OLED 12832

这里使用了 Adafruit_Python_SSD1306 库来驱动液晶屏显示。

在树莓派上使用 SSD1306 OLED 屏幕

IR 收发

红外发射图,这里只画了两个,实际我是配置了4个红外发射二极管,限流电阻调整成 100R。

红外接收图,主要是引脚的情况,这里直接使用已经简单封装的传感器

IR的收发是主要调试的功能:

红外录入功能使用: 安装 Linux 下的红外控制库:

sudo apt-get updatesudo apt-get install lirc

更新 /boot/config.txt 文件来开启红外收发接口:

# Uncomment this to enable the lirc-rpi module
dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=18,gpio_in_pull=up

更新 /etc/lirc/lirc_options.conf 文件来控制当前是接收模式还是发射模式,修改完重启服务生效:

device=/dev/lirc0

测试能否正常接收到红外信号:

mode2 -d /dev/lirc0space 16777215
pulse 8999
space 4457
pulse 680
space 1627
......

可以通过 lirc 录制简单的红外设备生成遥控文件,如果空调这种比较复杂的不太好弄。

# 查看按键名称,这里一个红外码是绑定到一个按键上的,你需要找一些你录制的按键然后记下来。
irrecord -l
# 开启录制命令,这个录制过程比较复杂,需要先判断环境噪音,然后随机按键,最后才是录制按键,而我的有些红外设备按键无法录上有点奇怪,目前只有台灯的录进去了。
irrecord ~/lircd.conf
# 如果有问题可以录制 raw code
irrecord -f ~/lircd.conf

录制好的文件内容像下面这样,如果没有内容则说明没有录制上。

begin remotename myirflags RAW_CODES|CONST_LENGTHeps 30aeps 100gap 108055begin raw_codesname KEY_19062 4462 621 531 627 532626 531 626 532 629 531601 556 627 531 628 530628 1610 629 1611 603 1636603 1636 629 1612 629 1609631 1609 630 1610 627 1612630 530 629 1608 629 532626 534 625 532 628 1609629 532 628 529 630 1609629 530 626 1612 629 1610629 1610 629 540 633 1596629name KEY_29067 4455 632 528 630 528633 524 631 529 630 529630 528 630 530 630 528

最后要把录制的文件内容复制到对应目录,重启,让 lirc 服务能加载上:

sudo cp ~/xx.lircd.conf /etc/lirc/lircd.d/xx.lircd.conf

实际上发送按键需要执行的命令包含你复制的文件名(device-name)以及按键名(KEY_1):

 irsend SEND_ONCE <device-name> KEY_1

红外输入输出参考

使用LIRC为Raspberry PI(RPi)设置IR远程控制树莓派 ——红外遥控篇lirc【内核4.19.x】
人类身份验证 - SegmentFault树莓派:红外遥控测试
树莓派3B-------使用lirc配置遥控器 - Huang路飞 - 博客园
树莓派4B 4.19.X内核,红外接收与发送(附python发送红外)教程

发现,作为一个小白,参考了很多的文章,这里在录制的时候也踩了很多坑。

软件部分

简单的将软件部分分为前台功能和后台功能,前台功能主要是面向用户使用层面,后台功能主要是配置相关功能。代码就不上了先。

前台功能分为三个模块,输入模块、逻辑处理模块和输出模块。

其中热词唤醒方案使用的 snowboy ,语音文字互转采用的讯飞免费接口,后面可以考虑实现一些简单的部分。

按照这个方案,后续只要不断配置和扩展功能即可,主要处理流程不会有太大变化产生。

语音部分参考

树莓派使用 snowboy 配置语音唤醒
离线语音Snowboy热词唤醒+ 树莓派语音交互实现开关灯
Python人工智能之路 - 第三篇 : PyAudio 实现录音 自动化交互实现问答
语音听写(流式版)WebAPI 文档 | 讯飞开放平台文档中心
语音合成(流式版)WebAPI 文档 | 讯飞开放平台文档中心
讯飞开放平台语音识别音频文件格式说明 | 讯飞开放平台文档中心

软件部分等优化后再放出来。

总结

目前一期实现了核心部分的功能,可以语音控制普通红外家电,耗时有两周(晚上),目前的时间精力上也只能做到这样,毕竟工作和生活还要占据绝大部分时间的。使用上流程比较简单,插电开机自启动后就可以了,只是语音和音箱部分还没有很方便的集成到整个项目里面。下一期做的时候计划优化电路,支持更多的传感器,然后把麦和音箱集成进去,再做一个外壳。
整个项目从计划到实施还是学到了一些,主要是硬件方面上的了解,电路原理图、PCB画图打样、硬件电路 IO 接口标准等,软件部分并没有太多的实践,准备放到三期做软件层面的优化,把外部 API 调用改成自己训练的语音模型。

欢迎私信交流~

最后关于树莓派的推荐商品:

嘉立创定制PCB打样 批量生产 激光钢网 SMT打样贴片加工 源头厂家

树莓派还能这么玩之做一个语音音箱相关推荐

  1. 浙江移动智能语音服务器,电视还能这样玩?中国移动智能语音遥控器,让电视机听你的...

    原标题:电视还能这样玩?中国移动智能语音遥控器,让电视机听你的 随着物联网技术的快速发展,我们的生活也变得越来越便利. 智能家居.远程监控.智慧安防等,先进的科技让我们的生活有了更多惊喜.而现在,中国 ...

  2. 还在想假期去哪玩?直接做一个旅游攻略小程序

    憋了几年好不容易解封准备出去散散心,但看着大江南北这么多景点是不是有点让你选择强迫症呢?那就先制作一个旅游攻略小程序看看驴友们的分享吧.

  3. 整个canvas玩一玩,做一个简单的水印相机小程序

    目录 体验地址 前言 一.知识点介绍 1.小程序camera组件 2.腾讯位置微信sdk 3.微信小程序Canvas相关API(就不多说了) 二.拍照添加水印(核心部分) 体验地址 前言 核心js代码 ...

  4. 用树莓派连接有线音箱做一个蓝牙音箱

    原文地址:https://wangye.org/blog/archives/921/ 今天琢磨着如何在树莓派上挖掘出一些新玩意儿,正好上次为了试验iBeacon低功耗蓝牙基站买的一块USB蓝牙接收适配 ...

  5. 四位数码管树莓派c语言,用树莓派和四位数码管模块做一个时钟

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 预备知识 如图,这是一个4位数码管模块,由两片 74HC595 级联控制,引脚如图,从上到下,分别为VCC(3.3V/5 ...

  6. Python还能这么玩?Turtle一个上帝的指纹!(斐波那契螺旋线)

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...

  7. 【一分钟学会】用python做一个语音对话ChatGPT的程序——打造私人语音助手

    本项目灵感来源是我的一个专业课程设计,当时耗时近四天在网上都没找到十分有用的信息. 以下是本项目完整的步骤流程,算是对自己工作的一个阶段性总结.希望同感兴趣的小伙伴们相互探讨.交流和学习. 一.准备工 ...

  8. Unity实战篇 | 接入 声网SDK 实现 音频通话 —— 自己动手做一个 语音聊天房

    目录

  9. 【树莓派】做一个备份镜像

    在做树莓派镜像时候,遇到了一点问题,参考这篇文章,再重试一下. Adafruit的树莓派教程第一课福利:做一个备份镜像 04/08/2014 Boyd Wang Adafruit树莓派教程 , 树莓派 ...

  10. 开关面板如何自己印字_如何自己动手做一个智能开关

    现在的智能家居这么火,对于想自己动手的小伙伴们来说,都想自己去做一些家里使用 的智设备.现在的中国不缺卖唱卖惨的,缺的是能动手创造一些能实际使用的而不是哗众取宠的人,天天喊着要反击外国技术封锁.那么我 ...

最新文章

  1. NSThread 多线程相关
  2. SAP 对HU做转库操作,系统报错 - 系统状态HUAS是活动的 - 分析
  3. 宝塔安装php遇错libicui18n.so.42: cannot open shared object file: No such file or directory
  4. Java之品优购课程讲义_day20(5)
  5. 椭圆形中间一个大写的v_静安区椭圆形桥梁空心板橡胶气囊,方形桥梁板橡胶气囊_冠桥橡胶...
  6. 米莱迪机器人加物理攻击_王者荣耀:“不死流”白起崛起,秒回8500血完克米莱迪...
  7. 2019web前端全新面试题库 一
  8. 计算机制图师岗位技能要求,机械制图员
  9. 序列平稳性和纯随机性检验
  10. 计算机屏幕截图按什么键,电脑按什么键自由截图
  11. TP5使用easywechat进行微信Native扫码支付
  12. lol人物模型提取(八)
  13. 书籍推荐:国内第一本ASP.NET 3.5 MVC技术专著
  14. 百度地图 web 只显示地图
  15. IoT-阿里云物接入套件
  16. 盛大渗透全纪实之SVN猎手
  17. 微信被爆出存在高危漏洞!(快扩散)
  18. Qt实战:云曦聊天室篇
  19. [实战解读]羽毛球双打技术之提高双打攻守意识
  20. html 鼠标经过表格列,JavaScript实现鼠标经过表格某行时此行变色

热门文章

  1. MySQL数据库主从双向同步
  2. Verilog算法入门
  3. ppt制作弹跳的小球动画效果_你不能错过的PPT制作酷炫弹跳的小球教程
  4. stm32数据手册boot_stm32f103中文手册.pdf
  5. iphone6连接电脑后计算机不显示器,苹果手机怎么连接电脑没反应
  6. 微信小程序tap事件中target与currentTarget的区别
  7. 网络编程-网路七层协议图
  8. 傲梅分区助手 linux,傲梅分区助手(详解磁盘操作)
  9. Vim插件(二) Buffers窗口
  10. 室温金刚石共聚焦平台