58 подписчиков

Передача данных с Arduino на веб-интерфейс(NodeJS, React) через GSM-сеть

Промониторив много различных вакансий на позиции Backend-разработчика на HH.ru, понял, что с учебными проектами, которые предлагаются на различных IT-курсах, мне просто не выделиться на фоне тысяч(если не десятков тысяч) выпускников подобных заведений. По этой причине, и конечно же, из чистого(бескорыстного) любопытства решил реализовать проект передачи данных с солнечной панели SDM-50 в Интернет с использованием всех технологий, которым обучился в Нетологии на курсе по NodeJS.

Итак, идея - передать данные с датчиков, соединенных к солнечной панели SDM-50, сначала на удаленный сервер с использованием GSM-модема, затем по запросу пользователей на веб-интерфейс, реализованный на NextJS.

Стек:

  • Backend: NodeJS, nginx, MongoDB, Windows Server 2022(ПО для настройки модема не работает в Linux);
  • Frontend: NextJS, Bootstrap, gsap;
  • Оборудование: GSM-модем Промодем, контроллер заряда солнечной панели, панель SDM-50, свинцовый АКБ, Arduino, датчик напряжения, лампочка 12В.

Сразу решил для себя, что буду делать проект так, чтобы потом не стыдно было его показать потенциальному рекрутеру и друзьям. Для этого отказался от навесного монтажа в пользу электрического шкафа, арендовал виртуальный сервер, подкрутил домен и SSL-сертификат к нему. Кстати, приложение будет доступно по ссылке еще в течение 2 месяцев после публикации этой статьи.

Промониторив много различных вакансий на позиции Backend-разработчика на HH.

Первым этапом проекта была разработка и сборка электрической схемы. Здесь было все просто:

1. Проектирование принципиальной электрической схемы;

2. Тестирование преобразователя MAX485 в связке с Arduino и виртуальным сервером;

3. Вывод датчиков от солнечной панели на Arduino Uno;

4. Подключение реле к Arduino;

5. Написание прошивки для Arduino;

6. Сборка шкафа

Шкаф диспетчеризации
Шкаф диспетчеризации

C приложением верхнего уровня пришлось поработать чуть подольше, потому что хотелось реализовать не просто вывод цифр на html-ку(как и делает большинство производителей "железа"), а полноценный интерфейс с возможностью редактирования устройств, системой авторизации и т.п. И в этом распиаренный React на пару с Bootstrap очень упростили мне жизнь.

Администратор может редактировать данные не только пользователей, но и приборов
Администратор может редактировать данные не только пользователей, но и приборов

Вот такой проект получился. Теперь с уверенностью могу сказать, что разработать веб-приложение от А до Я, с возможностью управления контроллерами Arduino, не так уж и сложно.

Пример переключений показал в этом видео📽️

Проект положил в репозиторий на GitHub. Если у вас есть дополнительные идеи или вы заметили давнокод(не исключено), то я буду рад увидеть ваши pull-request