Проект «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 и шкаф с начинкой
Сразу решил для себя, что буду делать проект так, чтобы потом не стыдно было его показать потенциальному рекрутеру и друзьям. Для этого отказался от навесного монтажа в пользу электрического шкафа, арендовал виртуальный сервер, подкрутил домен и SSL-сертификат к нему. Кстати, приложение будет доступно по ссылке еще в течение 2 месяцев после публикации этой статьи.
Содержимое шкафа
Первым этапом проекта была разработка и сборка электрической схемы. Здесь было все просто:
1. Проектирование принципиальной электрической схемы;
2. Тестирование преобразователя MAX485 в связке с Arduino и виртуальным сервером;
3. Вывод датчиков от солнечной панели на Arduino Uno;
4. Подключение реле к Arduino;
5. Написание прошивки для Arduino;
6. Сборка шкафа
C приложением верхнего уровня пришлось поработать чуть подольше, потому что хотелось реализовать не просто вывод цифр на html-ку, а полноценный интерфейс с возможностью редактирования устройств, системой авторизации и т.п.
Ссылка на репозиторий на GitHub
Часть веб-интерфейса администратора
Вот такой проект получился. Выделит ли он меня на фоне других JS-разрабов джунов, не знаю. Но теперь с уверенностью могу сказать, что разработать веб-приложение от А до Я, с возможностью управления контроллерами Arduino, точно смогу.