Manual
do
Maker
.
com
Se você ainda não utilizou esse sensor UV com Arduino ou com qualquer outra MCU, alegre-se e anime-se em adquirir um, porque é muito simples utilizá-lo e é mais um ítem barato pra sua coleção de sensores (se é que você também faz dessas maluquices de colecionar sensores). A primeira aplicação que pensei fará com que todas as mamães o desejem; um medidor de índice UV para saber a hora que a criança deve abrigar-se do sol. Mas você pode utilizá-lo também em projetos que envolvam estufas, display de índice UV para piscina, clubes, praças etc. Nada mal, hum? E isso pode ser feito com qualquer um dos nossos "brinquedos digitais", incluindo o ESP8266. Mas antes que isso possa virar um projeto, vamos testá-lo, certo?
Se quiser passar uns minutos lendo sobre radiação UV, recomendo esse link da wikipedia.
Como já citado, esse sensor é útil para detectar a radiação ultravioleta emitida pela luz do sol e pode ser utilizado em qualquer MCU que tenha conversos AD, inclusive o ESP8266 ou ESP32. Se desejar utilizar em boards como o Raspberry Pi, terá que adicionar um conversor AD, como o citado nesse outro artigo. Talvez eu até escreva outro(s) artigo(s) a respeito utilizando ESP*, Raspberry ou outra coisa, mas dessa vez vamos utilizar esse sensor UV com Arduino porque certamente é a MCU mais popular do momento.
Seu custo é ínfimo e você o encontra na UsinaInfo. Clique aqui para ir direto ao anúncio do dispositivo.
O sensor UV GUVA-S12SD trabalha com tensões entre 2.5V e 5V e faz leituras dentro de um comprimento de onde entre 240 e 370nm. Trabalha em temperaturas entre 20 e 80 graus, de modo que você conseguirá utilizá-lo inclusive no inverno da Paraíba, onde as 3 estações do ano são "quente", "fervendo" e "mormaço". Se quiser, pode tentar utilizá-lo também no Ceará, entre as estações "verão" e "inferno", mas não posso garantir seu funcionamento. Brincadeiras a parte, funciona em qualquer lugar.
Não tem mistério, é fácil e rápido. Apenas algumas informações serão necessárias, portanto vamos direto ao assunto. Primeiro, a leitura desse dispositivo é trivial, uma vez que ele tem uma saída analógica que deve ser ligada ao conversor AD da MCU que será utilizada para o projeto. Mas isso não basta, precisamos ter em mente quais serão os índices de radiação correspndentes à leitura. Para tal, vamos utilizar a seguinte tabela:
Índice UV | 0 | 1 | 2 | 3 | 4 | 5 |
Saída em mV | 50 | 227 | 318 | 408 | 503 | 606 |
valor analógico | 10 | 46 | 65 | 83 | 103 | 124 |
Índice UV | 6 | 7 | 8 | 9 | 10 | 11+ |
Saída em mV | 696 | 795 | 881 | 976 | 1079 | 1170+ |
Valor analógico | 142 | 162 | 180 | 200 | 221 | 240 |
O valor para o índice 0 pode ser menor que 50 e o ponto médio de cada um é ((B-A)/2)+A. Ou qualquer outra expressão que resulte no valor médio entre A e B, não "acorregeie" minha matemática nos comentários. Daí você pode achar que seu sensor não está funcionando aí em Maceió, mas se você colocar a mão sobre o sensor durante a medição às 7 da manhã deve ver uma variação entre 1079 e 1170 sim. Brincadeira de novo.
Agora que você já sabe que resultados obterá utilizando esse sensor UV com Arduino e como gerar os respectivos alarmes visuais ou sonoros, basta fazer o wiring. Mas que nem precisa dessa citação, afinal é óbvio. Coloque VCC em 5V do Arduino, GND ao GND do Arduino e SIGNAL ao A0 do Arduino. Por acaso estou com um problema em um dos pinos do meu expansor de I/O do Arduino Nano, por isso coloquei o sinal conectado ao pino A2, mas tanto faz, desde que esteja utilizando um pino do ADC.
O código está bastante simples, voltaremos a falar desse sensor com um projetinho bacana que tenho em mente, por enquanto vamos apenas fazer a medição para que você já possa ir brincando enquanto não sai o artigo do projeto.
float sensor = 0.0;
float raw = 0.0;
void setup() {
Serial.begin(9600);
// put your setup code here, to run once:
}
void loop() {
for (int i=0;i <5;i++){
raw += analogRead(A2);
}
Serial.print("Valor medio da leitura: ");
Serial.println(raw/5);
sensor = raw/1024.0*5.0;
sensor = sensor/5;
Serial.print("Nivel UV: ");
Serial.println(sensor);
raw = 0.0;
delay(2000);
}
Como você pode ver, não tem absolutamente nada de especial. Apenas atente-se em fazer a divisão pela tensão do seu nível lógico; se for 3V3, substitua "sensor = raw/1024.0*5.0" por "sensor = raw/1024.0*3.3". A medição Feita dentro de casa às 01:25 ficou no nível 0, pela razão explicitada à esquerda e direita dos dois pontos (":") e acho que me odiariam se colocasse um video de 3 segundos para mostrar a leitura sob a luz do sol, portanto, fica apenas o tutorial.
Espero que tenha gostado da introdução e que pegue logo o seu para fazermos o projeto tão logo eu o publique.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.