Difference between revisions of "Christmas tree"

From Hackerspace ACKspace
Jump to: navigation, search
m (update.. we zijn er bijna :))
m (Completed, great success! (and fun). Also, Christmas 2017 is over.)
(33 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<noinclude>{{featured}}</noinclude>
 
 
{{Project
 
{{Project
|State=Planned
+
|Featured=No
|Members=Prodigity,xopr
+
|State=Completed
 +
|Members=Prodigity, xopr, AmazingMike, Da Syntax, Wolkje, Computer1up
 
|Description=Kerstboom heeft mooie lampjes en versiering nodig
 
|Description=Kerstboom heeft mooie lampjes en versiering nodig
|Picture=christmastree.jpg
+
|GitHub=espixelflut
 +
|Picture=treefeeding.png
 
}}
 
}}
 
(this one's in Dutch so the young participants can join in as well)
 
(this one's in Dutch so the young participants can join in as well)
 
:'''Countdown:'''
 
:{{#ifexpr:({{#time: xNU | 6 december 2015 }}-{{#time: xNU }}-86400)/86400<0|<div id="nggyunglydngtaahy" class="rainbow">'''Tijd om de kerstboom op te tuigen!'''</div>|Nog '''''{{#expr: ({{#time: xNU | 6 december 2015 }}-{{#time: xNU }}-86400)/86400 round 0 }} {{plural:{{#expr: ({{#time: xNU | 6 december 2015 }}-{{#time: xNU }}-86400)/86400 round 0 }}|dag|dagen|}}''''' voordat we de kerstboom mogen optuigen.}}
 
 
 
== LED kerstboom ==
 
== LED kerstboom ==
 
 
Het is weer wintertijd, tijd om een (LED) lichtje te schijnen op de warme verlichting!
 
Het is weer wintertijd, tijd om een (LED) lichtje te schijnen op de warme verlichting!
Die gaan we uiteraard zelf maken voor in de kerstboom.
+
Die gaan we uiteraard zelf <s>maken</s> scripten voor de kerstboom.
  
 
We hebben een hele hoop dingen in de space liggen waar we vast en zeker iets leuks van kunnen maken (alles en iedereen is welkom)!
 
We hebben een hele hoop dingen in de space liggen waar we vast en zeker iets leuks van kunnen maken (alles en iedereen is welkom)!
  
== plan ==
+
=== uitvoer ===
Om op tijd klaar te zijn moeten we vroeg beginnen. Sinterklaas is op het moment van schrijven nog niet in Nederland, maar Halloween en Sint-Maarten draait ook om lampjes (en snoep, vuur, wafels, chocomel, verkleden, maar dat is bijzaak).
+
De LEDslinger hangt (kerstboom hebben we geskipped omdat: moeite). De ATX voeding staat op de kast bij de ingang, aangesloten op zekeringgroep [[Fuse group::A]].
 +
Ge&iuml;nspireerd door [[SHA2017]], hebben we een pixelflut versie gemaakt (zie ook https://wiki.sha2017.org/w/Pixelflut_bar en https://wiki.sha2017.org/w/Projects:HackTheVU).
 +
 
 +
Zie hier een media overdosis:
 +
{{Html5media|WS2812_kerstgeenboom.mp4|1e script}}
 +
{{Html5media|WS2812_weewoo.mp4|wee woo script}}
 +
{{Html5media|WS2812_ambiled.mp4|ambiled script}}
 +
{{Html5media|WS2812_chrome_app.mp4|chrome app}}
 +
{{Html5media|WS2812_surface.mp4|surface app}}
 +
{{Html5media|WS2812_morse.mp4|morse}}
 +
{{Html5media|WS2812_morse2.mp4|custom morse}}
  
Het idee is om [[NeoPixel]]-kerstboomverlichting te maken waar we bij elk LEDje een zelfgemaakt dingetje kunnen hangen en verlichten. Denk hierbij aan:
+
De hard- en software voor de pixelflut versie is klaar; hij moet alleen nog aangesloten en in de boom gehangen worden: aansluiten door '''blauw op GND''' en '''bruin op 12V''' aan te sluiten, deze gaan naar de groene connector en LEDslinger.
* 3D ornamenten printen (geeft misschien mooie schaduw-effecten)
 
* Plexiglas frezen of graveren
 
* Karton en papier kan natuurlijk ook (bijvoorbeeld een mini-lampion)
 
  
Momenteel hebben we in de space:
+
Er zijn als het goed is, 2 zwarte kabels met kroonsteen-stekers; de korte is bedoeld om langs de stam op te lopen.  Om kleurafwijking en te grote stroombelasting op de ledslinger te voorkomen, is deze kabel nodig (zorg ervoor dat de kroonsteentjes juist-om ingestoken worden, anders blaas je de LEDs op.
* Werkende 3D printer
 
* CNC freestafel
 
* NeoPixels ([[User:Xopr|xopr]] heeft 5 meter <abbr title="WS2812">NeoPixels</abbr> opgeblazen, en gaat de LEDjes die wel nog werken tussen een lange kabel solderen)
 
* 20m 3-aderig zwart snoer (nog bij [[User:Xopr|xopr]] thuis)
 
* 1m<sup>2</sup> mat-doorschijnend wit plexiglas
 
* hobbylijm
 
* ESP-12 modules (kerstboom moet uiteraard aan het internet hangen en via de telefoon bestuurd kunnen worden)
 
  
Wat we nog niet hebben gaan we gewoon kopen (papier/karton, enz.)
+
Er zit een resetknop en een rotary encoder (draai/drukknop) op welke de volgende mogelijkheden opleveren:
 +
* Reboot: reset-down, reset-up, rotary-up
 +
* Firmware update mode: reset-down, rotary-down, reset-up, rotary-up
 +
* Set number of LEDs: reset-down, reset-up, wait 1 sec., rotary-down, wait 5 sec., rotary-up (rotary-rotate to change, press rotary to store, reset to cancel)
 +
* LEDs off: rotary-down (not implemented)
 +
* Brightness: rotary-rotate (not implemented)
 +
[[Image:ESPCB.png|thumb|ESPixelflut PCB]]
 +
{{Html5media|WS2812_kerstboom4.mp4|width=|height=}}
 +
:Er zit een FTDI connector op: van buiten naar binnen: RTS(green), RX(yellow), TX(orange), '''3.3V'''(red), CTS(brown), GND(black). 
 +
:Er zit een jumper op: buitenkant is step-down converter, binnenkant is FTDI (let op: moet 3.3V zijn!). Uiteraard kun je de middelste pin ook gebruiken om direct 3.3v op de ESP te zetten.
  
=== voortgang ===
+
<noinclude>
* [[User:Xopr|xopr]] 21:33, 4 November 2015 (CET) heeft wat berekeningen gedaan met wat aannames: de boom (kegel) is 90x150cm.  Met een snoerlengte van 2000cm kunnen ongeveer 14 windingen gedaan worden wat een "spoed" geeft van grofweg 10cm: een perfecte afstand van de LEDs zowel horizontaal als verticaal! Dat betekend dat er zo'n [http://kerstverlichtingbuiten.com/hoeveel-kerstlampjes-in-kerstboom 200 LEDs nodig] zijn, en met de schatting van 10% a 20% uitval (6 op 77 geteld) op de 300 opgeblazen strip zouden er genoeg over moeten blijven om een sliert te maken.  Niet meegenomen in de berekening is het knip- en stripafval van de kabel en de manier om de snoeronderbrekingen weer stevig te verbinden (voorzichtig geschat is dat dat een meter snoer kost).  Misschien hoeft het snoer niet in stukken geknipt te worden, maar alleen de buitenste aders (plus en min) ontbloot te worden om zo de LED er diagonaal op te solderen.
 
* [[User:Xopr|xopr]] 09:43, 11 November 2015 (CET) begonnen met het aanstrippen van de kabel ([[File:Stripped_cord.jpg]]), wat veel werk blijkt..
 
* [[User:Xopr|xopr]] 11:34, 19 November 2015 (CET) Zo'n 65 LEDs gesoldeerd en getest. LEDs zijn nu op dus ik moet verder f&ouml;hnen.
 
{{progress bar|197|total=230|suffix=&nbsp;LEDs van de strip af gef&ouml;hnd}}
 
{{progress bar|146|total=200|suffix=&nbsp;plaatsen aangestript}}
 
{{progress bar|106|total=200|suffix=&nbsp;LEDs op snoer gesoldeerd}}
 
  
=== todo ===
+
=== plan ===
Dit zijn de dingen die (door iedereen) gedaan kunnen worden:
+
Bij slechte performance kunnen we eventueel kijken naar een [[Raspberry Pi]] of [[Banana Pi]] ([https://www.htpcguides.com/raspberry-vs-banana-pi-benchmarks-sata-gigabit-matter/ iperf stats])
* LEDs van de strip af f&ouml;hnen (strip in alu sluitzakje in xopr's projectkrat)
 
* plaatsen aanstrippen (snoer thuis bij xopr)
 
* LEDs op snoer solderen
 
* "controller" bouwen (ESP omdat: internet)
 
* software schrijven
 
** software-beginnetje: stringtest + 'warm wit' modus
 
** uitmeten begin van "regels"
 
** voorbeeldcode schrijven
 
** API
 
* '''ornamenten knutselen''' (kan men al mee beginnen)
 
  
<noinclude>
+
=== updates ===
Heb je vaardigheden waar je iemand anders mee kan helpen?  Vul dan in de tabel hieronder op de juiste plek(ken) je naam inWil je iets doen of maken, maar lukt het je niet alleen?  Kijk dan in de tabel en vraag de juiste persoon.
+
[[User:Xopr|xopr]] 10:23, 4 December 2017 (CET): Weer een opgeblazen ESP: vermoedelijk geeft de step-down converter te hoge pieken of ruis af.
 +
Ik heb de converter vastgelijmd op 3V, en heb een ontstoringscondensator en blauwe led toegevoegd om de pieken te dempen (fingers crossed).
 +
Resultaat: hij doet 't, maar ik had zelf gehoopt op wat meer pixels per seconde.
 +
 
 +
[[User:Xopr|xopr]] 21:17, 19 November 2017 (CET): Inmiddels is de source voor de ESP online gezet, samen met de (aangepaste) versie van [[User:Prodigity|Prodigity]]'s python script (en een random afgeleide).  De software is getest en zou redelijk wat pixels per seconde moeten kunnen tekenenHet enige wat nog moet gebeuren is de hardware en kijken hoe goed de 5V aansturing van de 12V leds samenwerkt met de 3v3 van de ESP. De benodigde pinout zou moeten zijn: RXD0: WS2812 data (met jumper naar ftdi, anders lukt uploaden niet). GPIO0: Rotary-A,GPIO4: Rotary-B, GPIO5: Rotary-NO (met Rotary-C en Rotary-P naar GND). Hou tijdens booten de knop ingedrukt om het aantal leds in te stellen.
  
{| class="wikitable"
+
[[User:Xopr|xopr]] 16:50, 13 November 2017 (CET): het idee van ESP gebruiken voor wifi en arduino voor de leds en 3.3v voeding is aan de kant gezet: zowel de voeding als de seriele verbinding is te instabiel.  Inmiddels een proof of concept geschreven voor enkel de ESP met een DMA-gebaseerde Neopixel library (op de RX pin).
! solderen
+
{{Html5media|WS2812_kerstboom3.mp4|width=|height=}}
! programmeren
+
Ook heb ik een bash script (met netcat) kunnen testen, maar ben nog niet blij met het resultaat; na verloop van tijd treedt er een fout op als men <code>-w0</code> seconde wacht.  Slecht voorbeeld, maar het is een voorbeeld:
! <abbr title="Hahaha, zie je wel! (lang verhaal)">figuurzagen</abbr>
+
#!/bin/bash
! CNC frezen
+
while true; do
! 3D tekenen
+
    echo -n "PX 0 `head -c3 </dev/urandom|xxd -p -u`" | nc -uw1 192.168.1.234 1234&
! 3D printen
+
    echo -n "PX 1 `head -c3 </dev/urandom|xxd -p -u`" | nc -uw1 192.168.1.234 1234&
|-
+
    sleep 0.1
| class="solderen"|
+
done
xopr<br>
+
Gebruik <code>$[ RANDOM % 200 ]</code> om een [http://funloop.org/post/2013-07-12-generating-random-numbers-without-modulo-bias.html semi willekeurige<sup>(en)</sup>] led uit te kiezen.
Prodigity
 
  
| class="programmeren"|
+
[[User:Xopr|xopr]] 22:24, 11 November 2017 (CET): ik heb wat arduino code kunnen kloppen; het protocol gaat worden:
xopr<br>
+
PX x RRGGBB
Prodigity
+
naar UDP adres (onder voorbehoud) 192.168.1.234 poort 1234
  
| class="figuurzagen"|
+
== todo ==
xopr<br>
+
* brightness beheren (met draaiknop)
Prodigity
+
* zekering upgraden (en bekabeling controleren: 12A) of softwarelimiter inbouwen (8A max)
  
| class="CNC frezen"|
 
Prodigity
 
  
| class="3D tekenen"|
+
= voorgaande versies (previous versions) =
xopr<br>
+
== 2016 ==
Prodigity
+
Dit jaar hadden we een 20 meter, 12V kant-en-klare LEDslinger (vorige is voor de 2e keer opgeblazen; dit is een RGB variant in plaats van GRB). Data is 5V, maar 3.3V van de ESP lijkt voldoende.
 +
Het hardwareschema was een aangepaste versie (5V->12V) van vorig jaar, en deze software draaide erop: [[GitHub::https://github.com/ACKspace/ESP-NFC-Christmas-tree|ESP-NFC-Christmas-tree]]
  
| class="3D printen"|
+
[[Image:Christmastree_2016.jpg|thumb|right]]
xopr<br>
+
[[User:Roelke|Roelke]] heeft een grote boom meegebracht en [[User:pmwq|pmwq]], [[User:Vicarious|Vicarious]] en [[User:Xopr|xopr]] hebben de verlichting erin gehangen.
Prodigity
 
  
|}
+
De print-layout (in awesome ascii-art, ietwat aangepast):
 +
<pre>
 +
    .---------.---------------.
 +
    |.------. |            o  | *DTR
 +
    ||o    | |  o---------o  | RX
 +
Vin|oo    | |  o---------o  | TX
 +
*3v3|o0---. | |  o        o  | *VCC
 +
SCK|00  | | |  o        o  | *CTS
 +
MISO|00  | | |  00{|<}--. o  | GND
 +
MOSI|00  | | |  oo      | |.----.
 +
SSEL|00  | | |  o+----. | '|( ) | GND
 +
*RST|oo---+ | '--o{10k}' |  |    |
 +
*IRQ|o    | |    .{10k}--+--|( ) | LED
 +
GND'o    | |    |  ,_.    |    |
 +
    |    | '----+---"@|----|( ) | Vin
 +
    |    '----------"@|3v3 '----'
 +
    '---------------"@|
 +
                    "-'
 +
*) not connected
 +
</pre>
 +
Merk op dat de spanningsregulator in het schema een liniaire is, en de huidige implementatie bevat een DC-DC converter.  Ook werkt de program jumper niet: de bovenste 10k weerstand is te hoog; verbind de bovenste jumperpin (GPIO0) naar GND tijdens het booten om deze in programmeermodus te zetten.
  
  
== vorige versie (previous version) ==
+
== 2015 ==
 +
Deze versie had 200 handgesoldeerde [WS2812] LEDjes en een variant van de [[GitHub::https://github.com/ACKspace/ESP-NFC-Christmas-tree|ESP-NFC-Christmas-tree]] en [[GitHub::https://github.com/ACKspace/Firetree|Firetree github page]] software.  Het draaide welliswaar op een (kortsluitvaste) labvoeding, maar had geen zekering en kon dus niet onbeheerd achtergelaten worden.
 +
<gallery>
 +
Image:Big_packet.jpg|Hee, een cadeau<s>tje</s>.. Ga naar [[2k15_interhackerspaces_xmas_swap|2k15 interhackerspaces xmas swap (Engels)]] voor meer info..
 +
Image:Big_packet2.jpg|..en nog &eacute;&eacute;n, wow!
 +
</gallery>
  
=== 2014 ===
+
<div style="display:inline-block">
 +
{{#widget:Html5media
 +
|url={{filepath:WS2812_kerstboom1.mov}}
 +
|width=320
 +
|height=193
 +
}}
 +
</div>
 +
<div style="display:inline-block">
 +
{{#widget:Html5media
 +
|url={{filepath:WS2812_kerstboom2.mov}}
 +
|width=320
 +
|height=193
 +
}}
 +
</div>
 +
 
 +
== 2014 ==
 +
[[Image:Christmastree.jpg|thumb|right]]
  
 
'''It's the most hackiest time of the year...'''
 
'''It's the most hackiest time of the year...'''
 
 
Christmas trees are a good excuse to play with LEDs,
 
Christmas trees are a good excuse to play with LEDs,
 
so TheOnlyJoey and me bought a nice looking christmas tree for the space.
 
so TheOnlyJoey and me bought a nice looking christmas tree for the space.

Revision as of 15:01, 6 March 2018

Project: Christmas tree
Featured: No
State Completed
Members Prodigity, xopr, AmazingMike, Da Syntax, Wolkje, Computer1up
GitHub espixelflut
Description Kerstboom heeft mooie lampjes en versiering nodig
Picture
Treefeeding.png

(this one's in Dutch so the young participants can join in as well)

LED kerstboom

Het is weer wintertijd, tijd om een (LED) lichtje te schijnen op de warme verlichting! Die gaan we uiteraard zelf maken scripten voor de kerstboom.

We hebben een hele hoop dingen in de space liggen waar we vast en zeker iets leuks van kunnen maken (alles en iedereen is welkom)!

uitvoer

De LEDslinger hangt (kerstboom hebben we geskipped omdat: moeite). De ATX voeding staat op de kast bij de ingang, aangesloten op zekeringgroep A. Geïnspireerd door SHA2017, hebben we een pixelflut versie gemaakt (zie ook https://wiki.sha2017.org/w/Pixelflut_bar en https://wiki.sha2017.org/w/Projects:HackTheVU).

Zie hier een media overdosis:

De hard- en software voor de pixelflut versie is klaar; hij moet alleen nog aangesloten en in de boom gehangen worden: aansluiten door blauw op GND en bruin op 12V aan te sluiten, deze gaan naar de groene connector en LEDslinger.

Er zijn als het goed is, 2 zwarte kabels met kroonsteen-stekers; de korte is bedoeld om langs de stam op te lopen. Om kleurafwijking en te grote stroombelasting op de ledslinger te voorkomen, is deze kabel nodig (zorg ervoor dat de kroonsteentjes juist-om ingestoken worden, anders blaas je de LEDs op.

Er zit een resetknop en een rotary encoder (draai/drukknop) op welke de volgende mogelijkheden opleveren:

  • Reboot: reset-down, reset-up, rotary-up
  • Firmware update mode: reset-down, rotary-down, reset-up, rotary-up
  • Set number of LEDs: reset-down, reset-up, wait 1 sec., rotary-down, wait 5 sec., rotary-up (rotary-rotate to change, press rotary to store, reset to cancel)
  • LEDs off: rotary-down (not implemented)
  • Brightness: rotary-rotate (not implemented)
ESPixelflut PCB
Er zit een FTDI connector op: van buiten naar binnen: RTS(green), RX(yellow), TX(orange), 3.3V(red), CTS(brown), GND(black).
Er zit een jumper op: buitenkant is step-down converter, binnenkant is FTDI (let op: moet 3.3V zijn!). Uiteraard kun je de middelste pin ook gebruiken om direct 3.3v op de ESP te zetten.


plan

Bij slechte performance kunnen we eventueel kijken naar een Raspberry Pi of Banana Pi (iperf stats)

updates

xopr 10:23, 4 December 2017 (CET): Weer een opgeblazen ESP: vermoedelijk geeft de step-down converter te hoge pieken of ruis af. Ik heb de converter vastgelijmd op 3V, en heb een ontstoringscondensator en blauwe led toegevoegd om de pieken te dempen (fingers crossed). Resultaat: hij doet 't, maar ik had zelf gehoopt op wat meer pixels per seconde.

xopr 21:17, 19 November 2017 (CET): Inmiddels is de source voor de ESP online gezet, samen met de (aangepaste) versie van Prodigity's python script (en een random afgeleide). De software is getest en zou redelijk wat pixels per seconde moeten kunnen tekenen. Het enige wat nog moet gebeuren is de hardware en kijken hoe goed de 5V aansturing van de 12V leds samenwerkt met de 3v3 van de ESP. De benodigde pinout zou moeten zijn: RXD0: WS2812 data (met jumper naar ftdi, anders lukt uploaden niet). GPIO0: Rotary-A,GPIO4: Rotary-B, GPIO5: Rotary-NO (met Rotary-C en Rotary-P naar GND). Hou tijdens booten de knop ingedrukt om het aantal leds in te stellen.

xopr 16:50, 13 November 2017 (CET): het idee van ESP gebruiken voor wifi en arduino voor de leds en 3.3v voeding is aan de kant gezet: zowel de voeding als de seriele verbinding is te instabiel. Inmiddels een proof of concept geschreven voor enkel de ESP met een DMA-gebaseerde Neopixel library (op de RX pin).

Ook heb ik een bash script (met netcat) kunnen testen, maar ben nog niet blij met het resultaat; na verloop van tijd treedt er een fout op als men -w0 seconde wacht. Slecht voorbeeld, maar het is een voorbeeld:

#!/bin/bash
while true; do
    echo -n "PX 0 `head -c3 </dev/urandom|xxd -p -u`" | nc -uw1 192.168.1.234 1234&
    echo -n "PX 1 `head -c3 </dev/urandom|xxd -p -u`" | nc -uw1 192.168.1.234 1234&
    sleep 0.1
done

Gebruik $[ RANDOM % 200 ] om een semi willekeurige(en) led uit te kiezen.

xopr 22:24, 11 November 2017 (CET): ik heb wat arduino code kunnen kloppen; het protocol gaat worden:

PX x RRGGBB

naar UDP adres (onder voorbehoud) 192.168.1.234 poort 1234

todo

  • brightness beheren (met draaiknop)
  • zekering upgraden (en bekabeling controleren: 12A) of softwarelimiter inbouwen (8A max)


voorgaande versies (previous versions)

2016

Dit jaar hadden we een 20 meter, 12V kant-en-klare LEDslinger (vorige is voor de 2e keer opgeblazen; dit is een RGB variant in plaats van GRB). Data is 5V, maar 3.3V van de ESP lijkt voldoende. Het hardwareschema was een aangepaste versie (5V->12V) van vorig jaar, en deze software draaide erop: ESP-NFC-Christmas-tree

Christmastree 2016.jpg

Roelke heeft een grote boom meegebracht en pmwq, Vicarious en xopr hebben de verlichting erin gehangen.

De print-layout (in awesome ascii-art, ietwat aangepast):

    .---------.---------------.
    |.------. |            o  | *DTR
    ||o     | |  o---------o  | RX
 Vin|oo     | |  o---------o  | TX
*3v3|o0---. | |  o         o  | *VCC
 SCK|00   | | |  o         o  | *CTS
MISO|00   | | |  00{|<}--. o  | GND
MOSI|00   | | |  oo      | |.----.
SSEL|00   | | |  o+----. | '|( ) | GND
*RST|oo---+ | '--o{10k}' |  |    |
*IRQ|o    | |    .{10k}--+--|( ) | LED
 GND'o    | |    |   ,_.    |    |
     |    | '----+---"@|----|( ) | Vin
     |    '----------"@|3v3 '----'
     '---------------"@|
                     "-'
*) not connected

Merk op dat de spanningsregulator in het schema een liniaire is, en de huidige implementatie bevat een DC-DC converter. Ook werkt de program jumper niet: de bovenste 10k weerstand is te hoog; verbind de bovenste jumperpin (GPIO0) naar GND tijdens het booten om deze in programmeermodus te zetten.


2015

Deze versie had 200 handgesoldeerde [WS2812] LEDjes en een variant van de ESP-NFC-Christmas-tree en Firetree github page software. Het draaide welliswaar op een (kortsluitvaste) labvoeding, maar had geen zekering en kon dus niet onbeheerd achtergelaten worden.

2014

Christmastree.jpg

It's the most hackiest time of the year... Christmas trees are a good excuse to play with LEDs, so TheOnlyJoey and me bought a nice looking christmas tree for the space.

I've also bought some wood at the hardware store and built a base for the tree (standard bases are crap and good ones are too expensive).

The tree is going to need decorations and an internet connection (because of reasons).

I invite everyone to have fun with it and get creative ;)