Question:
Comment un appareil (dashcam) reconnaît-il s'il est connecté à un ordinateur ou à une source d'alimentation?
A.S.
2018-04-10 18:13:04 UTC
view on stackexchange narkive permalink

J'ai cette dashcam A118, que je souhaite intégrer à un Pi.

Je souhaite enregistrer sur une carte SD montée en conduisant, et une fois chez moi à portée WiFi, pour télécharger les fichiers sur la carte SD via le Pi vers mon réseau domestique.

Cette caméra, lorsqu'elle est connectée à une source 5 V sur l'allume-cigare de mon véhicule, la caméra commence à enregistrer immédiatement.

Lorsque je le connecte à mon ordinateur, il me demande (sur l'écran de la dashcam) s'il faut fonctionner en mode "Mass Storage" ou "PC Camera".

Cette vidéo montre comment un problème de caméra différente a été résolu en isolant les bornes TX et RX de la connexion.

Comment l'appareil photo (ou un périphérique USB ordinaire, comme un téléphone aussi) sait-il s'il est connecté à une simple source d'alimentation ou à un ordinateur?

De plus, comment pourrais-je utiliser ce fait pour contrôler la dashcam, alors quand hors de ma portée Wifi, elle enregistre comme elle le ferait lorsque seule l'alimentation est fournie, et lorsqu'elle est à portée Wifi pour revenir au "Stockage de masse" Pi peut accéder aux fichiers vidéo et les transférer.

Je suppose que les relais fonctionneraient, mais leur grande taille ne le rend pas pratique. Les optocoupleurs seraient-ils une meilleure alternative, ou y a-t-il d'autres suggestions que je pourrais examiner?

Je pensais à la même chose plus tôt en rentrant du travail en voiture.Je pense qu'il vaut peut-être mieux utiliser simplement une caméra de tableau de bord qui prend en charge cela en premier lieu.Bien qu'il faudrait un convertisseur abaisseur de protection basse tension câblé.
Cinq réponses:
#1
+7
user4574
2018-04-10 19:08:10 UTC
view on stackexchange narkive permalink

La spécification de charge de la batterie USB est utilisée par de nombreux périphériques USB pour déterminer le type de port auquel ils sont connectés.

Les principaux types de ports sont ...

Port de charge dédié: le chargeur indique qu'il s'agit d'un port de charge dédié en court-circuitant les lignes D + et D- ensemble.

Port aval standard: un port USB prenant en charge jusqu'à 500 mA de courant de charge (pour un port USB 2.0), plus les données USB. L'appareil énumère sur le bus USB pour déterminer la quantité de courant qu'il peut tirer. Le champ bMaxPower dans le descripteur de périphérique USB est utilisé pour demander à l'hôte l'alimentation.

Port de charge en aval: un port USB qui prend en charge jusqu'à 1,5 A de tourelle de charge, plus les données USB. L'appareil détermine qu'il est connecté à un CDP en basculant d'abord la ligne D. Si la ligne D + suit la ligne D, l'appareil sait qu'il est connecté à une sorte de chargeur. Ensuite, l'appareil effectue une détection secondaire en basculant la ligne D +. Si la ligne D reste faible, l'appareil sait que les lignes ne sont pas court-circuitées, il doit donc être connecté à un port de charge en aval.

http://www.usb.org/developers/docs/devclass_docs/batt_charging_1_1.zip

Un convertisseur USB de voiture standard 12 V à 5 V serait un port de charge dédié, n'est-ce pas?Ce que je pourrais facilement implémenter avec la suggestion mux dans l'autre réponse en connectant les lignes D + et D-?
Oui, un adaptateur 12V à 5V est un port de charge dédié.
@user96037, pas nécessairement, certains adaptateurs de voiture peuvent avoir une signature de charge Apple, qui est très différente de la signature DCP de la Chine.
-1 La description du port aval standard est à l'envers.Un appareil «n'énumère pas», c'est l'hôte USB qui tente d'énumérer un appareil. L'appareil ne «détermine pas maintenant beaucoup de courant qu'il peut tirer», c'est l'hôte USB qui détermine s'il a assez de puissance dans sonbudget pour PERMETTRE à l'appareil de fonctionner.Le champ bMaxPower sert à INFORMER l'hôte sur la consommation électrique potentielle, bien que l'on puisse interpréter ce mécanisme comme «demander».
@AliChen J'ai lu une bonne partie des spécifications USB et je pense que ma description était exacte.Mon explication peut ne pas vous avoir été claire lorsque vous l'avez lue.Quand j'ai dit que l'appareil «énumère», je voulais seulement dire qu'il participe au processus d'énumération qui est contrôlé par l'hôte.Je n'ai jamais dit que l'appareil contrôlait le processus de dénombrement.De plus, je connais le fonctionnement des descripteurs de périphériques.J'ai pris soin de dire que le champ bMaxPower est utilisé par l'appareil pour "DEMANDER" l'alimentation de l'hôte.L'hôte peut toujours décider s'il souhaite autoriser cet appareil à l'avoir.
@user96037 veuillez continuer à étudier les spécifications.J'ai terminé ce processus il y a 18 ans.Encore un endroit à lire pour vous: un port USB standard ne prend pas en charge «jusqu'à 500 mA», il doit prendre en charge «au moins 5 unités de charge», voir Section 7.2.1 Remarque: AU MOINS.J'ai décliné votre réponse parce qu'elle contient tellement d'inexactitudes de ce genre.
@AliChen mais n'est pas l'unité de charge en USB 2.0 100mA.Donc 100 mA x 5 = 500 mA.Il ne semble pas que l'appareil soit branché sur un concentrateur où la consommation électrique d'autres appareils entrerait en jeu.
#2
+5
nschurando
2018-04-10 18:54:29 UTC
view on stackexchange narkive permalink

Pour être très concis, les périphériques USB utilisent les lignes D + / D- pour détecter s'ils sont connectés ou non à un hôte USB ou à un chargeur.

Si vous vouliez que l'appareil alterne entre les deux modes que vous avez décrits, je pourrais vous suggérer d'utiliser un IC multiplex USB 2: 1 tel que FSUSB43 câblé aux gpios du Raspberry Pi.Quelque chose comme ça:

enter image description here

Comme @dwizum l'a souligné dans le commentaire ci-dessous, vous devrez également ajouter un transistor sur la ligne VBUS 5V reliant la caméra de tableau de bord pour la redémarrer, car la commutation D + / D- uniquement peut entraîner un comportement non défini.Pour simplifier, un cycle d'alimentation de la ligne VBUS vers le périphérique USB lors du changement le forcera à être prêt pour une nouvelle découverte.

À partir de là, vous pouvez facilement écrire vos propres scripts exécutés sur le Raspberry Pi en modifiant les états de ces GPIOS, peut-être à l'aide de WiringPi, en fonction de différents événements tels que la liste des points d'accès Wi-Fi disponibles.

Dans ce cas, les connexions D1 + et D1- pourraient-elles simplement rester flottantes?Ou sont-ils connectés (à GND par exemple) dans un chargeur traditionnel (bien que je ne pense pas que ce soit le cas)?
Je recommanderais fortement de les lier aux lignes D + / D- du chargeur de voiture USB, car même s'ils ne transfèrent pas réellement de données, ils pourraient toujours être utilisés par le chargeur de voiture pour annoncer la quantité de courant qu'il est capable de fournir.à la caméra de tableau de bord qui, je suppose, nécessite plus que la valeur par défaut de 500 mA pour fonctionner.Consultez cette [présentation de la révision 1.2 de charge de la batterie USB] (https://www.maximintegrated.com/en/app-notes/index.mvp/id/5801).
Juste un commentaire - la commutation des broches de données de la dashcam entre les deux USB (Pi vs chargeur de voiture) sans également changer les broches d'alimentation USB de la dashcam peut ne pas fonctionner ou entraîner un comportement étrange: pour autant que je sache, il n'y a pas de protocole standard pour l'échangeLes broches de données USB vers un nouvel hôte pendant que les broches d'alimentation restent actives.Quelqu'un peut me corriger si je me trompe.Le mettre hors tension, changer les broches de données, puis le remettre sous tension relancera la poignée de main et lui permettra de reconnaître le commutateur.
En effet, merci de l'avoir signalé.J'ai modifié ma réponse en conséquence.
#3
+3
Bimpelrekkie
2018-04-10 18:34:06 UTC
view on stackexchange narkive permalink

Comment l'appareil photo (ou un périphérique USB ordinaire, comme un téléphone aussi) sait-il s'il est connecté à une simple source d'alimentation ou à un ordinateur?

L'USB a 4 connexions: 2 pour l'alimentation 5 V et 2 pour les données.

Un adaptateur secteur ne répond généralement pas aux signaux sur les lignes de données (à l'exception des protocoles de charge rapide, mais c'est plus une détection de niveau que des données transférées).

Un PC répond aux signaux sur les lignes de données. L'appareil photo peut demander une connexion USB, puis le PC accordera cette demande (ou non). Certaines informations seront échangées.

Donc, fondamentalement, la caméra "parle" simplement sur les lignes de données USB dès qu'elle détecte l'alimentation sur l'entrée USB. S'il n'y a pas de réponse, il doit s'agir d'une alimentation "stupide". S'il y a une réponse, il doit s'agir d'un PC (hôte USB).

Le contrôle du comportement de la caméra en fonction de la portée du WiFi est quelque chose qui pourrait être fait par le logiciel (firmware) fonctionnant à l'intérieur de la caméra. En général, vous ne pouvez pas et ne devez pas changer cela. Faites une erreur et la caméra deviendra inutile (inutilisable).

J'étais sur le point de commencer à écrire ma réponse quand cela est apparu!A peu près tout ce que j'allais dire!+1!
Alors, est-ce l'appareil qui initie la communication, et quand il reçoit une réponse, il sait qu'il s'agit d'un ordinateur?Je n'ai pas l'intention de jouer avec le firmware, je ne sais pas comment.Ce que je veux faire, c'est contrôler la connexion afin que lorsque l'état du Wifi change, la caméra se réinitialise, avec le TX RX connecté lorsqu'il est à portée et déconnecté lorsqu'il est hors de portée.Comment pourrais-je faire ça?Ou y a-t-il une raison pour laquelle cela pourrait ne pas fonctionner?
À mon avis, cette partie de la question entre dans la catégorie * "Je veux quelque chose de complexe mais je n'ai aucune idée de comment le faire et je n'ai aucune expérience en électronique non plus". * Votre première étape devrait être de faire basculer le RPi comme une broche IOselon que le réseau existe ou non.Contrôlez ensuite un relais avec ce signal de broche IO et activez / désactivez l'USB.Je recommanderais un relais car la commutation USB avec l'électronique nécessitera une puce, il est facile de visser les signaux USB pour que cela ne fonctionne plus ou n'endommage pas la caméra.
Le réseau et d'autres parties d'un tel système ne sont que des informations de base, les gens ont tendance à les demander afin de mieux savoir de quoi il s'agit exactement.Ma question spécifique dans ce cas était de savoir comment changer la communication entre le Pi et la caméra.Comme les autres réponses l'ont souligné, j'utiliserai un multiplexeur pour basculer entre le Pi et les lignes D + D court-circuitées.
#4
+2
JimmyB
2018-04-10 19:39:03 UTC
view on stackexchange narkive permalink

Vous pouvez essayer de désactiver / activer les ports USB du Raspberry selon que vous souhaitez ou non que la caméra détecte une connexion de données,

Pour couper l'alimentation des ports USB (cela coupe également l'alimentation Ethernet):

echo '1-1' |sudo tee / sys / bus / usb / drivers / usb / unbind

Pour remettre sous tension

echo '1-1' |sudo tee / sys / bus / usb / drivers / usb / bind

( https://www.raspberrypi.org/forums/viewtopic.php?t=172313#p1217773)

IIRC, au moins sur les anciens Pi, cela ne couperait pas les lignes électriques des ports USB mais seulement l'alimentation de la puce USB / Ethernet du Pi, désactivant efficacement toute communication et énumération sur ces ports USB / Ethernet;un appareil connecté à l'un des ports désactivés ne pourra pas détecter qu'il est connecté à autre chose qu'une source d'alimentation USB.

#5
+1
Ale..chenski
2018-04-11 00:19:13 UTC
view on stackexchange narkive permalink

Les périphériques USB (et les dashcams en particulier) sont des périphériques intelligents.Lorsqu'ils sont connectés à l'hôte USB, l'hôte effectue une énumération et émet toutes les autres activités de l'interface USB.Et un périphérique USB en prend note.

Lorsqu'il est connecté à un chargeur muet, il n'y a pas d'énumération / communication USB.C'est ainsi que la dashcam / tout ce qui connaît la différence.

En ce qui concerne le problème réel, pourquoi la dashcam n'enregistre pas en interne lorsqu'elle est connectée à un hôte USB fonctionnel, c'est une question de conception du logiciel de la dashcam - elle est conçue de cette façon.De toute évidence, lorsque vous coupez les fils D + / D- dans la connexion PC-dashcam (pas Tx et Rx !!!), la communication USB cesse et la dashcam passe en mode standard alimenté par le chargeur.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...