• Nenhum resultado encontrado

Configurações iniciais, WiFi e Bluetooth

N/A
N/A
Protected

Academic year: 2021

Share "Configurações iniciais, WiFi e Bluetooth"

Copied!
103
0
0

Texto

(1)

Intel Edison Lab 01 –

Configurações iniciais, WiFi

e Bluetooth

Intel Edison

Neste Lab iniciaremos a configuração do Intel Edison. Trataremos da instalação do Linux embarcado na versão 159.devkit da distribuição Yocto Linux, configuração de acesso a uma rede Wifi e, por fim, a configuração do módulo bluetooth utilizando o método Serial Port Profile (SPP).

Intel Edison

O Intel Edison pode ser considerado um computador de tamanho muito reduzido que contém periféricos úteis para comunicação com o mundo exterior em um único encapsulamento. Possui toda a robustez de um minicomputador com um processador Intel Atom SoC (System on the Chip) dual-core de 500MHz, Wifi 802.11 a/b/g/n, Bluetooth de baixo consumo (Low Energy) e 70 pinos de entrada e saída, distribuídos com múltiplas funções, sendo que somente 40 pinos estão disponíveis para o usuário modificar seus estados. Apresenta também uma antena otimizada para

(2)

comunicação Bluetooth e Wifi (Comunicação simultânea) além de um mini conector para uma antena externa.

Componentes Módulo

Toda a versatilidade desta plataforma permite que técnicos, engenheiros ou pessoas interessadas por tecnologia embarcada possam prototipar plataformas eletrônicas de média a alta complexidade em tempo e custo reduzido comparado a antigas tecnologias como o Z80 e o Intel 8051, por exemplo.

Outra grande vantagem é a variedade de linguagens e softwares que podem ser utilizados para projetar aplicações que envolvam acesso a periféricos e comunicação, já que podem ser feitos em linguagem C, C++, Python, dentre outras.

A compatibilidade com os módulos do Arduino permite que Shields, já desenvolvidos para aplicação com versões anteriores do Arduino, possam ser utilizados também com uma maior capacidade de processamento utilizando o Edison.

(3)

Arduino breakout board

Pesando apenas 8 gramas, baixo consumo de energia e um pouco maior do que uma moeda de R$ 1,00, a filosofia principal do Edison é para aplicações em IoT (Internet of Things) e vestíveis (Weareble Computing).

Comparação com uma moeda

O diagrama de blocos do Edison (sem nenhuma conexão externa) pode ser observado na figura abaixo. Muito cuidado deve ser tomado nas tensões de entrada e saída do módulo, já que o mesmo, sem qualquer conversor de nível de tensão externa, opera somente em 1,8 V.

(4)

Informações mais detalhadas sobre esta plataforma podem ser encontradas na página oficial da Intel.

Montagem

do

módulo

e

instalação dos softwares.

Preparação do Hardware

Inicialmente, vamos alimentar o Intel Edison. Se sua opção foi adquirir a placa de expansão compatível com Arduíno, instale o módulo no local correto e aperte levemente as duas mini porcas disponíveis para fixação. Alimente a placa utilizando uma fonte externa de tensão DC de 7 a 15V no conector J1.

Montagem do módulo

Se todo o setup estiver correto, aguarde até que o LED verde DS3 fique aceso, e assim a placa estará alimentada corretamente.

(5)

LED alimentação

Posicione a micro chave para o lado dos conectores mini USB e conecte um cabo USB, na porta próxima a micro chave, e ao computador.

Microchave e conector USB

Se você escolheu a Mini Breakout Board, apenas monte o módulo e conecte os dois cabos USB ao seu PC.

Mini Breakout board

Instalação dos Softwares

Quando o Edison foi lançado no mercado, a forma de se instalar a distribuição Linux era um pouco trabalhosa, onde tínhamos

(6)

que copiar o arquivo da distribuição no flash driver do Edison, abrir o terminal de comandos e executar o boot via terminal. Agora, uma ferramenta que facilita a instalação de todos os driver’s e IDE’s necessárias (Intel XDK, Eclipse, P h o n e F l a s h T o o l L i t e e a I D E d o A r d u i n o ) p a r a o desenvolvimento com o Edison, está disponível no site da

Intel. Escolha o sistema operacional e instale o executável.

Instalação das ferramentas

Inicie o executável, e escolha as IDE’s e softwares a serem instalados. Para instalação completa, o tempo médio é de 30 minutos dependendo do PC, conexão e sistema operacional.

(7)

Configurando o WiFi

Após a instalação de todas as ferramentas e do Linux utilizando o instalador da Intel, baixe o software Putty, de acordo com o sistema operacional, para que possamos estabelecer uma conexão via terminal com o Edison.

Instalador do Putty

Identifique qual é o número da porta serial a qual o módulo está instalado. Basta ir em Device -> Ports (COM &LPT) -> USB Serial Port (COM4).

Identificação da porta Serial

Inicie o Putty, escolha a opção “Serial”, configure o número da porta COM e a velocidade de comunicação em 115200 bps. Selecione a tecla “Open” e a janela do Putty se abrirá em modo

(8)

de linhas de comando.

Imagem configuração Putty

Selecione a tecla “Open” e a janela do Putty se abrirá. Aperte a tecla “Enter” do seu teclado para habilitar a conexão e inserir os comandos.

Tela inicial Putty

Digite “root” + ”Enter” e estaremos prontos para configurar o módulo.

Digite no prompt de comando “configure_edison –setup” + “Enter”.

(9)

senha para que o seu módulo possa ser acessado remotamente pela internet.

Imagem configurações iniciais

Dê um nome ao seu módulo. No meu caso, escolhi o chamar de MyEddy. Aperte “y” + “Enter” e novamente para a configuração do Wifi.

Configurando o nome do módulo

Uma pesquisa das redes Wifi próximas ao seu módulo será feita e basta inserir o número da rede relacionado ao SSID e a senha.

(10)

Identificação das redes Wifi próximas

Um número de IP será atribuído ao módulo. Anote este número pois iremos acessar o Edison utilizando o modo SSH na porta 22, via internet, utilizando o Putty. Feche o terminal e abra-o nabra-ovamente e cabra-onfigure as abra-opções cabra-omabra-o abaixabra-o.

Acessando o Edison via SSH

Login utilizando o usuário padrão “root” e a senha configurada anteriormente. Desta forma, estaremos aptos a acessar o módulo Edison remotamente.

(11)

Tela de comandos no modo SSH

Configurando o Bluetooth no

Edison

Bluetooth é uma tecnologia utilizada para troca de dados em curto alcance, utilizando rádio de alta frequência (Aproximadamente 2.4 GHz) e que vem sendo utilizado por aproximadamente 20 anos. Muitas versões e especificações foram criadas ao longo do tempo para padronizar a comunicação.

Esta tecnologia é largamente utilizada nos dias atuais. É encontrada em Smartphone, tabletes, carros, acessórios, computadores e agora no Intel Edison!

O Edison inicia seu funcionamento com o módulo Bluetooth desligado para economizar energia. Toda vez que for necessário iniciar o uso deste módulo, devemos digitar os comandos necessários para habilitá-lo novamente. Se desejamos que o Bluetooth inicie automaticamente quando o módulo for religado, uma boa opção é adicionar um script de comando na área de startup.

O primeiro passo para habilitar o Bluetooth é utilizar o comando rfkill.

# rfkill unblock bluetooth -> Habilita o módulo Bluetooth # rfkill list -> Comando para conferir se foi habilitado

(12)

C o m a n d o s i n i c i a i s p a r a configurar o Bluetooth

O comando bluetoothctl abre o controle das funções do módulo. O comando “show” mostra as atribuições do controlador Bluetooth.

(13)

Se observarmos na seção dos UUID’s, não iremos encontrar o UUID responsável pelo Serial Port. Para resolver este problema (Um problema muito grave e que não permite que o Edison se conecte a um telefone), devemos instalar uma biblioteca chamada SPP-loopback.py no diretório /root/bluetooth. Utilizaremos a forma mais fácil de copiar este arquivo no diretório interno ao Intel Edison. O software WinSCP utiliza o protocolo SCP (Secure Copy) para transferir este arquivo para ambientes Linux.

Execute a instalação, abra o aplicativo, configure da mesma forma como está na janela abaixo e aceite o aviso sobre a conexão.

Tela de login do software WinSCP

Mensagem de notificação do WinSCP

Acesse o diretório /root, crie uma nova pasta denominada “bluetooth”, copie e cole o arquivo “SPP-loopback.py” dentro

(14)

da pasta Bluetooth.

Tela de trabalho do WinSCP

Após copiar, feche o WinSCP, volte ao Putty e aplique o comando “reboot”. O Edison irá reiniciar e a conexão utilizando o Putty deverá ser refeita novamente. Quando reabrir, aplique os seguintes comandos listados abaixo.

Comandos para instalar a biblioteca SPP-loopback.py

Após o comando “show”, as atribuições do módulo Bluetooth serão indicadas na tela e agora iremos observar a UUID para o Serial port.

(15)

Tela do prompt de comando a p ó s i n s t a l a ç ã o d a biblioteca

Instalação do aplicativo e

interação com o Edison via

Bluetooth

O aplicativo mais indicado e, consequentemente o menos complicado, para testar se toda a configuração feita no módulo do bluetooth foi bem executada, para dispositivos Android, se chama “Bluetooth Spp pro”.

imagem aplicativo Bluetooth SPP

Para parear e conectar seu celular utilizando o Android ao Edison, basta seguir os comandos listados abaixo.

(16)

Comandos para habilitar o Bluetooth Abra o aplicativo e selecione o Edison.

Imagem aplicativo Conecte ao dispositivo.

(17)

Imagem conesão com o Edison

Abra o terminal no comand line mode e envie uma string para o Edison. No meu caso, enviei a string test.

Imagem do Comand line no aplicativo

Abaixo, temos um apanhado total dos comandos enviados ao Edison.

(18)
(19)

Continuação lista de comandos

Conclusão

Neste Lab executamos os procedimentos iniciais para trabalharmos com o Intel Edison. Este módulo tem uma grande capacidade de trabalho com sistemas embarcados, IoT e Werables. Apesar de todos os problemas relacionados à arquivos que deveriam ser nativos da distribuição e aos sistemas que ainda não funcionam como deveriam, o time de desenvolvedores da Intel trabalha nas resoluções de acordo com a demanda dos usuários. Nós, pretendemos elaborar aplicações interessantes usando essa ferramenta.

DSP Lab 01 – Configuração do

Software CCS e primeiro teste

com LED’s

(20)

Neste Lab trataremos dos passos iniciais no desenvolvimento com a ferramenta TMS320C5515 eZDSPTM

USB Stick fabricado pela empresa Spectrum Digital. O DSP (Digital Signal Processor) embarcado nesta aplicação é o TMS320C5515 da Texas Instruments e foi projetado para ser de baixo custo e consumo. Apresentaremos também quatro exemplos envolvendo os LED’s presentes na placa de desenvolvimento.

Introdução

A ferramenta de desenvolvimento TMS320C5515 eZDSPTM USB Stick foi concebida pele TI para ser de baixo consumo e custo, pequenas dimensões e ser alimentada pela USB de um PC, ou seja, nenhuma fonte de alimentação externa é necessária para desenvolver com os periféricos embutidos na placa.

Visão geral – Periféricos placa

Uma grande variedade de aplicações pode ser testada nesta p l a c a , i n c l u i n d o g r a v a ç ã o e t r a t a m e n t o d e á u d i o , desenvolvimento de equipamentos médicos portáteis e outros produtos de consumo eletroeletrônicos, industriais e segurança.

(21)

estudar várias aplicações. Primeiramente, precisamos nos familiarizar com o CCS e as bibliotecas disponíveis.

Configuração do CCS

O CCS (Code Composer Studio) é o ambiente de desenvolvimento para sistemas embarcados de propriedade da TI (Texas

Instruments). Sua instalação já foi descrita na série de Lab’s

sobre o microcontrolador MSP430 e inclusive, descrevemos a instalação do suporte a família de DSP’s C55xx.

Configuração do Hardware

A ferramenta que estamos trabalhando precisa ser configurada no CCS para que a IDE possa saber qual compilador utilizar. Após abrir a IDE, siga os passos descritos abaixo para esta configuração.

Vá em View -> Target configurations -> click com o botão direito em User Defined -> New Target Configuration -> e s p e c i f i q u e o n o m e e o l o c a l p a r a s a l v a r e s t a configuração -> Finish.

Target configuration window

Após clicar em “Finish”, uma nova janela abrirá para inserirmos qual a ferramenta e o emulador à trabalhar.

(22)

Em Connection selecione “Texas Instruments XDS100v2 USB

Debug Probe” e em “Board Device” selecione “USBSTK5515”.

Click em “Save”.

Conexão e tipo de placa

A conexão com a placa pode ser testada no botão “Test

Connection”. Se toda a configuração foi bem sucedida, uma tela

extra abrirá e alguns scripts de teste de comunicação rodarão em sua placa.

Janela de teste

Baixe e descompacte a biblioteca de arquivos da placa, disponibilizada pela Spetrum Digital, em um diretório específico para os projetos que iremos elaborar neste link.

(23)

Vá em File -> Import -> Existing CCS Eclipse Project -> aponte para o local especificado onde a biblioteca baixada anteriormente se encontra.

Janela para importar os projetos

Vá em View -> Project Explorer. Uma lista dos exemplos contidos na pasta é destacada a esquerda da IDE. Click on ‘uled’ project.

(24)

explore

Teste da placa

Vários são os periféricos disponíveis nesta placa, como pode ser observado na figura abaixo. Neste Lab iremos trabalhar somente com os Color’s LED.

Descrição periféricos da placa

Um simples teste para verificarmos se todas as configurações iniciais foram bem executadas será descrito nesta seção. Os códigos utilizados são os mesmos inclusos no pacote fornecido pela Spectrum Digital e descritos anteriormente.

(25)

Imagem LED’s a serem testados

Teste: Deslocamento a Direita dos LED’s

Abra o arquivo “main.c” na pasta ‘uled’ -> prssione o botao

Debug na barra de ferramentas (ou pressione F11) -> Aguarde a

transferência do firmware para a placa e click no batão Resume . Os 4 LEDs da placa devem piscar da esquerda para a direita, um após o outro, durante 6 ciclos.

O código para este teste se encontra abaixo: [crayon-587b726716e8b106490038/]

Teste: Deslocamento a Esquerda dos LED’s

Abra o arquivo “uled_test.c” na pasta do projeto ‘uled’ -> modifique o laço loop como no código abaixo:

[crayon-587b726716eaa111239598/]

Teste: Contador de 4 bits

Novamente, abra o arquivo “uled_test.c” na pasta do projeto ‘uled’ -> copie e cole o código abaixo e você terá um contador de 4 bits rodando em sua placa de DSP.

(26)

Conclusão

Neste Lab obtivemos sucesso no download da biblioteca e na configuração do CCS para ser compatível com a plataforma eZDSP. Também tivemos êxito no primeiro teste com os LEDs da placa.

Esta é uma poderosa plataforma de desenvolvimento para aplicações em um nível um pouco mais avançado de conhecimento em programação e hardware. Excelentes projetos serão desenvolvidos ao longo desta série de Lab’s com o intuito de despertar o interesse do leitor com as práticas relacionadas ao Processamento Digital de Sinais.

Arduino Lab 03 – Display LCD

– TFT 1,44” e RTC MCP79410

Dispositivos a serem utilizados neste Lab

(27)

TFT de 1,44” e do relógio de tempo real (RTC) MCP 79410. Um código será implementado para integração entre estes dois componentes e o Arduíno Nano.

Introdução

O relógio de tempo real MCP 79410 foi desenvolvido pela Microchip para aplicações de baixo consumo. Faz uso de compensação digital de tempo para atingir uma melhor precisão no relógio e no calendário interno. Possui também um pino que pode ser programado como saída de referência de clock ou para dois modos de alarme diferentes entre si. Uma pequena memória não volátil para armazenar dados e uma memória SRAM, alimentada pela bateria de backup, também fazem parte deste CI.

Neste Lab iremos utilizar um pequeno módulo contendo o RTC, cristal de 32768 Hz, resistores de Pull-up e o soquete de bateria.

Módulo RTC MCP 79410

O display de LCD – TFT utilizado neste Lab faz uso do controlador ILI 9163C, da empresa Ilitek, e possui uma resolução de 128×128 pixels coloridos (RGB). Seu tamanho reduzido, medindo apenas 1,44” de tela, o faz ideal para aplicações embarcadas.

(28)

Display LCD -TFT ILI9163C

Apenas 4 fios são necessários para estabelecer uma comunicação com este display utilizando o protocolo SPI. Possui também um próprio frame buffer interno para endereçamento dos pixels. Esta característica faz com que este possa ser usado com qualquer tipo de microcontrolador, até mesmo aqueles com pequena memória.

O Arduino Nano já é conhecido desta série de Lab’s e já foi citado no Arduino Lab 01. Lembrando aos leitores que esta placa é totalmente compatível com o Arduino UNO em relação ao número dos pinos e tamanho das memórias.

(29)

Display TFT – LCD

Display de LCD

A constituição de uma tela de LCD simples é caracterizada pela disposição dos compostos de cristal líquido sobre 2 lâminas translúcidas e polarizadas, denominadas substratos. No entanto, essas lâminas formam um eixo perpendicular, como se fossem uma representação de uma matriz. Desse modo, ocorrem polarizações distintas entre ambas.

Construção Display de LCD

A função das células que compõem os compostos químicos presentes no cristal líquido é a de atuar como guias da luz captada pelo receptor do display. Assim, esta é conduzida até o campo visual, que, assim, reproduzirá a imagem conforme ela foi emitida pelo raio de luz. Esse deslocamento só é possível devido à formação de campos magnéticos nas lâminas, que por sua vez geram impulsos elétricos, os quais irão “transportar” os pontos luminosos.

Aprofundando um pouco mais, uma tensão é aplicada a camada de cristal líquido provocando um “giro” do cristal. Entre a

(30)

camada polarizada e o cristal líquido, que foi girada, a intensidade da luz de fundo é reduzida em cada célula RGB e, dependendo da tensão aplicada, as cores surgirão como resultado desta polarização, aparecendo uma combinação entre as cores primárias (vermelho (Red), verde (Greem) e azul (Blue)) para formar as imagens.

Display de TFT – LCD

A tecnologia Thin Film Transistor Liquid Crystal Display (TFT – LCD) é a tecnologia de telas mais comum usada em celulares, monitores e outros dispositivos eletrônicos. É uma variação do Display de Cristal Líquido (LCD) que utiliza a tecnologia Transistor de Película Fina (TFT) para controlar cada ponto na tela, conhecido como pixel, e não linhas e colunas como era feito nas telas de raios catódicos, oferecendo assim melhor qualidade de imagem e maiores resoluções quando comparado com a geração de telas LCD.

Construção LCD-TFT

Estes displays necessitam de uma luz de fundo, chamado de backlight, sempre acesa. A matriz TFT controla a passagem das cores primárias da visão – vermelho, verde e azul –

(31)

através de filtros dessas cores. Cada pixel tem 3 células, uma para cada cor, que são transparentes em seu estado natural, porém ficam opacas ao receber uma carga elétrica, o que impede a passagem de luz. Pelo fato do preto nessa tela não ser tão intenso, pois é gerado apenas pela opacidade das células, o contraste fica debilitado, pois as cores escuras não ficam “vivas”.

Dados Técnicos do Display

I m a g e m d o d i s p l a y e m funcionamento

O d i s p l a y u t i l i z a d o n e s t e L a b , c o m o j á m e n c i o n a d o anteriormente, é controlado pelo driver ILI9163C. Este driver oferece diversas formas de comunicação com periféricos como microprocessadores e microcontroladores. Algumas das características principais deste display podem ser conferidas abaixo:

Interface:

8-bits, 9-bits, 16-bits, 18-bits com MCU série 8080

(32)

8-bits, 9-bits, 16-bits, 18-bits para MCU série 6800

6-bits, 16-bits, 18-bits RGB interface 3-pin/4-pin Interface SPI

Display mode:

Full color mode (Standby desligado): 262K-cores Reduced color mode (Standby ligado): 8-colors (3-bits MSB (3-bits mode)

Arquitetura de baixo consumo:

VDDI = 1.65V ~ 3.3 V (interface I/O) VCI = 2.5V ~ 4.0 V (analog)

(33)

Diagrama blocos do controlador display

Utilizamos neste Lab a interface SPI de 4 vias para comunicação entre o controlador e o Microcontrolador. Os pinos do display utilizados foram:

CS (chip enable)

D/C (data/ command select) SCL (serial clock)

(34)

SDA (serial data input/output).

O modo de escrita nos registradores do display, que é o modo mais utilizado geralmente nas aplicações, significa que o microcontrolador deseja escrever comandos e dados no driver do LCD. No nosso caso, para a comunicação serial a 4 pinos, os pacotes de dados contêm os bytes de transmissão e os bits de controle que são transmitidos pela linha D/C. Se o pino D/C e s t á e m n í v e l b a i x o “ L o w ” o b y t e t r a n s m i t i d o p e l o microcontrolador é interpretado como sendo comandos dados ao driver do LCD. Já se o pino está em nível alto “High”, o byte transmitido é armazenado na memória de dados RAM ou no registrador de comandos como parâmetro.

Comunicação SPI em4 pinos

Qualquer instrução pode ser enviada em qualquer ordem para o driver. O bit mais significativo (MSB) deve ser transmitido primeiro. A interface serial é iniciada quando o pino CS está em nível alto. Neste estado, deve-se haver pulsos na linha de clock SCL ou então a linha SDA não terá nenhum efeito. A borda de descida no pino CS habilita a interface serial e indica o inicia da transmissão dos dados.

Quando CS está em nível alto, o clock na linha SCL é ignorado. Na borda de descida de CS, SCL pode está em nível alto ou baixo por ser uma linha de clock. As amostras na linha SDA são feitas na borda de subida da linha CS. O pino D/C indica quando o byte é comando (Low) ou parâmetro ou dados da RAM (High).

(35)

Um diagrama simplificado de toda a dinâmica de escrita de parâmetros no drive do display está ilustrado logo abaixo. Para aqueles que desejam um aprofundamento na dinâmica de comunicação com este display, o datasheet é uma ótima fonte de informação.

Diagrama comunicação SPI

Relógio de tempo real – RTC

Um relógio de tempo real é um dispositivo eletrônico que armazena os dados de hora e data em uma memória interna. A retenção destes dados geralmente é feita utilizando uma bateria de backup de lithium de 3V. Este CI tem a capacidade de continuar o clock de contagem mesmo após o desligamento da alimentação (Bateria mantida).

Neste Lab estamos utilizando o MCP 79410 da Microchip. O protocolo I2C é utilizado para a comunicação entre o microcontrolador e o RTC. As características mais importantes deste RTC estão descritas abaixo:

Gerenciamento automático de dias, meses e anos inclusive bissextos.

(36)

Trabalha com formato em 12 AM/PM ou 24 horas.

Gerenciamento de dias da semana (Domingo, segunda, …) Memória SRAM de 64 bytes que pode ser alimentada pela bateria de backup.

Dois alarmes programáveis.

Uma saída de dreno aberto para receber sinais de clock (32768 Hz, 8192 Hz, 4096 Hz ou 1 Hz) ou mesmo para a saída do alarme programável.

Memória EEPROM de 1 Kbit (8 bytes paginados).

Bus I2C para comunicação com o “mundo” em 100 ou 400 KHz Pode ser alimentado de 1,8 a 5 volts.

Pode ser calibrado para atingir precisão de 1 ppm

Muda automaticamente entre a alimentação pela bateria de backup e alimentação pelo VCC.

Temperatura de trabalho entre -45 a 80 °C.

A disposição dos pinos deste CI está ilustrada na figura abaixo.

Pinagem do RTC

(37)

dispositivo está ilustrado na figura abaixo.

Diagrama dos registradores do RTC

Na linha de dados do bus I2C, O dispositivo vai ser endereçado utilizando os seguintes endereços listados:

Tabela de endereços do RTC

Características da transmissão

A comunicação entre o RTC e um dispositivo controlador obedece uma sequência de operação ilustrada abaixo:

(38)

Sequência de operação protocolo I2C

As letras destacadas na figura acima contêm os seguintes parâmetros:

(A) Bus Not Busy – Linha de dados não ocupada: Ambos as linhas de dados e clock permanecem em nível alto.

(B) Start Data Transfer – Uma transição de nível alto para baixo da linha SDA enquanto a linha de clock (SCL) está em nível alto determina uma condição de start. Todos os comandos devem ser precedidos de uma condição de start.

(C) Stop Data Transfer – Uma transição de nível baixo para alto da linha SDA enquanto o clock está em nível alto, determina uma condição de Stop. Todas as operações devem terminar com a condição de Stop.

(D) Data Valid – O estado da linha de dados representa um dado valido quando, após uma condição de start, a linha de dados é estável para a duração de um período de nível alto do sinal de clock. O dado nesta linha deve ser trocado durante o período de nível baixo do sinal de clock. Há somente um bit de dado por pulso de clock.

Acknowledge ACK – Reconhecimento: Cada dispositivo,

quando endereçado, é obrigado a gerar um sinal de ACK após a recepção de cada byte.

Mapa de memoria e registradores

O MCP79410 possui quatro diferentes blocos de memoria: Os registradores do RTCC, Memória SRAM, EEPROM de 1 Kbit com

(39)

p r o t e ç ã o v i a s o f t w a r e , e u m a E E P R O M p r o t e g i d a . O s registradores do RTCC e da memória SRAM compartilham o mesmo espaço, acessado atraves do byte de controle 1101111X’. A regiao de memória EEPROM está em um espaço de endereço diferente e pode ser acessada utilizando o byte de controle ‘1010111X’.

O RTC não irá reconhecer os locais onde desejamos escrever ou ler dados se o endereço especificado estiver fora do range. Uma figura com o mapa de memória esta ilustrada abaixo.

Mapa de memória de RTC

Os registradores do RTCC estão contidos no endereço 0x00 até 0x1F. Temos também 64 bytes de memória SRAM para acesso do usuário, localizada no endereço 0x20 até 0x5F. A SRAM é um bloco separado dos dos registradores do RTCC. Todos estes dados são retidos enquanto a bateria de backup estiver os alimentando.

(40)

Uma tabela mostrando detalhadamente os registradores do RTCC é mostrado logo abaixo. Em nossa aplicação, os principais registradores a serem acessados estão localizados entre os endereços 0x00 e 0x06.

Mapa de memórias detalhado RTC

Serão descritos detalhadamente, no código feito para o Arduino, o acesso para leitura e escrita deste registradores

Teste e montagem

Para testar esta pequena aplicação, utilizaremos a biblioteca elaborada pela Limor Fried e fornecida pela Adafruit Industries para estabelecer a comunicação com o controlador do display. Para a comunicação com o RTC, um pequeno e simples código está embutido na aplicação principal, não sendo necessária nenhuma biblioteca extra.

(41)

“Adafruit-GFX-Library-master.zip” e “TFT_ILI9163C-master.rar” na pasta libraries da IDE do arduino de sua preferência, abra novamente a IDE a carregue o exemplo “Nano_Display_rtc_mcp79410” para testar a aplicação.

O esquema de ligação entre estes três dispositivos se encontra ilustrado abaixo.

Esquema de ligação do projeto

O algoritmo para teste do display e do RTC será apresentado abaixo e possui uma explicação detalhada o para melhor entendimento do leitor

[crayon-587b7267180c9495743020/]

Uma imagem da montagem final e teste na protoboard esta é ilustrado abaixo.

(42)

Montagem final em uma protoboard

Conclusão

Este pequeno e interessante projeto pode servir como base para grandes aplicações envolvendo displays de LCD-TFT e RTC, onde datalogs podem ser montados, ou até mesmo um aparelho portátil em que o utilizador consiga acompanhar na tela os dados de medições de sensores relacionados a data e hora exatas do dia. As aplicações são infinitas, depende apenas da imaginação do utilizador.

(43)

MSP 430 Lab 04 – Fontes de

clock e configuração das

entradas e saídas digitais

Teste com o sociloscópio

Neste Lab iremos descrever os passos necessários para inicialização de duas fontes de clock da CPU e da configuração das GPIO. O termo GPIO refere-se a General Purpuse Imput and

Output (Entradas e Saídas de Propósito Geral) e abrange todos

os pinos do microcontrolador que apresentam múltiplas funções. Tópicos como o processo de reset, opções de fonte de clock e manuseio do WDT (Watch Dog Timer) serão descritos neste lab. Ao final, seremos capazes de entender o algoritmo que faz uso dos sistemas de clock e acesso aos pinos de entrada e saídas deste microcontrolador.

Introdução

O microcontrolador MSP430G2553 apresenta um modo ativo de trabalho (Active Mode) e cinco modos de operação em baixo

(44)

consumo, selecionáveis via software.

Um evento de interrupção pode “acordar” o microcontrolador que esteja em qualquer modo de operação em baixo consumo, processar a requisição que gerou a interrupção e retornar novamente para o modo de economia de energia programado anteriormente. Este comportamento é ideal para aplicações onde o consumo de energia é um ponto crítico no desenvolvimento da aplicação.

Pinagem microcontrolador

Os seguintes seis modos de operação podem ser configurados via software no microcontrolador, são eles:

Modo Ativo (Active mode – AM)

Todas as fontes de clock são ativados.

Modo de baixo consumo 0 (Low-power mode 0 – LPM0) CPU é desligada.

ACLK e SMCLK permanecem ativos, MCLK é desligado. Modo de baixo consumo 1 (Low-power mode 1 – LPM1)

CPU é desligada.

ACLK e SMCLK permanecem active, MCLK é desligado. Os osciladores de Clock Digitais (Digitally

Controlled Oscilator – DCO’s) são desabilitados se

o DCO não for utilizado no Modo Ativo.

(45)

CPU e desligada.

MCLK e SMCLK são desligados. DCO’s permanecem ativos. ACLK permanece ativo.

Modo de baixo consumo 3 (Low-power mode 3 – LPM3) CPU e desligada.

MCLK e SMCLK são desligados. DCO’s são desligados.

ACLK permanece ativo.

Modo de baixo consumo 4 (Low-power mode 4 – LPM4) CPU é desligada.

ACLK é desligado.

MCLK e SMCLK são desligados. DCO’s são desligados.

Oscilador a cristal tem seu funcionamento interrompido.

Inicialização e GPIO

Durante o processo de inicialização do microcontrolador várias ações ocorrem internamente no microcontrolador com o intuito de garantir o funcionamento correto do dispositivo. A seguir, descrevemos o estado do sistema durante a inicialização:

Na alimentação (Power Up – PUC) o circuito que verifica o nível de tensão de alimentação mantém o dispositivo em reset até que o VCC esteja em um nível acima do ponto de histerese.

O pino 16 (RST/NMI) é configurado automaticamente como reset.

Os clocks do sistema são configurados.

M ó d u l o s d o s p e r i f é r i c o s e r e g i s t r a d o r e s s ã o configurados.

O registrador de status (SR) é resetado.

O contador de programa (Program Counter – PC) é carregado com o endereço de memória que está contido no vetor de reset (0FFFEh). Se o valor contido nesta

(46)

posição de memória for 0FFFFh, o dispositivo vai ser desabilitado para um consumo mínimo de energia.

A b a i x o , i l u s t r a m o s o M a p a d e M e m ó r i a r e f e r e n t e a o microcontrolador MSP430G2553.

M a p a d e m e m o r i a MSP430

Após o reset ou início do sistema, o software deve:

Iniciar o ponteiro da pilha, tipicamente no topo da área de memória RAM (Random Acces Memory).

Reconfigurar os clocks (se necessário).

Iniciar o watchdog timer de acordo com a aplicação, usualmente desligado no modo de debugging.

Reconfigurar os periféricos de clock.

Sistemas de Clock’s e Osciladores

Um dos primeiros sistemas a ser programado e entendido pelo usuário é o clock do dispositivo.

O sistema de clock é baseado no modo básico que inclui suporte para o cristal externo de 32768 Hz, um oscilador interno de

(47)

baixo consumo e baixa frequência (Low Power and Low Frequency

– LF) e um oscilador interno digital (Digitally Controlled Oscillator – DCO).

O sistema básico de clock foi desenvolvido para garantir as necessidades de baixo custo e baixo consumo. O DCO interno garante um rápido retorno dos modos de baixo consumo, com estabilidade de operação, em menos de 1 µs.

O módulo básico de clock fornece os seguintes sinais:

Clock Auxiliar (Auxiliary clock – ACLK), alimentado pelo cristal externo de 32768 Hz ou pelo oscilador interno de baixa frequência (LF).

Clock principal (Main clock – MCLK) que é o sistema de clock utilizado pela CPU.

Sub-Main clock (SMCLK), sendo o subsistema utilizado pelos periféricos.

As fontes de clock ilustradas na figura abaixo, apresentam as seguintes características:

Very Low Power/Low Frequency Oscillator (VLO)

4 –20kHz (típico em 12kHz) 500nA no modo standby

5%/°C e 4%/Mudança de tensão

Crystal oscillator (LFXT1)

Capacitores interno programáveis.

Apresenta segurança contra falhas – OSC_Fault. Mínimo pulso na filtragem.

Digitally Controlled Oscillator (DCO)

0-to-16MHz (Calibração de fábrica geralmente em 1 MHz).

+3% de tolerância.

Calibração de fábrica é armazenado na memória

(48)

Fontes de clock família MSP430

Existe uma relação direta entre a tensão de alimentação do microcontrolador e a frequência de clock na qual queremos que o sistema opere. No gráfico abaixo, essa relação e ilustrada.

Gráfico relação entre frequência de trabalho e alimentação

Observamos que para uma alimentação em 1,8 V o sistema pode operar somente em 6 MHz. Já para alimentações entre 3,3 e 3,6V a frequência de operação pode chegar à até 16 MHz. Esta relação tem como principal objetivo atingir o mínimo de consumo de energia relacionando a frequência e tensão de alimentação.

(49)

Funcionamento do sistema de segurança (Failsafe)

do WatchDog Timer – WDT

Algumas ações são tomadas automaticamente se a fonte de clock escolhida para a aplicação falhar e o módulo de segurança do W D T é r e s p o n s á v e l p o r e s t a s a ç õ e s . U m d i a g r a m a d e funcionamento do Failsafe é ilustrado logo abaixo.

Se o ACLK ou SMCLK falhar, a fonte de clock passará a ser o MCLK (WDT + failsafe feature).

Se o MCLK for alimentado pelo cristal e o cristal falhar, MCLK será o DCO (XTAL failsafe feature).

Essas mudanças automáticas da fonte de clock são impostas para garantir que o sistema não desenvolva ações inesperadas por falhas no sincronismo entre os periféricos e processamento.

F o n t e s d e c l o c k e WDTC

Existe uma outra restrição quanto a fonte de clock do WDT. Não podemos desabilitar a fonte ativa de clock que selecionamos para o WDT. Devemos ter em mente que alguns dos modos de baixo consumo desabilitam o DCO, desligam o SMCLK e podem também desabilitar o VLO.

(50)

Limitação na desativação de uma fonte de clock

Se o WDT for alimentado por uma das fontes descritas anteriormente, não podemos desligar essa fonte de clock no modo de baixo consumo. Um modo de proteção contra essa ação é implementado no compilador do CCS.

Teste das fontes de clock

Para testar as diferentes formas de se usar os módulos de clock deste microcontrolador, crie um novo projeto seguindo os mesmos procedimentos descritos nos Lab 02 e 03.

(51)

CCS novo projeto

No arquivo main.c, copie e cole, inicialmente, o código disponível no quadro abaixo.

[crayon-587b726718973985460376/]

Operando a CPU utilizando o VLO

Vamos iniciar os testes neste Lab operando a CPU na fonte de clock VLO. Este é o clock de menor frequência e trabalha aproximadamente em 12 KHz então, iremos observar sua ação piscando o led vermelho a uma frequência de aproximadamente uma vez a cada 3 segundos. Não vamos utilizar nenhum

(52)

periférico de clock neste agora, apesar do cristal já ter sido montado na launchPad anteriormente.

Informações mais detalhadas sobre os registradores que serão abordados logo em seguida, poderão ser obtidas consultando-se o User Guide do MSP430 neste link.

1 – Com o propósito de conferirmos a execução do código (debug), será melhor parar a execução do watchdog timer. Desta forma, não precisamos nos preocupar com suas ações (Seção 10.3.1 do User Guide). Dentro do arquivo main.c adicione o seguinte código:

WDTCTL = WDTPW + WDTHOLD;

O WDTCTL é o registrador do watchdog timer. Esta instrução configura a password (WDTPW) e o bit responsável por parar o timer (WDTHOLD).

2 – Agora, precisamos configurar o LED que estará conectado a linha de entrada e saída – GPIO. O LED verde está localizado no Port 1 Bit 6 e precisamos de configurá-lo como saída. O LED acenderá quando a saída é configurada com “1”. Vamos limpar este registrador para manter o LED desligado (Seção 8.3 do

User Guide). Adicione as duas linhas seguintes de código no main.c.

P1DIR = 0x40;

P1OUT = 0;

3 – Para configurar o sistema de clock a ser utilizado neste experimento, adicione a linha de código abaixo no main.c.

BCSCTL3 |= LFXT1S_2;

O BCSCTL3 (Seção 5.3.4 do User Guide) é um dos registradores d o s i s t e m a b á s i c o d e c l o c k d e s t a f a m í l i a d e microcontroladores. Na seção 5.3, página 282 do Guia do Usuário, informa que o estado de reset deste registrador é

(53)

005h. Se conferirmos os campos deste registrador obtemos que estas configurações são para o cristal de 32768 Hz conectado ao LFXT1 com capacitores de 6pF e falha do oscilador configurados.

O operador de estado lógico OR utilizado acima, juntamente com o registrador LFXT1S_2 (Valor 020h – Página 285 do U.G) resulta em um valor 025h. Este valor configura os bits 4 e 5 para 10b, habilitando o modo VLO clock.

4 – O sistema de clock irá forçar o MCLK a usar o DCO como fonte na presença de uma falha no clock (Seção 5.2.7), precisamos então apagar este flag de falha. Inclua as linhas abaixo no programa.

IFG1 &= ~OFIFG;

O registrador IFG1 é o Interrupt Flag Register 1. O bit configurado no campo do registrador é o Oscilator Fault

Interrupt Flag – OFIFG. A lógica AND aplicada entre IFG1 e NOT

OFIFG (Valor 2) irá zerar o bit 1 do registrador IFG1 (Seção 5.3.6 – pag. 285 do U.G)

5 – Precisamos aguardar aproximadamente 50us para que o sistema de falha de clock (Clock Fault System) possa reagir. Operando com o VLO em 12KHz, parando o DCO, iremos garantir este tempo de 50us. Adicione as linhas abaixo:

_bis_SR_register(SCG1 + SCG0);

SR é o Registrador de Status (Status Register) e todas as informações referentes as definições do SCG0 (System clock

generator 0) e SCG1 (System clock generator 1) estão

disponíveis na seção 4.3.3 – pág. 121 do U.G.

A operação intrínseca _bis refere-se a chamada de um registro em assembler dentro de um programa escrito em linguagem C.

6 – Temos também um divisor no clock MCLK 3. Vamos dividir por 8 utilizando o seguinte código.

(54)

BCSCTL2 |= SELM_3 + DIVM_3;

Os valores dos registradores utilizados na operação OR acima estão descritos na seção 5.3.3 pág. 284 do U.G.

Um pequeno código será implementado para que o LED verde possa piscar.

[crayon-587b72671898d101445489/]

A instrução P1OUT já foi explicada anteriormente. A função __delay é intrínseca ao compilador e serve para gerar atrasos na execução do programa. O único parâmetro requerido é o número de ciclos de clock que a CPU ficará aguardando. Esta não é uma forma correta de gerar atrasos e isso será explicado posteriormente.

Salve o código apresentado abaixo, resultado de nosso trabalho até este momento.

[crayon-587b726718999067081916/]

Clique no botão “Debug” e carregue o código na LaunchPad como descrito no Lab02 e 03. Se tudo proceder da forma esperada, o LED verde deverá piscar.

(55)

Sinal do pino conectado ao LED verde

Operando a CPU utilizando o Cristal

7 – A frequência do cristal é 32768 Hz, quase três vezes mais rápida que o VLO. Se executarmos o código anterior utilizando o cristal, o LED verde deveria piscar uma vez a cada segundo. O valor de 32768 Hz é padrão pois representa o número 215 tornando fácil o uso de um simples contador digital para uma taxa de uma vez por segundo, perfeito para relógios e outros tipos de temporizadores.

8 – Esta parte do experimento utiliza o código anterior como ponto de partida. Os dois LEDs serão utilizados, logo devemos configura-los como saída utilizando as seguintes linhas de código:

(56)

Alterar: P1DIR = 0x40; Para: P1DIR = 0x41;

Fazendo o LED vermelho (P1.0) iniciar ligado: Alterar: P1OUT = 0;

Para: P1OUT = 0x01;

9 – Precisamos de selecionar o cristal externo como uma entrada de baixa frequência.

Mude: BCSCTL3 |= LFXT1S_2;

Para: BCSCTL3 |= LFXT1S_0 + XCAP_3;

O parâmetro XCAP_3 seleciona o capacitor de carga de 12pF. Uma capacitância alta é requerida para cristais de baixa frequência.

10 – No código anterior nós limpamos o flag do registrador OSCFault, agora queremos ter certeza de que este flag esteja limpo e que o cristal funcione corretamente. Isto irá exigir um loop com um teste.

[crayon-587b7267189a9393766205/]

A condição para o loop while(IFG1 & OFIFG) testa o OFIG no registrador IFG1. Se este flag de falha for limpo, a execução irá sair do loop. Precisamos aguardar 50us após limpar o flag a t é q u e p o d e m o s t e s t a - l o n o v a m e n t e . A f u n ç ã o

_delay_cycles(100000); é mais longa do que 50us. Precisamos

que este tempo seja longo para que podemos ver o LED vermelho acender no começo do código. Caso contrário ele irá piscar tão rápido que não conseguiremos observar.

11 – Finalmente, precisamos adicionar uma linha no código para desligar o LED, indicando que o algoritmo passou pelo teste de falha. Adicione a nova linha após o while loop:

(57)

P1OUT = 0;

Após todas as mudanças, o seu código deverá se parecer com o mostrado no quadro abaixo.

[crayon-587b7267189b4913555435/]

Novamente, aperte o botão “Debug” e aguarde ate que a tela de Debug aparece, em seguida, pressione a opção “Resume” ou aperte F8. (Procedimento já detalhado em Lab’s anteriores). Se tudo der certo, o LED vermelho deverá piscar rapidamente (Tempo gasto no delay e aguardando para o cristal iniciar) e logo em seguida o LED verde deverá acender uma vez a cada segundo.

Na figura abaixo observamos o monitoramento do sinal no pino conectado ao LED verde (sinal na cor azul), ligando e desligando por um tempo muito curto e no canal 2 (sinal na cor amarela) temos o funcionamento do LED vermelho que ativa somente antes do cristal iniciar.

(58)

Sinal nos pinos do Led verde e vermelho

Conclusão

Neste Lab aprendemos a dinâmica de configuração dos registradores necessários para o funcionamento desta família de microcontroladores e de duas fontes principais de clock. Uma primeira visão detalhada sobre as configurações deste microcontrolador pode assustar o usuário, porém elas são necessárias para um entendimento correto do que exatamente estamos programando, já que comportamentos inesperados de funcionamento podem ser evidenciados em uma aplicação industrial ,por exemplo, e isto é um fator mais do que crítico para qualquer projeto.

(59)

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

(60)

d r i v e r U S B i n t e g r a d o a o c h i p , f a z e n d o c o m q u e 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 A r d u i n o M i c r o é u m a p e q u e n a p l a c a b a s e a d a n o 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

(61)

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.

(62)

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

Memória Flash

32 KB (ATmega32U4) 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

(63)

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.

(64)

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:

Esperar 15ms para que o display tenha sua energização 1.

garantida;

Enviar o código 0x30 e esperar pelo menos 5ms; 2.

Repetir a operação anterior outras duas vezes; 3.

Enviar um código indicando se a transmissão é de 8 ou 4 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.

Enviar o comando para limpar a tela e posicionar o 5.

cursor na primeira linha da primeira coluna e aguardar por 1,8ms;

Várias outras operações acontecem como o envio de 6.

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.

(65)

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

(66)

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.

(67)

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-587b726719321424749756/]

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.

(68)

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 s a b e r m o s s e e s t á o u n ã o a t i n g i n d o a s n o r m a s p a r a

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.

(69)

Arduino Lab 01 – Sensor de

luminosidade BH1750FVI

Sensor de luminosidade BH1750FVI

Neste Lab iremos descrever a implementação de um código para utilizar o módulo digital de medição da intensidade de iluminação BH1750FVI em conjunto com o Arduino Nano V3.0. Várias aplicações podem ser feitas utilizando este sensor, desde regulação de intensidade de luz em telas de LCD e até mesmo em automação residencial.

(70)

Arduino e sensor de luminosidade

Introdução

O sensor digital de intensidade de luz BH1750FVI converte um dado do mundo real, para um valor na forma digital em 0’s e 1’s. Isto torna mais fantástica a percepção do quanto a eletrônica está envolvida na vida cotidiana da humanidade, ou seja, a construção de sensores que transformam as percepções do mundo real em um mundo digital.

O BH1750FVI utiliza o protocolo serial de comunicação I2C como interface de comunicação com o microcontrolador, que neste caso é o Arduino Nano. Este CI (Circuito Integrado) é idel para obter a intensidade de luz para ajustar a iluminação de fundo em displays de LCD, teclados e até mesmo em automação na iluminação de residências e galpões industriais por exemplo. O datasheet deste sensor pode ser baixado neste link.

(71)

Sensor de luminosidade

Algumas das vantagens e características deste sensor estão destacadas abaixo.

Converter a intensidade de Iluminação em níveis digitais.

Faixa de medição de 1 a 65535 Lx com alta resolução. Baixo consumo de energia.

Filtro para rejeição de ruído em 50 e 60 Hz.

Comunicação com microcontrolador utilizando o protocolo I2C.

Três modos de medição.

ILuminância, Lumen e Lux

Iluminância é uma medida da quantidade de fluxo luminoso que é espalhada sobre uma determinada área. Pode-se pensar no fluxo luminoso (medido em lúmens) como uma medida da “quantidade” total de luz visível presente, e a iluminância como uma medida da intensidade de iluminação numa superfície

Lumen: A unidade da quantidade de luz que flui de uma fonte em qualquer instante (potência luminosa, ou fluxo luminoso) é chamada de lumen.

(72)

Neste sensor, a leitura será feita em Lux, que é igual a um

lúmen (Lm) por metro quadrado:

Lumen e Lux

Dados técnicos

No datasheet, observamos os valores de alimentação máximos e típicos deste CI. Preferencialmente, o valor adotado deve ser de no máximo 3.3V e nunca em 5V em nível TTL.

(73)

Dados técnicos tabela 2

O protocolo I2C utilizado para a comunicação com o sensor trabalha com um clock na linha SCL de aproximadamente 400KHz.

Dados técnicos tabela 3

Modos de medição: Este CI apresenta três modos de medição e estes, juntamente com a resolução, estão descritos na tabela abaixo.

Dados técnicos tabela 4

O datasheet recomenda utilizar o modo H-Resolution Mode pois o tempo de medição é grande o suficiente para eliminar ruídos em 50 e 60 Hz. Uma outra aplicação seria a detecção se um ambiente está escuro ou não, já que sua resolução é de 1 lx. Os opecodes utilizados para comunicação com o sensor estão

(74)

listados na tabela abaixo.

Dados técnicos tabela 5

O terminal ADDR tem a funcionalidade de alterar o endereço do sensor na comunicação I2C. Se este pino estiver conectado ao terra, o endereço do sensor na rede I2C será 0x23, já se conectado ao VCC o endereço será 0x5C.

(75)

Terminal de endereçamento na rede I2C

Teste do sensor

Para testar este sensor, primeiramente faça as conexões como no esquema abaixo. Não se esqueça que a alimentação do módulo do sensor é em 3,3V.

(76)

Imagem ligacao protoboard fritzem

Lligação sensor e Arduino

O algoritmo para teste do sensor é apresentado abaixo e possui uma explicação linha a linha para melhor entendimento do leitor.

[crayon-587b726719a20991490230/]

O resultado das leituras feitas utilizando o monitor serial, e variando a intensidade de luz em cima do sensor estão

(77)

mostrados na figura abaixo.

Imagem aquisição serial

A IDE utilizada para este teste foi a 1.6.7 e além do monitor serial já clássico, possui também um Plotter gráfico que ilustra as variações de uma variável no domínio do tempo. Este gráfico é mostrado na figura abaixo.

(78)

Conclusão

Este simples projeto nos introduziu sobre o uso do módulo para medição de intensidade de luz BH1750FVI. Grande versatilidade de uso e funcionalidades são também características deste produto. Um teste de consumo de energia foi feito utilizando um multímetro para medir a corrente que uma bateria comum de celular, fornecendo 3,7V, fornecia ao conjunto Arduino + BH1750 e apontou um consumo de 34mA, porém o modo de consumo do Arduino não foi otimizado quanto a clock e periféricos ligados desnecessariamente, logo o consumo deste conjunto pode ser ainda menor, ideal para aplicações embarcadas que fazem uso de baterias.

Protoboard montada

(79)

teste do cristal

LaunchPad Texas Instruments

Neste Lab explicaremos como montar o cristal de referência (32.768 KHz) que por padrão não é soldado na placa LaunchPad G2. A Texas envia o kit com o cristal desmontado para que possamos usar os dois pinos do microcontrolador (XIN XOUT) como entrada ou saída digital em nossas aplicações. Lembrando que o cristal pode ser montado na normalmente e caso seja necessário utilizar os dois pinos como I/O, o mesmo pode ser retirado da placa e montado em uma protoboard para aproveitar as funcionalidades destes pinos em outras aplicações.

Introdução

O kit de desenvolvimento para sistemas embarcados MSP430G2 LaunchPad inclui um oscilador a cristal opcional de 32.768 KHz que pode ser soldado na placa de acordo com a necessidade. A construção da placa permite que as linhas de sinal XIN e XOUT possam ser usadas como entradas ou saídas digitais.

(80)

reconhecidas pelo microcontrolador como entradas digitais de frequência.

Tenha em mente que o procedimento de solda do cristal é muito delicado por ser uma superfície de dimensões muito limitadas, apresentando as pads (trilhas) de 0,5 mm.

Local do cristal

O cristal não é pre-soldado na placa pela TI pois a LaunchPad possui um número reduzido de pinos de entrada e saída. Isto permite ao usuário mais flexibilidade nas aplicações que exigem muitas I/O’s.

Montando o cristal na LaunchPad

Os conectores do oscilador oferecem a orientação necessária para o procedimento de solda. Eles estão em uma posição que somente as pontas irão encaixar no local exato de montagem.

(81)

Pinos do cristal

Deposite um pouco de solda sobre as pads e o apoio do cristal.

Local para solda

Com uma pinça ou um alicate pequeno, segure o cristal no local da solda e aqueça a parte de trás afim de derreter a solda depositada na apoio.

(82)

Posicionamento com um alicate comun

Desta forma, o componente estará firme e fixo. Agora basta apenas soldar as pads na parte da frente do cristal, com cuidado para não unir e curto circuitar as mesmas. Dessa forma, o cristal estará pronto para ser usado nas aplicações que exigem uma referência de clock.

(83)

Teste

Crie um novo projeto, seguindo os mesmos procedimentos descritos no Lab 02. Não se esqueça de selecionar a opção

Empty Project (with main.c). Click em Finish quando terminar

as configurações.

File -> New -> CCS Project

(84)

No arquivo c, copie e cole o código disponível logo abaixo.

[crayon-587b72671a52c913990772/]

Descrição do funcionamento do algoritmo: O sistema funciona normalmente no modo LPM3 (Low Power Mode 3) com o WDT (Watch

Dog Timer) alimentado com um clock de 32.768 KHz e com ACLK (Auxiliar clock) com 1×4 segundos de interrupção. A saída P1.0

muda seu estado a cada segudo dentro da interrupção pelo WDT. Se uma falha no LFXT1 (Low Frequency Crystal Oscilato), NMI

(Oscillator Fault Flash memory access violation) é forçado a

sair do modo LPM3. O pino P1.0, ligado ao LED vermelho, muda seu estado rapidamente pelo software pois uma falha no oscilador estará presente.

Compile o arquivo e grave na Launchpad. Você deverá ver o led piscando com um período de dois segundos se o procedimento de solda do cristal foi completado corretamente, caso contrário, o LED piscará com uma frequência de 1Hz, logo a solda deve ser conferida novamente.

(85)

Conclusão

Neste terceiro Lab explicamos o procedimento para montagem (solda) e teste do funcionamento do cristal que acompanha o kit de desenvolvimento da Texas Instruments. Como citado anteriormente, este cristal não é montado na placa pelo simples fato de oferecer ao usuário a opção de duas I/O’s a mais para a aplicação em que o mesmo está trabalhando. Sua função é importante em casos de interrupção por WDT, como observado no exemplo acima, e para sincronia da CPU utilizando um oscilador mais preciso.

MSP430 Lab 02 – Criar e

Compilar um projeto

Software CCS

Neste post iremos criar um novo projeto utilizando a IDE CCS da Texas Instruments, compilar o código feito em linguagem C e fazer o Debug da aplicação utilizando a mesma ferramenta.

(86)

Introdução

A sigla IDE significa Ambiente de Desenvolvimento Integrado (Integrated Development Environment) e contém todas as ferramentas necessárias para desenvolver projetos embarcados (Compilador, Simulador, Editor, Debug, OS e outros). A interface de programação do CCS suporta dois modos de operação sendo eles o simples, com funcionalidades básicas de edição/compilação e menus com poucos itens, e o modo avançado onde à opção de integrar aplicativos à IDE além de menus e janelas mais versáteis e complexas. O usuário pode alterar entre os dois modos a qualquer momento acessando o menu de opções da IDE.

A área de trabalho do CCS (Workspace) segue o mesmo padrão de interfaces já conhecidas como MPLAB-X da Microchip, o Code

Warrior da Freescale dentre outras, onde a barra lateral à

esquerda contém a “arvore” dos projetos. Na figura abaixo, observamos a hierarquia de organização dos projetos alocados na área de trabalho do CCS.

Hierarquia CCS

Iniciando o CCS e o Workspace

A criação de um novo projeto utilizando o CCS é feita de forma fácil e intuitiva, utilizando o Project Wizard, configurando

(87)

os dados do projeto em apenas uma janela.

Inicie o Code Composer Studio e abra o Workspace.

Iniciando o CCS

Quando o CCS carregar, uma janela de diálogo irá abrir indicando a localização da pasta workspace. Encontre o local onde o seu projeto deverá ser salvo. Se deseja que esta seja a pasta permanente, marque a opção “Use this as the default …”. Clique em OK.

Esta pasta contém todas as configurações padrões do CCS incluindo as do projeto e janelas quando a IDE é fechado, logo as mesmas configurações vão estar disponíveis quando o software for aberto novamente.

(88)

Configurações de licença

Na primeira vez que o CCS é aberto, a janela “License Setup

W i z a r d ” d e v e a p a r e c e . C a s o v o c ê j á i n i c i o u o C C S

anteriormente e fez a opção errada, basta ir no menu Help ->

Code Composer Studio Licensing Information e clicar na aba Upgrade e no botão Launch License Setup… -> selecione o botão CODE SIZE LIMITED e clique Finish, como pode ser observado

na figura acima.

Se você planeja trabalhar somente com a linha LaunchPad, a limitação de código para a versão Free do CCS (16 KB) não será um problema pois estes microcontroladores suportam exatamente 16 KB de memória Flash.

Referências

Documentos relacionados

Bases de dados Entrez contêm DNA e proteínas seqüências derivadas do GenBank e outras fontes, mapas genomicos, população, conjunto de sequencias filogenéticas e

QUANDO TIVER BANHEIRA LIGADA À CAIXA SIFONADA É CONVENIENTE ADOTAR A SAÍDA DA CAIXA SIFONADA COM DIÂMTRO DE 75 mm, PARA EVITAR O TRANSBORDAMENTO DA ESPUMA FORMADA DENTRO DA

225 - meio ambiente ecologicamente equilibrado, neste incluso o do Trabalho (VIII, Art 200)  colaborar na proteção do meio ambiente, nele compreendido o do

No entanto, maiores lucros com publicidade e um crescimento no uso da plataforma em smartphones e tablets não serão suficientes para o mercado se a maior rede social do mundo

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

O enfermeiro, como integrante da equipe multidisciplinar em saúde, possui respaldo ético legal e técnico cientifico para atuar junto ao paciente portador de feridas, da avaliação