uC parameter mittels Android App steuern

Gast #4696993
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?
Gast #4697003
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.
Gast #4697055
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?
#4697059
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/connectivity/bluetooth.html

Auf der HW-Seite muss man so gut wie nichts machen. Das HC-06 ist ein 
Slave-Only Modul.
Gast #4697066
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
Gast #4697260
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
Gast #4732468
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.
1
extern int uart2_read(void){
2
  uint8_t ch;
3
   
4
  /* Check if receive data register is empty */
5
  if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET){
6
    ch = (uint8_t) USART_ReceiveData(USART2);    
7
    return ch;
8
  }
9
  return -1;
10
}

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.
Gast #4732514
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
1
USART_ReceiveData(USART2)
 macht.
Aber sonst versuch ich es mal mit manuellem clearen.
Gast #4732597
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:
1
USART_InitStructure.USART_BaudRate = 9600;
2
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
3
USART_InitStructure.USART_StopBits = USART_StopBits_1;
4
USART_InitStructure.USART_Parity = USART_Parity_No;
5
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
6
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
7
USART_Init(USART2, &USART_InitStructure);
Gast #4732663
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
1
extern int uart2_read(void){
2
  uint8_t ch;
3
   
4
  /* Check if receive data register is empty */
5
  if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET){
6
    ch = (uint8_t) USART_ReceiveData(USART2);    
7
    return ch;
8
  }
9
  return -1;
10
}

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

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