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é.

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:

git clone -b toradex_4.1-2.0.x-imx git://git.toradex.com/linux-toradex.git

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:

#define MX6QDL_PAD_GPIO_9__PWM1_OUT                 0x240 0x610 0x000 0x4 0x0
#define MX6QDL_PAD_GPIO_9__GPIO1_IO09               0x240 0x610 0x000 0x5 0x0

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:

&pwm1 {
       status = "disabled";
 };

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:

gpio {
                pinctrl_gpio_1: gpio-1 {
                        fsl,pins = <
                          MX6QDL_PAD_EIM_D27__GPIO3_IO27      PAD_CTRL_HYS_PU
                          MX6QDL_PAD_NANDF_D6__GPIO2_IO06     PAD_CTRL_HYS_PU
                          MX6QDL_PAD_NANDF_D3__GPIO2_IO03     PAD_CTRL_HYS_PU
                          MX6QDL_PAD_ENET_REF_CLK__GPIO1_IO23 PAD_CTRL_HYS_PU
                          MX6QDL_PAD_DI0_PIN4__GPIO4_IO20     PAD_CTRL_HYS_PU
                          MX6QDL_PAD_SD4_DAT3__GPIO2_IO11     PAD_CTRL_HYS_PU
                          MX6QDL_PAD_NANDF_D4__GPIO2_IO04     PAD_CTRL_HYS_PU
                          MX6QDL_PAD_SD4_DAT0__GPIO2_IO08     PAD_CTRL_HYS_PU
                          MX6QDL_PAD_GPIO_9__GPIO1_IO09      PAD_CTRL_HYS_PU
                        >;
                };

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:

sudo cp ~/linux-toradex/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dtb /media/daniel/DATA/colibri_imx6/imx6dl-colibri-eval-v3.dtb
sudo cp ~/linux-toradex/arch/arm/boot/uImage /media/daniel/DATA/colibri_imx6/uImage

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:

run setupdate
run update

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/”:

echo 9 > /sys/class/gpio/export

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

echo "out" > /sys/class/gpio/gpio9/direction

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

echo 1 > /sys/class/gpio/gpio9/value
echo 0 > /sys/class/gpio/gpio9/value

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

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Francis David
Francis David
22/01/2018 07:24

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

Giovanni Bauermeister
Membro
16/01/2018 11:50

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.

Home » Linux Embarcado » Prototipagem rápida com Nanoshields

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: