dimoura

Untitled

Dec 15th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.87 KB | None | 0 0
  1. #include "DHT.h" // Biblioteca Adafruit para sensor de temperatura DHT11
  2. #include <SPI.h> // Biblioteca de comunicação SPI Nativa
  3. #include <SD.h> // Biblioteca de comunicação com cartão SD Nativa
  4.  
  5. #include <virtuabotixRTC.h> // Carrega a biblioteca virtuabotixRTC
  6. virtuabotixRTC myRTC(D0, D1, D2); // Determina os pinos ligados ao modulo myRTC(clock, data, rst)
  7.  
  8. #define DHTPIN 0 // Define para o pino D3 do nodeMCU -> D3
  9. #define DHTTYPE DHT11 // DHT 11 que será utilizado para comunicação
  10. const int chipSelect = 4; // Constante que indica em qual pino está conectado o Chip Select do módulo de comunicação
  11.  
  12. DHT dht(DHTPIN, DHTTYPE); // Objeto responsável pela comunicação microcontrolador/sensor
  13. File dataFile; // Objeto responsável por escrever/Ler do cartão SD
  14.  
  15. bool cartaoOk = true;
  16.  
  17. void setup()
  18. {
  19. Serial.begin(9600); // Inicialização da porta de comunicação Serial
  20.  
  21. // Informacoes iniciais de data e hora
  22. // Apos setar as informacoes, comente a linha abaixo
  23. // (segundos, minutos, hora, dia da semana, dia do mes, mes, ano)
  24.  
  25. //myRTC.setDS1302Time(30, 03, 14, 6, 15, 12, 2017);
  26.  
  27. dht.begin(); // Inicialização do objeto de comunicação com sensor
  28.  
  29. // Se não for possível se comunicar com o cartão SD o código não deve prosseguir
  30. if (!SD.begin(chipSelect)) {
  31. Serial.println("Erro na leitura do arquivo não existe um cartão SD ou o módulo está conectado corretamente ?");
  32. cartaoOk = false;
  33. return;
  34. }
  35.  
  36.  
  37. //Escreve o Cabeçalho no arquivo datalog.csv
  38. File logFile = SD.open("datalog.csv", FILE_WRITE);
  39. if (logFile)
  40. {
  41. //logFile.println(", , ,"); //Just a leading blank line, incase there was previous data
  42. logFile.println("TEMPERATURA (CELSIUS); UMIDADE (%); DIAS; MESES; ANOS; HORAS; MINUTOS; SEGUNDOS");
  43. logFile.close();
  44. }
  45. else
  46. {
  47. Serial.println("Não foi possível abrir o arquivo de LOG");
  48. return;
  49. }
  50.  
  51.  
  52. }
  53.  
  54. void loop()
  55.  
  56. {
  57. // Le as informacoes do CI
  58. myRTC.updateTime();
  59.  
  60. // Imprime as informacoes no serial monitor
  61. Serial.print("Data : ");
  62. // Chama a rotina que imprime o dia da semana
  63. imprime_dia_da_semana(myRTC.dayofweek);
  64. Serial.print(", ");
  65. Serial.print(myRTC.dayofmonth);
  66. Serial.print("/");
  67. Serial.print(myRTC.month);
  68. Serial.print("/");
  69. Serial.print(myRTC.year);
  70. Serial.print(" ");
  71. Serial.print("Hora : ");
  72. // Adiciona um 0 caso o valor da hora seja <10
  73. if (myRTC.hours < 10)
  74. {
  75. Serial.print("0");
  76. }
  77. Serial.print(myRTC.hours);
  78. Serial.print(":");
  79. // Adiciona um 0 caso o valor dos minutos seja <10
  80. if (myRTC.minutes < 10)
  81. {
  82. Serial.print("0");
  83. }
  84. Serial.print(myRTC.minutes);
  85. Serial.print(":");
  86. // Adiciona um 0 caso o valor dos segundos seja <10
  87. if (myRTC.seconds < 10)
  88. {
  89. Serial.print("0");
  90. }
  91. Serial.println(myRTC.seconds);
  92.  
  93. delay( 1000);
  94.  
  95. // Caso o cartão esteja ok é criado um arquivo no cartão SD com o nome datalog.csv em modo de escrita
  96. if (cartaoOk){
  97. dataFile = SD.open("datalog.csv", FILE_WRITE);
  98. Serial.println("Cartão SD Inicializado para escrita :D ");
  99. }
  100.  
  101. //Limpando Variáveis
  102. String leitura = ""; // Limpo campo contendo string que será armazenada em arquivo CSV
  103. float temperatura = 0 ; // Limpo variável de temperatura a cada nova leitura
  104. float umidade = 0; // Limpo variável de umidade a cada nova leitura
  105.  
  106. float dias = 0; // Limpo variável de dias a cada nova leitura
  107. float meses = 0; // Limpo variável de meses a cada nova leitura
  108. float anos = 0; // Limpo variável de anos a cada nova leitura
  109. float horas = 0; // Limpo variável de horas a cada nova leitura
  110. float minutos = 0; // Limpo variável de minutos a cada nova leitura
  111. float segundos = 0; // Limpo variável de segundos a cada nova leitura
  112.  
  113. dias = myRTC.dayofmonth;
  114. meses = myRTC.month;
  115. anos = myRTC.year;
  116. horas = myRTC.hours;
  117. minutos = myRTC.minutes;
  118. segundos = myRTC.seconds;
  119.  
  120. //Leitura do sensor
  121. temperatura = dht.readTemperature(); // Função que realiza a leitura da temperatura do sensor dht11
  122. umidade = dht.readHumidity(); // Função que realiza a leitura da umidade do sensor dht11
  123.  
  124. // Caso os valores lidos do sensor não sejam válidos executamos as seguintes linhas
  125. if (isnan(temperatura) || isnan(umidade)){
  126. Serial.println ("Falha na leitura do sensor"); // Informar ao usuário que houve uma falha na leitura do sensor
  127. delay(1500); // Aguardamos 1,5 segundos
  128. return ; // Retornamos a função para o seu ponto inicial
  129. }
  130.  
  131. // Se tudo estiver ok, escrevemos os dados a serem armazenados em uma String
  132. // leitura = String(millis()) + ";" + String(temperatura) + ";" + String(umidade) + ";" + String(data)+";";
  133. leitura = String(temperatura) + ";" + String(umidade) + ";" + String(dias) + ";" + String(meses) + ";" + String(anos) + ";" + String(horas)+ ";" + String(minutos) + ";" + String(segundos) + ";" ;
  134.  
  135. // Se o arquivo estiver realmente aberto para leitura executamos as seguintes linhas de código
  136. if (dataFile) {
  137. Serial.println(leitura); // Mostramos no monitor a linha que será escrita
  138. dataFile.println(leitura); // Escrevemos no arquivos e pulamos uma linha
  139. dataFile.close(); // Fechamos o arquivo
  140. }
  141.  
  142. delay(300000); // Aguardamos 1,5 segundos para executar o loop novamente
  143. }
  144.  
  145. void imprime_dia_da_semana(int dia)
  146. {
  147. switch (dia)
  148. {
  149. case 1:
  150. Serial.print("Domingo");
  151. break;
  152. case 2:
  153. Serial.print("Segunda");
  154. break;
  155. case 3:
  156. Serial.print("Terca");
  157. break;
  158. case 4:
  159. Serial.print("Quarta");
  160. break;
  161. case 5:
  162. Serial.print("Quinta");
  163. break;
  164. case 6:
  165. Serial.print("Sexta");
  166. break;
  167. case 7:
  168. Serial.print("Sabado");
  169. break;
  170. }
  171. }
Add Comment
Please, Sign In to add comment