segunda-feira, 13 de março de 2017

Adaptando um interruptor no Monitor Webestufa


Tudo bem galera ? Aproveitando o post anterior, no qual adaptamos uma fonte de celular antigo para carregar a bateria de lítio do monitor, aproveitei para implementar um interruptor para o monitor, fato que eu realmente deixei passar batido na montagem ...😭
O interruptor que estou usando é aqueles de fonte de CPU, também retirado de uma fonte velha queimada.
Fiz um recorte na tampa traseira do monitor, de acordo com a medida do interruptor, de maneira que o mesmo fique encaixado.

domingo, 12 de março de 2017

Como Fazer um Carregador para Bateria de Lítio - DIY


Tudo bom galera? Decorrente do projeto anterior, no qual criamos um monitor portátil para horta e estufa agrícola,  surgiu a necessidade de ter um carregador de bateria de lítio, como esta acima na imagem, com formato de tablet. Como decidi utilizar este tipo de bateria recarregável, dei uma fuçada nas minhas sucatas e encontrei um carregador de celular bem antigo, porém intacto e com pouco uso. Surgiu a idéia de montar um projetinho bem simples mas funcional para carregar este tipo de bateria.

domingo, 5 de março de 2017

Webestufa & NodeMCU & ThingSpeak – Monitor Portátil


E ai pessoal tudo bem? é com grande satisfação que escrevo este post para vocês, pois confesso que ele foi um dos que mais gostei de montar, por motivo de utilizar o NodeMCU. Realmente ele é incrível no quesito de praticidade, incluindo o seu tamanho reduzido e a infinidade de aplicações possíveis a serem realizadas com ele. Seguindo o conceito de IoT, decidi criar uma aplicação portátil,  para Horta e Estufa Agrícola, permitindo realizar a medições de maneira muito prática de temperatura, umidade relativa do ar e umidade do solo. Você leva a caixinha para o local onde deseja fazer a medição e ainda se houver conexão WiFi disponível ainda poderá enviar estes dados para o Site ThingSpeak, no qual serão gerados os gráficos pertinentes aos sensores. Isto poderá ser bem útil se desejar fazer um trabalho de análise mais aprofundado da sua cultura. Se até o momento não estiver entendendo muito bem do que se trata este post, recomendo que de uma olhada no meu primeiro post sobre o NodeMCU.




Considerações Importantes



Para a criação deste Monitor Portátil levei em consideração o material já abordado nos outros posts e o uso de material reciclado para viabilizar o custo. Utilizei uma caixa plástica de módulo de carro que estava nos meus materiais reciclados para uso, de tamanho: 10 cm de comprimento, 7,5 cm de largura e 4,5 cm de altura.




Tirei a medida do LCD16x2, fiz um pequeno gabarito para fazer o recorte em uma das tampas da caixinha. Perfurei o desenho do gabarito já riscado na tampa, que posteriormente permitiu o encaixe do display.










Toda a eletrônica deve ficar dentro da caixa com exceção os sensores DHT11 e o Higrometro.





Para a alimentação do sistema utilizei uma bateria de 3,7 V e 500 mA, retirada de um rastreador veicular. Para alimentar o NodeMCU fiz a ligação do pino “VIN” no fio POSITIVO da bateria e o “GND” no fio NEGATIVO da bateria.




Decidi usar esta bateria por motivo de seu tamanho reduzido e sua autonomia muito boa. Mas também poderá alimentar com baterias recarregáveis, três (3) são ideais.

Uma protoboard daquelas “mini” é ideal para organizar as alimentações.





O detalhe mais importante é acomodar toda a eletrônica de forma mais organizada possível, para depois se necessário fazer alguma manutenção ou mesmo retirar as baterias para recarregar.


          Testando a Montagem



Montagem Eletrônica



           Enviando os Dados para ThingSpeak

Para o envio das informações dos sensores para o ThingSpeak é necessário a criação de um Canal com os campos necessários para cada sensor. No nosso caso utilizamos três (3) campos: Temperatura, Umidade do Ar e Umidade do Solo. Após a criação pegue o "Write API Key" gerado pelo seu Canal e insira no seu código no NodeMCU na String " apiKey ", através da IDE do Arduino.





                    Testes Finais

 


Acesse: ThingSpeak 

