bitbloq

Bildsc54
Heute stelle ich mal bitbloq vor, eine blockbasierende Programmierumgebung wie z.B. Scratch für den Arduino.
In seiner Benutzung noch ein wenig eingeschränkt, aber auf einen guten Weg.
Ich hoffe gerade im Bereich Sensoren tut sich da in Zukunft noch ein wenig.

Project search light: WS2811 DMX Teensy3.1

2014-10-31

Hier einige anscheinend nützliche Links die ich bei meiner Informationssuche für mein nächstes Projekt gefunden habe.
Wie an den Themen unschwer zu erkennen ist, will ich WS2811/12b LED Streifen über einen Teensy per DMX steuern.

Teensy/Arduino:
OctoWS2811 LED Library OctoWS2811
Vixen Lights steuert Arduino blog.huntgang.com
Arduino WS2811 Strobe Pixels twinkleclaus.com
FastSPI LED Library fastled.io

WS2811/12b LED, von Adafruit auch unter dem Namen Neopixel unters Volk gebracht:
Einige ganz gute Preise wenn man auf eine Lieferung aus China warten kann und eventuell noch zum Zoll muss. aliexpress.com
LED-Cubes aus WS2811 Pixeln kickstarter.com
Einige interessante Einzelheiten zur Ansteuerung WS281X-signal-quality

DMX:
Arduino als PC-DMX Interface arduino-dmx
DMX Library DMX Library
DmxSimple
Ein midi zu dmx arduino control shield sonicrobots.com

Komfortable RTC Programmierung

RTC1307
Der italienische Blog Lucadentella stellt hier eine komfortable Möglichkeit vorgestellt, diese kleinen weit verbreiteten RTC-Module mit DS1307 Chip und Knopfzelle mit Hilfe eines Arduinos am PC einzustellen.

RTC steht in diesem Fall für Echtzeituhr (englisch real-time clock)
Diese hier verwendeten RTC-Module verwaltet selbstständig die aktuelle Uhrzeit und stellt sie auf Anfrage über ein I2C Bus einem angeschlossenen Mikrocontroller (z.B. Arduino oder Pi) zu Verfügung.
Damit können dann beispielsweise Messwerte mit einem Zeitstempel versehen werden.
Um die RTC beim einschalten eines Gerätes nicht erneut stellen zu müssen sind die Module mit einer Knopfzelle gepuffert.

Sehr nützlich, gibt es in der Bucht oft für unter 5€.

Temperatursensor TMP123

Der  Temperatursensor TMP123 von Texas Instruments kommt in SMD Gehäuse mit Anschlüssen nach SOT23-6, also arschklein aber noch gerade so mit einer feinen Spitze lötbar.

Specs:
Die Komunikation mit dem TMP123 erfolgt über SPI
12 bit Auflösung
-40 bis 125 °C Messbereich, mit einer Genauigkeit von +- 1,5°C im mittleren Bereich
Verträgt 3,3V und 5V
Soweit ich es sehen kann unterscheidet sich sein Bruder der TMP121 nur in der Pinbelegung.

 

Ich habe mich mal daran gemacht 2 von den kleinen Kerlen Breadboard tauglich zu machen.

Sowas hätte früher im Staubsaugerrohr nicht mal geklappert.

 

Der TMP123 wird vor dem Löten von einer Krokoklemme auf der Adapterplatine festgehalten.

 

Noch die Stiftleiste dran und das war schon das Wesentliche.
Mit abgewinkelten Stiftleisten spart man übrigens einiges an Platz auf dem Breadboard.

 

Hinten habe ich noch die Pinbelegung aufgeklebt.

 

Beispielcode für den Arduino

TMP121_123.pde.zip

 

broken Pro Micro

So schnell geht’s.

Ein feines Gerät, die Micro Version des Arduino Leonardo mit ATmega32U4 von Sparkfun.

Die Verwendung der Micro USB Buchsen ist in offener Montage nicht gerade Sinnvoll, zum trennen von Stecker und Buchse sind recht hohe Kräfte aufzuwenden was ein Abstützen der Buchse in einem Gehäuse nötig machen würde. Nur auf einer Platine aufgelötet geht dies nicht lange gut.

Flexible RGB LED Leisten

Ich will hier mal über LED Lichtleisten schreiben, diese Art der Beleuchtung findet inzwischen immer mehr Verbreitung und die Preise befinden sich gerade im freien Fall.
LED Strips kommten gebräuchlicherweise auf Rollen zu je 5 Meter daher, diese bestehen aus flexiblen ca. 10mm breiten Platinen aus Polyimidfolie auf die die Kupfer Leiterbahnen aufgedampft wurden.
Darauf befinden sich je nach Hersteller 30-120 LEDs pro Meter, einige Widerstände und Treiber ICs. Diese LEDs können einfarbig sein oder RGB LEDs sein d.h. in einer RGB LED sind Leuchtdioden in den Farben (r)ot, (g)rün und (b)lau gemeinsam vergossen und können somit unterschiedlich angesteuert zusammen so gut wie alle Farben des sichtbaren Lichts erzeugen.

LED Strips mit Einfarbige LEDs  gibt es in allen möglichen Farben, wobei ich dort nur noch die weißen und warm weißen guten Gewissens empfehlen kann.
Wenn Farbe ins Spiel kommt sollte man gleich zur RGB Variante greifen, da man dort deutlich flexibler ist wenn das Ergebnis nicht den Wünschen entspricht und die Farbe seinen Wünschen viel genauer anpasst werden kann. Bei dieser Art wird am Controller Helligkeit und eine Farbe für die gesamte Länge eingestellt.

Kommen wir jetzt zu den richtig coolen Zeug, RGB LED Strips mit adressierbaren LEDs.

Bei denen kann man dann mit einen Computer oder Microcontroller Board wie dem Arduino jede LED einzeln ansteuern. Erreicht wird dies durch speziele ICs auf der Lichtleiste, wo ein IC für je eine bzw. zwei RGB LEDs zuständig ist.
Diese Bus angesteuerten Treiber ICs gibt es inzwischen in vielen Variationen und sind unterschiedlich anzusteuern.

HL1606
Der HL1606 ist einer der älteren Treiber und noch ziemlich dumm, dafür aber weit verbreitet. Er wird mit 4 Datenleitungen als SPI Bus angeschlossen und stellt kein PWM zur Verfügung, so dass die Farben softwarseitig moduliert werden müssen.
Es existiert eine Library für diese LED Strips HL1606 Arduino library.

LPD8806
Der LPD8806 wird über 2 Datenleitungen angesteuert und kann jede Farbe 7 bitig PWM Dimmen was rund 2 Millionen Farben ergibt.
(ältere Version LPD6803 nur 5 Bit PWM)
LPD8806s besitzen 6 Ausgänge und können  2 RGB LEDs gleichzeitig ansteuern.
Die Leute bei Adafruit habe den Chip reverse engineered und eine Anleitung incl. einer Arduino Library für diese LED Strips geschrieben, welche sie natürlich auch verkaufen.

WS2801
Der WS2801 kann pro Farbe 8 Bit PWM ausgeben was demnach 16,7 Millionen Mischfarben ergibt. Da für jede RGB LED ein IC zuständig ist, kann somit auch zwischen jeder LED zugeschnitten werden. Sparkfun verkauf diese WS2801 getriebenen LED Leisten und bietet gleich auch Beispielcode für den Arduino und Datasheets zum WS2801 an. Als Library kann man die unten genante Fastpsi verwenden.

Es gibt noch unzählig viele andere Treiber ICs für adressierbare  RGB LED Strips, die oben genannten sind die gebräuchlichsten.

Es existiert mit Fastspi noch eine Arduino Library die eine größere Menge von Treibern unterstützt,

  • 595 style shift registers
  • hl1606 based led strips
  • lpd6803 based led pixels
  • tm1809 based led strips
  • tm1804 based pixels
  • ws2801 based led strips and pixels
  • lpd8806 based led strips
  • ucs1903 based led strips
  • sm16716 chipset
  • support for the ws2811 chipset

Zu bedenken ist übrigens, dass das ansteuern von LEDs einiges an RAM braucht. So soll ein Arduino Uno/Nano mit seinen 2KB Ram maximal 160 RGB LEDs ansteuern können. Ein Mega hat übrigens 8KB Ram. Ein raspberry pi ist angesichts dieser Limitation für größere Projekte wie eine Matrix aus mehreren LED Strips eher in Betracht zu ziehen.

Des weiteren sollte man beachten, dass so ein Meter LED Leiste einen haufen Strom braucht den der 5V Ausgang eines Arduinos nicht liefern kann.
Es ist also ein ausreichend dimensioniertes zusätzliches 5V Netzteil nötig.
Für die mit WS2801 gibt der Hersteller einen maximalen Verbrauch von 1.8A pro Meter an wenn alle einzelnen Farben aufgedreht sind.
Bei allen anderen sollte mit ähnlichen Werten zu rechnen sein.

Günstig kaufen kann man solche LED Strips an viel Orten, z.B. bietet bestlightingbuy.com die 5 Meter Rolle für 99-120 $ an.

ref.: nut-bolt.nl

Günstiger Schrittmotor für den Arduino

Wer sich mit seinem Arduino an die Programmierung  von Schrittmotoren herantasten will, findet derzeit in der eBucht dieses nette Gespann aus Schrittmotor und Treiber für  3,49 Euro. Link

Der Schrittmotor ist Unipolar, hat ein Übersetzungsgetriebe und wird mit 5 Volt betrieben.
Auf der Treiberplatine sitz ein ULN2003 und die einzelnen Ausgänge werden beim schalten jeweils mit einer LED angezeigt.
Auf Grund des Getriebes ist der Motor zwar recht gemächlich, aber für die ersten Schritte kann man bei dem Preis nichts falsch machen.
Meine 2 kamen innerhalb von einer Woche aus England an.

Nachtrag:
Bei Arduino Projekte.de wurde dieses Gespann offenbar auch getestet.

Links zum Arduino

Einige grundsätzliche Links zum Arduino

Der Arduino ist eine nette kleine Microprozessorplatform die es auf Grund seiner offenen Quellen inzwischen sehr vielen Variationen gibt.

Andreas Kriwanek hat auf http://www.kriwanek.de/arduino/boards.html einige der vielen Bords mit ihren Unterschieden aufgeführt und (sehr nützlich) Zeichnungen der Pinbelegung beigepackt.

Der Blog arduino-praxis.ch erklärt den alltäglichen Umgang mit dem Arduino und bringt gerne auch ungewöhnliche Shields im Test von denen man sonnst noch nie was gehört hat. Oder so was, behinduino.

In der Arduino Abteilung bei instructables.com kann man sich von den Arduinoprojekten anderer Inspirieren lassen und bekommt gleich noch eine Anleitung zum Nachbauen.

So, jetzt wisst ihr was ihr bauen wollt aber fragt euch was da eigentlich für Widerstände da an die LED dran kommen, da hilft der LED-Rechner von Spaceflakes.de und hier wird gezeigt welchen Farbcode der Widerstand dann haben muss.
Ein anderer LED-Rechner.

Video Tutorials zum Arduino bekommt man bei Element14.com.

Erste Anlaufstelle ist natürlich arduino.cc die im Playground die Grundlagen im Umgang und Programmierung auch gleich in Deutsch anbieten.

 

AtTiny45 mit Arduino programmieren

Auf der ArduinoSpielwiese erklären sie dir, wie du mit deinem Arduino einen blanken AtTiny45 programmieren kannst.

RXTX mismatch

Sollte ich mal wieder mit dem Arduino und Processing rumspielen, oder jemand anderes.
Hier eine kleine Hilfestellung falls Prcessing auf OSX folgendes meldet.

    WARNING:  RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2

Habe jetzt zum 2. mal an diesem Problem Stundenlang rum geschraubt.
Schreib mir endlich mal die Lösung auf. (bei Win und UNIX geht es ähnlich)

Warum tritt dieser Fehler überhaupt auf?
RXTX ist soweit ich es verstanden habe der serial Port Driver für Java.
Bei der Entwicklung hat sich seit Mai 2009 aber nichts mehr getan.
Das Problem ist, als die Entwicklung zum stillstand kann, hatte die letze herausgegebene Treberversion rxtx2.2pre2 den Fehler die Jar und die native lib Datei in unterschiedlichen Buildnummern zu beinhalten. Beide Dateien passen nicht wirklich zusammen und führten jedenfalls bei mir zu etlichen abstürzen von Processing Programmen.
War natürlich bekannt und stand im TODO, tat sich nur nichts mehr. Link.

“TODO: The 2.2pre2 bins contain the 2.2pre1 jar file and the 2.2pre2 native lib which causes a mismatch warning.”

Java beinhaltende Distributionen schnappten sich seit dem den neuesten nicht als stable gekennzeichneten und fehlerhaften Treiber.

 

 

 Auf der Spur
Ich copy/paste mal die für mich funktionierende Lösung:
Hier gefunden.

“… dont use the RXTXcomm.jar and librxtxserial.jinlib thats with processing. copy the versions that are in your arduino folder under (contents/resources/java) from arudino -22  they are dated 24th dec and are 2.1-7 – ensure these versions are in the processing folder , the arduino folder you just copied them from  (obviously they will be the right ones) and under macintosh hd/library/java/extensions
rerun and they will match.”

Unter Lion sind es die Ordner: macintosh hd/system/library/java/extensions für beide Dateien,
nachdem man Processing mit Paketinhalt anzeigen geöffnet hat
…/Processing151.app/Contents/Resources/Java/modes/java/libraries/serial/library/macosx/
für die librxtxSerial.jnilib
und
…/Processing151.app/Contents/Resources/Java/modes/java/libraries/serial/library/
für die RXTXcomm.jar

Jetzt läuft es unter 2.1-7, der letzten stabilen Version.