论文部分内容阅读
摘 要: 在炎热的夏天,电风扇给人们的生活带来了很多的方便,一般的电风扇只有机械档的人工调速和手动开关,夏夜温度下降后人们容易因熟睡忘关风扇而受凉,当温度升高时,它又不能根据温度的变化改变转速。而智能温控调速风扇可自动根据室内环境温度控制风扇转速。为了使风扇更贴近人们的生活,开发一种新型温感语音唤醒的智能电风扇控制系统迫在眉睫。
关键词: 单智能温控;树莓派;单片机;控制系统
中图分类号: TP368.1 文献标识码: A DOI:10.3969/j.issn.1003-6970.2020.01.014
本文著录格式:彭欢欢,张琛松,陈雪,等. 基于单片机智能风扇的设计[J]. 软件,2020,41(01):6669
【Abstract】: In hot summer, the electric fan brought a lot of convenience for people's life, the general electric fan only mechanical file manual speed regulation and manual switch. In the evening night, after temperature dropping, people easy to forget to turn off the fan and catch cold, when the temperature rises, it can not change the speed according to the change of temperature. The intelligent temperature control speed fan can automatically control the fan speed according to the indoor environment temperature. In order to make the fan closer to people's life, it is urgent to develop a new intelligent electric fan control system which can wake up by voice temperature sensing.
【Key words】: Single intelligent temperature control; Raspberry PI; MCU; Control system
0 引言
自古以来,随着人类现代社会和科技的飞速进步、电子信息技术、控制技术等技术的不断增加,社会信息逐渐加速,它使人们的生活、工作、学习和交流变得越来越相互关联与密切。信息以及大数据的社会正在改变人们的种种生活习惯和各种工作方法[1]。与此同时我们发现,它也挑战了我们传统的许多家用电器,经过调查,我们知道了如今人们对家用电器的需求不再只是一个简单的物质需求与简单的功能,更多关注和需求的是一种高度安全,令人感到舒适、美观、并且易于操作的智能家电。因此,智能家电已成为一种令人向往的发展趋势[2]。我们也知道:在炎热的夏天,常见普通的风扇为人们的生活带来了很多便利,并且一般的电风扇只有手动去调速和机械档的手动开关来调速。在夏季和夜晚温度下降后,人们有时候会因熟睡而忘记关闭电风扇,当温度缓慢降低时,普通风扇却不能依据温度的变化而改变其转速,然而智能温控电风扇可以做到这一点,根据室内环境温度自动控制风扇转速。为了让风扇更贴近人们的生活,开发一种以柔和的声音和新型智能电风扇控制系统是非常迫切的。
通过数字温度传感器对外界环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动调节档位,实现“温度高、风力大、温度低、风力弱”的性能。另外,通过红外发射和接收装置及按键实现各种功能的启动与关闭,并且可对各种功能实现遥控,用户可以在一定范围内设置电风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动[3]。
1 系统总体设计
1.1 功能介绍
(1)风速设为从低到高共2个档位,可由用户通过键盘设定。
(2)每当温度低于下限值时,则电风扇风速关闭。
(3)每当温度在下限和上限之间时,则电风扇转速缓慢。
(4)每当温度高于上限值时,则电风扇风速全速运转。
1.2 整体设计思路
利用温度传感器DSI8B20检测环境温度并直接输出数字温度信号给树莓派或单片机进行处理,在LED数码管上显示当前环境温度值以及预设温度值。其中预设温度值只能为整数形式,检測到的当前环境温度可精确到小数点后一位。同时采用PWM脉宽调制方式来改变直流风扇电机的转速。并通过两个按键改变预设温度值,一个提高预设温度,另一个降低预设温度值[4-5]。
可行性分析
传统电风扇以及其转机最致命的缺陷是不能依据外界环境温度的变化来实施自动调节风机的转速。所以说智能风扇的发展将有效解决传统风机的不足,真正实现风机的运行受外部环境的控制,实现低耗能、高性能的智能风机,节约了很多的电力等资源,减少了许多人工消耗。这款智能风扇适合所有家庭,特别适合老人和儿童,当室内温度低于系统设定的一个阈值时,它会强制并且自动关闭此功能,从而实现保护老人和儿童的健康。智能风扇控制系统开发的成本低,开发时间短,好上手。简单地说,它不仅可以弥补传统风扇的缺点和不足,还可以在某些方面上增添新思路,新方向。如果可以大量投产,将大大提高人们的生活质量。因此,智能风扇将具有非常良好的发展空间和前景,如果实现了这个技术,将是一个很大的进步。这个系统总的来说,主要从技术可行性和经济可行性的角度分析设计,这确实可行。因此,该程序被开发用于根据室温的温度控制风扇的旋转,并且还根据固定的温度值与没有温度传感器的风扇旋转调节方案 兼容。 傳统电风扇的直流风让人感到十分僵硬,人们很容易因长时间地吹而感冒,而自然风又软又宽,变化无常,让人感到十分舒适,是既凉爽又舒适,人们很容易接受。与人工DC风不同,自然风速舒适,不规则变化,它不会让人体表面的湿热状态一直处于加速流失状态,在经过长时间对自然风数字数据的采集,可以用一些脚本语言模拟自然风的这种无规律变化,吹出让人心旷神怡的徐徐清风。
2 系统硬件设计
2.1 实施计划
使用自动识别温度传感器DS18B20的位置可以获取温度。
根据温差控制风扇转动等的功能。
日志文件(temperature_log)保存在python文件相同的目录下。
raspberry pie的操作系统以及我们熟悉的2012年12月之后产生的Raspbian系统已经能够非常完美的支持DS18B20单总线(1-wire)温度传感器。该传感器由一个半导体封装头装置和三个ping(引脚)组成,现在是一个非常精确并且成熟的数字设备。
众所周知,由于Raspberry Pi没有ADC(模数转换器),所以说我们无法直接读取TMP36等模拟信号温度传感器。因此,DS18B20是非常适合这个场景的。
2.2 硬件材料
数字温度传感器加上一根延长线,它们也可以是湿度或高温型号的其中一种。4.7K或10K欧姆电阻,一小块面包板,一把跳线,扩展板。
DS18B20单线传感器可通过非并联连接进行访问,这与其他市售传感器几乎完全相同!所有传感器共用相同的ping,所以说一个4.7K的电阻十分适合这里。
这里的电阻我们来做的功能:拉出数据输出线(数据线)和保持数据传输过程中的稳定。
如果我们必须要使用DS18B20的防水版,则需要连接3个ping,它们分别是:红色,黑色,黄色,并且未连接下一个ping(也就是引脚)。
如果可以的话,利用高温版本的防水版,需要橙色针脚(ping)连接到3.3V上面,白色接地线,蓝色针脚连接到针脚4(4 ping)。
在3.3V和数据引脚之间也需要4.7K-10K的 电阻。
虽然DS18B20看起来像一般市面上的普通传感器,但它却有许多复杂的内部组件。
它的芯片包括这块板专用的单总线串行接口、逻辑控制部分单元和核心部分温度传感器。
它的输出针脚输出数字信息,以便Raspbian/ ococentalis可以在某一个针上。在运行项目之前,使用SSH工具来进行一次测试是最稳妥的。
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
cd 28-xxxx (change this to match what serial number pops up)
cat w1_slave
系统会告诉我们有一个可供读取的温度数据。它也许像一个文个个文件,所以我们需要将这个数据读取出来。
在返回消息的第一行的结尾,将出现True或者是False,如果是,则第二行后面我们需要跟着温度数据来结尾。
如果主板连接了多个传感器单元,我们将可以了解并看到多个28-xxx file(文件),插入传感器,校检新生成的文件名,然后标记,将他们一一对应给传感器。这样,我们就可以区分每一个传感器对应于的确定文件。
3 系统软件设计
下面的Python脚本处理一些异常或者错误信息并且反馈给用户界面,同时还会返回每秒的华氏和摄氏温度数据。
import os
import glob
import time
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
Def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp()) time.sleep(1)
在开始运行脚本时,需要先运行modprobe命令以使得api运行。
接下来的脚本用于查找可以从哪些文件中读取消息。
现在有一个问题是有时候温度会在在树莓派下读取。可以用以下代码替换read-temp-ray方法。然后在程序开始时添加一行“导入子进程”。
def read_temp_raw():
catdata = subprocess.Popen(['cat',device_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out,err = catdata.communicate()
out_decode = out.decode('utf-8')
lines = out_decode.split('\n')
return lines
读取温度有两种不同的方式。read_temp_ray通过接口交检message的前两行。read_temp封装它并添加error消息检测和重试,直到出现“True”为止。在第一行的末尾此方法返回两个值,第一个是Celsius,第二个是Fahrenheit。
可以像下面这样把两个值分开
deg_c, deg_f = read_temp()
主要的function只是一个循环体,用来读取温度数据,(print)打印出来,然后sleep一秒钟。然后继续一次循环。
要把这个程序传到树莓派上,你可以通过SSH在命令行里打开一个文本编辑器
运行 thermometer.py
测试与配置
运行这个程序需要超级用户权限,所以在命令行里运行下面的命令
sudo python thermometer.py
设置项:
T_HIGH = 48
温度^ 48度开始转动,在温度传感器失效/没有传感器时使用
T_LOW = 42
温度^42度停止转动,在温度传感器失效/没有传感器时使用
T_DIFF_HIGH = 24
温差^ 24度开始转动
T_DIFF_LOW = 18
温差^18度停止转动
T_SENOR_DIFF = 0
温度传感器和真实环境温度矫正值,真实环境温度传感器实测温度+校正值
fan_pin = 12
控制风扇IO针脚BOARD编号
NPN =真
控制风扇用的是NPN三极管,PNP三极管时改为假
IS_LOG_FILE = True
是否输出温度信息到文件
IS_LOG_CONSOLE = True
是否输出温度信息到控制台
time_interval = 5
检测温度间隔时间单位秒
log_file_duration = 12
日志记录保留时间长度,单位小时
4 結束语
本系统最大的优点是解决了传统风扇不能实时根据外界温度变化自动调节风扇转速的缺点,智能
风扇将有效改变传统风扇高功耗,低性能的缺点。该智能风扇适用于所有家庭,尤其针对老人小孩设计的当室内温度低于系统设置的阈值时自动关闭这一功能,保护了老人和小孩的身体健康,更贴近于人们生活。
参考文献
[1] 李丽, 大数据时代的意识形态话语权: 挑战及应对, 2018-07-15.
[2] 周技锋. 嵌入式Linux平台实现家电物联网方案的研究与应用[J]. 数字通信世界, 2017(09): 205.
[3] 廖晓娟. 智能温控风扇设计[J]. 2016(22): 54-55.
[4] 张宁子. 基于ITU总线的智能干湿球温湿度测试系统研究[D]. 宁夏大学, 2013.
[5] 文海琼, 卓朝松. 蓝牙数据传输智能温控风扇系统的设计[J]. 电子世界, 2018, No.544(10): 145-146.
[6] 曹巧媛. 单片机原理及应用. 北京: 电子工业出版社, 2002. 2.
[7] 王伦. 电风扇原理与维修技术[M]. 北京: 新时代出版社, 1999.
[8] 张毅刚. 新编MCS-51单片机应用设计. 哈尔滨工业大学出版社, 2006, 10.
[9] 梁廷贵, 王裕琛. 可控硅触发电路语音电路分册[M]. 北京: 科学技术文献出版社, 2003.
[10] 王伦. 电风扇原理与维修技术[M]. 北京: 新时代出版社, 1999.
关键词: 单智能温控;树莓派;单片机;控制系统
中图分类号: TP368.1 文献标识码: A DOI:10.3969/j.issn.1003-6970.2020.01.014
本文著录格式:彭欢欢,张琛松,陈雪,等. 基于单片机智能风扇的设计[J]. 软件,2020,41(01):6669
【Abstract】: In hot summer, the electric fan brought a lot of convenience for people's life, the general electric fan only mechanical file manual speed regulation and manual switch. In the evening night, after temperature dropping, people easy to forget to turn off the fan and catch cold, when the temperature rises, it can not change the speed according to the change of temperature. The intelligent temperature control speed fan can automatically control the fan speed according to the indoor environment temperature. In order to make the fan closer to people's life, it is urgent to develop a new intelligent electric fan control system which can wake up by voice temperature sensing.
【Key words】: Single intelligent temperature control; Raspberry PI; MCU; Control system
0 引言
自古以来,随着人类现代社会和科技的飞速进步、电子信息技术、控制技术等技术的不断增加,社会信息逐渐加速,它使人们的生活、工作、学习和交流变得越来越相互关联与密切。信息以及大数据的社会正在改变人们的种种生活习惯和各种工作方法[1]。与此同时我们发现,它也挑战了我们传统的许多家用电器,经过调查,我们知道了如今人们对家用电器的需求不再只是一个简单的物质需求与简单的功能,更多关注和需求的是一种高度安全,令人感到舒适、美观、并且易于操作的智能家电。因此,智能家电已成为一种令人向往的发展趋势[2]。我们也知道:在炎热的夏天,常见普通的风扇为人们的生活带来了很多便利,并且一般的电风扇只有手动去调速和机械档的手动开关来调速。在夏季和夜晚温度下降后,人们有时候会因熟睡而忘记关闭电风扇,当温度缓慢降低时,普通风扇却不能依据温度的变化而改变其转速,然而智能温控电风扇可以做到这一点,根据室内环境温度自动控制风扇转速。为了让风扇更贴近人们的生活,开发一种以柔和的声音和新型智能电风扇控制系统是非常迫切的。
通过数字温度传感器对外界环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动调节档位,实现“温度高、风力大、温度低、风力弱”的性能。另外,通过红外发射和接收装置及按键实现各种功能的启动与关闭,并且可对各种功能实现遥控,用户可以在一定范围内设置电风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动[3]。
1 系统总体设计
1.1 功能介绍
(1)风速设为从低到高共2个档位,可由用户通过键盘设定。
(2)每当温度低于下限值时,则电风扇风速关闭。
(3)每当温度在下限和上限之间时,则电风扇转速缓慢。
(4)每当温度高于上限值时,则电风扇风速全速运转。
1.2 整体设计思路
利用温度传感器DSI8B20检测环境温度并直接输出数字温度信号给树莓派或单片机进行处理,在LED数码管上显示当前环境温度值以及预设温度值。其中预设温度值只能为整数形式,检測到的当前环境温度可精确到小数点后一位。同时采用PWM脉宽调制方式来改变直流风扇电机的转速。并通过两个按键改变预设温度值,一个提高预设温度,另一个降低预设温度值[4-5]。
可行性分析
传统电风扇以及其转机最致命的缺陷是不能依据外界环境温度的变化来实施自动调节风机的转速。所以说智能风扇的发展将有效解决传统风机的不足,真正实现风机的运行受外部环境的控制,实现低耗能、高性能的智能风机,节约了很多的电力等资源,减少了许多人工消耗。这款智能风扇适合所有家庭,特别适合老人和儿童,当室内温度低于系统设定的一个阈值时,它会强制并且自动关闭此功能,从而实现保护老人和儿童的健康。智能风扇控制系统开发的成本低,开发时间短,好上手。简单地说,它不仅可以弥补传统风扇的缺点和不足,还可以在某些方面上增添新思路,新方向。如果可以大量投产,将大大提高人们的生活质量。因此,智能风扇将具有非常良好的发展空间和前景,如果实现了这个技术,将是一个很大的进步。这个系统总的来说,主要从技术可行性和经济可行性的角度分析设计,这确实可行。因此,该程序被开发用于根据室温的温度控制风扇的旋转,并且还根据固定的温度值与没有温度传感器的风扇旋转调节方案 兼容。 傳统电风扇的直流风让人感到十分僵硬,人们很容易因长时间地吹而感冒,而自然风又软又宽,变化无常,让人感到十分舒适,是既凉爽又舒适,人们很容易接受。与人工DC风不同,自然风速舒适,不规则变化,它不会让人体表面的湿热状态一直处于加速流失状态,在经过长时间对自然风数字数据的采集,可以用一些脚本语言模拟自然风的这种无规律变化,吹出让人心旷神怡的徐徐清风。
2 系统硬件设计
2.1 实施计划
使用自动识别温度传感器DS18B20的位置可以获取温度。
根据温差控制风扇转动等的功能。
日志文件(temperature_log)保存在python文件相同的目录下。
raspberry pie的操作系统以及我们熟悉的2012年12月之后产生的Raspbian系统已经能够非常完美的支持DS18B20单总线(1-wire)温度传感器。该传感器由一个半导体封装头装置和三个ping(引脚)组成,现在是一个非常精确并且成熟的数字设备。
众所周知,由于Raspberry Pi没有ADC(模数转换器),所以说我们无法直接读取TMP36等模拟信号温度传感器。因此,DS18B20是非常适合这个场景的。
2.2 硬件材料
数字温度传感器加上一根延长线,它们也可以是湿度或高温型号的其中一种。4.7K或10K欧姆电阻,一小块面包板,一把跳线,扩展板。
DS18B20单线传感器可通过非并联连接进行访问,这与其他市售传感器几乎完全相同!所有传感器共用相同的ping,所以说一个4.7K的电阻十分适合这里。
这里的电阻我们来做的功能:拉出数据输出线(数据线)和保持数据传输过程中的稳定。
如果我们必须要使用DS18B20的防水版,则需要连接3个ping,它们分别是:红色,黑色,黄色,并且未连接下一个ping(也就是引脚)。
如果可以的话,利用高温版本的防水版,需要橙色针脚(ping)连接到3.3V上面,白色接地线,蓝色针脚连接到针脚4(4 ping)。
在3.3V和数据引脚之间也需要4.7K-10K的 电阻。
虽然DS18B20看起来像一般市面上的普通传感器,但它却有许多复杂的内部组件。
它的芯片包括这块板专用的单总线串行接口、逻辑控制部分单元和核心部分温度传感器。
它的输出针脚输出数字信息,以便Raspbian/ ococentalis可以在某一个针上。在运行项目之前,使用SSH工具来进行一次测试是最稳妥的。
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
cd 28-xxxx (change this to match what serial number pops up)
cat w1_slave
系统会告诉我们有一个可供读取的温度数据。它也许像一个文个个文件,所以我们需要将这个数据读取出来。
在返回消息的第一行的结尾,将出现True或者是False,如果是,则第二行后面我们需要跟着温度数据来结尾。
如果主板连接了多个传感器单元,我们将可以了解并看到多个28-xxx file(文件),插入传感器,校检新生成的文件名,然后标记,将他们一一对应给传感器。这样,我们就可以区分每一个传感器对应于的确定文件。
3 系统软件设计
下面的Python脚本处理一些异常或者错误信息并且反馈给用户界面,同时还会返回每秒的华氏和摄氏温度数据。
import os
import glob
import time
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
Def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp()) time.sleep(1)
在开始运行脚本时,需要先运行modprobe命令以使得api运行。
接下来的脚本用于查找可以从哪些文件中读取消息。
现在有一个问题是有时候温度会在在树莓派下读取。可以用以下代码替换read-temp-ray方法。然后在程序开始时添加一行“导入子进程”。
def read_temp_raw():
catdata = subprocess.Popen(['cat',device_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out,err = catdata.communicate()
out_decode = out.decode('utf-8')
lines = out_decode.split('\n')
return lines
读取温度有两种不同的方式。read_temp_ray通过接口交检message的前两行。read_temp封装它并添加error消息检测和重试,直到出现“True”为止。在第一行的末尾此方法返回两个值,第一个是Celsius,第二个是Fahrenheit。
可以像下面这样把两个值分开
deg_c, deg_f = read_temp()
主要的function只是一个循环体,用来读取温度数据,(print)打印出来,然后sleep一秒钟。然后继续一次循环。
要把这个程序传到树莓派上,你可以通过SSH在命令行里打开一个文本编辑器
运行 thermometer.py
测试与配置
运行这个程序需要超级用户权限,所以在命令行里运行下面的命令
sudo python thermometer.py
设置项:
T_HIGH = 48
温度^ 48度开始转动,在温度传感器失效/没有传感器时使用
T_LOW = 42
温度^42度停止转动,在温度传感器失效/没有传感器时使用
T_DIFF_HIGH = 24
温差^ 24度开始转动
T_DIFF_LOW = 18
温差^18度停止转动
T_SENOR_DIFF = 0
温度传感器和真实环境温度矫正值,真实环境温度传感器实测温度+校正值
fan_pin = 12
控制风扇IO针脚BOARD编号
NPN =真
控制风扇用的是NPN三极管,PNP三极管时改为假
IS_LOG_FILE = True
是否输出温度信息到文件
IS_LOG_CONSOLE = True
是否输出温度信息到控制台
time_interval = 5
检测温度间隔时间单位秒
log_file_duration = 12
日志记录保留时间长度,单位小时
4 結束语
本系统最大的优点是解决了传统风扇不能实时根据外界温度变化自动调节风扇转速的缺点,智能
风扇将有效改变传统风扇高功耗,低性能的缺点。该智能风扇适用于所有家庭,尤其针对老人小孩设计的当室内温度低于系统设置的阈值时自动关闭这一功能,保护了老人和小孩的身体健康,更贴近于人们生活。
参考文献
[1] 李丽, 大数据时代的意识形态话语权: 挑战及应对, 2018-07-15.
[2] 周技锋. 嵌入式Linux平台实现家电物联网方案的研究与应用[J]. 数字通信世界, 2017(09): 205.
[3] 廖晓娟. 智能温控风扇设计[J]. 2016(22): 54-55.
[4] 张宁子. 基于ITU总线的智能干湿球温湿度测试系统研究[D]. 宁夏大学, 2013.
[5] 文海琼, 卓朝松. 蓝牙数据传输智能温控风扇系统的设计[J]. 电子世界, 2018, No.544(10): 145-146.
[6] 曹巧媛. 单片机原理及应用. 北京: 电子工业出版社, 2002. 2.
[7] 王伦. 电风扇原理与维修技术[M]. 北京: 新时代出版社, 1999.
[8] 张毅刚. 新编MCS-51单片机应用设计. 哈尔滨工业大学出版社, 2006, 10.
[9] 梁廷贵, 王裕琛. 可控硅触发电路语音电路分册[M]. 北京: 科学技术文献出版社, 2003.
[10] 王伦. 电风扇原理与维修技术[M]. 北京: 新时代出版社, 1999.