Forum: Mikrocontroller und Digitale Elektronik AVR und PC RGB Daten senden


von Frager (Gast)


Lesenswert?

Hallo zusammen,

Zurzeit arbeite ich an einem kleinen Lichtprojekt mit den WS2812 
RGB-LEDs und der Light weight WS2812 Library.
Jetzt wo ich die LEDs störungsfrei ansteuern kann, würde ich dem 
Mikrocontroller gerne mit dem PC (mit Ubuntu und ohne 
Serielleschnittstelle) die LED Farbwerte "mitteilen" (entweder über ein 
GUI oder über die Konsole).
Die LEDs soll in den gesendeten Farben leuchten, und sobald die nächsten 
Werte gesendet werden, sollen diese Farben von den LEDs angenommen 
werden.
Da ich bisher in keiner Weise Erfahrungen in der 
Kommunikation-Programmierung von USB etc. habe, hier meine Frage:
Welches System nutze ich am besten, und welche Hard- und Software 
benötige ich dazu?

Ich hoffe ihr könnt mir helfen!

P.S.: Für die LED-Steuerung benutze ich z.Z. einen Attiny13, wenn 
notwendig kann ich das natürlich ändern.

von Düsendieb (Gast)


Lesenswert?

Die Komunikation per USB ist bei weitem nicht so einfach wie das 
Ansteuern von LED per WS2812 .

Such dir ein Beispielprojekt für eine USB Komunikation und implementiere 
darin die WS2812 Ansteuerung.

von user (Gast)


Lesenswert?

an den tiny13 einen USB-serial wandler (ft232 oder ähnlichem) dranhängen 
und dann per serieller schnittstelle kommunizieren

von Stefan F. (Gast)


Lesenswert?

Am besten verwendest du ein Mikrocontroller-Modul mit einem eingebauten 
USB-UART Chip. Dann hast du mit USB und Treibern schonmal keinen Stress.

http://chip45.de/categories/avr_mikrocontroller_module_boards_usb_uart.php
oder ein "Arduino Nano" kompatibles Modul
oder du bleibst beim ATtiny13 und verwendest ein USB-UART Adapterkabel. 
Achte auf die richtige Spannung (3,3 bzw. 5 Volt).

Dann nimmst du meinen Beispiel-Code für die serielle Schnittstelle 
(http://stefanfrings.de/mikrocontroller_buch/index.html). Mit Hilfe der 
Anleitungen in dem Buch (Band 2) kommst du bestimmt bald zum ersten 
Ergebnis.

Für die Programmierung PC Seitig findest du im Internet sicher 
reichtlich Tutorials. Da geht bei jedem Betriebsystem etwas anders. 
Falls es Java sein soll, schau Dir die rxTxComm Library an. Zum Testen 
würde ich jedoch zunächst mit einem Terminal-Programm (Hammer Terminal) 
und Textuellen Kommandos arebiten.

von Frager (Gast)


Lesenswert?

>Falls es Java sein soll
Das habe ich vergessen zu sagen: Ich programmiere in C

------------------------------------------------------------------------ 
-----

> Such dir ein Beispielprojekt für eine USB Komunikation und implementiere
> darin die WS2812 Ansteuerung.

> Für die Programmierung PC Seitig findest du im Internet sicher
> reichtlich Tutorials.

Fällt euch da (bei beiden) spontan was ein?

> an den tiny13 einen USB-serial wandler (ft232 oder ähnlichem) dranhängen
> und dann per serieller schnittstelle kommunizieren

Damit habe ich keine Probleme wichtig ist mir nur, dass es an den 
USB-Anschluss angeschlossen wird.

von Frager (Gast)


Lesenswert?

> Mit Hilfe der
> Anleitungen in dem Buch (Band 2) kommst du bestimmt bald zum ersten
> Ergebnis.

@ Stefan Us
Gibt es die Büch (Band 1+2) auch gedruckt zu kaufen?
Wenn ja, wo bzw. welch ISBN?

von Stefan F. (Gast)


Lesenswert?

> Fällt euch da (bei beiden) spontan was ein?

Ja: Google 
https://www.google.de/search?client=ubuntu&channel=fs&q=serial+programming+pc+tutorial&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=m96qVJZ3ztvgBsTmgOgN

> Gibt es die Büch (Band 1+2) auch gedruckt zu kaufen?

Nein, gibt es nicht. Ich müsste tausende verkaufen, um die Kosten wieder 
rein zu holen. Heute benutzut man Tablets oder eBook reader.

von Frager (Gast)


Lesenswert?

Danke ich lese mir die Bücher mal genauer durch!
Bei weiteren Fragen melde ich mich wieder.

von Frager (Gast)


Lesenswert?

Hallo hier bin ich wieder, ich habe nun die Teile unter anderem einen 
ATmega8 und ein 18.4320MHz Quarz 
(http://www.conrad.de/ce/de/product/182176/Quarz-fuer-allgemeine-Anwendungen-Frequenz-18432-MHz-Bauform-HC-18U49U-B-x-H-114-mm-x-1346-mm).

Beim Programmieren bin ich bei den Fuse-Bytes hängen geblieben.
Welche Einstellung muss ich bei den Fuse-Bytes vornehmen um den Quarz 
richtig nutzen zu können?

P.S.: Ich benötige die Namen z.B. "Ext. Clock"

von holger (Gast)


Lesenswert?

>Hallo hier bin ich wieder, ich habe nun die Teile unter anderem einen
>ATmega8 und ein 18.4320MHz Quarz

Wie schön für dich. Leider kann der ATmega8 nur 16MHz.
Hast du das Datenblatt deines uC nicht gelesen?

von Frager (Gast)


Lesenswert?

In "Table 63  Examples of UBRR Settings for Commonly Used Oscillator 
Frequencies (Continued)" steht auch 18.432MHz was bedeutet das? Im 
Datenblatt lesen bin ich noch nicht so gut :-(

von Max D. (max_d)


Lesenswert?

Ersetz den Mega8 durch nen 88er. Der kann 20MHz.

von Jojo S. (Gast)


Lesenswert?

schau mal auf http://www.ulrichradig.de/ in die DMX Projekte, da gibt es 
eines für RGB Stripes. Das steuert zwar nicht die WS28xx Chips an, aber 
mit dem DMX Protokoll hättest du einen Standard für den es viele 
Controller auf der PC Seite gibt.

von Frager (Gast)


Lesenswert?

> Ersetz den Mega8 durch nen 88er. Der kann 20MHz.

>Leider kann der ATmega8 nur 16MHz.

Danke, dann weis ich jezt wie ich es machen muss.

Aber abgesehen davon würde mich troztem interessieren was das bedeutet:

> In "Table 63  Examples of UBRR Settings for Commonly Used Oscillator
> Frequencies (Continued)" steht auch 18.432MHz was bedeutet das?

Wenn ich das wüsste könnte ich in Zunkunft solche blöden Fehler besser 
vermeiden.

von Stefan (Gast)


Lesenswert?

Nur weil es theoretisch in den Registern eingestellt werden kann, heißt 
es nicht, dass der Controller auch mit dieser Frequenz umgehen kann. 
Aber meistens steht ganz am Anfang des Datenblatts welche Funktionen der 
Controller hat.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Frager schrieb:
>> an den tiny13 einen USB-serial wandler (ft232 oder ähnlichem) dranhängen
>> und dann per serieller schnittstelle kommunizieren
>
> Damit habe ich keine Probleme wichtig ist mir nur, dass es an den
> USB-Anschluss angeschlossen wird.

Moin!

Nur der Vollständigkeit halber, mit einer Billiglösung geht es auch:
Schaltung von hier: Bierdeckel-Programmer

Open-Source-Software von hier: https://guloshop.de/f/bierdeckel/

Funktionsbeschreibung und Links für die Client-Programme hier: 
https://guloshop.de/shop/USB-TTL-ADC-PWM-Signalwandler:::10.html

Nicht verwirren lassen, sind zwar zum Teil Shop-Links, aber die 
VUSB-Software ist quelloffen, Nachbau erwünscht. :-)

Zur Funktion: Ich würde die Ausgänge A, B und D für die Farben RGB 
verwenden. Standardmäßig wird mit 161 Hz gePWMt, und zwar in 100 Stufen. 
Das kann natürlich in der Software geändert werden, falls es nicht 
reichen sollte.

Trotzdem, die Vorschläge von weiter oben sind genauso gut, weil du 
natürlich auf weniger Aufpassen musst und mehr Freiheiten hast, wenn du 
für USB einen extra Baustein verwendest. Wie gesagt, nur der 
Vollständigkeit halber: ein einzelner ATtiny85 kann das auch. ;-)

von Frager (Gast)


Lesenswert?

Auch dafür nochmal danke!

Ich möchte folgende Frage nocheinmal aufwärmen:

> Hallo hier bin ich wieder, ich habe nun die Teile unter anderem einen
> ATmega8 und ein 16Mhz (uhrsprünglich 18.4320MHz) Quarz.

> Beim Programmieren bin ich bei den Fuse-Bytes hängen geblieben.
> Welche Einstellung muss ich bei den Fuse-Bytes vornehmen um den Quarz
> richtig nutzen zu können?
>
> P.S.: Ich benötige die Namen z.B. "Ext. Clock"

Frager

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Frager schrieb:
> P.S.: Ich benötige die Namen z.B. "Ext. Clock"

Bitte nicht! Sonst brauchst du anschließend einen externen Oszillator, 
um den Mikrocontroller zu betreiben. Du willst ja nur ein Quarz 
verwenden und keinen Oszillator – jedenfalls soweit ich das verstanden 
habe.

Vielleicht hilft das hier:
http://www.engbedded.com/fusecalc

EDIT:
Wenn ich das richtig sehe, wäre 0xff als lfuse (Fuse-Lowbyte) eine 
sinnvolle Einstellung für die Verwendung eines 16-MHz-Quarzes.
Hab allerdings mit dem ATmega8 kaum etwas gemacht, wär gut, wenn das 
noch irgendwer checkt. :-)

: Bearbeitet durch User
von Frager (Gast)


Lesenswert?

> Du willst ja nur ein Quarz
> verwenden und keinen Oszillator – jedenfalls soweit ich das verstanden
> habe.

Stimmt! Es war nur ein Beispiel, weil es kurz ist und es das erste war 
was mir als Name in die Augen gefallen ist.

von Andreas (Gast)


Lesenswert?

Und auf der PC Seite empfiehlt es sich Qt zu benutzen. Mit dem QtCreater 
lässt sich eine Oberfläche schnell und einfach bauen, auch die 
QtSerialPort Klasse ist sicherlich von Vorteil. Ein netter Nebeneffekt 
wäre, dass man das Programm auch unter Windows kompilieren kann.

von Frager (Gast)


Lesenswert?

> Und auf der PC Seite empfiehlt es sich Qt zu benutzen.

Guter Tipp aber, ich benutze für GUIs GTK (gtk.org)

> wär gut, wenn das
> noch irgendwer checkt. :-)

Könnte das eventuell mal jemand machen?

Danke

von Frager (Gast)


Lesenswert?

Vielen Dank für die Hilfe ich habe die lfuse auf 0xff und hfuse auf 0xd9 
gesetzt. Mit einem 16Mhz Quarz und dem serial-Programm aus dem 2. Band 
(http://stefanfrings.de/mikrocontroller_buch/index.html) funktioniert 
alles wie gewünscht.

Frager

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.