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.

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.

Handy -> Bluetooth -> RGB-LED [Teil 1: Protokoll]

Die Vernetzung von Haushaltsgegenständen ist heutzutage nicht mehr weg zu denken. Das so genannte Internet der Dinge wird in den nächsten Jahren immer mehr Geräte miteinander vernetzen und untereinander kommunizieren lassen. Ein kleiner Teil davon wird die Wohnraumbeleuchtung sein. RGB-LEDs sind mittlerweile günstig auf dem Markt erhältlich und werden konventionelle Lampen ablösen. Dieser Artikel beschreibt Überlegungen für die Steuerung einer RGB-LED über ein serielles Protokoll.

Für dieses Projekt wird eine RGB-LED und der Mikrocontroller ATtiny2313A verwendet. Das Bluetooth Modul HC-05 bildet die Schnittstelle zwischen Beleuchtungseinheit und Steuerungssoftware auf Andorid Basis.

Um die Übertragung von Helligkeitswerten mit möglichst wenig Aufwand zu realisieren, wird ein Protokoll erstellt, dass aus einem 4 Byte großem Block besteht. Der Block beginnt mit einem Null Byte (0x00), darauf folgen die Helligkeitswerte für Rot, Grün und Blau. Das Nullbyte dient zur Synchronisation. Die sonstigen Bytes dienen zum Übertragen von Kommandos. Somit ist das Protokoll am Ende bei Bedarf erweiterbar, da erst nach der Synchronisation wieder mit den Farbwerten gerechnet wird.

Telegramm zur Steuerung der Lampe

Die Sonstigen Bytes können für Steuerbefehle verwendet werden. Um erneut eine Farbe zu übertragen muss das Byte 0x00 übertragen werden und danach die Bytes für Rot, Grün und Blau. So lässt sich zum Beispiel der Status der Lampe mit dem Code 0x01 abfragen, der aktuelle Batteriezustand mit 0x02 und so weiter. Die Befehle hier sind erst einmal nur als Beispiel gedacht, um die Grundfunktionen zu implementieren.

Steuerbefehle

Als nächstes wird der Aufbau der Hardware folgen.