Arduino Lab 02 Sensor de luminosidade e display de LCD 16 2 Display de LCD 16 2 Neste Lab, iremos descrever como conectar o sensor BH1750FVI, já citado no Lab 01, ao Arduino Micro e à um display. A indicação das leituras de luminosidade será feita utilizando um display clássico de LCD de 16 colunas e 2 linhas que trabalha com o controlador Hitachi HD44780. Introdução Um medidor de luminosidade ou Luxímetro é muito utilizado para o controle do nível de iluminação em ambientes como escritórios, salas de aula, laboratórios, ambientes hospitalares e outros que necessitem de uma iluminação controlada. Estes níveis são regulamentados por normas específicas pois envolvem o conforto visual e o bem-estar do profissional que trabalha nestes locais. O Arduino Micro é a menor placa já construída de toda a família Arduino. Fácil de integrar em projetos de tamanho reduzido com um baixo custo e grande poder de processamento. A Micro é baseada no microcontrolador ATmega32U4 que possui um driver USB integrado ao chip, fazendo com que o microcontrolador seja reconhecido como um mouse ou teclado pelo computador.
O display de LCD com o controlador Hitachi HD44780 é comumente utilizado em aplicações embarcadas, pois a interface de controle e o protocolo de comunicação são padrões já difundidos no mercado em pequenas e grandes aplicações. Caracteres da tabela ASCII, Japonês Kana e outros tantos símbolos são suportados por este display. O sensor de luminosidade BH1750 já foi explicado no Lab 01 e não é novidade para os leitores. Os 3 componentes deste Lab. Iremos detalhar os principais dispositivos utilizados nesta aplicação, bem como a forma de conectá-los e programá-los, para que tenhamos um protótipo deste equipamento. Arduino Micro O Arduino Micro é uma pequena placa baseada no microcontrolador ATmega32U4 desenvolvida em conjunto com as indústrias Adafruit. Esta placa possui 20 pinos de entrada/saída, sendo que 7 podem ser utilizados como saída PWM e 12 como entrada analógica. Um oscilador a Crystal de 16 MHz marca a referência de clock do microcontrolador. Um botão de reset, conector micro USB e ICSP também fazem parte da placa.
Pinagem Arduino Micro A disposição dos seus pinos faz com que esta placa seja facilmente montada em uma protoboard. 2 gerações de Arduino Micro O Arduino Micro é similar ao Arduino Leonardo quanto ao
controlador USB já embutido no ATmega32U4, eliminando assim a necessidade de um processador secundário. Isto permite que o Micro seja reconhecido como um teclado ou mouse, ou mesmo como um virtual CDC / serial COM port, por um computador. O Micro possui ainda um polyfuse com possibilidade de reset para proteger as portas USB do computador de curto circuito e ou sobre corrente. Se mais de 500 ma forem aplicados a porta USB, o fusível irá automaticamente atuar bloqueando a conexão até que o curto ou sobrecarga seja removido. Especificações do Arduino micro: Microcontrolador ATmega32U4 Tensão de operação 5V Tensão de entrada (recomendado) 7-12V Tensão de entrada (limite) 6-20V Pinos Digital I/O 20 Canais PWM 7 Canais de entrada analógica 12 Corrente DC por pino I/O 20 ma Corrente DC por pino 3.3V 50 ma 32 KB (ATmega32U4) Memória Flash sendo 4 KB usados pelo bootloader SRAM 2.5 KB (ATmega32U4) EEPROM 1 KB (ATmega32U4) Velocidade de Clock 16 MHz Comprimento 48 mm Largura 18 mm Peso 13 g
Display de LCD O display de LCD utilizado neste projeto é o clássico e conhecido display de 16 colunas e 2 linhas (16 2), com o controlador Hitachi HD44780 ou compatível. Os pinos de interface com este display estão descritos na tabela abaixo. Tabela pinos LCD O controlador Hitachi HD44780 é limitado a indicação monocromática de textos no display. Muito utilizado em equipamentos como copiadoras, máquinas de fax, impressoras a laser, equipamentos de teste industriais, equipamentos de rede e muito mais. Estes displays de LCD são fabricados em diferentes configurações padrões. Os formatos mais comuns são 8 1, 16 2, 20 2 e 20 4. Antes que o display possa exibir caracteres em sua tela, é necessário um procedimento de inicialização. Para isto uma
rotina deve ser criada para, resumidamente, fazer as seguintes operações: 1. Esperar 15ms para que o display tenha sua energização garantida; 2. Enviar o código 0x30 e esperar pelo menos 5ms; 3. Repetir a operação anterior outras duas vezes; 4. Enviar um código indicando se a transmissão é de 8 ou 4 bits e o tipo de mapa de caracteres que será usado. Este mapa de caracteres é armazenado em sua memória local. Esperar por 40us. 5. Enviar o comando para limpar a tela e posicionar o cursor na primeira linha da primeira coluna e aguardar por 1,8ms; 6. Várias outras operações acontecem como o envio de comando de deslocamento automático do cursor. O display tem uma série de comandos de controle que podem ser consultados no datasheet do mesmo. Dois modos de transmissão de dados são aceitos por este display, sendo o de 4 e 8 bits de dados. O modo em 4 bits trabalha transmitindo os 4 bits de ordem mais alta (D4 a D7) e os 4 bits restantes são transmitidos logo em seguida (D0 a D3). Somente as linhas de dados de DB4 a DB7 (Pinos 11, 12, 13 e 14) são utilizados, ficando os pinos de DB0 a DB3 inoperantes.
No modo de transmissão em 8 bits, todas as linhas de dados (D0 a D7) são utilizadas e os 8 bits são transmitidos de uma só vez. Avaliando os dois modos de transmissão para o display, o segundo (8 bits) apresenta uma maior velocidade de envio das
informações ao display comparado ao modo em 4 bits, porém para as aplicações embarcadas onde o número de portas do microcontrolador ou processador é um fator crítico, o modo em 4 bits atende os requisitos de atualização de transmissão dos dados para o display. Uma descrição detalhada do funcionamento do display, bem como os sinais necessários para transmissão de dados ou leitura do display estão disponíveis no datasheet do fabricante. Esquema de Ligação O esquema de ligação entre o Arduino Micro, Display de LCD e o sensor de luminosidade está ilustrado abaixo. Uma atenção redobrada deve ser dada a alimentação do sensor de luminosidade em 3,3V e para o display de LCD em 5 V.
Esquema ligação completo A montagem em uma protoboard também é ilustrado na imagem subsequente. Imagem protoboard montada O algoritmo utilizado nesta aplicação está descrito abaixo, inclusive com comentários detalhados linha a linha de toda a lógica, assim o leitor poderá entender a função de cada linha deste código. [crayon-5898cba2e2243692138698/] A imagem abaixo ilustra a aplicação sendo alimentada por uma bateria de 6V (Limiar mínimo de alimentação por bateria para que o conversor de 3V3 possa funcionar corretamente). Seu consumo, medido com um multímetro da marca Fluke, configurado para medir corrente, indicou um valor de 41 ma.
Consumo de carga da bateria Conclusão Com este simples projeto realizamos a integração entre o sensor de luminosidade, o Arduino Micro e o display de LCD. Podemos, a partir deste momento, medir o nível de iluminação dos ambientes ao nosso redor, com uma precisão considerável, e sabermos se está ou não atingindo as normas para luminotécnica. Um cartão de memória também pode ser acrescentado nesta aplicação para armazenar os valores coletados pelo sensor, referentes a iluminação ambiente e, juntamente com um RTC (Relógio de Tempo Real), elaborar o perfil de luminosidade em uma dada localidade de acordo com a hora e data da análise.