lundi 8 avril 2019

La communication à l’aide de I2C et SPI.


 La communication à l’aide de I2C et SPI.


 Le protocole I2C

Le protocole I2C (Inter-Integrated Circuit) est un protocole destiné à permettre à plusieurs circuits intégrés numériques « esclaves » de communiquer avec une ou plusieurs puces « maîtresses », Il suffit de deux fils de signal pour échanger des informations.

SDA (Serial Data Line) : ligne de données bidirectionnelle,
SCL (Serial Clock Line) : ligne d'horloge de synchronisation bidirectionnelle.

 L'interface périphérique série (SPI)

 La communication à l’aide de Serial Peripheral Interface (SPI) est une communication Point à Point et à courte distance, c’est le cas de la communication entre
 Arduino UNO et le Shield Ethernet. 

Avec une connexion SPI, il y a toujours un périphérique maître
 (généralement un microcontrôleur) qui contrôle les 
périphériques. Typiquement, il y a trois lignes
 communes à tous les périphériques : 
MISO (Master In Slave Out) : La ligne Esclave pour l'envoi de
 données au maître,MOSI (Master Out Slave In) : La ligne
 Master pour l'envoi de données vers les périphériques,
SCK (Serial Clock) : Les impulsions d'horloge qui 
synchronisent la transmission de données générée par 
le maître et une ligne spécifique pour chaque appareil : 
SS (Slave Select) : broche sur chaque périphérique que le
 maître peut utiliser pour activer et désactiver des périphériques
spécifiques.
Lorsque la broche de sélection d'esclave d'un périphérique est en état bas, elle communique avec le maître. Quand il est en état haut, il ignore le maître. Cela vous permet d'avoir plusieurs périphériques SPI partageant les mêmes lignes MISO, MOSI et CLK.
Notez que MISO, MOSI et SCK sont disponibles dans un emplacement physique sur l'en-tête ICSP ; cela est utile, par exemple, pour concevoir un Shield qui fonctionne sur touts les Kits.

LES COMMANDES AT

 LES COMMANDES AT


