Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:tech:gardenled

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
de:tech:gardenled [2022/11/13 19:34] – [Hardware Gateway] bullarde:tech:gardenled [2022/11/14 13:58] – [Spenden] bullar
Zeile 3: Zeile 3:
 ===== Motivation ===== ===== Motivation =====
  
-Unser Grundstück ist - wie häufig hier in Thailand - von einer zwei Meter hohen Mauer eingerahmt. Das hält einige Tiere wie streunende Strassenhunde aber auch Schlangen oder ähnliches etwas ab. Von innen kann man diese Wand natürlich begrünen. +Unser Grundstück ist - wie häufig hier in Thailand - von einer zwei Meter hohen Mauer eingerahmt. Die hält Tiere wie streunende Strassenhunde aber auch Schlangen oder ähnliches ab. Von innen kann man diese Wand natürlich üppig begrünen. 
  
 {{ :tech:villa_garden.png?direct&400 |Garden wall}} {{ :tech:villa_garden.png?direct&400 |Garden wall}}
Zeile 11: Zeile 11:
 ===== Lösungsansatz ===== ===== Lösungsansatz =====
  
-Im Garten liegt eine 230V Versorgung die aber nicht schaltbar oder dimmbar ist, da andere Verbraucher wie Aussensteckdosen und das Bodenlicht daran angeschlossen sind.  +Im Garten liegt bei uns eine 230V Versorgungdie aber nicht schaltbar oder dimmbar ist, da andere Verbraucher wie Aussensteckdosen und das Bodenlicht daran angeschlossen sind.  
-Eine Zusatzverdrahtung zum Haus habe ich ausgeschlossen nachdem ich versucht habe den Verlauf der unterirdischen Rohre zu verfolgen. Also muss etwas drahtloses her, das (wie immer) auch in [[https://www.home-assistant.io|Home Assistant]] einbindbar ist.+Eine Zusatzverdrahtung zum Haus habe ich ausgeschlossennachdem ich erfolglos versucht habe den Verlauf der unterirdischen Rohre zu erfassen. Also muss etwas drahtloses her, das (wie immer) auch in [[https://www.home-assistant.io|Home Assistant]] einbindbar ist.
  
 Vorab habe ich schon die LED Spots nach Aussehen, Leistung, Preis und Größe ausgewählt. Dabei fiel die Wahl auf einen 5W/600lm Strahler mit 12V AC/DC Versorgung im IP65 Gehäuse vom thailändischen Amazon: LAZADA.  Vorab habe ich schon die LED Spots nach Aussehen, Leistung, Preis und Größe ausgewählt. Dabei fiel die Wahl auf einen 5W/600lm Strahler mit 12V AC/DC Versorgung im IP65 Gehäuse vom thailändischen Amazon: LAZADA. 
Zeile 18: Zeile 18:
 {{ :tech:led_spotlight.png?direct&300 |}} {{ :tech:led_spotlight.png?direct&300 |}}
  
-Bei einem Preis von unter 4€ pro Stück kommt das ganze wirklich in einem wasserfesten Alugehäuse mit einer internen Steuerplatine und funktioniert! Lichtgeber ist eine 3mm LED die mit 21.5V bei einem Konstantstrom von 266mA betrieben wird. Die höhere Spannung wird durch einen Boost Regler (BP1808) erreicht, der auch einen ungenutzten DIM Eingang hat. Dieser kann analog oder über ein PWM Signal angesteuert werden. Ein erster Test mit einer 500Hz PWM zeigt das gewünschte Dimmverhalten. +Bei einem Preis von unter 4€ pro Stück kommt das ganze wirklich in einem wasserfesten Alugehäuse mit einer internen Steuerplatine und funktioniert! Lichtgeber ist eine 3mm LED die mit 21.5V bei einem Konstantstrom von 266mA betrieben wird. Die höhere Spannung wird durch einen Boost Regler [[http://www.bpsemi.com/en/product_result.php?id=236|(BP1808)]] erreicht, der auch einen ungenutzten DIM Eingang hat. Dieser kann analog oder über ein PWM Signal angesteuert werden. Ein erster Test mit einer 500Hz PWM zeigt das gewünschte Dimmverhalten. 
  
-{{:tech:bp1808_front.png?direct&200|LED driver front side}} {{:tech:bp1808_back.png?direct&200|LED driver back side}}+<WRAP group> 
 +<WRAP half column> 
 +{{ :tech:bp1808_front.png?direct&200|LED driver front side}} 
 +</WRAP> 
 +<WRAP half column> 
 + {{:tech:bp1808_back.png?direct&200 |LED driver back side}} 
 +</WRAP> 
 +</WRAP>
  
-Jetzt brauchen wir nur ein Idee wie wir die im Home Assistant individuell gewählte Dimmung für jedes Spotlight als PWM Signal bereitstellen. Das Gehäuse der LED erlaubt dabei keine voluminöse Lösung. [[https://en.wikipedia.org/wiki/DMX512|DMX512]] erscheint hier etwas überdimensioniert. Also warum nicht auch mal einen proprietären Ansatz wagen.+Jetzt brauchen wir nur ein Idee wie wir die im Home Assistant ausgewählte Dimmung für jedes Spotlight als PWM Signal bereitstellen. Das Gehäuse der LED erlaubt dabei keine voluminöse Lösung. [[https://en.wikipedia.org/wiki/DMX512|DMX512]] erscheint hier etwas überdimensioniert. Also warum nicht auch mal einen proprietären Ansatz wagen.
  
-Erste Versuche mit einer Kommunikation über Niedrigvoltleitungen schlugen aus Zuverlässigkeits- und Skalierungsgründen fehl. Dazu gibt es aber einen pfiffigen Ansatz: [[https://www.electronicdesign.com/technologies/communications/article/21799727/simple-circuit-communicates-over-lowvoltage-power-lines|Simple Circuit Communicates Over Low-Voltage Power Lines]]. Das ganze mit einem ATTINY85 implementiert hat grundsätzlich mit zwei Transceiver über 10m bei 2400 Baud funktioniert.  +Erste Versuche mit einer Kommunikation über Niedrigvoltleitungen schlugen aus Zuverlässigkeits- und Skalierungsgründen fehl. Dazu gibt es durchaus einen pfiffigen Ansatz: [[https://www.electronicdesign.com/technologies/communications/article/21799727/simple-circuit-communicates-over-lowvoltage-power-lines|Simple Circuit Communicates Over Low-Voltage Power Lines]]. Das ganze mit einem ATTINY85 implementiert hat grundsätzlich mit zwei Transceiver über 10m bei 2400 Baud funktioniert, ist für den hiesigen Anwendungsfall out-of-the-box aber nicht geeignet.  
  
-Für Datenübertragungen über mehrere 10m kommt einem immer auch [[https://en.wikipedia.org/wiki/RS-485|RS485]] in Sinn. Passende Treiber-IC sind zuhauf verfügbar und eine Standard-UART reicht aus als Kommunikationsschnittstelle. Um es vorweg zunehmen, diese Idee hat dann auch zum Erfolg geführt. Hier die Beschreibung ...+Für Datenübertragungen über mehrere zehn Meter kommt einem immer auch [[https://en.wikipedia.org/wiki/RS-485|RS485]] in den Sinn. Passende Treiber-IC sind zuhauf verfügbar und eine Standard-UART reicht aus als Kommunikationsschnittstelle. Um es vorweg zunehmen, diese Idee hat dann auch zum Erfolg geführt. Hier die Beschreibung ...
  
  
 ===== Hardware ===== ===== Hardware =====
  
-Der LED Boost Driver mit dem BP1808 muss um eine Schaltung für denEmpfang von seriellen Daten über RS485 erweitert werden und das ganze möglichst klein. Der Innenraum des Lampengehäuses fasst nur ca. 40mm x 20mm. Als Steuer-CPU fiel die Wahl auf ein [[https://www.microchip.com/en-us/product/ATtiny85|ATTINY85]] von MicroChip den es im kleinen 8-pin SOIC Gehäuse gibt. Zudem verfügt er über ein EEPROM (z.B. für die Lampen ID), Oszillator on Chip und eine debugWIRE Schnittstelle. Die erlaubt in-place Debugging und vereinfacht so die Softwareentwicklung. Den RX485 Driver gibt es z.B. von [[https://www.maximintegrated.com/en/products/interface/transceivers/MAX485.html|MAXIM]] auch im 8-pin SOIC Gehäuse.+Der LED Boost Driver mit dem BP1808 muss um eine Schaltung für den Empfang von seriellen Daten über RS485 erweitert werden und das ganze möglichst klein. Der Innenraum des Lampengehäuses fasst nur ca. 40mm x 20mm. Als Steuer-CPU fiel die Wahl auf einen [[https://www.microchip.com/en-us/product/ATtiny85|ATTINY85]] von MicroChip den es im kleinen 8-pin SOIC Gehäuse gibt. Zudem verfügt er über ein EEPROM (z.B. für die Lampen ID), Oszillator on Chip und eine debugWIRE Schnittstelle. Die erlaubt in-place Debugging und vereinfacht so die Softwareentwicklung. Den RX485 Driver gibt es z.B. von [[https://www.maximintegrated.com/en/products/interface/transceivers/MAX485.html|MAXIM]] auch im SOIC8 Gehäuse.
  
  
 ==== Schaltplan ==== ==== Schaltplan ====
  
-Alles zusammengefasst sieht der Schaltplan so aus:+Alles zusammengefasst sieht der Schaltplan dann so aus:
  
 {{ :tech:gardenled_schematic.png?direct&400 |}} {{ :tech:gardenled_schematic.png?direct&400 |}}
  
-Der LED Boot Driver ist identisch zur Originalversion und nur durch die PWM-Ansteuerung ergänzt. Da ich bei den ersten Versuchen ein paar Hardwareausfälle (ATTINY85 + BP1808) wegen Überspannung hatte, habe ich das PWM Signal galvanisch mit einem Optokopller (OC1) getrennt. An der RS485 Schnittstelle sind auch optional die Abschlusswiderstände vorgesehen (R1,R3,R4). Der MAXIM Baustein Arbeit im Halb-Duplex, daher steuern wir die Richtung (Empfangen oder Senden) auch über den ATTINY85. Der letzte freie Ausgang an der COU steuert eine Status-LED (LED1). Die hilft beim Debugger und der Inbetriebnahme wenn man die POWER-LED abgeklemmt lässt.+Der LED Boot Driver ist identisch zur Originalversion und nur durch die PWM-Ansteuerung ergänzt. Da ich bei den ersten Versuchen ein paar Hardwareausfälle (ATTINY85 + BP1808) wegen Überspannung hatte, wird das PWM Signal galvanisch mit einem Optokoppler (OC1) getrennt. An der RS485 Schnittstelle sind auch optional die Abschlusswiderstände vorgesehen (R1,R3,R4). Der MAXIM Baustein arbeitet im Halb-Duplex, daher steuern wir die Richtung (Empfangen oder Senden) auch über den ATTINY85. Der letzte freie Ausgang an der CPU steuert eine Status-LED (LED1). Die hilft beim Debuggen und der Inbetriebnahme, vor allem wenn man die POWER-LED abgeklemmt lässt.
  
 ==== PCB ==== ==== PCB ====
  
-Bei den geometrischen Vorgaben kommen wir um eine beidseitige Bestückung nicht herum. Aber auf der zweiten Seite befinden sich nur die vier SS14 Dioden (D3-D6) des Brückengleichrichters und der große Thru-hole Kondensator C. Diese Komponenten müssen dann handgelötet werden aber der Rest kann vorab im Reflow-Ofen (T-962) 'garen'.+Bei den geometrischen Vorgaben kommen wir um eine beidseitige Bestückung nicht herum. Aber auf der zweiten Seite befinden sich nur die vier SS14 Dioden (D3-D6) des Brückengleichrichters und der große Thru-hole Kondensator C8. Diese Komponenten müssen dann handgelötet werden aber der Rest kann vorab im Reflow-Ofen (bei mir T-962) 'garen'.
  
 {{ :tech:gardenled_pcb.png?direct&400 |}}  {{ :tech:gardenled_pcb.png?direct&400 |}} 
Zeile 51: Zeile 58:
  
 {{ :tech:garden_led_real_pcb.png?direct&500 |PCB fron & back side}} {{ :tech:garden_led_real_pcb.png?direct&500 |PCB fron & back side}}
 +
 +Um die Platine elektrisch isoliert in das Gehäuse einzubauen drucke ich aus flexiblem TPU ein zweiteiliges Cover. An beiden Enden über die Platine geschoben bleibt dann alles vor ungewollten Kurzschlüssen geschützt. Das STL File ist im Downloadbereich zu finden.
 +
 +{{ :tech:gardenled_case.png?direct&300 |Case}}
 +
  
  
Zeile 137: Zeile 149:
 Für die Einbindung der LEDs als Lights schreiben wir wieder ein //custom component//. Das folgende C-Program ''garden-leds.h'' stellt einen //Float Output// für Home Assistant zur Verfügung und beinhaltet eine sehr schlanke Codierung des MIN Protokolls. Für die Einbindung der LEDs als Lights schreiben wir wieder ein //custom component//. Das folgende C-Program ''garden-leds.h'' stellt einen //Float Output// für Home Assistant zur Verfügung und beinhaltet eine sehr schlanke Codierung des MIN Protokolls.
  
-<file C garden-less.h>+++++ garden-leds.h | 
 +<file C garden-leds.h>
 #include "esphome.h" #include "esphome.h"
  
Zeile 337: Zeile 350:
 }; };
 </file> </file>
 +++++
  
 ---- ----
Zeile 390: Zeile 403:
 </code> </code>
  
-Gegebenenfalls müssen die Pins für die serielle Schnittstelle und der Richtungspin für die eigene Hardware angepasst werden.+Gegebenenfalls müssen die Pins ''tx_pin, rx_pin'' für die serielle Schnittstelle und der Richtungspin ''DIR_PORT'' in ''garden-leds.h'' für die eigene Hardware angepasst werden.
 ==== Hardware Gateway ==== ==== Hardware Gateway ====
  
Zeile 425: Zeile 438:
 {{ :tech:gateway_python.png?direct&400 |}} {{ :tech:gateway_python.png?direct&400 |}}
  
-Damit lassen sich alle Funktionen auf alle oder einzelne LEDs ausführen. Mit **CHK** wird nach angeschlossen LEDs gesucht und im unteren Bereich steht ein einfacher Skript Editor zur Verfügung der die Programmierung von Abläufen erlaubt, bei einer Stepzeit von 100ms also 10Hz. Ein Gimmick für Silvester oder Parties.+Damit lassen sich alle Funktionen auf alle oder einzelne LEDs ausführen. Mit **CHK** wird nach angeschlossen LEDs gesucht und im unteren Bereich steht ein einfacher Skript Editor zur Verfügung der die Programmierung von Abläufen erlaubt, bei einer Stepzeit von 100ms also 10Hz. Ein Gimmick für Silvester oder andere Parties.
  
  
Zeile 435: Zeile 448:
 ===== Downloads ===== ===== Downloads =====
  
-  * {{:tech:led_rs485.pdf| Schaltplan (,pdf)}} +  * {{:tech:led_rs485.pdf| Schaltplan (.pdf)}} 
-  * {{:tech:led_rs485_bom.csv.zip| Bestückungsliste (BOM) als .csv}}+  * {{:tech:led_rs485_bom.csv.zip| Bestückungsliste (BOM) (.csv)}}
   * {{:tech:led_rs485.brd.zip| PCB Eagle File (.brd)}}   * {{:tech:led_rs485.brd.zip| PCB Eagle File (.brd)}}
 +  * {{:tech:led_case.stl.zip | PCB case (.stl)}}
   * {{:tech:firmware.zip| Firmware for ATTINY85}}   * {{:tech:firmware.zip| Firmware for ATTINY85}}
   * {{:tech:stream_server.zip | Stream-Server files}}   * {{:tech:stream_server.zip | Stream-Server files}}
 +  * {{| LED Test Tool Wifi (.py)}}
  
    
de/tech/gardenled.txt · Zuletzt geändert: 2022/11/14 15:56 von bullar