6019| 6
|
[教程] 用树莓派实现自动温控小风扇 |
本帖最后由 咕叽大虾 于 2020-9-25 15:14 编辑 最近一段时间在学习树莓派,光扒教程总觉得学起来很空洞,所以想着要不要做个小装置来巩固一下学到的知识。正巧,这两天群里广东的姐妹天天羡慕成都的气候,说自己依然短袖空调离不了,逼迫我必须为她悲惨的境遇做点什么。于是,慎重考虑后,决定写一篇树莓派驱动的温控小风扇教程给她,希望她在学到知识的同时还能收获凉爽。(以为是小风扇?别骂了别骂了,我就是穷了点,爱姐妹的心是不变的),绝对新手友好(毕竟自己真就新手不是?),放心吃安利。 一、硬件准备 1. 已装系统的树莓派3代B型 X1(DFR0567-1)(3B购买地址https://www.dfrobot.com.cn/goods-1766.html) (选择更新版完全没有问题 树莓派4代B型(4GB) DFR0619)(4B购买地址https://www.dfrobot.com.cn/goods-1977.html) 2. 树莓派4B/3B+IO扩展板 X1(DFR0566) (注意一定是有IO口的)(购买地址https://www.dfrobot.com.cn/goods-2041.html) 3. 舵机 X1(SER0011) (购买地址https://www.dfrobot.com.cn/goods-224.html) 4. 直流电机风扇 X1(DFR0411) (电机风扇一件搞定,不错不错)(购买地址https://www.dfrobot.com.cn/goods-1251.html) 5. BME680环境传感器 X1 (SEN0248) (可以测很多,我这次只用到了温度)(购买地址https://www.dfrobot.com.cn/goods-1621.html) 6. 一根数据线 (根据树莓派的电源接口选择安卓线或是type C线)以及5V/3A USB电源适配器 (建议准备适配器,不要直接从主机供电)(FIT0351-OE)(购买地址https://www.dfrobot.com.cn/goods-838.html) 7. 一根网线 (树莓派与PC应连接在同一个路由器上) 如图 二、软件准备 我使用的远程连接软件是MobaXterm。 三、具体操作 1.硬件连接(如图) 将扩展板插在树莓派上,然后直流电机风扇接5口,舵机接22口,环境传感器接IIC口。 当然,你也可以选择别的引脚,但是请务必保证电机和舵机都是接在GPIO口上,具体引脚可以查看下图 网线和电源线找准位置接好即可。(注意,电源线最好搭配适配器插在插座上,不要直接从主机供电,因为主机电流太小,不能保证电机和舵机顺畅运转。) 2.使能引脚以及安装i2c库和工具 在使用树莓派的I2C引脚之前,我们需要先使能I2C引脚。 输入以下代码,然后按照动图完成即可。 [mw_shl_code=applescript,false]sudo raspi-config[/mw_shl_code] 选择时,使用键盘右边的上下键,最后退出时,按住左上角的Esc即可。 接着,我们需要安装i2c库和工具 [mw_shl_code=applescript,false]sudo apt-get install i2c-tools[/mw_shl_code] 3.下载环境传感器BME680的库文件 注意,最好点进左侧desktop文件夹下操作,否则可能会引发问题,没有权限删除添加文件之类的。(如果已经出现了这个问题,可以继续在desktop文件夹下按照下述操作) 1)本地下载后拖进树莓派,如图 [mw_shl_code=applescript,false]git clone https://github.com/DFRobot/DFRobot_BME680[/mw_shl_code] 2)树莓派直接下载,耐心等待一下,需要一点时间。 [mw_shl_code=applescript,false]sudo git clone https://github.com/DFRobot/DFRobot_BME680[/mw_shl_code] 4.找到BME680库文件中的读取数据文件 按照以下顺序点进文件夹DFRobot_BME680->Python->RaspberryPi->examples,即可看到一个名为read_all_data.py的python文件。 鼠标点击路径处复制一下,然后输入 [mw_shl_code=applescript,false]cd /home/pi/Desktop/DFRobot_BME680/Python/RaspberryPi/examples/[/mw_shl_code] 如动图所示 输入以下代码运行这个文件即可读到环境传感器的所有数据,如图。 [mw_shl_code=applescript,false]python read_all_data.py[/mw_shl_code] 按住ctrl+c即可退出运行状态。 5.修改代码。 在这个代码的基础上,我加入了舵机和电机风扇的代码。 你可以这样操作:在pc桌面新建一个文本文件,重命名为auto_fan.py。如图。 然后打开后把下面的代码粘贴进去,保存后,把它拖进列表即可,如图。 [mw_shl_code=applescript,false] import sys sys.path.append('../') from DFRobot_BME680 import DFRobot_BME680 import time import RPi.GPIO as GPIO import signal import atexit atexit.register(GPIO.cleanup) servopin = 22 motorpin=5 GPIO.setmode(GPIO.BCM) GPIO.setup(servopin,GPIO.OUT) GPIO.setup(motorpin,GPIO.OUT) angle=GPIO.PWM(servopin,50) angle.start(0) sensor = DFRobot_BME680() sensor.set_humidity_oversample(sensor.OS_2X) #Oversampling value: OS_NONE, OS_1X, OS_2X, OS_4X, OS_8X, OS_16X sensor.set_pressure_oversample(sensor.OS_4X) #Oversampling value: OS_NONE, OS_1X, OS_2X, OS_4X, OS_8X, OS_16X sensor.set_temperature_oversample(sensor.OS_8X) #Oversampling value: OS_NONE, OS_1X, OS_2X, OS_4X, OS_8X, OS_16X sensor.set_filter(sensor.FILTER_SIZE_3) #increasing resolution but reducing bandwidth sensor.set_gas_status(sensor.ENABLE_GAS_MEAS) #1 for enable and 0 for disable sensor.set_gas_heater_temperature(320) #value:target temperature in degrees celsius, between 200 ~ 400 sensor.set_gas_heater_duration(150) #value:target duration in milliseconds, between 1 and 4032 sensor.select_gas_heater_profile(0) #value:current gas sensor conversion profile: 0 to 9 print("\n\nPolling:") while True: if sensor.get_sensor_data(): if sensor.data.temperature>25.00: GPIO.output(motorpin,GPIO.HIGH) for dc in range(0,181,1): angle.ChangeDutyCycle(float(dc)/18+2.5) time.sleep(0.1) for dc in range(180,-1,-1): angle.ChangeDutyCycle(float(dc)/18+2.5) time.sleep(0.1) else: GPIO.output(motorpin,GPIO.LOW) angle.stop() print("temperature: {0:.2f} C, pressure: {1:.2f} hPa, humidity: {2:.2f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity)) time.sleep(1) [/mw_shl_code] 演示如图: 小贴士,如果在编辑保存操作过程中弹出如图显示框,选择第三项即可。 6.运行程序 [mw_shl_code=applescript,false]Python auto_fan.py[/mw_shl_code] 显示结果如图所示: ctrl+c即可退出程序。 视频效果如下: |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed