Моя первая SMD пайка))
Выглядит ужасно, но заработало с первого раза 😃
Выглядит ужасно, но заработало с первого раза 😃
На сегодняшний день даже система мониторинга в тепличных комплексах - это не дешёвое удовольствие.
Мы протестировали относительно не дорогой комплект, установили по 3шт промышленных датчика (modbus rtu) температуры +влажность в каждую 100метровую теплицу, которых было 9шт, собрали все данные по проводной шине (Utp5e RS485) около 900метров без каких-либо промежуточных коммутаторов и усложнения проекта. В промежутке поставили компьютер AntexGate.
Вот такая простая схема!
Итак проект реализовали на разработанном нами контроллере интернет вещей AntexGate + бесплатный софт Node-red, который передает данные либо сразу на экран монитора либо через web-интерфейс:
На главный экран выводится текущая температура и влажность по каждому прибору, в случае обрыва или отсутствия датчика выводится значение ERR, а для выбора страницы реализован всплывающий экран.
График температуры и влажности
За каждый день можно посмотреть данные на графике и проанализировать отношение температуры и влажности (синяя линяя влажность, белая температура), график строится как за отдельный датчик, так и средние значения в теплице.
Экспорт данных CSV
Для более подробного анализа возможно скачать архив в формате csv и построить аналитику внешними средствами, например, за целый сезон.
Настройки системы оповещения
Страница настроек для оповещения и привязки Teleram бота. Когда достигнут критический придел из всех устройств (телефоны, ПК) с открытым web интерфейсом либо из подключенного монитора происходит голосовое оповещение о низкой, или высокой температуре определенной теплицы и конкретного датчика.
Оповещение в телеге
Планируем расширять проект, т.к. в локальной wifi сети у Всех есть доступ к текущим значениям, но хочется посмотреть значения удаленно, тут мы планируем использовать Умный дом Яндекс, бесплатное приложения для мониторинга отлично подойдём еще и строит график.
Немного красоты из систем Умного дома
Примерно такой дружелюбный интерфейс у Яндекса, в добавок на производстве можно раскидать колонок и спрашивать о состоянии системы.
В заключении хотелось бы сказать, что реализация данной системы подходит для конкретного заказчика и большое преимущество свободно программируемых систем AntexGate + Node-red в том, что ее можно доработать в дальнейшем. Можно добавить стыковку с другими системами, весами, поливом, приводами, климатическими системами и другим.
Ниже наш прибор на котором реализован проект, система отработала год.
Компьютер интернет вещей AntexGate
Интересно услышать мнение профессионалов о необходимости такой системы на рынке, с разработчиками в РФ и учетом Европейских санкций.
Подробнее об устройстве на котором реализован проект можно почитать в нашем Телеграмм-канале и задать вопросы.
Если коротко, то речь пойдет о промышленном ПК на основе Raspberry CM4 – это абсолютный аналог Raspberry Pi4 в промышленном исполнении с надёжной eMMC от Samsung и полной программно-аппаратной совместимостью.
Одну статью мы закончили фразой: «Надеемся, что мы вдохновим читателей на переработку Ваших личных проектов в более масштабное производство с коммерческими перспективами.»
В этой статье мы расскажем о продолжении этой истории и что мы имеем на сегодняшний день.
После пандемии начался великий дефицит на устройства Raspberry CM3+, а потом их и вовсе сняли с производства, что сильно нас не поломало. Мы нашли моментальный выход в виде китайского качественного переходника Raspberry CM3-CM4, тем самым клиенты получили лучшие технические характеристики, а мы время на переход к новому форм-фактору.
Переходник CM3-CM4
Еще одной проблемой была замена корпуса с Китайского Gainta на собственный, в связи с тем же дефицитом и тяжёлой логистикой (дорого возить куски металла) из Китая. Было решено покончить с этой коробкой.
Корпус Gainta - крепкий, но дефицитный.
Спустя несколько недель корпус получился, а идею крепления на DIN рейку/панель взяли у Moхи.
Первая версия устройства в новом корпусе.
Собрав обратную связь от текущих клиентов, специалистов АСУ ТП и остальных диванных критиков, мы выделили следующие недостатки в первой версии:
Необходима гальваническая развязка RS485 портов.
Необходимо два LAN порта для создания киберзащищенных шлюзов между низким и высоким уровнем.
Малый объем оперативной памяти 1Gb в некоторых случаях (установка Касперского, VipNet и другая большая обработка данных)
Отсутствие дополнительного хранилища данных кроме внешней USB флешки.
Нехватка питания для мощных периферийных модемов.
Отсутствие дискретных входов\выходов.
Решено было оставаться на обновленной Raspberry CM4, это устройство сразу решало несколько наших недостатков, а именно ОЗУ до 8GB, WIFI сразу на борту, есть MPCI-E линия для SSD диска, инфраструктура под 1GB Ethernet и самое главное это всемирное сообщество, поддерживающее этот продукт.
В интернете много готовых программах продуктов и исходников для Raspberry.
Самое главное, что клиенту нет необходимости предварительно приобретать такое устройство и можно весь софт писать и тестировать на настольной Raspberry PI и даже целиком перенести слепок на AntexGate c помощью Win32DiskImager.
Инженеру больше не нужно краснеть перед руководством, объясняя, что на этой малинке можно собрать все что угодно, малина — это как-то по-детски, а тут железяка черная – красота!
Накидали функциональную схему и начал тянуться долгий год разработки и отладки.
Функциональная схема нового устройства
И вот, наконец, поле нескольких подходов плата получилась и работает безупречно, питание не скачет, все нагрузки выдерживает.
RS485 мы конечно развязали, предусмотрели возможность демонтажа гальваники, когда это критически необходимо, получили два LAN порта 1Gb/s и 100Mb/s и более того добавили возможность питания от любого passive POE-инжектора.
По традиции набор интерфейсов 2xRS485/1xRS232/1x1Wire/1xCAN/2xUSB/1xHDMI/2xSMA, самое главное появились дискретные каналы: 4 входа 9-48В развязанные оптопарами, 3 выхода: 2-реле и 1-оптопара.
Также оставили очень полезные вещи: RTC часы, аппаратный watchdog, MPCI-e разъем для модема, двухцветный программируемый светодиод, которым можно поморгать либо настроить для внешнего визуального осмотра состояния прибора (зеленый/желтый/красный).
С диском m.2 получилось все достаточно хорошо и одна линия MPCI-e выдает свои стабильные 300Mb/s на чтение и 300Mb/s на запись. Теперь уже можно хранить огромные базы данных, использовать как тонкий клиент, загрузить медиа контент, хранить и обрабатывать фото и видеофайлы.
Питание для устройства сделали с запасом и в широком диапазоне от 9 до 48В. У каждого инженера найдется блок питания в таком диапазоне. Отдельно для периферийных устройств реализовали понижающий импульсный источник питания в пределах 5А для дисков NVME + модем одновременно.
Плата сверху с вычислительным модулем Raspberry CM4
Плата снизу с периферийными устройствами
Корпус решили оставить в прежнем исполнении за исключением нескольких технических решений, а именно выкинуть крепежные стойки для платы. Вместо стоек мы отогнули 4 уха и нарезали в них резьбу, таким образом в одном цикле мы получаем 2 готовые железяки к сборке.
Корпус из стали 0.7мм порошковая покраска
Составные части устройства
У нас получился компьютер для встраиваемых систем и действительно безотказный! Всем «дедам» назло.
Изображение устройства со стороны подключения промышленных интерфейсов
Изображение устройства со стороны стандартных интерфейсов
Шутки в сторону — мы ведь серьезная организация!
Всем кто дочитал до конца мы готовы предоставить устройство на тестирование.
Да-да, идея не уникальна, но тег моё, т.к я сам разработал, спаял и запрограммировал эту штуку
Добрый день. Хотелось бы попросить скетч.
цель: имеем wemos d1 mini + применик для пульта 433мгц. Нужно по сигналу с пульта просиходило выключение пк коммандой: shutdown /s /t 10 /m \\имя_компа.
до этого на веб морде weimos были настройки переменных: компа и логин и пароль от компа. Ну и подключение к wifi чтоб это работало.
ну грубо говоря:
прием сигнала с пульта
посыл комманды для авторизации на пк
типа net use t: \\%computername\c$ %password /user:%username
следом:
shutdown /s /t 10 /m \\%computername
как то так.
Основной используемый принцип -запросы и обработка ответов по смарт-протоколу APC
За исключением того, что плату мониторинга/управления собираем на основе WemosD1mini.
Дешевизна решения очевидна, с учетом того, что самая дешевая сетевая плата AP9640 (без внешних датчиков) стоит более 500$
Плата собрана по традиции в коробочке из под Тик-Така.
мониторинг основных параметров UPS на WEB странице, а также в представлении XML и JSON
доступ к плате по WiFi. Сохранение параметров подключения
сигнализация аварии - отправка сообщения на PHP скрипт по ссылке
сбор информации о окружающей температуре и влажности
сохранение настроек в EEPROM FLASH
Wemos D1 mini
max3232 module без DB9 разъема
разъем DB9 папа
DHT-21 датчик температуры и влажности (опционально)
Схема простого подключения APC smart к RS232 COM порту ПК:
Схема микроконтроллера в связке с UPS
В коде применены нестандартные библиотеки.
Помимо основной esp8266, ESP_EEPROM и WiFiManager
ups_alarm_script_url - ссылка на скрипт, для передачи алерта пропадания/появления питания, на email или телеграмм, в формате http://server/mail= или похожем.
Y Enter smart mode SM
R Exit smart mode SM
^A Model string SMART-UPS 700
^N 1,5s ^N Turn on UPS
K 1,5s K Turn off
L Input line voltage
P Power load % 000.0
Q Status flags 08
08 = on line, battery OK
10 = on battery, battery OK
50 = on battery, battery low
Z Shutdown immediately n/a
f Battery level 099.0
Сообщения
!!! нет входного напряжения
$ появление входного напряжения
Пользуясь случаем, хотел бы передать привет все любителям esp
Qt Creator 12 - это новая версия интегрированной среды разработки для Qt и C++, которая содержит исправления ошибок и новые функции.
Среди самых важных нововведений можно отметить:
Интегрированный Compiler Explorer. Введите код, чтобы исследовать, как он выглядит для разных компиляторов.
Отладка CMake и протокол Debug Adapter. Установите точки останова в файлах CMake и выберите Отладка > Начать отладку > Начать отладку CMake, чтобы запустить отладчик CMake.
Запись экрана. Легко создавайте записи (части) вашего экрана для отчетов об ошибках, обмена, блогов и т.д.
Qt Creator 12 также улучшил производительность запуска, обновил инструменты Clangd и Clang analyzer до LLVM 17.0.1, добавил настройки для имени и комментариев файлов C++, расширил возможности редактора файлов CMake и многое другое.
Интересные факты и фичи языков программирования у нас в канале, заходи :)
Исключения в C++ - это механизм, который позволяет обнаруживать и обрабатывать ошибки во время выполнения программы. Исключения могут быть сгенерированы оператором throw или автоматически при возникновении некоторых ошибок, таких как деление на ноль, выход за границы массива или нехватка памяти. Исключения могут быть перехвачены и обработаны с помощью конструкции try…catch, которая определяет блок кода, в котором может произойти исключение, и блок кода, в котором исключение обрабатывается.
Исключения могут иметь различные типы, которые определяют характер ошибки и передают дополнительную информацию об исключении. Некоторые типы исключений являются стандартными и определены в библиотеке <stdexcept>. Основные из них:
logic_error: общий тип исключений, которые возникают из-за ошибок логики или программирования.
invalid_argument: исключение, которое возникает, когда аргумент функции недопустим или некорректен.
domain_error: исключение, которое возникает, когда аргумент функции выходит за пределы допустимого домена.
length_error: исключение, которое возникает, когда попытка создать объект превышает его максимально допустимый размер.
out_of_range: исключение, которое возникает, когда попытка доступа к элементу контейнера, который находится за его границами.
runtime_error: общий тип исключений, которые возникают во время выполнения из-за ошибок среды или системы.
range_error: исключение, которое возникает, когда результат операции выходит за пределы допустимого диапазона.
overflow_error: исключение, которое возникает, когда результат арифметической операции превышает максимально допустимое значение.
underflow_error: исключение, которое возникает, когда результат арифметической операции меньше минимально допустимого значения.
Кроме стандартных типов исключений, можно определять свои собственные типы исключений, наследуясь от класса exception или его потомков. Например:
#include <iostream>
#include <exception>
using namespace std;
// Определение собственного типа исключения
class MyException : public exception {
public:
// Переопределение метода what(), который возвращает сообщение об исключении
const char* what() const noexcept override {
return "My exception occurred";
}
};
// Функция, которая генерирует исключение типа MyException
void func() {
throw MyException();
}
int main() {
try {
func(); // Вызов функции, которая генерирует исключение
}
catch (MyException& e) { // Перехват исключения типа MyException
cout << e.what() << endl; // Вывод сообщения об исключении
}
return 0;
}
В этом примере определяется класс MyException, который наследуется от класса exception и переопределяет метод what(), который возвращает сообщение об исключении. Затем в функции func() генерируется исключение типа MyException с помощью оператора throw. В функции main() используется конструкция try…catch для перехвата и обработки исключения типа MyException. В блоке catch выводится сообщение об исключении с помощью метода what().
Исключения в C++ позволяют эффективно и безопасно обрабатывать ошибки в программе, а также разделять код, который может вызвать ошибку, от кода, который может ее обработать.
Интересные факты и фичи языков программирования у нас в канале, заходи :)