Automatische irrigatiesysteem (3 / 5 stap)

Stap 3: De Software


De basisstructuur van de software is een start-up-routine die initialiseert alle van de randapparatuur gevolgd door een blok van de staat waarmee het systeem om te schakelen tussen verschillende modi. Er zijn ook verschillende timers en interrupt handlers die informatie op een bepaalde interval of monitor buiten randapparatuur voor input verwerken. Elk van de sensoren zijn opgesplitst in afzonderlijke modules (met uitzondering van de inwendige temperatuursensor). U vindt de modules als bibliotheken in de map drivers. De methoden die publiekelijk worden gebruikt buiten de module start met de namen van de modules. De code moet worden vrij goed commentaar.

Ik heb de software op mijn git account zodat ik updates publiceren kan als ik uit te breiden het systeem en de juiste bugs die ik tegengekomen ben.

De basis verdeling is als volgt:

De Zones:

De zones zijn gedefinieerd op het bedelen van main.c. We hebben:

#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};

Zone zone3 = {ZONE_OFF, OVERRIDE_INACTIVE, GPIO_PORTE_BASE, GPIO_PIN_3, 16, 57, 3};

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

In de software gebruiken we de NUMBER_OF_ZONES #define doorlopen van de zones. We gebruiken een serie van wijzers aan elk van de zones te snel openen zonder dat u hoeft te maken van meerdere exemplaren in het geheugen. De definities zijn dan vrij eenvoudig. Elke zone is een structuur met de eigenschappen: Status, OverrideStatus, poort, Pin, OnHour, OnMinute en OnLength. U kunt zo veel als de aanwijzer aan de array kunt u GPIO, toevoegen en bijwerken van de NUMBER_OF_ZONES #define om aan te geven van het aantal zones hebt.

Systeem de modi:

RUN:

Dit is onze primaire modus. Voor deze modus stellen we de status LED kleur groen, trekken ook de huidige tijd van de DS1307, en vervolgens controleren we de huidige status van de zone op basis van onze nieuwe tijd.

OVERSCHRIJVEN:

OVERSCHRIJVEN-modus is ontworpen voor een overschrijving van het gehele systeem. Dit gebeurt wanneer een gebruiker op de capacitieve drukt voor een vast bedrag van tijd. In deze modus Stel we de status LED kleur rood en vervolgens controleren als het systeem is uitgevoerd in de modus override voor 24 uur. Als we al we duidelijk de status van overschrijven en terug naar de uitvoermodus. If we haven't we doorgaan met het verlaten van het systeem in de modus override.

SYSTEM_SHUTDOWN:

De SYSTEM_SHUTDOWN-modus is bedoeld voor veiligheid kritieke afsluiten. Momenteel is de enige module die afsluiten van het systeem kon worden geïmplementeerd de interne temperatuursensor. Elke keer als we de interne temperatuursensor controleren we het vergelijken met een drempel. Als we de drempel die we invoeren deze modus waar wij duidelijk dat elk van de zones passeren, schakelt de rode LED op stabiele, alles van de timers en interrupts uitschakelen en dan in slaapstand gaan. De enige manier om af te sluiten van deze modus is door een gebruiker op de knop van de wake op de Launchpad zelf.

De Interrupts:

Knop onderbreken:

De knop interrupt handler bestaat uit twee delen. De eerste grepen wanneer de knop wordt gedrukt. Dit zal een vlag zeggen zagen we een knop druk op de blauwe LED inschakelen en Timer 0 die gewoon een teller zal ophogen start in-/ uitschakelen. Wanneer de knop wordt vrijgegeven zullen wij uitschakelen van de blauwe LED, uitschakelen van de Timer 0 en evalueren van de duur van de druk op de knop. Momenteel is de enige voorwaarde gecontroleerd voor een systeem overschrijven die een druk op de knop van 2 seconden is. Als we detecteren een systeem override actie die we overschakelen op basis van de huidige run modus. Voor het invoeren van de modus override de systeem we de rode LED voor bevestiging flash, en de modus instelt op OVERRIDE. Systeem overschrijven die we duidelijk alle zone overschrijvingen, flash de groene LED voor bevestiging, en verlaten de modus instelt op RUN.

Algemene Timer 1 onderbreken:

Dit is een een tweede timer die we gebruiken zullen om te controleren van de sensor input en afdrukken naar de UART. Bij binnenkomst van de interrupt wissen we de markering. Vervolgens controleren we de interne temperatuursensor en de vochtigheid/ext.-temperatuursensor de vocht sensor. Deze waarden krijgen opgeslagen in hun respectieve gebieden. Wij drukken vervolgens de status van alle metingen en zones aan de UART. Als een gebruiker de USB heeft-poort aangesloten op een PC debug en een terminal geopend moeten ze een bericht als het volgende zien elke seconde afdrukken:

TIJD: 18:46:27

INT. TEMP: 86

EXT TEMP: 78

REL HUM: 53

VOCHT: 54

ZONE 0: NIET ACTIEF

ZONE 1: NIET ACTIEF

ZONE 2: NIET ACTIEF

ZONE 3: NIET ACTIEF

Voordat we de algemene timer onderbreken vertrekken controleren we als de onze een tweede timer een veelvoud van 10 heeft getroffen. Als het schakelen we de status led op, als niet wij weg van een knevel het lampje, en dan we de teller verhogen. Dit geeft ons een mooie indicator om de gebruiker te laten zien dat het systeem nog draait en welke modus is het momenteel in. De LED zal enkel een snelle flits elke tien seconden

De Modules:

AMS:

AMS_InitSensor - geïnitialiseerd AMS op ADC1 volgorde 0

AMS_ReadSensor - leest gemiddelde waarde van de sensor (256 samples)

DS1307:

DS1307_GetTime - krijgt huidige tijd van DS1307

DS1307_SetTime - Sets DS1307 naar bepaalde tijd

bcdToDec - bekeerlingen binary coded decimal waarde naar decimale waarde

decToBcd - zet decimale waarde wilt binary coded decimal waarde

HIH6130:

HIH6130_UpdateData - leest gegevens uit HIH6130

HIH6130_GetStatus - geeft als resultaat HIH6130 status

HIH6130_GetHumidity - geeft als resultaat HIH6130 vochtigheid lezen

HIH6130_GetTemperature - geeft als resultaat HIH6130 temperatuurmetingen

I2C:

I2C_SetupI2C3 - Setup-proces voor I2C3

I2C_SendSlaveStart - stuurt slaaf adres en start bit gevolgd door een stopbit

I2C_ReadBytes - leest n aantal bytes

I2C_ReadBytesFromAddress - leest n aantal bytes van adres

I2C_ReadSingleByte - leest één byte van het adres

I2C_WriteByte - schrijft één byte naar adres

I2C_WaitForDone - wacht voor I2C Master bus wissen

I2C_Delay - vertragingen milliseconden

UART:

UART_SetupUART0 - installatieroutine voor UART0

UART_PrintMessage - Prints serie van karakters aan UART

UART_PrintLong - Prints lange waarde UART


Gerelateerde Artikelen

3 foot Tall Ant Nest met foerageren gebied - authentieke natuurlijke simulatie

3 foot Tall Ant Nest met foerageren gebied - authentieke natuurlijke simulatie

heeft u genieten van het vangen van mieren een een kind? Nog steeds een kind? Wil je de ultieme setup met een volledige natuurlijke simulatie van een echte omgeving? Moe van Uncle Sam's Ant farm met beperkte mogelijkheden? Wilt een kolonie in de 10 v
Tomaat Gardening - zaden aan de Fruit

Tomaat Gardening - zaden aan de Fruit

ik hou van tomaat en ik hou van hen in mijn huis tuinieren.Hier zal ik u tonen hoe om te groeien tomaten binnenshuis vanaf zaden recht tot de geteelde vruchten.Stap 1: Instellen van u gadget Krijgen een passende grond container. Ik heb een paar van 5
Intelligente drenken systeem met arduino...

Intelligente drenken systeem met arduino...

In dit instructable ik wilde delen mijn automatische irrigatiesysteem met behulp van de arduino, bodem vochtigheid sensor en een eenvoudig aquarium klep aangesloten op een servo... Vochtigheid sensor neemt voortdurend lezingen van het bodemvocht en b
Achtertuin broeikasgassen van geregenereerde windows

Achtertuin broeikasgassen van geregenereerde windows

de achtertuin groene huis is een geweldige aanvulling op onze manier van tuinieren, het is een geweldige plek voor ons om op te slaan onze potplanten uit rond het zwembad in de winter en een geweldige plek om te beginnen met planten vóór het groeisei
Instellen van een automatische multi-zone huis irrigatiesysteem

Instellen van een automatische multi-zone huis irrigatiesysteem

Het doel van deze ible is om u te tonen hoe een geautomatiseerde tuin irrigatiesysteem instelt. Hebt u een gemeenschappelijke ruimte tot water (zij het vierkante of een lange wikkel rond), heb je waarschijnlijk een soaker slang of een sprinkler dat g
Raspberry Pi gecontroleerd irrigatiesysteem

Raspberry Pi gecontroleerd irrigatiesysteem

Elk voorjaar mijn vrouw krijgt werkelijk ambitieus en planten een grote moestuin. Als de zomer sleept op, ambitie beurt tot luiheid en helaas die veel van de planten een langzame, vernietigende dood van sterven verwaarlozing wegens gebrek aan Wieden
Super eenvoudige sub irrigatiesysteem

Super eenvoudige sub irrigatiesysteem

Ik hou echt te planten groene planten. Ik groeien altijd bloemen en groenten thuis. Ik reis veel, maar elke keer als ik reis ik terug en vinden dat de meeste van de planten dood zijn omdat ze niet genoeg water speciaal op zomertijd krijgen.Elke keer
Automatische drenken van een vat water

Automatische drenken van een vat water

ik ben lui.  Een paar jaar geleden kreeg ik moe van het moeten handmatig water van het 15-20 potplanten rond onze patio, dus ik leg in een automatische drip irrigatiesysteem.  Ik zou graag hetzelfde systeem uitvoeren aan de zijkant van ons huis waar
Hoe maak je 'De Root' (geautomatiseerde hydrocultuur irrigatiesysteem)

Hoe maak je 'De Root' (geautomatiseerde hydrocultuur irrigatiesysteem)

Dit hydrocultuur systeem dat voornamelijk uit een algemeen gevonden 5-gallon Emmertje bestaat, is ontworpen als een kostenefficiënte, flexibele en efficiënte methode voor het kweken van een variëteit aan planten in een afgesloten ruimte (dat wil zegg
ESP8266 WiFi plant irrigatiesysteem

ESP8266 WiFi plant irrigatiesysteem

In deze tutorial zullen we laten zien hoe bouwen plant irrigatiesysteem met ESP8266 Arduino library en EasyIoT-server (Windows of frambozen). Met de web-interface kunnen we water pomp en bodem vochtigheid extern beheren. Je kunt nu gaan op vakantie e
Slimme irrigatiesysteem

Slimme irrigatiesysteem

Dit project is gemaakt voor de Digilent Design Contest 2015. Het is een slimme irrigatiesysteem die worden gecontroleerd door een ChipKit MX3-board. De Raad van bestuur wordt gecontroleerd door een android toestel, maar kan stand-alone werken. Het sy
SMS gecontroleerd Wireless irrigatiesysteem

SMS gecontroleerd Wireless irrigatiesysteem

UPDATE 02/13/11: stemmen is begonnen voor de wedstrijd van Sparkfun Microcontroller. Please VOTE voor mij!UPDATE 02/26/11: Ik heb een tweede prijs gewonnen!! Huzzah! Bedankt voor alle stemmen jongens!UPDATE 03/17/11: Ik zou graag een Laser cutter in
Zag staan met automatische rem

Zag staan met automatische rem

Dit is een stand die mij zwaar voor mijn DeWalt DW745 tafelblad zag. Ik weet DeWalt produceert een prima stand voor deze zag, maar ik vond het te duur, en ik hoef echt niet haar opvouwbare vermogen, zoals mijn zag alleen wordt verplaatst in de werkpl
Automatisch sproeisysteem systeem met capacitieve sonde en Arduino op de goedkope (en ik bedoel het)

Automatisch sproeisysteem systeem met capacitieve sonde en Arduino op de goedkope (en ik bedoel het)

Disclaimer: Ik ben geen ingenieur elektronica, dus kan ik niet garantie voor het ontwerp (veel minder voor uw implementatie bieden). Ik weet alleen de gepresenteerde oplossing werkte voor mij voor ten minste ongeveer 5-6 maanden (dus ik kan niet zelf