Créer votre premier périphérique Ethernet de l’ITO. Partie 5: ITO, domotique (5 / 8 étapes)

Etape 5: Aperçu de logiciels - partie B

Préambule

Pour compiler ce code source, vous aurez besoin des bibliothèques supplémentaires suivantes (il y a un peu) ;

PubSubClient.h

DHT.h

Bounce2.h

LiquidCrystal_I2C_PCF8574.h

  • Par : Steve Quinn
  • But : Bibliothèque pour contrôler, lecture et écriture à l’écran LCD affiche
  • De:

Adafruit_GFX.h

Adafruit_ILI9341.h

DS1307.h

Time.h

Adafruit_BMP085.h

Tous les détails aussi donnés dans le code source ci-dessous.

Vous aurez aussi besoin de savoir ;

  1. L’adresse IP de votre courtier MQTT (au format AAA de l’IPv4. BBB. CCC. DDD): adresse IP default (Server)
  2. Une adresse IP libre d’utiliser pour votre IoT périphérique si vous préférez ne pas utiliser le 'USE_DHCP_FOR_IP_ADDR' #define dans le code.

Vue d’ensemble du code

Au démarrage, le logiciel se connecte au réseau Ethernet en utilisant les coordonnées de connexion préalable fournie ci-dessus.

Une fois connecté à un réseau local l’appareil ITO publiera ses détails aux sujets suivants MQTT ;

  1. /EthernetDevice/SwVerConfirm : Ce dernier contient un concaténée chaîne, virgules, formée par le nom du périphérique générique, unique adresse MAC du périphérique et le nom du fichier Arduino utilisé pour programmer l’appareil. dans ce cas, « WIZNet5100,de:ad:be:ef:fe:ed,MQTTEthernetAll6_5.ino ».
  2. /EthernetDevice/Temp1Status : Sur la connexion initiale au réseau cette rubrique publie un message « Connecté » au courtier. Par la suite, il est utilisé pour publier la température locale en précision de 2 décimales de degré Celsius. Mises à jour sont émises uniquement s’il y a un changement de température pour empêcher cette IoT de « boucher » le réseau.
  3. /EthernetDevice/Humd1Status : Semblable à Temp1Status, mais est une représentation des teneurs en humidité locale mise à l’échelle en pourcentage.
  4. /EthernetDevice/HeatInd1Status : Semblable à la fois Temp1Status et Humd1Status, mais en cet instant le logiciel calcule l’indice de chaleur de nouveau d’après les relevés de température et d’humidité.
  5. /EthernetDevice/Barometric1Status : Similaire à Temp1Status, Humd1Status et HeatInd1Status, mais est une représentation de la pression barométrique locale niveau mesuré en hPa ou mBar.

Puis, il s’abonne aux sujets suivants MQTT ;

  1. /EthernetDevice/SwVerCommand : Lorsque la notification est reçue à ce sujet l’appareil répondra avec une publication de /EthernetDevice/SwVerConfirm . Il s’agit d’une réponse de diffusion . C’est à dire. tous les appareils pourraient répondre.
  2. /EthernetDevice/de : ad : être : ef : fe : ed / SwVerCommand : lorsque la notification est reçue de ce sujet, l’appareil répond par une publication /EthernetDevice/SwVerConfirm . Il s’agit d’une réponse ciblée . C’est à dire. seulement cet appareil répondra.
  3. /EthernetDevice/Led1Command : Lorsque la notification est reçue de ce sujet, l’appareil a conduit sortie est définie en conséquence. Charge utile « 1 » = Led allumée, charge utile « 0 » = Led off. Une fois qu’une commande a été mises en œuvre le dispositif répondra en publiant l’état du voyant via la rubrique de /EthernetDevice/Led1Confirm 'On' ou 'Off'
  4. /EthernetDevice/Button1Status : lors de la réception de la notification de la publication sur ce sujet, l’appareil va répondre en publiant l’état de bouton actuel par un sujet de /EthernetDeviceButton1Command 'Pressed' ou 'Produit'. De cette façon, l’état du bouton peut être vérifiée à tout moment. Notez également si l’état du bouton change indépendamment, via un bouton, puis l’appareil va automatiquement publier un sujet /EthernetDevice/Button1Command .
  5. /EthernetDevice/SetTime : Lors de la réception de la notification d’une publication sur ce sujet l’appareil met à jour l’horloge système (DS1307Z +) avec cette valeur de temps. Charge utile doit être de la forme "HH: mm' (horloge de 24 heure).
  6. /EthernetDevice/SetDate : Lors de la réception de la notification d’une publication sur ce sujet l’appareil met à jour l’horloge système (DS1307Z +) avec cette valeur de date. Charge utile doit être au format ' DD/MM/YY ', r-u de forme, mais peut être facilement changé.
  7. /EthernetDevice/SetLoggingCommand : Lors de la réception de la notification d’une publication sur ce sujet l’appareil met à jour l’ordinateur d’état de journalisation. Une charge utile de 0 = étroite actuelle logfile, 1 = démarrage nouveau fichier journal. Un nouveau nom de fichier journal est formé par la concaténation de JJ/MM avec hh: mm à forme 'DDMMHHMM.csv'. De cette façon, un nom de fichier unique est formé à chaque ouverture. La bibliothèque de cartes Arduino SD a la limitation de convention de nom de fichier DOS 8.3 vieux, cela signifie qu’une période d’au moins une minute avant l’ouverture de nouveaux fichier doit s’écouler. Dans le cas contraire, il est possible d’écrasement des fichiers précédemment ouverts (dans la même minute). Pas un problème majeur, mais un intéressant de souligner.
  8. /EthernetDevice/SetLoggingPeriodCommand : Lors de la réception de la notification d’une publication sur ce sujet l’appareil met à jour le système variable iLoggingPeriodInMinutes, qui est utilisé pour régir la période à laquelle actuel Local Temp/humidité/BarometricPressure, Remote temperature/humidite est consigné sur la carte SD. Charge utile doit être de la forme "HH: mm' (horloge de 24 heure).
  9. /EthernetDevice/GetLoggingStatus : Lors de la réception de la notification d’une publication sur ce sujet, l’appareil répondra en publiant l’état actuel de l’exploitation forestière contrôle variable currentLoggingStatus via /EthernetDevice/GetLoggingStatusConfirm sujet. Une valeur de « 0 » = connexion Inactive (eLoggingInactive) et « 1 » = journalisation activée (eLoggingActive). Comme ce type énuméré a spécifiquement des valeurs pondérées de 0 et de 1 pour eLoggingInactive et eLoggingActive respectivement, en ajoutant simplement le numérique compensé d’Ascii '0', la valeur retournée sera un « 0 » ou 1'.
  10. /EthernetDevice/GetLoggingPeriodStatus : Lors de la réception de la notification d’une publication sur ce sujet, l’appareil répondra en publiant la période actuelle de journalisation au format 'HH: mm' (horloge de 24 heure) via un sujet /EthernetDevice/GetLogginPeriodConfirm .
  11. /WiFiDevice/Temp1Status : similaire à /EthernetDevice/Temp1Status mais il contient le périphérique distant de l’IoT WiFi température
  12. /WiFiDevice/Humd1Status : comme indiqué ci-dessus en /EthernetDevice/Humd1Status mais pour les niveaux d’humidité au périphérique distant de IoT WiFi.

Une fois terminé le logiciel maintenant gouttes dans une boucle de contrôle les connexions courtier ainsi que tout changement dans le statut de journalisation, journalisation période variations, logfile statut, bouton État met à jour (via les publications rubrique MQTT ou via une touche locale à fermer ou ouvrir le fichier de journalisation), température locale ou de taux d’humidité ou de nouvelles publications de température et d’humidité. Un résumé des variations barométriques, pression, température et humidité, les et distants, ainsi que des date, heure et nom de fichier .csv actuel sont affichés sur le système LCD en temps réel et répété avec des tendances tracées sur le système TFT.

Données d’enregistrement de la manipulation de fichier

Enregistrement de toutes les locales de température, humidité, pression barométrique et température à distance, humidité se faite sous forme de .csv (variable séparés par des virgules) c’est pour permettre une importation directe dans la Microsoft Excel (TM) telle qu’il devient relativement simple créer des graphiques agréable pour visualiser les données enregistrées.

Enregistrement est contrôlé grâce à l’utilisation d’une « Machine à États logiciel » qui enregistre les différents États peut occuper cette journalisation (ceux-ci reflètent le type énuméré d’eLoggingStatusType d’eLoggingInactive, eLoggingActive, eLoggingInitialise et eLoggingFault). Un schéma de cette machine de l’État a été inclus ci-dessus. Les cercles bleus sont les différents États et les lignes ou les « transitions » entre eux afficher n’importe quelle entrée légitime ou sortie entrant ou sortant de ces États. Le texte au-dessus de chaque transition montre la condition pour le déplacement entre les États et le texte ci-dessous le spectacle de transition toute action qui peut-être être nécessaires pour vous déplacer entre les États.

Changements à l’exploitation forestière sont réalisés en définissant la variable newLoggingStatus sur l’état de choix et puis en appelant la fonction updateLogging() . Qui est appelée automatiquement à chaque passage de la principale loop().

La logique de machine d’État à l’intérieur de la fonction updateLogging() s’occupera des transitions d’État nécessaires et des actions telles que la mise à jour des écrans LCD TFT et d’un changement de nom de fichier ou le nom du fichier journal de compensation si l’enregistrement est terminé.

Gère le défilement d’écran

Défilement d’écran est un sujet intéressant alors j’ai pensé que je voudrais ajouter quelques commentaires sur comment j’ai réussi.

Le deuxième diagramme ci-dessus j’ai dépeint une série typique de parcelles d’écran de photos 1... 5. ici vous pouvez voir le progrès de données tendance ligne (jaune) de gauche à droite sur l’écran jusqu'à ce que l’écran parcelle 7 est atteint et nous avons manquer de mémoire pour enregistrer que les données 7e plot point. Simple, nous pourrions faire un tableau un peu plus longtemps, que vous dites. Puis juste tracer le point. Eh bien nous juste ne pouvons tracer le nouveau point tel qu’il sera hors de l’écran vers la droite comme dans l’écran 6. Une solution serait d’utiliser des pointeurs de tête et la queue (marqué ici que H et T), puis juste effacer l’écran et re-tracer tous les points entre la queue et la tête. Cela fonctionne pour le défilement de droite à gauche comme dans l’intrigue de l’écran 7. Cependant, il y a une autre question fondamentale avec cette approche, à moins que nous possédons une machine de Turing (https://en.wikipedia.org/wiki/Turing_machine) nous ne pouvons pas continuer à ajouter à notre tableau indéfiniment. Nous avons besoin d’un algorithme plus efficace.

La solution consiste à déplacer le pointeur de la tête (ou queue) dos rond au début de notre tableau pour stocker ensuite tracer une fois il « tombe la fin » du tableau. De cette manière permet une mémoire tampon de taille fixe. L’écran est alors mise à jour d’exactement de la même manière comme décrit ci-dessus. Le tracé est fait de H-1 et T-1, mais il s’agit d’un détail mineur. Voir écran parcelles 8 et 9.

Nous avons en effet créé un tampon « circulaire » de la « linéaire ». Voir photo 3 ci-dessus.

C’est exactement l’algorithme que j’ai utilisé dans la fonction updateTrendScreen() pour obtenir l’écran pour faire défiler de droite à gauche.

Bien sûr, j’ai ajouté un peu de bricolage pour optimiser la mise à jour et faire circuler un peu mieux, mais son essentiellement la même.

J’ai laissé de côté une petite optimisation cosmétique, pouvez-vous repérer il ?

Articles Liés

« Proxénétisme » votre premier périphérique WiFi d’Ito. Partie 4: ITO, domotique

« Proxénétisme » votre premier périphérique WiFi d’Ito. Partie 4: ITO, domotique

OK, pas tellement proxénétisme mais qui s'étend de votre premier appareil ITOIntroductionCe Instructable documente comment simple c'est d'étendre et de développer un dispositif d'Ito (photographié ci-dessus) et s'articule autour du module ESP8266-01
Choisir votre premier reflex numérique

Choisir votre premier reflex numérique

Au moment de choisir votre premier reflex numérique (Digital Single Lens Reflex) il y a beaucoup de choses à considérer.Apposées à l'achat d'un compact, lorsque vous achetez un reflex numérique vous achetez dans un système.DSLR lentilles durent souve
Thermomètre intérieur/extérieur USB (ou "Mon premier périphérique USB")

Thermomètre intérieur/extérieur USB (ou "Mon premier périphérique USB")

il s'agit d'une conception simple qui illustre l'USB périphérique sur le PIC 18Fs. Il y a un tas d'exemples pour les 18F4550 40 broches chips en ligne, ce dessin montre la plus petite version de 18F2550 28 broches.Le PCB utilise des pièces de montage
Enfant en bas âge preuve votre électronique périphérique à l’aide de bouchons d’oreille

Enfant en bas âge preuve votre électronique périphérique à l’aide de bouchons d’oreille

le titre l'explique tous les gens. Il ne prend que quelques minutes et est très bon marché.Pièces et outils> une peau qui correspond à votre appareil électronique. (Je n'avais pas un, bien que je vais poster des photos de l'un sur mon kindle.)> un d
Comment faire le périphérique USB (PIC18F)

Comment faire le périphérique USB (PIC18F)

je vais montrer comment un simple périphérique HID générique USB, planche à pain création du firmware PIC18F et enfin de l'interface Windows pour le périphérique qui vous permettra de contrôler un LED depuis le PC et lire l'état d'un bouton de l'appa
Guide pour votre premier CoreBluetooth iPhone App

Guide pour votre premier CoreBluetooth iPhone App

Nous sommes IoTalabs et nous sommes un groupe de passionnés de l'Internet des choses qui aiment le piratage ensemble différents périphériques. Nous avons travaillé sur de nombreux projets.Découvrez nos http://doteverything.co/ projet actuelNous vouli
Branchez un périphérique série à un LAN Ethernet

Branchez un périphérique série à un LAN Ethernet

Branchez un périphérique série à un Ethernet LANCe document devrait vous permettent de connecter un périphérique série à un réseau Ethernet à l'aide d'un « Serial Device Server ».  Cet exemple utilise une station météo personnelle WS-2310 comme l'équ
Programmer votre Arduino avec un périphérique Android !

Programmer votre Arduino avec un périphérique Android !

Salutdans ce Instructable que je veux vous montrer, comment vous pouvez programmer votre Arduino avec votre appareil Android. C'est très simple et pas cher. Il nous permet également de programmer notre Arduino, où que nous voulons, c'est utile pour l
Le mur (montage mural de votre jeu consoles / moniteurs / périphériques)

Le mur (montage mural de votre jeu consoles / moniteurs / périphériques)

C'est minimaliste, occupe moins d'espace et esthétiques, du moins à mes yeux.-Aucun câble a couru derrière le mur.-Tous les composants retardé par des renforts de coin à angle droit ou supports personnalisés aspergés de Plasti-Dip si les composants s
Comment utiliser le lecteur de carte mémoire PS3 interne comme un périphérique USB sur votre PC

Comment utiliser le lecteur de carte mémoire PS3 interne comme un périphérique USB sur votre PC

tout d'abord c'est mon premier Instructable (yippie!), je ne sais pas il y aura beaucoup à venir.Donc, j'ai eu une PS3 cassé et voulait faire certaines utilisent les éléments de travail. Première chose que j'ai fait était tirez sur la fiche de donnée
RECOMPILE (renommer) et Flash HIDUINO avec ISP pour transformer votre Arduino en un périphérique HID (usb-midi)

RECOMPILE (renommer) et Flash HIDUINO avec ISP pour transformer votre Arduino en un périphérique HID (usb-midi)

HIDUINO est un firmware (code) fait pour courir sur les microcontrôleurs Atmega8u2 (Arduino UNO Rev 2 - et antérieur - ou Mega2560) et Atmega16u2 (Arduino UNO Rev3).Ce sont ceux en charge de faire de l'ordinateur et les conseils de parler les uns aux
Utilisez votre ordinateur comme un périphérique téléphonique & Fax Machine

Utilisez votre ordinateur comme un périphérique téléphonique & Fax Machine

Si vous avez eu votre ordinateur portable en 1994 puis vous auriez eu un modem intégré dans votre ordinateur portable mais la technologie a changé dans la dernière décennie, mais pas sans sa décision no let downs.Mon nom est Samuel et je travaille co
Faire les Raspberry Pi périphérique à devenir un serveur Bluetooth Object Push profil (OPP)

Faire les Raspberry Pi périphérique à devenir un serveur Bluetooth Object Push profil (OPP)

IntroductionTéléphone Android fonctionne une pile de protocole bluetooth. Raspbian OS, le populaire système d'exploitation pour le Raspberry Pi gère également une implémentation de la pile de protocole Bluetooth. Cela suggère que la Pi de la frambois
Créer votre propre les câbles Ethernet Cat5e/Cat6

Créer votre propre les câbles Ethernet Cat5e/Cat6

Créer votre propre câble Ethernet CAT5e/CAT6 est compétence utile et très facile à apprendre. Presque chaque maison maintenant possède son propre réseau et savoir comment mettre fin à vos propres câbles peuvent vous sauver argent ainsi que d'avoir de