Две платы на ESP32, связанных по RS422

Цена договорная
17 апреля 2023, 12:46 • 3 отклика • 58 просмотров
Необходимо сделать в этом заказе:
1. Электрические схемы двух плат: релейного модуля и контроллера
2. Разводку печатных плат с подбором компонентов
3. Подготовить файлы для заказа сборки на JLCPCB или аналогах (размер платы до 100х100мм)
4. Прошивки для ESP32 (без протокола VTK)

В планах, после тестирования работы:
5. Заменить ESP32 DevKit на чистый ESP32 (можно на другой микроконтроллер)
6. Встроить в контроллер понижающий преобразователь вместо внешнего
7. Добавить в релейный модуль поддержку датчиков
8. Добавить поддержку протокола VTK для эквайринга


## Общее описание окружения, с которым работают платы:
В электрическом щите находятся (на входе щита: 3 фазы 230В):
  • Контактор (катушка AC230V, 100ВА при включении, 10ВА при удержании) - включает трехфазный асинхронный двигатель
  • Дозаторы (катушка AC230V, 48Вт) - вибрационные/плунжерные насосы, дозировка по ШИМ парами полуволн
  • Реле для однофазных нагрузок (катушка DC24V, 2Вт)
  • Модуль реле - который должен всем этим управлять по командам от контроллера
  • Блок питания DC24V, 200Вт

В терминале управления находятся (на вход из щита приходят: кабель 3х2,5мм2 DC24V и витая пара):
  • Преобразователь напряжения DC24V в DC12V
  • Экран - подключен к ПК
  • ПК - подключен к контроллеру по USB, собирает с него данные и отдает команды
  • Монетоприемник + Купюроприемник + Эквайринг - подключены к контроллеру
  • Контроллер - обеспечивает связь ПК со всей переферией и модулем реле
Разрабатываемая система состоит из двух частей: контроллера и модуля, соединенных по RS422 по витой паре. Контроллер получает данные от монетника и купюрника по протоколу Pulse, и общается с эквайрингом по протоколу VTK. Контроллер сообщает на ПК по USB (через RS232 мост) данные о событиях оплаты, данные с датчиков и получает команды от ПК. Модуль по командам от контроллера включает нагрузку, в том числе с ШИМ.


## Контроллер:
2х19pin - две гребенки для подключения "ESP32-DevKitC V4" (USB кабель подключен к ПК)
Питание идет от USB, все контакты с платой оптоизолировать, остальная плата работает на 12В.

Питание:
вход питания на 12В х 10А - через XT30 / клемники (?)
выход питания монитора 12В х 4А - через 2,1х5,5 мм (?)
выход питания для ПК 12В х 1А - через 2,1х5,5 мм (?)

Подключение витой пары:
8P8C - вход от модуля (Ethernet (пины 1,2,3,6) + RS422 (пины 4,5,7,8))
8P4C - выход Ethernet (повторить пины 1,2,3,6) для ПК

Подключения устройств (Molex Picoblade 1.25mm (?)):
4 pin к монетнику: DC12V 2-6Вт, Gnd, вход Pulse (20-100мс), выход Inhibit (сейчас не используется)
6 pin к купюрнику: DC12V 3-30Вт, Gnd, вход Pulse (20-100мс), Gnd, выход Inhibit, Gnd
5 pin к эквайрингу: DC12V 2-6Вт, Gnd, RS-232 (TX, RX, GND)

тайминги для Pulse надо вынести в четыре константы: отдельно монетнику и купюрнику, отдельно время сигнала и время паузы; по-умолчанию все четыре по 50мс
Купюрник используется CashCode SM: на входе Inhibit стоит оптотранзистор через резистор 1кОм = потребление до 12мА; контакт Pulse замыкает через SSR
Монетник сейчас подключается VT-5, у него Inhibit не используется

Датчики:
датчики температуры и влажности (DHT22 или аналогичный) - один на плате, второй выносной
датчик открытия терминала - выносной геркон/оптопара
кнопка вызова техника

Реле:
четыре выхода для реле с катушками на DC12V по 2Вт каждая


## Модуль:
По командам от контроллера включает/выключает нагрузку.
Подключаемая нагрузка:
1. реле для однофазных нагрузок - потребление 24В катушки до 2Вт
2. трехфазный контактор для электромотора - при включении катушка на 220В потребляет 100ВА, при удержании - 10ВА.
3. дозатор 220В потребляет 48Вт, нужно управление с ШИМ

Состав модуля:
2х19pin - две гребенки для подключения "ESP32-DevKitC V4", USB кабель не используется - нужно обеспечить питание

Питание:
вход 24В
вход 220В

Подключение витой пары:
8P4C - вход Ethernet от роутера (пины 1,2,3,6)
8P8C - выход на контроллер (Ethernet (пины 1,2,3,6) + RS422 (пины 4,5,7,8)) (оптоизолировать подключение к ESP)

Реле:
9 выходов - на включение внешних реле с катушками на DC24V по 2Вт
1 выход - на управление контактором электромотора с катушкой 220В, 10ВА (100ВА при включении)
2 выхода - на управление дозаторами с катушками 220В, 48Вт (нужны семисторы с детектором нуля и ШИМ управлением - срезаем целые полуволны)


## Софт:
События, о которых сообщает контроллер на ПК:

COIN_IN=<номинал> - какую монету кинули в монетник
CASH_IN=<номинал> - кукую купюру кинули в купюрник
SENS=<температура_платы>;<влажность_платы>;<температура_2>;<влажность_2>;<минимальное напряжение>;<максимальное напряжение> - раз в минуту шлется отчет о средней температуре и влажности целыми числами и о минимальном и максимальном напряжении за эту минуту с десятыми/сотыми долями
DOOR_OPENED=<секунды> - в момент открытия, каждую минуту (пока открыта) и в момент закрытия сообщать сколько секунд открыта дверь (если дверь была открыта 3 минуты и 4 секунды, получаем 5 сообщений с показаниями: 0, 60, 120, 180, 184)
LOW_VOLTAGE=<напряжение питания> - сообщать о напряжении ниже 11В
OVER_VOLTAGE=<напряжение питания> - сообщать о напряжении выше 13В

Напряжение мониторится постоянно, сообщается о выходе за пределы 11-13В в момент нарушения питания и раз в секунду сообщается об ухудшении показателя - спамить сообщениями не надо, надо понимать была ли короткая просадка/всплеск напряжения с последующим улучшением показателя или ситуация ухудшалась по нарастающей; долгие проблемы будут видны на минутных отчетах. При возврате в допустимый диапазон таймеры и пиковые показания забываются. Секундная просадка до 10,7В с последующим минутным удержанием на уровне 10,8В должна вызвать одно событие LOW_VOLTAGE.

Команды ПК для контроллера:
COIN_INHIBIT=1 - заблокировать монетник = подать на выход Inhibit монетника +12В
COIN_INHIBIT=0 - разблокировать монетник = снять Inhibit с монетника
CASH_INHIBIT=0/1 - аналогично для купюрника
INTERNAL_RELAY_1=1 - включить первое реле терминала
...
INTERNAL_RELAY_4=0 - выключить четвертое реле терминала

Команды ПК для релейного модуля (команды получает контроллер и по RS422 пересылает на модуль):
RELAY_1=1 - включить первое реле (выходы 1-9 управляют однофазными реле с катушками DC24V, 2Вт)
...
RELAY_10=0 - выключить десятое реле (реле 10 - управляет трехфазным контактором)
RELAY_11=0 - выключить ШИМ на выходе 11 (на 11 и 12 выходе нужен ШИМ на семисторы с детектором нуля для плунжера с катушкой 230В, 24Вт)
RELAY_12=42 - включить ШИМ 42% на выходе 12 (длинну ШИМ вынести в константу, по-умолчанию сделать 1000 мс)
RELAYS_OFF - выключить все реле и шим



Ожидаемый результат выполненного заказа:
Проект с электрической схемой и подготовленной PCB (какой используется софт - не принципиально).
Набор файлов для заказа изготовления и сборки плат на JLCPCB и подобных площадках.
Демонстрация что JLCPCB принимает этот набор файлов в работу и выставляет счет на оплату.
Прошивки для контроллера и релейного модуля - есть возможность проверить работу на макетной плате .

Связь через WA/TG: +7-925-180-2005