воскресенье, 14 марта 2021 г.

Управление светодиодом через raspberry pi и node js

Node js дополняет язык javascript специальными функциями которые могут передать на выполнение какую либо команду интерпретатору языка bash по средствам которого происходит взаимодействие пользователя Raspberry pi с операционной системой этого компьютера. Это значит что используя node js можно (также как и ранее в предыдущих статьях данного блога про Raspberry pi) обратиться к утилите wiring pi для управления пинами raspberry pi. Но на этот раз, основную часть программы можно написать на простом и удобном javascript с динамической типизацией, "сборщиком мусора", строками, регулярками, объектами и прочими присущими данному языку вещами. К тому же, в случае когда управление Raspberry pi приходиться делать через web интерфейс то по любому придется писать код на javascript и если этот язык подходит и для серверной и для клиентской части то вполне можно ограничиться изучением только этого языка. О том как установить и использовать node js с raspberry pi есть статья: https://electe.blogspot.com/2021/01/hello-world-node-js-raspberry-pi.html поэтому перейдем сразу к рассмотрению кода:
В переменную path передается html код страницы с двумя кнопками для включения и выключения светодиода. При нажатии на одну из кнопок происходит передача get запроса запущенному серверу. В зависимости от того какая кнопка была нажата и какой запрос пришел будет выполнена либо установка пина под номером 1 на выход и уровень логического нуля либо на вход и уровень логической единицы для того чтобы светодиод погас т.к. в соответствии со схемой:

катод светодиода подключен с пину а анод к плюсу питания. В качестве аргумента в функцию fetch передается get запрос в котором указывается ip адрес raspberry pi, номер порта и дополнительный параметр для включения или выключения светодиода. Если данной код заработал то не обязательно ограничиваться управлением только одним светодиодом или одним цветом RGB светодиода (как на схеме выше). Можно сделать управление всеми тремя цветами и их смесью. Для этого можно использовать например такой код:
Также можно например подключить какую нибудь библиотеку и сделать более красивый web интерфейс. Для этого node js отлично подходит.