合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)

本文主要是介绍合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于ARM语音识别的智能家居系统

我们接下来带大家完成基于语音识别的智能家居系统嵌入式项目实战,使用到stm32开发板,讯飞的离线语音识别,我们在此之前,我们先学习一些Linux系统的基本操作。

Alt

一、Linux简介

在嵌入式开发中,涉及到开源(开放源码,任何人都可以下载,修改,使用)开发 ,我们就需要准备一个开源的操作系统,嵌入式开发中使用Linux操作系统。

操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等)。

操作系统在计算机系统中承上启下的地位:向下封装硬件,向上提供操作接口。

我们来介绍一下市面上常见的系统哪些是开源的:

Linux  开源    
Windows 闭源   C#
ROS  机器人操作系统 开源
IOS 闭源
鸿蒙OS:1.0 基于Linux    2.0分布式操作系统   开源

二、项目介绍

基于ARM语音识别的智能家居系统

我们这里不会做太复杂,我们是基于ARM开发板实现的一些小功能,我们可以实现通过语音来控制LED灯之类的。

基于语音识别的智能家居系统是一种将人工智能技术应用于家庭生活的系统,它可以通过语音识别技术实现家居设备的智能控制,例如智能灯光、智能音响、智能电视、智能锁等。用户可以通过语音指令对家居设备进行控制,实现智能化、便捷化的家居生活体验。

这种智能家居系统通常由以下组成部分构成:

  1. 语音识别引擎:负责将用户的语音指令转化为文字或者命令,是整个系统的关键技术。

  2. 控制中心:负责接收识别结果并控制家居设备的工作状态。控制中心通常是智能音箱、智能手机等设备。

  3. 家居设备:包括智能灯光、智能音响、智能电视、智能锁等家居设备。这些设备应当支持智能化控制,接受控制中心的指令进行相应的操作。

基于语音识别的智能家居系统可以通过接入互联网和云平台实现更多的功能,例如学习用户的习惯,自动调节家居设备的工作状态,或者获取天气、新闻等信息。这种智能家居系统已经开始普及,未来将会成为家庭生活的重要组成部分。

在这里插入图片描述

三、Linux目录结构

在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):
在这里插入图片描述

在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 文件系统层次结构标准。FHS 标准规定了 Linux 根目录各文件夹的名称及作用,统一了Linux界命名混乱的局面。

目录

  • 目录是一组相关文件的集合。
  • 一个目录下面除了可以存放文件之外还可以存放其他目录,即可包含子目录。
  • 在确定文件、目录位置时,DOS和Unix/Linux都采用“路径名+文件名”的方式。路径反映的是目录与目录之间的关系。

路径

Unix/Linux路径由到达定位文件的目录组成。在Unix/Linux系统中组成路径的目录分割符为斜杠“/”,而DOS则用反斜杠“\”来分割各个目录。

路径分为绝对路径和相对路径:

  • 绝对路径
  1. 绝对路径是从目录树的树根“/”目录开始往下直至到达文件所经过的所有节点目录。
  2. 下级目录接在上级目录后面用“/”隔开。
  3. 注意:绝对路径都是从“/”开始的,所以第一个字符一定是“/”。
  • 相对路径
  1. 相对路径是指目标目录相对于当前目录的位置。
  2. 如果不在当前目录下,则需要使用两个特殊目录“.”和“”了。目录“.”指向当前目录,而目录“…”。

文件系统

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、窗口右上角的x2、ctrl + d
放大:ctrl + shift + 加号(主键盘)
缩小:ctrl + shift + 减号
复制:1、ctrl + shift + c2、鼠标右键
粘贴:1、ctrl + shift + v2、鼠标右键

五、Linux基础shell命令

我们接下来,介绍一些shell指令,近几年来,尽管 Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux 命令行的应用还是占有非常重要的席位,而且许多Linux功能在命令行界面要比图形化界面下运行的快。可以说不会命令行,就不算会 Linux。

1、ls(list)
列出当前目录下所有的文件内容。

在这里插入图片描述

ls -a:   显示隐藏文件(不隐藏任何以 .开始的项目)

在这里插入图片描述

.    :当前目录
..   :上层目录
ls -l :显示当前目录下所有的文件详细信息。

在这里插入图片描述

在这里插入图片描述

文件类型:(字串中的第一个字符)-:普通文件: 普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。   .txt   .c    .mp4   .mp3   .bmp   .jpgd: 目录文件(文件夹)   directory每个目录文件至少包括两个条目,“..”表示上一级目录,“.”表示该目录本身。c:字符设备文件  驱动文件      characterb:块设备文件 驱动文件   blockl:链接文件 (win中的快捷方式)  linkp:管道文件  进程间通信    pipes:套接字文件  网络通信  socket
Unix/Linux对数据文件(*.mp3、*.bmp),程序文件(*.c、*.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。在Linux系统中,一切皆是文件。
2、cd
跳转到某个文件路径。cd + 路径

在这里插入图片描述

3、touch
新建普通文件touch + 普通文件名

在这里插入图片描述

4、mkdir
创建目录文件  make directorymkdir + 目录文件名

在这里插入图片描述

5、rm
移除文件   removerm + 文件名    :移除普通文件

在这里插入图片描述

	rm + 文件名 + -r   :遍历移除目录文件内容

在这里插入图片描述

6、cp
拷贝普通文件  copycp + 源文件 + 目标文件路径

在这里插入图片描述

cp + 源目录 + 目标文件路径 + -r      //拷贝目录文件

在这里插入图片描述

7、mv
剪切(移动)  movemv + 源文件 + 目标文件路径

在这里插入图片描述

mv 重命名:
mv + 原文件名 + 新文件名

在这里插入图片描述

8、权限切换
	Unix/Linux系统中的root账号通常用于系统的维护和管理,它对Unix/Linux操作系统的所有部分具有不受限制的访问权限。在Unix/Linux安装的过程中,系统会自动创建许多用户账号,而这些默认的用户就称为“标准用户”。
权限:普通用户权限:只能在用户主目录进行操作。超级权限(root):对所有文件都具有操作权限。
临时使用超级用户权限:sudo + 命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

9、chmod
修改文件权限chmod 修改文件具有两种方式:字母法、数字法

用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:

  • 读权限(r)
    对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。

  • 写权限(w)
    对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。

  • 可执行权限(x)
    对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

在这里插入图片描述

  1. 第1个字母代表文件的类型:“d” 代表文件夹、“-” 代表普通文件、“c” 代表硬件字符设备、“b” 代表硬件块设备、“s”表示管道文件、“l” 代表软链接文件。
  2. 后 9 个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。

每一个用户都有它自身的读、写和执行权限。

  • 第一组权限控制访问自己的文件权限,即所有者权限。
  • 第二组权限控制用户组访问其中一个用户的文件的权限。
  • 第三组权限控制其他所有用户访问一个用户的文件的权限。

这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。

数字法:权限打开对应1,关闭对应0.例如:rw-rw-r--(文件权限组) 对应的八进制表示:110110100  ---》664

在这里插入图片描述
还有很多的操作,大家可以自己探索。

操作系统家族发展时间线图谱

在这里插入图片描述

总结

我们今天主要学习Linux系统,以及相关shell操作,下一篇,我们讲介绍,如何安装Linux系统。

这篇关于合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/366932

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor