Проект «Solar Future» или передача данных с Arduino на веб-интерфейс через 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В.

Солнечная панель SDM-50 и шкаф с начинкой

Солнечная панель SDM-50 и шкаф с начинкой

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

Содержимое шкафа

Содержимое шкафа

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

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

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

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

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

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

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

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

Ссылка на репозиторий на GitHub

Часть веб-интерфейса администратора

Часть веб-интерфейса администратора

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

© Habrahabr.ru