Forum: Mikrocontroller und Digitale Elektronik Handy Laden und mit Mikrocontroller gleichzeitig Akkustand abfragen?


von Markus (Gast)


Lesenswert?

Hallo ich bin absoluter neuling und entschuldige mich schonmal für dumme 
fragen.

Ich möchte während das Handy geladen wird per Mikrocontroller über die 
USB Verbindung mit dem Handy abfragen wie viel Akku das Handy gerade 
hat, während es lädt. Wenn das Handy mehr als 50% Akku hat soll eine Led 
Lampe leuchten.

Welcher Controller ist notwendig um dies zu tun, und wie programmiere 
ich das?
Ganz dumm gefragt, wie geht das?

von Joe F. (easylife)


Lesenswert?

Reihenfolge der Aufgaben:
1. Finde heraus, welches Handy du überhaupt hast
2. Lerne eine Programmiersprache für Mikrocontroller (z.B. C)
3. Suche dir einen Mikrocontroller aus, der einen USB Host hat
4. Lerne diesen zu programmieren
5. Arbeite dich in USB ein
6. Lerne eine Programmiersprache, um eine Applikation für dein Handy zu 
entwickeln
7. Programmiere eine Applikation für dein Handy, die den Akkustand 
abfragt, und per USB mit deinem Mikrocontroller kommuniziert
8. Ich helfe dir dann in 2 Jahren, wenn es darum geht, die LED an den 
Mikrocontroller anzuschließen.

von Flip B. (frickelfreak)


Lesenswert?

Entweder Handy-firmware reverse-engineeren oder eigene Software auf das 
handy bringen, um den Ladezustand überhaupt per usb abfragbar zu machen. 
(akkustand dürfte in /proc  oder /sys irgendwo stehen)
Dann einen Controller mit Usb Host nehmen und abfragen (empfehle der 
einfachkeit halber ein Raspberry pi oder ähnliches wo schon ein linux 
drauf läuft.

von Markus (Gast)


Lesenswert?

Heißt das, ich brauche eine App auf dem Handy um den Akkustand 
herauszufinden?
Geht das nicht, wenn ich nur den Mikrocontroller mit usb hab und dass er 
das durch die usb verbindung rausbekommt? Hab irgendwo was gelesen dass 
man USB Theathering oder sowas aktivieren muss beim handy

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Markus schrieb:
> Hab irgendwo was gelesen dass
> man USB Theathering oder sowas aktivieren muss beim handy

Warum sollte ein Handy jemals über USB den Ladezustandes seines Akku 
rausrücken? Und mit welchem USB Profil sollte das wohl gehen? Nur fürs 
Handy selbst ist sein Ladezustand wichtig.

Nein, das Telefon erkennt nur, was für eine Sorte USB Host an der 
anderen Seite ist und schlägt dann vor, nur zu laden, sich als 
Massenspeicher anzubinden oder, oder...

von S. R. (svenska)


Lesenswert?

Nein, du kannst ein Handy nicht einfach so per USB fragen, wie voll 
dessen Akku ist. Dazu brauchst du mindestens eine App auf dem 
betreffenden Gerät, welche den Ladezustand auf der USB-Schnittstelle 
erzählt.

Oder per Bluetooth.

von Jim M. (turboj)


Lesenswert?

Markus schrieb:
> Ich möchte während das Handy geladen wird per Mikrocontroller über die
> USB Verbindung mit dem Handy abfragen wie viel Akku das Handy gerade
> hat, während es lädt. Wenn das Handy mehr als 50% Akku hat soll eine Led
> Lampe leuchten.

Wenn Du währen des Ladens (USB-) Daten übertragen willst dauert das 
Laden deutlich länger, denn das Mobiltelefon darf dann nur noch 500 mA 
Stom aufnehmen.

S. R. schrieb:
> Oder per Bluetooth.

Das dürfte die bessere Lösung sein. Eine App auf dem Telefon wird 
ohnehin benötigt.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

S. R. schrieb:
> Dazu brauchst du mindestens eine App auf dem
> betreffenden Gerät, welche den Ladezustand auf der USB-Schnittstelle
> erzählt.

Und das ist ja nur die eine Hälfte. Auf der anderen Seite muss auch noch 
ein USB Host hängen, der sowas auswerten kann. Ein HID Devicetreiber 
weiss davon nichts und alle anderen Treiber muss man sich selber 
schreiben. Nicht mal USB Funkmäuse geben ihren Batteriezustand preis und 
Bluetooth Mäuse auch nicht.

von Putin (Gast)


Lesenswert?

Eingebaute LEd aktivieren, fertig.

von Stefan F. (Gast)


Lesenswert?

Bei Android Smartphones kann man den Batteriestatus über die USB 
Schnittstelle abfragen, wenn die "Entwickleroptionen" und darin das 
"Debugging über USB" aktiviert sind.

Einfach das Android SDK auf einen PC installieren, konfigurieren und 
folgenden Befehl ausführen:

./adb shell cat /sys/class/power_supply/battery/batt_attr_text

Nun musst du "nur" noch die Funktionen von adb mit einem Mikrocontroller 
nachbilden. Ich würde dafür aber lieber einen mini PC verwenden - ist 
ganz bestimmt viel viel einfacher.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

S. R. schrieb:
> Dazu brauchst du mindestens eine App auf dem
> betreffenden Gerät, welche den Ladezustand auf der USB-Schnittstelle
> erzählt.
>
> Oder per Bluetooth.

Kopple ich mein Android-Handy per Bluetooth mit der Freisprechanlage 
meines Autos, zeigt dieses auf dem Radio-Display neben den 
Netzwerkbalken auch den Batterieladezustand des Handys an.

 - Ohne spezielle App
 - Ohne Kabelverbindung

Es muss also über Bluetooth ziemlich einfach gehen.

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Per Bluetooth sollte bei allen Handys gehen, da es eine Grundfunktion 
für die Freisprechanlage ist. Ist sicherlich ein einfacherer Ansatz, da 
diese Schnittstelle standardisiert sein muss.
Christian_RX7

von Markus (Gast)


Lesenswert?

Stefan U. schrieb:
> Bei Android Smartphones kann man den Batteriestatus über die USB
> Schnittstelle abfragen, wenn die "Entwickleroptionen" und darin das
> "Debugging über USB" aktiviert sind.
>
> Einfach das Android SDK auf einen PC installieren, konfigurieren und
> folgenden Befehl ausführen:
>
> ./adb shell cat /sys/class/power_supply/battery/batt_attr_text
>
> Nun musst du "nur" noch die Funktionen von adb mit einem Mikrocontroller
> nachbilden. Ich würde dafür aber lieber einen mini PC verwenden - ist
> ganz bestimmt viel viel einfacher.

Das hört sich doch nach ner guten Lösung an. Aber was meinst du mit Mini 
PC? Ich will ja dass der chip diesen batteriestatus verwendet um eine 
Lampe an bzw aus zuschalten.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Kopple ich mein Android-Handy per Bluetooth mit der Freisprechanlage
> meines Autos, zeigt dieses auf dem Radio-Display neben den
> Netzwerkbalken auch den Batterieladezustand des Handys an.

Ich habe mal ein wenig recherchiert. Das Geheimnis, wie man einem 
Mobiltelefon über Bluetooth den Akkuladezustand entlockt, ist in der 
sogenannten "Hands free profile specification", welche die Kommunikation 
mit einer Freisprechanlage beschreibt, dokumentiert:

  https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=238193&_ga=1.95975068.1635866346.1453465510

Mit dem Kommando AT+CMER kann man den Ladezustand auslesen. Die Antwort 
sieht folgendermaßen aus:

     +CIEV: <Battery level Ind>,<Value>

Siehe Kapitel 4.7 in obiger Dokumentation.

Also:

  - Bluetooth-Adapter an µC
  - Bluetooth Verbindung herstellen mit dem Mobiltelefon
  - Ladezustand abfragen
  - Wenn Schwellwert erreicht, LED an.

In das "Hands free profile" muss man sich natürlich erstmal reinfuchsen. 
Die Dokumentation (siehe obigen Link) scheint aber ausführlich genug 
dafür zu sein.

von Stefan F. (Gast)


Lesenswert?

Mini PC ist Mini PC, was gibt's da zu erklären?

https://www.google.de/search?q=mini+PC

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Frank M. schrieb:
> - Bluetooth-Adapter an µC

Zusatz: nicht jeder Bluetooth-Adapter unterstützt das "Hands free 
profile".

In

   https://www.mikrocontroller.net/articles/Bluetooth

finde ich nur eines, wenn ich nach "HFP" suche.

von Noch einer (Gast)


Lesenswert?

> Mini PC ist Mini PC, was gibt's da zu erklären?

Würde eher so etwas vorschlagen. Kostet nur einen Bruchteil und hat die 
passenden Anschlüsse für die Lampe. Mit etwas gutem Willen, könnte man 
es so gerade noch als "Mikrocontroller mit USB-Host" bezeichnen.

http://www.golem.de/news/raspberry-pi-zero-angetestet-der-bastelrechner-fuer-stille-dunkle-ecken-1601-118584.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.