Archiv für den Monat: März 2015

DIY Projekt: Arduino Klon der auf dem ATtiny85 Mikrocontroller basiert

Ich möchte hier ein Entwicklungs-Board das auf dem ATtiny85 Mikrocontroller basiert vorstellen. Das Board soll sehr einfach aufzubauen sein, damit es auch im Schulunterricht aufgebaut werden kann. Die Kosten pro Board sollen nach Möglichkeit unter 5 Euro liegen.
Geplant sind zwei Versionen. Die eine Version basiert auf einer Lochstreifen-Platine. Die andere Version basiert auf einer Platine die gefräst wird.

Das Board (Prototype)

diyBoardV1

Layout

ATTINY_Board-2_Leiterplatte

PINOUT

Alle PINs können als digitale I/O benutzt werden. Zusätzlich stehen folgende Funktionen zur Verfügung:

  • Pin 0: I2C SDA, PWM
  • Pin 1: PWM, (grüne LED)
  • Pin 2: I2C SCK, Analog In
  • Pin 3: Analog In (USB+ für USB Port)
  • Pin 4: PWM, Analog In (USB- für USB Port)
  • Pin 5: Analog In

Bootloader mit Hilfe des Raspberry PIs installieren

Der Raspberry PI bietet mit seinen GPIO PINs eine sehr gute Basis um den Bootloader auf den ATiny85 zu brennen. Natürlich kann auch ISP-Programmiere oder ein Arduino Board benutzt werden.

  • Der SPI-Mode muss beim Raspberry PI aktiviert werden. Das geht über das Setup-Programm des PIs:
  • <br />
    rasp-update<br />
    

  • Die benötigten Programme müssen installiert werden:
  • <br />
    sudo apt-get install bison automake autoconf flex git gcc<br />
    sudo apt-get install gcc-avr binutils-avr avr-libc<br />
    git clone https://github.com/kcuzner/avrdude<br />
    cd avrdude/avrdude<br />
    ./bootstrap<br />
    ./configure<br />
    sudo make install<br />
    

  • Das Paket WiringPi muss heruntergeladen und gebaut werden, um die gpio Befehle zu aktivieren:
  • <br />
    cd ~<br />
    git clone git://git.drogon.net/wiringPi<br />
    cd wiringPi<br />
    ./build<br />
    

  • Jetzt muss der ATiny85 mit den Raspberry PI GPIO verbunden werden.
  • RPIburner

  • Bevor der Bootloader gebrannt wird sollte geprüft werden, dass die Verbindung zum ATiny85 funktioniert. Der GPIO PIN 22 ist mit dem Reset PIN des ATtiny85 verbunden. Um den IC programmieren zu können muss dieser PIN auf low gesetzt werden:
    <br />
    sudo gpio -g mode 22 out<br />
    sudo gpio -g write 22 0<br />
    sudo avrdude -p t85 -P /dev/spidev0.0 -c linuxspi -b 10000<br />
    sudo gpio -g write 22 1<br />
    

    Hier sollte folgende Meldung ausgegeben werden:
  • </p>
    <p>pi@rpi01 ~ $ sudo avrdude -p t85 -P /dev/spidev0.0 -c linuxspi -b 10000</p>
    <p>avrdude: AVR device initialized and ready to accept instructions</p>
    <p>Reading | ################################################## | 100% 0.02s</p>
    <p>avrdude: Device signature = 0x1e930b</p>
    <p>avrdude: safemode: Fuses OK (E:FF, H:DF, L:62)</p>
    <p>avrdude done.  Thank you.<br />
    

  • Bootloader herunterladen: micronucleus-1.06-upgrade.hex.zip und entpacken:
    <br />
    wget http://paperduino.eu/lib/exe/fetch.php?media=micronucleus-1.06-upgrade.hex.zip<br />
    unzip micronucleus-1.06-upgrade.hex.zip<br />
    

    Und anschließend kann der ATiny85 gebrannt werden:
  • <br />
    sudo gpio -g mode 22 out<br />
    sudo gpio -g write 22 0<br />
    sudo avrdude -P /dev/spidev0.0 -c linuxspi -b 10000 -p t85 -U flash:w:micronucleus-1.06-upgrade.hex -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xfe:m<br />
    sudo gpio -g write 22 1<br />
    

    [js_markieren]
    Wenn alles richtig funktioniert sollte die Ausgabe wie folgt lauten:

    <br />
    pi@rpi01 ~/wiringPi $ sudo avrdude -P /dev/spidev0.0 -c linuxspi -b 10000 -p t85 -U flash:w:micronucleus-1.06-upgrade.hex -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xfe:m</p>
    <p>avrdude: AVR device initialized and ready to accept instructions</p>
    <p>Reading | ################################################## | 100% 0.02s</p>
    <p>avrdude: Device signature = 0x1e930b<br />
    avrdude: NOTE: &quot;flash&quot; memory has been specified, an erase cycle will be performed<br />
    To disable this feature, specify the -D option.<br />
    avrdude: erasing chip<br />
    avrdude: reading input file &quot;micronucleus-1.06-upgrade.hex&quot;<br />
    avrdude: input file micronucleus-1.06-upgrade.hex auto detected as Intel Hex<br />
    avrdude: writing flash (3018 bytes):</p>
    <p>Writing | ###########################################        | 86% 12.62s</p>
    <p>

Der erste Sketch

Bevor der erste Sketch geladen werden kann, muss unter Ubuntu 14.04 noch ein paar Einstellungen vorgenommen werden:

  1. Installation der notwendigen Packete
  2. <br />
    sudo apt-get install libusb-0.1-4:i386 usbutils<br />
    

  3. Dann muss noch eine speziell präparierte Arduino IDE heruntergeladen werden:
  4. <br />
    wget https://github.com/digistump/DigistumpArduino/releases/download/v1.5.8C/DigistumpIDE1.5.8C-linux64.tar.gz<br />
    
  5. Jetzt kann der folgende Beispielsketch erstellt werden.
    [js_markieren]

    Das Board darf nicht mit dem PC verbinden sein, wenn ein neuer Sketch geladen werden soll! Während des Hochladens wird man aufgefordert das Board mit dem PC zu verbinden. Es sollte innerhalb von 60 Sekunden automatisch erkannt werden. Wenn alles funktioniert hat, sollte jetzt die Led an PIN 1 blinken.

Literatur