🚧 Ссылка на блог:Пишем консоль для Raspberry Pi с помощью Node.js | Эмбер
Когда я был первокурсником, я купил много Raspberry Pis, потому что в то время я ничего не знал, поэтому большую часть времени я ставил их в угол, чтобы есть пепел. Недавно я видел иностранного брата в археологииСоздайте кластер Hadoop с Raspberry, я достал Raspberry Pi и переделал его, чтобы использовать его в качестве центра умного дома. К счастью, он был использованlegoКорпус аттракциона, который теперь легко восстановить, выглядит следующим образом после того, как с ним повозились. чтобы иметь возможностьiOS
лучшее использованиеHomeKit
Для управления несколькими умными светильниками Xiaomi дома я выбралHomeAssistantКак центр умного дома, тепловыделение Raspberry Pi стало проблемой.
Юкино сидит и благословляет жуков
Первоначально, когда я купил Raspberry Pi, я принес вентилятор, но все они были напрямую подключены к интерфейсу питания Raspberry Pi, то есть,3.3v
приведенный в действиеGPIO
Штифт не может быть забит5v
Рабочее напряжение вентилятора, а с другой стороны этот маленький вентилятор очень шумит, да и подшипник невыносим, когда подшипник крутится день и ночь (один завешался), так что я пошел к всемогущему сокровищу купить встроенный стандартВентилятор с магнитной левитацией,6cm
Воздушный тракт может рассеивать тепло для двух Raspberry Pis одновременно. Факты доказали, что вентилятор на магнитной подвеске действительно оправдывает свою репутацию, объем воздуха действительно большой, а звука нет вообще. Однако, чтобы продлить срок службы подшипника, необходимо разработать программу управления вентилятором, которой можно было бы управлять с помощью программирования.
После некоторого поиска я сослалсяэтостатья. Выше было сказано,3.3v
изGPIO
Напрямую подавать питание на вентилятор невозможно, поэтому я выбрал триодное решение в блоге и спроектировал эту схему:
Онлайн CircuteLab Нет
motor
,использоватьlamp
Момент
Я выбрал то же, что и в блогеS9012
изPNP
Тип трехполюсный, вентилятор положительный и малиновый5v
Вывод подключен, минус подключен к эмиттеру триода, а база триода подключена к тому, который вы хотите использоватьGPIO
булавка (например, вот я8
штырь (GPIO 14
)) подключены, и коллектор можно заземлить. См. распиновку Raspberry Pi ниже:
⚠️ Внимание
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
Общение пойдет. Хоть он и простой, но код относительно громоздкий, поэтому я не буду его здесь выкладывать, а приведу несколько скриншотов:
О, похоже, ваш браузер не поддерживает тег
сексуальный фанат онлайн растление
С HomeAssistant вкуснее
Но я не знаю, еслиd3.js
Производительность Raspberry Pi в любом случае не очень хорошая, после долгой работы Raspberry Pi не будет греться, но процессор компьютера не сядет.туман, предполагается, что повторная операцияDOM
Накладные расходы на производительность все еще слишком велики, и в следующем году они снова будут использоваться.Vue
Рефакторинг.