10

Зацените, сделал барометр

В этом году увлекся сбором девайсов на базе микроконтроллеров.

Сделал сервис который показывает данные атмосферного давления в моем городе.

Выглядит вот так.

<!--noindex--><a href="https://pikabu.ru/story/zatsenite_sdelal_barometr_13387997?u=https%3A%2F%2Fpressure.pyah.online%2F&t=https%3A%2F%2Fpressure.pyah.online%2F&h=f6993e5c4210572e0a4e2852879a173f32a4f1a3" title="https://pressure.pyah.online/" target="_blank" rel="nofollow noopener">https://pressure.pyah.online/</a><!--/noindex-->

https://pressure.pyah.online/

Это аппаратная часть.

Это аппаратная часть.

Из железа я использовал плату esp32c3 от LuatOS

И модуль со спаренными датчиками BMP280 + AHT20 которые показывают атмосферное давление, температуру и влажность.

Теперь как это все работает у меня работает и что мне пришлось изучать.

Поехали...

Чтобы работать с микроконтроллером нужна платформа разработки от производителя плат ESP-IDF https://github.com/espressif/esp-idf, с помощью этого инструмента происходит компиляция, тестирование прошивка самой платы.

Чтобы работать с платой было комфортно необходимо выбрать IDE это такой инструмент который позволяет писать код, проверять его, отлаживать находить ошибки. и предоставляет дружественный интерфейс для работы ESP-IDF. Тут есть выбор. Я использую VSCode https://code.visualstudio.com/ с официальным расширением для ESP-IDF (https://marketplace.visualstudio.com/items?itemName=espressi...)

Имея настроенные эти два инструмента уже можно попробовать поиграться с платой. Для того чтобы плата делала то, что ты от нее хочешь ей нужно написать программу на понятном тебе языке которую компилятор переделает в программу понятную контроллеру. Тут тоже есть выбор, но пока довольно однобокий большинство программ для этих контроллеров пишется на языке СИ (язык очень древний, серьёзный и крутой, но для комфортной работы с ним нужно достаточно углубиться в архитектуру работы ЭВМ в целом), поэтому есть попытки использовать Blockly, MicroPython, TibyGo и прочие языки и параметризаторы которые генерируют код в зависимости от заданных вами параметров. Но все это пока не очень серьезно с точки зрения производительности и сопровождения по сравнению с СИ.

Датчик (BMP280 + AHT20) и микроконтроллер (esp32c3) обмениваются данными по шине I2C (это такой способ подключения устройств при котором для обмена данными используется два контакта один отвечает за передачу данных и еще один за синхронизацию, и у каждого типа подключаемого устройства есть свой адрес)

Подключив датчик и считав данные нужно их отправить сервису который их собирает. На борту у платы есть встроенный модуль работы с wifi. Нужно инициировать работу модуля в режиме клиента и немножко понимать как работают устройства в сетях TCP/IP. Тут нужно знать буквально что у каждого устройства есть свой адрес и что существует такой сервис как DNS который из понятного нам адреса pressure.pyah.online умеет переделывать в понятные машинам адреса 82.202.140.217 и то что потоки данных идут по портам, те моя плата и сервер обмениваются данными не по одной трубе а по нескольким.

Плата и сервер обмениваются данными определенным образом. по протоколу HTTPS это текстовый протокол, плата шлет серверу текстовые сообщения подготовленные определенным образом и получает такие же ответы.

Чтобы передать данные их необходимо предварительно завернуть в формат чаще всего это JSON (JavaScript Object Notation) это такой язык разметки который позволяет удобно размечать данные чтобы указать где в этих данных что именно. Тогда их удобно передавать между устройствами.

Плата по нашей программе считала, подготовила данные, подключилась к сети и готова отправить данные.

Для того чтобы эти данные получить нужен сервис которые будет этим заниматься, и то как он это будет делать есть множество различных вариантов. Вариант который использовал я это REST API это такой тип сетевого приложения который обменивается информацией с клиентами по протоколу HTTP/HTTPS в виде определенных запросов дай данные, возьми данные, измени данные.

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

Сервис написан на языке GO, база данных Postgres.

Все это работает на виртуальном сервере под управлением операционной системы CentOS.

Для того чтобы отобразить эти данные в вашем браузере, на этом сервере работает еще одна программа Nginx(веб сервер), ее задача из текстовой информации по определённым правилам сформировывать страницы.

Подготовкой этой информации занимается еще одна программа Веб приложение, оно забирает данные обращаясь к API серверу когда вы вводите адрес в браузере и подготавливает эти данные для веб сервера который и передает информацию вашему браузеру для отображения Вам.

Для разработки веб приложений используется свой стек технологий React, JavaScript, CSS, HTML, SVG.

Плюс еще промежуточные знания по работе системы контроля версий (git), и систем развертывания (CI/CD)

Вот такой непростой путь сигнала от датчика в ваш браузер.

Код можно глянуть тут
https://github.com/orgs/alhaos-measurement/repositories

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества