Posts mit dem Label arduino werden angezeigt. Alle Posts anzeigen
Posts mit dem Label arduino werden angezeigt. Alle Posts anzeigen

21.12.2015

theMatrix - ESP8266 LED-Matrix mit WLAN

Ziel

Eine LED-Matrix-Anzeige, die mit dem Browser per WLAN angesteuert werden kann. Es soll Laufschrift angezeigt werden. Das ganze soll möglich preisgünstig sein und man sollte es ohne Löten aufbauen können. Möglichst einfache Konfiguration wäre auch noch prima. Und das Gerät sollte dem Benutzer auch noch die URL zeigen, unter der es im WLAN erreichbar ist. Also so was:


Was passiert im Video?


Die ESP8266-LED-Matrix
  1. wird eingeschaltet
  2. meldet sich im WLAN an
  3. zeigt die eigene IP-Adresse
  4. wird mit einem Text beschickt
  5. der Text scrollt auf der Matrix

Was brauchen wir, was kostet das?

  • ESP-12-WLAN-Modul (ca 3,50€ mit Breakout-Board) 
  • FTDI-232-Interface (temporär zum Programmieren) (ca 2€)
  • 8x8-LED-Matrix mit MAX7219-Chip (ab etwa 2,50€/Stück)
  • Stromversorgung 3,3 Volt (ab 2€)
  • Breadboard + Kabel (ab 3,00€)
Gesamtkosten mit 5 Matrix-Modulen (40x8 LEDs) knapp 25€. Alle Bauteile sind z.B. auf eBay erhältlich. Meist direkt aus China mit Lieferzeiten um die drei Wochen.


Schaltung

Fritzing-Dateien mit der Schaltung gibt es auf GitHub: https://github.com/hermann-kurz/esp8266WifiMatrix/tree/master/fritzing

ESP-12-WiFi-Modul

Für das WiFi-Modul wurde das ESP-12-Modul  (basierend auf dem ESP8266-Chip) genommen. Dieses Modul ist FCC-zugelassen also legal verwendbar, was auf andere Module mit dem ESP8266-Chip nicht zutrifft.

Ein Problem ist, dass die Pins im 2mm-Raster sind, das Breadboard aber ein 2,54mm-Raster hat. Deshalb ist es sinnvoll, gleich ein ESP-12-Modul auf einem Breakout-Board zu kaufen, das die Pins im 2,54mm-Raster bereitstellt - sonst muss man selbst Drähte anlöten, um es im Breadboard zu betreiben. Diese Module sind extrem preiswert (unter 3€) auf eBay erhältlich!

Arduino-Plattform auf ESP-12-Modul

Das Tolle am ESP-12-Modul ist, dass es sich über die Arduino-IDE programmieren lässt! Dazu wird eine angepasste IDE benutzt, die angepasste Libraries an Bord hat. Die Installation ist hier beschrieben. Damit hat man einen WiFi-fähigen Arduino für nur 3€. Einfach unglaublich..

MAX7219-Module

Für die Ansteuerung der 8x8-LED-Matrizen, werden MAX7219-Chips verwendet. Die sind eigentlich für 7-Segment-Anzeigen gedacht, aber jemand hat dafür eine Arduino-Libary zur Ansteuerung von 8x8-LED-Matrizen geschrieben, die wir nutzen. Fertige Module die eine LED-Matrix und das MAX7219-Ansteuer-IC enthalten gibt es ab etwa 2,50€ auf eBay.

Sinnvoll ist es, ferug aufgebaute Module zu kaufen, da bei Bausätzen öfter mal Bauteile fehlen, oder falsch sind.

Die Daten werden zu den MAX7219-Modulen seriell übertragen, sie brauchen nur drei Signale (CS, CLK und DIN) und können kaskadiert, also hintereinander geschaltet werden.

Die drei Anschlüsse werden dann  mit dem ESP8266 so verbunden:

ESP-12 (Name) ESP-12 (Pin) MAX7219-Matrix
GPIO_2 11 CS
GPIO_14 5 CLK
GPIO_13 7 DIN

Die Anzahl der benutzten Module wird dabei im Quellcode angepasst. Ich habe mal fünf Module hibtereinandergeschaltet, das ergibt dann eine 40x8-Matrix.

FTDI-Adapter

Um das ESP-12-Modul zu programmieren, braucht man noch einen USB/Seriell-Adapter mit 3,3V-Pegel. Am besten sucht man nach einem sogenannten FTDI232-Adapter. Es gibt allerdings auch sehr viele Clones, die gleich bezeichnet sind, aber unter Windows andere Treiber brauchen. Unter Linux funktionieren die Clones normalerweise out-of-the-box.

ESP-12 (Name) ESP-12 (Pin) FTDI232-Adapter
TXD 16 RXI
RXD 15 TXO

Wichtig ist noch, dass GND des Adapters mit GND des ESP-12-Moduls verbunden wird.

Programmiermodus 

Zum Programmieren müssen einige Pins des ESP-12-Moduls auf definierte Pegel gelegt werden:
ESP-12 (Name) ESP-12 (Pin) Pegel
CH_PD 3 3,3V
VCC 8 3,3V
GPIO_0 12 GND
GPIO_15 10 GND



GPIO0 (Pin12 des ESP-12) auf Masse (GND) gelegt werden. Nach dem Programmieren muss man das Kabel dann entfernen.

Schaltung/Aufbau auf Breadboard

Insgesamt ergibt sich damit folgende Schaltung, die man mit einem Breadboard zusammenstecken kann.

Fritzing

Die Schaltung ist als Fritzing-File auf GitHub verfügbar:

Software

Für die einzelnen Komponenten gibt es Arduino-Libraries. Die mussten teilweise ein bischen angepasst werden, damit sie verwendet werden konnten. Alle Libraries und das Hauptprogramm habe ich auf GitHub unter einer Open-Source-Lizenz verfügbar gemacht.

MAX7219-Matrix-Library

Wichtigster Bestandteil ist die Library MAX7219-Library von "Squix", die mit einigen Patches aus dessen Blog versehen wurde. Sie ist ebenfalls auf GitHub erhätlich: https://github.com/hermann-kurz/MAX7219LedMatrix

WiFi & Webserver

Für das ESP-8266-Modul ist eine WiFi-Library in der Arduino-Library enthalten, die direkt verwendet wird. Das Vorgehen ist so, dass sich das Modul nach dem Einschalten in das WLAN-Netz verbindet. Hierzu sind SSID und Passwort ins Programm einkompiliert.

Nachdem das ESP-Modul im WLAN-Netz ist, zeigt es seine URL mit IP-Adresse auf der Matrix an. Verbindet sich nun jemand mit dieser URL, sieht er eine Seite, wo er Text eingeben kann. Nach Abschicken wird dann der Text angezeigt, bis ein neuer eingegeben wird.

Eine Fallstrick ist noch der Zeichensatz: im Matrix-Modul ist ein Latin1-Font enthalten, über den Browser kommen aber UTF-8-codierte Zeichen rein, die nach Latin1 konvertiert werden.

Vorgehen

Schaltungsaufbau

Zuerst baut man die Schaltung auf. Ich habe dafür aus ein paar Holzleisten ein kleines Gehäuse gebaut, in dem die Display nach vorne bündig reinpassen. 


Hintenrum sieht das nicht sehr schön aus, funktioniert aber prima. Man sieht links die Stromversorgung, in der Mitte das Breadboard mit dem ESP-12 und im Hintergrund die fünf 8x8-Matrizen, die miteinander verbunden sind.


Spannung beachten

Man darf das ESP-12-Modul auf keinen Fall mit 5 Volt  betreiben, es verträgt nur 3,3 Volt. Beim Spannungsregler kann man das einstellen. Ich betreibe auch die LED-Matrizen mit 3,3 Volt. Die würden auch 5 Volt vertragen, das habe ich aber nicht getestet.

Software besorgen

Als nächstes besorgt man sich die Arduino-IDE für den SP8266 https://github.com/esp8266/Arduino uns installiert sie. Dann muss ggf noch ein Treiber für den FTD232-Adapter installiert werden.

Software kompilieren, SSID/Passwort anpassen

Dann holt man sich den Quellcode von https://github.com/hermann-kurz/esp8266WifiMatrix und installiert in der IDE die Library für die MAX7219-Module: https://github.com/hermann-kurz/MAX7219LedMatrix. Um ins eigene WLAN zu kommen muss im Quellcode SSI und Passwort angegeben werden.

Programmieren (Programmiermodus)

Nun kann man das ESP-12-Modul in den Programmiermodus schalten, indem man GPIO-0 auf Masse legt, das Modul programmieren programmieren, und anschließend den Programmiermodus wieder rausnehmen.

Inbetriebnahme

Das Gerät ist damit fertig. Nach Anlegen der Versorgungsspannung startet die Matrix und bucht sich ins WLAN ein. Anchließend wird die eigene URL angezeigt. Im Browser kann man nun einen Text eingeben, der nach dem Abschicken durchscrollt.

