arduino - bežična kontrola relea

24
Konstrukcija sistema za beˇ ziˇ cnu kontrolu releja pomo´ cu Arduino UNO mikrokontrolerske ploˇ ce seminarski rad Arhitektura i operativni sistemi Dor de Mili´ cevi´ c 86/2013 4. decembar 2014. Saˇ zetak U danaˇ snje vreme su mikrokontroleri (eng. Microcontroller, MCU) pri- sutni svuda i njihova primena se sve viˇ se pove´ cava, a time i njihov znaˇ caj. Ve´ cu primenu postiˇ zu zbog svoje niske cene i mogu´ cnosti koju pruˇ zaju u izradi razliˇ citih ure daja. Sistem za beˇ ziˇ cnu kontrolu releja je zasno- van na Arduino UNO mikrokontrolerskoj ploˇ ci i pomo´ cu njega se beˇ ziˇ cno mogu kontrolisati ˇ cetiri visokonaponska ure daja. Korisniˇ cki interfejs je dostupan kroz LCD ekran (eng. Liquid-crystal display), a od dodatnih mogu´ cnosti poseduje automatsku regulaciju radne temperature i prikaz teku´ ceg vremena i datuma. Sadrˇ zaj 1 Uvod 2 2 Osnovne karakteristike Arduino razvojnog sistema 2 2.1 Arduino UNO .......................... 2 3 Opis rada sistema i njegovog softverskog interfejsa 3 4 Elektronske komponente koriˇ cene u izradi sistema i nji- hove osnovne karakteristike 4 4.1 Modul sa ˇ cetiri elektromagnetna releja ............ 5 4.2 Bluetooth modul ........................ 6 4.3 Vremenski modul ........................ 7 4.4 LCD modul ........................... 8 4.5 Infracrveni prijemnik ...................... 9 4.6 Senzor temperature i vlaˇ znosti vazduha ........... 10 5 Izvorni kod sistema 11 6 Zakljuˇ cak 24 Literatura 24 1

Upload: missso

Post on 17-Aug-2015

282 views

Category:

Documents


7 download

DESCRIPTION

Konstrukcija sistema za bezicnu kontrolu relejapomocu Arduino UNO mikrokontrolerske ploce seminarski rad Arhitektura i operativni sistemiDjordje Milicevic

TRANSCRIPT

Konstrukcija sistema za bezicnu kontrolu relejapomocu Arduino UNO mikrokontrolerske ploce seminarski rad Arhitektura i operativni sistemiDorde Milicevic 86/20134. decembar 2014.SazetakU danasnje vreme su mikrokontroleri (eng. Microcontroller, MCU) pri-sutni svuda i njihova primena se sve vise povecava, a time i njihov znacaj.Vecuprimenupostizuzbogsvojeniskecenei mogucnosti kojupruzajuuizradi razlicitihuredaja. Sistemzabezicnukontrolurelejajezasno-van na Arduino UNO mikrokontrolerskoj ploci i pomocu njega se bezicnomogukontrolisati cetiri visokonaponskauredaja. Korisnicki interfejsjedostupankrozLCDekran(eng. Liquid-crystal display), aoddodatnihmogucnosti posedujeautomatskuregulacijuradnetemperaturei prikaztekuceg vremena i datuma.Sadrzaj1 Uvod 22 Osnovne karakteristike Arduino razvojnog sistema 22.1 Arduino UNO . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Opis rada sistema i njegovog softverskog interfejsa 34 Elektronskekomponentekorisceneuizradisistemainji-hove osnovne karakteristike 44.1 Modul sa cetiri elektromagnetna releja . . . . . . . . . . . . 54.2 Bluetooth modul . . . . . . . . . . . . . . . . . . . . . . . . 64.3 Vremenski modul . . . . . . . . . . . . . . . . . . . . . . . . 74.4 LCD modul . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.5 Infracrveni prijemnik. . . . . . . . . . . . . . . . . . . . . . 94.6 Senzor temperature i vlaznosti vazduha . . . . . . . . . . . 105 Izvorni kod sistema 116 Zakljucak 24Literatura 2411 UvodSapojavomprvihmikroprocesora(eng. Microprocessor) 1971. go-dine pocelaje i njihovaupotreba. Medutim, tipicansistemje zahte-vaoveliki broj dodatnihkomponenti zaradkaostosubili A/Dpre-tvaraci(eng.Analog-to-digital converter),brojaci(eng.Counter),oscila-tori (eng. Electronic oscillator) i drugo. Vremenom je doslo do integrisanjapotrebnih komponenti u jedno kolo, i tako je stvoren moderni mikrokon-troler. Mikrokontrolerisuimalibrzrazvoj. Sveviseivisekolajeinte-grisano, programiranje je olaksano uvodenjem es (eng. Flash) memorija(koje se mogu mnogo puta brisati i pisati), smanjena je potrosnja struje(vaznozabaterijskeuredaje), aponudarazlicitihkontrolerajepostalaneverovatno sirokai dostupnasvima. Unastavkujepredstavljenakon-strukcija sistema cija je glavna funkcija kontrola visokonaponskih uredajastrujomniskognapona. Kontroluvrsi ArduinoUNOmikrokontrolerskaploca posredstvom komponente koja se naziva relej (eng. Relay).2 Osnovne karakteristike Arduino razvoj-nog sistemaArduino je razvojni sistem otvorenog koda. Hardver(eng. Hardware)sesastoji odjednostavnoghardverskogdizajna Arduino ploce sa Atmel AVR mikrokontrolerom i pratecimkomponentama koje uveliko olaksavaju programiranje i povezivanjesadrugomelektronikom. BitanaspektArduinoprojektajestan-dardizovan raspored konektora koji omogucava lako povezivanje sadodatnim modulima, poznatijim kao Arduino stitovi (eng. Arduinoshields). Softver (eng. Software) se sastoji od razvojnog okruzenja koje cinestandardni kompajler (eng. Compiler) i programirani bootloader (eng. Bo-otloader) koji pojednostavljujepostupakprebacivanjaprevedenogkodaues memorijunacipu. Drugi mikrokontroleri obicnoza-htevajuzasebanelektronski programator(eng. Electrical Program-mer). Integrisano razvojno okruzenje je aplikacija napisana u Java(eng. Java)programskomjeziku. Sastoji seoduredivacakodasamogucnostima kao sto su oznacavanje koda, uparivanje zagrada, au-tomatsko uvlacenje linija. Arduino programi se pisu u jeziku slicnomC/C++ (eng. Programming language C/C++) programskom jezikusa izvesnim pojednostavljenjima i izmenama. Programeri moraju dadenisu samo dve funkcije kako bi napravili izvrsni program.Te funkcije su:setup()- funkcijakojaseizvrsavajednom, pri ukljucivanjuArduino ploce, i sluzi za pocetna podesavanjaloop() - funkcija koja se izvrsava u petlji sve vreme dok se neiskljuci Arduino ploca2.1 Arduino UNOJednaodnajpoznatijihArduinoplocajeArduinoUNOnakojoj jebaziranovaj sistem. Glavnakomponentanaploci jeATmega328mi-krokontroler. Plocaposeduje14digitalnihulazno/izlaznihkonektora, 6analognihulaza, keramicki oscilatorod16MHz, dugmezaresetovanje2sistema, USB (eng. Universal Serial Bus) strujne i druge konektore.Neke osnovne karakteristike ploce su: radni napon ploce je 5 V optimalni napon na stujnom konektoru u rasponu od 7 do 12 V maksimalna dozvoljena jacina stuje po U/I konektoru 40 mA 32 KB Flash memorije 2 KB SRAM (eng. Static random access memory) memorije 1 KB EEPROM (eng. Electricallyerasableprogrammablereadonlymemory) memorijeNa slici 1 se nalazi fabricki dizajn Arduino UNO ploce.Slika 1: Arduino UNO Rev 3 ploca3 Opis rada sistemai njegovog softver-skog interfejsaPodesavanje i upravljanje sistemom je moguce vrsiti bilo kojim daljin-skimupravljacemkoji koristi tehnologijuinfracrvenesvetlosti (eng. In-fraredlight)ili nekimdrugimuredajemkoji imamogucnostBluetooth(eng. Bluetooth) prosirenja.Sistem moze da kontrolise cetiri zasebna, visokonaponska uredaja. Tafunkcijajeomogucenakoriscenjemcetiri elektromagnetnarelejakoji supodneposrednomkontrolommikrokontrolera. Softverskiinterfejsjedo-stupan kroz LCD ekran koji sadrzi dve linije od po sesnaest karaktera.Podrzana su tri menija: Relejni meni-sadrzi vizuelneindikatoretrenutnogstanjareleja(Slika 2) Temperaturni meni - sadrzi prikaz trenutne temperature i vlaznostivazduha koja vlada u sistemu, kao i indikator automatske regulacijetemperature sistema (Slika 3)3 Vremenski meni - prikazuje trenutno vreme, datum i dan u nedelji(Slika 4)PozadinskoosvetljenjeLCDekranasetakodekontrolisedaljinskimpu-tem.Na jedan od releja je povezan ventilator koji obavlja funkciju automatskeregulacije temperature sistema kada je to neophodno, odnosno, kada tem-peraturni senzor detektuje da je temperatura dostigla odredeni prag kojije zadat u izvornom kodu sistema i moguce ga je podesavati. Ocitavanjevrednosti temperature se odvija u vremenskim razmacima od po pet mi-nuta. Kada je automatska regulacija temperature ukljucena, stanje relejana koji je spojen ventilator nije moguce menjati.Slika 2: Relejni meniSlika 3: Temperaturni meniSlika 4: Vremenski meni4 Elektronske komponente koriscene u iz-radi sistemai njihove osnovne karakteri-stikeU izradi sistema za bezicnu kontrolu releja su koriscene sledece kom-ponente: Modul sa cetiri elektromagnetna releja Bluetooth modul Vremenski modul LCD ekran Infracrveni prijemnik Senzor temperature i vlaznosti vazduha44.1 Modul sa cetiri elektromagnetna relejaGlavnakomponentakojavrsi ukljucivanjeili iskljucivanjepotrosacapovezanihnasistemjerelej. Tojeelektromehanickanapravakojasluziza prekidanje ili uspostavljanje strujnog kola putem elektromagneta kojiotvara ili zatvara strujne kontakte. Princip rada releja se zasniva na elek-tromagnetu koji se sastoji od mnogobrojnih namotaja izolovane bakarnezice oko gvozdenog jezgra. Kada struja tece kroz primarno strujno kolo,oko elektromagneta se stvara magnetno polje koje privlaci gvozdenu sinu,a sama sina na sebi nosi elektricne kontakte koji otvaraju ili zatvaraju se-kundarno strujno kolo. Na slici 5 se nalazi ilustrovani prikaz rada releja.Slika 5: Elektromagnetni relejModul, koji se sastoji od cetiri elektromagnetna releja, na sebi posedujei integrisane komponente koje obezbeduju sigurnost i ispravan rad modula.Neke od tih komponenti su: Dioda (eng. Diode) povezuje se paralelno na kontakte releja i sluziza ponistavanje napona samoindukcije i moguce varnice na strujnimkontaktima Optokapler (eng. Optocoupler) uvodi jos jedan nivo sigurnosti takosto zicki razdvaja kontakte releja od mikrokontrolera LEdioda(eng. Light-emitingdiode)obavljafunkcijuindikatorastanja relejaNa slici 6 se nalazi izgled modula sa relejima.Na slici 7 se nalazi shema povezivanja sa Arduino plocom.5Slika 6: Princip rada relejaSlika 7: Shema povezivanja4.2 Bluetooth modulJedna od mogucnosti koju sistem pruza je ta da se njegovo upravlja-njeodvijai putemBluetooth-a. Dabi senestotakvoostvarilouredajmoraposedovatiBluetoothmodulnakomsenalazi cipkojiomogucavaBluetooth komunikaciju sa klijentom.Na slici 8 se nalazi izgled Bluetooth modula.Na slici 9 se nalazi shema povezivanja HC-05 modula sa Arduino UNOplocom.6Slika 8: Bluetooth modulSlika 9: Shema povezivanja4.3 Vremenski modulIako funkcija digitalnog sata trenutno ne pruza sistemu znacajne po-datke za njegovo funkcionisanje, sam uredaj je dizajniran za kucne uslove,te kao takav treba da pruza i dodatne informacije korisniku poput tacnogvremena. To je realizovano koriscenjem DS1302 vremenskog modula kojina sebi ima ugradenu CR2032 bateriju koja omogucava cuvanje podatakao vremenu kada je sistem iskljucen. Na slici 10 se nalazi izgled vremenskogmodula.Slika 10: Vremenski modulNa slici 11 se nalazi shema povezivanja sa Arduino UNO plocom.7Slika 11: Shema povezivanja4.4 LCD modulDa bi korisnik lakse upravljao sistemom i softverskim interfejsom, naraspolaganju je LCD modul koji sadrzi ekran od 2 linije po 16 karakterai plavo pozadinsko osvetljenje koje se po potrebi moze regulisati. Modulje zasnovan na HD44780 kontroleru koji predstavlja industrijski standard.ZakoriscenjesaArduinoplocamapostojebibliotekekojeimajuimple-mentiraneosnovnefunkcijezaradmodula. Naslici 12senalazi izgledLCD modula.Slika 12: LCD modulNa slici 13 se nalazi shema povezivanja sa Arduino UNO plocom.8Slika 13: Shema povezivanja4.5 Infracrveni prijemnikSistem je moguce kontrolisati i putem daljinskog upravljaca koji kori-sti tehnologiju infracrvene svetlosti. Infracrveni prijemnik je komponentakoja omogucava ocitavanje impulsa poslatih sa daljinskog upravljaca. Mi-krokontroler ce reagovati u zavisnosti od impulsa koji mu je prosleden. Naslici 14 se nalazi izgled standardnog infracrvenog prijemnika koji se mozenaci u kucnim uredajima koji funkcionisu po slicnom principu.Slika 14: Infracrveni prijemnikNa slici 15 se nalazi shema povezivanja sa Arduino UNO plocom.9Slika 15: Shema povezivanja4.6 Senzor temperature i vlaznosti vazduhaUsled zagrevanja pojedinih komponenti sistema, pojavila se potreba zauvodenjem automatske regulacije temperature. Kada temperatura predeodredeni prag,ventilator koji je povezan na jedan od releja se ukljucujei timeseobavljaregulacijatemperature. Dabi mikrokontrolermogaodadetektujekadajeneophodnoregulisati temperaturu, onmoraimatiodgovarajucisenzor. UovomslucajujetotemperaturnisenzorDHT11koji ujedno meri i vlaznost vazduha. Na slici 16 se nalazi izgled senzora.Osnovne karakteristike: Radni napon: 3-5 V Maksimalna potrosnja struje: 2.5 mA Raspon merenja vlaznosti vazduha: 20-80 % Raspon merenja temperature: 0-50 CSlika 16: Senzor temperature i vlaznosti vazduha DHT11Na slici 17 se nalazi shema povezivanja sa Arduino UNO plocom.10Slika 17: Shema povezivanja5 Izvorni kod sistemaArduinoHeader.hdatoteka:/*Relays*/#defineRELAY_1_PIN2#defineRELAY_2_PIN3#defineRELAY_3_PIN4#defineRELAY_4_PIN5//DCFan(5V)/*IRrecieverpin*/#defineIR_PIN14/*Remotecontrolcodes*/#defineRELAY_1_SWITCH 0xC084 //NUM1#defineRELAY_2_SWITCH 0xC044 //NUM2#defineRELAY_3_SWITCH 0xC0C4 //NUM3#defineRELAY_4_SWITCH 0xC024 //NUM4#defineSHOW_TEMP 0xC230 //PLAY#defineLCD_BACKLIGHT 0xC240 //REC#defineSHOW_CLOCK 0xC2C0 //STOP#defineSHOW_RELAY 0xC038 //MUTE/*Temperatureandhumiditysensor*/#defineDHTPIN15#defineDHTTYPEDHT11DHTdht(DHTPIN,DHTTYPE);/*Temperature(Celsius)andhumiditylimits*/#defineTEMP_UP_LIMIT35 //TurnONauto-cooling#defineTEMP_DOWN_LIMIT32 //TurnOFFauto-cooling#defineHUM_UP_LIMIT80 //TurnONauto-cooling#defineHUM_DOWN_LIMIT60 //TurnOFFauto-cooling11/*LCDbacklight*/#defineLCD_BACKLIGHT_PIN17/*LCDcharacters*/bytethermometer[8]={B00100,B01010,B01010,B01110,B01110,B11111,B11111,B01110};bytedrop[8]={B00100,B00100,B01010,B01010,B10001,B10001,B10001,B01110};byteleftFan[8]={B01111,B01100,B01010,B01001,B01001,B01010,B01100,B01111};byterightFan[8]={B11110,B00110,B01010,B10010,B10010,B01010,B00110,B11110};bytedegree[8]={B01110,B01010,B01110,B00000,12B00000,B00000,B00000,B00000};byteyes1[8]={B00000,B00000,B00000,B00000,B10000,B01000,B00101,B00010};byteyes2[8]={B00000,B00001,B00010,B00100,B01000,B00000,B00000,B00000};byteno[8]={B00000,B00000,B10001,B01010,B00100,B01010,B10001,B00000};/*Clockmodule*/DS1302rtc(0,1,16);//CEIOSCLK13ArduinoMain.inodatoteka:#include //LCDlibrary#include //IRlibrary#include"DHT.h" //Temperatureandhumiditysensorlibrary#include#include#include"ArduinoHeader.h"//Setuplibrary/*Indicators[1]->Relay1[2]->Relay2[4]->Relay3[8]->Relay4[16]->Clockindicator[32]->Auto-Coolingindicator[64]->LCDbacklight*/byteindicators=B00000000;/*IRrecieverpin*/IRrecvirrecv(IR_PIN);decode_resultsresults;/*Temperatureandhumidityvariables*/floatcelsius;inthumidity;floatfahrenheit;/*LCDpins*/LiquidCrystallcd(6,7,8,9,10,11,12);/*Bluetooth*/SoftwareSerialGenotronex(18,19);//RX,TXintbluetooth_data;/**************************************************FUNCTIONS****************************************************//*Welcomescreen:ENlanguage*/voidLCD_show_welcome_EN(){lcd.clear();lcd.setCursor(4,0);lcd.print("Welcome!");delay(1000);lcd.setCursor(0,1);lcd.print("Loading");14delay(1000);lcd.setCursor(8,1);lcd.print(".");delay(1000);lcd.setCursor(9,1);lcd.print(".");delay(1000);lcd.setCursor(10,1);lcd.print(".");delay(1000);}/*RELAYmenu*/voidLCD_show_relay_menu(){indicators&=B11101111; //Clockindicator:OFFlcd.begin(16,2);lcd.clear();/*------------Relay1------------*/if((indicators&B00000001)==0){lcd.print("R1:OFF");}elseif((indicators&B00000001)==1){lcd.print("R1:ON");}/*------------Relay2------------*/if(((indicators&B00000010)>>1)==0){lcd.setCursor(9,0);lcd.print("R2:OFF");}elseif(((indicators&B00000010)>>1)==1){lcd.setCursor(9,0);lcd.print("R2:ON");}/*------------Relay3------------*/if(((indicators&B00000100)>>2)==0){lcd.setCursor(0,1);lcd.print("R3:OFF");}elseif(((indicators&B00000100)>>2)==1){lcd.setCursor(0,1);lcd.print("R3:ON");}/*------------Relay4------------*/if(((indicators&B00001000)>>3)==0){lcd.setCursor(9,1);15lcd.print("R4:OFF");}elseif(((indicators&B00001000)>>3)==1){lcd.setCursor(9,1);lcd.print("R4:ON");}}/*TurnONrelay1*/voidturn_on_relay_1(){digitalWrite(RELAY_1_PIN,LOW); //TurnONrelay1indicators|=B00000001; //RELAY1indicator:ON}/*TurnOFFrelay1*/voidturn_off_relay_1(){digitalWrite(RELAY_1_PIN,HIGH);//TurnOFFrelay1indicators&=B11111110; //RELAY1indicator:OFF}/*Relay1ON/OFF*/voidrelay_1_switch(){if((indicators&B00000001)==0){turn_on_relay_1();LCD_show_relay_menu(); //ShowRELAYmenu}elseif((indicators&B00000001)==1){turn_off_relay_1();LCD_show_relay_menu();}}/*TurnONrelay2*/voidturn_on_relay_2(){digitalWrite(RELAY_2_PIN,LOW);indicators|=B00000010;}/*TurnOFFrelay2*/voidturn_off_relay_2(){digitalWrite(RELAY_2_PIN,HIGH);indicators&=B11111101;}/*Relay2ON/OFF(sameas"relay_1_switch"function)*/voidrelay_2_switch()16{if(((indicators&B00000010)>>1)==0){turn_on_relay_2();LCD_show_relay_menu();}elseif(((indicators&B00000010)>>1)==1){turn_off_relay_2();LCD_show_relay_menu();}}/*TurnONrelay3*/voidturn_on_relay_3(){digitalWrite(RELAY_3_PIN,LOW);indicators|=B00000100;}/*TurnOFFrelay3*/voidturn_off_relay_3(){digitalWrite(RELAY_3_PIN,HIGH);indicators&=B11111011;}/*Relay3ON/OFF(sameas"relay_1_switch"function)*/voidrelay_3_switch(){if(((indicators&B00000100)>>2)==0){turn_on_relay_3();LCD_show_relay_menu();}elseif(((indicators&B00000100)>>2)==1){turn_off_relay_3();LCD_show_relay_menu();}}/*TurnONrelay4*/voidturn_on_relay_4(){digitalWrite(RELAY_4_PIN,LOW);indicators|=B00001000;}/*TurnOFFrelay4*/voidturn_off_relay_4(){digitalWrite(RELAY_4_PIN,HIGH);indicators&=B11110111;17}/*Relay4ON/OFF(sameas"relay_1_switch"function)*/voidrelay_4_switch(){if(((indicators&B00001000)>>3)==0){turn_on_relay_4();LCD_show_relay_menu();}elseif(((indicators&B00001000)>>3)==1){turn_off_relay_4();LCD_show_relay_menu();}}/*TEMPmenu*/voidLCD_temperature_menu(){lcd.clear();/*LCDcustomcharacters[Arduino_IRRC_header.h]*/lcd.createChar(0,thermometer);lcd.createChar(1,drop);lcd.createChar(2,leftFan);lcd.createChar(3,rightFan);lcd.createChar(4,degree);lcd.createChar(5,yes1);lcd.createChar(6,yes2);lcd.createChar(7,no);lcd.setCursor(0,0); //Celsius(C)lcd.write(byte(0));lcd.setCursor(2,0);lcd.print(celsius,2);lcd.setCursor(7,0);lcd.write(byte(4));lcd.setCursor(8,0);lcd.print("C");lcd.setCursor(11,0); //Humidity(%)lcd.write(byte(1));lcd.setCursor(13,0);lcd.print(humidity);lcd.setCursor(15,0);lcd.print("%");lcd.setCursor(0,1); //Fahrenheit(F)lcd.write(byte(0));lcd.setCursor(2,1);lcd.print(fahrenheit,2);lcd.setCursor(7,1);lcd.write(byte(4));18lcd.setCursor(8,1);lcd.print("F");if(((indicators&B00100000)>>5)==0)//AUTO-COOLINGindicator:OFF{lcd.setCursor(12,1);lcd.write(byte(2));lcd.setCursor(13,1);lcd.write(byte(3));lcd.setCursor(15,1);lcd.write(byte(7));}elseif(((indicators&B00100000)>>5)==1)//AUTO-COOLINGindicator:ON{lcd.setCursor(12,1);lcd.write(byte(2));lcd.setCursor(13,1);lcd.write(byte(3));lcd.setCursor(14,1);lcd.write(byte(5));lcd.setCursor(15,1);lcd.write(byte(6));}}/*ShowTEMPmenu*/voidLCD_show_temperature_menu(){indicators&=B11101111; //Clockindicator:OFFcelsius=dht.readTemperature();humidity=dht.readHumidity();fahrenheit=dht.readTemperature(true);LCD_temperature_menu();}/*Auto-coolingfeature*/voidauto_cooling(){celsius=dht.readTemperature();humidity=dht.readHumidity();if((celsius>TEMP_UP_LIMIT)||(humidity>HUM_UP_LIMIT)){indicators|=B00100000; //AUTO-COOLINGindicator:ON(youcannotcontrolrelay4manually)turn_on_relay_4();19}elseif((celsius>6)==0){digitalWrite(LCD_BACKLIGHT_PIN,LOW);indicators|=B01000000;}elseif(((indicators&B01000000)>>6)==1){digitalWrite(LCD_BACKLIGHT_PIN,HIGH);indicators&=B10111111;}}voidLCD_show_clock_menu(){lcd.clear();indicators|=B00010000; //Setclockmenuindicator:ON//Displaytimecenteredontheupperlinelcd.setCursor(4,0);lcd.print(rtc.getTimeStr());//DisplayabbreviatedDay-of-Weekinthelowerleftcornerlcd.setCursor(0,1);lcd.print(rtc.getDOWStr(FORMAT_SHORT));//Displaydateinthelowerrightcornerlcd.setCursor(6,1);lcd.print(rtc.getDateStr());}/*************************************************SETUPLOOP****************************************************/voidsetup(){pinMode(13,OUTPUT);pinMode(LCD_BACKLIGHT_PIN,OUTPUT);20digitalWrite(LCD_BACKLIGHT_PIN,HIGH);pinMode(RELAY_1_PIN,OUTPUT);pinMode(RELAY_2_PIN,OUTPUT);pinMode(RELAY_3_PIN,OUTPUT);pinMode(RELAY_4_PIN,OUTPUT);digitalWrite(RELAY_1_PIN,HIGH);digitalWrite(RELAY_2_PIN,HIGH);digitalWrite(RELAY_3_PIN,HIGH);digitalWrite(RELAY_4_PIN,HIGH);//StarttheBluetoothrecieverGenotronex.begin(9600);Genotronex.println("BluetoothisON!Ready!");//StarttheIRreceiverpinMode(IR_PIN,INPUT);irrecv.enableIRIn();lcd.begin(16,2); //InitializeLCD//Starttemp&himiditysensordht.begin();//Settheclocktorun-mode,anddisablethewriteprotectionrtc.halt(false);rtc.writeProtect(true);//ThefollowinglinescanbecommentedouttousethevaluesalreadystoredintheDS1302//rtc.setDOW(SATURDAY); //SetDay-of-WeektoFRIDAY//rtc.setTime(15,04,40); //Setthetimeto12:00:00(24hrformat)//rtc.setDate(13,12,2014);//SetthedatetoAugust6th,2010LCD_show_welcome_EN();LCD_show_clock_menu();}voidbluetooth_read(){if(Genotronex.available()){bluetooth_data=Genotronex.read();if(bluetooth_data==1){Genotronex.println("Relay1");relay_1_switch();}21elseif(bluetooth_data==2){Genotronex.println("Relay2");relay_2_switch();}elseif(bluetooth_data==3){Genotronex.println("Relay3");relay_3_switch();}elseif(bluetooth_data==4){if(((indicators&B00100000)>>5)==0){Genotronex.println("Relay4");relay_4_switch();}}elseif(bluetooth_data==7){Genotronex.println("ShowR_MENU");LCD_show_relay_menu();}elseif(bluetooth_data==8){Genotronex.println("ShowT_MENU");LCD_show_temperature_menu();}elseif(bluetooth_data==5){Genotronex.println("BACKLIGHT");lcd_backlight_switch();}elseif(bluetooth_data==9){Genotronex.println("SHOWC_MENU");LCD_show_clock_menu();}}}voidIR_read(){if(irrecv.decode(&results)){if(results.value==RELAY_1_SWITCH){relay_1_switch();//TurnON/OFFrelay1andsetindicatortothecorrectvalue}elseif(results.value==RELAY_2_SWITCH){relay_2_switch();//TurnON/OFFrelay2andsetindicatortothecorrectvalue22}elseif(results.value==RELAY_3_SWITCH){relay_3_switch();//TurnON/OFFrelay3andsetindicatortothecorrectvalue}elseif(results.value==RELAY_4_SWITCH){if(((indicators&B00100000)>>5)==0)//IfAUTO-COOLINGindicatorisON,relay4cannotbeswitchedOFF{relay_4_switch();//TurnON/OFFrelay4andsetindicatortothecorrectvalue}}elseif(results.value==SHOW_TEMP){LCD_show_temperature_menu();//ShowTEMPmenu}elseif(results.value==SHOW_RELAY){LCD_show_relay_menu(); //ShowRELAYmenu}elseif(results.value==SHOW_CLOCK){LCD_show_clock_menu(); //ShowCLOCKmenu}elseif(results.value==LCD_BACKLIGHT){lcd_backlight_switch(); //TurnON/OFFLCDbacklight}irrecv.resume(); //Receivethenextvalue}}/*************************************************LOOPLOOP:)**************************************************/voidloop(){bluetooth_read();IR_read();if(((indicators&B00010000)>>4)==1){constunsignedlongclock_interval=5000UL;staticunsignedlonglast_sample_time_clock=0-clock_interval;unsignedlongnow_clock=millis();23if((now_clock-last_sample_time_clock)>=clock_interval){last_sample_time_clock=now_clock;LCD_show_clock_menu();}}/*Samplingtemperatureeveryfiveminutes*/constunsignedlonginterval=5*60*1000UL;//Timeintervalforsamplingtemperatureandhumiditystaticunsignedlonglast_sample_time=0-interval;//Initializesuchthatareadingisduethefirsttimethroughloop()unsignedlongnow=millis();if((now-last_sample_time)>=interval){last_sample_time=now;auto_cooling();}}6 ZakljucakKaostosevidi, programiranjeArduinoplocajezanimljivi nepre-teranotezakposao, amogusenapraviti mnogi korisni uredaji i slozenisistemi. JedantakavjeArduSatkoji semozevideti nasledecojadresi:http://en.wikipedia.org/wiki/ArduSat. Prezentacija sistema za bezicnukontrolurelejase moze videti nasledecoj adresi: http://mrgeorgem.blogspot.com/Literatura[1] Massimo Banzi. Arduino, 2014. on-line at: http://arduino.cc/.[2] Vladimir D. Krstic. Mala skola elektronike. Radio klub.[3] Wikipedia. Mikrokontroler, 2014. on-line at: http://sh.wikipedia.org/wiki/Mikrokontroler.[4] Wikipedia.Relej, 2014.on-line at: http://sr.wikipedia.org/wiki/Relej.[5] Wikispaces. Arduino, 2014. on-line at: http://arduino-info.wikispaces.com/Arduino-What-IS-it.24