U(S)ART -> Daten auf uC senden

OP (Firma: wiki.flowerhouse.at) #4359224
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
OP (Firma: wiki.flowerhouse.at) #4359318
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.
#4359345
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
Gast #4359349
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?
Gast #4359360
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
(Firma: Ucore Fotografie www.ucore.de) Persönliche Seite #4359386
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
Gast #4359402
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.
OP (Firma: wiki.flowerhouse.at) #4359417
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.
(Firma: Ucore Fotografie www.ucore.de) Persönliche Seite #4359465
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
(Firma: Ucore Fotografie www.ucore.de) Persönliche Seite #4359469
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
Gast #4359677
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
#4359693
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
Gast #4359759
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.
OP (Firma: wiki.flowerhouse.at) #4360594
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.
Gast #4362180
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
Gast #4362292
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.
OP (Firma: wiki.flowerhouse.at) #4362919
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren