Donnerstag, 21. November 2013

Handy -> Bluetooth -> RGB-LED [Teil 2: Schaltung]

Nachdem im letzten Artikel das Protokoll für die Übertragung der Farbwerte definiert wurde, erstellen wir jetzt die Hardware. Da es sich hier um eine nicht sonderlich komplexe Mikrocontroller Lösung handelt, können wir die erste Version der Schaltung auf einem Steckbrett aufbauen und somit evaluieren. Um die Funktion vollständig zu testen, werden die drei Module (Controller, Bluetooth-Modul und RGB-LED) auf dem Steckbrett miteinander verbunden. 
Schaltplan des ATtiny2313A und Bluetooth-Modul mit RGB-LED
Schaltplan der LED Steuerung

Der Schaltplan der Evaluationsschaltung zeigt, wie die einzelnen Komponenten verbunden werden. Wenn die Hardware aufgebaut ist, kann mit der Erstellung der Firmware für die Schaltung begonnen werden. Eventuelle Änderungen der Schaltung können auf dem Steckbrett sehr einfach durchgeführt werden. 
Wie im Schaltplan zu sehen benötigt der Controller einen Quarz X1. Dieser stellt sicher, dass der Takt, der auch für das Timing der UART-Schnittstelle zuständig ist, stabil genug ist. Um den Controller zu programmieren benötigt man den ISP-Connector CON1. Sollte die Schaltung häufiger aufgebaut werden, kann dieser Stecker eventuell weggelassen und ein programmierter Controller direkt verbaut werden. Die TX und RX Leitungen des Controllers werden an die Komplementären Eingänge des Bluetooth Moduls geführt. Die Unterbrechungen der Leitung werden deshalb benötigt, da der Controller mit +5V programmiert wird, das Bluetooth Modul aber mit 3,3V betrieben wird. So kann das Modul beim Programmieren vom Controller getrennt werden. Der Jumper JP1 dient ebenfalls zur Auswahl der 3,3V beim Betrieb und 5V zur Programmierung. Die drei Pins für die Steuerung der einzelnen Farben in der LED sind willkürlich gewählt und können bei bedarf (Layouten einer Platine) noch geändert werden. Der nächste Schritt wird nun die Programmierung des Controllers sein.

[WIP] ASURO mit korruptem Speicher?

Seit letztem mal schlägt das Programmieren des Mikrocontrollers auf dem ASURO bei Page 39 fehl. Die Page liefert beim Auslesen eines zuvor hineingeschriebenen Wertes einen anderen Wert zurück. Die Folge davon ist, dass ein Programm, welches mit dem Bootloader auf den Chip kopiert wird nicht korrekt übertragen wird. Nach einigen Versuchen und etwas googeln habe ich versucht eine andere Programmdatei zu übertragene und das hat ohne Probleme funktioniert. Der ASURO hat also Probleme beim Übertragen von Programmdaten, wenn diese eine Bestimmte Zeichenkette beinhalten. genauer gesagt, viele 0x00 Bytes hintereinander. Zum Glück funktioniert der Chip mit kleinen Änderungen im Quelltext wieder problemlos. Als nächstes werde ich mir die Eingangssignale der IR-Transistoren anschauen und die Signale des ADC auswerten um die Raddrehungen zählen zu können.

Nachtrag: Der Fehler mit den korrupten Pages ist wieder aufgetreten und sogar unabhängig vom verwendeten Chip und der Page. Ein Programm mit 40 Pages bricht bei Page 39 ab, eins mit 12 bei Page 11. Es ist zum Haare raufen.

Montag, 18. November 2013

Wifi Router als Client verwenden

Ich habe für ein zukünftiges Projekt vor, die Kommunikation über WLAN laufen zu lassen. Dazu benötige ich ein Modul, das mir WLAN so umsetzt, dass ich entweder verschiedene GPIOs steuern kann, oder Daten an einen einen UART Port weiter gibt. Ich habe in meiner Sammlung noch eine Fonera der ersten Generation, also ein Linuxboard mit WiFi, Ethernet, GPIOs und UART. Die Fonera muss zu diesem Unterfangen allerdings eine neue Firmware bekommen. Die einfachste Methode das zu tun ist, den Bootloader über das serielle Interface anzusprechen, wie das in diesem Artikel beschrieben ist.
Fonera ohne Gehäuse
Der nächste Schritt ist es die Konfiguration von OpenWRT zu ändern. Dazu können wir entweder eine Verbindung über SSH aufbauen, oder weiter in der seriellen Konsole bleiben. Als erstes benötigt man das wpa_supplicant Paket um zu verschlüsselten Netzwerken eine Verbindung aufbauen zu können, dass sich mit opkg installieren lassen.

opkg update
opkg install wpa-supplicant

 Der verfügbare Editor ist Vi und zu bearbeiten sind die Dateien /etc/config/network

config 'interface' 'loopback'
 option 'ifname' 'lo'
 option 'proto' 'static'
 option 'ipaddr' '127.0.0.1'
 option 'netmask' '255.0.0.0'

config 'interface' 'lan'
 option 'proto' 'dhcp'

config 'interface' 'wan'
 option 'ifname' ' '
 option 'proto' 'none'

und /etc/config/wireless 
config 'wifi-device' 'wifi0'
 option 'type' 'atheros'
 option 'channel' 'auto'
 option 'disabled' '0'
 
config 'wifi-iface'
 option 'device' 'wifi0'
 option 'network' 'lan'
 option 'mode' 'sta'
 option 'ssid' 'WLAN-SSID'
 option 'encryption' 'psk2'
 option 'key' 'WLANPASSWORT'

Nachdem die Dateien geändert wurden kann mit dem Befehl wifi up das Netzwerksystem gestartet werden. Zu beachten ist, das in dieser Konfiguration der Ethernet Port deaktiviert ist. Der nächste Schritt wird dann sein zu bestimmen, ob die GPIOs der Fonera ausreichen um die gewünschten Funktionen ausführen zu können.