8 канальная релейная нода на DIN рейку

Показывайте и делитесь своими замечательными проектами здесь! Мы любим картинки!
Ответить
ZmiterIv
Сообщения: 2
Зарегистрирован: 23 окт 2019, 12:51

8 канальная релейная нода на DIN рейку

Сообщение ZmiterIv »

Релейная нода на 8 каналов в корпусе на DIN рейку. Радио NRF24.
Реле подключены на выводы 0,2,3,4,5,6,7,8
Скетч почти стандартный (с сайта) Чтобы задействовать вывод TX0, отключен serial:

Код: Выделить всё

#define MY_DISABLED_SERIAL
// Enable and select radio type attached
#define MY_RADIO_RF24
//#define MY_RADIO_NRF5_ESB
//#define MY_RADIO_RFM69
//#define MY_RADIO_RFM95

// Enable repeater functionality for this node
#define MY_REPEATER_FEATURE

#include <MySensors.h>

#define RELAY_PIN 1  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
#define NUMBER_OF_RELAYS 8 // Total number of attached relays
#define RELAY_ON 1  // GPIO value to write to turn on attached relay
#define RELAY_OFF 0 // GPIO value to write to turn off attached relay


void before()
{
  for (int sensor=1, pin=RELAY_PIN; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
    // Then set relay pins in output mode
    pinMode(pin, OUTPUT);
    // Set relay to last known state (using eeprom storage)
    digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
  }
}

void setup()
{

}

void presentation()
{
  // Send the sketch version information to the gateway and Controller
  sendSketchInfo("Relay", "1.0");

  for (int sensor=1, pin=RELAY_PIN; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
    // Register all sensors to gw (they will be created as child devices)
    present(sensor, S_BINARY);
  }
}


void loop()
{

}

void receive(const MyMessage &message)
{
  // We only expect one type of message from controller. But we better check anyway.
  if (message.type==V_STATUS) {
    // Change relay state
    digitalWrite(message.sensor-1+RELAY_PIN, message.getBool()?RELAY_ON:RELAY_OFF);
    // Store state in eeprom
    saveState(message.sensor, message.getBool());
    // Write some debug info
    Serial.print("Incoming change for sensor:");
    Serial.print(message.sensor);
    Serial.print(", New status: ");
    Serial.println(message.getBool());
  }
}
Некоторые компоненты:
Корпус К-06-09 / 105x60x86, на DIN-рейку
Реле электромагнитное HJR-3FF-5VDC-S-Z / 5В DC
Микрошлейф: FFCA-2.54-8-100
Разъем: FFC/FPC DS1020-08RT1D
Транзисторы: BC547 sot23
Разводка плат несколько сыровата, короче не заморачивался, хотелось поскорее сделать. Нижнюю плату лучше бы переразвести как двухстороннюю.
Блок Реле.zip
(38.16 КБ) 793 скачивания
1.jpg
1.jpg (202.42 КБ) 15196 просмотров
2.jpg
2.jpg (186.35 КБ) 15196 просмотров
3.jpg
3.jpg (149.66 КБ) 15196 просмотров
4.jpg
4.jpg (307.78 КБ) 15196 просмотров
5.jpg
5.jpg (219.84 КБ) 15196 просмотров
7.jpg
7.jpg (119.53 КБ) 15196 просмотров
8.jpg
8.jpg (236.84 КБ) 15196 просмотров
9.jpg
9.jpg (134.72 КБ) 15196 просмотров
ZmiterIv
Сообщения: 2
Зарегистрирован: 23 окт 2019, 12:51

Re: 8 канальная релейная нода на DIN рейку

Сообщение ZmiterIv »

Переразвел нижнюю плату как двустороннюю, адаптировал (как мог, первый опыт) для производства. В прототипе новую плату не проверял, надеюсь, что без ошибок, но всё может статься, посему, если кто захочет повторить лучше перепроверить. Сам заказал в Китае 5шт, как приедут - проверю, отпишусь.
8ChRelay_DL.rar
(23.04 КБ) 719 скачиваний
Photo-top.JPG
Photo-top.JPG (589.07 КБ) 15142 просмотра
Photo_bottom.JPG
Photo_bottom.JPG (516.82 КБ) 15142 просмотра
serghei
Сообщения: 53
Зарегистрирован: 05 апр 2018, 09:12
Откуда: Молдова

Re: 8 канальная релейная нода на DIN рейку

Сообщение serghei »

Что то не вижу перемычку между клеммой фазы и блоком контактов у реле. На луте то же не наблюдаю. В работе проверяли? А так супер!

PS Увидел )) Перемычка проводами ? Тогда нарисовать надо . Нулевая перемычка есть.
MySensors Гетвей на ESP8266 с веб интерфейсом + много нод на NRF52832
Ответить