基于Linux的温湿度采集系统及QT人机界面的实现

2019-09-24 06:03范丽
电脑知识与技术 2019年21期
关键词:驱动程序

范丽

摘要:针对ARM9平台设计了SHT10温湿度传感器硬件电路,针对Linux内核编写了AD及温湿度驱动程序;利用Qt/Embedded软件设计了QT人机界面,用户可通过人机界面及Linux系统终端的温湿度测试程序实时监测温湿度信息。最终程序可以很好地运行在开发板上,验证了软硬件的有效性和可靠性。

关键词:ARM9;Linux;驱动程序;QT人机界面

中图分类号:TP368        文献标识码:A

文章编号:1009-3044(2019)21-0232-02

开放科学(资源服务)标识码(OSID):

Abstract: According to the ARM9 platform, a hardware circuit of SHT10 temperature and humidity sensor was designed, AD and temperature and humidity drivers were written for Linux kernel. Then designed QT man-machine interface with Qt/Embedded, users can monitor temperature and humidity information through the man-machine interface and the temperature and humidity testing program of Linux system terminal in real-time. The final program can run well on the development board, which verifies the effectiveness and reliability of software and hardware.

Key words: ARM9; Linux; Driver; QT man-machine interface

传统温湿度采集系统采用以单片机为核心的设计模式[1],有运算能力和精度有限、人机交互复杂等缺点,并且由于缺少底层操作系统,在需求改变时,需要对系统进行较大的改动[2],对程序设计者要求较高。嵌入式系统近年来得到了迅速发展,被研发人员广泛应用于各个领域。Qt是专门为嵌入式系统设计的图形用户界面,并且提供了完整的C++程序工具包,使得嵌入式开发变得更加高效。

基于ARM9硬件平台及嵌入式Linux2.6.30.4内核编写了驱动程序,利用Qt/Embedded软件设计了交互友好的人机界面。

1 系统硬件组成及总体结构

1.1 系统总体结构

该系统由核心处理器、数据采集模块、显示模块、电源模块等组成,其总体结构如图1所示。

本文采用ARM9的S3C2440微处理器作为嵌入式系统的核心处理器,它是三星(Samsung)公司ARM9系列中的主流产品,具有高性能、低功耗等优点,应用非常广泛。选择Linux为ARM9平台操作系统,其源代码具有开放、广泛的后续支持等优点[3]。人机界面的设计是基于Qt/Embedded软件开发平台。

系统工作时,SHT10温湿度传感器采集环境温湿度,并将检测到的信号通过ARM的GPIO模块传回到主控制器ARM9,主控制器对数据进行处理,并且通过控制器的人机界面实时显示数据。

1.2 温湿度采集模块设计

本系统选用的温湿度传感器为SHT10,SHT10是Sensirion公司生产的一种数字式传感器,湿度精度达±4.5%RH,温度在25℃时达±0.5℃。

SHT10的VDD、GND为电源引脚,SCK和DATA引脚为两线串行接口,主要用于控制器和传感器之间的数据通信。SHT10的供电电压建议为3.3V。在电源引脚(VDD,GND)之间须加一个电容,在(VDD,DATA)之间须加一个上拉电阻Rp,以提高数据读取的可靠性。其中SCK接ARM9 GPIO口的TOUT0,DATA接TOUT1,GND接ARM的GND,VDD接3.3V。其与控制器的硬件连接图如图2所示。

2 系统开发环境

2.1 Linux开发环境的建立

在Linux系统中,需要交叉编译环境为ARM9开发板编译内核、QT界面等其他应用程序。TQ2440提供的是EABI_4.3.3EmbedSky_20100610.tar.bzr。

为了验证交叉编译器是否生效,需要在Linux终端输入如下命令:#arm-linux-gcc-v[4]。如果生效将会显示arm-linux-gcc的相关信息和版本。

一个完善的嵌入式系统通常包括:系统引导程序、Linux操作系统内核和文件系统。Linux操作系统的移植主要是针对以上内容,需要有四个步骤:烧写uboot、Linux內核、文件系统和开机LOGO到开发板。在完成uboot、内核、文件系统和开机LOGO镜像的烧写后,在一键式菜单下使用命令8,即可启动S3C2440的Linux操作系统。

2.2 QT开发环境的建立

Qt/Embedded实际上就是一个C++工具开发包,其是专门为嵌入式设备的开发而订做的。建立QT开发环境的步骤为:

1解压共享目录中的Qte_20100601.tar.bz2的源码到EmbedSky/Qte目录下;

2编译PC版本的Qtopia-2.2.0,在Linux的终端执行命令:./x86-qtopia-2.2.0-kongqueror_build;

3编译ARM版本的Qtopia-2.2.0,在Linux的终端执行命令:./arm-qtopia-2.2.0-kongqueror_build;

4制作Qtopia-2.2.0的文件系统。

3 系统软件设计

系统软件设计主要是驱动程序和应用程序的设计。

3.1驱动程序的设计

操作系统不能直接对硬件进行操作和控制,需要用设备驱动作为操作系统和硬件之间的粘合剂,负责上下两边的沟通。本文所需的驱动有温湿度传感器SHT10驱动以及AD驱动。

驱动设计的具体步骤如下:

1在“linux-2.6.30.4\drivers\char”内核源码目录下新建一个名为EmbedSky_gpio.c的文件,用来编写本文所要用到的温湿度驱动程序sht10.c。

2在内核源码中添加对SHT10温湿度传感器驱动和AD驱动的支持:修改同目录下的Kongfig文件,然后再修改同目录下的Makefile文件。

3配置菜单:在Linux终端输入命令make menuconfig,配置“gpio Driver”为“*”(编译进内核),然后保存配置。

4make zImage:编译出内核镜像zImage.bin烧写到开发板中。

同样的步骤,编写AD驱动程序EmbedSky_adc.c,然后重新编译内核,将内核镜像烧写到开发板中,即可在开发板dev目录下看到对应的设备名称,如图3所示。

3.2 QT应用程序的设计

Qt人机界面的设计步骤如下:

1在PC机Linux下的“opt/EmbedSky/Qte/x86_qtopia/pro”目录下新建一个名为“renjijiemian”的目录。用命令“qt2/bin/designer &”在后台启动Qt designer设计器,设计好相关功能的按钮及显示数据的窗口。

2添加main.cpp文件、产生*.pro文件、生成Makefile文件

3制作桌面图标和桌面启动器

使用photoshop软件制作桌面图标文件,文件格式为*.png、大小为16*16。创建一个桌面启动器(*.desktop)文件。

4仿真并移植

在PC的Linux的终端输入make命令,进行编译仿真,在实际测试过程中,开发板人机界面如图4所示。

同时运行人机界面和Linux系统终端的温湿度测试程序,人机界面能实时显示温湿度信息。同时,Linux系统终端运行的测试程序也能够实时地显示温湿度变化,并且与开发板界面显示的数据基本一致,如图5所示。

4 结束语

本文在主控制模块的S3C2440微处理器上移植了嵌入式Linux操作系统,在PC的Linux操作系统上移植了QT/E开发环境,采用QT Designer设计了人机画面,利用C++编程语言完善了人机界面。在ARM的LCD触摸屏上实现了实时显示传感器

数值功能,本系统电路简单,使用方便,并且在此基础上可以扩展其他用于测量的传感器,只要为他们设计对应的硬件接入电路,就可以使用本文通用的AD驱动,提高效率。

参考文献:

[1] 宋闽,朱乾坤,郑建廷,等.基于嵌入式Linux的远程数据采集系统[J].微计算机信息,2009,25(16):110-111+121.

[2] 劉伟民,韩斌,李征.基于linux的数据采集及在QT界面的显示[J].微计算机信息,2008(22):97-99.

[3] 刘伟华,刘仁学.基于S3C2440与Linux的ARM9嵌入式系统的构建[J].冶金自动化,2008(S2):409-411.

[4] 武杰.基于ARM9的嵌入式Linux移植[J].自动化技术与应用,2014(03):47-49.

【通联编辑:朱宝贵】

猜你喜欢
驱动程序
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
基于MPC8280的CPU单元与内部总线驱动程序设计
基于WDM的 USB键盘驱动程序开发*