用 Node.js 给树莓派写了个控制台

[golang]-通过node_exporter监控GPU以及cpu频率、温度 导语:通过node_exporter监控GPU以及cpu频率、温度,不想用一个node_exporter再加一个dcgm,分开监控。我这里监控的是热区的温度。如果需要监控各个cpu核心的温度需要修改一下代码。 结合了https://gitee.com/kevinliu_CQ/node_exporter监控GPU的代码。 加入了cpu的2项自定义监控https://gitee.com/jiaminxu/self_node_exporter 安装一下go wget https://dl.google.com/g 阅读详情

? 博客地址: http://mitscherlich.me/posts/rpi-dashboard/

雪乃坐镇保佑不出 bug

雪乃坐镇保佑不出 bug

大一的时候就买了很多树莓派,因为那时候还啥也不会,就大部分时间放在角落里吃灰。最近考古看到一篇外国老哥用树莓配搭建 Hadoop 集群的文章,就把树莓派拿出来重新改造了一下,作为智能家居中心使用。好在当初就是用 lego 搭的外壳,现在要翻修也很容易,已经捣鼓之后看起来就像上面那样。为了能在 iOS 上用 HomeKit 控制家里的几个小米的智能灯,我选择了 HomeAssistant 作为智能家居中心,但树莓派的散热就成了个问题。

本来买树莓派的时候就带了风扇,但都是直接插在树莓派的供电接口上的,也就是说,3.3v 供电的 GPIO 引脚是没法驱动 5v 工作电压的风扇的,而且另一方面这小风扇非常吵,而且整天整晚的开着承轴受不了(已经挂了一个了),所以我就去万能的某宝买了一个建准的磁悬浮风扇6cm 的风径可以给两个树莓派同时散热。事实证明磁悬浮风扇果然名不虚传,风量大还真的一点声音都没有。但为了延长承轴寿命,还是要设计一套可以通过编程控制的风扇控制程序。

经过一番搜索,我参考了这篇文章。上面已经说过了,3.3vGPIO 是没法直接给风扇供电的,所以我选择了博文中的三极管方案,设计了这样的电路:

电路图

在线的 CircuteLab 没有 motor,用 lamp 将就一下吧

我和博文中一样选择了 S9012PNP 型三极管,风扇正极与树莓派 5v 引脚相连,负极与三极管发射极相连,三极管基极与你想要使用的 GPIO 引脚(比如我这里就是 8 号引脚 (GPIO 14)) 相连,集电极接地即可。参考下面的树莓派引脚图:

rpi-gpio

⚠️ 注意 rpio 的引脚编号和实际的 gpio 端口号不完全对应,下面会讲到

接下来,通过 node.js 编程控制风扇自动停启。使用 node.js 是为了下面和控制台对接方便,示例代码如下:

const GPIO = require('rpio')
const PIN = 8 // 这里的 8 号引脚对应 gpio 14,其余请查阅 rpi gpio 手册:https://pinout.xyz/
const TEMP_LOW = 38 // 低于 38 摄氏度则停止运行
const TEMP_HIGH = 42 // 高于 42 摄氏度则开启风扇

const TEMP_FILE = '/sys/class/thermal/thermal_zone0/temp'

/**
 * 读取树莓派当前温度
 * return {Number} 当前温度
 */
function cpuTemp () {
  return parseFloat(require('fs').readFileSync(TEMP_FILE)) / 1000
}

setInterval(function () {
  temp = cpuTemp()
  console.log(`Current temp is ${temp}`)
  if (isClose) {
    if (temp > TEMP_HIGH) {
      GPIO.write(PIN, GPIO.LOW)
      console.log('Open air cooler')
      isClose = false
    }
  } else {
    if (temp < TEMP_LOW) {
      GPIO.write(PIN, GPIO.HIGH)
      console.log('Close air cooler')
      isClose = true
    }
  }
}, 2000) // 每 2s 刷新一次

对了,这里有个坑忘了说。包括我参考的那篇博客在内,大部分网络上的资料都是通过给接口高电平来开启风扇的,但事实上这是以 NPN 型三极管计算的结果,要使得 PNP 工作于放大状态应该使发射结正偏集电结反偏,如果 GPIO 引脚这时给高电平是没法使三极管正常工作的,所以这里给低电平才对。
为了验证这个我还把尘封的模电书找了出来好好复习了一下。

Node 编写控制台后端还比较简单,主要架构就是 express 做服务端,bootstrap materialize design + d3.js 做前端页面,再通过 socket.io 作为 WebSocket 通讯就行了。虽然简单但代码比较繁琐,就不在这里贴出来了,给几个截图意思一下:

啊哦,你的浏览器好像不支持 <video> 标签,请下载后使用本地播放器打开~

性感风扇在线调戏

preview

搭配 HomeAssistant 食用风味更佳

不过我不清楚是不是 d3.js 的锅,反正现在性能不是很好,长时间运行后树莓派倒是不烫了,电脑的 CPU 却下不来了大雾,估计反复操作 DOM性能开销还是太大了,等明年再用 Vue 重构吧。

参考链接

树莓派不吃灰】基础篇④ Raspberry Pi上搭建NodeJS运行环境 主要是花费10分钟时间使用命令行的方式在树莓派环境下搭建NodeJS运行环境,后面会基于这个点再去安装其他nodejs的项目。 阅读详情

相关推荐

Node.js树莓派GPIO控制实战:从环境搭建到Web服务部署

GPIO(通用输入输出)是嵌入式系统和物联网设备与物理世界交互的基础接口,它允许微控制器通过数字信号控制外部硬件或读取传感器数据。其工作原理是通过对特定引脚的电压电平进行编程控制,实现数字输入和输出功能。在物联网和智能硬件开发中,GPIO的价值在于提供了标准化的硬件抽象层,使开发者能够以统一的方式连接和控制各类传感器、执行器和外围设备。常见的应用场景包括智能家居控制、环境监测、机器人控制和工业自动化等。本文以树莓派为硬件平台,深入讲解如何利用Node.js的异步事件驱动模型和npm生态,通过onoff库实现

weixin_30268071的博客 364

基于nodejs物联网温湿度采集.rar

通过zigbee无线传输温湿度数据,温湿度数据经过arm芯片的串口上传的pc,pc上串口数据经过nodejs读出,经有html轮训获取数据并显示出来,本代码只包含nodejs 的串口模块,nodejs逻辑代码,和html网页

树莓派AI助手本地监控面板:基于Node.js与WebSocket的零客户端部署方案

在嵌入式系统与物联网应用中,本地网络监控与控制是核心需求。其原理通常基于客户端-服务器架构,通过轻量级服务端提供API,与前端界面分离以实现高效管理。这种模式的技术价值在于保障数据隐私、降低部署复杂度并提升响应速度,尤其适用于家庭实验室、边缘计算节点等对安全性和便捷性有要求的场景。本文聚焦于为运行在树莓派上的AI智能体(如HERMES)构建一个本地控制中心,通过Node.js服务端与纯静态HTML面板的结合,实现了硬件状态监控、进程管理、实时日志流及内置终端等核心功能。方案巧妙运用多WebSocket通道设

weixin_28745525的博客 559

Max6675-Raspberry-pi-nodejs:用K型热电偶读取温度树莓派NodeJS

最高6675 用K型热电偶读取温度。 Raspberry pi NodeJS。 从npmjs获取代码。 npm i max6675-raspi --save PIN值为BCM GPIO(绿色)。 通用输入输出

深入 Nodejs 源码探究 CPU 信息的获取与利用率计算

在 Linux 下我们通过 top 或者 htop 命令可以看到当前的 CPU 资源利用率,另外在一些监控工具中你可能也遇见过,那么它是如何计算的呢?在 Nodejs 中我们该如何实现...

全栈者 的博客 1961

Node.js 获取电脑CPU/内存/网卡等信息

转载,已验证! const os = require('os'); var dealTime = (seconds)=>{ var seconds = seconds|0; var day = (seconds/(3600*24))|0; var hours = ((seconds-day*3600)/3600)|0; var minutes = ((...

袁军伟的博客 1万+

基于Node.js树莓派构建无镜智能信息中心:IOTA MagicMirror实战指南

在物联网与智能家居领域,信息的高效、美观呈现是核心需求。Node.js作为跨平台的JavaScript运行时,以其非阻塞I/O和丰富的npm生态,成为构建本地信息服务的理想技术基础。结合Electron框架,可将Web应用打包为原生桌面程序,实现全屏、无边框的沉浸式显示体验。这种技术组合的价值在于,能够以极低的成本将任何旧屏幕(如平板、显示器)改造为智能信息终端,解决信息碎片化与场景化呈现的痛点。其典型应用场景包括家庭信息中枢、办公效率看板及智能家居控制面板。本文以热门的IOTA MagicMirror项目

weixin_30402343的博客 426

[树莓派]安装node环境

本文并非node的编译安装,据说这要花很长时间,所以一开始我就是拒绝的。本文展示的是如何部署ndoe的编译好的执行文件。 node的官网上下载目录里本身就有针对arm的编译好的执行文件。地址在这里:https://nodejs.org/dist/v4.2.1/ 选择合适的版本 下载合适的版本弄到树莓派上,合适版本的选择是这样的:SSH登录上树莓派控制台就会显示相关的信息: 看...

weixin_30908941的博客 195

1、硬件盒子中安装Node.jsNode-Red

本文采用移动机顶盒UNT403作为实验盒,该盒子带有四核64位ARM Cortex-A53的CPU,内部集成GPU Mali-450,拓展2G内存,8G存储,性能适应大部分工业边缘计算场景。Node.js 从v18开始,需要GLIBC_2.27支持,如果系统没有那么高的版本,可以使用v16或以下版本。首先,把/node/node-v20.11.1-linux-arm64/文件夹移动到/usr/share/目录下。在浏览器地址栏中输入http://x.x.x.x:1880/即可进入nodered。

Vast_1993的专栏 556

探索将scratch3移植到树莓派

移植scratch3.0到树莓派(一) 最近了解到Scratch3.0发布了,这是一个用React.js做的开源项目,于是在好奇心的驱使下想尝试一下能不能在现有的基础上添加一些自己的东西,最重要的是套壳移植到树莓派上让孩子们不需要付出太多也能体会到编程的乐趣 由于之前没有接触过React.js,在摸索了一下午后终于是在自己电脑上把scratch3.0跑起来了,还是很开心的 1.在电脑上安装Git和...

LiebeDichWuFei的博客 5980

树莓派连接阿里云物联网平台-订阅(nodejs)

陈拓chentuo@ms.xab.ac.cn2019/12/14-2020/01/05 1. 阿里云物联网平台设置 2.树莓派上安装Node.js LTS工具包 3. 阿里云物联网平台Node.js SDK 4. 发送温度数据到阿里云 5. node.js读DS18B20数据发送到阿里云 上面的内容见《树莓派连接阿里云物联网平台-属性(nodejs)》https://blog.csdn...

晨之清风 2298

树莓派做服务器运行博客网页

用三四百的树莓派开发板做服务器运行博客网页,炫酷极了

嵌入式学习记录站点 9794

Porcupine Node.js 语音唤醒词识别实战教程

Porcupine 是一款高精度、轻量级的语音唤醒词引擎,它使开发者能够构建始终在线的语音交互应用。作为 Picovoice 旗下的核心产品,Porcupine 具有以下显著特点: - **隐私保护**:完全离线运行,不依赖云端处理 - **高准确率**:在各种环境噪音下都能保持出色的识别性能 - **资源高效**:即使在微控制器等资源受限设备上也能流畅运行 - **数据高效**:无需大量训练数

gitblog_00636的博客 989

树莓派中安装MCSM面板

(已更新2022.4.8)本文将帮你解决面板安装过程中的“二进制文件格式错误问题”

Jerry-CSDN 4296

基于MQTT.JS构建轻量级网页端物联网控制台

本文详细介绍了如何使用MQTT.JS库快速构建一个轻量级、跨平台的网页端物联网控制台。通过分步教程,指导开发者实现MQTT连接管理、主题订阅与消息发布等核心功能,并提供了自动重连、JSON消息处理等进阶优化方案,适用于智能家居监控、设备远程控制等场景。

weixin_27945229的博客 353

ePaper.js项目最佳实践:生产环境部署和维护指南

ePaper.js是一个功能强大的Node.js库,专为在树莓派上使用HTML和Javascript轻松创建电子纸显示而设计。本指南将详细介绍如何在生产环境中部署和维护ePaper.js项目,确保你的电子纸显示稳定可靠地运行。 ## 📋 环境准备与安装 ### 系统要求 在开始部署前,请确保你的树莓派满足以下条件: - 运行Raspbian或其他基于Debian的Linux系统 - 已安装N

gitblog_00289的博客 956

fe-material硬件编程:Node.js与Robotics的物联网开发实战

fe-material是一个专注于整理收集最有趣的前端技术教程及文档的开源项目,其中硬件编程模块为开发者提供了Node.js与Robotics结合的物联网开发实践指南。本文将带你快速掌握如何利用Node.js生态系统进行物联网硬件开发,从基础概念到实战案例,让你轻松开启物联网开发之旅。 ## 🤖 为什么选择Node.js进行物联网开发? Node.js凭借其非阻塞I/O模型和丰富的npm生态

gitblog_07305的博客 544
上一篇: 使用 pip 安装 pygame 遇到的问题
Mitcsherlich
博客等级 码龄10年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值