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 QFormatagao 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 abaixoEjopen- 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.
= MenuFormat 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 IDEDepois 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 Q2. 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, paraNeste 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 mamanwCrie 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 (