[RÉSOLU] Relier des pins Arduino sur des GPIO de RPi [RESOLU]
Modérateur : Francois
[RÉSOLU] Relier des pins Arduino sur des GPIO de RPi
Bonjour,
J'ai programmé une Arduino Uno pour, théoriquement, générer en continu un signal carré de période 244 µs, et je souhaite lire ce signal avec les GPIO d'un RPi 3. Il n'y aurait pas de communication dans les deux sens, juste l'Arduino qui envoie continuellement son signal, et le RPi qui le récupère ; aucune donnée n'irait du RPi à l'Arduino.
Quelle serait la marche à suivre pour relier l'Arduino aux GPIO ? Quelles précautions dois-je prendre ? Sachant qu'idéalement, l'Arduino serait alimentée via USB par le RPi lui-même.
Là comme ça, je serais tenté de relier la pin d'émission à une broche GPIO, mais sans trop savoir laquelle serait la plus adaptée, et surtout je ne sais pas si je dois brancher un GND côté Arduino et/ou RPi...
J'ai programmé une Arduino Uno pour, théoriquement, générer en continu un signal carré de période 244 µs, et je souhaite lire ce signal avec les GPIO d'un RPi 3. Il n'y aurait pas de communication dans les deux sens, juste l'Arduino qui envoie continuellement son signal, et le RPi qui le récupère ; aucune donnée n'irait du RPi à l'Arduino.
Quelle serait la marche à suivre pour relier l'Arduino aux GPIO ? Quelles précautions dois-je prendre ? Sachant qu'idéalement, l'Arduino serait alimentée via USB par le RPi lui-même.
Là comme ça, je serais tenté de relier la pin d'émission à une broche GPIO, mais sans trop savoir laquelle serait la plus adaptée, et surtout je ne sais pas si je dois brancher un GND côté Arduino et/ou RPi...
Modifié en dernier par Pinhapple le ven. 10 mars 2017 12:54, modifié 1 fois.
Re: Relier des pins Arduino sur des GPIO de RPi
Stop, n’envoie surtout pas un signal arduino(5V) comme ça sur le GPIO de ton raspberry(3.3V) tu vas le cramer!!!Pinhapple a écrit : Là comme ça, je serais tenté de relier la pin d'émission à une broche GPIO, mais sans trop savoir laquelle serait la plus adaptée, et surtout je ne sais pas si je dois brancher un GND côté Arduino et/ou RPi...
Écoute, je suis moi même débutant et je ne voudrais pas te dire de bêtise, mais je mettrais au minimum :
- un pont de résistances entre l'arduino et le GND avec entre les 2 résistances la pin du raspberry afin de diminuer la tension.
- le GND en Commun de l'arduino et du pi (mais ça c'est peut être déjà fait si l'un alimente l'autre).
De plus, je mettrais la valeurs des résistances du pont assez grandes pour limiter l'intensité.
Quelqu'un de plus instruit que moi pourra, peut être te confirmer cela...
-
- Raspinaute
- Messages : 315
- Enregistré le : jeu. 12 nov. 2015 17:39
- Localisation : Bourges (18)
Re: Relier des pins Arduino sur des GPIO de RPi
Sinon y'a un truc avec 550 000 résultat et il s'appelle Google et avec "Raspberry GPIO Arduino" il en dit plein des choses !
Tu doit tout avoir ici ?
Tu doit tout avoir ici ?
Re: Relier des pins Arduino sur des GPIO de RPi
Pas d'inquiétude, j'ai juste dit que c'est ce qui me venait à l'esprit, je ne fais pas de branchements sans savoir !etpi7out a écrit :Stop, n’envoie surtout pas un signal arduino(5V) comme ça sur le GPIO de ton raspberry(3.3V) tu vas le cramer!!!
Merci, je ne connaissais pas Google !Ghislain a écrit :Sinon y'a un truc avec 550 000 résultat et il s'appelle Google et avec "Raspberry GPIO Arduino" il en dit plein des choses !
Tu doit tout avoir ici ?
Non, plus sérieusement, merci pour le lien, mais je cherchais plus quelque chose concernant mon contexte (recevoir avec le RPi sans message retour) et non pas du bête envoi de string.
Je devrais toutefois pouvoir me débrouiller avec ça, donc merci à toi !
Toutefois, étant donné que mon signal généré est assez serré (244 µs de période), est-ce que la communication de ces valeurs au RPi ne va-t-elle pas ralentir ce signal ? Je peux prendre comme analogie la fonction print de Python 3 qui ralentit le déroulement d'un programme lors de l'affichage.
De plus, est-ce qu'alimenter mon Arduino avec l'USB du RPi ne va pas poser un quelconque problème ?
- RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
- Arduino Mega, Uno, Nano
- Freescale FRDM KL25Z
Re: Relier des pins Arduino sur des GPIO de RPi
A la réflexion, ce lien ne m'aide pas beaucoup finalement. Il décrit comment faire communiquer un RPi et une Arduino en utilisant ses pins RX et TX.
Dans mon cas, j'ai une Arduino Uno qui envoie en continu un signal carré symétrique de période 244 µs sur une de ses pins non-RX/TX (cf. code plus loin), et je souhaite "lire" ce signal avec un RPi via ses GPIO, comme on mesurerait un signal avec un oscilloscope.
Du coup : dois-je absolument utiliser les pins RX/TX pour envoyer mon signal de l'Arduino vers le RPi ?
Pour info au cas où, le code Arduino :
Dans mon cas, j'ai une Arduino Uno qui envoie en continu un signal carré symétrique de période 244 µs sur une de ses pins non-RX/TX (cf. code plus loin), et je souhaite "lire" ce signal avec un RPi via ses GPIO, comme on mesurerait un signal avec un oscilloscope.
Du coup : dois-je absolument utiliser les pins RX/TX pour envoyer mon signal de l'Arduino vers le RPi ?
Pour info au cas où, le code Arduino :
Code : Tout sélectionner
void setup()
{
pinMode(11, OUTPUT);
digitalWrite(11, LOW);
}
void loop()
{
digitalWrite(11, !digitalRead(11));
delayMicroseconds(244 / 2);
}
- RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
- Arduino Mega, Uno, Nano
- Freescale FRDM KL25Z
-
- Raspinaute
- Messages : 735
- Enregistré le : lun. 22 déc. 2014 16:50
- Localisation : 67380 LINGOLSHEIM
Re: Relier des pins Arduino sur des GPIO de RPi
Bonjour,Pinhapple a écrit :
Du coup : dois-je absolument utiliser les pins RX/TX pour envoyer mon signal de l'Arduino vers le RPi ?
Pour info au cas où, le code Arduino :Code : Tout sélectionner
void setup() { pinMode(11, OUTPUT); digitalWrite(11, LOW); } void loop() { digitalWrite(11, !digitalRead(11)); delayMicroseconds(244 / 2); }
Dans les fonctions de la libwiringPi que vous êtes en train d'apprivoiser (cf. autre fil), il y a la possibilité d'armer une interruption sur une pin GPIO (sur front montant, descendant ou les 2).
Comme l'a déjà souligné un contributeur, attention au niveau: le GPIO du Raspberry ne supporte pas 5V.
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: Relier des pins Arduino sur des GPIO de RPi
Qui sans modif du kernel à une latence qui peut varier de 25 a 75 µS, ce qui fait beaucoup sur une base de 244µS ...spourre a écrit :Dans les fonctions de la libwiringPi que vous êtes en train d'apprivoiser (cf. autre fil), il y a la possibilité d'armer une interruption ...
Je te vois bien venir PinHapple. Tes 244 µS (+ temps d'instruction) serait une aubaine pour commander les 4000 cycles d'acquisition par seconde que tu veux avoir. Domage
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
-
- Raspinaute
- Messages : 735
- Enregistré le : lun. 22 déc. 2014 16:50
- Localisation : 67380 LINGOLSHEIM
Re: Relier des pins Arduino sur des GPIO de RPi
O en revient toujours à la même problématique et aux mêmes propositions. Quand on a des contraintes de délais de traitement de plus en plus serrées, il faut explorer:Bud Spencer a écrit :Qui sans modif du kernel à une latence qui peut varier de 25 a 75 µS, ce qui fait beaucoup sur une base de 244µS ...spourre a écrit :Dans les fonctions de la libwiringPi que vous êtes en train d'apprivoiser (cf. autre fil), il y a la possibilité d'armer une interruption ...
Je te vois bien venir PinHapple. Tes 244 µS (+ temps d'instruction) serait une aubaine pour commander les 4000 cycles d'acquisition par seconde que tu veux avoir. Domage
1) le passage au compilé.
2) choisir des bibliothèques de + en + proches du hard (chaque couche d'abstraction apporte sa latence). Pour les GPIO, dans l'ordre :
- lwiringPi
- libcm
- attaquer les périphériques "à la main" (cf. mon lien dans l'autre fil).
3) être conscient que Linus n'est pas (et ne prétend pas être) un OS temps réeel (RTOS). Il y a des patch ou des solutions RTOS mais ce n'est pas trivial à mettre en oeuvre.
l reste toujours possible de grapiller des pouillièmes en faisant la chasse aux services inutiles mais tant que le programme tourne en "user land", il est soumis aux risques d'être swappé ou mis en attente par le scheduler .
Je ne développe pas la possibilité d'écrire un "driver" dans le noyau car je n'ai pas la moindre idée de comment faire. Je crois qu'il y a un bon bouquin de M. Ficheux qui en parle.
Re: Relier des pins Arduino sur des GPIO de RPi
Ha ha, même pas !Bud Spencer a écrit :Je te vois bien venir PinHapple. Tes 244 µS (+ temps d'instruction) serait une aubaine pour commander les 4000 cycles d'acquisition par seconde que tu veux avoir. Domage
C'est lié au même projet, mais ce n'est pas pour lire mon gyro !
wiringPiISR() j'imagine ? Je vais voir ce que ça donne, merci pour l'infospourre a écrit :Dans les fonctions de la libwiringPi que vous êtes en train d'apprivoiser (cf. autre fil), il y a la possibilité d'armer une interruption sur une pin GPIO (sur front montant, descendant ou les 2).
J'ai monté un pont diviseur de tension avec des résistances, comme dans le lien montré plus haut ! Par contre, si je fais le calcul de la tension réduite, j'obtiens 3,37 V : est-ce grave de dépasser la tension d'entrée limite des GPIO de 0,07 V ?spourre a écrit :Comme l'a déjà souligné un contributeur, attention au niveau: le GPIO du Raspberry ne supporte pas 5V.
J'ai suivi un rapide tuto hier pour faire clignoter une DEL avec RPi.GPIO puis WiringPi, avec succès (en même temps, pas trop compliqué !), et j'ai été agréablement surpris de voir que la syntaxe de WiringPi était assez proche du C Arduino, que je connais déjà un peu plus, donc ça m'a mis en confiance !
Du coup je me demandais : si je relie mon RPi et mon Arduino Uno avec le pont diviseur de tension, est-ce que je ne peux pas "tout simplement" garder mon code Arduino, et faire un digitalRead() avec WiringPi côté RPi ?
Il y a peut-être des choses qui m'échappent, mais j'imagine les choses comme ça :
- L'Arduino émet en continu son signal de période d'environ 244 µs sur la pin 11, avec une tension de 5 V
- Le pont diviseur réduit cette tension à 3,37 V
- Une GPIO du RPi lit "le niveau logique sur la broche" (pour citer la doc de WiringPi) avec digitalRead(), donc 0/LOW si 0 V reçu, ou 1/HIGH si 3,37 V reçus
- Traitement des états reçus (probablement affichage sur un graphique)
- RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
- Arduino Mega, Uno, Nano
- Freescale FRDM KL25Z
-
- Raspinaute
- Messages : 629
- Enregistré le : mar. 6 janv. 2015 19:44
- Localisation : finistere
Re: Relier des pins Arduino sur des GPIO de RPi
Bonjour, et une question toute bête, si vous alimentez l'arduino en 3.3v , ces sortie serrons en 3.3v. je sais que certaines cartes arduino permettent de choisir la tension d'alimentation du µp.
@+
@+
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam