Automatiska bevattningssystem (3 / 5 steg)

Steg 3: Programvaran




Den grundläggande strukturen av programvaran är en start-up rutin som initierar alla kringutrustning följt av ett statligt block som gör att systemet att växla mellan olika lägen. Det finns också flera timers och avbryta hanterare som bearbetar information på ett visst intervall eller monitor utanför kringutrustning för indata. Var och en av sensorerna kan delas upp i enskilda moduler (utom inre temperatursensorn). Du hittar modulerna som bibliotek i katalogen drivers. De metoder som skall användas offentligt utanför modul start med moduler namnen. Koden bör vara ganska väl kommenterade.

Jag har postat programvaran på min git konto så att jag kan publicera uppdateringar som jag expandera systemet och rätta buggar jag stött på.

Den grundläggande fördelas enligt följande:

Zoner:

Zonerna är definierade på tiggeri av main.c. Vi har:

#define NUMBER_OF_ZONES 4

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

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

Zonen zon†2 = {ZONE_OFF, OVERRIDE_INACTIVE, GPIO_PORTE_BASE, GPIO_PIN_2, 16, 59, 3};

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

Zonen * zoner [NUMBER_OF_ZONES] = {& zone0, & zone1, & zon†2, & 3};

Under hela programvaran använder vi NUMBER_OF_ZONES #define för att iterera igenom zonerna. Vi använder en matris med pekare till alla zoner snabbt åt dem utan att behöva göra flera kopior i minnet. Definitionerna är sedan ganska enkelt. Varje zon är en struktur som innehåller egenskaperna: Status, OverrideStatus, Port, Pin, OnHour, OnMinute och OnLength. Du kan lägga till så många som du kan hitta GPIO för, lägga pekaren till i matrisen och uppdatera NUMBER_OF_ZONES #define för att ange antalet zoner du har.

Systemet lägen:

KÖR:

Detta är vår primära läge. För detta läge vi ange status LED färg till grön, väl dra den aktuella tiden från DS1307 och vi kontrollera aktuell zon status baserat på vår nya tid.

OMSTÄLLNING:

ÅSIDOSÄTTA är utformat för en omställning av hela systemet. Detta inträffar när användaren trycker på knappen kapacitiv för en viss tid. I detta läge ange vi status LED färg till rött och sedan kontrollera om systemet har varit igång i åsidosätter i 24 timmar. Om vi har vi klara omställning status och återvända för att köra läge. Om vi inte har vi fortsätta att lämna systemet i åsidosätter.

SYSTEM_SHUTDOWN:

SYSTEM_SHUTDOWN läge är avsett för säkerhet kritisk avstängning. För närvarande är den enda modul som kunde genomföra avstängning av interna temperaturgivaren. Varje gång vi kontrollera inre temperatursensor vi jämför det med en tröskel. Om vi antar den tröskel som vi går in i detta läge var vi rensa alla zoner, vända den röda lysdioden på stadig, inaktivera alla timers och avbrott och sedan gå in i viloläge. Det enda sättet att gå ur detta läge är av en användare trycka på aktiveringsknappen i startfönstret själv.

Avbrotten:

Knappen Avbryt:

Knappen avbrottshanterare har två delar. De första handtag när knappen är nedtryckt. Detta kommer att växla en flagga som säger att vi såg en knapp tryck, vrid den blå lampan och starta Timer 0 som helt enkelt kommer att öka en räknare. När knappen släpps kommer vi stänga av den blå lampan, inaktivera timern 0 och utvärdera hur länge du trycker på knappen. För närvarande är det enda villkoret kontrolleras för ett system omställning som är ett knapptryck på 2 sekunder. Om vi upptäcker en systemåtgärd omställning vi växla baserat på det nuvarande körningsläget. För att ange systemet åsidosätter vi flash röd lysdiod för bekräftelse och anger läget till omställning. För att lämna systemet omställning vi klara alla zon åsidosättningar, flash grön LED för bekräftelse, och Ställ in läge för att köra.

General Timer 1 avbrott:

Detta är en en andra timer som vi använder för att kontrollera sensorn input och skriva ut till UART. När man kommer in på avbryta tydliga vi flagg. Så kolla vi intern temperaturgivare temperaturgivaren luftfuktighet/ext. och fukt sensorn. Dessa värden sparas i respektive område. Vi trycker sedan status för alla mätningar och zoner till UART. Om en användare har USB debug porten ansluten till en PC och öppnade en terminal de bör se ett meddelande som följande utskrift varje sekund:

TID: 18:46:27

INT TEMP: 86

EXT TEMP: 78

REL HUM: 53

FUKT: 54

ZON 0: INTE AKTIV

ZON 1: INTE AKTIV

ZON 2: INTE AKTIV

ZON 3: INTE AKTIV

Innan vi lämnar allmänna timer avbrottet kontrollerar vi om våra en andra timer har drabbat en multipel av 10. Om det har växla vi status ledde på, om inte vi växla led av, och då vi ökar värdet för räknaren. Detta ger oss en fin indikator till användaren visar att systemet körs fortfarande och vilket läge det är för närvarande i. LED ger bara en snabb blixt varje tio andra

Moduler:

AMS:

AMS_InitSensor - initialiserar AMS på ADC1 sekvens 0

AMS_ReadSensor - läser sensor medelvärde (256 prover)

DS1307:

DS1307_GetTime - blir aktuell tid från DS1307

DS1307_SetTime - uppsättningar DS1307 till angiven tid

bcdToDec - konverterar binary coded decimal värde till decimalvärde

decToBcd - konverterar decimaltal till binary coded decimal värde

HIH6130:

HIH6130_UpdateData - läser data från HIH6130

HIH6130_GetStatus - returnerar HIH6130 status

HIH6130_GetHumidity - returnerar HIH6130 luftfuktighet läsning

HIH6130_GetTemperature - returnerar HIH6130 temperaturavläsningen

I2C:

I2C_SetupI2C3 - Setup förlopp för I2C3

I2C_SendSlaveStart - skickar slavadress och börja lite följt av en stoppbit

I2C_ReadBytes - läser n antal byte

I2C_ReadBytesFromAddress - läser n antalet byte från adress

I2C_ReadSingleByte - läser enda byte från adress

I2C_WriteByte - skriver enda byte till adress

I2C_WaitForDone - väntar på ledar-I2C bussen att rensa

I2C_Delay - förseningar millisekunder

UART:

UART_SetupUART0 - Setup rutin för UART0

UART_PrintMessage - utskrifter rad tecken till UART

UART_PrintLong - utskrifter lång värde till UART


Se Steg
Relaterade Ämnen

Automatiska bevattningssystem med kapacitiv sond och Arduino på billiga (och jag menar det)

