Advertisement
RuiViana

TCC automação

Jul 27th, 2015
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <DHT.h>
  3. #include <DS1307.h>
  4. //#include <Adafruit_GFX.h>
  5. //#include <DS1307RTC.h>
  6. #include <SPI.h>
  7. #include <SD.h>
  8.  
  9. #define DS1307_ADDRESS 0x68
  10.  
  11. //Sensor temp. e umidade
  12. #define DHTPIN 7
  13. #define DHTTYPE DHT22 // Sensor DHT 22 (AM2302)
  14. DHT dht(DHTPIN, DHTTYPE);
  15.  
  16. byte zero = 0x00;
  17.  
  18. //Modulo RTC DS1307 ligado as portas A4 e A5 do Arduino
  19. DS1307 rtc(A4, A5); // A4 = SDA; A5 = SCL
  20.  
  21. const int chipSelect = 4;
  22.  
  23. int latchPin = 1; // Conectar ao pino 12 dos 74HC595
  24. int clockPin = 2; // Conectar ao pino 11 dos 74HC595
  25. int dataPin = 3; // Conectar ao pino 14 dos 74HC595
  26. int umidadesolo;
  27. //------------------------------- setup -----------------------
  28. void setup() {
  29.  
  30. Serial.begin(9600);
  31. Serial.println("Aguardando dados...");
  32. // Iniclaiza o sensor DHT
  33. dht.begin();
  34.  
  35. //Aciona o relogio
  36. rtc.halt(false);
  37.  
  38. //As linhas abaixo setam a data e hora do modulo
  39. //e podem ser comentada apos a primeira utilizacao
  40. //rtc.setDOW(SUNDAY); //Define o dia da semana
  41. //rtc.setTime(12, 50, 13); //Define o horario
  42. //rtc.setDate(26, 7, 2015); //Define o dia, mes e ano
  43.  
  44. //Definicoes do pino SQW/Out
  45. rtc.setSQWRate(SQW_RATE_1);
  46. rtc.enableSQW(true);
  47.  
  48. pinMode(latchPin, OUTPUT);
  49. pinMode(clockPin, OUTPUT);
  50. pinMode(dataPin, OUTPUT);
  51.  
  52. }
  53. // ------------------------------- registrador ---------------------------
  54.  
  55. //Registrador 74hc595
  56. void registrador(byte reg){
  57.  
  58. digitalWrite(1, HIGH);
  59. // shiftOut(3, 2, LSBFIRST, registrador);
  60. shiftOut(3, 2, LSBFIRST,reg);
  61. digitalWrite(1, LOW);
  62. }
  63.  
  64. //-------------------------------------- loop ---------------------------
  65. void loop() {
  66.  
  67. //Sensor de umidade e temperatura do ar DHT22
  68. // Leitura da umidade
  69. float h = dht.readHumidity();
  70. // Leitura da temperatura (Celsius)
  71. float t = dht.readTemperature();
  72.  
  73. // Verifica se o sensor esta respondendo
  74. if (isnan(h) || isnan(t))
  75. {
  76. Serial.println("Falha ao ler dados do sensor DHT !!!");
  77. return;
  78. }
  79.  
  80. // Mostra a temperatura no serial monitor e no display
  81. Serial.print("Temperatura: ");
  82. Serial.print(t);
  83. Serial.print(" *C ");
  84. // Mostra a umidade no serial monitor e no display
  85. Serial.print("Umidade : ");
  86. Serial.print(h);
  87. Serial.println(" %");
  88.  
  89. //------------------------------------------------------------
  90.  
  91. //Sensor de umidade do solo
  92. umidadesolo = analogRead(A0);
  93. int Porcento = map(umidadesolo, 680, 0, 0, 100);
  94.  
  95. Serial.print("Umidade do solo: ");
  96. Serial.print(Porcento);
  97. Serial.println("%");
  98.  
  99. delay(1000);
  100.  
  101. //------------------------------------------------------------
  102.  
  103.  
  104.  
  105. //-----------------------------------------------------------
  106.  
  107. //SD Card
  108. // make a string for assembling the data to log:
  109. String dataString = "";
  110. dataString += String(rtc.getTimeStr());
  111. // Grava a cada 1 seg
  112. delay (1000);
  113.  
  114. // open the file. note that only one file can be open at a time,
  115. // so you have to close this one before opening another.
  116. File dataFile = SD.open("datalog.txt", FILE_WRITE);
  117.  
  118. // if the file is available, write to it:
  119. if (dataFile) {
  120.  
  121. dataFile.println(dataString);
  122. dataFile.close();
  123. // print to the serial port too:
  124. Serial.println(dataString);
  125. }
  126. // if the file isn't open, pop up an error:
  127. else {
  128. Serial.println("error opening datalog.txt");
  129. }
  130. //}
  131.  
  132. //-----------------------------------------------------------
  133.  
  134. //Início automação
  135. // Iluminação LIGA
  136. if (rtc.getTimeStr(FORMAT_SHORT)=="5:00"){
  137. registrador (0b11110000);
  138. }
  139.  
  140. // Iluminação DESLIGA
  141. if (rtc.getTimeStr(FORMAT_SHORT)=="20:00"){
  142. registrador (0b00000000);
  143. }
  144.  
  145. // Fertirrigação
  146. if (rtc.getTimeStr(FORMAT_SHORT)=="9:00"){
  147. registrador (0b11111000); // Liga Solenéide 1
  148. delay (5000);
  149. registrador (0b11111100); // Liga Bomba
  150. delay (180000);
  151. registrador (0b11111000); // Desliga Bomba
  152. delay (5000);
  153. registrador (0b11110000); // Desliga Soleníde 1
  154. registrador (0b11110100); // Liga Soleníde 2
  155. delay (5000);
  156. registrador (0b11111100); // Liga Bomba
  157. delay (60000);
  158. registrador (0b11111000); // Desliga Bomba
  159. delay (5000);
  160. registrador (0b11110000); // Desliga Soleníde 2
  161. }
  162.  
  163. //Irrigação
  164. if ((Porcento <=75) && (rtc.getTimeStr(FORMAT_SHORT) == "21:00")){
  165. registrador (0b11110100); // Liga Soleníde 2
  166. delay (5000);
  167. registrador (0b11111100); // Liga Bomba
  168. delay (180000);
  169. registrador (0b11111000); // Desliga Bomba
  170. delay (5000);
  171. registrador (0b11110000); // Desliga Soleníde 2
  172. }
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement