Jump to content
Yllesia

Récupérer les informations de la batterie par le port micro USB

Recommended Posts

Bonjour à tous, j'ai pour projet de réaliser un dock de chargement de téléphone avec un alumage LED en fonction du poucentage de charge de la batterie. N'ayant pas reussi à faire la mesure du pourcentage de charge avec de l'électronique sur le câble de chargement je me demandais si il était possible de créer une tâche de fond pour récupérer les informations de la batterie (pourcentage de charge, temps de charge restant, température, voltage, amperage) et de les transmettres via le cable micro usb à une arduino. 

Le top serait que le programme sur l'arduino envoie un signal pour démarrer la tâche de fond lorsque le téléphone est branché dessus. 

Je ne pense pas que récupérer et envoyer ces informations soit possible sans appli codé sur le téléphone mais je me trompe peut être.

Je precise tout de même que je n'ai encore jamais programmé d'applications Android.

 

Merci d'avance de vos réponses à bientôt  : )

Share this post


Link to post
Share on other sites

Avec ce qu'il faut d'installé dans le Linux de ton Arduino pour qu'ADB fonctionne, et si le smartphone est configuré avec le debug USB activé, tu peux récupérer l'info sans programmer une appli par des commandes adb shell, du genre :

adb shell cat /sys/class/power_supply/battery/status

Voir tout ce qu'il y a dans /sys/class/power_supply/battery, il y a pas mal d'infos récupérables

De même, la commande adb shell am start ... permet de lancer une appli : https://falsinsoft.blogspot.com/2015/05/launch-app-from-android-shell-terminal.html

Share this post


Link to post
Share on other sites

Jai réussi à obtenir quelques informations sur la batterie depuis le terminal de mon pc et ADB  : 

Adb shell dumpsys battery 

Current battery Service state  : 

Ac powered  : false

USB powered  : true

Status : 2

Health : 2

Present  : true

Level : 54

Scale  : 100

Voltage  : 3919

Temperature : 237

Technology : Li-ion

 

Sais tu comment lancer cette fonction depuis une arduino  ? Faut-il une arduino speciale ou une nano fait laffaire ? 

Je me demandais aussi si le téléphone prenais en compte la quick charge pendant que je récupère les données sur l'Arduino?

Share this post


Link to post
Share on other sites

Si ton Arduino tourne une variante de Linux tu dois pouvoir installer ADB dessus comme sur un Linux desktop ordinaire.

Ah... à condition que les binaires Linux ARM d'ADB existent... ça je ne l'ai pas vérifié.

A priori oui : https://github.com/bonnyfone/adb-arm ou tu dois au moins pouvoir le recompiler.

Sur un Linux desktop, il y a aussi un peu de configuration à faire pour que le device USB ADB soit détecté.

Ca doit tourner autour de ça, à adapter pour la distribution qui tourne sur ton Arduino :

 

  1. Create an empty file in the /etc/udev/rules.d/ directory with the following name:
    • If you’re using the Ubuntu version Gusty/Hardy/Dapper, create the file with the name 50-android.rules. Execute the following command to do so:
      sudo gedit /etc/udev/rules.d/50-android.rules
    • If you’re using the Ubuntu version Karmic Koala/Lucid Lynx/Maverick Meerkat, create the file with the name 70-android.rules. Execute the following command to do so:
      sudo gedit /etc/udev/rules.d/70-android.rules
  2. Type the following content in the editor and save it.
    • For Gusty/Hardy: SUBSYSTEM==”usb”, SYSFS{idVendor}==”USB-VENDOR-ID”, MODE=”0666″
    • For Dapper: SUBSYSTEM==”usb_device”, SYSFS{idVendor}==”USB-VENDOR-ID”, MODE=”0666″
    • For Karmic Koala: SUBSYSTEM==”usb”, SYSFS{idVendor}==”USB-VENDOR-ID”, MODE=”0666″
    • For Lucid Lynx: SUBSYSTEM==”usb”, SYSFS{idVendor}==”USB-VENDOR-ID”, MODE=”0666″
    • For Maverick Meerkat: SUBSYSTEM==”usb”, ATTR{idVendor}==”USB-VENDOR-ID”, MODE=”0666″

    Change the USB-VENDOR-ID string with the USB vendor ID of your device. You can get it from the table below:

    Manufacturer USB Vendor ID
    Acer 0502
    Dell 413c
    Foxconn 0489
    Garmin-Asus 091E
    HTC (Older Phones) 0bb4
    HTC (Newer phones) 18d1
    Huawei 12d1
    Kyocera 0482
    LG 1004
    Motorola 22b8
    Nexus One/S 18d1
    Nvidia 0955
    Pantech 10A9
    Samsung 04e8
    Sharp 04dd
    Sony Ericsson 0fce
    ZTE 19D2
  3. Now you have to append read permissions to the created file for all the profiles in the PC. Use one of the following command to do this:
    sudo chmod a+rx /etc/udev/rules.d/50-android.rules

    or

    sudo chmod a+rx /etc/udev/rules.d/70-android.rules
  4. Reboot your PC for the changes to take place.

 

Pour ce qui est du quick charge, je ne vois pas pourquoi ADB interférerait avec ça.

Share this post


Link to post
Share on other sites

Je ne vois pas du tout comment faire tourner une variante de linux sur une Arduino. Le micro processeur de l’Arduino n’exécute pas simplement un code rentré dans sa mémoire ?

 

Pour ce qui est du quick charge, je ne sais pas si quick charge nécessite simplement les fils + et - du câble usb ou si il a besoin des fils data aussi. Je suppose que les commande exécutées par ADB sont lancées et transmises uniquement sur les fils data. Si c'est le cas je pourrais alors charger le téléphone en quick charge par les fils + et - et récupérer les données sur la batterie via ADB et les fils data sur l’Arduino.

 

Share this post


Link to post
Share on other sites

Excuse-moi, je me suis planté. Je croyais que l'Arduino était un truc plus ou moins comme un Raspberry Pi, mais ce n'est pas le cas. Il n'y a pas vraiment d'O/S à bord c'est ça ?

Dans ce cas, je ne vois plus du tout...

Share this post


Link to post
Share on other sites

Non il n'y a effectivement pas d'OS a bord de l’Arduino. 

Peut être qu'en passant par la communication série ou I2C de l’Arduino il serait possible de traduire une commande afin de l'exécuter ?

Share this post


Link to post
Share on other sites

La, franchement je n'en sais rien. Ca me dépasse. Je n'ai aucune idée de la façon dont on code pour ce truc-là :huh:

Share this post


Link to post
Share on other sites

Bon toujours aucune solution pour mon problème, j'ai essayé pas mal de choses mais ça ne donne rien de vraiment exploitable...

Penses-tu que par le wifi ou par Bluetooth je pourrais récupérer les données de la batterie?

Share this post


Link to post
Share on other sites

Ca me parait compliqué sans mettre en place un protocole client-serveur et donc développer une appli qui tournerait en permance sur le smartphone (ou seulement quand on le branche en recharge ? il doit être possible pour une appli de se déclencher là-dessus)

 

Ca dépasse largement mes compétences de programmation sous Android.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.






×
×
  • Create New...