Ipython en ipython-notebook installeren
sudo apt-get install ipython
sudo apt-get install ipython-notebook
Configureren:
ipython profile create nbserver
Configuratiefile in ~/.ipython/profile-nbserver wijzigen
ipython notebook
Zo makkelijk!
Ingelogd vanaf mijn laptop:
zondag 22 februari 2015
Raspberry Pi 2 installatie van doos naar headless via wifi
Van de doos tot een raspi die zichzelf aanmeldt op Wifi/WPA2 met SSH beschikbaar om in te loggen.
Ik heb een raspberry pi 2 B gekocht via sossolutions.nl met een 2A voeding, 8gb SD kaartje en wifi dongle.
Na levering heb ik NOOBS kopieerd naar het FAT geformatteerde SD kaartje en in de raspi geprikt. Na booten heb ik voor installatie van Raspbian gekozen (met 512Mb data partitie optie).
(foto: raspbi in sleeve (thingiverse) op de TV is de Noobs installer aan het werk te zien)
Installeren gaat verder prima. Voor de zekerheid nog timezone (Amsterdam) en SSH (Enable) ingesteld in raspbian-config (start automatisch na first boot)
tweede boot:
dmesg | grep WLAN
of:
lsusb
levert ralink RT5370 "rtx200" als wifi adapter op (USB)
Het editten van:
/etc/network/services
/etc/wpa_supplicant/wpa_supplicant.conf
Werkte niet. (dit werkt misschien: link). Geen verbinding met mijn WPA2 netwerk. Bedraadt geen problemen,
Uiteindelijk bracht wicd uitkomst:
sudo apt-get install wicd
sudo apt-get install wicd-curses wicd-cli
met wicd-curses kun je het netwerk installen (PSK invullen en "automatisch verbinden" aanvinden). Je ziet in dit programma wat er gebeurt en kan dan makkelijk ingrijpen en debuggen.
Na:
ifconfig (voor het ip adres)
sudo reboot
heb ik nog steeds een raspi met wifi connectiviteit!
Met ssh (putty) kan ik direct inloggen op mijn pi!
Ik heb een raspberry pi 2 B gekocht via sossolutions.nl met een 2A voeding, 8gb SD kaartje en wifi dongle.
Na levering heb ik NOOBS kopieerd naar het FAT geformatteerde SD kaartje en in de raspi geprikt. Na booten heb ik voor installatie van Raspbian gekozen (met 512Mb data partitie optie).
(foto: raspbi in sleeve (thingiverse) op de TV is de Noobs installer aan het werk te zien)
Installeren gaat verder prima. Voor de zekerheid nog timezone (Amsterdam) en SSH (Enable) ingesteld in raspbian-config (start automatisch na first boot)
tweede boot:
dmesg | grep WLAN
of:
lsusb
levert ralink RT5370 "rtx200" als wifi adapter op (USB)
Het editten van:
/etc/network/services
/etc/wpa_supplicant/wpa_supplicant.conf
Werkte niet. (dit werkt misschien: link). Geen verbinding met mijn WPA2 netwerk. Bedraadt geen problemen,
Uiteindelijk bracht wicd uitkomst:
sudo apt-get install wicd
sudo apt-get install wicd-curses wicd-cli
met wicd-curses kun je het netwerk installen (PSK invullen en "automatisch verbinden" aanvinden). Je ziet in dit programma wat er gebeurt en kan dan makkelijk ingrijpen en debuggen.
Na:
ifconfig (voor het ip adres)
sudo reboot
heb ik nog steeds een raspi met wifi connectiviteit!
Met ssh (putty) kan ik direct inloggen op mijn pi!
zondag 15 februari 2015
Idee: Ball balancing robot
Nee, niet een robot die bovenop een bal balanceert. Dat is ook leuk, maar zoiets:
http://hackaday.com/2015/02/14/ball-balancing-robot-uses-new-tof-sensor/
I.p.v. die (overigens uebercoole CERN ToF sensor) is een VL6180 (sparkfun: https://www.sparkfun.com/products/12784 (er is ook een uitgebreider bordje met voltage regulator enzo. PAS OP: MAX 25 cm.)
Of zou het ook met zo'n ultrasone range sensor kunnen? Die heb ik wel liggen.
http://hackaday.com/2015/02/14/ball-balancing-robot-uses-new-tof-sensor/
I.p.v. die (overigens uebercoole CERN ToF sensor) is een VL6180 (sparkfun: https://www.sparkfun.com/products/12784 (er is ook een uitgebreider bordje met voltage regulator enzo. PAS OP: MAX 25 cm.)
Of zou het ook met zo'n ultrasone range sensor kunnen? Die heb ik wel liggen.
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.
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:
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?
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:
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.
3D Printer.
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:
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
Dit bordje prik je in de nunchuck stekker. Je hebt nu vier pinnen:
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)
- SCL (i2c clock)
- SDA (i2c data)
- Vcc Dit moet dus 3.3V zijn, maar arduino UNO is 5V.
- 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:
- SCL aan A5
- SDA aan A4
- Vcc aan 3v3
- GND aan GND
Een werkende library is: https://github.com/GabrielBianconi/ArduinoNunchuk
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.
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).
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:
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.
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:
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.
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:
Dit is de code: https://code.google.com/p/arudino-maxmatrix-library/wiki/Example_Display_Scrolling_Text
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.
vrijdag 27 december 2013
7805 breadbord voeding
Dit is echt zo'n post voor mijzelf om later terug te vinden welk kleur stekkertje nou eigenlijk wat is/was.
Ik heb op mijn breadbord een 7805 voedingkje inelkaar gestoken om te gebruiken met een 9V DC (300mA) adapter die hier rondslingerde. De zogenaamde 9V adapter levert overigens 12V DC onbelast.
Adapter: Groen: GND. Blauw: Vcc (9V).
De witte steker (pin 3, 7805) is de 5V out.
Het is dit schema: http://embedded-lab.com/blog/wp-content/uploads/2010/10/PowerS.jpg
Alles bijelkaar op een stukje gaatjes print lijkt me een mooie oplossing: http://www.instructables.com/id/5V-breadboard-mini-PSU/
Ik heb op mijn breadbord een 7805 voedingkje inelkaar gestoken om te gebruiken met een 9V DC (300mA) adapter die hier rondslingerde. De zogenaamde 9V adapter levert overigens 12V DC onbelast.
Adapter: Groen: GND. Blauw: Vcc (9V).
De witte steker (pin 3, 7805) is de 5V out.
Het is dit schema: http://embedded-lab.com/blog/wp-content/uploads/2010/10/PowerS.jpg
Alles bijelkaar op een stukje gaatjes print lijkt me een mooie oplossing: http://www.instructables.com/id/5V-breadboard-mini-PSU/
Geared motortjes (china - samenkopen)
Ik heb de volgende motortjes (met vertraging):
(onhandige foto op zijn kop... HIER zijn ze beter te zien.)
Het is een simpele DC motor met vertraging, afkomstig van "niels" van samenkopen (China/ledsee). Maar ze zijn "overal te koop" op ebay.
Ik heb wat getest:
Het is een simpele DC motor met vertraging, afkomstig van "niels" van samenkopen (China/ledsee). Maar ze zijn "overal te koop" op ebay.
Ik heb wat getest:
5V : no load current: 200 mA.
stall current: niet gemeten.
Snelheid: Ongeveer 30 tot 60 RPM (heel erg natte vinger werk) bij 5V.
Wordt vervolgd.
zaterdag 21 december 2013
Attiny85 op breadbord met de Arduino IDE
Na de attiny2313 is het nu tijd voor de attiny85. Een compacte (DIP8) en goedkope (1euro30) avr chip, die toch geschikt is voor programmeren via de Arduino IDE. Met 6 in/out pins toch nog heel erg bruikbaar.
Aangesloten op breadboard:
Rechts een attiny2313 en links de attiny85.
Met behulp van de ArduinoISP heb ik de inmiddels standaard "fade" sketch geladen. Even de juiste pins opzoeken:
De LED zit aan pin 6 (=pin 1 in Arduino IDE).
In rood gelijk de ISP pinouts toegevoegd. Daar zal ik nog vaak naar terugspieken.
Ik heb nu een breadbordje met twee attiny's die beide een LEDje aan en uit laten faden. Ik heb de ins en outs van Arduino IDE / avrdude in combinatie met attiny's, ArduinoISP e.d. nu wel door. Tijd voor een "echt" projectje.
ArduinoISP: Een avr programmeren met een Arduino ISP als programmer
Omdat er 100 dingen fout kunnen gaan (en ook gingen), is dit een echt "naslagwerk" blogje:
Ik heb een attiny2313 op een breadbord geprogrammeerd met behulp van een Arduino UNO als programmer. Dat gaat als volgt:
ArduinoISP sketch (bij examples) programmeren in de Arduino UNO.
5V, GND aansluiten.
pin 10: reset (pin 1 attiny2313)
pin 11: MISO (pin 17)
pin 12: MOSI (pin 18)
pin 13: SCK (pin 19)
(Bron: http://www.ernstc.dk/arduino/2313.htm)
Een 10uF of 100nF condensator tussen reset en pin 1 van the attiny, werkte *niet*: Symptoom: Invalid device signature 0x0000000.
Dan avrdude:
avrdude -p t2313 -c avrisp -P COM3 -b 19200
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.07s
avrdude: Device signature = 0x1e910a
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Ik heb een attiny2313 op een breadbord geprogrammeerd met behulp van een Arduino UNO als programmer. Dat gaat als volgt:
ArduinoISP sketch (bij examples) programmeren in de Arduino UNO.
5V, GND aansluiten.
pin 10: reset (pin 1 attiny2313)
pin 11: MISO (pin 17)
pin 12: MOSI (pin 18)
pin 13: SCK (pin 19)
(Bron: http://www.ernstc.dk/arduino/2313.htm)
Een 10uF of 100nF condensator tussen reset en pin 1 van the attiny, werkte *niet*: Symptoom: Invalid device signature 0x0000000.
Dan avrdude:
avrdude -p t2313 -c avrisp -P COM3 -b 19200
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.07s
avrdude: Device signature = 0x1e910a
avrdude: safemode: Fuses OK
avrdude done. Thank you.
In de Arduino IDE werkt het ook. Al moet ik (ook met deze programmer) zo nu en dan de USB kabel in/uit pluggen als er een vage foutmelding langskomt.
woensdag 11 december 2013
Losse attiny2313 op breadbord als arduino.
Hoewel het niet veel voorstelt, is het voor mij toch weer een succesmomentje: Een attiny2313 op een breadbord die een Arduino sketch (programma) uitvoert, in dit geval "Fade". Ik had het al eerder voor elkaar op een experimenteer bordje met een AVR programmer (USBtinyISP) aangesloten, maar nu ook helemaal "los".
Ik had nog een extra attiny2313 liggen en die kan mooi ingezet worden om te combineren met een H-brug om een robotje o.i.d. in elkaar te knutselen. Ik heb ooit (1992?) geprobeerd om een "Dizzy" te bouwen, uit artikelen in de KIJK van Steven Bolt. Toen was het allemaal te ingewikkeld (en te duur) voor mij als tiener. Nu moet het er dan ooit maar van komen. Een robotje op twee wieltjes, met wat sensoren moet lukken. Gelukkig is een eenvoudige microcontroller nu veel toegangkelijker en hoef ik het niet met alleen TTL logica te doen.
De attiny2313 is afkomstig uit een Adafruit Minipov3 kitje, dat ik ooit bouwde maar verder niet gebruik. De chip is (gisteren) geprogrammeerd terwijl deze in mijn attiny bordje zat en nu in een leeg breadbord gestoken. Met alleen de Vcc, GND en een LED aangesloten draait het programma alweer en wordt de LED via PWM langzaam aan en uitgezet (gedimd).
Dit is de hele schakeling:
Voordeel van dit Arduino alternatief is de prijs. Een attiny kost 2 euro o.i.d. en die kan dus "permanent" in een robot verdwijnen. Terwijl mijn China-namaak Arduino UNO toch al 11 euro kostte excl BTW.
Wat nog ontbreekt om het een echte "Arduino" te maken is een seriële verbinding om sketches te kunnen uploaden en dan is ook een reset knop / reset circuit nodig. Maar helaas heb ik (nog) geen USB seriele kabel. Dus voorlopig sluit ik de usbtinyISP programmer nog gewoon aan.
Volgende stappen:
- Programmer aansluiten
- L293D H-brug aansluiten
- motoren aansluiten en testen
dinsdag 10 december 2013
boards.txt voor attiny2313 @8Mhz
Dit is een werkende "boards.txt" voor een attiny2313 die op 8Mhz draait (interne oscillator). In de Arduino IDE (arduino-tiny) core. De fuses kloppen. (Uitgelezen met avr-dude). Blink draait op de juiste snelheid:
###########################################################################
attiny2313at8.name=ATtiny2313 @ 8 MHz (int osc)
# The following do NOT work...
# attiny2313at8.upload.using=avrispv2
# attiny2313at8.upload.using=Pololu USB AVR Programmer
# The following DO work (pick one)...
attiny2313at8.upload.using=arduino:arduinoisp
# attiny2313at8.upload.protocol=avrispv2
# attiny2313at8.upload.using=pololu
attiny2313at8.upload.maximum_size=2048
# Default clock (slowly rising power; long delay to clock; 8 MHz internal)
# Int. RC Osc. 8 MHz; Start-up time: 14 CK + 65 ms; [CKSEL=0100 SUT=10]; default value
# Brown-out detection disabled; [BODLEVEL=111]
# Serial program downloading (SPI) enabled; [SPIEN=0]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
attiny2313at8.bootloader.low_fuses=0xe4
attiny2313at8.bootloader.high_fuses=0x9F
attiny2313at8.bootloader.extended_fuses=0xFF
attiny2313at8.bootloader.path=empty
attiny2313at8.bootloader.file=empty2313at8.hex
attiny2313at8.build.mcu=attiny2313
attiny2313at8.build.f_cpu=8000000L
attiny2313at8.build.core=tiny
###########################################################################
###########################################################################
attiny2313at8.name=ATtiny2313 @ 8 MHz (int osc)
# The following do NOT work...
# attiny2313at8.upload.using=avrispv2
# attiny2313at8.upload.using=Pololu USB AVR Programmer
# The following DO work (pick one)...
attiny2313at8.upload.using=arduino:arduinoisp
# attiny2313at8.upload.protocol=avrispv2
# attiny2313at8.upload.using=pololu
attiny2313at8.upload.maximum_size=2048
# Default clock (slowly rising power; long delay to clock; 8 MHz internal)
# Int. RC Osc. 8 MHz; Start-up time: 14 CK + 65 ms; [CKSEL=0100 SUT=10]; default value
# Brown-out detection disabled; [BODLEVEL=111]
# Serial program downloading (SPI) enabled; [SPIEN=0]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
attiny2313at8.bootloader.low_fuses=0xe4
attiny2313at8.bootloader.high_fuses=0x9F
attiny2313at8.bootloader.extended_fuses=0xFF
attiny2313at8.bootloader.path=empty
attiny2313at8.bootloader.file=empty2313at8.hex
attiny2313at8.build.mcu=attiny2313
attiny2313at8.build.f_cpu=8000000L
attiny2313at8.build.core=tiny
###########################################################################
Arduino IR zender en ontvanger
Vandaag een pakketje uit China met mijn Arduino UNO in de bus gekregen.
Na de standaard "Blink" en "Fade" probeersels heb ik een IR diode uit een afstandsbediening uit de rommeldoos gesoldeerd. Door middel van de camera van mijn telefoon kun je die zichtbaar maken, conclusie: De IR LED doet het nog.
(IR Led samen met het "Fade" Arduino voorbeeld)
Daarna een IR ontvanger (TSOP1738 of kloon) uit een XBOX1 DVD afstandsbediening ontvanger gesoldeerd. Ook deze komt uit de rommeldoos; De bijbehorende afstandbediening is allang door mijn kinderen vakkundig gesloopt. 3 draadjes eraan gesoldeerd en in het breadbord.
Vervolgens de IRremote library gebruikt, met dit voorbeeld van Sparkfun: https://learn.sparkfun.com/tutorials/ir-communication/all#receiving-ir-example
(In het breadbord is de TSOP IR ontvanger te zien hoog op 3 lange groende draden. Rechts de Arduino UNO met protoshield). De witte LED dicht op het breadbord is de IR (zend) LED.
Met deze eenvoudig schakeling (niet meer dan de TSOP1738 aangesloten op pin 11 van de arduino) kan ik de signalen van mijn TV ab feilloos ontvangen. (Die zijn zichtbaar op de serialconsole van de Arduino IDE). Best grappig om codes voorbij te zien komen als ik op een knopje druk op de afstandsbediening. Ook is duidelijk te zien dat het "ON/OFF" knopje nogal eens happert. Dat is ook bij het bedienen van de TV te merken.
En natuurlijk de pinout van deze TSOP1738-kloon. Dit blog is immers ook een geheugensteun en naslag voor mijzelf:
Al met al weinig werk, maar een flinke stap richting een eigen LEGO USB IR Tower die het doet onder win7 x64.
(Maar daarvoor is eerst een attiny2313 nodig die "USB" doet, dat is dus de volgende stap)
Na de standaard "Blink" en "Fade" probeersels heb ik een IR diode uit een afstandsbediening uit de rommeldoos gesoldeerd. Door middel van de camera van mijn telefoon kun je die zichtbaar maken, conclusie: De IR LED doet het nog.
(IR Led samen met het "Fade" Arduino voorbeeld)
Daarna een IR ontvanger (TSOP1738 of kloon) uit een XBOX1 DVD afstandsbediening ontvanger gesoldeerd. Ook deze komt uit de rommeldoos; De bijbehorende afstandbediening is allang door mijn kinderen vakkundig gesloopt. 3 draadjes eraan gesoldeerd en in het breadbord.
Vervolgens de IRremote library gebruikt, met dit voorbeeld van Sparkfun: https://learn.sparkfun.com/tutorials/ir-communication/all#receiving-ir-example
(In het breadbord is de TSOP IR ontvanger te zien hoog op 3 lange groende draden. Rechts de Arduino UNO met protoshield). De witte LED dicht op het breadbord is de IR (zend) LED.
Met deze eenvoudig schakeling (niet meer dan de TSOP1738 aangesloten op pin 11 van de arduino) kan ik de signalen van mijn TV ab feilloos ontvangen. (Die zijn zichtbaar op de serialconsole van de Arduino IDE). Best grappig om codes voorbij te zien komen als ik op een knopje druk op de afstandsbediening. Ook is duidelijk te zien dat het "ON/OFF" knopje nogal eens happert. Dat is ook bij het bedienen van de TV te merken.
En natuurlijk de pinout van deze TSOP1738-kloon. Dit blog is immers ook een geheugensteun en naslag voor mijzelf:
Al met al weinig werk, maar een flinke stap richting een eigen LEGO USB IR Tower die het doet onder win7 x64.
(Maar daarvoor is eerst een attiny2313 nodig die "USB" doet, dat is dus de volgende stap)
zondag 8 december 2013
DIY Arduino-kloon op basis van Attiny2313 bordje.
Doel: Arduino kloon maken van spulletjes die rondslingeren.
Ergens in 2006/2007 heb ik een testbordje gebouwd op basis van een attiny2313. Dit is een goedkopere kleinere versie van de atmega die in de Arduino zit. Het bordje is een zogenaamde AVR2313MOD1 "trainingsbordje" ontworpen door circuitsonline.net gebruiker elrece. Ik heb ooit een printplaatje gekregen van erelce en gebouwd. Eerlijk gezegd ben ik toen niet veel verder gekomen dan een paar knipperende LEDs.
Het bordje is een attiny met een rijtje LEDs, 3 drukschakelaars e.d. inclusief een 10pins ISP aansluiting. Als programmer gebruik ik de usbtinyisp die ik destijds bij adafruit heb gekocht. Gelukkig zijn er win7 x64 drivers te downloaden, zodat deze programmer nog steeds bruikbaar is.
Ik wil de attiny2313 (en attiny85) gebruiken in combinatie met de Arduino omgeving. Daarvoor is een Arduino bootloader nodig. Ik gebruik arduino-tiny. Na installeren (volgens deze aanwijzingen ; uitpakken in \arduino\hardware\ ) moet het bestand "boards.txt" in \arduino\hardware\tiny\ aangemaakt worden op basis van "prospective-boards.txt".
Ik gebruik dit stuk uit boards.txt, met een attiny2313 op internal osc (8MHz/div 8 = 1Mhz).
###########################################################################
attiny2313at1.name=ATtiny2313 @ 1 MHz AVR2313mod1 int osc
# The following do NOT work...
# attiny2313at1.upload.using=avrispv2
# attiny2313at1.upload.using=Pololu USB AVR Programmer
# The following DO work (pick one)...
#attiny2313at1.upload.using=arduino:arduinoisp
attiny2313at1.upload.protocol=USBtinyISP
# attiny2313at1.upload.using=pololu
attiny2313at1.upload.maximum_size=2048
# Default clock (slowly rising power; long delay to clock; 8 MHz internal; divide clock by 8)
# Int. RC Osc. 8 MHz; Start-up time: 14 CK + 65 ms; [CKSEL=0100 SUT=10]; default value
# Divide clock by 8 internally; [CKDIV8=0]
# Brown-out detection disabled; [BODLEVEL=111]
# Serial program downloading (SPI) enabled; [SPIEN=0]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
attiny2313at1.bootloader.low_fuses=0x6C
attiny2313at1.bootloader.high_fuses=0x9F
attiny2313at1.bootloader.extended_fuses=0xFF
attiny2313at1.bootloader.path=empty
attiny2313at1.bootloader.file=empty2313at1.hex
attiny2313at1.build.mcu=attiny2313
attiny2313at1.build.f_cpu=1000000L
attiny2313at1.build.core=tiny
###########################################################################
De fuses van de attiny2313 staan op: lfuse = 0x64 hfuse=0x9f efuse=0xff
instellen via:
avrdude -c usbtiny -p t2313 -U lfuse:w:0x6c:m -U hfuse:w:0x9f:m -U efuse:w:0xff:m
Ergens in 2006/2007 heb ik een testbordje gebouwd op basis van een attiny2313. Dit is een goedkopere kleinere versie van de atmega die in de Arduino zit. Het bordje is een zogenaamde AVR2313MOD1 "trainingsbordje" ontworpen door circuitsonline.net gebruiker elrece. Ik heb ooit een printplaatje gekregen van erelce en gebouwd. Eerlijk gezegd ben ik toen niet veel verder gekomen dan een paar knipperende LEDs.
Het bordje is een attiny met een rijtje LEDs, 3 drukschakelaars e.d. inclusief een 10pins ISP aansluiting. Als programmer gebruik ik de usbtinyisp die ik destijds bij adafruit heb gekocht. Gelukkig zijn er win7 x64 drivers te downloaden, zodat deze programmer nog steeds bruikbaar is.
Ik wil de attiny2313 (en attiny85) gebruiken in combinatie met de Arduino omgeving. Daarvoor is een Arduino bootloader nodig. Ik gebruik arduino-tiny. Na installeren (volgens deze aanwijzingen ; uitpakken in \arduino\hardware\ ) moet het bestand "boards.txt" in \arduino\hardware\tiny\ aangemaakt worden op basis van "prospective-boards.txt".
Ik gebruik dit stuk uit boards.txt, met een attiny2313 op internal osc (8MHz/div 8 = 1Mhz).
###########################################################################
attiny2313at1.name=ATtiny2313 @ 1 MHz AVR2313mod1 int osc
# The following do NOT work...
# attiny2313at1.upload.using=avrispv2
# attiny2313at1.upload.using=Pololu USB AVR Programmer
# The following DO work (pick one)...
#attiny2313at1.upload.using=arduino:arduinoisp
attiny2313at1.upload.protocol=USBtinyISP
# attiny2313at1.upload.using=pololu
attiny2313at1.upload.maximum_size=2048
# Default clock (slowly rising power; long delay to clock; 8 MHz internal; divide clock by 8)
# Int. RC Osc. 8 MHz; Start-up time: 14 CK + 65 ms; [CKSEL=0100 SUT=10]; default value
# Divide clock by 8 internally; [CKDIV8=0]
# Brown-out detection disabled; [BODLEVEL=111]
# Serial program downloading (SPI) enabled; [SPIEN=0]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
attiny2313at1.bootloader.low_fuses=0x6C
attiny2313at1.bootloader.high_fuses=0x9F
attiny2313at1.bootloader.extended_fuses=0xFF
attiny2313at1.bootloader.path=empty
attiny2313at1.bootloader.file=empty2313at1.hex
attiny2313at1.build.mcu=attiny2313
attiny2313at1.build.f_cpu=1000000L
attiny2313at1.build.core=tiny
###########################################################################
De fuses van de attiny2313 staan op: lfuse = 0x64 hfuse=0x9f efuse=0xff
instellen via:
avrdude -c usbtiny -p t2313 -U lfuse:w:0x6c:m -U hfuse:w:0x9f:m -U efuse:w:0xff:m
Dan board kiezen in Arduino IDE en bootloader branden. EDIT: De arduino IDE blijkt ook de fuses in te stellen bij het branden van de bootloader (zie bovenstaande boards.txt). Daarom wordt de lowfuse van 64 naar 6c verandert. (van internal naar external oscillator). Zucht! Daar gaat/ging het dus mis met mijn eerder breadbord dingetjes. EDIT: lowfuse 0x64 = 1Mhz (8mhz int osc div 8) en 0xe4 is 8Mhz).
Fuses uitlezen:
avrdude -p t2313 -c avrisp -P COM3 -b 19200 -U lfuse:r:-:h
TODO: Controleren of het ook werkt met de interne oscillator (zodat het werkt op breadbord).
Fuses uitlezen:
avrdude -p t2313 -c avrisp -P COM3 -b 19200 -U lfuse:r:-:h
TODO: Controleren of het ook werkt met de interne oscillator (zodat het werkt op breadbord).
Daarna de standaard "hello world!" Arduino sketch gekozen. LED op pin 6 gekozen en naar het bordje gestuurd en "JA!" een knipperende LED.
Het AVR2313MOD1 bordje met de usbtinyisp programmer (en voeding).
(Eerlijk gezegd ging het niet zo vloeiend: Eerst op een breadbord geprobeerd, maar geen attiny2313 gedetecteerd. Toen het avr2313mod1 bordje voor de dag gehaald en geprogrammeerd met avrdude. Dat werkte tenminste. Daarna de hele Arduino zooi geinstalleerd, behoorlijk zitten prutsen met de fuses, boards.txt e.d. en uiteindelijk een bootloader en sketch gebrand. Maar die leek het niet te doen. Uiteindelijk bleek ik een verkeerde uitgang in Blink te hebben gekozen. Dwz een uitgang waar geen LED aanzit... doh!)
Dit plaatje heeft uiteindelijk veel geholpen: (En dit blog is er juist voor om dit soort dingen te kunnen terugvinden).
(bron)
Dit plaatje heeft uiteindelijk veel geholpen: (En dit blog is er juist voor om dit soort dingen te kunnen terugvinden).
(bron)
Enfin. Nu dus een werkende Arduino omgeving.
Nu eerst een seriële verbinding aan de gang krijgen voor de Arduino bootloader. Daarvoor heb ik een max232 nodig (Moet ik ergens hebben) om een USB seriele kabel te kunnen gebruiken. Een FTDI of kloon kopen van ebay duurt te lang. Wellicht kan ik usbtiny aan de gang krijgen om een USB verbinding over de UART op te zetten.
Wordt vervolgd...
Abonneren op:
Posts (Atom)


































