donderdag 27 maart 2014

Beamer IR codes

Voor een projectje heb ik de AAN/UIT code van de afstandsbediening van verschillende beamer afstandsbedieningen op school uitgelezen.

Hoe? Een IR ontvanger (TSOP1738) had ik al eerder ergens uitgesloopt.

Met behulp van de IRRemote library (github) en bijgeleverde IRRcvdump code heb ik met een Arduino UNO de codes uitgelezen:


Er blijken maar twee codes op school voor te komen:

Dell beamers: NEC: F20A40BF (32 bits)
Hitachi beamers: NEC: E1A2E817 (32 bits)

Een Dell beamer aan uit kan dan met de volgende code:


// zend de AAN/UIT code 3x (volgens protocol)
// wacht 1 sec en doe het opnieuw
#include <IRremote.h>

IRsend irsend;

void loop() {
  for (int i = 0; i < 3; i++) {
      irsend.sendNEC(0xF20A40BF, 32); // Dell AAN/UIT
      delay(40);
    }
delay(1000); 
}


Een IR LED wordt dan aangesloten op PIN 3 (PWM) van de Arduino UNO.

woensdag 26 maart 2014

Tandwiel op asje... Doorgebrande GM3

Mijn useless machine heeft enkele dagen in de personeelskamer op mijn school mogen doorbrengen. Doel: Zoveel mogelijk failure modes ontdekken. Elke keer als het stuk gaat probeer ik het ontwerp te verbeteren. Allereerst bleek het hout van het armpje te zacht; Een collega hield het armpje tegen en het asje van de motor draaide door in het houten armpje. Resultaat het gat werd een beetje uitgelubberd en er zat speling tussen motorasje en arm. Oplossing: Nieuwe arm van harder (berken i.p.v. populier) multiplex uit meerdere dunne lagen die haaks op elkaar zijn geplakt. De lasercutter snijdt wel.

Maar inmiddels is de motor (GM3 kloon) doorgebrand. De gearbox is onbeschadigd maar het motortje doet het niet meer. De motor is ongetwijfeld doorgebrand doordat de arm van de useless machine is geblokkeerd (vastgehouden? tegengehouden? vastgelopen?). Een "echte" GM3 heeft wellicht een slipkoppeling. Deze kloon i.i.g. niet.


Hoewel die dingen niet echt duur zijn (E 1,25) wil ik graag het motortje zelf vervangen (E 0,20). Het motortje heb ik liggen, maar hoe monteer je het tandwiel op de as? Het asje is niet afgeplat zoals dat bij dikkere assen vaak het geval is.

Ik vermoed dat het tandwiel erop geperst zit. Hoe krijg je het eraf? En dan op een ander motortje monteren? Zou dat kunnen?

Dit is sowieso een probleem dat ik al vaker ben tegengekomen: Hoe vervang en/of monteer je een tandwiel o.i.d. op een asje van 2mm doorsnede?

donderdag 13 maart 2014

Useless machine

Het eerste "echte" project met de lasercutter is een useless machine geworden. Een inmiddels op internet bekend doosje dat zichzelf uitzet. Volgens wikipedia in 1952 bedacht door Minsky en Shannon. Sinds de maker revolutie is het echt een hit.



Ik heb een doosje gesneden uit 6mm populiermultiplex (goedkoop). Het doosje is gemaakt met een "boxmaker" plugin in inkscape. Leuk detail is wel dat er geen lijm gebruikt is. Het doosje zit in elkaar geklikt. Past zo precies dat alle vingerverbindingen op wrijving vast zitten.

Het plankje waar de motor (Dat is overigens een GM3 gearmotor kloon van 1euro25) op is bevestigd zit ook met vingerverbindingen in de zij- en onderkant van het doosje. Dat het paste na tekenen in Inkscape was zowel een wonder als overwinning. Klik! Gaaf!


De motor bevestiging bestaat uit twee stukjes 6mm triplex; Het kleine stukje triplex is aan het grote stuk vastgelijmd. De motorbevestiging bleek net iets te ruim; Opgelost met hot-glue.
De arm (niet op foto) past ook op wrijving op de motor.

Verder is het een standaard useless machine zoals er duizenden zijn. Een on-off-on schakelaar, microswitch, 4x AA batterijen in de bekende schakeling.

Eindresultaat:

Close-up met QR code op het deksel (verwijzing naar dit blog):


Zeker niet origineel, maar wat een leuk ding!

Verbeterpunten voor versie 2:

  • Zet het draaipunt van de arm recht onder de schakelaar
  • Monteer de microswitch ook op het motorplankje en test motorplankje + bovenkant als een geheel zonder dat het in het doosje zit. Dat scheelt een hoop gepriegel. Dan is het handig dat het motorplankje aan het deksel hangt ipv in de zijkant.
  • 3xAA is waarschijnlijk voldoende. Dan is het doosje wat langzamer. Mits de motor dan genoeg koppel heeft om de schakelaar te bedienen.
  • Het doosje kan kleiner.
  • Oefenen met snijden van populier (lasercutter instellingen) zodat het hout minder verbrandt eruit ziet.


vrijdag 7 maart 2014

Lasercutter en 3D-printer

Deze week hebben we op school de beschikking gekregen over twee moderne "tools": Een lasercutter en een 3D-printer. Inspirerend, maar ook gewoon gaaf.

Lasercutter.
Een Trotec Speedy 100R 30Watt laser. Hiermee kun je moeiteloos en heel precies plastic, hout, karton en papier snijden en graveren. Een vectortekening uit CorelDraw, AutoCAD of Inkscape letterlijk geprint door een sterke laser. Ik gebruik Inkscape.

Ik heb vooral geƫxperimenteerd met populieren multiplex. Dit hout is gemakkelijk verwerkbaar en goedkoop. Acryl (PMMA, Perspex) is veel makkelijker en mooier, maar ongeveer 10x zo duur. 6mm populier kost bij de Praxis 10 euro/m2 en bij een houthandel nog minder. 4mm acryl is 77 euro/m2.

Vooral leuk is het maken van haakse verbindingen (doosjes e.d.) met vingerlassen. Voor Inkscape bestaat een handig plugin die dit soort vingerlassen automatisch maakt: Boxmaker. Door de juiste maatvoering te kiezen (de laser snijdt zeer nauwkeurig) kun je een doosje zo uitsnijden dat het zonder lijm muurvast gemonteerd kan worden. Voor 6mm populier is het materiaalverlies (snijdikte) ongeveer 0,3mm (0,15mm aan beide zijden van de snijlijn). In de boxmaker werkt kerf = 0.2 mm erg goed. De doosjes zijn dan nog net inelkaar te drukken zonder dat het hout breekt. Kerf = 0.1 mm is prima als houtlijm wordt toegepast.


Filmpje van de lasercutter in actie:



Nu is het vooral instellingen uitproberen en verbeteren. Zo maak ik van elk materiaal een paar proefstukjes en daarna een plaatje met de juiste instelling ingegraveerd. Dat is voor elk materiaal toch even anders, dus het is niet voldoende om "triplex 3,5mm" instellingen over te nemen. Je moet echt experimenteren met "jouw soort triplex".

Vingerlassen:
QR-codes graveren:

3D Printer.
Naast de fantastische lasercutter hebben we op school een Ultimaker 2 3d printer aangeschaft. Een erg gelikte machine die "out-of-the-box" heel aardige dingen print. Echt uitpakken, aansluiten en gaan. Ik had graag een Ultimaker-1 in elkaar gezet, maar dit is ook wel erg luxe en leuk. Het eerste test object was de "hello world!" van het 3d printen, de Ultimaker robot, in hip neon roze PLA:


Filmpje van de Ultimaker die "voronoi heart" print (test object nummer twee):




vrijdag 3 januari 2014

Wii Nunchuck aansluiten op Arduino UNO R3

Dit is weer eens een "om later terug te lezen hoe het ook al weer moest" blogje:

Een Wii Nunchuck is een 3.3V i2c device:
http://wiibrew.org/wiki/Wiimote/Extension_Controllers
http://wiibrew.org/wiki/Wiimote/Extension_Controllers/Nunchuck

Ik heb een adaptertje: https://www.sparkfun.com/products/9281
(bron: Sparkfun)

Dit bordje prik je in de nunchuck stekker. Je hebt nu vier pinnen:

  1. SCL (i2c clock)
  2. SDA (i2c data)
  3. Vcc Dit moet dus 3.3V zijn, maar arduino UNO is 5V.
  4. GND
SCL zit aan de kant van de Nunchuck. (Op het plaatje rechts).

Je kunt deze adapter dus helaas niet zondermeer in een (5V) arduino prikken ivm de 3.3V / 5V. Niet zoals in het bovenstaande plaatje dus.

Met de adapter in een breadbord werkt het wel:
  1. SCL aan A5 
  2. SDA aan A4
  3. Vcc aan 3v3
  4. GND aan GND


Note to self:

Het zo handig zijn om de i2c uitgang aan de USB kant van de Arduino UNO te gebruiken (bij Aref). Maar helaas heeft de UNO geen 3.3v als AREF. 

Neopixel pong

Idee: Laat een rode pixel "bewegen" over een blauwe achtergrond en bestuur e.e.a. met een Wii Nunchuck.


Probleem was vooral dat het Adafruit neopixel shield geen "stackable" headers heeft maar alleen pennen. Als je het shield op een arduino prikt kun je verder niets aansluiten. Ook geen Wii Nunchuck.

Dus ik 4 pennen losgesoldeerd en vervangen door stackable headers. In de i2c poort wel te verstaan. Helaas, de arduino library kreeg ik niet werkend.

Een wel werkende library gebruikt 3.3v, GND en A4 en A5... Maar daar zaten dan weer geen header in. Uiteindelijk het hele zaakje in een breadbord gestoken.

Het werkt niet heel soepel omdat de Nunchuck maar 2x per seconde wordt uitgelezen. De "delay" zit op de verkeerde plaats in de loop(). Enfin, kan allemaal beter, maar het werkt.

Code e.d. later.

Adafruit Neopixel shield

Vergeet robots.
Vergeet knipperende ledjes.

Neopixels!

Wat een geweldige dingen. Neopixels zijn RGB leds die serieel aangestuurd worden. Dat betekent dat ze als een lange sliert gebruikt kunnen worden met slechts 1 data-lijn. De RGB leds hebben een ingebouwde controller die de data (kleur) elke clocktick doorschuift naar de volgende led.

Maar nog veel belangrijker deze LEDs zijn bizar fel. Echt niet normaal. Alleen onder een papiertje zijn ze te fotograferen. Bijna niet zichtbaar, maar er ligt een papiertje (stukje uit een A4tje gescheurd bovenop de matrix).

(het was gewoon licht in de kamer toen ik deze foto nam).

Met de LEDs uit ziet het er zo uit:

Even snel wat in elkaar gezet met de NeoMatrix library van Adafruit: De gelukkig nieuwjaarswens nu ook in Neopixels:

Een snelle test: Een lopende rode pixel over een blauwe achtergrond:


Kan ik deze pixel ook besturen met een Wii Nunchuck!? We zullen zien...

donderdag 2 januari 2014

Attiny85 breadbord programmer adapter

Dit is weer zo'n post om later terug te vinden wat (en vooral hoe) ik inelkaar gebeund heb. Ditmaal een attiny85-programmer-breadbord adapter.

Nadeel van het werken met de attiny85 op een breadbord is het aansluiten van mijn programmer. Ik heb een Adafruit usbtinyisp programmer die een 10 (2x5) of 6 (2x3) pins connector heeft. Zo'n connector in twee rijen past eigenlijk nooit handig in een breadbord. Daar is dus een adapter voor nodig.

Ik heb een printje gemaakt (van een stuk stripboard) waar een 10pins connector en een attiny85 opzit. Dit printje prikt in een breadbord waarbij de aansluitingen van de attiny worden doorverbonden.

Eigenlijk was het ook de bedoeling om direct een V-USB oplossing in te bouwen, zodat het printje via USB +5V krijgt en ook als USB device kan functioneren. Ik probeerde een easylogger achtige oplossing na te bouwen. (Link naar schema enzo). Maar ipv de 68 ohm weerstanden in D+ en D- gebruikte ik 47 ohm weerstanden (geen 68 ohm in de rommelbak) en ipv de 3v6 zener diodes gebruikte ik 3v3 zeners. Deze zeners beperken de spanning in signaallijnen D+ en D-.
Omdat D+ en D- dezelfde poorten gebruiken als SCK en MOSI (van de programmer) zijn er problemen met programmeren als de zeners zijn aangesloten... Ik gebruikte bewust niet pin 2 en 3 als D+ en D- om de optie open te houden om een kristal te gebruiken. De zeners moeten dus losgekoppeld worden voor het programmeren.

Close-up van de schakeling met V-USB. Als Vcc/GND zijn aangesloten brand de LED ter controle.
De programmer wordt aangesloten in het 10 pins voetje (de 6 pins is handiger/kleiner, maar ik had dit voetje nog liggen). Vcc van de programmer is niet aangesloten. De print moet extern worden gevoed.

Enfin: De V-USB poging faalde. (Ik gebruikte deze test software). Zeners? of toch de weestanden? Overigens werkte het ook niet zonder zeners. Het bleef een "unknown device". "Het apparaat wordt niet herkend." Geen mogelijkheid om een driver te kiezen of te installeren.

Uiteindelijk het V-USB deel eraf gesloopt. Dat moet ik (als ik de juiste componenten heb) maar eerst op een breadbord opbouwen.

Dat ziet er uiteindelijk zo uit:


Op PB4 (Arduino pin 4) = pin 3 van de attiny heb ik een signaal LEDje aangesloten. De LED zit niet direct op pin 3, maar een 20 kOhm weerstand stuurt een NPN transistor open als pin 3 hoog wordt. Zo volgt het LEDje het signaal op pin 3 zonder het noemswaardig te verstoren.

Nog even de pinouts:




woensdag 1 januari 2014

8x8 LED Matrix kit review (Linksprite.com)

Bij floris.cc kocht ik een 8x8 LED Matrix kit van Linksprite.com (link naar beschrijving) met in het achterhoofd om deze door leerlingen te laten gebruiken. Deze blogpost is een review van deze kit vanuit dat uitgangspunt.

De keuze voor deze kit (en niet het goedkopere equivalent van adafruit) was puur toevallig: De adafruit matrix was niet op voorraad bij floris.cc (of elders in NL) en deze wel. 

Wat is het?
Een LED Matrix bevat 8x8=64 leds die per rij en kolom verbonden zijn. Datasheet: http://www.chlazza.net/files/TOM-1088BMR-B.PDF Zo dus:
(bron: link)

Dat betekent dat er "trucs" nodig zijn om ze per led aan te sturen. Door de rijen en kolommen aan/uit te schakelen kunnen individuele leds per kolom aangestuurd worden (maar niet tegelijkertijd). Als we echter heel veel keer per seconden schakelen ontstaat een voor onze hersenen stilstaand beeld, dat eigenlijk uit een snel knipperend beeld bestaat.

Een dergelijke schakeling kan met schuifregisters e.d., maar veel handiger is de max7219 driver. Met dit IC kan een 8x8 matrix met 3 signaal lijnen worden aangestuurd. Dit kitje is eigenlijk een max7219 en LED Matrix "breakout board". Vanuit een arduino o.i.d. zijn dan slechts 5 draden nodig: 5V, GND en 3x signaal. Je gebruikt dus 3 arduino pins.

Prijs: 11 euro. Niet onbelangrijk: De lage prijs maakt het eenvoudig voor leerlingen beschikbaar. De adafruit kitjes zijn goedkoper, maar de LED matrix is dan *nog* kleiner. De adafruit mini 8x8 LED Matrixen zijn 0.8" (20mm) volgens de adafruit website.

Afmetingen: Het bordje is ongeveer 4 x 6 cm. De matrix is 35x35mm.

Wat krijg je:

In een klein doosje zit het bouwpakketje keurig verpakt:
In het doosje zat geen handleiding, maar die was makkelijk online te vinden: http://linksprite.com/wiki/index.php5?title=LED_Matrix_Kit

Bouwen was eenvoudig. De handleiding heeft duidelijke foto's van het in elkaar zetten.   Ik was enigszins eigenwijs en heb de elko liggend gemonteerd ipv staand, zodat de matrix er makkelijk op past. M.i. is dit ook echt nodig, want staand past het niet (goed):

Na het weerstandje en de twee condensatoren wordt het IC voetje en wat headers gemonteerd. Het solderen was ook met bijna 40-jarige ogen nog goed te doen zonder loep. Wel is een fijne soldeerbout en fijn soldeer (0,5mm oid) nodig. Hier mijn resultaat:

Solderen is eenvoudig. Soldeer ervaring is eigenlijk niet nodig, zeker omdat alle kwetsbare onderdelen in voetjes geplaatst worden. Problemen kunnen makkelijk worden hersteld. Alleen de orientatie en plaatsing van de Elko kan wat moelijkheden opleveren. De online handleiding is op dat vlak te summier.

Het bordje wordt m.b.v. niet meegeleverde jumper stekkertjes aangesloten. Niet meegeleverd betekende in dit geval ook "niet aanwezig". Ik had niets meer in de rommeldoos. Daarom heb ik het bordje rechtop in een breadbord geprikt. (Werkt ook).
De standaard code in de Arduino IDE plakt en direct resultaat:
De LED matrix is zoals gezegd in een breadbord geprikt. (Met nog een oude schakeling erop) en is aangesloten op een Arduino UNO met prototype shield. Dit werkt eenvoudig.

De eerste "eigen toepassing" moest natuurlijk een scrollende text zijn. Na wat zoeken kwam ik bij de bibliotheek (library) "maxmatrix" terecht: https://code.google.com/p/arudino-maxmatrix-library/
Na installeren van deze bibliotheek was het met het standaard voorbeeld zo gepiept: 

CONCLUSIE:
Het linksprite kitje is makkelijk in elkaar te zetten, zonder dat veel soldeerervaring nodig is. Wel is wat extra uitleg nodig, zeker voor correcte plaatsing van de elko. Het kitje werkt "out of the box" met arduino. Voor de max7219 driver is veel arduino code beschikbaar. Dus goed toepasbaar voor iedereen, ook leerlingen.

Met een LED Matrix is heel veel te doen. Mijn handen jeuken om vanalles te "prutsen" ermee.