基于ARM语音识别的智能家居系统
我们接下来带大家完成基于语音识别的智能家居系统嵌入式项目实战,使用到stm32开发板,讯飞的离线语音识别,我们在此之前,我们先学习一些Linux系统的基本操作。
。
一、Linux简介
在嵌入式开发中,涉及到开源(开放源码,任何人都可以下载,修改,使用)开发 ,我们就需要准备一个开源的操作系统,嵌入式开发中使用Linux操作系统。
操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等)。
操作系统在计算机系统中承上启下的地位:向下封装硬件,向上提供操作接口。
我们来介绍一下市面上常见的系统哪些是开源的:
Linux 开源 Windows 闭源 C# ROS 机器人操作系统 开源 IOS 闭源 鸿蒙OS:1.0 基于Linux 2.0分布式操作系统 开源
二、项目介绍
基于ARM语音识别的智能家居系统
我们这里不会做太复杂,我们是基于ARM开发板实现的一些小功能,我们可以实现通过语音来控制LED灯之类的。
基于语音识别的智能家居系统是一种将人工智能技术应用于家庭生活的系统,它可以通过语音识别技术实现家居设备的智能控制,例如智能灯光、智能音响、智能电视、智能锁等。用户可以通过语音指令对家居设备进行控制,实现智能化、便捷化的家居生活体验。
这种智能家居系统通常由以下组成部分构成:
- 语音识别引擎:负责将用户的语音指令转化为文字或者命令,是整个系统的关键技术。
- 控制中心:负责接收识别结果并控制家居设备的工作状态。控制中心通常是智能音箱、智能手机等设备。
- 家居设备:包括智能灯光、智能音响、智能电视、智能锁等家居设备。这些设备应当支持智能化控制,接受控制中心的指令进行相应的操作。
基于语音识别的智能家居系统可以通过接入互联网和云平台实现更多的功能,例如学习用户的习惯,自动调节家居设备的工作状态,或者获取天气、新闻等信息。这种智能家居系统已经开始普及,未来将会成为家庭生活的重要组成部分。
三、Linux目录结构
在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):
在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 文件系统层次结构标准。FHS 标准规定了 Linux 根目录各文件夹的名称及作用,统一了Linux界命名混乱的局面。
目录
- 目录是一组相关文件的集合。
- 一个目录下面除了可以存放文件之外还可以存放其他目录,即可包含子目录。
- 在确定文件、目录位置时,DOS和Unix/Linux都采用“路径名+文件名”的方式。路径反映的是目录与目录之间的关系。
路径
Unix/Linux路径由到达定位文件的目录组成。在Unix/Linux系统中组成路径的目录分割符为斜杠“/”,而DOS则用反斜杠“\”来分割各个目录。
路径分为绝对路径和相对路径:
- 绝对路径
- 绝对路径是从目录树的树根“/”目录开始往下直至到达文件所经过的所有节点目录。
- 下级目录接在上级目录后面用“/”隔开。
- 注意:绝对路径都是从“/”开始的,所以第一个字符一定是“/”。
- 相对路径
- 相对路径是指目标目录相对于当前目录的位置。
- 如果不在当前目录下,则需要使用两个特殊目录“.”和“”了。目录“.”指向当前目录,而目录“…”。
文件系统
Unix/Linux也采用了树状结构的文件系统,它由目录和目录下的文件一起构成。但Unix/Linux文件系统不使用驱动器这个概念,而是使用单一的根目录结构,所有的分区都挂载到单一的“/”目录上,其结构示意图如图所示:
- /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
- /bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
- /boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
- /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
- /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
- /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。
- /lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
- /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
- /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
- /opt:给主机额外安装软件所摆放的目录。
- /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
- /root:系统管理员root的家目录。
- /sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
- /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
- /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
- /usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
- /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
四、Ubuntu终端基本操作
我们这里使用的系统是Ubuntu系统,后面,我们会介绍如何安装Ubuntu系统。
Ubuntu系统是一种基于Linux内核的流行的开源操作系统,由Canonical Ltd.开发。它以易用性、稳定性、安全性和社区支持而闻名。Ubuntu有服务器和桌面版本,许多个人、企业和组织都在全球范围内使用它。它包括一系列软件包和工具,而且是免费使用和分发的。Ubuntu还有几个官方和社区衍生版本,每个版本都根据特定的需求和喜好定制。
打开终端: (Terminal) 1、鼠标右键打开终端 2、ctrl + alt + t
关闭: 1、窗口右上角的x 2、ctrl + d
放大: ctrl + shift + 加号(主键盘) 缩小: ctrl + shift + 减号
复制: 1、ctrl + shift + c 2、鼠标右键 粘贴: 1、ctrl + shift + v 2、鼠标右键
五、Linux基础shell命令
我们接下来,介绍一些shell指令,近几年来,尽管 Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux 命令行的应用还是占有非常重要的席位,而且许多Linux功能在命令行界面要比图形化界面下运行的快。可以说不会命令行,就不算会 Linux。
1、ls(list)
列出当前目录下所有的文件内容。
ls -a: 显示隐藏文件(不隐藏任何以 .开始的项目)
. :当前目录 .. :上层目录
ls -l :显示当前目录下所有的文件详细信息。
文件类型:(字串中的第一个字符) -:普通文件: 普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。 .txt .c .mp4 .mp3 .bmp .jpg d: 目录文件(文件夹) directory 每个目录文件至少包括两个条目,“..”表示上一级目录,“.”表示该目录本身。 c:字符设备文件 驱动文件 character b:块设备文件 驱动文件 block l:链接文件 (win中的快捷方式) link p:管道文件 进程间通信 pipe s:套接字文件 网络通信 socket
Unix/Linux对数据文件(*.mp3、*.bmp),程序文件(*.c、*.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。 在Linux系统中,一切皆是文件。
2、cd
跳转到某个文件路径。 cd + 路径
3、touch
新建普通文件 touch + 普通文件名
4、mkdir
创建目录文件 make directory mkdir + 目录文件名
5、rm
移除文件 remove rm + 文件名 :移除普通文件
rm + 文件名 + -r :遍历移除目录文件内容
6、cp
拷贝普通文件 copy cp + 源文件 + 目标文件路径
cp + 源目录 + 目标文件路径 + -r //拷贝目录文件
7、mv
剪切(移动) move mv + 源文件 + 目标文件路径
mv 重命名: mv + 原文件名 + 新文件名
8、权限切换
Unix/Linux系统中的root账号通常用于系统的维护和管理,它对Unix/Linux操作系统的所有部分具有不受限制的访问权限。 在Unix/Linux安装的过程中,系统会自动创建许多用户账号,而这些默认的用户就称为“标准用户”。
权限: 普通用户权限:只能在用户主目录进行操作。 超级权限(root):对所有文件都具有操作权限。
临时使用超级用户权限: sudo + 命令
9、chmod
修改文件权限 chmod 修改文件具有两种方式:字母法、数字法
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
- 读权限(r)
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。 - 写权限(w)
对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。 - 可执行权限(x)
对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
- 第1个字母代表文件的类型:“d” 代表文件夹、“-” 代表普通文件、“c” 代表硬件字符设备、“b” 代表硬件块设备、“s”表示管道文件、“l” 代表软链接文件。
- 后 9 个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。
每一个用户都有它自身的读、写和执行权限。
- 第一组权限控制访问自己的文件权限,即所有者权限。
- 第二组权限控制用户组访问其中一个用户的文件的权限。
- 第三组权限控制其他所有用户访问一个用户的文件的权限。
这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。
数字法: 权限打开对应1,关闭对应0. 例如:rw-rw-r--(文件权限组) 对应的八进制表示: 110110100 ---》664
还有很多的操作,大家可以自己探索。
操作系统家族发展时间线图谱