Installe un terminal série sur le Pi, minicom ou cutecom, pour espionner le port.
Installe un terminal série sur le Pi, minicom ou cutecom, pour espionner le port.
Arduino, Raspberry Pi, ESP, Cypress PSoC, FPGA...
Forums Arduino, Raspberry Pi
Apprendre à développer sur FPGA avec Intel Quartus Prime - Communication SPI avec un convertisseur Analogique-Numérique, simulation fonctionnelle et analyse des signaux [Nouveau]
FPGA - Programmer un contrôleur pour écran VGA avec une carte de développement FPGA
Arduino : Le manuel de laboratoire, les Quiz, les cahiers pratiques, [Nouveau] les sources et outils
non pas de réaction, connecter le berry sur un ordi via usb pour verifier ?
Ton port série est configuré de la même manière (débit, bits de données, bits de stop...) des 2 côtés ?
Ok.
Je voulais écarter un éventuel problème de droit.
En complément des conseils des copains, peux tu nous poster ton programme dans le Arduino ?
Pour la commande que je t'ai donné, en effet si tu avais tapé une chaîne de caractères elle serait partie mais le port ttyACM0 côté RPi n'était pas configuré (mon but était de m'assurer que tu n'allais pas te faire jeter d'entrée de jeu avec une permission non accordée sinon on aurait pu chercher longtemps)
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
le port série est configuré 'par défaut' des deux cotés (même configuration j'ai vérifié) pour le programme de l'arduino je pourrais vous faire un résumé ça serait plus 'lisible'. c'est un méga avec un écran tactile que j'ai programmé pour faire plusieurs 'écrans' (principal, option, heure, calculatrice, clavier, etc., etc.) donc là je n'utilise que 'l'écran principal' (dont j'ai simplifié le code pour éviter les interférences entre programmes) normalement quand il reçoit un message avec certaines particularités son affichage change jusqu'à la réinitialisation qui avant les tests de communication marchait, maintenant il faut faire reset ou couper l'alimentation pour le faire. je pense aussi recopier les messages d'erreur quand je tente d'envoyer des messages en python(ce qui pour moi montre que c'est de ce coté qu'est l'erreur).
voici ce que m'annonce le programme quand je tente un run:
Traceback (most recent call last):
File"/usr/lib/python3/dist-packages/serial/serialposix.py". Line 275, in open self.fd =os.open(self.portstr. os.O_RDWR|os.O_NOCTTY|os.O_NONBLOCK)
FileNoFoundError: [Errno 2] No such File or directory: '/dev/ttACMO'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/pi/Desktop/programme python/projet/communication.py", line 15, in <module>
comm.open()
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 278, in open raise SerialException("could not open port %s (self._port, msg))
serial.serialutil.SerialException: could not open port /dev/ttyACMO: [Errno 2] No such file or directory: '/dev/ttyACMO
pour le programme de l'écran je me penche dessus
je peux voir ton script python ? tu utilises bien la bibliothèque pySerial ?
Le script que j'ai posté précédemment fonctionne ? Ou tu as le même type d'erreur ?
j'ai justement utilisé le script (en adaptant les paramètres pour correspondre) mis ici pour testé et là j'ai recopié l'erreur telle quelle. d'ailleurs l'erreur affichée avec mon programme est la même.
Postes les deux programmes s'il te plaît.
Celui de Arduino et celui du Raspberry car là on tourne en rond.
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
ttyACM0 !! Avec un zéro, et non un 'O'.No such file or directory: '/dev/ttyACMO
Arduino, Raspberry Pi, ESP, Cypress PSoC, FPGA...
Forums Arduino, Raspberry Pi
Apprendre à développer sur FPGA avec Intel Quartus Prime - Communication SPI avec un convertisseur Analogique-Numérique, simulation fonctionnelle et analyse des signaux [Nouveau]
FPGA - Programmer un contrôleur pour écran VGA avec une carte de développement FPGA
Arduino : Le manuel de laboratoire, les Quiz, les cahiers pratiques, [Nouveau] les sources et outils
ah effectivement je confondais O et 0 autant pour moi. la page d'erreur a depuis pas mal diminuée :
et voici le programme python que j'utilise :Traceback(most recent call last):
File "/home/pi/Desktop/programme python/projet/communication.py", line 16, in <module>
comm.write('<ecran=1>')
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 475, in write
n=os.write(self.fd,d)
TypeError: 'str' does not support the buffer interface
comme vous pouvez le lire j'ai juste adapté le code donné ici. <ecran=1> la forme m'est nécessaire pour l'arduino il est programmé pour recevoir et traiter tout message encadré par < et > avec = au milieu ce qui lui donne un ordre pour régler un paramètre quel qu'il soit. après je ne pense pas qu'il soit responsable des problèmes ici (la je pencherais plus pour mon ignorance pythonesque) quant à mettre son programme ici vu la tartine je préfèrerais éviter enfin si l'un de vous le veut vraiment je le ferais(de plus lui aussi évolue suivant l'inspiration de son créateur).
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import serial comm=serial.Serial() comm.port='/dev/ttyACM0' comm.baudrate=9600 comm.bytesize= serial.EIGHTBITS comm.parity=serial.PARITY_NONE comm.stopbits=serial.STOPBITS_ONE comm.xonxoff=false comm.rtscts=true comm.dsrdtr=true comm.open() comm.write('<ecran=1>') comm.close()
Tu utilises probablement la version 3 de Python ?
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import serial comm=serial.Serial() comm.port='/dev/ttyACM0' comm.baudrate=9600 comm.bytesize= serial.EIGHTBITS comm.parity=serial.PARITY_NONE comm.stopbits=serial.STOPBITS_ONE comm.xonxoff=false comm.rtscts=true comm.dsrdtr=true comm.open() comm.write(b'<ecran=1>') comm.close()
Dans le programme ci dessus j'ai juste changé une ligne avec cette modification comm.write(b'<ecran=1>')
Tu peux refaire un essai avec ce programme ?
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
Apparemment ?
C'est à dire ?
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
après un open() il faut laisser le temps à l'arduino de s'initialiser ! Ce qui est plus ou moins long selon la carte : ajoute un time.sleep(1) et importe la bibliothèque time
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 import serial import time #..... comm.open() time.sleep(1) comm.write(b'<ecran=1>') comm.close()
je dis apparement car l'arduino ne semble rien recevoir et ce n est pas les paramètres de com vu que dans l autre sens le raps recoit bien les informations. je vais voir pour le temps de latence.
temps d'attente ne change rien bon bah je vais revoir le prog sur l'arduino pas grave merci de votre aide
Essaye ceci :
Arduino :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 void setup() { Serial.begin(9600); } void loop() { if (Serial.available()) { Serial.print(Serial.readStringUntil("\n")); } delay(500); }
Python
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 import serial import time ser = serial.Serial() ser.port='/dev/ttyACM0' ser.baudrate = 9600 ser.bytesize = serial.EIGHTBITS ser.parity = serial.PARITY_NONE ser.stopbits = serial.STOPBITS_ONE ser.timeout = 10 ser.xonxoff = False ser.rtscts = True ser.dsrdtr = True ser.open() print('Ouverture du port serie') time.sleep(2) # laisser le temps à l'arduino de s'initialiser # +/- long selon la carte ser.flushInput() ser.flushOutput() print("envoi des données...") ser.write("Hello World !\n".encode("utf-8")) print(ser.readline()) time.sleep(1) ser.write("Coucou !\n".encode("utf-8")) print(ser.readline()) time.sleep(1) ser.close() print('Terminé')
Le script Python envoie à l'Arduino un message qui est à nouveau transmis au script puis affiché dans la console.
alors là joli auteur! ca marche bien !(enfin sauf pour mes fautes de frappes mais bon passons) là tu m'as montré je pense des informations qui me seront très utiles!
encore merci à tous de votre aide et de votre patience
fautes de frappe ? Où donc ?
tu peux nous en dire plus ?Envoyé par eponge
entre autres pour python le problème lié à write() et surtout sa solution, ensuite visiblement des corrections sur mon programme dans l'arduino et un exemple qui fonctionne.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager