Pull to refresh
0
Timeweb Cloud
То самое облако

Kincony KC868-AI: 48 цифровых входов + ESP32, ETH, RS232, RS485 и приёмники IR и 433 МГц

Reading time6 min
Views3.9K


Пока мы с вами занимались контроллерами AlertBox (1, 2), подключали Wiren Board блоки на DIN-рейку и пытались полечиться при помощи ТГС-7А, компания Kincony тоже не теряла времени даром и выпустила ещё несколько контроллеров в своём неподражаемом форм-факторе «а-ля скейтборд, только колёсики приделать нужно».

На этот раз она нас порадовала концептуальным решением KC868-AI по организации сбора данных со множества (48 шт.) цифровых входов, плюс на плату добавлены приёмники инфракрасных сигналов (IR) и сигналов от радиомодулей на 433 МГц. Получилось что-то вроде универсального (Wi-Fi, Ethernet) умного (ESP32) гейта для сбора информации с какого-то объекта и передачи её для дальнейшей обработки в общую систему.

Ну а наличие интерфейсов RS485 и I2C и разъёма с 4-я свободными GPIO позволяет подключить к KC868-AI дополнительное оборудование, например, блок реле и сделать этот контроллер полноценным управляющим элементом вашей системы автоматизации.

Далее мы попробуем поподробнее разобраться с устройством KC868-AI и даже немного попрограммировать его в своё удовольствие.

Kincony KC868-AI


Как всегда, начнём мы с перечисления компонентов и подсистем, установленных на плате Kincony KC868-AI:
  • Микроконтроллер ESP-WROOM-32E
  • 48 цифровых опторазвязанных входов («сухой контакт»)
  • 4-контактный разъём KCOM для цифровых входов
  • Интерфейс RS232 (2 разъёма)
  • Интерфейс RS485
  • Разъём для модуля приёмника 433 МГц
  • IR приёмник
  • Разъём I2C
  • Разъём с 4-я свободными GPIO
  • Ethernet LAN8270A
  • Разъём USB для программирования
  • Кнопки «Reset» и «Download»
  • Питание от 12(24) В постоянного тока

Итак, входы:
  • 48 цифровых опторазвязанных входов («сухой контакт»)
  • IR приёмник
  • Разъём для модуля приёмника 433 МГц

Интерфейсы:
  • Интерфейс RS232 (2 разъёма)
  • Интерфейс RS485
  • Разъём I2C
  • Разъём с 4-я свободными GPIO

Межконтроллерные коммуникации:
  • Wi-Fi (ESP32)
  • Ethernet LAN8270A

Из всего вышеперечисленного вырисовывается отличная гибкая платформа для создания собственных решений по автоматизации — KC868-AI можно использовать как гейт для сбора входных данных и последующей передачи их в общую систему или как отдельный универсальный контроллер для управления каким-то объектом (подключив актуаторы по доступным на плате интерфейсам или через свободные GPIO).

Из недостатков, я бы даже сказал не недостатков, а странностей, можно отметить полное отсутствие в KC868-AI хоть как-то окультуренных аналоговых входов. На плате присутствует разъём со свободными GPIO34, 35, 36, 39 и к ним можно попытаться подключить какие-то аналоговые датчики, но для этого придётся предпринимать дополнительные усилия и «колхозить» эти подключения.

Особенно это странно на фоне названия контроллера KC868-AI, которое как бы намекает на «Analog Input», но сам контроллер не содержит ни одного аналогового входа. Или Kincony под «AI» имела в виду «Artificial Intelligence»?



Внешний вид и конструкция


Для сравнения привожу фотографию KC868-AI рядом с «базовой» моделью KC868-A4 всего семейства контроллеров KC868. Тут комментировать нечего, всё видно «невооружённым глазом», единственное, что хотелось бы заметить, — для огромных по размерам контроллеров Kincony требуются соответствующие шкафы — в то, что на наших просторах обычно называют «электрощитом» Kincony KC868-AI не влезет никак, даже боком или по диагонали (а если влезет, то места для автоматов и контакторов просто не останется).



Отдельно хочется отметить новую «весёленькую» расцветку крепления на DIN-рейку — она очень оживит внешний вид вашей суровой автоматизации.



Вид крепления на DIN-рейку сзади. Очень красиво, жаль, что эту красоту никто не увидит (смайл).



Полностью разоблачённый контроллер. На фото видны отверстия для крепления на любую подходящую поверхность (без DIN-рейки).



Схемотехника


В этой статье мы прервём традицию тотального описания всех подсистем контроллера с приведением соответствующих схем — Kincony в своих изделиях использует типовые схемотехнические решения и повторять их описание из статьи в статью нет особого смысла.

В этом обзоре я буду приводить и разбирать только некоторые фрагменты схемы, характерные для рассматриваемой модели KC868-AI.

Для начала вид платы сверху. Всё сделано в (неподражаемом) духе Kincony. Обращают на себя внимание «брутальные» вертикальные USB и Ethernet разъёмы и отдельная внушительная «земляная» колодка KCOM. Также нужно отметить, что (с нашей подачи) Kincony стала устанавливать на плате разъём для подключения без пайки беспроводного модуля 433 МГц и начала выводить в отдельный разъём свободные GPIO ESP32.



Обратная сторона платы. Если вы любите чистоту, то приготовьте побольше жидкости для удаления остатков флюса — его много на обратной стороне платы и он как-то неохотно оттирается, всё время наровя растечься по плате тонким белесым слоем.



Цифровые входы


Плата имеет 48 цифровых оптоизолированных входов «сухой контакт» на оптронах EL357, распределённых на 6 колодок по 8 контактов. Для обеспечения их работы в связке с ESP32 в KC868-AI применены расширители цифровых входов/выходов c I2C интерфейсом на 6-и микросхемах PCF8574P.



Принципиальная схема подсистемы цифровых входов. Для наглядности и чтобы не загромождать схему показан только один из шести блоков оптронов (остальные полностью ему аналогичны). Расширители портов на PCF8574P показаны все 6 штук. Обращает на себя внимание обозначение SDA2/SCL2 хотя на плате используется только один I2C интерфейс. Причём обозначение SCL2 написано с ошибкой (SDL2).



Отдельно схема колодок подключения цифровых опторазвязанных входов «сухой контакт» (контакты замыкаются на землю колодки KCOM).



Разъёмы I2C


На плате присутствует очень полезный для подключения различных дополнительных компонентов разъём I2C. К нему можно подключить, например, дисплей, дополнительные сенсоры и прочие элементы.



Принципиальная схема контактов разъёма I2C (снова замечу, что двойка в обозначениях SDA2/SCL2 лишняя — на плате используется всего один I2C интерфейс):



Свободные GPIO


Ещё одно полезное дополнение — 4 свободных GPIO в отдельном разъёме. К ним можно подключить различное оборудование или организовать аналоговые входы (которые полностью отсутствуют на плате).



Принципиальная схема разъёма со свободными GPIO (34, 35, 36, 39):



Схема внешних подключений


Немного доработанная оригинальная схема разъёмов и внешних подключений контроллера KC868-AI от производителя. Два разъёма интерфейса RS232 — это на самом деле один интерфейс, параллельно выведенный в два разъёма.



Распиновка


Распиновка на которой видно что и как подключено к микроконтроллеру ESP32 на плате KC868-AI. Похоже, что GPIO2 и GPIO12 никуда не подключены и никак не задействованы (нужно было тоже вывести в разъём со свободными GPIO).



Программирование


Теперь давайте попробуем попрограммировать KC868-AI и для примера создадим скетч получения данных с его цифровых входов. Для этого нам понадобится библиотека PCF8574_library.

/*
  KC868-AI DI example
*/

#include "Arduino.h"
#include "PCF8574.h"

#define SDA 4
#define SCL 5

PCF8574 pcf_1(0x24, SDA, SCL);
PCF8574 pcf_2(0x25, SDA, SCL);
PCF8574 pcf_3(0x21, SDA, SCL);
PCF8574 pcf_4(0x22, SDA, SCL);
PCF8574 pcf_5(0x26, SDA, SCL);
PCF8574 pcf_6(0x23, SDA, SCL);

void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.println(F("KC868-AI DI example start..."));

  for (byte i = 0; i < 8; i++) {pcf_1.pinMode(i, INPUT);}
  for (byte i = 0; i < 8; i++) {pcf_2.pinMode(i, INPUT);}
  for (byte i = 0; i < 8; i++) {pcf_3.pinMode(i, INPUT);}
  for (byte i = 0; i < 8; i++) {pcf_4.pinMode(i, INPUT);}
  for (byte i = 0; i < 8; i++) {pcf_5.pinMode(i, INPUT);}
  for (byte i = 0; i < 8; i++) {pcf_6.pinMode(i, INPUT);}
 
  Serial.print("Init pcf 1..."); if (pcf_1.begin()){Serial.println("OK");} else {Serial.println("Err");}
  Serial.print("Init pcf 2..."); if (pcf_2.begin()){Serial.println("OK");} else {Serial.println("Err");}
  Serial.print("Init pcf 3..."); if (pcf_3.begin()){Serial.println("OK");} else {Serial.println("Err");}
  Serial.print("Init pcf 4..."); if (pcf_4.begin()){Serial.println("OK");} else {Serial.println("Err");}
  Serial.print("Init pcf 5..."); if (pcf_5.begin()){Serial.println("OK");} else {Serial.println("Err");}
  Serial.print("Init pcf 6..."); if (pcf_6.begin()){Serial.println("OK");} else {Serial.println("Err");}
  
  delay(1000);
}

void loop() {
  Serial.println();
  
  for (byte i = 0; i < 8; i++) {Serial.print(pcf_1.digitalRead(i));} Serial.print(' ');
  for (byte i = 0; i < 8; i++) {Serial.print(pcf_2.digitalRead(i));} Serial.print(' ');
  for (byte i = 0; i < 8; i++) {Serial.print(pcf_3.digitalRead(i));} Serial.print(' ');
  for (byte i = 0; i < 8; i++) {Serial.print(pcf_4.digitalRead(i));} Serial.print(' ');
  for (byte i = 0; i < 8; i++) {Serial.print(pcf_5.digitalRead(i));} Serial.print(' ');
  for (byte i = 0; i < 8; i++) {Serial.print(pcf_6.digitalRead(i));} Serial.print(' ');
  
  delay(300);
}

Поскольку на плате KC868-AI пины I2C интерфейса подключены к нестандартным GPIO4 и 5, то нам нужно учесть этот момент в коде и явно их указать. Тут же указываем адреса (0x24, 0x25, 0x21, 0x22, 0x26, 0x23) расширителей портов PCF8574P на I2C шине. Почему адреса идут не по порядку? Видимо для того, чтобы мы с вами не расслаблялись и жизнь (программирование) не казалась нам таким лёгким занятием.

#define SDA 4
#define SCL 5

PCF8574 pcf_1(0x24, SDA, SCL);
PCF8574 pcf_2(0x25, SDA, SCL);
PCF8574 pcf_3(0x21, SDA, SCL);
PCF8574 pcf_4(0x22, SDA, SCL);
PCF8574 pcf_5(0x26, SDA, SCL);
PCF8574 pcf_6(0x23, SDA, SCL);

Далее всё очевидно: инициализируем линии расширителей как входы и в цикле печатаем матрицу состояний всех 48-и цифровых входов KC868-AI (обратите внимание на нолик в первой позиции каждой строки — это 1-й вход замкнут на землю KCOM).



Заключение


Kincony выпустила очередной отличный контроллер для DIY автоматизации — в нём всё просто и понятно для самостоятельного программирования — если ваша задача вписывается в его ТТХ, можно смело его использовать для реализации вашего проекта.

Tags:
Hubs:
Total votes 10: ↑9 and ↓1+12
Comments14

Articles

Information

Website
timeweb.cloud
Registered
Founded
Employees
201–500 employees
Location
Россия
Representative
Timeweb Cloud