Verbesserungsmöglichkeiten

Setup

Momentan müssen SSID und Passwort in den Arduino-Sketch reinkompiliert werden. Da wäre eine eigene Setup-Routine sehr sinnvoll, mit dem man die WiFi-Matrix über einen Browser konfigurieren könnte.

Font

Der verwendete Font ist etwas "fett". Den könnte man etwas schmaler machen, dann würden auch mehr Zeichen auf einmal auf die Matrix passen.

Links

22.06.2015

Binäruhr mit dem MSP430

Binär-Uhren sind total cool

eigentlich wollte ich schon immer eine bauen. Nun ist es soweit :-)
Binary clock on breadboard

Rechts das Breadboard mit den LEDs: die fünf grünen LEDs oben zeigen die Stunden (die LED ganz links leuchtet),  die sechs gelben LEDs unten die Minuten (drei LEDs leuchten).

Links sieht man das TI Launchpad.

Die Uhr zeigt gerade 16:41 Uhr an:

Stunden: 2^4 = 16
Minuten: 2^5 + 2^3 + 2^0 = 32 + 8 + 1 = 41



Material

Benötigt wird
  • TI Launchpad MSP-EXP430G2
  • MSP430G2452 oder MSP430g2252 (auf neueren Launchpads dabei)
  • 11 LEDs
  • 11 Widerstände
  • Lötzinn
  • Breadboard

TI Launchpad MSP-EXP430G2

Das Launchpad von Texas Instruments ist ein preisgünstiges Board, das mit zwei Microcontroller-Chips aus der MSP430-Familie geliefert wird. Es besitzt einen USB-Anschluß, über den die Chips programmiert werden können. Erhältlich ist es bei den einschlägigen Versandhändlern (z.B. Watterott, Reichelt, Conrad).

Es wird zwar ein Uhrenquarz mitgeliefert, aber er ist noch nicht eingelötet - das muß man selbst nachholen. Da der Quarz sehr klein ist, braucht man dazu eine ruhige Hand, aber es ist machbar. Eine Anleitung dazu gibt es unter http://43oh.com/2010/08/wiring-the-32khz-crystal-to-the-launchpad/

Damit ist der schwierigste Teil schon erledigt. Nächster Schritt ist es, einige Pins des Launchppads über Widerstände (220 Ohm) mit den LEDs zu verbinden. Das geht am schnellsten mit einem Breadboard und dazu passenden Kabeln.

Verdrahtung

LEDs für Minuten


LED-Bit MSP430-Pin
0 P1_5
1 P2_0
2 P1_3
3 P1_2
4 P1_1
5 P1_0

LEDs für Stunden


LED-Bit MSP430-Pin
0 P2_3
1 P2_4
2 P2_5
3 P2_6
4 P2_7

Aussehen

Aussehen tut das ganz bei mir so:

Anschließend muß noch die Software auf den MSP430G2452 aufgespielt werden. Das geht mit der Energia IDE, einer auf den MSP430 angepassten Arduino-IDE. (hier schonmal beschrieben: http://www.µc.net/2015/02/energia-arduino-in-rot-fur-den-msp430.html)

Die Uhr kann dann mit dem Taster "S2" auf dem Launchpad gestellt werden, die Uhr zählt dann schnell hoch. Rechtzeitig stoppen, sonst muss man noch ne extra Runde drehen..

Code

Den Code habe ich auf GitHub abgelegt, er ist hier zu finden.

Es gibt noch einige Verbesserungspotential, z.B. beim Stellen der Uhr - das dauert nachmittags recht lange. Es werden auch ziemlich viele Pins benötigt, weil die Anzeige nicht gemultiplexed ist.

Links



30.03.2015

ESP8266 mit Arduino-IDE direkt programmieren!

Das ESP8266-WiFi-Modul ist nun direkt mit einer angepassten Arduino-IDE programmierbar!

Das Modul ist damit nochmal leichter zugänglich geworden und kann Arduinos in vielen Anwendungsfällen ersetzen. Durch die geringe Größe und den extrem niedrigen Preis sind die ESP8266-Module für Internet-of-things (IoT)-Anwendungen ideal geeignet.

Insbesondere der neue Arduino Yun, der ein eigenes WiFi-Modul (mit embedded Linux) besitzt, aber auch etwa 65€ kostet, hat dadurch Konkurrenz für einfache Anwendungsfälle bekommen.

Ein ESP8266-Modul gibt es ab etwa 4€ zu kaufen! Es hat - im Vergleich zum Arduino Yun - sehr wenig GPIOs, aber oft werden auch nur wenige GPIOs gebraucht. Auch die Software-Unterstützung ist noch nicht vollständig, aber das wird sicher noch kommen.


Die angepasste Arduino-IDE  kann von GitHub heruntergeladen werden


In der angepassten IDE (Version 1.6.1) ist nun ein "Generic ESP8266 board" wählbar



und als “Programmer” kann man  "esptool" auswählen.








Die Programmierung erfolgt über einen USB/seriell-Adapter





Links

07.03.2015

LED-Morse-Thermometer mit MSP430G2231

Die Energia-IDE (ein Arduino-IDE-Derivat mit MSP430-Target, hier besprochen) enthält einige Beispiele - unter anderem ein Thermometer, das die gemessenen Werte seriell ausgibt. Ich habe das Beispiel so modifiziert, daß die Temperatur stattdessen über LEDs gemorst wird. Benötigt wird dazu ein TI-Launchpad, ich hatte da noch eines rumliegen. Beim Launchpad dabei ist auch ein MSP430G2231, der auf dem Chip ein Thermometer hat und 2kB Flash besitzt.

Nach Einrichten der IDE kann man den Code direkt in den Controller laden und starten. Rotes Morsen bedeutet eine positive Temperatur, grün heisst, dass die gemorste Zahl eine Temperatur unter null Grad ist.

Ich habe dann den Chip aus dem Launchpad genommen, LEDs & Reset-Schaltung freihändig verdrahtet und zwei Babyzellen drangelötet. Die enthalten etwa 8000mAh und sollten für ca ein Jahr Energie liefern. Die Schaltung kam in ein altes Marmeladenglas und liegt momentan draussen im Schnee und morst da die Temperatur vor sich hin. Sehr praktisch :-)

27.02.2015

Energia: Arduino in rot für den MSP430 und ARM

Was ist Energia?

Wer gerne mit der Arduino-IDE arbeitet, aber mal den MSP430-Controller von TI benutzen möchte, für den ist die Energia-IDE ideal.

Das Energia-Projekt nimmt die originale  Arduino-IDE und hat die Libraries auf den MSP430 portiert. Außerdem wurde die IDE eingefärbt :-) Ergebnis ist, daß die meisten Arduino-Sketches fast direkt benutzt werden können! Auch das übrige Handling ist identisch zur Arduino-IDE - man muß sich also nicht umgewöhnen. Es gibt natürlich einige Hardware-Unterschiede zwischen den Prozessor-Familien, aber die-Arduino-IDE/Libraries abstrahiert die Hardware so gut, daß das beherrschbar ist.

Das Energia-Projekt wurde von einem TI-Mitarbeiter gestartet. Er arbeitet jetzt Vollzeit daran.

Boards

TI bietet extrem preisgünstige Boards (TI-Launchpad) an. Sie haben alle eine USB-Schnittstelle und können direkt angesprochen werden -es muß auch kein Bootloader installiert werden. Fertige Projekte können die Boards nutzen, oder man kann die MSP430-Chip aus dem Board nehmen und in der Ziel-Schaltung einsetzen.

MSP430

MSP430-Prozessoren arbeiten mit 16 Bit haben etwas mehr Dampf als AVRs. Außerdem sind sie recht preisgünstig und einige bieten Features, die es bei AVRs nicht so gibt, z.B. nichtflüchtiges FRAM.

ARM-Cortex

Neben dem MSP430 werden auch diverse Arm-Cortex-Boards mit bis zu 120MHz Takt und 1MB Flash/256kB RAM unterstützt.

WiFi / IoT mit CC3200

We WiFi braucht kann ein CC3200 nehmen - auch das läuft mit Energia.

Installation


Installation unter Ubuntu 12.04 war bei mir sehr einfach: tar.gz auspacken, und starten. Vorher musste noch eine udev-Regel angepasst werden, damit die IDE Zugriff auf USB hat, das geht so:

die Datei
/etc/udev/rules.d/46-TI_launchpad.rules
anlegen und folgende Zeile dort eintragen:
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0660", GROUP="plugdev"
anschliessend
sudo restart udev

USB einstecken, fertig. Nun kann die IDE benutzt werden.

Insgesamt ein sehr interessanter Ansatz, die etwas sperrigen Entwicklungstools durch was leichteres zum Einstieg zu ersetzen. Auf der Energia-Website gibt es jede Menge professionell aufbereiteter Infos, Tutorials, etc.