Prototipagem rápida com Nanoshields

Nanoshields

Introdução

 

A eletrônica maker popularizou o uso de placas expansoras, geralmente conhecidas como shields. Na área de prototipação eletrônica, eles tornaram possível o desenvolvimento de projetos rápidos, por vezes utilizados até mesmo para uso em provas de conceitos. Houve então a necessidade de robustez em muitos projetos, e isso levou ao surgimento de shields mais adequados a ambientes mais exigentes.

 

Os Nanoshields são um sistema de eletrônica modular que podem ser utilizados para prototipagem rápida de um produto. Utilizando-os teremos como vantagem a eliminação de fios e a minimização de tarefas como soldas e fixação de componentes, além de tornarmos o projeto mais elegante, compacto e robusto.

 

Neste artigo iremos realizar uma simples demonstração do uso de um nanoshield com um relé integrado conectado à placa base Aster da Toradex, e chavearemos o relé através de uma GPIO do computador em módulo Colibri iMX6, também da Toradex.

 

Setup

 

A configuração de hardware utilizada neste artigo é o computador em módulo Colibri iMX6 DL IT + Aster Carrier Board junto com o Módulo Base Board + Módulo de Relay da Circuitar. A Aster foi escolhida por possuir headers pino-compatíveis com Arduino e, consequentemente, com os nanoshields. Veja nos GIFs abaixo a montagem do conjunto:

 

Nanoshields

Nanoshields

 

Nanoshields

 

Pode ser visto acima a facilidade em montar um setup básico para prototipagem. Agora iremos conectar uma lâmpada 110V no conector NA do relé.

 

Nanoshields

 

Software

 

Primeiro teremos que alterar a Device Tree para mudar a configuração de um pino do SODIMM.

 

Escolhendo o pino digital D5 para acionar o relé, temos com base no datasheet da Aster que este corresponde ao pino SODIMM 28 do nosso computador em módulo. Após verificar no datasheet do Colibri i.MX6 a qual GPIO este pino é associado, basta consultar este artigo para encontrar o número da GPIO no sistema de arquivos. No nosso caso é o número 9, guarde-o pois será utilizado futuramente para chavear a lâmpada.

 

Para iniciar as alterações, vamos clonar o repositório que contém o código fonte do Colibri i.MX6 do git da Toradex:

 

 

Primeiro devemos acessar o arquivo "imx6dl-pinfunc.h" em "linux-toradex/arch/arm/boot/dts/" e procurar por "GPIO1_IO09" para obter o nome do pino na Device Tree e qual PWM ele utiliza:

 

 

Sabendo que o PWM1 está sendo utilizando, vamos então desabilita-lo no arquivo "imx6dl-colibri-eval-v3.dts" no diretório "linux-toradex/arch/arm/boot/dts/" conforme abaixo:

 

 

Adicionaremos a função de GPIO, conforme encontrado acima, no nó "pinctrl_gpio_1: gpio-1" no arquivo "imx6qdl-colibri.dtsi" em "linux-toradex/arch/arm/boot/dts/" conforme abaixo:

 

 

Para compilar a nova Device Tree e o novo Kernel será necessário baixar uma toolchain, exportar algumas variáveis de ambiente e realizar os comandos make para compilar. Para mais informações desse processo, acessar este artigo. Após compilar, será gerado um arquivo chamado "uImage", referente ao kernel, e outro chamado "imx6dl-colibri-eval-v3.dtb", referente à Device Tree.

 

O próximo passo é gerar um cartão SD com uma imagem padrão da Toradex. Para isso basta baixar a imagem mais recente deste site referente ao seu módulo e atualizar o módulo utilizando o shellscript "update.sh" presente dentro das imagens. Para mais informações sobre esse passo, acessar o artigo referente ao módulo que está utilizando. No nosso caso, estaremos utilizando este, pois o mesmo fala sobre o Colibri iMX6.

 

Após o cartão SD ser gerado, basta substituir os arquivos compilados com os arquivos gerados. No meu caso, utilizei os seguintes comandos:

 

 

Iremos então inserir o cartão SD na placa base Aster, alimentá-la e pressionar qualquer tecla para parar o U-Boot, então executaremos os seguintes comandos para atualizar o módulo por completo:

 

 

Caso tenha dúvidas em relação ao passo acima, informações mais detalhadas encontram-se aqui.

 

Testando o funcionamento

 

Algo interessante de se saber é que no Linux basicamente tudo é arquivo. Para GPIO isso não é diferente, então para chavearmos o relé iremos basicamente escrever em alguns arquivos da seguinte forma.

 

Escreveremos o número da GPIO selecionada no arquivo "export" no diretório "/sys/class/gpio/":

 

 

Configuraremos agora a GPIO como uma saída escrevendo no arquivo "direction" no diretório "/sys/class/gpio/gpio9/":

 

 

Chavearemos o relé escrevendo os níveis lógicos 1 e 0 no arquivo "value" no diretório "/sys/class/gpio/gpio9/":

 

 

Abaixo um vídeo de demonstração do funcionamento:

 

 

Conclusão

 

Como pode ser visto, a facilidade na montagem do hardware realmente é bem alta, além de ganhar muito tempo não soldando e colocando cabos. O produto em si fica bem compacto e bonito. A Circuitar disponibiliza diversos outros módulos mais complexos e que facilitam muito a prototipagem. É interessante dizer que para quem tem interesse em aprender, pode utilizar os mesmos módulos com um Arduino por causa da pino compatibilidade.

 

A única parte que requer bastante conhecimento é em relação ao software em si. A configuração da Device Tree é um pouco complexa, dependendo dos periféricos utilizados isso vai requerer bibliotecas e drivers específicos. A maioria dos projetos de Linux embarcado requer este conhecimento, mas após um estudo sobre o assunto, as configurações acabam se tornando fáceis e o conhecimento adquirido será de ótima ajuda no mundo de sistemas embarcados.

 

Saiba mais

 

Editorial: Movimento Maker no Brasil, seu impacto para sistemas eletrônicos

Totenboard - Shield Open Hardware para o kit STM32F0Discovery

Raspberry Pi - Comunicação Serial (UART) entre a Raspberry Pi e Arduino em Python e Wiring

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Daniel Augusto Soré de Morais
Estudante de Engenharia Elétrica com ênfase em eletrônica na UNIP de Jundiaí e técnico mecatrônico pelo Divino Salvador. Estagiário em Linux embarcado na empresa Toradex Brasil.

2
Deixe um comentário

avatar
 
2 Comment threads
0 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Francis DavidGiovanni Bauermeister Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Francis David
Visitante
Francis David

Eu sou fã dos nanoshields, sempre que posso uso em meus projetos.

Giovanni Bauermeister
Membro

Muito legal o artigo Daniel! Bem prático. Interessante é que o desenvolvedor pode, posteriormente, se basear nas plataformas open hardware, no caso a Aster e o módulo relé, e desenvolver sua própria placa base customizada.