Système d’Irrigation automatique (3 / 5 étapes)

Étape 3: Le logiciel

La structure de base du logiciel est une routine de démarrage qui initialise tous les périphériques, suivis d’un bloc d’État qui permet au système de basculer entre différents modes. Il y a également plusieurs minuteries et les gestionnaires d’interruption qui traitent l’information à un certain intervalle ou moniteur en dehors des périphériques d’entrée. Chacun des capteurs sont répartis en différents modules (sauf la sonde de température interne). Vous trouverez les modules comme bibliothèques dans le répertoire drivers. Les méthodes qui doivent être utilisées publiquement à l’extérieur le début du module avec les noms de modules. Le code devrait être assez bien commenté.

J’ai posté le logiciel sur mon compte de git pour que je peux publier des mises à jour que je développe le système et les bogues corrects, que j’ai rencontré.

La répartition de base est la suivante :

Les Zones :

Les zones sont définies à la mendicité de main.c. Nous avons:

#define NUMBER_OF_ZONES 4

Zone zone0 = {ZONE_OFF, OVERRIDE_INACTIVE, GPIO_PORTD_BASE, GPIO_PIN_3, 16, 53, 5} ;

Zone zone1 = {ZONE_OFF, OVERRIDE_INACTIVE, GPIO_PORTE_BASE, GPIO_PIN_1, 16, 54, 3} ;

Zone zone2 = {ZONE_OFF, OVERRIDE_INACTIVE, GPIO_PORTE_BASE, GPIO_PIN_2, 16, 59, 3} ;

Zone3 zone = {ZONE_OFF, OVERRIDE_INACTIVE, GPIO_PORTE_BASE, GPIO_PIN_3, 16, 57, 3} ;

Zone * Zones [NUMBER_OF_ZONES] = {& zone0, & zone1, & zone2, & zone3} ;

Dans l’ensemble du logiciel, nous utilisons le NUMBER_OF_ZONES #define pour parcourir les zones. Nous utilisons un tableau de pointeurs vers chacune des zones d’y accéder rapidement sans avoir à faire plusieurs copies dans la mémoire. Les définitions sont alors assez simples. Chaque zone est une structure qui contient les propriétés : statut, OverrideStatus, Port, Pin, OnHour, OnMinute et OnLength. Vous pouvez en ajouter autant que vous pouvez trouver GPIO, ajouter le pointeur vers le tableau et mettre à jour la NUMBER_OF_ZONES #define pour indiquer le nombre de zones que vous avez.

Modes du système :

RUN :

Il s’agit de notre principal mode. Pour ce mode, nous avons mis le statut LED couleur vert, bien tirer l’heure actuelle le DS1307, et puis nous avons vérifier l’état actuel de la zone basée sur notre nouvel horaire.

SUBSTITUER :

SUBSTITUER le mode est conçu pour un remplacement de l’ensemble du système. Cela se produit lorsqu’un utilisateur appuie sur le bouton capacitif pendant un certain temps. Dans ce mode, nous avons mis le statut LED de couleur rouge, puis vérifiez si le système a fonctionné en mode remplacement pendant 24 heures. Si nous avons été nous effacer l’état de substitution et retourner au mode d’exécution. Si nous n’avons pas nous continuons à laisser le système en mode de remplacement.

SYSTEM_SHUTDOWN :

Le mode SYSTEM_SHUTDOWN est destiné pour arrêt critique de sécurité. Actuellement, le seul module qui pourrait mettre en œuvre de système d’arrêt est le capteur de température interne. Chaque fois que nous vérifions la sonde de température interne, on le compare à un seuil. Si nous passons le seuil que nous entrons dans ce mode où nous avons chacune des zones claires, éteindre le voyant rouge sur l’équilibre, désactiver toutes les minuteries et les interruptions et passez en mode hibernation. La seule façon de sortir de ce mode est par un utilisateur en appuyant sur le bouton veille sur Launchpad lui-même.

Les interruptions :

Bouton interrompre:

Le gestionnaire d’interruption bouton comporte deux parties. Les premières poignées lorsque le bouton est enfoncé. Ceci va basculer un drapeau en disant : nous avons vu un bouton appuyer sur allumer la LED bleue et démarrer la minuterie 0 qui sera simplement incrémenter un compteur. Lorsque le bouton est relâché nous éteindre la LED bleue, désactiver le Timer 0 et évaluer la durée de la touche. Actuellement, la seule condition vérifiée est une substitution de système qui est un bouton de 2 secondes. Si nous détectons une action de substitution de système que nous basculons basé sur le mode de fonctionnement actuel. Pour passer en mode remplacement système nous clignoter la LED rouge pour confirmation et définir le mode de remplacement. Pour quitter override système que nous effacer tous les remplacements de zone, clignoter la LED verte pour confirmation et définir le mode d’exécution.

Interrupt général Timer 1 :

Il s’agit d’une deuxième une minuterie que nous utiliserons pour vérifier l’entrée de capteur et d’imprimer à l’UART. En entrant dans l’interruption nous effacer l’indicateur. Ensuite, nous vérifions la sonde de température interne, la sonde de température humidité/ext. et la sonde d’humidité. Ces valeurs être sauvés dans leurs domaines respectifs. Nous imprimons ensuite l’état de toutes les mesures et les zones de l’UART. Si un utilisateur a l’USB debug port branché à un PC et a ouvert un terminal qu’ils devraient voir un message comme suit chaque seconde d’impression :

HEURE : 18:46:27

INT TEMP : 86

TEMP EXT : 78

REL HUM : 53

HUMIDITÉ : 54

ZONE 0: NON ACTIF

ZONE 1: PAS ACTIF

ZONE 2: PAS ACTIF

ZONE 3: PAS ACTIF

Avant de nous quitter l’interruption timer générales, nous vérifions si notre deuxième une minuterie a frappé un multiple de 10. Si elle a nous activer/désactiver le statut led allumée, si non nous désactiver la led, et puis on incrémente le compteur. Cela nous donne un bon indicateur à l’utilisateur de montrent que le système fonctionne toujours et quel mode il est actuellement en. La LED donnera juste un flash rapide toutes les dix secondes

Les Modules :

AMS :

AMS_InitSensor - Initialise AMS sur ADC1 séquence 0

AMS_ReadSensor - lit moyenne valeur de la sonde (256 échantillons)

DS1307 :

DS1307_GetTime - récupère l’heure actuelle du DS1307

DS1307_SetTime - ensembles DS1307 à temps spécifié

bcdToDec - valeur décimale codée en binaire convertit en valeur décimale

decToBcd - convertit la valeur décimale en valeur décimale codée en binaire

HIH6130 :

HIH6130_UpdateData - lit les données de HIH6130

HIH6130_GetStatus - statut de retours HIH6130

HIH6130_GetHumidity - humidité retours HIH6130 lecture

HIH6130_GetTemperature - lecture de la température retour HIH6130

I2C :

I2C_SetupI2C3 - procédure d’installation pour I2C3

I2C_SendSlaveStart - adresse esclave envoie et start bit suivie d’un bit d’arrêt

I2C_ReadBytes - lit n nombre d’octets

I2C_ReadBytesFromAddress - lit n nombre d’octets d’adresse

I2C_ReadSingleByte - lectures sur un seul octet de l’adresse

I2C_WriteByte - écrit un octet à l’adresse

I2C_WaitForDone - attend pour bus I2C maître effacer

I2C_Delay - millisecondes de retard

UART :

UART_SetupUART0 - routine de configuration pour UART0

UART_PrintMessage - tableau imprime des caractères d’UART

UART_PrintLong - valeur de type long tirages d’UART


Articles Liés

Comment faire "The Root" (système d’irrigation hydroponique automatisé)

Comment faire "The Root" (système d’irrigation hydroponique automatisé)

Ce système hydroponique, composé principalement d'un pot de peinture de 5 gallons courants, est conçu pour être une méthode efficace, flexible et rentable pour la culture d'une variété de plantes dans un espace confiné (c.-à-d. un balcon d'appartemen
GSM basé automatisé système d’Irrigation à l’aide de la pluie-Gun

GSM basé automatisé système d’Irrigation à l’aide de la pluie-Gun

Ère moderne numérisée pour notre XXIe siècle a besoin d'automatisation dans chaque secteur. Combinant la technologie pour accroître la crédibilité d'une autre technologie n'est pas du tout une très bonne idée. L'Inde est un pays où l'agriculture est
Raspberry Pi contrôlé le système d’Irrigation

Raspberry Pi contrôlé le système d’Irrigation

Chaque printemps, ma femme obtient vraiment ambitieux et un grand jardin potager de plantes. Comme l'été s'éternise, ambition tour à tour à la paresse et malheureusement de que beaucoup des plantes meurent d'une mort lente, cinglante négligence attri
Système d’irrigation de ESP8266 WiFi plante

Système d’irrigation de ESP8266 WiFi plante

Dans ce tutoriel, nous montrerons comment construire le système d'irrigation plante avec Arduino ESP8266 Bibliothèque et EasyIoT serveur (Windows ou framboise). Avec l'interface web, nous pouvons contrôler l'eau pompe et sol humidité à distance. Main
Système d’Irrigation Smart

Système d’Irrigation Smart

Ce projet est créé pour la Digilent Design Contest 2015. C'est un système d'irrigation intelligente qui est contrôlée par un Conseil d'administration ChipKit MX3. Le jury est surveillé par un appareil android, mais peut travailler seul. Le système vé
Mini système d’Irrigation de serre

Mini système d’Irrigation de serre

je viens d'acheter moi-même une chose petite couverte en plastique « serre » de la jardinerie locale. C'est génial, il fait juste ce que j'ai besoin d'un petit jardin et était bon marché aussi. Je l'utilise pour cultiver quelques plants que je vais p
Système d’arrosage automatique avec sonde capacitive et Arduino sur le bon marché (et je le pense)

Système d’arrosage automatique avec sonde capacitive et Arduino sur le bon marché (et je le pense)

Avertissement : Je ne suis pas un ingénieur électronicien, alors je ne peux pas offrir aucune garantie pour la conception (beaucoup moins pour votre implémentation). Je ne connais que la solution présentée a fonctionné pour moi pendant au moins 5-6 m
Capteur d’humidité multi-bricolage + système d’irrigation

Capteur d’humidité multi-bricolage + système d’irrigation

Ayant souvent une grande quantité de plantes à l'eau devient une tâche fastidieuse et ayant divers types de plantes ne nécessite plus d'attention car chaque type consomme une quantité différente de l'eau. Alors mes amis et moi avons décidé de mettre
Système d’irrigation bricolage pour plantes

Système d’irrigation bricolage pour plantes

système d'irrigation goutte à goutte électronique pour les plantesJ'ai pensé à un système d'arrosage sans assistance pour les plantes, étant un voyageur je force ont suffisamment de temps pour arroser mes plantes et la plupart du temps mes plantes ré
Système de surveillance automatique maison arduino (simple et bon marché)

Système de surveillance automatique maison arduino (simple et bon marché)

L'objectif de mon projet est d'atteindre le système automatique de surveillance maison sans aucune interférence manuelle. En général autre système de surveillance il faut pouvoir ON TV et caméra récepteur chaque fois. Et aussi il a besoin à l'entrée
L’eau de pluie système d’irrigation goutte à goutte

L’eau de pluie système d’irrigation goutte à goutte

Voici un système d'irrigation goutte à goutte simple qui utilise la gravité pour mettre l'eau de pluie à partir d'un baril de pluie exactement où cela est nécessaire dans le jardin potager. Ce goutteur est conçu pour un système de jardin pieds carrés
Jardin surélevé avec système d’irrigation puisser

Jardin surélevé avec système d’irrigation puisser

j'ai fait ce 16 « x 4 » déclenché jardin hors du bois, tuyau de vidange perferated, gaine de tissu et deux courtes pièces de tuyau en PVC. Le système d'irrigation est conçu pour s'infiltrer l'eau que l'on met intot il vidange Tuyau par le tuyau ou ar
Comment faire un système d’irrigation.

Comment faire un système d’irrigation.

il s'agit d'une instructable sur comment faire un système d'irrigation simple de :papier ou plastique tasses quoi que vous choisissiez vous appartient.pailles ou des tubes ou des tuyaux ou quoi que.un crayon.une punaise ou une perceuse si vous utilis
Système de stationnement automatique

Système de stationnement automatique

Je suis très heureux de créer un projet IoT avec l'arduino. Aujourd'hui je vais vous les gars apprendre comment faire une impressionnante distance voiture Parking System. Passez à l'étape suivante pour en savoir plus !Étape 1: IntroductionHé les gars