Communication Raspberry pico

Des infos, des conseils sur les bus DSI,CSI, I2C, SPI... du Raspberry Pi

Modérateur : Francois

tuturd
Messages : 4
Enregistré le : jeu. 24 juin 2021 19:02

Communication Raspberry pico

Message par tuturd » jeu. 24 juin 2021 19:09

Bonjour à tous,

J'ai récemment acheté un Raspberry Pico pour décupler les capacités de ma plus vieille Pi3B+ en therme de capteurs, boutons, leds, GPIO, etc

Mais je ne trouve pour l'instant aucun protocole ou Bus permettant aux deux contrôleurs de communiquer dans les deux sens...

Est-ce possible en MicroPython ? Ou bien en C ?

piper
Raspinaute
Messages : 645
Enregistré le : sam. 5 juin 2021 18:57

Re: Communication Raspberry pico

Message par piper » sam. 26 juin 2021 10:54

Bonjour,
Dans ces circonstances, je ne me prend pas la tête : j'ai toujours inventé mon protocole : on a le port série.
Et en général, on a pas besoin d'une "usine à gaz" : jusque quelques commandes et réponses.
On ne fait pas (sauf cas exceptionnel) de produits destinés à la vente, donc on peut se permettre des commandes basiques sans trop de cryptage (en général je mets en 1er octet une commande, suivit des arguments et quand je suis très motivé, un CRC à la fin et en réponse : un octet pour identifier le type de réponse, les données puis un CRC)
Et quand j'ai vraiment la flemme, je mets carrément ça en clair
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Communication Raspberry pico

Message par destroyedlolo » sam. 26 juin 2021 11:30

La liaison série est en effet le plus simple.
Cependant, comme le pico a une prise USB OTG, il devrait etre possible de faire transiter un réseau IP par son intermédiaire, ce qui ouvre la possibilité d'utiliser par exemple MQTT.

Conditionnel hein : je l'ai déjà fait entre une tablette que j'avais passé sous Linux et ca fonctionne excellemment bien. La question est de savoir s'il y a le code correspondant dans l'univers arduino, ce que je n'ai pas vérifié.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

tuturd
Messages : 4
Enregistré le : jeu. 24 juin 2021 19:02

Re: Communication Raspberry pico

Message par tuturd » dim. 27 juin 2021 18:58

Merci beaucoup, je vais essayer de me pencher sur ces solutions ;)

tuturd
Messages : 4
Enregistré le : jeu. 24 juin 2021 19:02

Re: Communication Raspberry pico

Message par tuturd » dim. 27 juin 2021 19:25

[quote=destroyedlolo post_id=37775 time=1624699801 user_id=1635]
Cependant, comme le pico a une prise USB OTG, il [b]devrait[/b] etre possible de faire transiter un réseau IP par son intermédiaire, ce qui ouvre la possibilité d'utiliser par exemple MQTT.
[/quote]

Comment est-ce possible d'utiliser le MQTT via un USB ?
Ce n'est pas sensé être un protocole passant par le réseau ?

tuturd
Messages : 4
Enregistré le : jeu. 24 juin 2021 19:02

Re: Communication Raspberry pico

Message par tuturd » dim. 27 juin 2021 19:26

[quote=piper post_id=37770 time=1624697643 user_id=6341]
Bonjour,
Dans ces circonstances, je ne me prend pas la tête : j'ai toujours inventé mon protocole : on a le port série.
Et en général, on a pas besoin d'une "usine à gaz" : jusque quelques commandes et réponses.
On ne fait pas (sauf cas exceptionnel) de produits destinés à la vente, donc on peut se permettre des commandes basiques sans trop de cryptage (en général je mets en 1er octet une commande, suivit des arguments et quand je suis très motivé, un CRC à la fin et en réponse : un octet pour identifier le type de réponse, les données puis un CRC)
Et quand j'ai vraiment la flemme, je mets carrément ça en clair
[/quote]

Ce serais la première fois que je créerais mon propre protocole...
Connaissez-vous un site expliquant comment faire ?

piper
Raspinaute
Messages : 645
Enregistré le : sam. 5 juin 2021 18:57

Re: Communication Raspberry pico

Message par piper » dim. 27 juin 2021 19:42

J'en connais pas mais la ere etape est basique :
Liste toutes les commandes que tu veux envoyer et les reponses attendus.
Ensuite tu les structures
Ex : ouvrir, fermer des portes et connaitre leurs statuts
3 commandes possibles : ouvrir fermer ou statut : 0x10, 0x11 et 0x20
Si demande d'ouvrerture ou d'ouverture : preciser le numero de la porte.
Terminer le message par un 0x00
Reponse systematique : un octet pour dire que c'est du statut : 0x20 le statut des portes (liste du statut de chaque porte par exemple sous la forme de 0 et de 1) et 0×00 pour finir.
Avec ces 3 octets, tu peux gérer 255 portes.


Envoyé de mon SM-J710F en utilisant Tapatalk

3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Communication Raspberry pico

Message par destroyedlolo » lun. 28 juin 2021 15:22

tuturd a écrit :
dim. 27 juin 2021 19:25
Comment est-ce possible d'utiliser le MQTT via un USB ?
Ce n'est pas sensé être un protocole passant par le réseau ?
Le protocole OTG / USB Gadget permet entre autre de faire passer un réseau IP par le port USB.
Je l'ai fait pour recyclé sous Linux une tablette dont Android était HS et pour laquelle je n'avais pas de driver pour le WiFi, et ca a très bien marché pendant des années ... jusqu’à ce qu'elle se prenne la foudre.

Une fois le réseau établit, mettre du MQTT ne casse pas 3 pattes a un canard ;)

Sinon, faire son propre protocole : OUI.
Mais il faut maitrisé AVANT une simple connexion série (RS-232). Une fois qu'on est capable d'envoyé / recevoir des infos de façons fiables (détection de début et de fin de trame), établir son protocole est un jeu d'enfant.
Je dis ca car je viens d'avoir ce genre de discussion avec un gars sur un forum Arduino qui a une carte contenant à la fois un arduino et un ESP (déjà, l'ESP aurait pu tout faire tous seul mais bon) ... ben établir une connexion série stable entre les 2 n'est pas évident pour lui.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

piper
Raspinaute
Messages : 645
Enregistré le : sam. 5 juin 2021 18:57

Re: Communication Raspberry pico

Message par piper » lun. 28 juin 2021 19:27

C'est juste : notamment, le bit 0x00 met la grouille s'il est en milieu de message et que le message est de taille variable. (cauchemar de mes débuts... il y a un moment)
Mais faire un "client-serveur" RS232 ou socket TCP/IP, à part le code de connexion , d'envoi / réception, le traitement des messages restent le même non ?
Bon évidement en TCP/IP notre message n'est pas seul dans la trame il y a déjà toute la structure de la trame TCP/IP en plus.
L'avantage du TCP/IP est de facilement pouvoir causer à plusieurs périphériques plus facilement. En RS232 c'est également possible (ça a été imaginé pour ça) mais c'est un peu galère plus à mettre en place. Aujourd'hui, ça fait même préhistorique.

Sur le net, il est bien possible que tu trouves très facilement des exemples de chat sur TCP/IP facilement transposable en communication MQQT
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Communication Raspberry pico

Message par Artemus24 » mar. 29 juin 2021 16:42

Salut à tous.
tuturd a écrit :Connaissez-vous un site expliquant comment faire ?
Comme l'indique piper, il n'y a pas de sites qui peuvent expliquer, et en même temps, c'est simple à programmer.
Ton protocole, c'est ni plus ni moins que créer un dialogue entre deux machines.
Tu dois définir la structure de ta trame.

a) un numéro identifiant le dialogue.
Par exemple, impair ; c'est une question, pair c'est la réponse à la question impaire.

b) la longueur de la chaine ci-après.

c) la liste des paramètres.

Et c'est tout, rien d'autre à indiquer.
Ce qu'il faut comprendre, l'une de tes machines fera office de serveur et l'autre de client.
Si tu as plusieurs clients, il faut aussi les identifier afin de transmettre la réponse au bon client.

Il faut prévoir une mise en attente et donc interroger périodiquement l'arrivée d'une question sur le serveur.
Quand tu as la question, tu envoies la réponse associée au client.

La lecture de la trame se fait selon le numéro d'identifiant qui va déterminer le traitement à faire et la longueur de tes paramètres.
Il n'est pas nécessaire de mettre un octet d'identification de début et un autre de fin de trame.

Au lieu que cela soit toujours question/réponse, tu peux créer un dialogue, avec mémorisation des questions précédemment posées.
Il n'est pas nécessaire de faire une ouverture et fermeture de session, juste savoir que la question N ouvre un dialogue et que la réponse N+x termine le dialogue.
C'est ton schéma de dialogues qui va définir ce que tu dois faire et ce qu'i t'est permis de faire.

Rien de compliquer pour un liaison série.

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Répondre

Retourner vers « Les BUS interfaces »