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

Réseau/Web Python Discussion :

Liaison PC à PIC


Sujet :

Réseau/Web Python

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Liaison PC à PIC
    Bonjour tout le monde!
    J'ai besoin de faire communiquer un PC avec un PIC type 16F877 par liaison ethernet (et par l'intermédiaire de CPL , courant porteur en ligne), plusieur jours que je me documente, mais je n'arrive pas à trouver de solution.
    Quelqu'un a-t-il une idée? une piste pour démarrer?

    Merci pour votre aide

  2. #2
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Salut

    Quand je cherche rapidement sur google "PIC 16F877", je tombe sur des puces... Est-ce bien ce dont tu parles ?

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    à Antoine_935

    Oui, c'est un peu ça! il s'agit de microprocesseurs un peu spéciaux, je pence que c'est connu.
    J'ai développé une appli pour faire fonctionner une machine avec un PIC, et maintenant, j'aurais besoin de pouvoir le faire communiquer avec un PC pour lequel j'ai développé un programme en Python. J'ai un peu de mal, il s'agira surement d'un système client/serveur et de TCP/IP mais je cherche...

  4. #4
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Bon, je n'ai aucune connaissance en ce qui concerne ce PIC.
    Toutefois, j'imagine que ce n'est pas le PIC lui-même qui gère les interfaces réseau.

    Il te faudra un controleur ethernet quelconque (dans ton cas le "modem" cpl), sur lequel le PIC pourra faire des requêtes via les bus appropriés.

    Du coup, la question qui nous intéresse: sur quoi le PIC est-il mis ?

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    bonjour,
    exact, le PIC 16F877 est relayé par un ENC 28J60 pour sortir sur une connection ethernet, et le tout est programmé en C, on frise le hors sujet ici, sauf que mon appli sur le PC est en Python, je continue mes recherches, merci Antoine_935 pour ton intervention.

  6. #6
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    On ne frise pas le hors sujet, on situe le contexte

    Donc si j'ai bien compris, la connexion réseau du côté du PIC fonctionne et tu n'as pas à t'en charger.
    Ce qu'il te faut c'est interagir avec. Il te faudra quoi qu'il arrive des infos sur le protocole.

    Une fois que tu les auras, soit c'est du texte, et ce sera plus marrant que difficile, soit c'est du binaire et ce sera encore plus drôle avec le module struct.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    En fait, c'est un peu compliqué:
    J'ai conçu une sorte de distributeur de boissons qui fontionne avec un PIC.
    Le PIC, par l'intermédiaire de la puce ENC28j60, qui sort sur connecteur éthernet, puis par CPL pour éviter de longs câbles entre les deux, sera en communication avec un PC pour lequel j'ai établi un programme en Python.

    Le programme Python sur le PC est chargé de gérer entre autre, les tarifs, l'état du stock, et autres statistiques concernant la machine, et éventuellement transmettre des mail à un gestionaire hors site.

    Donc, grosso-modo, tout reste à faire, aucun protocole n'est encore établi, j'ai tout à définir, la machine fonctionne, le PC fonctionne, je voudrais relier les deux, c'est pour ça que j'ai fait mon post sur 'Réseau/Web'.

  8. #8
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Citation Envoyé par Qbitus Voir le message
    J'ai conçu une sorte de distributeur de boissons qui fontionne avec un PIC.
    Cool ! Je rêve d'avoir les connaissances nécessaires pour créer mon propre matériel. Bravo


    De ce que je comprends, la solution qu'il te reste, c'est implémenter un ptit serveur sur ton distributeur, en créant bien sur toi-même ton protocole.

    Autre solution, tu mets le serveur sur ton pc. Ca permet de ne pas charger le distrib d'un gros serveur. C'est alors lui qui s'y connectera.

    Encore une autre solution: utiliser un port série

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Ben oui, et déjà plusieur sont en service! mais c'est une version que je voudrais améliorer car c'est jusqu'aprésent entiérement électromécanique.
    Je ne peux pas envisager la solution port série car les nouveuax PC portables en sont démunis.
    La solution CPL permet d'utiliser le port éthernet sans 'ficelles' entre les apareils.
    Le serveur serait plutôt sur le PC et le client sur la machine, ce qui permet d'avoir plusieur machines gérées par le même PC, voilà.... il y a du boulot!

  10. #10
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Citation Envoyé par Qbitus Voir le message
    il y a du boulot!
    C'est un fait Bonne chance dans ta grande entreprise

  11. #11
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut,

    Est-ce que l'API du PIC permet de programmer des socket, ou est-ce que le contrôle du réseau de fait à plus bas niveau ?

    Parce que si tu peux gérer des socket en C depuis le PIC, alors (presque) gagné !


    -

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Bonjour monnomamoi(!)
    Je ne maîtrise pas du tout le sujet... il faut que je trouve des exemples de code concernant le couple PIC / ENC28j60 je continue mes fouilles...

  13. #13
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    salut,

    je n'ai jamais utilisé ce composant mais j'adore les PIC dc je ne peut que t'encourager à continuer ^^

    J'ai regardé en vitesse le ENC28j60 et voilà ce que j'en ai tiré pour le moment

    Apparement il est doté d'une interface SPI donc série qui sera reliée à ton PIC (tous les 18F supportent le SPI il me semble) d'un autre côté ton ENC29j60 communique en Ethernet avec l'extérieur. Par contre il ne gère que les adresses MAC.
    L'adresse MAC de ton composant devra dailleur lui être attribuée par ton PIC lors du reset.

    Le composant te simplifie un peu la tâche pour ton code du PIC, en effet il s'occupe tout seul de la création des trames (en-tête, CRC, etc..), la "seule" chose qu'il te reste à faire c'est lire ou écrire sur le port série de ton PIC les infos qui t'intéressent.

    Par contre je ne sais pas trop comment ça se passera côté PC. Je n'ai jamais codé d'appli qui utilisent le réseau d'aussi prêt ^^.

    Si tu ne l'a pas encore vu je te conseille les aides fournies par Microchip notament sur cette page. Tu as la datasheet mais surtout des exemples d'application et du code pour rajouter la couche IP ce qui pourrait t'être utile.

    Bon courage pour la suite,

    n'hésite pas à demander de l'aide, si je peux aider un tant soit peu.

    ++

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Merci jimay pour ta proposition d'aide, je me suis remis pour le moment à la prog du pic en C, je reviendrai plus tard sur la liaison ethernet, je ne manquerai pas de te consulter comme tu me le proposes, et on en fera profiter ceux que ça intéresse.

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Qbitus Voir le message
    Merci jimay pour ta proposition d'aide, je me suis remis pour le moment à la prog du pic en C, je reviendrai plus tard sur la liaison ethernet, je ne manquerai pas de te consulter comme tu me le proposes, et on en fera profiter ceux que ça intéresse.

    Salut Qbitus,

    J'ai un projet aussi qui est de créer un télécommande qui me permet d'envoyer des messages à un logiciel installé sur le PC qui utilise le PORT 3040.

    j'ai donc la carte Easypic5 avec comme pic 16F887 ou 18F4550 et donc le Module Ethernet ENC28J60 que j'ai acheté chez LEXTRONIC : http://www.lextronic.fr/

    j'ai créer un petit programme mais je sais pas si cela fonctionne ou si je fais les chose comme il le faut.

    voici mon code:
    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
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    program UDP
     
    ' mE ehternet NIC pinout
    dim SPI_Ethernet_RST as sbit at RC0_bit
    dim SPI_Ethernet_CS as sbit at RC1_bit
    dim SPI_Ethernet_RST_Direction as sbit at TRISC0_bit
    dim SPI_Ethernet_CS_Direction as sbit at TRISC1_bit
    ' end mE ehternet NIC pinout
     
    const SPI_Ethernet_HALFDUPLEX = 0
    const SPI_Ethernet_FULLDUPLEX = 1
    const _SPI_Ethernet_CRC = 0x20
    const _SPI_Ethernet_MULTICAST =  0x02
     
    ' Declarations section 
    dim myMacAddr   as byte[6]  ' my MAC address
        myIpAddr    as byte[4]  ' my IP address
        ipMask      as byte[4]  ' network mask (for example : 255.255.255.0)
        gwIpAddr    as byte[4]  ' gateway (router) IP address
        dnsIpAddr   as byte[4]  ' DNS server IP address
        ipServeur   as byte[4]  ' IP adress serveur
     
        dim msg as string[20]
        res_txt as string[5]
        res, channel as word
        dim txt as string[20]
     
     
     
    sub procedure SPI_Ethernet_confNetwork(dim byref ipMask, gwIpAddr, dnsIpAddr as byte[4])
     
    end sub
     
    sub function SPI_Ethernet_UserTCP(dim remoteHost as ^byte, dim remotePort as word, dim localPort as word, dim reqLength as word, dim byref canClose as byte) as word
     
    result = 0
     
    end sub
     
    sub function SPI_Ethernet_UserUDP(dim remoteHost as ^byte, dim remotePort as word, dim destPort as word, dim reqLength as word) as word
     
    result = 0
     
    end sub
     
    sub function SPI_Ethernet_sendUDP(dim byref destIP as byte[4], dim sourcePort, destPort as word, dim pkt as ^byte, dim pktLen as word) as byte
     
    result = 1
     
    end sub
     
    main :
     
    ADCON1 = 6 '  digital
    TRISA = 1
    TRISC =  0
     
     
      myMacAddr[0] = 0x00
      myMacAddr[1] = 0x14
      myMacAddr[2] = 0xA5
      myMacAddr[3] = 0x76
      myMacAddr[4] = 0x19
      myMacAddr[5] = 0x3F
     
      myIpAddr[0] = 192
      myIpAddr[1] = 168
      myIpAddr[2] = 0
      myIpAddr[3] = 2
     
      gwIpAddr[0]  = 192
      gwIpAddr[1]  = 168
      gwIpAddr[2]  = 0
      gwIpAddr[3]  = 6
     
      dnsIpAddr[0] = 192
      dnsIpAddr[1] = 168
      dnsIpAddr[2] = 0
      dnsIpAddr[3] = 100
     
      ipMask[0]    = 255
      ipMask[1]    = 255
      ipMask[2]    = 255
      ipMask[3]    = 0
     
      Ipserveur[0] = 192
      Ipserveur[1] = 168
      Ipserveur[2] = 0
      Ipserveur[3] = 3
     
     
     
      SPI1_init()
      SPI_Ethernet_Init(myMacAddr, myIpAddr, SPI_Ethernet_FULLDUPLEX)
      SPI_Ethernet_confNetwork(ipMask, gwIpAddr, dnsIpAddr) ' set network configuration parameters
      SPI_ethernet_enable(_SPI_Ethernet_CRC or _SPI_Ethernet_MULTICAST)
     
    while True
    PORTA.0 = 1
    wend
     
    '#######String Concatenating#######'
     
    ' Get result of ADC
    'res = Adc_Read(channel)
     
    'WordToStr(res, res_txt)    'Create string out of numeric result
     
    ''res_txt = "\r"
     
    ' Prepare message for output
    'msg = "halt"+
    'res_txt
     
    txt ="run\r"
     
    SPI_Ethernet_sendUDP(IpServeur, 10001, 3040, @txt,Strlen (txt))' send Hello message to the above IP address, from UDP port 10001 to UDP port 10001
     
     
    end.
    Peux tu me dire si mon programme est bon ou si il y a quelque chose à modifier.
    je voudrais envoyer un message à mon logiciel installé sur mon pc par exemple run avec un retour chariot exemple "run\r" mais en basic

    J'ai un autre petit problème comment puis je voir si mon module est bien en communication avec mon pc qui est sur seven.


    merci d'avance de votre aide.

    Jerdream

Discussions similaires

  1. [CR] liaison crystal report et vb6
    Par breizhange dans le forum SDK
    Réponses: 7
    Dernier message: 10/08/2015, 13h29
  2. PIC 12F675: envoie d'un octet sur une liaison série
    Par forum dans le forum Téléchargez
    Réponses: 0
    Dernier message: 21/12/2013, 19h14
  3. Liaison de police
    Par arno_ dans le forum Flash
    Réponses: 11
    Dernier message: 06/07/2005, 22h58
  4. partage d'une liaison ADSL
    Par hassen dans le forum Développement
    Réponses: 6
    Dernier message: 20/10/2003, 20h10
  5. [TP]Liaison série avec TP7 dans fenêtre DOS W2000
    Par Alain81 dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 14/06/2003, 00h43

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