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

0
Автор поста оценил этот комментарий
Не проще барометр купить?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Тут вопрос не в "проще", проще в Интернете посмотреть.

0
Автор поста оценил этот комментарий

потом сделаешь что-нить такое

Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Тут похоже контроль ради контроля, антипатерн для меня, я еще планирую что то сделать датчиком качества воздуха.

0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Специально по вашему замечанию добавил динамику, проверьте пожалуйста, устраивает ли.

0
Автор поста оценил этот комментарий

а зачем знать просто атмосферно давление? для предсказания погоды нужна динамика, чтобы понимать поднимается или падает и насколько быстро

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Добавил динамику по вашему запросу, проверьте пожалуйста, устраивает?

показать ответы
1
Автор поста оценил этот комментарий

Ну можно было взять на крайняк ножки от деталей. Выглядело бы в разы лучше.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Мне нравится вариант с макетной платой с припаянными разъемами под гребенку, и гребенкой на плате и датчике, там можно легко, что то заменить если полетит. Наверное так и сделаю что то следующее.

0
Автор поста оценил этот комментарий

в стародавние времена вешал 3 термометра ds18b20 к UART роутера DIR-320, скрипт опрашивал раз в минуту, складывал в rrd, а lighttpd рисовал графики. Статический код занимал пару десятков строк безо всяких react, js и прочего лишнего

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, думаю для решения именно этой задачи тут много всего избыточного.

2
Автор поста оценил этот комментарий

Провода не подвезли? 😁

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Это эксперимент с навесным монтажом.
показать ответы
0
Автор поста оценил этот комментарий

может на показометре время измерения брать не из локалтайма юзера, а из measuredAt в респонсе?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Разумное предложенте, но думаю без модуля часов, это будет примерно так же.
0
Автор поста оценил этот комментарий

А кейл что? Или не подходит?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

я не понимаю про что вы.

показать ответы
0
Бебебе
Автор поста оценил этот комментарий

очередная "погодная станция"

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Хороший вариант для обучения.

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества