Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

SomfyDuino: USB-адаптер для управления Somfy IO через Arduino Nano

Компоненты и материалы

КомпонентКоличество
Arduino Nano R31
Шлейф 7 жил (flat cable)1
Пульт Somfy IO (например, GX037)1

Инструменты

О проекте

Идея

Хотел интегрировать роллетты Somfy IO в свою систему умного дома без облачного оборудования производителя. Получилось — использовал обычный IO-пульт!

Что нужно

Питание пульта — от Arduino (~20 мА при передаче). Батарейку из пульта нужно извлечь.

Прошивка

Для подключения к RPi или другому контроллеру удобно убрать все Serial.print — Arduino будет только слушать команды.

Формат команд описан в коде. Пример: u5e — нажать UP 500 мс; ud9993e — UP+DOWN 3 сек; p999995e — PROG 5 сек.

Примечание: кнопка SELECT на 1-канальном пульте не переключает каналы, но и не ломает работу.

Код (Serial → Somfy)

// SomfyDuino by Bjoern Foldenauer 05/2017

int progPin = 8, upPin = 12, downPin = 10, myPin = 11, selectPin = 9, ledPin = 13;
bool upPress = false, downPress = false, myPress = false, progPress = false, selectPress = false;
unsigned long holdTime = 0;
int repeatSend = 0;
char incomingChar;

void setup() {
  Serial.begin(9600);
  Serial.println("SomfyDuino 0.71");
  Serial.println("Commands:");
  Serial.println("u - UP, d - DOWN, m - MY, p - PROG, s - SELECT");
  Serial.println("r - +1 повтор, 1-9 - удержание (x100 мс), e - Execute");
  Serial.println("Example: u5e (UP 500ms), ud9993e (UP+DOWN 3s)");

  pinMode(progPin, OUTPUT); pinMode(upPin, OUTPUT); pinMode(downPin, OUTPUT);
  pinMode(myPin, OUTPUT); pinMode(selectPin, OUTPUT); pinMode(ledPin, OUTPUT);
  digitalWrite(progPin, HIGH); digitalWrite(upPin, HIGH); digitalWrite(downPin, HIGH);
  digitalWrite(myPin, HIGH); digitalWrite(selectPin, HIGH); digitalWrite(ledPin, LOW);
}

void loop() {
  while (Serial.available() == 0) delay(50);
  if (Serial.available() > 0) {
    incomingChar = Serial.read();
    Serial.println(incomingChar);
    switch (incomingChar) {
      case 'u': upPress = true; break;
      case 'd': downPress = true; break;
      case 'm': myPress = true; break;
      case 'p': progPress = true; break;
      case 's': selectPress = true; break;
      case '1': holdTime += 100; break;
      case '2': holdTime += 200; break;
      case '3': holdTime += 300; break;
      case '4': holdTime += 400; break;
      case '5': holdTime += 500; break;
      case '6': holdTime += 600; break;
      case '7': holdTime += 700; break;
      case '8': holdTime += 800; break;
      case '9': holdTime += 900; break;
      case 'r': repeatSend++; break;
      case 'e': somSend(); break;
    }
  }
}

void somSend() {
  Serial.print("Pressing: ");
  for (int i = 0; i <= repeatSend; i++) {
    if (upPress)      { digitalWrite(upPin, LOW);      Serial.print("up "); }
    if (downPress)    { digitalWrite(downPin, LOW);    Serial.print("down "); }
    if (myPress)      { digitalWrite(myPin, LOW);      Serial.print("my "); }
    if (progPress)    { digitalWrite(progPin, LOW);    Serial.print("prog "); }
    if (selectPress)  { digitalWrite(selectPin, LOW);  Serial.print("select "); }
    digitalWrite(ledPin, HIGH);
    Serial.print("for "); Serial.print(holdTime); Serial.println(" ms");
    delay(holdTime);
    digitalWrite(progPin, HIGH); digitalWrite(upPin, HIGH); digitalWrite(downPin, HIGH);
    digitalWrite(myPin, HIGH); digitalWrite(selectPin, HIGH); digitalWrite(ledPin, LOW);
    delay(holdTime);
  }
  upPress = downPress = myPress = progPress = selectPress = false;
  holdTime = 0; repeatSend = 0;
  Serial.println("done.");
}

Схемы и фото

SomfyDuino: USB-адаптер для управления Somfy IO через Arduino Nano
SomfyDuino: USB-адаптер для управления Somfy IO через Arduino Nano
SomfyDuino: USB-адаптер для управления Somfy IO через Arduino Nano

Производственный процесс

  1. Удалённый мониторинг погоды на Raspberry Pi 3 с PubNub
  2. Создание профессионального универсального пульта на Raspberry Pi с LIRC
  3. Перехват команд ИК-пульта на Raspberry Pi без LIRC: подход через Python UART
  4. Система удалённого мониторинга сердечного ритма с алертами AWS IoT
  5. Умный выключатель питания AC под управлением SMS с Raspberry Pi и Hologram
  6. ROObockey: Робот для уличного хоккея с точной прицельной системой
  7. Облачный мониторинг: система удаленного контроля для управления активами в реальном времени
  8. 5 ключевых преимуществ удаленного контроля производства для современной промышленности
  9. Безопасный удаленный gRPC доступ с grpcurl на устройствах PLCnext
  10. Топ-3 преимущества удаленного мониторинга для производственной эффективности