树莓派4b:PWM调速风扇+DIY亚克力板外壳的定制降温方案

  宿舍里的校园网只能连接两台设备,于是我就给树莓派4B装上了openwrt,加上淘宝上买的1200M无限网卡(!买的时候注意型号和宽度大小)作为路由器。但在官方外壳里,树莓派温度稳定在60~70度,所以就考虑给树莓派增加散热,最好可以控制风扇开关和转速

  网上的教程,用三极管+二线风扇实现PWM调速风扇。我就直接准备了一个4线风扇(淘宝9块包邮,正负极、测速、调速四线),使用rpi.gpio库,控制调速线,实现pwm调速控制:

import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)

#board编码的端口编号为10
GPIO.setmode(GPIO.BOARD)
GPIO.setup(10,GPIO.OUT)

#输出端口的编号号,pwm频率
p=GPIO.PWM(10,1000)
#pwm占空比
p.start(5)
while True:
   time.sleep(60)

图. 卖家提供的风扇图纸

  因为设置的风扇速度比较低、噪音比较小,所以就一直这样运转,没有写根据温度调速的程序,有需要的可以看看参考文章。为了固定风扇,我用LibreCAD画了上下两块板子,用铜柱(M2.5)和树莓派的板子,也给风扇留了固定螺丝(M3)的位置:

图. LibreCAD画的上下底板,用于定制2mm亚克力板​​​​

   找了一家亚克力板定制,两块2mm厚板子共9元:

图. 最终实物图

    最终运行python程序,树莓派的温度只有40度

图. 温度40度左右

清单:树莓派4b、无线网卡、4pin风扇、定制亚克力板、铜柱、螺丝

缺陷:

1.铜柱的螺丝部分太短,不能把树莓派板子和下底板固定在一起,只能中间再隔一段铜柱。(其实没有必要设计下底板了?)

2.买的无线网卡太宽,挡住了树莓派另一个USB接口。

3.4pin风扇用在固定接口时,一面有凸起的卡槽,恰好挡住了树莓派另一侧引脚。没办法,只能拆线重装。买的时候可以要求老板装线。

图. 4pin引脚接入图

图纸资料:

阿里云盘分享:https://www.aliyundrive.com/s/rAABtyVKxdE

提取码: b87o 

参考文章:

2021-07-10树莓派PWM控制三极管(S8050)实现风扇调速_luzze__123的博客-CSDN博客_三极管驱动风扇

树莓派驱动PWM 4pin 风扇,实现PWM调速及风扇转速测量 - 趣小组

树莓派:RPi.GPIO模块实现PWM_无.处安放的灵魂的博客-CSDN博客_树莓派pwm

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
这里是一个基于树莓派4B和QT的MQ-135浓度提取和波形绘制的完整代码示例: ```cpp #include <QApplication> #include <QWidget> #include <QLabel> #include <QVBoxLayout> #include <QPainter> #include <wiringPi.h> #include <wiringPiSPI.h> #define SPI_CHANNEL 0 #define SPI_SPEED 1000000 int read_mq135() { unsigned char buffer[2] = {1, (8 + 0) << 4}; wiringPiSPIDataRW(SPI_CHANNEL, buffer, 2); int value = (buffer[0] << 8) | buffer[1]; return value; } int main(int argc, char *argv[]) { QApplication app(argc, argv); // 初始化WiringPi和SPI wiringPiSetup(); wiringPiSPISetup(SPI_CHANNEL, SPI_SPEED); QWidget *window = new QWidget; QVBoxLayout *layout = new QVBoxLayout; // 创建用于显示MQ-135浓度的标签 QLabel *label = new QLabel("MQ-135浓度:0"); layout->addWidget(label); // 创建用于绘制波形图的小部件 QWidget *widget = new QWidget; widget->setFixedSize(400, 300); // 在小部件上绘制波形图 QPainter painter(widget); painter.setPen(QColor(255, 0, 0)); QVector<QPointF> points; for (int i = 0; i < 400; i++) { int value = read_mq135(); points.append(QPointF(i, 300 - value / 10)); painter.drawPolyline(points); painter.fillRect(i, 0, 1, 300, QColor(255, 255, 255)); app.processEvents(); } layout->addWidget(widget); // 在循环中更新MQ-135浓度的标签 while (true) { int value = read_mq135(); label->setText("MQ-135浓度:" + QString::number(value)); app.processEvents(); } window->setLayout(layout); window->show(); return app.exec(); } ``` 这个代码使用了WiringPi和SPI来读取MQ-135传感器的值,并使用QT来绘制波形图和更新MQ-135浓度的标签。在绘制波形图时,它使用了QPainter来绘制多个点并将它们连接起来。同时,它在循环中更新MQ-135浓度的标签。请注意,由于这个循环是无限的,所以你可能需要使用线程或定时器来更新标签,以免阻止QT应用程序的其他部分。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值