Projekt/Thekenlicht: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 80: Zeile 80:
     # Falls b'\xf1' zurückgegeben wird, so war das Senden erfolgreich;  
     # Falls b'\xf1' zurückgegeben wird, so war das Senden erfolgreich;  
     # der LED-Streifen sollte auf das entsprechende IR-Kommando reagieren
     # der LED-Streifen sollte auf das entsprechende IR-Kommando reagieren
</pre>
<big>C Beispielquelltext (à la ChatGPT Übersetzung (TODO))</big>
<pre>#include <SoftwareSerial.h>
SoftwareSerial uart(14, 15); // RX = 14, TX = 15
void setup() {
  Serial.begin(9600);  // Initialisierung der seriellen Schnittstelle zur Kommunikation mit dem PC
  uart.begin(9600);    // Initialisierung der Software-Seriellschnittstelle zur Kommunikation mit dem IR-Sensor
}
void loop() {
  // Sniffen einer Fernbedienungstaste (IR-Daten)
  while (true) {
    if (uart.available()) {
      Serial.println(uart.readString());
    }
  }
  // Beispielausgabe: b'\x00\xff\x45'
  // Replay der IR-Daten
  byte replayData[] = {0xa1, 0xf1, 0x00, 0xff, 0x45};
  uart.write(replayData, sizeof(replayData));
  byte response = uart.read();
 
  // Falls 0xf1 zurückgegeben wird, war das Senden erfolgreich
  if (response == 0xf1) {
    // Der LED-Streifen sollte auf das entsprechende IR-Kommando reagieren
  }
}
</pre>
</pre>

Version vom 30. September 2023, 00:38 Uhr

   
Thekenlicht

Release status: experimental [box doku]

Description LED-Leiste unter der Thekenplatte (Küche), steuerbar über Laborautomation
Author(s)  Kanga, MongoQ, Andreas
Last Version  0.1




News

Beispiel YS-IRTM Module sind bestellt. Ein Test mit MongoQs eigenem LED-Streifen erfolgt nach Zustellung umgehend.

LED-Leiste

Angedacht ist eine LED-Leiste, die unter der Thekenplatte in der Küche befestigt wird, mit der man eine Beleuchtung hat, um auf der Arbeitsplatte Drinks (z.B. Tschunk) ohne "Festagsbeleuchtung" zu mischen. Die LED-Farben sollen per Webseite (bzw. Laborautomation) steuerbar sein; zudem sollen Funktionen wie Fading, Blinken und Ein- und Ausschalten implementiert werden.

Thekenaufbau

Theke mit Pfeile.jpg


Nutzung von "beliebigen" LED-Streifen

Es sollen für Teilnehmer der Arduino Gruppe "beliebige" RGB LED-Streifen (ähnlich diesem), die über eine Fernbedienung verfügen, nutzbar gemacht werden. Der Theorie nach (ausgiebige Forenrecherche) arbeiten die meisten Fernbedienungen mit dem NEC IR Protokoll.

Dabei sollen ESP32 Boards (mit Wlan Funktionalität) verwendet werden. Eine Entscheidung für C oder MicroPython wurde noch nicht getroffen.

Die Idee ist hierbei, dass man hierbei YS-IRTM Module verwendet. Diese sprechen das NEC IR Protokoll (bidirektional) und verhalten sich dabei wie ein UART. Die gesamte "Magie" der richtigen Modulation wird eingekapselt und muss so nicht selber programmiert werden. Lediglich mehrere Bytes müssen gelesen und geschrieben werden über eine UART Verbindung. Quasi beliebige Mikrocontroller sollten sich so sehr einfach anbinden lassen.

Die den LED-Streifen beigelegten Fernbedienungen sollten sich mit den YS-IRTM Modulen auslesen lassen. Ein Replay, also das Steuern der LED-Streifen mit den ausgelesenen IR Daten, sollte machbar sein. Auch LED-Streifen mit einzel auswählbaren LEDs (z.B. WS2812(B)) sollten steuerbar sein, gemäß Optionen der Fernbedienung.

Der Schaltplan ist sehr einfach. Neben dem YS-IRTM Modul braucht es nur einen 3,3V zu 5V Levelshifter.

Die Webseite sollte analog zu dieser Lösung implementiert werden. Diese wird dabei von dem ESP32 alleine vorgehalten ("gehostet").

Neben einer Browserlösung sollte eine Telnet (Netcat) Anbindung möglich gemacht werden, zur Nutzung per Labor Automation. Evtl. könnte auch ein SSH Zugang implementiert werden.


Materialsammlung

Bilder Bauteile und Aufbauten


Hierbei müssen die Bilder ähnlich dieser Quelle für diese Wiki Seite noch aufgenommen und eingebaut werden.


Bauteile Thekenlicht.jpg


MicroPython Beispielquelltext (vgl. Quelle)

from machine import UART

uart = UART(1, tx=14, rx=15, baudrate=9600)

# Sniffen einer Fernbedienungstaste (IR-Daten)
def sniff():
    while True:
        if uart.any():
            print(uart.readline())

# Beispielausgabe: b'\x00\xff\x45'

# Replay der IR-Daten
def replay():
    uart.write(bytearray(b'\xa1\xf1\x00\xff\x45'))
    uart.read()
    # Falls b'\xf1' zurückgegeben wird, so war das Senden erfolgreich; 
    # der LED-Streifen sollte auf das entsprechende IR-Kommando reagieren


C Beispielquelltext (à la ChatGPT Übersetzung (TODO))

#include <SoftwareSerial.h>

SoftwareSerial uart(14, 15); // RX = 14, TX = 15

void setup() {
  Serial.begin(9600);  // Initialisierung der seriellen Schnittstelle zur Kommunikation mit dem PC
  uart.begin(9600);    // Initialisierung der Software-Seriellschnittstelle zur Kommunikation mit dem IR-Sensor
}

void loop() {
  // Sniffen einer Fernbedienungstaste (IR-Daten)
  while (true) {
    if (uart.available()) {
      Serial.println(uart.readString());
    }
  }

  // Beispielausgabe: b'\x00\xff\x45'

  // Replay der IR-Daten
  byte replayData[] = {0xa1, 0xf1, 0x00, 0xff, 0x45};
  uart.write(replayData, sizeof(replayData));
  byte response = uart.read();
  
  // Falls 0xf1 zurückgegeben wird, war das Senden erfolgreich
  if (response == 0xf1) {
    // Der LED-Streifen sollte auf das entsprechende IR-Kommando reagieren
  }
}