Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arduino yun communication

Sockets?

    15 avril 2015 à 21:44:20

    Bonjour,

    je me permet de poster ce message car je suis un peu perdu dans mon projet, je possède une Arduino yun ainsi qu'un ordinateur et quelques capteurs. 

    Ce que je veux faire, c'est affiché les données captées par les capteurs en temps réel, sur l'ordinateur dans une interface graphique en c#.

    On ma dit qu'il fallait utilisé des sockets, mais quels types de socket ? Je souhaiterais donc me servir de l'arduino yun pour envoyer les données et de l'ordinateur pour les réceptionner et les restituer dans une interface ( voir même les stocker).

    Pour le coté ordinateur, je pense avoir compris un minimum, cependant du coté " Envoyer les données " je suis complètement perdu, que dois-je programmer pour envoyer les données, càd la carte via le logiciel arduino, ou bien la carte en elle même ( linino openwrt etc...)  ?

    Merci à vous et excusez moi si je n'ai pas été assez clair.

    • Partager sur Facebook
    • Partager sur Twitter
      15 avril 2015 à 21:56:55

      Bonsoir,

      Si l'Arduino est connecté au PC via le câble USB, la communication du PC vers l'Arduino est assurée par un port série RS232 virtuel. La communication est alors identique à une liaison série classique. Il faut alors chercher les méthodes d'accès destinées à une liaison série, il est aussi nécessaire de régler le format et la vitesse comme celle programmée dans l'Arduino.

      • Partager sur Facebook
      • Partager sur Twitter
        15 avril 2015 à 23:34:56

        Acheter une Yun pour faire une COM série USB, c'est un peu dommage quand même.

        Ou du moins, je suppose que tu l'as acheté pour sa liaison Wifi.


        Donc une fois que tu as paramétré le wifi de ta Yun pour qu'elle se connecte au réseau de ta box, tu peux utiliser la lib Bridge.

        => http://arduino.cc/en/Reference/YunBridgeLibrary

        Deux classes te seront très utile :

        - YunServer : pour gérer un serveur TCP-IP sur ta Yun

        - YunCLient : pour gérer les clients qui se connecte au serveur

        Du coup, il te faut créer un serveur sur ta Yun et écouter les clients qui se connectent.


        Coté PC, il te faut en effet utiliser les sockets pour te connecter sur l'adresse IP de ta Yun avec le port que tu auras spécifié à YunServer.

        Une fois le socket établie, tu as une communication dans les 2 sens, comme avec Serial.

        Libre à toi de trouver un formatage adéquate pour faire transiter tes données.

        • Partager sur Facebook
        • Partager sur Twitter
          16 avril 2015 à 8:17:41

          Non je veux qu'elle soit connecté en wifi avec l'ordinateur , pour communiquer à distance
          • Partager sur Facebook
          • Partager sur Twitter
            16 avril 2015 à 8:20:04

            Il faut obligatoirement paramètrer le wifi de la yun pour qu'elle se connecte à ma box ? je ne peux pas tout simplement me connecté dessus avec mon pc avec les paramètres de base?
            • Partager sur Facebook
            • Partager sur Twitter
              16 avril 2015 à 9:53:37

              Un réseau wifi a toujours besoin d'un routeur qui crée le réseau wifi.

              Donc tu as deux solutions possibles :

              - soit tu paramètres ta Yun en mode routeur (qui est le mode par défaut) et tu paramètres ton PC pour qu'il se connecte sur le réseau de ta Yun

              - soit tu utilises le réseau wifi de ta box (qui est un routeur ) et tu paramètres la Yun et ton PC pour qu'ils se connectent au Wifi de ta box


              L'avantage d'utiliser le réseau de la box, c'est que tu auras un accès à internet alors que si tu utilises une connexion direct à la Yun, il n'y a pas internet.

              Pour la Yun, ne pas avoir internet n'est absolument pas gênant.

              Par contre, pour ton PC... tu vas vite trouver ça chiant car les doc et les exemples sont sur internet.

              D'un autre coté, si ton PC est relié à la box par câble, tu n'auras aucun soucis ;)

              -
              Edité par lorrio 16 avril 2015 à 9:55:52

              • Partager sur Facebook
              • Partager sur Twitter
                16 avril 2015 à 12:17:19

                Très bien, donc pour ma présentation au moment de montrer ce que j'ai fais, vu que je pourrais pas connecté la carte yun à une box, si je connecte simplement le pc et la carte ensemble, cela ne changera rien du tout ?
                • Partager sur Facebook
                • Partager sur Twitter
                  16 avril 2015 à 12:31:45

                  Lors de ta démonstration, tu n'auras qu'à configurer ta Yun comme routeur wifi.

                  Tous les périphériques Wifi pouvant se connecter au réseau wifi de la Yun (téléphone, ordinateur...) pourront donc avoir accès à ton interface de contrôle WEB.

                  En revanche, un téléphone situé à 200km de là n'auras évidement pas accès au réseau wifi et non pourras donc pas contrôler la Yun.

                  On va donc dire que c'est une communication sans fil à courte distance (la porté du réseau wifi soit quelques dizaines de mètres).

                  Tu pourras ensuite expliquer à tes professeurs qu'en reliant ta carte à un box ethernet ayant le port 80 ouvert, celle-ci devient accessible par n'importe qui dans le monde ou ailleurs (genre les astronautes de la station orbital) ayant un accès à internet.

                  -
                  Edité par lorrio 16 avril 2015 à 12:32:54

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 avril 2015 à 12:39:09

                    Très bien merci pour les conseils cela m'a beaucoup aider, je vais essayé de résumer ce que je dois faire :

                    - Grâce aux classes YunServer ( qui va configurer la carte en temps que serveur , et configurer un port ) et YunClient ( qui va gerer les clients ), je pourrais donc envoyé les données sur le port qui à été configurer

                    - Ensuite je devrais connecté la carte à mon pc

                    - Créer le socket sur le pc qui va se connecter sur le serveur de la yun ( qui sera gérer par les indications entré dans YunClient) 

                    - La communication est donc établie, il me reste juste à écrire le programme des capteurs et dans YunServer faire en sorte que sa envoie les variables ( donc les données captées ) sur le port. ( Je ne suis pas sur de sa )

                    La seule chose qui me dérange encore, c'est que je ne vois pas trop comment restituer les données reçues sur le pc, dans une interface graphique en c#. Je pensais à créer une variable qui concerne par exemple la température, et tout simplement dire à l'interface " Affiche cette variable " ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 avril 2015 à 12:58:48

                      Non, il faut bien distinguer la gestion du wifi de la gestion des communications.

                      Pour pourvoir dialoguer directement avec la Yun (sans passer par internet), ton PC a besoin d'être dans le même réseau wifi que la Yun.

                      Pour cela, 2 choix possibles :

                      - soit configurer la Yun en mode routeur et le configurer le PC pour qu'il se connect au réseau wifi de la Yun

                      - soit utiliser une box (ou n'importe quel autre routeur wifi) et configurer la Yun et le PC sur ce réseau

                      Pour cette étape, c'est juste de la configuration avant les panneaux admin de la Yun et du PC, cela n'a strictement rien à voir avoir ton code.

                      Une fois que ta Yun et ton PC seront sur le même réseau, ils auront chacun une adresse IP du genre 192.168.1.2 pour l'un et 192.168.1.3 pour l'autre.

                      C'est maintenant que l'on va pouvoir entrer dans le code.

                      Coté Yun, il faut que tu crée un serveur sur un port précis (10245 par exemple) avec la classe YunServer.

                      Coté PC, il faut que tu te établisses une connexion au serveur de la Yun en utilisant un socket TCP-IP avec comme paramètre l'IP de la Yun et le numéro de port que tu as choisi avec YunServer.

                      Dès que le PC va établir sa connexion socket, la Yun sera en mesure de récupérer cette connexion avec la classe YunClient.

                      A partir de là, la communication bidirectionnelle est en place :

                      - tout ce que le PC envoie sur le Socket sera reçu par la classe YunClient de ta Yun

                      - tout ce que la Yun envoie sur la classe YunClient sera reçu sur le socket coté PC

                      A noter que les navigateurs WEB (firefox, google chrome...) utilisent eux aussi des sockets sur le port 80 et communiquent avec un formatage très précis : le protocole HTTP et pages HTML.

                      De ce fait, en ouvrant un YunServer sur le port 80 et en faisant un code qui respecte à la lettre le protocole HTTP, ta Yun sera en mesure de répondre à n'importe qu'elle navigateur WEB (que ce soit un navigateur android, le navigateur windows (Internet Explorer), le navigateur Firefox...)

                      Du coups, pas besoin d'avoir à développer ou installer une application C# puisque tous les PC et smartphone sont équipé d'un navigateur WEB.

                      Cela peut être un gros avantage lors de la présentation en disant qu'il n'y a rien à installer et que toute ton application est pilotable depuis un simple site WEB émulé par ta yun.

                      -
                      Edité par lorrio 16 avril 2015 à 13:02:44

                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 avril 2015 à 19:02:46

                        Très bien, c'est un peu plus clair pour moi, merci de ton aide !
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 avril 2015 à 19:41:55

                          A noter que la Yun possède en réalité 2 processeurs :

                          - un coeur arduino sur lequel ton code tourne

                          - un coeur ARM qui fait tourner un Linux pour gérer le Wifi.

                          Il est possible d'installer des packages sur le Linux pour ajouter un vrai serveur WEB apache et PHP, ce qui sera bien plus simple pour le développement d'une interface WEB.

                          Tu pourras ainsi faire des scripts PHP qui génèrent de belles page HTML avec en lisant des fichiers contenant les données de ton capteur.

                          Avec cela, ton code arduino devient extrêmement simple puisqu'il lui suffit de lire périodiquement les capteurs et écrie la valeurs dans des fichiers.

                          Tu n'auras ainsi pas à te soucis de la connexion sockets car tout sera automatique :

                          - coté PC, ce sera le navigateur internet qui les gère en chargeant une page WEB

                          - coté Yun, ce sera le package Apache et PHP qui gère la connexion en envoyant la page WEB que ton script PHP (que tu devras coder) génèrera.

                          Parles en à tes professeurs avant de te lancer la dedans parce que si ils t'impose une interface graphique C#, ça ne répondra pas à leurs attentes.

                          -
                          Edité par lorrio 16 avril 2015 à 19:44:00

                          • Partager sur Facebook
                          • Partager sur Twitter
                            16 avril 2015 à 20:26:46

                            Oui c'est bien précisé " Créer une interface graphique pour que l'utilisateur puisse lire les données " , sinon ton idée me plaie bien, mais j'ai une faible connaissance en PHP donc je ne pense pas que se sera possible.

                            Une dernière petite question, est-il possible d'enregistrer les données captées dans une base de données mysql?

                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 avril 2015 à 1:26:24

                              Salut, merci pour ce post le sujet est fort intéressant,  je souhaiterais en profiter pour poser deux petites questions.

                              Si j'utilise la yun en tant que routeur WiFi, est que je peux envisager de pouvoir partager une connexion internet par l’intermédiaire du rj45 connecté sur ma box. Je suppose qu'il y aura un conflit non ? 

                              Si c'est possible, est ce que je peux limiter l'utilisation de la connexion internet uniquement par la Yun et non pas par les clients qui se connecterais au réseau WiFi de la Yun ?

                              Merci

                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 avril 2015 à 12:02:02

                                Créer une interface graphique ne veux pas forcément dire créer un logiciel C#.

                                Cela peut très bien être une page internet ;)


                                Oui, tu peux installer une base de données (mysql ou autre) sur le processeur Linux de ta Yun mais c'est à toi de faire le code qui insère dans la base.

                                Pour ça, tu peux faire un petit script bash, python, C ou autre que tu places sur le processeur Linux puis ton code arduino exécute ces scripts en transmettant les données à enregistrer.


                                Je ne vois pas ce qui t’empêche d'utiliser la Yun en temps que routeur Wifi étant donné qu'elle possède une interface réseau RJ45 et une interface réseau wifi.

                                A mon avis, il faut juste paramétrer correctement tout ça.

                                Mais quel est l’intérêt étant donné que toutes les boxes sont équipé d'un routeur wifi ?


                                Gérer les bandes passantes, ça doit aussi être possible en installant des packages et en configurant tout ça mais là, on entre vraiment dans des configurations systèmes.

                                Bref, il va falloir chercher sur google avec des mots clef du genre "linux limit bandwidth" sans mettre le mot clef "arduino Yun" car je doute fort que tu trouves un tutoriel spécial Yun.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 avril 2015 à 12:51:58

                                  Le plus simple serait donc de créer une page internet , comme tu as dis :" - coté Yun, ce sera le package Apache et PHP qui gère la connexion en envoyant la page WEB que ton script PHP (que tu devras coder) génèrera. " ? 

                                  Cependant je n'ai ne sais pas trop par ou commencer :/ .

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 avril 2015 à 13:01:59

                                    Pour moi, c'est ce qu'il y aurait de plus simple mais si tu as de bonne connaissance en C# et aucun en programmation WEB Php/Html, ce n'est pas forcément la meilleurs option.

                                    Dans tous les cas, avant de te lancer dans toutes l'artillerie graphique, tu devrais faire la gestion de tes capteurs.

                                    Je te conseille donc de faire un programme arduino qui lit tes capteurs et affiche les données sur le Serial.

                                    Ensuite, tu pourrais lire ce tutoriel : http://www.instructables.com/id/Control-Access-of-Arduino-Y%C3%9AN-with-MySQL-PHP5-and-/?ALLSTEPS

                                    Tu y découvriras comment installer PHP, apache et MySQL ;)

                                    -
                                    Edité par lorrio 18 avril 2015 à 13:11:00

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      18 avril 2015 à 13:40:21

                                      Pour les capteurs, je les ai déja mis en place, et réussit à obtenir les résultats sur le moniteur série ( tous en même temps ).

                                      En html j'arrive à me débrouiller mais en PHP je n'ai presque pas de connaissances.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 avril 2015 à 14:20:20

                                        Dans un premier temps, si tu n'utilises pas de Base de Données, PHP n'aura pratiquement rien à faire.

                                        En effet, tu pourrais simplement précédé ainsi :

                                        - Coté arduino, chaque nouvelle mesure est enregistrée dans un fichier en écrasant la précédente

                                        - Coté PHP, il suffit alors simplement d'afficher le mesure en question avec une page qui peut ressemblait à ça :

                                        <h1>Température</h1>
                                        <p>Valeur = <?php echo file_get_content('temp.txt'); ?>°C</p>



                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 avril 2015 à 14:26:53

                                          D'accord, mais le code PHP, je devrais l'écrire sur le PC ( je n'ai pas très bien compris ) ?

                                          Ensuite, je n'arrive pas très bien à m'imaginer comment sera l'affichage sur la page web, je devrais réactualisé la page pour que cela affiche les nouvelles données ?

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            18 avril 2015 à 15:31:40

                                            Oui, tu peux développer tes script PHP pour les envoyé sur la Yun une fois terminé.


                                            Pour rafraichir les données, tu as plusieurs solution :

                                            - soit manuellement en actualisant la page

                                            - soit en ajoutant des scripts JS qui se chargent de rafraichir les valeurs

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 avril 2015 à 15:38:10

                                              Et pour " envoyé les scripts PHP sur la yun " cela se passe comment ? 

                                              Si j'ai bien compris, je dois dire à la YUN d'ouvrir le site web, en y affichant les données captées.

                                              Et comme le PC et la carte seront sur le même réseau, j'aurais accès au site ? 

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                18 avril 2015 à 16:56:03

                                                Le coeur ARM de la Yun gère un vrai système d'exploitation : Linux.

                                                Donc on peut voir ça exactement comme un PC ou un serveur sur lequel on peut faire énormément de choses.

                                                Tu peux donc y installer apache (serveur WEB), PHP, Mysql ainsi qu'éventuellement un serveur FTP (pour transférer tes pages WEB).

                                                Bref, si tu as déjà fais de la programmation WEB, on peut voir la Yun exactement comme un petit serveur dédié sur lequel c'est à toi d'installer les packages (apache, PHP, MysQl...) avant de pouvoir les utiliser.


                                                Pour transférer tes fichiers, si tu installes un package de serveur FTP, cela devient extrêmement simple avec Fillezilla ou autre.

                                                Et pour accéder au site WEB depuis ton PC, il te faudra simplement entrer l'URL de la YUN avec son IP (probablement un truc du genre http://192.168.0.7)

                                                -
                                                Edité par lorrio 18 avril 2015 à 16:57:19

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  19 avril 2015 à 1:52:47

                                                  martinmuller1

                                                  Pour le transfert de fichier j'utilise winSCP sur la yun, ca fonctionne plutot bien 

                                                  lorrio a écrit:

                                                  ...

                                                  Je ne vois pas ce qui t’empêche d'utiliser la Yun en temps que routeur Wifi étant donné qu'elle possède une interface réseau RJ45 et une interface réseau wifi.

                                                  A mon avis, il faut juste paramétrer correctement tout ça.

                                                  Mais quel est l’intérêt étant donné que toutes les boxes sont équipé d'un routeur wifi ?

                                                  ...

                                                  Justement je n'ai pas de routeur wifi mais que du rj45 avec internet, du coup je voudrais me servir de la yun à la fois comme routeur Wifi mais aussi comme serveur web local. Par contre comment pourrais-je contrroler le partage de la connexion internet, si je veux par exemple que seul la yun puisse y avoir acces et non les client qui se connect à l'acces Wifi de la yun. Qu'est-ce qui permettrait de gerer les clients WiFi ? 

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    19 avril 2015 à 11:33:16

                                                    La Yun exécute un système d'exploitation Linux donc on peut potentiellement tout faire avec.

                                                    Il faut juste installer les bon packages (en espérant qu'ils soient sur les dépots officiels parce que sinon, il te faudra les compiler toi même et c'est loin d'être une partie de plaisir) et configurer tout ça.

                                                    Il doit y avoir pleins de tutoriel sur la configuration de serveur Linux et autre sur Google mais je ne peux pas t'en dire plus étant donné que je n'ai jamais fais ce genre de choses.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      20 avril 2015 à 17:09:17

                                                      ok merci lorrio, 

                                                      je vais essayer de voir avec la config  reseau et iptables 

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        24 mai 2015 à 17:11:12

                                                        Salut je suis de retour ! J'ai un petit problème de dernière minute : 

                                                        J'ai configurer la YUN sur le même réseau que mon PC pour pouvoir installer les packages etc...

                                                        Mais lors de la soutenance, je ne pourrais pas la connecté sur le même réseau que le PC et pour pouvoir " délier " la carte de mon PC, je connais que la technique du reset, donc je perdrais tout ce que j'ai fais dessus.

                                                        Il n'y a pas moyen de délier la carte du réseau tout en gardant ce qu'on à fait dessus ? 

                                                        Si je connecte simplement le PC au réseau de la carte, pour accéder au serveur WEB je pourrais faire comment ? 

                                                        Merci !

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          24 mai 2015 à 17:39:20

                                                          Es tu certain qu'un reset efface tout le contenu de la carte SD de la YUN ? (as tu essayé ?)

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            24 mai 2015 à 18:11:23

                                                            Non, mais pour moi reset = tout effacé, c'est pour sa que j'ai peur d’essayer :/
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              24 mai 2015 à 18:28:09

                                                              C'est bien beau de tout effacer mais si la YUN efface toute la carte SD, elle ne sera même plus capable de démarrer puisque le Linux est sur cette carte SD.

                                                              Donc je serais plutôt d'avis de dire que le reset efface uniquement quelques fichier de config réseau et c'est tout.

                                                              Le mieux est donc de faire le test en ayant évidement pris soin de faire une sauvegarde complète de la carte avant.

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Arduino yun communication

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown