In diesem Beitrag möchte ich dir gerne den Microcontroller RGBDuino UNO vorstellen.
Bezug
Diesen sehr eigenartig gestalteten Microcontroller habe ich über aliexpress.com für knapp 13€ inkl. Versandkosten erstanden. Der Versand dauerte ca. 3 Wochen, dieses ist dem Umstand geschuldet das der Versender aus dem asiatischen Raum stammt.
Diesen Microcontroller gibt es zum einen mit dem Aufdruck eines Manga Bildes und in der Farbe Gelb mit einer Ente.
Lieferumfang
Zum Lieferumfang des RGBDuino UNO gehört eine kleine Papschachtel in welcher eine Beschreibung gedruckt ist sowie ein ca. 10cm langes USB Datenkabel.
Links & Resourcen
Auf der Verpackung ist der Hyperlink http://rgbduino.cn/ aufgedruckt unter welchem weitere Informationen bezogen werden können. Jedoch ist diese Adresse zur Zeit nicht erreichbar somit müsste man etwas „googeln“ um die Informationen zusammen zutragen.
Aber mein Ziel ist es das du in diesem Beitrag alle Informationen zu dem RGBDuino UNO findest damit du diesen programmieren kannst.
Der Hersteller betreibt jedoch noch das GitHub Repository https://github.com/RGBduino/RGBDuino, dort findest du eine Anleitung sowie einpaar kleine Beispiele für diesen Microcontroller.
Technische Daten des RGBDuino UNO
Auf dem RGBDuino UNO ist ein ATMEL Mega328P mit folgenden Spezifikationen verbaut:
Länge | 68,6 mm |
Breite | 53,4 mm |
Gewicht | 25 g |
Flash Speicher | 32 KB (von denen 0,5 KB für den Bootloader reserviert sind) |
SRAM | 2 KB |
EEPROM | 1 KB |
CPU Taktgeschwindigkeit | 16 MHz |
Betriebsspannung | 5 V |
Eingangsspannung | 7 bis 12 V |
minimale Eingangsspannung | 6 V |
maximale Eingangsspannung | 20 V |
max. Stromstärke pro I/O Pin | 20 mA |
max. Stromstärke für die 3.3 V Versorgung | 50 mA |
digitale Eingänge / Ausgänge | 14 |
digitale PWM Ausgänge | 6 |
analoge Eingänge / Ausgänge | 6 |
Aufbau des RGBDuino UNO
Der RGBDuino UNO ist bestückt mit:
- einem frei programmierbaren Taster,
- einem Piezo Buzzer,
- zwei RGB NeoPixel,
- sowie an jedem digitalen Pin und an 3,3V, 5V eine SMD LED
digitale PWM Pins
Der RGBDuino UNO verfügt über 6 digitale PWM Pins. Über diese kannst du ein digitales PWM Signal erzeugen und zbsp. eine LED zum Faden (langsames auf und ableuchten) bringen oder einen kleinen Motor steuern.
Die digitalen PWM Pins sind jeweils mit einer Tilde „~“ auf der Platine gekennzeichnet und sind an den Pins 3,5,6,8,9,10,11.
zusätzlicher Schalter für den Piezo Buzzer
Der Piezo Buzzer ist am digitalen Pin D8 angeschlossen. Damit du diesen Pin ggf. für andere Schaltungen verwenden kannst gibt es diesen Schalter.
Wenn die Schalterposition zum Piezo Buzzer zeigt ist dieser AN andernfalls ist dieser AUS.
NeoPixel
Auf der Platine sind 2 zusätzliche RGB NeoPixel verbaut welche an den digitalen Pins 12 und 13 angeschlossen sind.
Wie du diese programmierst erfährst du etwas weiter unten in diesem Beitrag.
frei programmierbarer Taster
Neben dem Reset Taster für das neustarten des Microcontrollers findest du einen Taster welchen du frei programmieren kannst. Diesen Taster kannst du somit mit einer beliebigen Funktion belegen (natürlich musst du diese zuvor programmieren).
Diesen kleinen Taster kannst du über den digitalen Pin D2 ansprechen, aber dazu später mehr in einem ausführlichen Beispiel.
erster Start
Wenn du den Microcontroller nach dem auspacken an eine USB Buchse anschließt dann wird bereits ein kleines Programm abgespielt. Es leuchten die NeoPixel auf und auf den SMD LEDs welche an den digitalen Pins angeschlossen sind wird ein kleines Lauflicht ausgegeben. Nach einpaar Sekunden wird auf dem Piezo Buzzer das Lied „Freude schöner Götterfunken abgespielt.“
Einrichten des RGBDuino UNO unter Microsoft Windows 10
Wenn du den RGBDuino UNO wie ich unter MS Windows 10 programmieren möchtest musst du zunächst den Treiber für den Seriellen Chip CH340G installieren.
Auf dem GitHub Repository https://github.com/RGBduino/RGBDuino findest du zwei Dateien zum download. Jedoch haben beide auf meinem System nicht funktioniert so dass ich mir einen anderen passenden suchen musste. Da ich schon mit dem ein oder anderen Microcontroller dieser Art zutun hatte war die suche recht kurz :).
Auf der Seite http://www.wch.cn/download/CH341SER_ZIP.html findest du eine *.zip Datei zum download. Da diese Seite größtenteils auf Chinesisch ist würde ich empfehlen die Datei zunächst mit einem Virenscanner zu prüfen („man weiß ja nie“). Wenn du die Datei heruntergeladen hast dann musst du diese nur in ein beliebiges Verzeichnis entpacken, ich nutze hierzu das kostenfreie Tool 7zip. In dem Ordner „CH341SER“ findest du nun die Datei „SETUP.EXE“ welche du mit einem Doppelklick startest.
In meinem Fall wurde der Microcontroller am serielen Port COM5 erkannt.
Programmieren des Microcontroller RGBDuino UNO
Da auf dem Microcontroller ein einfacher ATMEL Mega328P verbaut ist kann dieser wie ein „normaler“ Arduino UNO programmiert werden. D.h. du wählst in der Arduino IDE das Board „Arduino UNO“ sowie den entsprechenden Port aus.
Zunächst hier eine kleine Tabelle mit den Pins an welche die einzelnen Features angeschlossen sind:
Funktion | digitaler Pin |
---|---|
Taster | D2 |
NeoPixel I | D12 |
NeoPixel II | D13 |
Piezo Buzzer | D8 |
Piezo Buzzer & Taster
Wie man einen Piezo Buzzer programmiert habe ich schon in diversen Beiträgen auf diesem Blog gezeigt. Hier möchte ich dir gerne ein kleines Programm zeigen wie du einen Ton ausgeben kannst wenn du den Taster betätigst.
Ich verwende in diesem Beispiel zusätzlich die Bounce2 Bibliothek um den Taster zu entprellen.
Was prellen bei einem Taster bewirkt und warum und vor allem wie dieses verhindert wird habe ich im gleichnamigen Beitrag Arduino Lektion 87: Taster entprellen beschrieben.
//Bibliothek um den Taster zu entprellen #include <Bounce2.h> #define buzzer 8 //Piezo Buzzer am digitalen Pin D8 angeschlossen #define taster 2 //Taster am digitalen Pin D2 angeschlossen //erzeugen einer Instanz Bounce btn = Bounce(taster, 25); void setup() { //beginn der seriellen Kommunikation mit 9600 baud Serial.begin(9600); //der Taster als Eingang über den internen 10k Ohm Widerstand pinMode(taster, INPUT_PULLUP); //den Pin des Buzzers als Eingang definieren pinMode(buzzer, OUTPUT); } void loop() { //aktualisieren des Objektes btn.update(); //Wenn der Taster gedrückt wird, dann... if(btn.fell()){ //Ausgeben des Textes "fell" auf der seriellen Schnittstelle Serial.println("fell"); //Ausgeben eines Tones mit 800Hz und einer Dauer von 500ms. tone(buzzer, 800, 500); } //Wenn der Taster losgelassen wird, dann... if(btn.rose()){ //Ausgeben des Textes "rose" auf der seriellen Schnittstelle Serial.println("rose"); //Ausgeben eines Tones mit 800Hz und einer Dauer von 500ms. tone(buzzer, 800, 500); } }
Video
NeoPixel
Für den betrieb der NeoPixel benötigst du eine zusätzliche Bibliothek. Diese habe ich bereits auch im Beitrag Arduino Lektion 31: 12bit RGB NeoPixel Ring sowie im Projekt Arduino Projekt: Abfalleimer mit Bewegungssensor verwendet.
Diese Bibliothek findest du zum bequemen installieren über den Bibliotheksverwalter.
//Bibliothek zum betreiben der NeoPixel #include <Adafruit_NeoPixel.h> /** Da die NeoPixel auf dem Board jeweils an einzelne Pins angeschlossen sind, müssen diese einzeln angesprochen werden. */ #define neoPixel1 12 #define neoPixel2 13 /** Es ist jeweils nur 1 NeoPixel am digitalen Pin angeschlossen. Bei einem Stripe würde hier eine deutlich größere Zahl stehen. */ #define NUMPIXELS 1 //Initialisieren der Objekte zum ansteuern der NeoPixel Adafruit_NeoPixel pixel1(NUMPIXELS, neoPixel1, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixel2(NUMPIXELS, neoPixel2, NEO_GRB + NEO_KHZ800); //Definieren von RGB Farbwerten welche auf den NeoPixel dargestellt werden sollen int colors[7][3] = { {255, 255, 0}, //gelb {255, 0, 0}, //rot {0, 255, 0}, //grün {0, 0, 255}, //blau {255, 0, 255}, //pink {255, 128, 0}, //orange {0, 255, 255}, //türkis }; void setup() { //beginn der Kommunikation mit den NeoPixel pixel1.begin(); pixel2.begin(); } void loop() { //Löschen der NeoPixel Farbwerte pixel1.clear(); pixel2.clear(); //Für jeden Wert im Array mit den RGB Farbwerten mache... for (int i = 0; i < 7; i++) { //erster Wert im Array ist "rot" int red = colors[i][0]; //zweiter Wert im Array ist "grün" int green = colors[i][1]; //dritter Wert im Array ist "blau" int blue = colors[i][2]; //Da es "nur" einen NeoPixel andem digitalen Pin gibt wird hier die Zahl 0 übergeben. pixel1.setPixelColor(0, pixel2.Color(red, green, blue)); //Helligkeit des NeoPixels auf den Wert 64 setzen. //Mögliche Werte sind zwischen 0 und 255, //wobei der Wert 255 so hell ist das dieses in den Augen schmerzt. pixel1.setBrightness(64); //Anzeigen des Farbwertes pixel1.show(); pixel2.setPixelColor(0, pixel2.Color(red, green, blue)); pixel2.setBrightness(64); pixel2.show(); //eine kleine Pause von 175 ms. delay(175); } }
Video
Vergleich mit dem MakerUNO
Wer meinen Blog bereits etwas verfolgt wird sicherlich den MakerUNO in Erinnerung haben. Diesen Microcontroller habe ich im Beitrag Maker UNO – Überblick und Test vorgestellt.
Der RGBDuino UNO kommt mal abgesehen vom aufdruck mit den selben Features daher und ist somit eine nette Kopie des Maker UNO. Der Maker UNO ist durch eine Kickstarter Kampanie finanziert worden und hat somit einen tiefen Hintergrund in der Entwicklung.
Des Weiteren verfügt der Maker UNO zusätzlich an den digitalen Pins 12 & 13 über eine SMD LED, diese fehlt beim RGBDuino UNO. Jedoch verfügt der RGBDuino UNO zusätzlich noch über 2 NeoPixel somit bietet dieser somit min. ein Feature mehr als der Maker UNO. Auch der Piezo Buzzer am Maker UNO ist deutlich lauter als beim RGBDuino UNO.
Das Herzstück beider Microcontroller ist ein ATMEL Mega328P mit maximal 16 MHz Taktgeschwindigkeit.
Fazit
Der RGBDuino UNO ist fast ein vollwertiger Arduino UNO ersatz mit netten Features wäre da nicht die doch recht umständliche Installation, würde hier ein vernünftiger Serieller Chip verwendet worden sein so könnte dieses wirklich per „Plug’n Play“ betrieben werden. Die NeoPixel, der Buzzer sowie der Taster sind recht gut verarbeitet. Beim Maker UNO ist jedoch der Buzzer deutlich lauter aber das ist wie ich finde nicht wirklich entscheidend.