Baixe o Código: Webestufa-NodeMCU_Monitor 












 
 //www.arduinesp.com
//
// Plot DTH11 data on thingspeak.com using an ESP8266
// April 11 2015
// Author: Jeroen Beemster
// Website: www.arduinesp.com

// Adaptação Display LCD16x2 I2C e Sensor Higrometro: Marcelo | Webestufa
// webestufa.blogspot.com.br
// webestufa.com.br

#include <DHT.h>
#include <ESP8266WiFi.h>
#include <Wire.h>  // This library is already built in to the Arduino IDE
#include <LiquidCrystal_I2C.h> //Biblioteca adicioada para utilizar o Display

LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);

// Insira a sua API key, criada na geração do Canal (Write API Key)
String apiKey = "Sua API key";
const char* ssid = "Nome da sua rede";
const char* password = "Senha da sua rede";

const char* server = "api.thingspeak.com";
#define DHTPIN 2 // SO CONNECT THE DHT11/22 SENSOR TO PIN D4 OF THE NODEMCU

DHT dht(DHTPIN, DHT11,15); //CHANGE DHT11 TO DHT22 IF YOU ARE USING DHT22
WiFiClient client;

void setup() {
Serial.begin(115200);
pinMode(A0,INPUT);
delay(10);
dht.begin();


/*----------- Impressão Serial -----------*/
lcd.begin(16,2);   // initializing the LCD

WiFi.begin(ssid, password);

Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

}

void loop() {

float h = dht.readHumidity();
float t = dht.readTemperature();
float s = analogRead(A0); // Porta de comunicação com o Sensor de Umidade do Solo (Higrometro)




/*----------- Impressões no LCD 16x2 -----------*/
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("WEBESTUFA"); // Start Print text to Line 1
lcd.setCursor(0, 1);    
lcd.print("Horta e Estufa"); // Start Print Test to Line 2
delay(2000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Umidade: ");
lcd.print(h);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Temper.:");
lcd.print(t);
lcd.write(B11011111);
delay(3000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Solo: ");
lcd.print(s);
lcd.print(" %");
lcd.setCursor(0,1);
lcd.print("Enviando dados ");
delay(3000);
lcd.clear();



if (isnan(h) || isnan(t) || isnan(s)) { // checa as variáves para envio
Serial.println("Falha na leitura dos Sensores!");
return;
}

if (client.connect(server,80)) { // "184.106.153.149" or api.thingspeak.com
String postStr = apiKey;

// Converte as Variáveis para "String" para serem enviadas para o Canal

postStr +="&field1="; // Alimenta o campo Temperatura para geração do Gráfico
postStr += String(t);
postStr +="&field2="; // Alimenta o campo Umidade para geração do Gráfico
postStr += String(h);
postStr +="&field3="; // Alimenta o campo Umidade do Solo para geração do Gráfico
postStr += String(s);
postStr += "\r\n\r\n";

client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);

Serial.print("Temperatura: ");
Serial.print(t);
Serial.write(B11011111);
Serial.print(" Umidade relativa do ar: ");
Serial.print(h);
Serial.print(" %");
Serial.print(" Umidade do solo: ");
Serial.print(s);
Serial.println("% send to Thingspeak");
}
client.stop();

Serial.println("Waiting…");
// thingspeak needs minimum 15 sec delay between updates
delay(20000);
}



domingo, 19 de fevereiro de 2017

Iniciando com o NodeMCU ESP-12E



Agora pessoal, vamos experimentar a plaquinha NodeMCU ESP-12E, que no meu conceito me surpreendeu muito pelo seu tamanho e versatilidade. Permitindo conectar dispositivos eletrônicos com grande facilidade utilizados no dia-a-dia à internet. 
Poder fazer o acompanhamento remoto  de um dispositivo cada vez mais esta se tornando muito mais simplificado em função de inúmeras aplicações voltadas para esse fim.
Para saber mais sobre este conceito, internet das coisas, IoT.
No nosso caso, vamos utilizar um site específico o ThingSpeak, para capturar os dados dos nossos sensores e gerar gráficos analíticos. Isto pode ser bem útil se desejar fazer um estudo mais detalhado das informações.




Conhecendo a Placa



Fonte da imagem: https://forum.makehackvoid.com/uploads/default/178/df994028721a8bdf.png



Configuração da IDE do Arduino para Utilizar o 

NodeMCU


Uma das formas de conseguir programar o Node MCU é utilizando a IDE do Arduino. Para isso vamos serguir alguns passos:

1. Abra a sua IDE do Arduino, de preferência atualizada para a versão mais recente, e clique em Arquivo>Preferências:



 
2. Na tela que abrir cole esta url http://arduino.esp8266.com/stable/package_esp8266com_index.json no campo Urls Adicionais para Gerenciadores de Placas. Isto é necessário para que apareça o modulo da placa para instalação, em Gerenciador de Placas.

3. Agora acesse o Menu Ferramentas e clique em Gerenciador de Placas. Abrirá uma caixa com várias placas para instalar, role a barra até chegar ao final e selecione esp8266 by ESP8266 Community e clique no botão instalar. Na minha IDE como já instalei, aparece como instalado.



curso arduino essencial

 
4. Agora Acesse o Menu Ferramentas>Placas e escolha NodeMCU 0.9(ESP-12 Module)


Para iniciar nos testes com NodeMCU, vamos usar o DHT 11, já connhecido nosso dos outros posts, sensor de temperatura e umidade.
Lembrando que para utilizá-lo é importante ter a bilbioteca instalada em seu computador. Se ainda não tem baixe: libraries
Salve todas as pastas de libraries em seu computador em Arduino>libraries
Ela contém todas as biliotecas dos posts dos projetos do blog.

Montagem


  

Testando a Montagem – Monitor Serial

 



Configurando a Aplicação no ThingSpeak



Após realizada as confiurações na IDE do Arduino, realizados os testes no Monitor Serial, vamos configurar nossa aplicação no ThingSpeak.
Vamos acessar ThingSpeak





Para usar o ThingSpeak para exibir os dados, é necessário realizar um cadastro de forma gratuita no site para poder usufruir desta excelente ferramenta. Será enviado um e-mail do ThingSpeak pedindo para confirmar o seu cadastro. Faça a sua confirmação.
Agora faça o seu login:



  Criação do canal para a nossa aplicação

 


Para exibir as informações é necessário também criar um "Canal" . Nele será configurado os campos que desejar ser exibido.
Agora para finalizar, se desejar, poderá deixar o seu canal público, marcando a opção “Make Public”, só copiar a sua Url para mais tarde se desejar, compartilhar com outras pessoas.
Marque a opção “Show Status” e clique no botão “Save Channel”.




  
Após criado o seu canal, um passo importante é pegal o seu “apiKey”, clicando em API Keys.
Em “Write API Key”, copie a chave formada por números e caracteres:







Esta “chave ” é responsável por abrir o seu canal para realizar a comunicação com seu NodeMCU e “escrever” os dados no ThingSpeak. Cada canal que você criar irá gerar uma nova APIKey, e deverá ser setada no código fonte que for compilar em seu NodeMCU:

 
curso arduino essencial

Dados Exibidos no ThingSpeak










//www.arduinesp.com
//
// Plot DTH11 data on thingspeak.com using an ESP8266
// April 11 2015
// Author: Jeroen Beemster
// Website: www.arduinesp.com

#include <DHT.h>
#include <ESP8266WiFi.h>

// replace with your channel’s thingspeak API key,
String apiKey = "Copie o Write API Key";
const char* ssid = "Nome da sua rede";
const char* password = "senha";

const char* server = "api.thingspeak.com";
#define DHTPIN 2 // SO CONNECT THE DHT11/22 SENSOR TO PIN D4 OF THE NODEMCU

DHT dht(DHTPIN, DHT11,15); //CHANGE DHT11 TO DHT22 IF YOU ARE USING DHT22
WiFiClient client;

void setup() {
Serial.begin(115200);
delay(10);
dht.begin();

WiFi.begin(ssid, password);

Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

}

void loop() {

float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

if (client.connect(server,80)) { // "184.106.153.149" or api.thingspeak.com
String postStr = apiKey;
postStr +="&field1=";
postStr += String(t);
postStr +="&field2=";
postStr += String(h);
postStr += "\r\n\r\n";

client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);

Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" degrees Celcius Humidity: ");
Serial.print(h);
Serial.println("% send to Thingspeak");
}
client.stop();

Serial.println("Waiting…");
// thingspeak needs minimum 15 sec delay between updates
delay(20000);
}

Referências: