Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Projet] Automate à café - Programmation du script Python
#1
Salut à tous,

Je me suis récemment acheté un Raspberry PI pour m'aider à réaliser un projet. Je vous l'explique.

Actuellement un technicien doit régulièrement aller à l'automate pour le remplir et aussi récupérer un fichier qui contient les données de l'automate (ce qu'il a vendu etc).
L'idée ça serait de connecter le Raspberry PI à l'automate et qu'il envoie directement le fichier sur un serveur FTP pour qu'ensuite on viennent le récupérer. Cela éviterais des déplacements inutiles au technicien.

L'automate a une sortie USB. Dès qu'on l'y branche une lé USB il transfert directement le fichier dessus. Il faudrait donc que je relie un port USB du PI à l'automate et que je simule cette connection en en désactivant le port USB et en le réactivant, si c'est possible ? Après je ne sais pas si l'automate verra le PI comme une zone de stockage et si oui ou est-ce qu'il transfert le fichier?
Ensuite il faut envoyer le fichier sur le serveur FTP.

Si je poste ce sujet c'est parce que j'ai besoin de votre aide Smile Je ne m'y connais pas beaucoup en linux et encore moins en Raspberry PI. Je suis sûr que parmi vous il y a des caïd Tongue

Si vous pouviez déjà m'aider à répondre à ces questions:

- Peut activer/désactiver le port USB du PI?
- Est-ce que le PI peut être vu comme une zone de stockage?
- Ou serait transféré le fichier?
- Connaissez vous un tuto pour envoyer une fichier sur un FTP?

Voilà j'espère que vous pourrez m'aider.

Bonne journée
Yop
Répondre
#2
Bon, sur la première partie de l'équation, joker. Là, va falloir tester, et savoir ce qui motorise ton automate pour voir dans quels cas ça écrit automatiquement sur ta carte usb (uniquement si fat32 ?). T'en a un de test ? Pour connecter une fiche femelle usb à une autre fiche femelle usb (là où tu insère ta clé usb, et le port usb du rpi), va te falloir un cable spécifique quand bien même ça marcherai out of the box (ce dont je doute !).

Sur la seconde partie (envoie d'un fichier), c'est trivial à faire si tu as accès à du réseau (sinon, faut que tu trouve d'abord le moyen de raccorder ton rpi au web), soit via un curl, soit (mieux car plus sécurisé) en scp si ton serveur ftp est en fait du sftp. Si la donnée du fichier est structurée, tu pourrai même automatiser le travail de la personne qui doit ensuite ouvrir le fichier et insérer les données dans ton système (mais dans ce cas : sécurité, sécurité, sécurité ! Smile )

Quand j'étais jeune, on hackait la machine à photocopies de la fac' en court-circuitant le monnayeur via un trombonne. Semblerai que l'état de l'art en machines à payer a progressé, hélas ! Big Grin
Répondre
#3
Merci pour ta réponse. Je pensais utiliser le wifi. Pour le serveur il faut que je vois ce qu'i permet. Oui les données sont structurées mais elles seront traitées plus tard, ce n'est plus mon problème.

Quelqu'un d'autre un un avis pour la connection USB à l'automate?
Répondre
#4
> - Peut activer/désactiver le port USB du PI?

Au niveau "soft".. je ne sais pas trop...
Il semblerais que oui:
http://raspberrypi.stackexchange.com/que...peripheral
Au pire du pire, avec les GPIOs, tu pourras controler un relais qui pourra couper/alimenter le 5V qui passe dans le cable USB



> - Est-ce que le PI peut être vu comme une zone de stockage?
Bonne question.. Il semble que non pour l'instant.
Il semblerais que ca soit possible en théorie sur le modele A qui n'a pas de hub USB.. mais qu'il faille écrire un driver..
A creuser...

Peut etre va t'il etre nécessaire par un autre truc "hardware" connecté entre la clé USB et le Rasp ?.. Arduino ?


> - Connaissez vous un tuto pour envoyer une fichier sur un FTP?
Il y a plusieurs moyen.. comme indiqué par tchou, curl est une bonne possibilité.

curl -T koc_dance.mp3 ftp://myftpsite.com/mp3/ --user myname:mypassword
http://linux.byexamples.com/archives/320...tp-server/

Comme aussi indiqué par Tchou, FTP est un protocole ou tout passe en clair.
Il serait préférable d'utiliser par exemple SCP ou SFTP ou FTPS.
Répondre
#5
Un truc dans le genre :
Code :
[== Indéfini ==]
# disable external wake-up; do this only once
echo disabled > /sys/bus/usb/devices/usb1/power/wakeup

echo on > /sys/bus/usb/devices/usb1/power/level       # turn on
echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off
Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#6
Ouais, enfin, ce que je comprend du projet, c'est qu'il existe une machine avec un système existant, qui est de détecter quand une clé usb est insérée et de copier dessus. M'étonnerai pas que le système de fichier attendu soit du fat32 et uniquement ça. Donc un Rpi formaté en ext3 (ou 4 ? tiens, je sais pas quel est le formatage de cet engin) sera vu comme serai vu une souris usb connectée dessus : "connais pas, je sais pas monter, donc je copie pas mon precieuuuuux fichier".

L'étape une est de rétro-engeneerer la tomate ... le tomate ... l'automate savoir préciser ce qu'il fait. Et si mon hypothèse est bonne, faut autre chose entre lui et le rasp', quelque chose qui se fasse passer pour une partition en fat32 sur de l'usb, ou une clé usb avec la prise complètement bricolée pour pouvoir alternativement être branchée electriquement à l'un puis l'autre.

Et d'ailleurs, une question n'a pas été posée : rentrer dans le lard de l'engin, c'est une possibilité (genre dessouder des parties, dont cette sortie usb) ou pas ?
Répondre
#7
Pour déssouder des parties, je pense pas que ça pose un problème Wink.
Répondre
#8
Merci pour vos messages

tchou a écrit :Et d'ailleurs, une question n'a pas été posée : rentrer dans le lard de l'engin, c'est une possibilité (genre dessouder des parties, dont cette sortie usb) ou pas ?

Oui ça serait possible mais faudrait être sûr de ce qu'on fait ^^ Tu penses à quoi exactement?
Répondre
#9
Je pense que tu peux simuler le branchement d'une clé USB a l'automate.. puis son débranchement, puis sont branchement au rasp puis son débranchement etc...

Il y a 4 connections dans le cable USB, 2 pour les datas, GND, 5V.

Tu créé un cable avec une prise femelle (pour insérer la clé USB).. avec les 4 fils.. et ces 4 fils se "dédoublent" pour aller a la fois (les 4 fils) vers le Rasp.. et d'un autre coté vers l'automate (en mettant des prises USB males aux extrémités.

Sur les 2 fils data vers Rasp, tu mets 2 relais (ou équivalent) et sur les 2 fils data vers automate tu meyts aussi 2 relais...
Les 4 relais commandés par des GPIOs du Rasp.

Si que les 2 relais vers Rasp sont fermés.. le Rasp voit la clé USB.
Si que les 2 relais vers Automate sont fermés, l'automate voit la clé USB..

Et tu inverses (en passant bien par une étape ou tous les relais sont ouverts) a l'intervalles que tu souhaites entre connexion automate et connexion Rasp.

Je penses que ca pourrait marcher... ? et ca revient a quelques bidouilles de cables, et 4 relais .... ou si le courant est faible (genre < 20mA ? ) tu peux utiliser un chip avec 4 "minis" relais intégrés.. Le cout total est donc de quelques € seulements.. (en + du rasp et d'une clé USB)
Répondre
#10
Salut,

Oui j'ai aussi pensé à ce système.

Voilà le schéma:

[Image: 8a36d3a24037270a789602c171b49862.jpg]

Je pense qu'il faut mettre 4 relais et pas seulement 2. Car la tension d'alimentation du rasp et de l'automate sont peut-être différente ce qui peut poser problème donc autant tout séparer Smile


C'est sûr que c'est une solution qui fonctionne mais le must serait de tout faire par software pour éviter les coût superflus (certes peu élevés...) et surtout le gain de temps.


Mais bon, au moins on a déjà une solution, c'est une bonne nouvelle Big Grin Je peux déjà continuer mon projet et chercher plus tard quelque chose de mieux.
Répondre
#11
yop21 a écrit :Voilà le schéma:

Oui c'est bien cela Wink


Citation : Car la tension d'alimentation du rasp et de l'automate sont peut-être différente ce qui peut poser problème donc autant tout séparer Smile

A priori, l'USB du Rasp, et l'USB de l'automate doivent tous 2 respecter la norme USB.. qui j'imagine spécifie 5V..

Ceci-dit, c'est effectivement sans doute mieux que également la masse soit bien reliée a l'équipement avec lequel les données sont échangées.. (j'ai la flemme de lire ce soir comment fonctionne l'USB)


Citation :C'est sûr que c'est une solution qui fonctionne mais le must serait de tout faire par software pour éviter les coût superflus (certes peu élevés...) et surtout le gain de temps.
Mais bon, au moins on a déjà une solution, c'est une bonne nouvelle Big Grin Je peux déjà continuer mon projet et chercher plus tard quelque chose de mieux.

Voila.. quand tu auras breveter l'outil, l'avoir vendu dans le monde entier et etre devenu millionnaire, ton equipe de R&D prendra le relais (<- ceci n'est pas un jeu de mot foireux) pour trouver comment le faire en soft Wink
Répondre
#12
Uggy a écrit :Voila.. quand tu auras breveter l'outil, l'avoir vendu dans le monde entier et etre devenu millionnaire, ton equipe de R&D prendra le relais (<- ceci n'est pas un jeu de mot foireux) pour trouver comment le faire en soft Wink

Pas mal le jeux de mot Wink
Répondre
#13
Salut,

aujourd'hui j'ai construit mon petit circuit mais je suis tombé sur un problème auquel je ne m'attendais pas.

Je m'explique. Pour faire fonctionner mon relais, j'utilise une broche GPIO pour le commander. Cela ne fonctionnait pas j'ai donc sorti mon multimètre pour contrôler si j'avais bel et bien mes bons états. Et la j'ai remarqué que si je mesure la sortie GPIO (état 1 normalement) avec comme référence (0v) donnée par un port USB (de l'automate) j’obtiens une différence de tension de 0V. Alors que si je mesure entre la sortie GPIO et le 0V du PI, la j'obtiens bel et bien un état haut. De même si je mesure entre le 5V et le 0 de l'USB.

Comment ce fait-il qu'il n'y est pas la même "base" de potentiel? Serait-ce encore un autre problème?

Merci de me donner vos avis sur la question.
Répondre
#14
Je peux régler le problème assez facilement en prenant le 0V de l'USB du rasp. Par contre j'ai un autre problème, les 3.3V ne suffisent pas pour mon relais. Pourquoi diable mettre du 3.3V alors que tous les périphériques sont en 5V?
Ca voudrait dire que je dois mettre un composant entre 2....
Répondre
#15
yop21 a écrit :Et la j'ai remarqué que si je mesure la sortie GPIO (état 1 normalement) avec comme référence (0v) donnée par un port USB (de l'automate) j’obtiens une différence de tension de 0V. Alors que si je mesure entre la sortie GPIO et le 0V du PI, la j'obtiens bel et bien un état haut. De même si je mesure entre le 5V et le 0 de l'USB.

Comment ce fait-il qu'il n'y est pas la même "base" de potentiel?


Moi j'aurais connecté ensemble toutes les "masses" (0V) pour justement avoir le même point de référence.
Répondre
#16
yop21 a écrit :Par contre j'ai un autre problème, les 3.3V ne suffisent pas pour mon relais. Pourquoi diable mettre du 3.3V alors que tous les périphériques sont en 5V?
Ca voudrait dire que je dois mettre un composant entre 2....

Oui, par exemple: http://www.adafruit.com/products/395#Description
Répondre
#17
Oui je connecterai tout ensemble pour avoir le même potentiel ça devrait aller.

Par contre pour le relais j'ai peut être trouvé une autre solution.

Si je commande le relais à l'état bas et non à l'état haut ça devrait jouer. Je branche le relais au 5V de l'USB et de l'autre côté au GPIO. Si je met le GPIO à 1 (3.3V) ça fera une différence de 1.7V pas suffisant pour faire fonctionner le relais et si je le met à 0 (0V) le relais devrait conduire. Il faut juste que je trouve la résistance interne du relais pour voir le courant que le raspberry recevrait.

Vous en pensez quoi?

Merci
Répondre
#18
yop21 a écrit :Si je commande le relais à l'état bas et non à l'état haut ça devrait jouer. Je branche le relais au 5V de l'USB et de l'autre côté au GPIO. Si je met le GPIO à 1 (3.3V) ça fera une différence de 1.7V pas suffisant pour faire fonctionner le relais et si je le met à 0 (0V) le relais devrait conduire.

Vous en pensez quoi?

Je ne pense pas que cela fonctionne.
Je pense que tu auras le même problème (il ne détecteras pas 3.3V comme un état haut).. a l'envers.
C'est a dire qu'au lieu de ne pas pouvoir ouvrir le relais.. tu ne pourras pas le fermer.

..Enfin j'imagine.. je ne suis pas spécialiste.

http://en.wikipedia.org/wiki/Logic_family
TTL logic levels are different from those of CMOS – generally a TTL output does not rise high enough to be reliably recognized as a logic 1 by a CMOS input.


Apres je pense qu'il y a plusieurs solutions,
- Le level shifter indiqué au dessus.
- Un relais qui aurait une entrée en logique TTL (2V mini) et non CMOS. (3.7V mini)
http://www.interfacebus.com/voltage_threshold.html
- un composant qui fait office de level shifter
- un systeme avec transistor.
Répondre
#19
J'ai essayé de regarder vers les 74HCT* (compatible logique TTL en entré) et j'ai vu le 74HCT04 http://www.nxp.com/documents/data_sheet/74HC_HCT04.pdf
Si j'ai bien compris la doc ils inversent les niveaux logiques... donc on peut en chainer 2 pour revenir a l'état initial,
HIGH-level input voltage: 2V min
HIGH-level output voltage: proche VCC

Vcc=5V
3.3V en entrée porte 1 (état haut détecté car > 2V) -> (état bas) 0V en sortie porte 1 ----redirigé ver--> 0V (état bas) en entrée porte 2 -> 5V (Vcc) (état haut) en sortie porte 2
0V en entrée porte 1 -> 5V (Vcc) en sortie porte 1 ----redirigé ver--> 5V en entrée porte 2 -> 0V en sortie porte 2

Donc on devrait pouvoir le mettre entre la sortie de la GPIO et l'entrée du relais .. ?
Qu'est ce que vous en pensez ?

1,74 EUR les 5 sur Ebay (port inclu) 6 portes par chip, donc 3 "utilisations" par chip...

J'ai bien trouvé des 74HCT* sans besoin de chainer 2 portes ou des trucs spécialement pour convertir les niveaux .. mais les 1ers prix tournent + aux alentours de 3 € l'unité... (contre 1,74 les 5 pour celui ci)

J'ai commandé ces 74HCT04 pour tester... on verra bien.. au pire j'aurais perdu 1,74€ Smile
Répondre
#20
Salut,

Tout d'abord un énorme merci à toi Uggy. C'est vraiment super de se voir aider comme ça Smile

J'ai aussi pensé à la solution avec un shifter et un transistor. C'est 2 solutions qui fonctionnent mais qui me coûteraient du temps et de l'argent. Je vais tout d'abord tester mon idée et ensuite me rabattre sur tes idées Smile


Sinon je me demandais si je pouvais alimenter un Raspberry en prenant le courant sur le port USB d'un autre appareil par exemple et non par un transformateur 230v.
Répondre
#21
yop21 a écrit :Tout d'abord un énorme merci à toi Uggy. C'est vraiment super de se voir aider comme ça Smile

Ca roule Wink
Pour être honnête, j'ai aussi dans l'idée de faire un truc vaguement similaire donc ca explique pourquoi je me penche un peu dessus aussi Smile
Mais c'est cool, a 2 on va pouvoir s'entraider Smile

yop21 a écrit :Sinon je me demandais si je pouvais alimenter un Raspberry en prenant le courant sur le port USB d'un autre appareil par exemple et non par un transformateur 230v.

Oui et non Smile
Tout dépend ce que peut débiter comme courant le port USB de l' autre appareil.

Très souvent, les appareils ne peuvent débiter sur leur USB que 500mA max..
Le Rasp a en théorie besoin de 700mA pour "garantir" un bon fonctionnement.

Exemple, tu ne peux pas alimenter un Rasp par l'USB d'un autre Rasp Smile
Par contre tu peux alimenter le Rasp par l'USB de certains Hubs USB alimentés
Exemple mon http://www.dlink.com/us/en/home-solution...sb-2-0-hub a 2 de ses ports a 1.2 A
(Et donc j'alimente le Rasp uniquement par le Hub)
Répondre
#22
chris57100 a écrit :Un truc dans le genre :
Code :
[== Indéfini ==]
# disable external wake-up; do this only once
echo disabled > /sys/bus/usb/devices/usb1/power/wakeup

echo on > /sys/bus/usb/devices/usb1/power/level       # turn on
echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off

A priori, je n'ai pas réussi a faire fonctionner cette technique..
En creusant un peu, il semble que cette méthode ne puisse plus être utilisée depuis le noyau 2.6.32
Une méthode similaire (mais différente) consistant a faire aussi a faire des "echo" dans des fichiers pourraient fonctionner a moitié.. et que si le driver le supporte..
http://stackoverflow.com/questions/47022...with-linux

Deplus cette méthode si on parvenait a la faire fonctionner, couperais bien la "connexion" USB.. mais le device consommerait autant...
Ce qui est peut etre ok pour certains projets (ton automate).. mais pas pour d'autres.. (le mien Smile )
Répondre
#23
ou alors directement le BSS138 + 2 resistances 10K... (comme le level shifter d'Adadruit) ?
BSS138 (/!\ SMD): 2€ les 10 ou 5€ les 50. (Port inclu)

http://www.rocketnumbernine.com/2009/04/...-converter
Répondre
#24
Salut,

En SMD c'est vraiment la merde ^^ J'ai testé ma méthode pour alimenter le relais et cela fonctionne. Mais finalement je ne trouve pas cette méthode optimale . . . Du coup je vais me diriger vers un système à transistor que tu as proposé Uggy. En plus de cela je vais apporter une alimentation sur ma carte que je vais fabriquer pour alimenter le PI, la clé USB et le relais.

Voici un petit schéma du montage à transistor:

[Image: 4c3e9590b26bc78e76386b161cd899be.jpg]

Mon relais est traversé par environ 40 mA, avec un Beta de 100 ça nous fait 0.4 mA sur la base (connectée au GPIO). On sait que Ube = 0.6V donc la chute de tension sur R = 2.7V on connait le courant (0.4 mA) donc R=U/I = 6750 ohm mais on prend une résistance plus basse pour avoir un courant un peu plus élevé afin d'être sûr que notre transistor soit saturé et conduise bien.

On ajoute aussi une diode en parallèle pour être protégé des surtension de la bobine.

Si j'ai le temps, je teste le montage ce soir.

Edit !

Voilà j'ai pu testé mon montage et cela fonctionne très bien sur ma plaque de montage. Mais une fois que j'ajoute le PI pour commander le transistor avec le GPIO cela ne fonctionne plus . . .

Voici ce que j'ai remarqué:

[Image: ee278c6f7ab3d0429bee2a75ca8b8923.jpg]

Comme on le voit j'utilise 2 alimentations différentes, une pour le PI (chargeur téléphone) et une alimentation de labo pour la plaque d'essaie (le 5V). Il n'y a pas de chute de tension sur le transistor (Ube).

Je pense que le problème vient du fait que je n'utilise pas la même alimentation pour les 2.

Je vais encore me renseigner à ce sujet.
Répondre
#25
ok.. moi j'ai recu aujourd'hui les 74HCT04 commandés en Thaillande..
En fait j'ai recu des SN74LS04N d'un paquet envoyé depuis l'Allemagne (ca explique les seulement 9 jours)... (c'est bien le vendeur ebay.) ( 1,75 EUR les 5 qui contiennent chacun 6 inverseurs)
En regardant la datasheet.. http://www.ti.com/lit/ds/symlink/sn74ls04.pdf ca me va très bien .. 2V mini pour reconnaitre un état haut..

Je viens de tester (sans relais mais juste avec un voltmetre).. marche nickel..quand la GPIO passe a 1 (3.3V) la sortie de la 2eme porte du SN74LS04N passe a 5V (en vrai 4.3V mais donc sufisant pour un relais logique CMOS)
Et en passant la GPIO à 0, j'ai bien 0V (0.13V en vrai)

A tester en vrai avec un relais derriere quand meme car on a souvent des différences entre la théorie et la pratique Smile
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)

A propos de Communauté francophone RPi

Communauté francophone RPi est un forum d'aide et de partage autour du Raspberry Pi et des micro-ordinateurs.