Archiv der Kategorie: Allgemein

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

DIY — Drucker per Ethernet Ein- bzw. Ausschalten

Es ist schon praktisch, wenn man einen Drucker, der im Keller steht per WebSeite ein- bzw. ausschalten kann. In diesem Beitrag möchte ich mit Hilfe des Arduino Uno, dem EtherNet-Shield und einem 5Volt-Schaltrelais einen möglichen Weg beschreiben. Leider werden Drucker extern mit 230V betrieben, deshalb ist es nicht erlaubt selbständig ein Schaltrelais in den Stromkreis einzubauen. Hier soll erklärt werden, wie man ein Relais mit Hilfe einer WebSeite zum klicken bringt, mehr nicht. Es werden/sind keine Veränderung an der 230V-Elektroinstallationen vorgenommen!.

Da ein Arduino Uno nur begrenzt Speicherplatz hat bietet es sich an das CSS-File von einem externen WebServer einzubinden. Das hat den Vorteil, dass das Aussehen der Seite verändert werden kann, ohne dass im Arduino-Sketch editieret werden muss. (Zumal die Eingabe von HTML-Code für den Arduino sehr umständlich ist und dadurch der Sketch schon sehr länglich wird). Auf die selbe Weise kann natürlich auch JavaScript-Code mit eingebunden werden, um die Verarbeitung von Events, die ein Mensch auslöst zu verarbeiten und an den Arduino zu übergeben. So könnte z.B. optisch der Status von verschiedenen Geräten dargestellt werden. Aber das würde den Rahmen dieses BlogArtikels sprengen.

  1. Die Aufgaben des Arduino sind folgende:
    • Steuerung der Stromversorgung für den Drucker
    • Bereitstellen der Internetseite
  2. Die Aufgaben des externen WebServers sind folgende:
    • Bereitstellen des CSS-Files
    • (Optional) Bereitstellen von JavaScript


DIY — Drucker per Ethernet Ein- bzw. Ausschalten weiterlesen

Raspberry Pi: Imaging System für den Einsatz in der Schule

Hintergrund

Um den RPi in der Schule effektive einzusetzen ist es nötig das Installieren
eines Betriebssystems auf der SD-Karte zu automatisieren. Leider ist PXE-Boot
unter ARM-Architektur nicht möglich. Somit entfällt ein System wie Linbo. Aber es gibt noch andere Möglichkeiten. Eine davon möchte ich hier beschreiben: BerryBoot

Berryboot ist ein einfache Boot-Loader, bei dem am Bildschirm eine Wahl aus verschiedenen Linux-Distribution getroffen werden kann. Diese Distro wird kann von einer Quelle geladen und installiert. Es besteht auch die Möglichkeit, die Betriebssystemdateien auf einer externen USB-Festplatte oder USB-Stick statt auf der SD-Karte selbst zu speichern.

Raspberry Pi: Imaging System für den Einsatz in der Schule weiterlesen

NodeJS — Installation und IDE’s

Installation von Node.js (aktuelle Version)

  • Mac OSX: Es gibt zwei Wege, entweder von der Nodejs.org den Mac OS X Installer (.pkg) herunterladen und installieren, oder mit Hilfe von Homebrew. Homebrew lädt die aktuellen Quelldateien herunter und kompiliert sie. Um Homebrew zu installieren gibt es hier eine gute Anleitung: Installing Homebrew on OS X Mountain Lion 10.8. Wenn man Homebrew schon installiert hat, sind folgende Befehle in der Terminal-App nötig:

    brew update
    brew doctor
    brew install node

  • Ubuntu 12.04: Die deb-Pakete für die aktuelle Version sind im Chris Lea’s Repo hinterlegt. Um sie zu installieren sind folgende Befehle nötig:

    apt-get install python-software-properties
    apt-add-repository ppa:chris-lea/node.js
    apt-get update && apt-get install nodejs npm
  • Windows: Hier gibt es ebenfalls von der Node-Homepage verschiedene Pakte zum installieren (32bit/64bit msi/exe). Welches der Pakete das man wählt, hängt natürlich von der verwendeten Version von Windows ab.

Die Installation mit Homebrew (Mac OSX) oder mit apt (Ubuntu) haben den Vorteil, dass sehr einfach die installierten Programme aktuelle gehalten werden können:

  • Mac OSX:

    brew update
    brew outdated
    brew upgrade
  • Ubuntu 12.04:

  • sudo apt-get update
    sudo apt-get upgrade

Natürlich kann unter Windows die Node-Installation auch aktuell gehalten werden, aber man muss dies von Hand machen, und wenn man viel Software installiert hat geht dafür viel Zeit drauf in der man nicht produktiv arbeiten kann.

IDE’s für node.js

Nide — Beautiful IDE für NodeJS

Nide ist eine web-basierte IDE für NodeJS, die bewusst sehr Einfach gehalten ist und einfach zu benutzen ist. Um Nide zu installieren bracht es nicht viel:

sudo npm install -g nide

Dabei ist npm der NodePackageManager und die Option -g bedeutet, dass Nide systemweit installiert wird. Um Nide in einem neuen ProjektOrdner zu initialisieren ist folgender Befehl notwendig:

nide init

Dadurch wird der Order .nide angelegt und die WebIDE auf Port 8123 geöffnet.

open http://localhost:8123

Öffnet einen Browser-Tap mit der Nide-WebIDE.

Cloud9 — Lokale Installation

Cloud9 IDE ist ein Open-Source-Web-basierte cloud integrierte Entwicklungsumgebung, die mehrere Programmiersprachen unterstützt, wobei der Schwerpunkt auf den Web Sprachen (insbesondere JavaScript und Node.js) liegt.
Als Besonderheit besitzt Cloud9 die Möglichkeit eine Vorschau der erstellten Seite darzustellen.
Um Cloud9 lokal zu installieren sind unter Ubuntu und Mac OSX folgende Befehle nötigt:

git clone https://github.com/ajaxorg/cloud9.git
cd cloud9
npm install

Wichtig ist folgende Abhängigkeiten erfüllt sind:

  • NodeJS >= 0.6.16
  • NPM >= 1.1.16
  • libxml2-dev

Um Cloud9 zu starten muss im dem installations Verzeichniss folgender Befehl
ausgeführt werden:

bin/cloud9.sh -w ~/git/myproject
open http://localhost:3131

dabei ist die Option -w dazu da den jeweiligen Projekt-Ordner zu benutzen. Anschließend kann die WebIDE unter der URL http://localhost:3131 geöffnet werden.

Quellen:

Raspberry Pi: Diverses

Display eines RaspberryPi mit Hilfe von vnc exportieren

Auf dem Raspberry Pi müssen folgende Schritte vollzogen werden:

  1. tight-vnc server installieren
  2. pi@raspberrypi ~ $ apt-get install tightvncserver
    
  3. vncserver starten
  4. pi@raspberrypi ~ $ vncserver :1 -geometry 1280x800 -depth 16 -pixelformat rgb565
    

Auf dem Client-PC (MacBook 2009):

  • Im Finder im Menü unter Gehe Zu den Eintrag mit Server verbinden wählen, dann muss die IP-Adresse
    des RaspberryPi mit Port 5901 eintragen werden und auf Verbinden klicken.

Im Vollbildmodus sieht das exportierte Display dann so aus:

Möchte man den Export des Display stoppen, so muss auf dem RaspberryPi der Befehl eingegeben werden:

pi@raspberrypi ~ $ vncserver -kill :1