Besoin d'aide SVP ! (projet RFID)

TANG35
ven, 03/06/2020 - 17:24
Bonjour,
J'ai créé un distributeur de croquettes à détection RFID comme ce produit commercialisé :
https://www.youtube.com/watch?v=yTy9OH-mlhM
La différence résulte dans le volume du distributeur.
La partie hardware (conception mécanique et électronique) j'ai géré :
Carte Arduino Uno, motorisation de lecteur CD, capteurs de fin de course, circuit L293D, module RFID (antenne "maison").
Mon gros soucis est le programme...
J'ai beau essayer et essayer, je ne pige pas.
Schéma de câblage :
Principe en résumé :
_ Etat initial (mise sous tension) : le moteur est à l'arrêt, la trappe est fermée ("trappe fermée" = 1), sinon la trappe se ferme jusqu'à "trappe fermée" = 1, et le moteur stoppe.
_ Lecture permanente (en boucle) du module RFID (attente d'un tag).
_ Un chat se présente devant l'antenne RFID.
_ Détection "chat autorisé" = 1.
_ Le trappe s'ouvre jusqu'au capteur "trappe ouverte" = 1.
_ Le moteur stoppe.
_ Détection "chat autorisé" = 0.
_ Délai = 3 secondes.
_ Le trappe se ferme.
_ Le moteur stoppe SI détection "chat autorisé" (retour étape "chat autorisé" = 1), OU SI détection "trappe fermée" = 1.
_ Retour à l'état initial.
J'aimerais ajouté un mode d'ouverture et fermeture manuel (switch auto/manu ; poussoir ouverture/fermeture).
Est-ce que quelqu'un pourrait m'aider ?
Un collègue de taf a déjà entamé un bout de programme mais pas terminé (et avec erreurs de compilation).
Merci.
Tanguy.
TANG35
ven, 03/06/2020 - 17:31
Ci-joint un dossier ZIP avec les librairies nécessaires, et le bout de programme.
Anonyme
sam, 03/07/2020 - 12:23
J'ai lu ton code, il est super compliqué pour pas grand chose !!
Il y a moyen de faire beaucoup plus simple, par contre je n'ai pas le lecteur de puce que tu possèdes, je devrais le recevoir dimanche soir. mais en attendant je te propose le début de code suivant sachant que tu devras raccorder les fin de courses entre les entrées déclarées et GND et non +5 V pour éviter de mettre des résistances de PULL UP !
Comme je n'ai pas encore le lecteur je l'ai replacé ( provisoirement ) par un bouton poussoir qui simule la présence d'un chat autorisé devant le distributeur.
Le programme est testé il fonctionne !
Anonyme
mar, 03/10/2020 - 15:45
Voilà j'ai enfin reçu le lecteur de puce RFID 125 KHz et j'ai pu testé mon code !
Cette fois le code est déverminé testé et fonctionnel !
TANG35
mar, 03/10/2020 - 21:16
Whouah génial !
Merci pour ta rapidité !
Je n'ai pas vu ton mlessage plus tôt, il était dans mes Spams (lol).
Je me suis aperçu de mon erreur de câblage ce week-end concernant les fins de course.
J'ai ajouté une résistance de "pull up" pour faire un essai pour un autre programme test plus simple.
Du coup ce soir je dessoude mes résistances, et place les fin de courses comme tu m'as dit : entre le GND et les entrées déclarées.
Par contre, je ne change rien pour le module RFID ?
Sinon je ne comprend pas le câblage de ton module par rapport au mien.
Tu peux me le dessiner vite fait ?
TANG35
mar, 03/10/2020 - 22:07
Je viens d'essayer ton 1er programme en mettant un poussoir en direct....top, ça fonctionne !
Par contre lorsque je mets le module, ça ne fonctionne pas.
La LED du module clignote bien lorsqu'on approche un tag, mais rien indiqué sur le moniteur série (chat autorisé, non autorisé, numéro du tag...).
Peut-être un pb de câblage à ce niveau ?
TANG35
mar, 03/10/2020 - 22:29
Voici une partie du nouveau Fritzing avec les fins de course au GND.
La broche Tx du module RFID va sur l'entrée 2.
Tu l'as branché ainsi ? (mise à part la borne 13)
Anonyme
mer, 03/11/2020 - 07:15
Tu as du branché TX et RX à l'envers, inverse ces connexions et cela devrait fonctionné. Pourquoi mettre des résistances ?? Qui t'as dit d'en mettre ?
TANG35
mer, 03/11/2020 - 10:55
Merci c'est top,
Je vais tester ça ce soir.
TANG35
mer, 03/11/2020 - 10:57
Les résistances c'était pour éviter les "rebonds".
La carte voyait bien un +5V lorsque le capteur était appuyé.
Mais lorsqu'il était ouvert, l'entrée était "en l'air", j'ai fait un branchement pour que la carte voit bien le GND une fois le capteur ouvert.
Bref, en tout cas avec ton code ça fonctionne sans :D.
Anonyme
mer, 03/11/2020 - 12:00
Mais tu n'a rien compris !
la commande " pinMode( X , INPUT_PULLUP); " indique au processeur de mettre une résistance interne entre le + et l'entrée déclarée X ! De ce fait lorsque le FdC est ouvert l'entrée correspondante X est HIGH (état haut ou +5V ou encore Vcc ) et lorsque le FdC est appuyé l'entrée correspondante X est à l'état LOW (état Bas, ou 0 V ou encore GND).
Donc câble les FdC comme je te l'ai demandé et supprime les résistances qui n'évitent aucun rebond !!!!
Les éventuels rebonds ici non aucune importance, et je ne vois pas comment une résistance pourrait éviter des rebonds ????
Pour les éviter quand c'est nécessaire on utilise le soft en cas de besoin ce qui encore une fois n'est pas utile dans cette application !
Par exemple ;
If (digitalRead(X) == LOW){
Action();
delay(100);
}
ici tous les rebonds qui on lieu pendant 100 ms sont transparents puisque le processeur ne fait plus rien durant ce laps de temps qui peu être réduit au besoin !!!!
TANG35
mer, 03/11/2020 - 12:18
Hihi si si j'ai bien compris.
Ce que j'explique plus haut, c'est ce que j'ai fait avant de voir tes explications et ton programme :D
TANG35
mer, 03/11/2020 - 12:46
C'est cool de m'aider en tout cas ;-)
Je teste tout ca ce soir, je te tiens au courant.
TANG35
mer, 03/11/2020 - 18:23
Bon ben c'est super chouette ça fonctionne nickel !!! :D
Encore un grand merci pour ton aide, tu m'a enlevé une belle épine du pied.
J'ai vu que la vitesse moteur tu as mis HIGH ou LOW (MoteurEna).
Moi je pouvais faire varier de 0 à 255.
Je n'arrive pas à remettre cette variation de vitesse.
Y aurait moyen que tu m'expliques ? (encore...)
Anonyme
mer, 03/11/2020 - 18:30
Pas de soucis c'est super facile mais pas avant demain j'ai des invités là !
Anonyme
mer, 03/11/2020 - 18:44
Voici le code avec possibilité de faire varier la vitesse de 0 à 100%
C'était tellement facile que j'ai pris deux minutes pour le faire. Je t'ai même mis une vitesse pour l'ouverture et une seconde pour la fermeture (elles peuvent être égales)
TANG35
mer, 03/11/2020 - 19:28
Mais bien sûr !
"Analog" au lieu de "Digital" !
Quel flan.... XD
Anonyme
mer, 03/11/2020 - 21:01
Faut pas te dénigrer