mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik uC parameter mittels Android App steuern


Autor: KingJulian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde gerne Parameter meines uC Programms über eine Android App 
steuern. Welche Verbinung bietet sich da an?
WLAN sehe ich momentan nicht so weil, ich nicht will, dass man das 
Programm jeweils auf das gegebene Netzwerk anpassen muss (Logindaten), 
oder gibt es da zB mit dem ESP8266 die Möglichkeit, dass das Device sein 
eigenes WLAN erstellt? Ist für eine "einfache" End-zu-End Kommunikation 
Bluetooth besser geeignet?

Hat schonmal jemand so etwas implementiert?

Autor: Chase (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke wenn du direkt und über kurze Distanz mit dem µC kommunizieren 
willst ist Bluetooth das beste. Es geht hier ja letzendlich um eine 
einfache Peer2Peer Verbindung zwischen 2 Geräten. Daher würde ich von 
komplizierten WLAN Lösungen absehen.

Autor: Cyblord ---- (cyblord)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HC-06 Modul. Arbeitet ganz hervorragend mit Android zusammen.

Hab ich schon einige Anwendungen mit gemacht.

Nur, hast du schon Erfahrung mit App Erstellung? So einfach mal schnell 
ist das auch nicht gemacht.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur ist Bluetooth auch nicht gerade komfortabler zu bedienen, weil man 
da die Geräte pairen muss. Das nervt vor allem, wenn du mehrere Android 
Geräte wechselweise benutzt.

Autor: Cyblord ---- (cyblord)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan U. schrieb:
> Nur ist Bluetooth auch nicht gerade komfortabler zu bedienen, weil man
> da die Geräte pairen muss. Das nervt vor allem, wenn du mehrere Android
> Geräte wechselweise benutzt.

Aber einmal pairen reicht. Das Gerät verbindet sich ab dann automatisch 
sobald es Strom hat und das Handys in der Nähe ist.

Autor: KingJulian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cyblord -. schrieb:
> HC-06 Modul. Arbeitet ganz hervorragend mit Android zusammen.
>
> Hab ich schon einige Anwendungen mit gemacht.
>
> Nur, hast du schon Erfahrung mit App Erstellung? So einfach mal schnell
> ist das auch nicht gemacht.

Das Modul schau ich mir mal an, danke!

Erfahrung mit Apps selbst nicht, hab mich mal etwas mit dem Android 
Studio befasst und ich sag mal solide Java Kenntnisse - das sollte 
meiner Meinung nach einer überwindebare Hürde sein. Zudem wollte ich 
schon immer mal eine App schreiben.

Zur WLAN Lösung, um Platform unabhängig zu sein könnte man theoretisch 
mit dem ESP8266 eine Website einrichten und das Ganze dann über den 
Browser steuern? Oder funktioniert das Modul nur als AP in einem bereits 
bestehenden WLAN?

Autor: Cyblord ---- (cyblord)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
KingJulian schrieb:
> Cyblord -. schrieb:
>> HC-06 Modul. Arbeitet ganz hervorragend mit Android zusammen.
>>
>> Hab ich schon einige Anwendungen mit gemacht.
>>
>> Nur, hast du schon Erfahrung mit App Erstellung? So einfach mal schnell
>> ist das auch nicht gemacht.
>
> Das Modul schau ich mir mal an, danke!
>
> Erfahrung mit Apps selbst nicht, hab mich mal etwas mit dem Android
> Studio befasst und ich sag mal solide Java Kenntnisse - das sollte
> meiner Meinung nach einer überwindebare Hürde sein. Zudem wollte ich
> schon immer mal eine App schreiben.

Ja dann sollte das kein Problem sein.

Hier gibt's den Einstieg zum Android und Bluetooth: 
https://developer.android.com/guide/topics/connect...

Auf der HW-Seite muss man so gut wie nichts machen. Das HC-06 ist ein 
Slave-Only Modul.

: Bearbeitet durch User
Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aber einmal pairen reicht.

Nur, wenn du dich auf EIN Android Gerät beschränkst. Ansonsten musst du 
bei jedem Wechsel neu pairen.

> Zur WLAN Lösung, um Platform unabhängig zu sein könnte man theoretisch
> ... eine Website einrichten und das Ganze dann über den Browser steuern?

Ja, kann man machen. Hier kannst du Dir Anregungen holen:

Mit Webserver: http://stefanfrings.de/net_io/index.html
Nur Bluetooth: http://stefanfrings.de/serial_io/index.html
Mit ESP8266: http://stefanfrings.de/wlan_io/index.html

: Bearbeitet durch User
Autor: KingJulian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, vielen Dank für die Links... lese mich da mal durch!

Autor: C. H. (haaz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NFC kommt nicht in Frage?

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nur ist Bluetooth auch nicht gerade komfortabler zu bedienen, weil man
> da die Geräte pairen muss.

Nur bei altem Bluetooth. Bei BLE geht es auch so. Das ist ja gerade fuer 
so Steuerungssachen erfunden worden.

Olaf

Autor: KingJulian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nun hier so ein HC-06 Modul bestellt und das mal angeschlossen. 
Nun habe ich aber das Problem, dass ich per UART nur 1 Zeichen(das Erste 
das ich sende) empfangen kann - steh aber grad auf dem Schlauch warum 
das so sein sollte.

Meine Idee wäre, jeweils zu prüfen ob das RXNE Flag gesetzt ist und wenn 
ja zu lesen.
extern int uart2_read(void){
  uint8_t ch;
   
  /* Check if receive data register is empty */
  if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET){
    ch = (uint8_t) USART_ReceiveData(USART2);    
    return ch;
  }
  return -1;
}

Hat das Ganze irgendwo einen Haken den ich übersehen habe?
Am BT Modul liegt es nicht, wenn ich es direkt(via USB - serial Adapter) 
auslese kommt alles an.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss nicht, was du da für einen µC verwendest. Aber bei einigen 
muss man das received-Flag "zu Fuß" löschen, wenn man ohne 
receive-Interrupt arbeitet.

Autor: esp8266 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
KingJulian schrieb:
> gibt es da zB mit dem ESP8266 die Möglichkeit, dass das Device sein
> eigenes WLAN erstellt?

...ja, geht: der Modus nennt sich z.B. in nodemcu wifi.softap bzw. in 
Kombination (Station/AP) wifi.stationap.

Autor: KingJulian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan U. schrieb:
> Ich weiss nicht, was du da für einen µC verwendest. Aber bei
> einigen
> muss man das received-Flag "zu Fuß" löschen, wenn man ohne
> receive-Interrupt arbeitet.

Es ist ein STM32F051, im Reference Manual steht "In single buffer mode, 
clearing the RXNE bit is performed by a software read to the USART_RDR 
register" - das wäre nach meinem Verständnis das was
USART_ReceiveData(USART2)
 macht.
Aber sonst versuch ich es mal mit manuellem clearen.

Autor: KingJulian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder wär es besser einen UART interrupt zu benutzten anstatt das Flag 
periodisch zu überprüfen?
Zur Ergänzung, dies ist die Config des USART2:
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART2, &USART_InitStructure);

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> das wäre nach meinem Verständnis das was USART_ReceiveData(USART2) macht.

Ja, so verstehe ich den Satz auch.

Autor: KingJulian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan U. schrieb:
>> das wäre nach meinem Verständnis das was
> USART_ReceiveData(USART2) macht.
>
> Ja, so verstehe ich den Satz auch.

Ich denke aber auch, dass er das macht - das Problem ist eher, dass es 
nicht mehr gesetzt wird. Nach dem ersten empfangen Zeichen gibt
extern int uart2_read(void){
  uint8_t ch;
   
  /* Check if receive data register is empty */
  if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET){
    ch = (uint8_t) USART_ReceiveData(USART2);    
    return ch;
  }
  return -1;
}

nämlich nur noch -1 als Rückgabewert.

Autor: KingJulian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint, dass es mit UART Interrupt klappt, verstehe zwar noch nicht 
warum das andere Konzept nicht funktioniert aber okay :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.