合肥中科深谷嵌入式项目实战——基于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、窗口右上角的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. 第1个字母代表文件的类型:“d” 代表文件夹、“-” 代表普通文件、“c” 代表硬件字符设备、“b” 代表硬件块设备、“s”表示管道文件、“l” 代表软链接文件。
  2. 后 9 个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。

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

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

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

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

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

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

在这里插入图片描述

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/135510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

matlab 二自由度操纵稳定性汽车模型

1、内容简介 略 19-可以交流、咨询、答疑 二自由度操纵稳定性汽车模型 二自由度、操纵稳定性、操纵动力学 2、内容说明 1 模型假设 忽略转向系的影响,以前、后轮转角作为输入;汽车只进行平行于地面的平面运动,而忽略悬架的作用&#xf…

从虚拟机下载开始的kubeSphere安装

目录 一、虚拟机安装 二、镜像下载安装 1、镜像下载 2、虚拟机创建 3、虚拟机系统安装 三、虚拟机配置 1、IP固定 2、配置yum阿里源 3、关闭防火墙 4、 关闭selinux 5、 禁止swap交换 6、内核参数修改 7、设置kubernetes源 四、docker安装 五、虚拟机分组 六、…

华为ensp:开启rstp修改根网桥

开启rstp 首先去三台交换机上进入系统视图分别开启rstp模式 stp mode rstp 三台交换机上都执行这个命令,就开启rstp模式了 修改根网桥 现在进入要被修改的交换机的系统视图 stp priority 4096 这里我们修改只要比别的交换机数值小就可以,最小的就是…

振南技术干货集:研发版本乱到“妈不认”? Git!(4)

注解目录 1、关于 Git 1.1Git 今生 (Git 和 Linux 的生父都是 Linus,振南给你讲讲当初关于 Git 的爱恨情愁,其背后其实是开源与闭源两左阵营的明争暗斗。) 1.2Git的爆发 (Git 超越时代的分布式思想。振南再给你讲讲旧金山三个年轻人创办 GitHub&…

(一)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

Java 简单实现一个 UDP 回显服务器

文章目录 UDP 服务端UDP 客户端实现效果UDP 服务端(实现字典功能)总结 UDP 服务端 package network;import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;public class UdpEchoServer {private Da…

如何判断从本机上传到服务器的文件数据内容是一致的?用md5加密算法!

问题场景 最近在帮导师做横向,我想把整个项目环境放到服务器中,需要把一个很大的数据文件传到服务器,传上去很方便,但是涉及到文件的压缩上传和服务器内解压环节,不是太确定文件在本机和服务器的数据内容是否一致。 解…

C/C++调试工具 - gdb详解

C/C调试工具 -gdb详解 1 简介 2 常用的命令 3 使用的条件 4 程序调试 4.1 直接运行程序 4.2 断点调试(在某一行) 4.3 断点调试(在函数入口处打断点) 5 调试core文件 5.1 生成core文件的方法 5.2 调试core文件 1 简介 GDB是Linux下非常好用且强大的调试工具。GD…

使用 Ruby 的 Nokogiri 库来解析

爬虫程序的主要目标是获取指定网站上的数据。在这里,我们将使用 Ruby 的 Nokogiri 库来解析 HTML,并使用 HTTParty 库来发送 HTTP 请求。下面是一个简单的示例,演示如何使用 Ruby 编写一个爬虫程序来爬取 1688 网站的数据。 require nokogir…

CentOS 7上Root用户使用ifconfig命令无结果

假如遇到如下情况,在CentOS 7上使用root用户运行ifconfig命令没有结果,如图所示: 这可能是因为缺少网络工具包或ifconfig命令不在root用户的PATH环境变量中。 可以尝试以下解决方法: 1.检查PATH环境变量:确保PATH环境…

域名无法访问了,如何找回浏览器的缓存

背景需求 双十一即将来临,这意味着我购买了三年低配的阿里服务器,而它的服务期限也即将到期。为了提前做好准备,我在一周前对静态网站进行了备份,并成功地使用了Vercel进行部署(已经有了域名)。相比于付费…

MySQL join原理及优化

MySQL的JOIN原理是基于索引和算法的。在执行JOIN查询时,MySQL会根据连接字段上的索引来查找匹配的记录。 这种算法在链接查询的时候,驱动表会根据关联字段的索引进行查找,当在索引上找到了符合的值,再回表进行查询,也就…

【STM32】TIM2的PWM:脉冲宽度调制--标准库

注意点: TIM_Period---->指要进行比较的值Compare TIM_Prescaler----> 指要进行分频的值【分频值/原始时钟值】 PWM是一种周期固定,脉宽可调整的输出波形。 https://www.cnblogs.com/brianblog/p/7117896.html 0.通用寄存器输出 1.捕获/比较通道…

redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。

大家如果对使用netty搞这些http请求什么的感兴趣的,可以参观我自己创建的这个项目。 nanshaws/nettyWeb: 复习一下netty,并打算做一个web项目出来 (github.com) Redis的基本命令包括: SET key value:设置指定key的值。 GET key…

Halcon WPF 开发学习笔记:HSmartWindowControlWPF正常加载

文章目录 加载问题相关文章彻底解决 加载问题 我们在WPF中使用Halcon的时候,会出现图片被拉伸的问题,需要拖动才可以解决,我网上找了好久,终于找到了如何成功解决这个问题。 相关文章 3.7 Halcon 窗体显示对象消失问题 【halcon】…

2023年第十六届山东省职业院校技能大赛高职组“信息安全管理与评估”赛项规程

第十六届山东省职业院校技能大赛 高职组“信息安全管理与评估”赛项规程 一、赛项名称 赛项名称:信息安全管理与评估 英文名称:Information Security Management and Evaluation 赛项组别:高职组 赛项归属:电子与信息大类 二…

【Java】反射

1.什么是反射机制? Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 的反射机制…

[Go语言]SSTI从0到1

[Go语言]SSTI从0到1 1.Go-web基础及示例2.参数处理3.模版引擎3.1 text/template3.2 SSTI 4.[LineCTF2022]gotm1.题目源码2.WP 1.Go-web基础及示例 package main import ("fmt""net/http" ) func sayHello(w http.ResponseWriter, r *http.Request) { // 定…

spring-cloud-stream

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

gma 2.0.3 (2023.11.12) 更新日志

安装 gma 2.0.3 pip install gma2.0.3新增 此版本为 gma 2 功能更新最大的版本,且主要集中在矢量数据处理上。 0.1 io.ReadVector:直接打开矢量数据为Layer,用以简化io.Open.GetLayer 过程。Layer的新增功能如下: 序号功能性质说…