IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Communication entre une carte arduino et une RPI


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Automaticien
    Inscrit en
    Septembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 6
    Par défaut Communication entre une carte arduino et une RPI
    Bonjour à tous,

    J'ai une question. Actuellement, j'ai une carte Arduino uno 2 avec un shield ethernet et une RPI 3B+.

    Je souhaite faire communiquer les 2 cartes ensembles par ethernet via le protocole Mosbus.

    Je souhaite allumer des Led qui sont brancher sur la carte arduino et qui communique par le port TinkerKit. J'arrive à les allumer sur la carte arduino.

    Sur la RPI, je dois utiliser le logiciel Codesys avec la bibliotèques RPI.

    Ce que je souhaite faire c'est que la carte arduino arrive à lire ce que envoie la RPI par le logiciel Codesys.

    Je n'arrive pas à faire cette étape...

    Le programme dans la RPI est le suivant : Une led s'allume pendant 5s, et l'autre s'éteint. Au bout des 5s, la première led s'éteint et l'autre s'allume pendant 5s.

    Le programme dans la carte arduino :
    Code : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    #include <SPI.h> 
    #include <Ethernet.h> // Use Ethernet2.h if you are using a M-Duino PLUS version
    #include "Mudbus.h"
     
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    Mudbus Mb;
    //Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register)
    //signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C
    //Port 502 (defined in Mudbus.h) MB_PORT
     
     
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    // Déclaration des broches 
    const int InputAnalog0{A0};                     //Entrée analogue 0
    const int InputAnalog1{A4};                     //Entrée analogue 1
    const int OutputAnalog0{A5};                    //Sortie analogue 0
    const int InputDigital0{12};                    //Entrée digital 0
    const int OutputDigital0{11};                   //Sortie digital 0
    const int OutputDigital1{10};                   //Sortie digital 1
     
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*
    based on Blink, Arduino's "Hello World!"
    Turns on an LED on for one second, then off for one second, repeatedly.
    The Tinkerkit Led Modules (T010110-7) is hooked up on O0
     
    created in Dec 2011
    by Federico Vanzati
     
    This example code is in the public domain.
    */
     
    // include the TinkerKit library
    // #ifndef TinkerKit_h
    #define TinkerKit_h
     
    #define O0 11
    #define O1 10
    #define O2 9
    #define O3 6
    #define O4 5
    #define O5 3
    #define I0 A0
    #define I1 A1
    #define I2 A2
    #define I3 A3
    #define I4 A4
    #define I5 A5
     
     
     
    void setup(){
      // initialize the digital pin as an output.
      // Pin 13 has an LED connected on most Arduino boards:
      pinMode(O3, OUTPUT);    
      pinMode(O4, OUTPUT);
      pinMode(A3, INPUT);  
     
      uint8_t mac[]     = { 0xA8, 0x61, 0x0A, 0xAE, 0x27, 0x40 };
      uint8_t ip[]      = { 192, 168, 4, 3 };
      uint8_t gateway[] = { 192, 168, 4, 254 };
      uint8_t subnet[]  = { 255, 255, 255, 0 };
      Ethernet.begin(mac, ip, gateway, subnet);
      //With the last update of Industrial Shields boards it's not necessary to use function pinMode() 
      }
     
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    void loop(){
      Mb.Run(); //Update the values of Mb.R and Mb.C every loop cycle
     
      //Analog inputs
      Mb.R[0] = analogRead(InputAnalog0); //pin A0 to Mb.R[0]
      Mb.R[1] = analogRead(InputAnalog1);
     
      //Analog outputs
      analogWrite(OutputAnalog0, Mb.R[6]); //pin A5 from Mb.R[6]
     
      //Digital inputs
      Mb.C[7] = digitalRead(InputDigital0); //pin 12 to Mb.C[7]
     
      //Digital outputs
      digitalWrite(OutputDigital0, Mb.C[100]); //pin 11 from Mb.C[8]
      digitalWrite(OutputDigital1, Mb.C[101]); 
      /*digitalWrite(O3, HIGH);   // set the LED on
      delay(1000);              // wait for a second
      digitalWrite(O4, HIGH);   // set the LED on
      delay(1000);
      digitalWrite(O3, LOW);    // set the LED off
      delay(1000);              // wait for a second
      digitalWrite(O4, LOW);    // set the LED off
      delay(1000); */
    /*  if (digitalRead(A3) == true)
      {
        digitalWrite(O4, HIGH);   // set the LED on
        digitalWrite(O3, LOW); 
      } 
      else
      {
        digitalWrite(O4, LOW); 
        digitalWrite(O3, HIGH);
      }*/
      }
    Voici la configuration dans la RPI avec le logiciel codesys :
    Nom : RPI_0.PNG
Affichages : 591
Taille : 32,8 Ko

    Nom : RPI_1.PNG
Affichages : 613
Taille : 36,6 Ko

    Nom : RPI_2.PNG
Affichages : 352
Taille : 55,9 Ko

    Nom : RPI_3.PNG
Affichages : 623
Taille : 120,7 Ko

    Pour info, j'arrive à pinger les 2 cartes et j'ai mis toutes les bibliothèques nécessaire dans la carte arduino.

    Joyeux Noël

    Merci pour votre réponse !

    Cordialement,

    Lancelot

  2. #2
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Bonjour Lancelot60 .

    Je ne connais pas ModBus, mais il semble que la bibliothèque à utiliser est ArduinoModbus et non Mudbus (voir ici).
    Essaye de remplacer la ligne :
    Code arduino : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "Mudbus.h"
    par la ligne :
    Code arduino : Sélectionner tout - Visualiser dans une fenêtre à part
     #include <ArduinoModbus.h>

    En espérant que ça te sera utile,
    amicalement,
    naute

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/08/2008, 17h50
  2. [Interopérabilité] Communication entre une appli java et une appli c++
    Par r0d dans le forum Architecture
    Réponses: 4
    Dernier message: 05/05/2008, 19h27
  3. Communication entre une application et un téléphone mobile
    Par m.david dans le forum Développement
    Réponses: 3
    Dernier message: 11/03/2008, 14h07
  4. Réponses: 5
    Dernier message: 23/09/2006, 13h18
  5. [MFC] Communication entre une CDialog et une CFormview
    Par julien.nasser dans le forum MFC
    Réponses: 8
    Dernier message: 06/07/2006, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo