Промониторив много различных вакансий на позиции 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 месяцев после публикации этой статьи.
Первым этапом проекта была разработка и сборка электрической схемы. Здесь было все просто:
1. Проектирование принципиальной электрической схемы;
2. Тестирование преобразователя MAX485 в связке с Arduino и виртуальным сервером;
3. Вывод датчиков от солнечной панели на Arduino Uno;
4. Подключение реле к Arduino;
5. Написание прошивки для Arduino;
6. Сборка шкафа
C приложением верхнего уровня пришлось поработать чуть подольше, потому что хотелось реализовать не просто вывод цифр на html-ку(как и делает большинство производителей "железа"), а полноценный интерфейс с возможностью редактирования устройств, системой авторизации и т.п. И в этом распиаренный React на пару с Bootstrap очень упростили мне жизнь.
Вот такой проект получился. Теперь с уверенностью могу сказать, что разработать веб-приложение от А до Я, с возможностью управления контроллерами Arduino, не так уж и сложно.
Пример переключений показал в этом видео📽️
Проект положил в репозиторий на GitHub. Если у вас есть дополнительные идеи или вы заметили давнокод(не исключено), то я буду рад увидеть ваши pull-request