Forum: Mikrocontroller und Digitale Elektronik U(S)ART -> Daten auf uC senden


von Fabian P. (Firma: wiki.flowerhouse.at) (tropaion)


Lesenswert?

Hallo Community,

ich möchte mir gerne eine Binäruhr im Taschenformat bauen.

Da die Uhr sehr klein werden soll, möchte ich gerne auf Tasten für die 
Zeiteinstellung verzichten.

Meine erste Idee war, das ich einen DCF-Empfänger verwende, das würde 
ich auch noch relativ leicht hinbekommen. Jedoch das einzige Modul 
welches ich gefunden habe, gefällt mir auch nicht, da mir der Ferritkern 
zu groß ist.
(https://www.conrad.at/de/dcf-empfaengerplatine-641138.html?sc.queryFromSuggest=true)

Da die Uhr sowieso über Micro-USB geladen werden soll, ist meine Idee 
nun, das ich mir am Computer ein kleines C-Programm schreibe, welches 
kurz gestartet wird und die Uhrzeit über USB -> UART (FT232) in die Uhr 
geschrieben wird.
Die programmierung des UARTs würde auch noch kein Problem für mich 
darstellen.

Wo ich jedoch Probleme habe, ist die Windows-Seite.
Ich habe schon kleinere Programme mit Visual Studio in C geschrieben, 
jedoch nie etwas in dieser Art.

Meine Fragen dazu wären nun:
- Gibt es eine Möglichkeit auf einen Ferritkern zu verzichten bzw. seine 
größe stark zu reduzieren?
- Das Display besteht aus einer LED-Matrix, wo die Spalten für H, M und 
S gemultiplexed werden. Mir ist bekannt, das die DCF-Empfänger sehr 
empfindlich darauf sind, könnte das ein Problem darstellen?
- Hat/Kennt jemanden einen Artikel der das schreiben über USB -> UART 
mit einem C-Programm erklärt?
- Gibt es einen USB -> Serial Konverter der auch einen Laderegler 
beinhaltet, damit ich auch gleich einen Akku über USB laden kann?

Danke und Mfg,
Fabian alias Tropaion

: Bearbeitet durch User
von Tom E. (Gast)


Lesenswert?

Fabian P. schrieb:
> - Hat/Kennt jemanden einen Artikel der das schreiben über USB -> UART
> mit einem C-Programm erklärt?

Auf dem PC taucht ein einfacher virtueller Com-Port auf, wenn man beim 
µC einen USB-Seriell-Wandler einsetzt. Der USB-Teil wird vom Treiber 
erledigt.

von Fabian P. (Firma: wiki.flowerhouse.at) (tropaion)


Lesenswert?

Ja, davon habe ich schon gelesen. Aber in einem anderen Thread habe ich 
gelesen das es da auch zu Problemen kommen kann, wenn man z.B. das 
USB-Gerät immer an einen anderen Port hängt und diverse andere Dinge.

Ich weis aber grundsätzlich nicht, wie ich auf ein USB-Gerät zugreife, 
selbst wenn der Treiber installiert ist. Ich habe noch nie mit 
USB-Geräte auf programmierebene gearbeitet, maximal Treiberebene.

von Michael U. (amiga)


Lesenswert?

Hallo,

Du sollst ja auch nicht auf ein USB-Gerät zugreifen sondern auf eine 
simple COM-Schnittstelle.
Baudrate setzen, Format setzen, öffnen und lesen oder schreiben.
Per Terminalprogramm oder selbstgeschriebener Software.
Habe ich vor Jahren mal in VB6 gemacht, sollte in C also auch kein 
Problem sein.

Wie groß soll denn Deine "Taschenuhr" werden?

Gruß aus Berlin
Michael

von Tom E. (Gast)


Lesenswert?

Fabian P. schrieb:
> Aber in einem anderen Thread habe ich gelesen das es da auch zu
> Problemen kommen kann, wenn man z.B. das USB-Gerät immer an einen
> anderen Port hängt
Bei USB-Seriellwandlern mancher Hersteller ist das so, weil die keine 
"persönliche" ID haben.

> ... und diverse andere Dinge.

Und die wären?

von JackFrost (Gast)


Lesenswert?

Du kannst ja vorher alle verfügbaren COM Ports anzeigen lassen und nach 
der Auswahl dann due Zeit übertragen.

Du nimmst einfach die SerialPort Klasse da ist alles drinnen was du 
dafür brauchst.

Ich hab das mit ModBus und C# für ein paar Messgeräte gemacht. So ist es 
egal ob dem FTDI ein neuer Comport zugeordnet wird.

Gruß JackFrost

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Mit C# ist es wirklich sehr einfach.
Google einfach mal nach der SerialPort-Klasse des Microsoft 
.Net-Frameworks.
Da gibt es auch Millionen Tutorials zu.
Mit purem C (Konsolenanwendung) habe ich es auch noch nicht gemacht. 
Aber wie gesagt, mit C# ist das kein Problem.

Der FT232RL (ist der noch aktuell) macht alles für dich. Du bekommst von 
FTDI sogar so ein Konfig-Tool dazu, mit dem du einige Parameter deines 
USB-Devices einstellen kannst (Gerätename, Hersteller etc.), so dass du 
dein Gerät auch immer zuordnen kannst.

Zu deinen anderen Fragen kann ich leider nicht viel beitragen, habe noch 
nie etwas mit DCF gemacht. Alle Lösungen, die ich kenne, sind auch sehr 
groß. Wobei es ja auch Funk-Armbanduhren gibt. Und die sind nichtmal 
teuer, d.h. es muss auch kleine Module/Lösungen geben.

Abgesehen davon: wenn du dir Sorgen machst über die Störungen des 
Multiplexings beim Empfang des DCF:
Ich denke deine Uhr wird eine gewisse Grundgenauigkeit besitzen, d.h. 
nur gelegentlich wird die Uhrzeit neu synchronisiert werden müssen, 
d.h. du könntest für die Zeit der Synchronisierung ja kurz das Display 
ausschalten, z.B. beim Akku-Laden.

Ansonsten: Ich habe hier eine Schreibtisch-Uhr mit Realtime-Clock (und 
Goldcap als Puffer für Spannungsausfälle) und die geht im Jahr 
vielleicht +/- 1 Minute falsch... ich muss sie nur immer für 
Sommer/Winderzeit umstellen, weil ich damals zu faul war mir alle 
Termine für die Zeitumstellung da hineinzuprogrammieren, wäre aber 
möglich gewesen...

Hier kannst du auch mal lesen:
Beitrag "DCF77 Demodulator selbst bauen"

Gruß,
Alex

von Frank (Gast)


Lesenswert?

Alex B. schrieb:
> Du bekommst von FTDI sogar so ein Konfig-Tool dazu

Konnte man darüber nicht einstellen ob er jedes mal einen neuen COM 
erstellen soll? Ich meine mich schwarz an was zu erinnern...

Ansonsten kannst du ihm einen Namen geben. Z.B "Watch". Auf PC Seite 
kannst du dann nach den angeschlossenen FTDIs suchen und den mit dem 
richtigen Namen rauspicken.

von Fabian P. (Firma: wiki.flowerhouse.at) (tropaion)


Lesenswert?

Tom E. schrieb:
>> ... und diverse andere Dinge.
>
> Und die wären?

Wenn ich mich richtig erinnere, gab es Probleme mit der Erkennung, wenn 
die COM-Nummierung über einen bestimmten Werte kam (100?).

Alex B. schrieb:
> Aber wie gesagt, mit C# ist das kein Problem.

Mit C# habe ich noch nie gearbeitet, muss ich mal schauen.
Hast du evtl. weiterführende Links?

Alex B. schrieb:
> Wobei es ja auch Funk-Armbanduhren gibt.

Ja, das dachte ich mir auch, aber leider konnte ich nichts dazu finden.

Michael U. schrieb:
> Wie groß soll denn Deine "Taschenuhr" werden?

So klein, wie es für mich machbar ist. Alle ICs in TQFP-Bauform, 
Widerstände und Kondensatoren in der 0805-Bauform und 3mm-LEDs. Gelötet 
wird mit einem Reflow-Ofen. Wie groß es genau wird, weis ich nach dem 
Layouten.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Fabian P. schrieb:
> Mit C# habe ich noch nie gearbeitet, muss ich mal schauen.
> Hast du evtl. weiterführende Links?

Zuerst brauchst du sicherlich eine IDE:
http://csharp-source.net/open-source/ides

Mit SharpDevelop habe ich selbst schon gearbeitet.
Aktuell arbeite ich in einem Projekt mit Mono. Da läuft dann ein 
Modbus-Server (was auch nicht viel anders ist als RS232) auf einem 
RaspberryPi, ich entwickle und teste aber auf einem Windows-PC.

Bzw. wenn es nicht-kommerziell ist kannst du auch MS Visual Studio 
"Community Edition" verwenden:
https://www.visualstudio.com/de-de/downloads/download-visual-studio-vs.aspx

Und danach: einfach mal starten und ein Testprogramm machen. Sogar 
Microsoft hat dafür schöne Aufgaben: 
https://msdn.microsoft.com/de-de/library/dd492171.aspx

Viele Grüße & viel Erfolg!
Alex

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Fabian P. schrieb:
> So klein, wie es für mich machbar ist. Alle ICs in TQFP-Bauform,
> Widerstände und Kondensatoren in der 0805-Bauform und 3mm-LEDs. Gelötet
> wird mit einem Reflow-Ofen. Wie groß es genau wird, weis ich nach dem
> Layouten.

Meiner Meinung nach (bei manueller Bestückung):
-ICs: kann man bis TSSOP machen (0,5 mm pitch ist eine Herausforderung, 
0,65 mm ist problemlos machbar)
-Widerstände/Kondensatoren: 0603 ist kein Problem
-LED: du kannst auch über SMD-LEDs nachdenken. Da gibt es auch welche, 
die z.B. "nach unten" (d.h. durch ein Loch in der Platine) leuchten und 
welche, die zur Seite leuchten. Oder eben ein ganzes Dot-Matrix-Display

von Georg (Gast)


Lesenswert?

Fabian P. schrieb:
> - Das Display besteht aus einer LED-Matrix, wo die Spalten für H, M und
> S gemultiplexed werden. Mir ist bekannt, das die DCF-Empfänger sehr
> empfindlich darauf sind, könnte das ein Problem darstellen?

Das eher weniger, aber für Batteriebetrieb sind LEDs nicht wirklich 
geeignet, oder dein Akku wird grösser als der Rest der Uhr.

Georg

von Andreas K. (andreasmc)


Lesenswert?

> - Hat/Kennt jemanden einen Artikel der das schreiben über USB -> UART
> mit einem C-Programm erklärt?

Für den Anfang tut es auch ein Terminalprogramm (Hyperterm, Putty) in 
das du manuell die Uhrzeit eintippen kannst.

Für dein eigenes Programm einfach mal nach <deine programmiersprache> 
COM Port googlen, z.B. für ältere C-Versionen ein Artikel von 1995 :-)

https://msdn.microsoft.com/en-us/library/ff802693.aspx

von Tom E. (Gast)


Lesenswert?

Fabian P. schrieb:
> Wenn ich mich richtig erinnere, gab es Probleme mit der Erkennung, wenn
> die COM-Nummierung über einen bestimmten Werte kam (100?).

Das wird wohl an deinem Betriebssystem liegen, genauso wie sich weigern 
wird, eine Datei anzulegen, die z.B. den Namen "com1" besitzt.

Falls die vergebene Portnummer dir nicht in dem Kram paßt, wirst du 
einmal den Gerätemanager aufrufen und dem Port eine Nummer zuweisen 
müssen, die dir besser paßt.

Millionen von Leuten benutzen USB-Seriell Adapter. Warum sollte es bei 
dir nicht funktionieren? Fang einfach an.

von Fabian P. (Firma: wiki.flowerhouse.at) (tropaion)


Lesenswert?

Tom E. schrieb:
> Millionen von Leuten benutzen USB-Seriell Adapter. Warum sollte es bei
> dir nicht funktionieren? Fang einfach an.

Ja, werde ich. Ich informiere mich trotzdem immer gern vorher darüber.

Andreas K. schrieb:
> Für dein eigenes Programm einfach mal nach <deine programmiersprache>
> COM Port googlen

Vielen Danke, werde ich machen.

Georg schrieb:
> für Batteriebetrieb sind LEDs nicht wirklich
> geeignet

Was würdest du sonst nehmen? Es reicht wenn der Akku einen Tag hält.

Was mich noch immer interessiert, ist ob es einen USB <-> Serial IC gibt 
der auch gleich einen Laderegler eingebaut hat. Der FT232 hat das ja 
nicht.

von Georg (Gast)


Lesenswert?

Fabian P. schrieb:
> Was würdest du sonst nehmen? Es reicht wenn der Akku einen Tag hält.

Na schön, wenn du damit zufrieden bist - ich erwarte eher, dass eine Uhr 
1 Jahr läuft. Aber Apple-Fans akzeptieren ja auch Uhren, die man öfter 
laden muss als man die Uhrzeit abliest.

Es gab ja mal kurze Zeit Armbanduhren mit roten LEDs. Die haben sich 
aber nicht bewährt und sind wieder verschwunden.

Georg

von Nosnibor (Gast)


Lesenswert?

Georg schrieb:
> Es gab ja mal kurze Zeit Armbanduhren mit roten LEDs. Die haben sich
> aber nicht bewährt und sind wieder verschwunden.

Zum Beispiel vor ca. einem Jahr bei Woolworth oder so, für 5 Euro in 
vielen bunten Plastikfarben. Aber auch die haben nur auf Knopfdruck 
geleuchtet, soweit ich weiß, um auf eine halbwegs akzeptable 
Batterielebensdauer zu kommen.

von Fabian P. (Firma: wiki.flowerhouse.at) (tropaion)


Lesenswert?

Georg schrieb:
> Na schön, wenn du damit zufrieden bist - ich erwarte eher, dass eine Uhr
> 1 Jahr läuft.

Natürlich würde ich es bevorzugen das sie länger hält...

Georg schrieb:
> Das eher weniger, aber für Batteriebetrieb sind LEDs nicht wirklich
> geeignet

Darum Frage ich nocheinmal: Was würdest du nehmen?
Das wäre auch produktiver und hilfreicher für mich.

von Alex22 (Gast)


Lesenswert?

Fabian P. schrieb:
> Darum Frage ich nocheinmal: Was würdest du nehmen?

Das kommt ja letztlich auf dein gewünschtes design an. Viele tragbare 
Geräte verwenden dot Matrix LCD. Alternativ: e-paper...?
Gruß,
Alex

von Fabian P. (Firma: wiki.flowerhouse.at) (tropaion)


Lesenswert?

An einen Matrix-LCD habe ich natürlich auch schon gedacht, aber der 
Bildschirm besteht ja aus 3 Spalten, die erste Spalte für Stunde besteht 
aus 5 LEDs und die anderen zwei Spalten aus 6.

Bis jetzt konnte ich keinen finden der so eine Matrix hat und ich glaub 
auch nicht das ich einen finden werde.

http://kmkcl.de/binuhr.html

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.