Varning: Jag är inte en elektronikingenjör, så jag inte kan ge någon garanti för design (mycket mindre en implementering). Jag vet bara presenteras lösningen fungerade för mig minst 5-6 månader (så jag inte kan ens garantera dess tillförlitlighet öve...

Inomhus automatisk plantera bevattningssystem

Denna enkla automatiska bevattningssystem för krukväxter är väldigt justerbar, ser bra ut, är lätt att göra, och var relativt billig. Några av de objekt som används är förmodligen i ditt hus eller lägenhet just nu.Luft, av en liten fisk tank luftpump...

Automatisk anläggning vattning enhet

Nyligen hade jag mina händer på förmodligen den äldsta bok jag någonsin har berört, 1947, var en trädgårdsskötsel bok.Med inomhus trädgård tävling bestämde jag mig för jag kan få några användbara tips, nu är jag besviken att jag inte köpa boken! Det...

Inomhus örtagård med automatisk bevattning

Förra året jag ville växa några kök örter inomhus, mest som en kul experiment. Min familj hade planterat örter och grönsaker i trädgården i flera år, och jag ville prova odling av något själv men i mindre skala. Jag råkar också har några låga fönster...

Mini växthus bevattningssystem

jag har precis köpt mig en liten plast täckt "växthus" sak från den lokala Trädgårdsbutik. Det är bra, den gör precis vad jag behöver för en liten trädgård och var billiga också. Jag använder det för att odla några plantor som jag ska plantera i...

Intelligenta bevattningssystem med arduino...

i detta instructable jag ville dela min automatiska bevattningssystem med arduino, smutsa Fuktsensor och en enkel akvarium ventil bifogas ett servo... Fuktsensor tar konstant avläsningar av markfuktighet och överföringar till Arduino som styr en mini...

Arduino automatisk vattning System

I handboken Instructables kommer jag visa dig hur du gör din egen - Arduino-automatisk vattning system för ditt "skrivbord" blomma (eller anläggning). Hela förfarandet är mycket lätt och du kan slutföra den här guiden i ca 30 min.Målet är att au...

Arduino automatisk vattning System för växter Sprinkler

förra månaden, har Elecrow kvar från den ursprungliga office och flyttat till nya lokaler. Vi kommer att sakna våra ursprungliga office där vi arbetade så hårt för mer än två år, vi kommer att sakna allt här, skrivbord, fönster, och de som krukväxter...

Hönshus från gamla Garage skåp

Ingenting är så underbart som hem fullvuxet ägg. För vårt hönshus använde jag en hög med en-av-tolv pine brädor kvar från att ta bort våra gamla garage skåp. Jag har funnit att med alla projekt, jag tillbringar mycket mer tid planering än på konstruk...

3 fot lång Ant boet med födosök området - äkta naturliga simulering

har du njuta av att fånga myror ett barn? Fortfarande ett barn? Vill ha den ultimata setup med en komplett fysisk simulering av en verklig miljö? Trött på Uncle Sam's Ant farm's med begränsad possiblities? Vill ha en koloni i 10 av tusentals, inte et...

Arduino + GSM + PIR = Awesome

I närvarande tid hem/kontor och många andra plats är trygghet viktigast. I vår frånvaro är dessa platser inte säkert. För att göra dessa palats säkra många folk hålla vakter och många föredrar elektroniska säkerhetssystem. I nutid finns många typer a...

Tomat trädgårdsarbete - frön till frukt

jag älskar tomat och jag älskar trädgårdsarbete dem i mitt hem.Här ska jag visa dig hur man odlar tomat inomhus start från frön ända till de odlade frukterna.Steg 1: Konfigurera du gadget Få en lämplig jord behållare. Jag fick ett par 50 cm brett beh...

Inomhus vertikala trädgården med återvunna flaskor

Detta är min första instructable. Njuta av det och jag är alltid öppen för feedback.Jag såg detta bra Instructable och eftersom jag inte har tillgång till utsidan jag ville göra en som monteras på min fönsterbräda. Det visade sig vara ganska enkelt o...

Själv vattning trädgård - med återvunnet vatten från en luftkonditionering

gjorde du någonsin märker att din central luftkonditionering har en slang som ansluter till avloppet? Jag har aldrig riktigt tänkt på det förrän en natt jag nästan snubblade eftersom vår gick över källarplanet. Jag skär slangen och placerade en pappe...

VermiCulture kompostorn vända ditt kök scraps i organiska gödselmedel

Ok så detta är isär två pågående projektÅtervinning av allt och bygga och underhålla ett växthus.Så för att återvinna mat avfall var det bästa sättet jag hittade vermiculture! Ett finare ord för maskar. Och maskar gärna äter mat avfall. Och det bästa...

Mäta vattennivån med ultrasonic sensor

Mitt nästa stora projekt (automatiserad anläggning vattning system) var jag i behov av att ha vattennivå mätare. Jag var att välja från kontakt och beröringsfria metoder för att mäta vätskenivån i tank. Kontakt metoder är resistiv metod, kapacitiva o...

Intro till Arduino

An Arduino är en öppen källkod microcontroller utveckling styrelsen. På ren svenska, kan du använda Arduino att läsa sensorer och styra saker som motorer och lampor. Här kan du ladda upp program till denna styrelse som sedan kan interagera med saker...

Regnvatten och Distribution

I området där jag bor i soliga Sydafrika har det varit lite för soligt för de senaste två åren. Vi har upplevt en torka. Som sådan är de vattenreservoarer som leverera vatten till vår stad på mycket låga nivåer. Detta har resulterat i vatten restrikt...

Ställa in en automatisk flera zoner hem bevattningssystem

Målet med denna kompatibel är att visa dig hur du ställer in ett automatiserat trädgård bevattningssystem. Om du har ett enda område till vatten (att det kvadratiska eller en lång sjal runt omkring), har du sannolikt en soaker slang eller en sprinkle...