Boa Noite, Galera!

Estou começando um projeto na universidade onde tem que pegar os dados do módulo fotovoltaico (corrente, tensão) e salvar em um Sd-Card. Mas como sou novo no assunto, estou testando uns sensores primeiro em casa ( temperatura, entre outros). Minha duvida é a seguinte, como faço para salvar essas informações no Sd-Card ? Tenho um Adaptador (Catalex) para salvar os arquivos, já fiz a ligação dele no arduino. Não sei como faço para implementar esse código. Se alguém puder dar uma ajuda aí. Agradeço.

Exibições: 989

Responder esta

Respostas a este tópico

Olá MFB,

Creio que com estes dois links poderá obter o que deseja.

CLIK AQUI e também AQUI Não se esqueça de consultar AQUI

Boa sorte!

Abs.

Opa, e ai Carlos.

Então, já tinha olhado esses exemplos que você me passou, e ajudou bastante. Porém, minha dúvida continua sendo em como implementar um código para salvar os dados em um outro que já está feito. Tipo tenho um de temperatura feito, para salvar esses dados, como faço a implementação ? Pois estou declarando as variáveis, incluindo a biblioteca Sd, igual mostra nos exemplos. Mas não dá certo.  

Oi MFB, bom dia.

Anexe um arquivo aqui com o seu code para que possamos sugerir onde você deverá inserir

a rotina de salvamento dos dados.

Rui

Opa, e ai Rui. Bom dia!

Deu certo, meu irmão deu uma força aqui. 

#include <OneWire.h>
#include <DallasTemperature.h>
#include <SD.h>

Sd2Card SDcard;
SdVolume volume;
const int chipSelect = 4;
// Declarando pino de entrada do sinal do sensor
#define sinal_sensor 2

// Iniciando instancia OneWire para comunicado com o dispositivo
OneWire oneWire(sinal_sensor);

// Referencia
DallasTemperature sensors(&oneWire);

// Indereço de cada sensor DS18B20
DeviceAddress sensor01 = { 0x28, 0xFC, 0xCD, 0x8B, 0x04, 0x00, 0x00, 0x0C };


void setup()
{
// inicializando porta serial
Serial.begin(9600);

sensors.begin();

// Setando a resolução para 10 bit (Mas pode ir de 9 a 12)
sensors.setResolution(sensor01, 10);
if (!SD.begin(chipSelect))
{
Serial.println("Falha ao acessar o cartao !");
Serial.println("Verifique o cartao/conexoes e reinicie o Arduino...");
return;
}
Serial.println("Cartao iniciado corretamente !");
Serial.println();
}


void loop()
{
File dataFile = SD.open("arquivo.txt", FILE_WRITE);
delay(1000);
// Chamando todos os sensores a forncer a temperatura
sensors.requestTemperatures();

Serial.print("Temperatura: ");
printTemperature(sensor01);
Serial.println();

if (dataFile)
{
float temp = sensors.getTempC(sensor01);
dataFile.print("Temperatura: ");
dataFile.println(temp);
dataFile.close();
}
else
{
// Mensagem de erro caso ocorra algum problema
// na abertura do arquivo
Serial.println("Erro ao abrir arquivo.txt !");
}


}

void printTemperature(DeviceAddress deviceAddress)
{

float tempC = sensors.getTempC(deviceAddress);

if (tempC == -127.00)
{
Serial.print(" Erro ao calcular temperatura ");
}
else
{
Serial.print("C: ");
Serial.print(tempC);
}
}

Oi MFB,

que legal ter conseguido resolver.

Um alerta.

Pelo que percebi no seu code você grava no SD card cada ciclo da função loop.

Se cada ciclo ocorrer em 1 segundo, voce fará  

  60 * 60 * 24 = 86.400 gravações  por dia.

Como um SD card suporta em média 100.000 "writes", ele durará pouco mais que um dia.

Flash memory indeed has limited write cycles. However, by now it is unlikely that you'll encounter this within the normal lifetime of such a card. Usually this is in the order of 100,000 write cycles"

Rui

Valeu pela dica Rui. Vou me atendar a isso quando for fazer o projeto de verdade.

Vou automatizar o sistema de limpeza de um módulo fotovoltaico.

Ai estou fazendo primeiro a parte de coleta de dados (Corrente, Tensão), vou armazenar tudo em um SD, só que vou fazer a programação para coletar os dados a cada 1minuto. O que você acha? 

Depois vou utilizar uma Ponte H para acionar 2 motores a uma determinada hora, para realizar a limpeza dos módulos fotovoltaicos.

Oi MFB, se for a cada minuto, deverá durar aproximadamente 70 dias.

Rui

Olá Matheus,

Bom que solucionou seu problema, apenas aproveito para deixar aqui um pedido para que siga as indicações para quando postar novamente suas duvidas aqui no fórum, veja este link por favor, COMO POSTAR

Por outra parte, se em algum momento considerar que sua duvida esta esclarecida, edite o nome atual do tópico, e coloque antes do mesmo a palavra RESOLVIDO, isso ajudara outros colegas a encontrar de maneira mais fácil no futuro duvidas esclarecidas.

Atenção, nenhuma das indicações  que faço são regras obrigatórias, mas todos tratamos de segui-las por entender que trazem melhoras para toda a comunidade do LDG.

Grande abraço!

CK

Opa, já alterei lá Carlos.

Valeu pela dica.

Oi Matheus,

Obrigado por atender a minha solicitação.

Abs.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço