Forum: Mikrocontroller und Digitale Elektronik µC <> PC komm. über eigenes Programm


von Markus W. (kornbanane)


Lesenswert?

Hallo,

habe mich ein bisschen in einen Atmega16 eingearbeitet und bin jetzt 
soweit, das ich über die RS232 Schnittstelle mit einem Terminalprogramm 
eine Kommunikation zwischen µC und PC realisiert habe. Ich übertrage mir 
so Daten zum PC (zb. ADC-Werte) als auch Daten vom PC zum µC (zb. andere 
PWM Werte um damit eine LED vom PC aus zu dimmen)

Das alles läuft wie gesagt über ein Terminalprogramm, der µC ist mit C 
programmiert.

Nun möchte ich weiter gehen und zwar will ich eine eigene Anwendung am 
PC schreiben, die mir die Sache mit dem Terminalprogramm abnimmt. So 
soll dann zb. die LED über einen Schieberregler gedimmt werden.
Allerdings will ich gleich dazu sagen das ich kein Profi in Sachen PC 
programmierung werden will - das ich mir einiges aneignen muss is mir 
aber auch klar, jedoch will ich mehr in Richtung µC programmierung 
gehen.

Weiterhin will ich so ein Programm auch unter der Android Plattform auf 
einem Tablet haben.
So wie ich das bis jetzt verstanden habe programmiert man für Android eh 
immer unter Java ?

Jedenfalls weiß ich nicht wie und womit (mit welcher Sprache) ich jetzt 
anfangen soll. Ich habe von meinem elektronikstudium her schon ein 
bisschen mit C und C++ zu tun gehabt, allerdings ohne grafische 
Oberfläche.

Aber währe es nich sinnvoller dann sich gleich nur in Java 
einzuarbeiten, da ich es eh für Android brauche?

Womit habt ihr schon solche Programme geschrieben bzw. wie seid ihr 
eingestiegen.

Gruß Markus

von Timmo H. (masterfx)


Lesenswert?

Für Android programmiert man in Java. Man kann zwar auch in C/C++ 
Programmieren (NDK), aber das ist eigentlich nur für Anwendungen 
interessant bei denen richtig Performance benötigt wird.

Ich habe auch gerade mit der Android-Programmierung angefangen und war 
doch schon angetan von der Entwicklungsumgebung (bzw. die 
Zusammenstellung) die Google dafür bereitgestellt. Einfach das SDK 
runterladen und installieren, und dazu noch Eclipse mit dem 
entsprechenden Plugin (so wie hier beschrieben).
Klappt wunderbar. Das App lässt sich dann entweder über den 
mitgelieferten Emulator testen, oder direkt auf einem über USB 
angeschlossenem Android-Gerät starten und debuggen. Einfach genial.

Damit habe ich dann mehr oder weniger im handumdrehen eine App 
programmiert die via Bluetooth an einen an den Atxmega angeschlossenem 
Bluetooth Serial Adapter 
(http://www.ebay.de/itm/250914926662?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649#ht_1049wt_1187) 
meine RGB-LED Wohnzimmerbeleuchtung steuert.
Im SDK sind schon entsprechende Beispiele dabei womit man sich das alles 
zusammenstricken kann. Einige gute Tutorials findest du auch noch im 
Netz.

Ansonsten kannst du recht schnell mit C# oder VB.Net eine kleines 
Programm "malen" mit dem du über ein Schieberegler (Slider) jeweils ein 
entsprechendes Telegramm über den UART schickst.

von Trabant 5. (trabant500)


Lesenswert?

Also wenn Du Dich schon bissl in C auskennst, dürfte Java nicht ganz so 
schwer für Dich werden. Du könntest Dir aber auch mal GLBasic anschauen. 
Damit kann man auch Programme für PC UND Android schreiben und es ist um 
einiges einfacher als Java.

von linuxi (Gast)


Lesenswert?

Also wenn du bei c bleiben willst dann schau dir gtk an als grafische 
Oberfläche, rs232 in ein c Programm einbinden gibts hier schon 100 
Beispiele oder googeln da wirst schnell fündig! Weiters ist das mit der 
Android app ned gute Idee jedoch musst du entweder Bluetooth nehmen oder 
über WLAN auf deinen uc zugreifen .. deine Sache wie du das realisieren 
willst.
Eins noch rs232 einbinden in Java nennt sich rxtx Google mal danach! 
Jedoch wenn du schon c kannst würde ich dir gtk empfehlen, weil du damit 
dein schieberegler leicht implementieren kannst sowie rs232. Sollte 
keine Große Sache sein!

Du kannst statt rs232 Bluetooth nehmen und am pc spp nehmen also das er 
wie ein serieller Port zu verwenden ist. Wie das auf Android aussieht 
weiß ich nicht!

Mfg

von Timmo H. (masterfx)


Lesenswert?

linuxi schrieb:
> Wie das auf Android aussieht weiß ich nicht!

Dafür ist beim Android ein schönes Beispiel dabei "BluetoothChat": 
http://developer.android.com/resources/samples/BluetoothChat/index.html

Man kann einfach alles rausschmeissen was man nicht benötigt und dann 
einfach via sendMessage einen String an das Bluetooth gerät schicken.

Achja, und damit das mit dem von mir verlinkten Bluetooth-Modul 
funktioniert muss man in der BluetoothChatService.java die UUID von 
(http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/BluetoothChatService.html)
1
UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");
in
1
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
ändern, sonst klappts nicht. Steht auch hier als Hint: 
http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#createInsecureRfcommSocketToServiceRecord(java.util.UUID)

von Markus W. (kornbanane)


Lesenswert?

Vielen dank für die Antworten.

Also, mit dem SDK kann man sich sozusagen für Android seine Oberfläche 
zusammenklicken (kenn das von Delphi früher aus der Schule) und dann 
halt unter Java programmieren. Geht das damit auch für Windows oder 
brauche ich dann eine andere Oberfläche ?


Noch mal zu dem Bluetooth-Serial Adapter.
Ist das denn dann von der programmierung genau das selbe als würde ich 
es über "normalen" RS232 machen? Es ändert sich ja bloß der 
Übertragungsweg aber die Methode an sich ist ja von der Programmseite 
her das selbe?
Und muss man dann nicht mit Fehlererkennungen rumhantieren, da Drahtlose 
übertragung? Dann würde aber wohl auch das Paritätsbit zu wenig 
sicherheit bringen oder?

Gruß Markus

von Heinz (Gast)


Lesenswert?

> Damit habe ich dann mehr oder weniger im handumdrehen eine App
> programmiert die via Bluetooth an einen an den Atxmega angeschlossenem
> Bluetooth Serial Adapter (Ebay-Artikel Nr. 250914926662)
> meine RGB-LED Wohnzimmerbeleuchtung steuert.

Hast du das Projekt veröffentlich?

von Timmo H. (masterfx)


Lesenswert?

Markus Wi*** schrieb:
> Vielen dank für die Antworten.
>
> Also, mit dem SDK kann man sich sozusagen für Android seine Oberfläche
> zusammenklicken (kenn das von Delphi früher aus der Schule) und dann
> halt unter Java programmieren. Geht das damit auch für Windows oder
> brauche ich dann eine andere Oberfläche ?
Du kannst das unter Windows alles entwickeln, aber diese "App" geht dann 
natürlich nicht unter Windows oder so, sondern nur auf Android, da du 
von Steuerelementen gebrauch machst, die Java in der "Grundausstattung" 
eben nicht hat: http://developer.android.com/sdk/installing.html

> Noch mal zu dem Bluetooth-Serial Adapter.
> Ist das denn dann von der programmierung genau das selbe als würde ich
> es über "normalen" RS232 machen? Es ändert sich ja bloß der
> Übertragungsweg aber die Methode an sich ist ja von der Programmseite
> her das selbe?
Für den µC ist es ganz normal UART, also RS232. Den Bluetooth Adapter 
kannst du via AT-Kommandos umstellen (Baudrate etc). Du kannst den 
Bluetooth Adapter auch unter Windows ganz normal Koppeln und erhälst 
dann einen virtuellen Com-Port.

> Und muss man dann nicht mit Fehlererkennungen rumhantieren, da Drahtlose
> übertragung? Dann würde aber wohl auch das Paritätsbit zu wenig
> sicherheit bringen oder?
IMOH ist in Bluetooth schon CRC usw. drin, daher brauchst du dich darum 
nicht kümmern (zumindest hatte ich bisher noch keine 
Übertragungsfehler).

Heinz schrieb:
>> Damit habe ich dann mehr oder weniger im handumdrehen eine App
>> programmiert die via Bluetooth an einen an den Atxmega angeschlossenem
>> Bluetooth Serial Adapter (Ebay-Artikel Nr. 250914926662)
>> meine RGB-LED Wohnzimmerbeleuchtung steuert.
>
> Hast du das Projekt veröffentlich?
Nein, ist auch noch nicht ganz fertig, aber das Video kannst du dir ja 
mal ansehen: http://bilder.pcmx.de/bluetooth_light.mkv

Ist eigentlich nichts anderes als mein Ambilight 
(http://www.pcmx.de/?p=96) nur dass eben anstatt des Rechners das 
Bluetooth-Modul die Farben zum µC sendet.

von oldmax (Gast)


Lesenswert?

Hi
Ich hab jetzt nicht alle Antworten gelesen, aber ich möchte mal auf VB 
hinweisen. Da ist man rel. schnell drin und die notwendigen Module für 
eine ser. Kommunikation integriert. Du kannst dir ja mal OpenEye 
ansehen. Ist zwar mit Delphi geschrieben, aber so in der Art ist es auch 
in Visual BAsic möglich. OpenEye liefert bei Assemblerprogrammen die 
Inhalte der Variablen zur Laufzeit über die ser. Schnittstelle. Such 
einfach mal danach.
Gruß oldmax

von Timmo H. (masterfx)


Lesenswert?

Wurde schon drauf hingewiesen:

Timmo H. schrieb:
> Ansonsten kannst du recht schnell mit C# oder VB.Net eine kleines
> Programm "malen" mit dem du über ein Schieberegler (Slider) jeweils ein
> entsprechendes Telegramm über den UART schickst.

von Richard T. (richi1901)


Lesenswert?

Hallo wollte mal fragen, da ich genau so eine App programmiere.
Hast du den Colorpicker selbst gemacht oder irgendwo gefunden ?

von Timmo H. (masterfx)


Lesenswert?

Richard Treichl schrieb:
> Hallo wollte mal fragen, da ich genau so eine App programmiere.
> Hast du den Colorpicker selbst gemacht oder irgendwo gefunden ?
Der ColorPicker ist bei den Samples vom SDK dabei 
(android-sdk\samples\android-10\ApiDemos) als Teil des "FingerPaint" => 
ColorPickerDialog.java.

Den Gradient zur Helligkeitsauswahl darunter habe ich noch hinzugefügt 
(nach diesem Tutorial 
http://fess16.blogspot.com/2011_06_12_archive.html). Achtung, die 
russischen Kommentare nicht mit in den Quellcode einfügen, dann geht das 
Kompilieren nicht :D

von Richard T. (richi1901)


Lesenswert?

oke danke ;) auf finger Paint wär ich ned gekommen :D

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.