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

这篇具有很好参考价值的文章主要介绍了合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

我们上一篇,我们实现在Linux系统下编译程序,我们首先通过两个小练习来熟悉一下如何去编译。今天,我们来介绍一下LCD屏幕基本使用。

一、LCD屏幕基本使用

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

如何使用LCD屏幕?
    1、打开开发板LCD设备驱动文件。  (/dev/fb0)
    2、准备颜色数据。
    3、写入颜色像素点数据。
    4、关闭设备文件。

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

示例代码:

#include <stdio.h> 
#include <sys/types.h>  //open()
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>    //write()

int main()  
{
	//1、打开开发板LCD设备驱动文件。  (/dev/fb0)
	int lcd_fd = open("/dev/fb0", O_RDWR);
	if(lcd_fd == -1)
	{
		perror("open lcd_fd failed!");  //通过错误码打印错误信息
		return -1;   //程序非正常结束
	}
	
	//2、准备颜色数据。
	int buf[1024*600] = {0};        //像素数据缓冲区
	// A R G B :  0 255 0 0  -----> 0x00FF0000;
	int R = 0x00FF0000;
	
	int i;
	for(i = 0; i<1024*600; i++)
	{
		buf[i] =  R;
	}
	
	//3、写入颜色像素点数据。
	int w_size = write(lcd_fd, buf, 1024*600*4);
	
	//4、关闭设备文件。
	close(lcd_fd);

	return 0;
}

二、开发板运行程序

1、在Ubuntu平台上使用交叉编译器arm-linux-gcc 编译程序。

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

2、下载程序到开发板。

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

3、给予权限,运行程序。

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

三、界面显示(bmp图片)

bmp:BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式。
​
它是用位映射存储的方式的图片格式,图像数据中的RGB数据直接可以使用。

1、图片准备

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

2、显示bmp图片

1、打开开发板LCD设备驱动文件。  (/dev/fb0)
2、打开bmp图片文件。
3、读取bmp图片像素颜色数据。
4、写入颜色像素点数据到LCD。
5、关闭设备关闭文件。
头文件: 
    #include <unistd.h>
函数原型:
    ssize_t read(int fd, void *buf, size_t count);
    从文件描述符fd指代的文件中,读取count字节数据存入buf指向缓冲区中。
参数列表:
    int fd:读取的目标文件的文件描述符。
    void *buf:存储读到的数据的内存缓冲区。
    size_t count:要读取的字节数。
返回值:
    成功: 成功读取的字节个数。
    失败: -1,并且errno被设置。

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

示例代码:

#include <stdio.h> 
#include <sys/types.h>  //open()
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>    //write()

int showBmp(char *bmp_path)
{
	//1、打开开发板LCD设备驱动文件。  (/dev/fb0)
	int lcd_fd = open("/dev/fb0", O_RDWR);
	if(lcd_fd == -1)
	{
		perror("open lcd failed!");  //通过错误码打印错误信息
		return -1;   //程序非正常结束
	}
	
	//2、打开bmp图片文件。
	int bmp_fd = open(bmp_path, O_RDWR);
	if(bmp_fd == -1)
	{
		perror("open bmp failed!");  //通过错误码打印错误信息
		return -1;   //程序非正常结束
	}
	
	//3、读取bmp图片像素颜色数据。
	//文件偏移量(光标),从文件开始位置偏移54字节,去除无效数据。
	char buf[54] = {0};
	read(bmp_fd, buf, 54);
		
	char bmp_buf[1024*600*3] = {0};
	read(bmp_fd, bmp_buf, 1024*600*3);
	
	//3.1数据处理
	//将3字节的bgr 的bmp图像像素点数据处理为 lcd 屏幕所需要的 argb像素数据
	int lcd_buf[1024*600] = {0};  //lcd 像素数据缓冲区
	
	int i, j = 0;
	for(i = 0; i<1024*600; i++, j+=3)
	{
		//  ARGB        b   			g					r  			a
		lcd_buf[i] = bmp_buf[0+j]<<0 | bmp_buf[1+j]<<8 | bmp_buf[2+j]<<16 | 0x00<<24;
	}
	
	//3.2 图片上下翻转
	int show_buf[1024*600] = {0};  //lcd 像素数据缓冲区
	int x, y;
	for(y = 0; y<600; y++)
	{
		for(x = 0; x<1024; x++)
		{
			show_buf[y*1024+x] = lcd_buf[(599-y)*1024+x];
		}
	}
	
	//4、写入颜色像素点数据到LCD。
	write(lcd_fd, show_buf, 1024*600*4);
	
	//5、关闭设备,关闭文件。
	close(lcd_fd);
	close(bmp_fd);
	
	return 0;
}

int main()  
{
	showBmp("./1.bmp");

	return 0;
}

四、音视频播放:

mplayer 是一款开源的多媒体播放器,可以用来播放音视频,mplayer 自带多种格式的解码器,不需要我们再另外安装。开发板并未安装配置mplayer,需要自行移植。

直接移植我提供的mplayer:

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

文件使用说明:

alsa-lib--lib.tar.gz:

此为alsa-lib的编译结果 lib库文件压缩包,先把该文件拷贝到开发板。

tftp下载命令为: tftp 192.168.1.100 -gr alsa-lib--lib.tar.gz

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

解压,并将此目录下的所有库文件拷贝到开发板的/usr/lib 目录下。

解压命令为: tar -zxvf alsa-lib--lib.tar.gz
进入解压目录:  cd lib/ 
拷贝到/usr/lib目录下: cp ./* /usr/lib -r

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

arm-alsa.tar.gz:

         此为alsa-lib编译出的配置文件压缩包,把该文件拷贝到开发板。

tftp下载命令为: tftp 192.168.1.100 -gr arm-alsa.tar.gz

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

解压后,将此目录下所有文件拷贝开发板的 /usr/share/arm-alsa 目录下。(需要先在开发板根文件系统中也创建一个/usr/share/arm-alsa 目录)

  1. 新建arm-alsa/目录: mkdir /usr/share/arm-alsa (空格) -p 
  2. 新建arm-alsa/目录: mkdir /usr/share/arm-alsa (空格) -p 
  3. 拷贝到/usr/share/arm-alsa目录:    cp ./arm-alsa/* /usr/share/arm-alsa/ -r

 合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

zlib--lib.tar.gz:

此文件为zlib的编译结果lib库文件压缩包,先把该文件拷贝到开发板。

tftp下载命令为: tftp 192.168.1.100 -gr zlib--lib.tar.gz

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

解压后,将此目录下的 lib 库文件拷贝到开发板根文件系统的/usr/lib 目录下。

解压命令为: tar -zxvf zlib--lib.tar.gz
拷贝到/usr/lib目录: 
    cd lib/            //进入解压得到的lib目录
    cp ./* /usr/lib -r    //拷贝

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

mplayer:

此为mplayer的可执行文件,这就是我们需要的 mplayer播放器!将其拷贝到开发板根文件系统的/bin 目录下,并给予执行权限即可。

cd /usr/bin/
tftp下载命令为: tftp 192.168.1.100 -gr mplayer
给予执行权限: chmod +x mplayer

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三),合肥中科深谷嵌入式项目实战,arm开发,语音识别,智能家居,嵌入式硬件

使用:

    mplayer是一个命令行音视频播放工具。

代码方式:
system函数

#include <stdlib.h>
int system(const char *command);
command:命令

前台播放,可以直接停掉,后台播放,只能通过发送信号来停止,暂停,继续
killall -19 mplayer        暂停
killall -18 mplayer        继续
killall -9 mplayer        杀死进程文章来源地址https://www.toymoban.com/news/detail-758435.html

#include <stdlib.h>

int main(int argc, char const *argv[])
{

	system("mplayer 1.mp3 </dev/null &");
	
	return 0;
}

到了这里,关于合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初级嵌入式软件工程师养成记(学习路线+学习资源+实战项目汇总)

    我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 世界这么大,还是遇见你… 大家好,我是董哥,一名嵌入式 Linux 开发工程师,

    2024年02月13日
    浏览(73)
  • 【嵌入式项目】基于ARM+Linux的车载系统(完整工程资料源码)

            基于ARM+Linux的车载系统演示效果 基于ARM+Linux的车载系统         本项目计划主要应用于家用,办公等领域轿车中实施的基于物联网云平台的车载系统项目,既能够为车主在行驶过程中提供舒适的体验,又能提供一定的安全保障。            基于ARM+Linux的车

    2024年03月26日
    浏览(115)
  • 【项目设计】基于STM32人脸识别系统 - 单片机 物联网 嵌入式

    项目设计主要是对于所学知识的整体回顾,需要结合各个学科,才能做出达到符合标准的设计。 文章的目的在分享优质的项目以及项目经验,提供设计思路,欢迎交流与指正不足之处。 由于人脸识别技术具有无需接触、安全性高、可靠性高等优点,在身份认证领域具有广阔

    2024年01月21日
    浏览(68)
  • 嵌入式-stm32-基于HAL库的感应开关盖垃圾桶项目(开源)

    网盘资料: 《嵌入式-stm32-基于HAL库的感应开关盖垃圾桶项目(开源)》 链接:https://pan.baidu.com/s/1kFk09nMKPDvLwIUqMT9q3w 提取码:og66 –来自百度网盘超级会员V6的分享 一:项目概述 二:材料准备 三:细节分析(重点) 四:Stm32CubeMx操作步骤以及实现细节 五:Keil5业务逻辑代码编

    2024年02月03日
    浏览(67)
  • 嵌入式系统项目设计——基于LED、按键、蜂鸣器的打地鼠游戏(完整代码)

    内容摘自上学期嵌入式系统课程设计最终的实验报告,因为CSDN不支持上传word资料,所以我就摘录下来写进文章里了,希望可以帮助到你 1.1选题背景 打地鼠游戏是一种非常受小孩子欢迎的游戏,拥有数量极其广大的受众,所以它的市场前景非常广阔。当今社会虽然存在各种各

    2024年02月09日
    浏览(55)
  • C/C++|物联网开发入门+项目实战|指针|嵌入式C语言高级|C语言内存空间的使用-学习笔记(9)

    参考: 麦子学院-嵌入式C语言高级-内存空间 内存类型资源地址、门牌号的代名词 指针:地址的代名词 指针变量:存放指针这个概念的盒子 *P char *p *p; C语言娟译器对指针这个特殊的概念,有2个疑问? 1、分配一个盒子,盒子要多大? 在32bit系统中,指针就4个字节 2、盘子里存放

    2023年04月22日
    浏览(70)
  • 物联网项目分享 基于ESP32的在线墨水屏桌面摆件 -物联网 单片机 嵌入式

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年02月21日
    浏览(66)
  • 单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(113)
  • 嵌入式linux物联网毕业设计项目智能语音识别基于stm32mp157开发板

    stm32mp157开发板FS-MP1A是华清远见自主研发的一款高品质、高性价比的Linux+单片机二合一的嵌入式教学级开发板。开发板搭载ST的STM32MP157高性能微处理器,集成2个Cortex-A7核和1个Cortex-M4 核,A7核上可以跑Linux操作系统,M4核上可以跑FreeRTOS、RT-Thread等实时操作系统。开发板搭配仿真

    2024年02月02日
    浏览(81)
  • 嵌入式linux项目之智能仓储(基于正点原子IMX6ULL开发板)

    提示:该项目根据华清远见智能仓储项目改版,将他的A9开发板换成了自己的IMX6ULL开发板。同时等我将该项目整个流程完成之后,会为大家附上适配正点原子linux开发板的全部代码 (代码资料和视频教程私聊) 视频教程 相应课程配套源码 本人其他项目链接基于linux的智能仓储项

    2024年01月16日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包