You are on page 1of 106
Esp32 Dados registrando temperatura para cartao MicroSD Este projeto mostra como registrar dados com datas de tempo para um cartéo microSD usando o ESP32. Como exemplo, registraremos leituras de temperatura do sensor DS18B20 a cada 10 minutos. O ESP32 estaré em modo de sono profundo entre cada leitura, e solicitara a data e a hora usando o Protocolo de Tempo de Rede (NTP). Visao geral do projeto Antes de comegar, vamos destacar as principais caracteristicas do projeto: Measure temperature (DS18B20) Timer wake up Request date and time (NTP server) t . x i fal Deep sleep for 10 Log data minutes (microSD card) = O ESP32 |é a temperatura usando o sensor de temperatura DS18B20. Depois de obter a temperatura, ele faz uma solicitagéo a um servidor NTP (Network Time Protocol) para obter data e hora. Entéo, o ESP32 precisa de uma conexao Wi-Fi. Os dados (temperatura e fuso hordario) so registrados em um cartao microSD. Para registrar dados no cartéo microSD, estamos usando um modulo de cartéo microSD. ‘Apés completar essas tarefas anteriores, o ESP32 dorme por 10 minutos. = O ESP32 acorda e repete o processo. Pegas necessarias Aqui esta uma lista das pecas necessdrias para construir este projeto (clique nos links abaixo para encontrar o melhor prego no Maker Advisor) ESP32 DOIT DEVKIT V1 Board —leia a andlise e comparagao dos conselhos de desenvolvimento esp32 Médulo de cartéo MicroSD Cartéo MicroSD Sensor de temperatura DS18B20 10k Ohm resistor Fios de jumper Breadboard Vocé pode usar os links anteriores ou ir diretamente para MakerAdvisor.com/tools para encontrar todas as pegas para seus projetos com o melhor prego! MAKER ADVISOR Preparando o modulo de cartaéo microSD Para salvar dados no cartao microSD com o ESP32, utilizamos o seguinte médulo de cartao microSD que se comunica com 0 ESP32 usando 0 protocolo de comunicagao SPI. = Menu Q Formatagao do cartao microSD Ao usar um cartao microSD com o ESP32, vocé deve formata-lo primeiro. Siga as préximas instrugées para formatar seu cartéo microSD. 1. Insira 0 cartéo microSD no computador. Va para o Meu Computador e clique com 0 botao direito do mouse no cartao SD. Selecione Formato como mostrado na figura abaixo Ejopen- Faset edit BE se “titer Bin orchange a program properties stem Open ere ee Fd earesese co Winton Defences Share with > £9 Combine tes in Acrobat Include in ibrary > BS Add to archive, $B Ad to "Archiveror" $B compress and email S$ compressto “Archiver and email = a a Rename 2. Uma nova janela aparece. Selecione FAT32, pressione Comece a inicializar 0 processo de formatacao e sig: a as instrugées na tela. = Menu Format BOOT (0:) x Cana 14468 e FATS2 (Defoul) ‘Alocation unit ze Szklobytes = Restore device defaults Volume label Boor Format options Esquematico Siga 0 préximo diagrama esquematico para montar o circuito para este projeto. ARAAAAAR Vocé também pode usar a tabela a seguir como uma referéncia para ligar 0 maédiila da cartia mieraSN: Médulo de cartao MicroSD ESP32 3V3 cs Mos! CLK GPIO 18 MissO GND A préxima figura mostra como seu circuito deve ser: Preparando o Arduino IDE Ha um complemento para o IDE Arduino que permite programar o ESP32 usando 0 IDE Arduino e sua linguagem de programagao. Siga um dos préximos tutoriais para preparar seu IDE Arduino para trabalhar com o ESP32, se vocé ainda nao 0 fez. = Instrucées do Windows - Placa ESP32 no Arduino IDE Depois de ter certeza de que vocé tem o complemento ESP32 instalado, vocé pode continuar com este tutorial Instalagao de bibliotecas Antes de carregar o cédigo, vocé precisa instalar algumas bibliotecas no seu IDE Arduino. A biblioteca OneWire de Paul Stoffregen e a biblioteca Dallas Temperature, para que vocé possa usar sensor DS18B20. Vocé também precisa instalar a biblioteca NTPClient forked by Taranais para fazer solicitagao a um servidor NTP. Siga os préximos passos para instalar essas bibliotecas no seu IDE Arduino’ Biblioteca OneWire . Clique aqui para baixar a biblioteca OneWire. Vocé deve ter uma pasta .zip em seus Downloads Descompactar a pasta .zip e vocé deve obter pasta mestre OneWire . Renomeie sua pasta de OneWire-master para OneWire . Mova a pasta OneWire para a pasta bibliotecas de instalagao Arduino IDE Finalmente, reassude seu IDE Arduino RON a Biblioteca de Temperatura de Dallas . Clique aqui para baixar a biblioteca DallasTemperature. Vocé deve ter uma pasta .zip em seus Downloads . Descompactar a pasta .zip e vocé deve obter a pasta mestre Arduino- Temperature-Control-Library- . Renomeie sua pasta de Arduine-Temperature-Gentrol-Library-master para DallasTemperature 4, Mova a pasta de instalagdo DallasTemperature para a pasta de bibliotecas de instalagao Arduino IDE . Finalmente, reassude seu IDE Arduino nN e a Biblioteca NTPClient = Menu Q 2. Descompactar a pasta .zip e vocé deve obter pasta NTPClient-master 3. Renomeie sua pasta de NFPGHent-mester para NTPClient 4. Mova a pasta NTPClientfolder para a pasta de bibliotecas de instalagao Arduino IDE 5. Finalmente, reassude seu IDE Arduino Codigo de upload Aqui esta 0 codigo que vocé precisa carregar para o seu ESP32. Antes do upload, vocé precisa modificar o cédigo para incluir suas credenciais de rede (SSID e senha). Continue lendo para saber como 0 cédigo funciona. File file = fs.open(path, FILE_WRITE); if(!file) { Serial.println("Failed to open file for writing"); return; 3 if(#ile.print(message)) { Serial.println("File written"); } else { Serial.printin("Write failed"); } file.close(); // Append data to the SD card (DON'T MODIFY THIS FUNCTION) void appendFile(fs::FS &fs, const char * path, const char * mes Serial.printf("Appending to file: %s\n", path); File file = fs.open(path, FILE_APPEND); if({file) { Serial.println("Failed to open file for appending"); return; } if(file.print(message)) { Bei aaa pe aan PPS aascU fy ~ Exibir codigo bruto Como funciona o cédigo Neste exemplo, o ESP32 esta em modo de sono profundo entre cada leitura, No modo de sono profundo, todo 0 seu cédigo deve irno configura¢ao() fungao, porque o ESP32 nunca chega ao loop() loop() Bibliotecas importadoras Primeiro, vocé importa as bibliotecas necessarias para o médulo de cartao microSD: #include "FS.h" #include "SD.h" #include Importe essas bibliotecas para trabalhar com o sensor de temperatura DS18B20. #include #include As seguintes bibliotecas permitem que vocé solicite a data e a hora de um servidor NTP. #include #include #include Definindo 0 tempo de sono profundo Este exemplo usa um fator de conversao de microsegundos para segundos, para Neste caso, estamos definindo o ESP32 para ir dormir por 10 minutos (600 segundos). Se vocé quer que o ESP32 durma por um periodo diferente de tempo, vocé sé precisa digitar o nimero de segundos para dormir profundamente no TIME_TO_SLEEP variavel. // Define deep sleep options uint64_t uS_TO_S_FACTOR = 1000000; // Conversion factor for micrc // Sleep for 1@ minutes = 6@@ seconds uint64_t TIME_TO_SLEEP = 600; Definindo suas credenciais de rede Digite suas credenciais de rede nas seguintes variaveis, para que o ESP32 seja capaz de se conectar & sua rede local // Replace with your network credentials const char* ssid = "REPLACE_WITH_YOUR_SSID"; “REPLACE_WITH_YOUR_PASSWORD" ; const char* password Inicializando sensores e variaveis Em seguida, defina o pino SD do cartéo microSD. Neste caso, é definido para ftdefine SD_CS 5 Crie uma variavel chamada readingID para manter a ID de leitura. Esta 6 uma maneira de organizar suas leituras. Para economizar um valor variavel durante o sono profundo, podemos salva-lo na memoria RTC. Para salvar dados na memoria RTC, vocé s6 precisa adicionar RTC_DATA_ATTR antes da definigao variavel. 11 Gave reading numhan an RTC mamanw Crie uma variavel String para manter os dados salvos no cartao microSD String dataMessage; Em seguida, crie as instancias necessdrias para o sensor de temperatura. O sensor de temperatura esta conectado a // Data wire is connected to ESP32 GPIO21 #define ONE_WIRE_BUS 21 // Setup a oneWire instance to communicate with a OneWire device OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature sensor DallasTemperature sensors (&oneWire) ; Em seguida, crie uma varivel flutuante para manter a temperatura recuperada pelo sensor DS18B20. float temperature; As duas linhas a seguir definem um NTPClient para solicitar data e hora de um servidor NTP. WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP) ; Em seguida, inicialize varidveis String para salvar a data e a hora. String formattedDate; String dayStamp; String timeStamp; Quando vocé usa sono profundo com o ESP32, todo 0 cédigo deve ir para dentro do configura¢ao() fungdo, porque o ESP32 nunca chega ao loop() loop() Conectando-se ao Wi-Fi O trecho seguinte do cédigo se conecta a rede Wi-Fi. Vocé precisa se conectar ao wi-fi para solicitar data e hora do servidor NTP. Serial.print("Connecting to "); Serial .print1n(ssid) ; WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay (500); Serial.print(". Inicializando o cliente NTP Em seguida, inicialize o cliente NTP para obter data e hora de um servidor NTP. timeClient.begin(); Vocé pode usaro setTimeOffset (

You might also like