Les commandes AT sont des instructions utilisées pour contrôler un modem. AT est l'abréviation de « ATtention ». Chaque ligne de commande commence par "AT". C'est pourquoi les commandes de modem sont appelées commandes AT. La plupart des commandes utilisées pour contrôler les modems, tels que ATD (Dial), ATA (Réponse), ATH (Hook control) et ATO (Retour à l'état des données en ligne), sont également prises en charge par notre modem GSM / GPRS. les modems GSM / GPRS et les téléphones mobiles prennent en charge un ensemble de commandes AT spécifique à la technologie GSM, comprenant des commandes SMS comme AT + CMGS (Envoyer un message SMS), AT + CMSS (Envoyer un SMS depuis le stockage), AT + CMGL (Liste des messages SMS) et AT + CMGR (Lire les messages SMS).

"AT" de départ est le préfixe qui informe le modem sur le début d'une ligne de commande. Cela ne fait pas partie du nom de la commande AT. Par exemple, D est le nom de la commande AT réelle dans ATD et + CMGS est le nom de la commande AT réelle dans AT + CMGS.

Dans la spécification SMS, toutes les commandes AT sont en majuscules. Par exemple sur notre modem SIM800C .
 Cependant, de nombreux modems GSM / GPRS et téléphones mobiles nous permettons de taper les commandes AT en majuscules ou en minuscules, Par exemple, sur le Nokia 6021.
Il existe deux types de commandes AT : les commandes de base et les commandes étendues.


  Commandes de base et commandes étendues

Les commandes de base sont des commandes AT qui ne commencent pas par "+". Par exemple, D (numérotation), A (réponse), H (contrôle de crochet) et O (retour à l'état des données en ligne) sont des commandes de base.
Les commandes étendues sont des commandes AT commençant par "+". Toutes les commandes AT GSM sont des commandes étendues. Par exemple, + CMGS (Envoyer un message SMS), + CMSS (Envoyer un SMS depuis le stockage), + CMGL (Lister les messages SMS) et + CMGR (Lire les messages SMS) sont des commandes étendues.

Le test du modem SIM800C à l’aide des commandes AT EST présenté dans l’annexe 1.

  Schéma fonctionnel des commandes AT

Trois entités sont définies :
ü  TE : Terminal Equipment (envoi et affiche les commandes).
ü  TA : Terminal Adaptator (interface entre l’utilisateur et le mobile).
ü  ME : Mobile Equipment  [4]

Le terme Mobile Equipment (ME) ou équipement mobile désigne un élément de base du système cellulaire GSM, LTE ou UMTS équipé d’un émetteur-récepteur pour la liaison radio avec la station de base du réseau mobile (BTS pour le GSM). 

Schéma fonctionnel des commandes AT

Dons notre projet en remplace les deux entités TE et TA par Arduino MEGA programmé de tel façon de gérer les message SMS pour la réception des commandes de contrôle et la transmission des messages de supervision.


  Syntaxe générale des commandes AT étendues

Nous ne couvrirons pas la syntaxe des commandes AT de base dans notre projet puisque toutes les commandes de messagerie SMS sont des commandes AT étendues.
Règle de syntaxe 1. Toutes les lignes de commande doivent commencer par "AT" et se terminer par un caractère de retour chariot. (Nous utiliserons <CR> pour représenter un caractère de retour chariot dans ce didacticiel SMS.) Dans un programme terminal tel que HyperTerminal, vous pouvez appuyer sur la touche Entrée du clavier pour générer un caractère de retour chariot.
Par exemple pour lister tous les messages SMS entrants non lus stockés dans la zone de stockage des messages, on tape "AT" puis la commande AT étendue "+ CMGL", et enfin un caractère de retour chariot, comme ceci :  AT+CMGL<CR>
Règle de syntaxe 2. Une ligne de commande peut contenir plus d'une commande AT. Seule la première commande AT doit être préfixée avec "AT". Les commandes AT dans la même chaîne de ligne de commande doivent être séparées par des points-virgules.
Pour lister tous les messages SMS entrants non lus stockés dans la zone de stockage des messages et obtenir le nom du fabricant du périphérique mobile, on tape "AT", puis la commande AT étendue "+ CMGL", suivie d'un point-virgule et de la commande AT étendue suivante "+ CGMI" :
   AT + CMGL ; + CGMI <CR> 
Règle de syntaxe 3. Une String est placée entre guillemets.
Pour lire tous les messages SMS depuis le stockage de messages en mode texte, vous devez assigner la chaîne "ALL "à la commande AT étendue + CMGL, comme ceci : AT + CMGL = "ALL" <CR>
Règle de syntaxe 4. Les réponses d'informations et les codes de résultat (y compris les codes de résultat final et les codes de résultat non sollicités) commencent et se terminent toujours par un caractère de retour chariot <CR> et un caractère saut de ligne<LF>.
Exemple : Après avoir envoyé la ligne de commande "AT + CGMI <CR>" au modem, le modem doit renvoyer une réponse similaire à celle-ci :
<CR> <LF> SIMCOM_Ltd <CR> <LF>
<CR> <LF> OK <CR> <LF>
La première ligne est la réponse d'information de la commande AT + CGMI et la deuxième ligne est le code résultat final. <CR> et <LF> représentent respectivement un caractère de retour chariot et un caractère de saut de ligne. Le code de résultat final "OK" marque la fin de la réponse. Il indique que aucune donnée ne sera envoyée du modem à l’ordinateur.
Lorsqu'un programme terminal tel que HyperTerminal voit un caractère de retour chariot, il déplace le curseur au début de la ligne en cours. Quand il voit un caractère de saut de ligne, il déplace le curseur à la même position sur la ligne suivante. Par conséquent, la ligne de commande "AT + CGMI <CR>" que vous avez entrée et la réponse correspondante seront affichées comme ceci dans l’HyperTerminal :
AT+CGMI           ß  Ligne de commande saisie
SIMCOM_Ltd    ß Information de réponse

OK                       ß Code résultat final



Node.js

Node.js


Node.js est un environnement d’exécution JavaScript libre et événementielle fonctionne sur différentes plateformes (Windows, Linux, Unix, Mac OS X, etc).
 Le gestionnaire de paquets pour JavaScript utilisé par node.js, npm, est le plus grand registre software open source au monde.
Node.js installé sur notre ordinateur, va servir d’interface réseau entre la page web de supervision et de contrôle et la cartes Arduino que nous souhaitons piloter donc node.js permet de développer une interface web dans un serveur qui commande directement Arduino.
node.js est utilisé dans les applications (temp réel) c’est-à-dire plusieurs connexions peuvent être gérées de manière concurrente, Le protocole WebSocket est ici en image.
Le protocole WebSocket vise à développer un canal de communication full-duplex sur un socket TCP pour les navigateurs et les serveur web.

Dans notre cas en utilise Node pour transformer les données générer par les capteurs vers l’utilisateur final de notre site web de supervision, et pour savoir l’état des machines.
Il prend les demandes des utilisateurs au même temp, pour cette raison il est très vite, ce serveur est asynchrone c.à.d. il n'attende rien, il n'attende pas l'API du data base pour répondre aux demandes, de plus, n'utilise pas les buffers qui consomment un espace important du mémoire de stockage.

Programmation synchrone
Synchrone : Lorsqu’une tâche est exécutée de manière synchrone, vous attendez la fin d’une tâche avant de passer à une autre.
Exemple :
Une tâche courante pour un serveur Web peut être d'ouvrir un fichier sur le serveur et de renvoyer le contenu au client.
Voici comment PHP ou ASP gère une requête de fichier :
ü  Envoie la tâche au système de fichiers de l'ordinateur.
ü  Attend que le système de fichiers s'ouvre et lit le fichier.
ü  Renvoie le contenu au client.
ü  Prêt à gérer la prochaine requête.

Programmation asynchrone
Node.js utilise la programmation asynchrone.
Asynchrone : Lorsqu’une tâche est exécutée de manière asynchrone, vous pouvez directement passer à une autre tâche avant qu’elle ne soit terminé.
Exemple :
Voici comment Node.js gère une requête de fichier :
ü  Envoie la tâche au système de fichiers de l'ordinateur.
ü  Prêt à gérer la prochaine requête.
ü  Lorsque le système de fichiers s'est ouvert et a lu le fichier, le serveur renvoie le contenu au client.
ü  Node.js élimine l'attente et continue simplement avec la requête suivante.
Node.js exécute une programmation asynchrone, non bloquante, à un seul thread (fil d’exécution), qui est très efficace en termes de mémoire.
Que peut faire Node.js ?
ü  Node.js peut générer du contenu de page dynamique
ü  Node.js peut créer, ouvrir, lire, écrire, supprimer et fermer des fichiers sur le serveur
ü  Node.js peut collecter des données de formulaire
ü  Node.js peut ajouter, supprimer, modifier des données dans notre base de données
Qu'est-ce qu'un fichier Node.js ?
ü  Les fichiers Node.js contiennent des tâches qui seront exécutées sur certains événements
ü  Un événement typique est quelqu'un qui tente d'accéder à un port sur le serveur
ü  Les fichiers Node.js doivent être lancés sur le serveur avant d'avoir un effet
ü  Les fichiers Node.js ont l'extension ".js"

Définition du concept de Socket :
Dans le contexte des logiciels, on peut le traduire par « connecteur réseau » ou « interface de connexion », Il s’agit d’une interface logicielle avec les services du système d’exploitation, grâce à laquelle un développeur exploitera facilement et de manière uniforme les services d’un protocole réseau.
La communication par socket est souvent comparée aux communications humaines. On distingue ainsi deux modes de communication :
Le mode connecté (comparable à une communication téléphonique), utilisant le protocole TCP. Dans ce mode de communication, une connexion durable est établie entre les deux processus, de telle façon que l’adresse de destination n’est pas nécessaire à chaque envoi de données.
Le mode non connecté (analogue à une communication par Gmail), utilisant le protocole UDP. Ce mode nécessite l’adresse de destination à chaque envoi, et aucun accusé de réception n’est donné. 

Adobe Dreamweaver


Adobe Dreamweaver


Adobe Dreamweaver CC est une application de conception et de développement Web qui combine une surface de conception visuelle appelée Live View et un éditeur de code avec des fonctionnalités standard telles que la coloration syntaxique, l'achèvement de code, Vérifier et coder l'introspection pour générer des conseils de code afin d’aider l'utilisateur à écrire du code. Combiné à une gamme d'outils de gestion de sites, Dreamweaver permet à ses utilisateurs de concevoir, de coder et de gérer des sites Web, ainsi que du contenu mobile. Dreamweaver est un outil Integrated Development Environment (IDE). Dreamweaver se positionne comme un outil de conception et de développement Web polyvalent qui permet la visualisation du contenu Web pendant le codage.
L’interface d’Adobe Dreamweaver




App Inventor


 App Inventor


App Inventor est une application Web open-source pour Android fournie à l'origine par Google, et maintenant maintenue par le Massachusetts Institute of Technology (MIT).
Il permet de programmer des applications logicielles pour le système d'exploitation Android (OS). Il utilise une interface graphique, très similaire à Scratch et à l'interface utilisateur StarLogo TNG, qui permet aux utilisateurs de glisser-déposer   des objets visuels pour créer une application pouvant s'exécuter sur les appareils Android. 
l'interface Designer de App inventor

l'interface Blocks de App inventor

 App Inventor(langage )

App Inventor est un environnement et un langage de programmation (gratuit et libre d’accès) pour réaliser des applications mobiles pour tablettes ou portables sous Android .

Il est très facile d'accès avec une méthode de programmation graphique par blocs qui évite les erreurs de syntaxe. Il exploite l'ensemble des ressources du téléphone (capteurs, moyens de communication, ...) et il est ouvert sur le monde avec l'accès au réseau et services Web. 


dimanche 7 avril 2019

Shield Ethernet V1


 Shield Ethernet V1


L'Arduino Ethernet Shield V1 connecte Arduino à l'Internet en quelques minutes. Il suffit de brancher ce module sur la carte Arduino, connectez-le au réseau avec un câble RJ45 et suivez quelques instructions simples pour commencer à contrôler le monde via Internet.


Aduino Ethernet Shield R3 Front
Aduino Ethernet Shield R3 Back










ü  Nécessite une carte Arduino (On utilise Arduino UNO)
ü  Tension de fonctionnement 5V (fournie par la carte Arduino)
ü  Contrôleur Ethernet : W5100 avec tampon interne 16K
ü  Vitesse de connexion : 10 / 100Mb
ü  Connexion avec Arduino sur le port SPI

L'Ethernet Shield V1 dispose d'une connexion RJ-45 standard, avec un transformateur de ligne intégré et un Power over Ethernet activé.
Il y a une fente pour carte micro-SD à bord, qui peut être utilisée pour stocker des fichiers à diffuser sur le réseau. Il est compatible avec toutes les cartes Arduino. Le lecteur de carte micro SD intégré est accessible via la bibliothèque SD.
Le Shield comprend également un contrôleur de réinitialisation, pour s'assurer que le module Ethernet W5100 est correctement réinitialisé à la mise sous tension. Les révisions précédentes du Shield n'étaient pas compatibles avec le MEGA et doivent être réinitialisées manuellement après la mise sous tension.

Le Shield contient un certain nombre de LED d’information :
PWR : indique que la carte et le blindage sont alimentés
LINK : indique la présence d'un lien réseau et clignote lorsque le blindage transmet ou reçoit des données
FULLD : indique que la connexion réseau est en duplex intégral
100M : indique la présence d'une connexion réseau de 100 Mb / s (par opposition à 10 Mb / s)
RX : clignote lorsque le Shield reçoit des données
TX : clignote lorsque le bouclier envoie des données
COLL : clignote lorsque des collisions de réseau sont détectées
Lorsque l'Arduino est connecté au Shield Ethernet, on ne peut pas utiliser les broches numériques de 10 à 13, car elles sont utilisées pour établir une communication entre l'Arduino et le Shield Ethernet.

    Wiznet W5100

Le Wiznet W5100 fournit une pile réseau (IP) capable d’utilisé à la fois les protocoles TCP et d'UDP. Il prend en charge jusqu'à quatre connexions de socket simultanées.  Utilisez la bibliothèque Ethernet pour écrire des sketches (nom donné aux programmes écrits pour Arduino) qui se connectent à Internet en utilisant le Shield. Le Shield Ethernet se connecte à une carte Arduino à l'aide de Wire-wrap headers qui s'étendent à travers le Shield.
Le W5100 a été conçu pour faciliter la mise en œuvre de la connectivité Internet sans système d'exploitation. Le W5100 est IEEE 802.3 10BASE-T et Compatible 802.3u 100BASE-TX.
Le W5100 comprend une pile TCP / IP entièrement câblée et une interface Ethernet intégrée MAC et PHY. La pile TCP / IP câblée prend en charge TCP, UDP, IPv4, ICMP, ARP, IGMP et PPPoE. Le tampon interne de 16 Ko est inclus pour la transmission de données. Pas besoin de considération pour la gestion du contrôleur Ethernet, mais une programmation simple de socket est requise.

Pour une intégration facile, trois interfaces différentes du bus SPI, sont pris en charge sur le côté MCU.
Applications cibles :
Le W5100 est bien adapté pour nombreuses applications embarquées, notamment :
- Périphériques de réseau domestique : décodeurs, magnétoscopes numériques, adaptateurs de médias numériques
- Serial-to-Ethernet : contrôles d'accès, écrans LED, relais AP sans fil, etc.
- Parallèle à Ethernet : POS / Mini imprimantes, copieurs
- USB-to-Ethernet : périphériques de stockage, imprimantes réseau
- GPIO-to-Ethernet : Capteurs de réseau domestique
- Systèmes de sécurité : DVR, caméras réseau, kiosques
- Automatismes d'usine et de bâtiment
- Équipements de surveillance médicale
- Serveurs embarqués
Communications de données :
Utilisant Wiznet W5100, La communication de données est disponible via TCP, UDP, IP et MAC. Dans ce projet de fin d'étude, on s'intéresse par le protocole UDP car ce protocole est plus approprié dans les applications temps réel ce qui est parfait pour notre interface site web de supervision.
UDP fournit une structure de transmission de datagrammes non fiable et sans connexion. Il traite données sans établissement de connexion. Par conséquent, le message UDP peut être perdu, se chevaucher ou renversé. Comme les paquets peuvent arriver plus rapidement, le destinataire ne peut pas tous les traiter. Dans ce cas, l'utilisateur l'application doit garantir la fiabilité de la transmission des données.




L’afficheur I2C LCD alphanumérique 16x2


 L’afficheur I2C LCD alphanumérique 16x2


Lorsque l’affichage est nécessaire dans une application, il y a plusieurs options de l’afficheur LCD couleur, LCD monochrome, aux LEDs individuelles. Toutes ces options ont des avantages uniques par rapport aux autres. Les LEDs sont les plus simples à mettre en œuvre, mais peuvent transmettre de l'information limitée. Les afficheur LCD couleur peuvent transmettre une grande quantité d'informations, mais sont les plus difficiles à mettre en œuvre en plus d'être les plus chers. Un bon compromis entre un écran LCD couleur et des LEDs est un écran LCD monochrome. La puce du contrôleur le plus couramment utilisé sur les modules LCD monochrome est l’Hitachi HD44780.

Le HD44780 est une puce qui reçoit des informations à partir d'un microcontrôleur, puis utilise ces informations pour afficher des caractères sur l'écran LCD en activant/désactivant les pixels individuellement.
Les modules LCD monochromes basé sur le HD44780 (ou compatibles) sont disposés généralement d’une, deux ou 4 lignes, et 16, 20, ou 40 caractères par ligne. Pour plus de simplicité, nous avons choisi un écran LM016L 16x2 : 16 caractères, 2 lignes. 





L’u    Utilisation avec la carte Arduino Méga et Uno

 
Branche du module LCD aux broches de l'Arduinodans notre système
          Table de correspondance :
Afficheur LCD I2C
Arduino Méga
Arduino UNO
GND
GND
GND
VCC
+5V
+5V
SDA
SDA (I2C) / pin 20/A4
SDA (I2C) /A4
SCL
SCL (I2C) / pin 21/A5
SCL (I2C) /A5
Table de Correspondance (I2C LCD et ARDUINO Méga2560)