Regarder le tutoriel vidéo partie 1:

Ethernet est la norme leader de référence pour les réseaux câblés, car il permet de connecter un très grand nombre d’ordinateurs, de microcontrôleurs et d’autres équipements informatiques..

Dans ce projet, nous allons apprendre à contrôler n’importe quel appareil, tel qu’une DEL, un relais, une ampoule électrique ou un moteur connecté à un microcontrôleur PIC à partir d’un emplacement distant, à l’aide d’un logiciel d’interface utilisateur graphique conçu avec C #.

Un certain nombre d’ordinateurs clients situés à différents emplacements peuvent être utilisés pour contrôler des périphériques distants de n’importe où. La communication entre l’ordinateur client et le microcontrôleur s’effectue via le protocole UDP. À l’aide d’un routeur connecté à Internet, ces appareils peuvent être contrôlés ou surveillés partout dans le monde en temps réel.

Ce projet peut servir de base au projet de dernière année destiné aux étudiants en génie électronique et informatique.

Controlling devices from the internet

Figure 1: Contrôle et surveillance des périphériques à partir d’un logiciel d’interface graphique PC

Dans ce projet, un logiciel d’interface graphique PC est conçu avec C # pour contrôler un moteur et une ampoule connectée à un microcontrôleur PIC à l’aide de relais. Nous allons également lire périodiquement la température, l’afficher graphiquement à l’écran et tracer un graphique en temps réel des variations de température.

Utiliser un logiciel d’interface graphique c’est mieux que d’utiliser un simple navigateur Web, comme nous l’avons appris dans le projet: Contrôle et surveillance basés sur le Web avec PIC Microcontroller. Nous aurons plus de flexibilité pour concevoir le logiciel d’interface graphique. Nous pourrions facilement créer une sorte de logiciel SCADA en interagissant directement avec des dispositifs tels que des capteurs, des vannes, des pompes, des moteurs, etc. via le logiciel d’interface homme-machine (IHM).

C’est facile d’enregistrer également des événements dans un fichier journal, d’envoyer des messages de notification par courrier électronique ou SMS ou de déclencher des alarmes sonores..

TCP vs. UDP

Un certain nombre d’ordinateurs clients situés à différents emplacements peuvent être utilisés pour contrôler des périphériques distants de n’importe où. Dans le projet Contrôle et surveillance basés sur le Web avec PIC Microcontroller, nous avons montré comment utiliser le protocole TCP avec mikroC pour contrôler les périphériques connectés à un microcontrôleur PIC. Dans cet exemple, nous allons apprendre à utiliser le protocole UDP. Voici quelques différences entre ces deux protocoles:

  • Le protocole TCP permet une livraison fiable et ordonnée des paquets. Il utilise la détection d’erreur, les retransmissions et les accusés de réception. Les applications TCP typiques incluent la messagerie électronique et la navigation Web.
  • Le protocole UDP ne s’inquiète pas si chaque paquet est reçu. Cela permet des transmissions plus rapides. Les applications UDP typiques incluent la VoIP et streaming de la musique.
  • TCP est strictement utilisé pour les transmissions point à point ou unicast
  • UDP peut être utilisé pour les transmissions unicast (un à un), multicast (un à plusieurs) et broadcast (un à tous).

Logiciel d’Interface Utilisateur Graphique (GUI)

La figure 2 ci-dessous montre le logiciel d’interface graphique de l’ordinateur.

Computer Graphical User Interface (GUI)  softwareFigure 2: Logiciel d’interface graphique de l’ordinateur

Nous utilisons deux boutons pour contrôler les périphériques connectés au microcontrôleur PIC. En cliquant sur le bouton de l’ampoule, il changera la couleur en une ampoule allumée et allumera l’ampoule connectée au PIC. Cliquez à nouveau avec pour éteindre l’ampoule.

Le bouton Fan (Ventilateur) contrôle le ventilateur connecté au PIC. Il suffit de cliquer dessus pour l’activer et de cliquer à nouveau pour l’éteindre.

Une jauge de température affiche graphiquement la température toutes les 2 secondes et un graphique représente les variations de température continuellement.

Pour améliorer l’affichage, nous avons également créé une horloge analogique. Un menu Fichier contient des boutons pour se connecter / déconnecter, les paramètres et quitter.

Figure 3: Paramètres de l’interface graphique

Dans les paramètres, le thème de l’application peut être défini comme suit: bleu, bleu clair, foncé, gris, noir, blanc, foncé, café, bleu ciel, caramel, argent, vert et rose.

Vous pouvez également définir l’adresse IP du microcontrôleur PIC et le numéro de port avec lequel nous allons communiquer.

Les numéros de port sont utilisés pour identifier les processus en cours d’exécution dans les applications sur un hôte. Par exemple, sur un PC, plusieurs applications nécessitant des communications TCP / IP peuvent être exécutées simultanément, comme un navigateur Web et un client de messagerie. Les deux envoient et reçoivent des paquets avec la même adresse IP. La couche de transport différenciera un paquet de navigateur Web d’un paquet de courrier électronique à l’aide de numéros de port.Certains numéros de port bien connus ont été réservés pour des applications spécifiques, généralement des applications serveur. En voici quelques uns:

  • Port 21: FTP
  • Port 23: Telnet
  • Port 25: SMTP (email sortant)
  • Port 53: DNS
  • Port 67: DHCP
  • Port 80: HTTP (Web)
  • Port 110: POP3 (email, entrant)
  • Port 143: IMAP (email, entrant)

Les numéros de port côté client sont générés et attribués par la couche transport. Ils peuvent être n’importe quel nombre entre 1024 et 65535. Ces numéros de ports sont généralement attribués pour une utilisation à court terme. Notre application utilise le port 10001.

Création d’un serveur et d’un client UDP simples pour transférer des données à l’aide de C#

En utilisant des applications réseau simples, nous pouvons envoyer des fichiers ou des messages via Internet. Un socket est un point de connexion de bas niveau à la pile IP. Ce socket peut être ouvert ou fermé ou l’un des états intermédiaires définis. Un socket peut transmettre et recevoir des données via cette connexion. Les données sont généralement envoyées par blocs de quelques kilo-octets à la fois et sont appelées paquets.

Tous les paquets qui voyagent sur le Web doivent utiliser le protocole de communication Internet. Cela signifie que l’adresse IP source et l’adresse de destination doivent être fournies dans le paquet. Certains paquets de données contiennent également un numéro de port tel que TCP / IP et UDP.

Ce code simple ci-dessous montre les étapes à suivre pour envoyer des données UDP d’un client à un serveur. Dans cet exemple, nous envoyons un «2» au microcontrôleur PIC.

La première tâche consiste à créer un objet client UDP (public UdpClient ClientSocket = new UdpClient ();). C’est un socket qui peut envoyer des paquets UDP. ClientSocket.Connect () prend deux arguments, l’adresse IP du serveur et le numéro de port. Ces valeurs sont enregistrées dans les paramètres de l’application. Un numéro de port est sélectionné arbitrairement. Ici, le numéro de port 10001 sera lu à partir des paramètres de l’application. N’oubliez pas que ce numéro ne figure pas dans les premiers 1024 numéros de port réservés à une utilisation spécifique par l’IANA.

Pour détecter les données entrantes, l’application devient un serveur. Le code ci-dessous montre les étapes à suivre pour recevoir des données de température du PIC.

Une fonctionnalité clé des serveurs est le multi-threading, ils peuvent gérer des centaines de requêtes simultanées. Dans ce cas, nous devons avoir au moins deux threads: l’un traite les données UDP entrantes et l’autre, le thread principal pour exécuter le reste du programme, comme des boutons, des événements ou l’envoi de données à PIC. Cela fera en sorte que l’interface utilisateur ne semble pas bloqué.

Vous trouverez ci-dessous le code complet de l’application. Vous pouvez également télécharger le projet complet Visual Studio et la fin de cet article.

Schéma de circuit

La figure 4 ci-dessous montre le schéma de circuit. L’interface entre le microcontrôleur PIC18F45K22 et la puce du contrôleur Ethernet ENC28J60 est basée sur le protocole de bus SPI. Les broches SI, SO et SCK de la puce Ethernet sont connectées aux broches SPI (SDO, SDI et SCLK) du microcontrôleur. La puce du contrôleur Ethernet fonctionne à 3,3 V, sa broche SO de sortie ne peut pas piloter la broche d’entrée du microcontrôleur sans convertisseur de tension si le microcontrôleur est exploité à 5 V.ENC28J60 Ethernet Controller Connections

Figure 4: Connexions du contrôleur Ethernet ENC28J60

Pour faciliter la conception d’applications Ethernet, il existe des cartes prêtes à l’emploi comprenant le contrôleur EC28J60, une puce de conversion de tension et un connecteur RJ45. La figure 5 ci-dessous montre la carte Ethernet série mikroElektronika. Il s’agit d’une petite carte qui se connecte directement à PORTC de la carte de développement EasyPIC v7 via un connecteur IDC à 10 voies, ce qui simplifie le développement de projets Ethernet intégrés. Cette carte est équipée d’une puce de contrôleur Ethernet EC28J60, d’une puce de conversion de tension 74HCT245, de trois DEL, d’un régulateur de tension de 5 à 3,3 et d’un connecteur RJ45 avec transformateur intégré.

 Connecting the Serial Ethernet Board to EasyPIC7 V7 development board

Figure 5: Connexion de la carte Ethernet série à la carte de développement EasyPIC7 V7

Les relais 1 et 2 sont connectés aux broches de sortie du microcontrôleur RD0 et RD1. Un signal de commande pour activer ou désactiver ces relais contrôlera également les dispositifs qui leur sont connectés, comme une ampoule, un ventilateur ou un moteur de portail.

Pour en savoir plus sur l’interface d’un relais avec un microcontrôleur PIC, veuillez lire:

Interfacing a Relay with PIC-Microcontroller 

Si le PC et le contrôleur Ethernet sont sur le même réseau et proches l’un de l’autre, vous pouvez les connecter ensemble à l’aide d’un câble Ethernet croisé. Dans le cas contraire, un concentrateur ou un commutateur peut être requis. Dans ce cas, un câble droit peut être utilisé pour connecter le PC au concentrateur / commutateur et un autre câble droit pour connecter le microcontrôleur au concentrateur / commutateur. Si le PC et le microcontrôleur sont situés sur des réseaux différents et ne sont pas proches, des routeurs peuvent être nécessaires pour établir la connectivité entre eux.

Project Circuit diagramFigure 6: Schéma de circuit du projet

Vous pouvez facilement créer un circuit imprimé pour ce projet, comme nous l’avons appris dans nos tutoriels sur les circuits imprimés, tout ce dont vous avez besoin est d’avoir une bonne société de prototypage de circuits imprimés qui offrira vos circuits imprimés de bonne qualité à un bon prix. Nous recommandons PCBWay.com, un fabricant basé en Chine à Shenzhen et spécialisé dans le prototypage de cartes de circuits imprimés, la production en petites quantités et le service d’assemblage de cartes de circuits imprimés.

Ils organisent maintenant un concours de PCB jusqu’au 12 décembre afin de fournir une plate-forme aux fabricants, aux ingénieurs en électronique, aux amateurs et aux artistes, afin de leur permettre de construire un avenir meilleur avec du matériel ouvert. Vous pourriez également gagner des prix en espèces de 1000 $. Alors dépêchez-vous maintenant, postez votre projet ou votez pour votre projet préféré avant la date limite.

Pour en savoir plus, veuillez lire cet article:

Participez au concours de conception de circuits imprimés et pour une chance de gagner 1000 $ en espèces

ou cliquez sur l’image ci-dessous pour visiter la page du concours de conception de PCB afin d’obtenir toutes les informations.

Pour apprendre à simuler le ENC28J60 avec Proteus, regardez la vidéo ci-dessous pour connaître toutes les étapes:

Ce projet est assez facile à comprendre, ce sont essentiellement les quelques étapes pour contrôler un périphérique à partir d’un PC distant:

Étape 1:

Définissez l’adresse MAC et l’adresse IP. Pour accéder à votre PIC en dehors de votre réseau local ou d’Internet, vous pouvez également définir le DNS, l’adresse Gateway et le Subnet Mask. Les paramètres de notre réseau local sont les suivants:

Étape 2:

  • Dans le programme principal, définissez les broches PORTD en tant que broches d’entrée / sortie numériques et la broche RA0 en tant que broche d’entrée analogique pour le capteur de température LM35.
  • Initialisez Timer0 pour générer une interruption de minuterie toutes les 2 secondes.
  • Initialiser le module SPI du microcontrôleur et initialiser la puce du module Ethernet série ENC28J60

Étape 3:

Écrivez le code dans la fonction Spi_Ethernet_userUDP qui interprétera les commandes du client UDP puis activera / désactivera les relais sur PORTD en vérifiant les données reçues sur le port 10001.

Étape 4:

Lire les données reçues dans une boucle sans fin en utilisant la fonction « SPI_Ethernet_doPacket () ». Lorsqu’une interruption de minuterie se produit toutes les 2 secondes, lisez la valeur de température et envoyez-la à l’ordinateur distant à l’aide de la fonction « SPI_Ethernet_sendUDP () ».

Pour en savoir plus sur l’utilisation de la bibliothèque du contrôleur Ethernet ENC28J60, veuillez lire:

Interfacing ENC28J60 Ethernet Controller with PIC MicroController

Étape 5:

Générer une interruption de 2 secondes à l’aide du calculateur de minuterie.

Timer CalculatorFigure 7: calculateur de minuterie

Code source complet du projet

Vous pouvez télécharger les fichiers de projet complets ci-dessous. Tous les fichiers sont compressés, vous devrez les décompresser (Téléchargez une version gratuite de l’utilitaire Winzip pour décompresser les fichiers).

Projet schématique Proteus: UDP_Ethernet_Proteus_Project

Code source MikroC: UDP_Ethernet-MikroC-Project

Projet logiciel d’interface graphique PCUDP_Control_Monitoring_PC_GUI_Software_Project