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

一、Linux简介
在嵌入式开发中,涉及到开源(开放源码,任何人都可以下载,修改,使用)开发 ,我们就需要准备一个开源的操作系统,嵌入式开发中使用Linux操作系统。
操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等)。
操作系统在计算机系统中承上启下的地位:向下封装硬件,向上提供操作接口。

我们来介绍一下市面上常见的系统哪些是开源的:
Linux 开源
Windows 闭源 C#
ROS 机器人操作系统 开源
IOS 闭源
鸿蒙OS:1.0 基于Linux 2.0分布式操作系统 开源
二、项目介绍
我们这里不会做太复杂,我们是基于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、窗口右上角的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个字母代表文件的类型:“d” 代表文件夹、“-” 代表普通文件、“c” 代表硬件字符设备、“b” 代表硬件块设备、“s”表示管道文件、“l” 代表软链接文件。
- 后 9 个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。
每一个用户都有它自身的读、写和执行权限。
- 第一组权限控制访问自己的文件权限,即所有者权限。
- 第二组权限控制用户组访问其中一个用户的文件的权限。
- 第三组权限控制其他所有用户访问一个用户的文件的权限。
这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。
数字法:权限打开对应1,关闭对应0.例如:rw-rw-r--(文件权限组) 对应的八进制表示:110110100 ---》664

还有很多的操作,大家可以自己探索。
操作系统家族发展时间线图谱

总结
我们今天主要学习Linux系统,以及相关shell操作,下一篇,我们讲介绍,如何安装Linux系统。
相关文章:
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
基于ARM语音识别的智能家居系统 我们接下来带大家完成基于语音识别的智能家居系统嵌入式项目实战,使用到stm32开发板,讯飞的离线语音识别,我们在此之前,我们先学习一些Linux系统的基本操作。 。 一、Linux简介 在嵌入式开发中&am…...
Git的简介以及基本使用
目录 一.Git的简介 拓展:Git与SVN的区别(各自的优点与缺点) 二.Git文件的4种状态 三.Git的常用命令 搭建完成之后,将项目文件也上传之后,现在模拟其他人来下载这个代码 今天就分享到这啦!!…...
django安装数据库
使用pip安装django pip3 install django注意我使用的是python3所以用pip3安装,如需安装指定版本 django ..* 检测是否安装成功,不报错,则安装成功 # python3 # import django下边这是报错的 django迁移数据库 再mysql中简历数据库 CREATE DATABA…...
springboot--外部环境配置
外部环境配置 前言1、配置优先级配置文件优先级如下(后面的覆盖前面的)测试 2、外部配置3、导入配置4、属性占位符 前言 场景:线上应用如何快速修改配置,并引用最新配置? springBoot 使用配置优先级外部配置 简化配置…...
『MySQL快速上手』-④-表的操作
文章目录 1.创建表2.查看表结构3.修改表4.删除表 1.创建表 语法格式如下: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明: field 表示列名࿱…...
2023年10月Web3行业月度发展报告区块链篇 |陀螺研究院
10月是加密动荡的一月,围绕比特币现货ETF市场激荡不断,先有Cointelegraph“假消息”搅动市场以致合约遭血洗1.89亿美元,后有灰度、DCTT接二连三释放利好,市场情绪迅速激化,流动性显著提升,USDT 总市值突破8…...
【TES745D】青翼自研基于复旦微的FMQL45T900全国产化ARM核心模块(100%国产化)
板卡概述 TES745D是一款基于上海复旦微电子FMQL45T900的全国产化ARM核心板。该核心板将复旦微的FMQL45T900(与XILINX的XC7Z045-2FFG900I兼容)的最小系统集成在了一个87*117mm的核心板上,可以作为一个核心模块,进行功能性扩展&…...
初次给外贸客户发邮件范文
以下是一米软件给大家整理的一份初次给外贸客户发邮件的示例范文。请根据您的具体情况和需求进行个性化调整。 cssCopy code 主题:初次问候与合作机会 尊敬的[客户的名字], 我希望这封邮件能找到您并使您一切安好。我是[您的名字],代表[您的公司名]。我…...
C语言中的多种形式的循环结构
C语言提供了多种循环结构,包括for循环、while循环、do-while循环和foreach循环等。 //for循环 for (int i 0; i < 10; i) { printf("%d\n", i); } //while循环 int i 0; while (i < 10) { printf("%d\n", i); i; } //do-wh…...
7天入门python系列之第二天python 基础语法
第2天主要是学习Python的基础知识 编者打算开一个python 初学主题的系列文章,用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python,这是一个紧凑的学习计划。但并不是不可完成的。第二天开始python 基础知…...
【星海出品】flask 与docker
import os from flask import Flask, request from flask import Response, make_response, jsonify import cv2 import base64 import io import uuid from main import eye app Flask(__name__) app.route(/, methods[GET, POST]) # 添加路由blend def upload_file():…...
Oracle的to_date()函数解决sql语句日期格式问题
项目场景: 提示:oracle中sql语句日期格式: 如:to_date(‘2023-01-01 13:14:20’,‘yyyy-MM-dd HH:mm:ss’) //错误写法 问题描述 改变一:24小时制 to_date(‘2005-01-01 13:14:20’,‘yyyy-MM-dd HH24:mm:ss’) //错…...
Vue实现面经基础版案例(路由+组件缓存)
一、面经基础版-案例效果分析 1.面经效果演示 2.功能分析 通过演示效果发现,主要的功能页面有两个,一个是列表页,一个是详情页,并且在列表页点击时可以跳转到详情页底部导航可以来回切换,并且切换时,只有…...
uniapp打开外部链接方式
uniapp打开外部链接方式 1、H5,打开方式 window.location.href url 2、APP,打开方式 plus.runtime.openURL(url)...
SecureCRT安装、注册教程
SecureCRT保姆级安装教程!!! 安装包与注册机自取。 链接:https://pan.baidu.com/s/1IrFkHlrtCoc67QnQ_z1TWQ?pwdt25m 提取码:t25m 一 前期准备 1.1 关闭病毒查杀(如果有其他杀毒软件也要关闭࿰…...
音乐免费下载mp3格式+音频格式转换+剪辑音频+合并音频教程
1.在qq音乐网页版搜索想要的歌曲 qq音乐网站:https://y.qq.com/ 如果你是vip可以直接下载vip的歌曲,如果不是选择不是vip的歌曲进行第一步的操作 2.点击播放进入页面后F12拿到音频地址 然后双击src里面的音频地址复制 网页新标签打开赋值的这个链接&a…...
腾讯云16核服务器配置有哪些?CPU型号处理器主频性能
腾讯云16核服务器配置大全,CVM云服务器可选择标准型S6、标准型SA3、计算型C6或标准型S5等,目前标准型S5云服务器有优惠活动,性价比高,计算型C6云服务器16核性能更高,轻量16核32G28M带宽优惠价3468元15个月,…...
什么是屏蔽机房?
屏蔽机房是一种用于保护数据中心设备的安全和可靠的措施。通过屏蔽机房,可以防止电磁干扰、防止物理入侵以及提供更好的隔离和安全性。下面是一些关于屏蔽机房的常见做法: 电磁屏蔽:为了防止电磁干扰对数据中心设备的影响,可以在屏…...
wsl2 ubuntu22.04安装docker
1. 安装 docker 官网的步骤一步一步安装即可 Install Docker Engine on Ubuntu | Docker Docs 2. 安装完毕之后,不出意外的话当你运行docker version或者其他命令的时候你会报如下错误: Cannot connect to the Docker daemon at unix:///var/run/docke…...
【Java SE】详解数组
前言:在C语言中我们已经学习过数组,接下来,我们再主要学习一下Java中的数组,在Java中,数组变得更加高效和使用。 1. 数组的基本概念 1.1 什么是数组? 数组:可以看成是相同类型元素的一个集合。…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
