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/




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:

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.

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

###########################################################################

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)

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

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).

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)

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...

dinsdag 3 december 2013

Lego Mindstorms RCX robot

Vandaag de Lego Mindstorms RCX doos uit mijn lokaal weer eens opengedaan. Die lag al een jaar of vijf stof te happen. Op deze dinsdagavond, die wordt ingeklemd tussen een ouderavond op zowel maandag- als woensdagavond, heb ik zin om "gedachteloos" te nerden. Beetje lego. Beetje programmeren.

Doel: Uitzoeken of LEGO mindstorms RCX (=oud, =goedkoop op marktplaats) bruikbaar is voor leerlingen.

De eerste de beste robot "uit het boekje" in elkaar gezet.


Batterijen in de gele RCX brick en gaan. Er zitten wat onbekende programma's in. Het komt er in ieder geval op neer dat de robot rechtuit kan rijden:

Ondertussen de software geinstalleerd. (Voor mezelf: Een .nrg (iso) image van de CD staat op mijn USB harde schijf). Omdat de software per se "QuickTime" wil installeren valt het allemaal niet mee.

http://bricxcc.sourceforge.net/ is redder in nood. Hierin is de RCX brick te programmeren in NQC (not quite C).

Maar helaas: De USB IR tower (een infrarood modem) wordt niet ondersteunt in win7 x64. Veel googlen levert wel een stapel patches op voor WinXP e.d., maar het werkt alleen in 32bits win7 niet in de 64bits versie.

Een oplossing zou kunnen zijn om WinXP of Linux in een virtual machine te draaien. Maar ik denk dat ik ga proberen om een IR modem te bouwen ;). Wat googlen levert informatie op: http://mattallen37.wordpress.com/2011/04/18/rcx-ftdi-ir-adapter-tower/
De tower is een IR modem. Communicatie via een standaard 38khz draadgolf met aan/uit modulatie. Helaas heb ik geen FTDI oid liggen om bovenstaande na te bouwen, maar:

- IR ontvanger solderen uit kapotte XBOX1 dvd afstandsbediening. (TSOP1938 kloon)
- IR zenddiode solderen uit oude AB.
- Arduino gebruiken om e.e.a. te testen, daarna permanent maken met attiny2313 of attiny85.

Wordt vervolgd...

zondag 1 december 2013

Hello World()

Dit is een blog om mijn knutselprojectjes bij te houden. Als geheugensteun voor mijzelf`en om te delen natuurlijk.