Linkit Smart 7688 Duo – Uma placa 2 em 1

Linkit Smart 7688 Duo – Uma placa 2 em 1

Se você já desenvolveu projetos com Arduino, e vez ou outra provavelmente se deparou com a necessidade de usar um computador em conjunto para ter um servidor Web, um sistema de automação conectado à internet, dentre outros… Então, sabe como é integrar as duas coisas (Se você ainda não passou por isso, com certeza irá passar um dia!). Para isso, existe a Linkit Smart 7688 Duo, desenvolvida em conjunto com a MediaTek e a SeeedStudio.

Em alguns casos, usuários costumam juntar uma Raspberry Pi, que é um minicomputador, a um Arduino. E se você pudesse ter as duas coisas em uma só plaquinha? Ou seja, se você pudesse ter um minicomputador e um microcontrolador?

Linkit Smart 7688 Duo

Minimalista, mas ao mesmo tempo elegante, essa plaquinha reúne o poder de 2 em 1.

Linkit Smart - Medida

Qual a real necessidade disso? Talvez você, leitor, esteja se perguntando. Então vamos lá: Muitos single board computers (computadores em placa única – minicomputadores), tais como a Raspberry Pi, são muito bons em conectar com serviços web, enviar dados pela internet, armazenar um mini banco de dados e até mesmo tratar recursos de processamento de imagens e visão computacional. Porém… Falham nos quesitos de controle em tempo real e na parte de aquisição e controle de sinais.

Pense comigo nesses seguintes cenários:

  • Você precisa ficar coletando dados analógicos de um sensor e transmitir esses dados para um banco de dados na nuvem.
  • Você precisa controlar vários servomotores com PWM, ou até mesmo controlar a intensidade de um mecanismo de controle via PWM (pode ser um LED, uma Ponte-H, etc), e um requisito do projeto é fazer esse controle pela Internet.
  • Você está desenvolvendo um projeto de pesquisa de um robô móvel com transmissão de vídeo de uma webcam pela internet, e o sistema de controle do robô não deve travar. Já pensou o que aconteceria se o robô travasse?

Robot Crash

Nos cenários 1 e 2, certamente você usaria um Arduino para colher os dados, e usaria ou um Shield para comunicar com a Rede WiFi/Ethernet, ou conectaria o Arduino ao seu Computador/Raspberry Pi via Serial, transmitindo os dados para a Raspberry Pi, que por sua vez os transmitiria para a internet. No cenário 3, mais complicado, dois elementos devem operar em conjunto - Um sistema com Linux para transmitir vídeo  e um sistema baixo nível (Arduino, por exemplo), para controle dos elementos do robô. Se o Linux travar, o controle do robô continuará ativo pelo Arduino.

A beleza está na assimetria – Alto + Baixo nível

Pra atingir esses e outros casos de uso, temos a ascensão dos chamados sistemas híbridos. Um sistema híbrido é composto por uma parte chamada de Alto nível e outra chamada de Baixo nível. A parte de Alto nível pode executar um sistema operacional e tarefas/aplicações não-críticas, ou, em outras palavras, que podem sofrer um atraso em sua execução. Já o sistema de Baixo nível é para execução de tarefas críticas, que não devem sofrer um atraso em sua execução.

Para entender melhor, pense em seu computador. Seu Windows trava de vez em quando? Quando você vai ver um vídeo no YouTube, tem horas que o vídeo é carregado rapidamente, e tem horas que há um atraso no carregamento do vídeo, certo? Ok. Seu computador é um sistema não-crítico. Você fica nervoso, mas não é prejudicado.

Agora, pense no seu carro. Você está a 110 km/h em uma rodovia, e enquanto muda de música se depara com um animal na pista, e pelo seu rápido reflexo você imediatamente pisa no pedal do freio do veículo. Já pensou se o sistema de frenagem do veículo tivesse que esperar a mudança de música para acionar os freios, que estrago seria?

Pois então… Para abordagens e necessidades diferentes, temos sistemas diferentes. Um computador pode travar, esperar o término da execução de um processo, etc, mas um sistema de controle deve permanecer operacional.

Sistemas híbridos trabalham neste cenário por meio de um processador alocado à tarefas de alto nível, e um microcontrolador/processador alocado à tarefas de baixo nível. Eles são capazes de se comunicar, mas trabalham independentemente um do do outro. Ou seja, é uma dupla. E para poderem trabalhar juntos, precisam se comunicar!

Sistemas Hibridos

E o que é a Linkit Smart 7688 Duo?

Depois de toda essa introdução, vamos ver que a Linkit Smart 7688 Duo é uma placa de desenvolvimento composta da junção entre um SoC MT7688 e um ATmega32u4 (o mesmo presente no Arduino Leonardo). Para quem já conhece, deve ter percebido uma semelhança com o Arduino Yún, e não é para menos: A Linkit Smart 7688 Duo é compatível com Sketchs Arduino tradicionais e com Sketchs Arduino Yún.

Então… Por quê usar a Linkit Smart 7688 Duo e não um Arduino Yún?

7688-VS-Yun

O primeiro motivo é o preço. A Linkit Smart 7688 Duo é bem mais acessível. E um outro motivo, muito levado em conta é o… tamanho! A Linkit Smart 7688 Duo pode ser encaixada em uma protoboard, e seu diminuto tamanho é um facilitador para projetos de automação, robótica, Internet das Coisas. A maior diferença entre a Linkit Smart 7688 Duo e o Arduino Yún é que o Yún possui conector de rede Ethernet já exposto, e a Linkit precisa de adaptador.

O MT7688 é um processador MIPS com WiFi integrado, contando também com Ethernet, USB, interface para cartão microSD, dentre outros recursos. Em suma, é capaz de rodar um sistema operacional Linux, e a MediaTek adaptou uma versão do OpenWRT para a Linkit Smart 7688 Duo. Já o ATmega32u4 é um microcontrolador da Atmel com USB nativo, operando a 16 MHz.

Características gerais da Linkit Smart 7688 Duo:

  • Processador MT7688 MIPS 580 MHz
  • Conectividade Wi-Fi 802.11 b/g/n (2.4G)
  • Sinasi GPIO, I2C, SPI, UART, PWM e Ethernet (Ethernet precisa de adaptador!)
  • 128MB de memória RAM DDR2
  • Ÿ32MB de memória Flash
  • Interface USB Host (permite conectar Webcam, mouse, teclado, pendrive, etc).
  • Slot para cartão microSD
  • ŸArduino – ATmega32U4

Detalhes sobre a placa

A placa é bem, bem pequena, medindo 60.8 x 26 mm, possui quase que  as mesmas dimensões que uma NodeMCU. Os projetistas usaram muito bem ambas as faces da placa, pois há elementos importantes ao funcionamento tanto na face superior como na face inferior.

Na face superior da placa, então os conectores para USB Host e a conexão para USB do ATmega32u4. A placa pode ser alimentada por ambas as USBs. Além dos conectores USBs, há 3 botões: um para reset do processador MT7688 (que, no caso, reinicia o sistema operacional Linux), outro para reset das configurações de WiFi, e outro para reset do ATmega32u4 (Arduino). Um detalhe que salta os olhos é o bonito envólucro metálico da Linkit – É a proteção do MT7688! E logo ao lado do invólucro metálico está uma antena cerâmica e um conector i-PEX para antena externa, ambos para WiFi.

Na parte de baixo da placa está o conector para cartão microSD, o chip do ATmega32u4, e a memória Flash de 32MB. A Linkit Smart 7688 Duo também expõe conexão JTAG, que permite um acesso mais baixo nível para programação e execução de programas na placa.

Linkit Smart 7688 Duo - Face inferior

O fato de a Linkit Smart 7688 Duo rodar Linux significa que é possível escrever programas em C/C++, Node.js e Python para ela, pois são programas que serão executados pelo Sistema Operacional. Bastando você usar as ferramentas apropriadas para acesso e desenvolvimento, o céu e o limite. Para isso, é preciso ter um bom domínio de Linux!

O segredo está na ponte

Como foi dito anteriormente na parte de sistemas assimétricos, ambos os sistemas precisam ter uma forma de comunicação. No caso da Linkit Smart 7688 Duo, há um comunicação Serial dedicada entre o ATmega32u4 e o MT7688.

O ATmega32u4 (Arduino) tem USB nativa e a capacidade de controlar sinais GPIO, PWM, I2C, SPI, dentre outros. Um programa gravado nele irá executar o controle desses sinais e interfaces de maneira dedicada. O MediaTek MT7688 executa um sistema Linux OpenWRT, que por sua vez faz interface com cartão microSD, USB Host, WiFi e até mesmo Ethernet. Dessa forma, o processador com Linux é capaz de executar programas que comuniquem com a rede/internet, que façam a leitura/escrita de arquivos no cartão microSD, e até mesmo a interface com elementos USB tais como câmeras, pendrives, leitores de código de barras, dentre outros.

E entre os dois, está um canal Serial, Rx/Tx, por onde a informação flui entre os elementos. Por esse canal, o processador pode mandar o ATmega acionar um relé, ligar um LED, fazer um robô andar para frente, por exemplo. E por esse mesmo canal, o ATmega pode informar o sistema Linux da temperatura e umidade de um ambiente, pode informar a leitura de um sinal analógico, pode informar o status de operação do sistema, dentre outros. Em suma, é transmissão de um lado, leitura e interpretação do outro, e vice-versa. Assim como você faria usando seu computador e um Arduino, com a diferença de estar usando tudo em uma diminuta placa ;-)

Ponte Linkit Smart

Esse canal serial também é chamado de Ponte (Bridge). Pode ser usado a seu gosto, transmitindo dados como você bem quiser entre um e outro. Ou… Você pode usar de uma infraestrutura desenvolvida pelo Arduino que é o Yún Bridge. Essa estrutura nada mais é que uma API que permite, do lado do ATmega32u4 (Arduino) ser capaz de executar programas, comandos de console Linux, manipulação de arquivos, requisições HTTP, dentre outros, que acontecem do lado do processador MT7688 com Linux OpenWRT. Ficou curioso? Leia mais sobre o Yún Bridge neste link.

E como se não bastasse essa praticidade toda entre o Arduino e o sistema Linux presentes na própria placa, é possível desenvolver Sketchs Arduino no seu computador e, caso a Linkit Smart 7688 Duo esteja conectada na mesma rede intranet que o seu computador, pelo Arduino IDE você será capaz de fazer o upload de código para o ATmega32u4, usando a rede. O sistema Linux irá receber o arquivo compilado pelo Arduino IDE em formato *.hex, e o OpenWRT da Linkit já possui o utilitário avrdude, que é capaz de pegar esse arquivo *.hex e realizar a gravação de programa no ATmega32u4. Ou seja, bastando que a Linkit Smart 7688 Duo esteja ligada e conectada na sua rede WiFi, todo o desenvolvimento pode ser remoto.

É bem interessante observar a operação assimétrica da Linkit Smart 7688 Duo. Tomando por base o exemplo mais simples de operação, o famoso “pisca LED”, se você programar o ATmega para piscar o LED D13, mesmo com o sistema Linux sendo reiniciado, o LED continua piscando, a operação continua, mesmo com o processador sendo reiniciado! Esse é um sistema assimétrico ;-)

Assim sendo, para esclarecer:

  • Ambos, ATmega32u4 e MT7688, são programados independentemente.
  • Ou seja, você pode plugar a Linkit Smart 7688 Duo pela USB do ATmega32u4 ao PC, e programar o ATmega pelo Arduino IDE, asim como você faz com Arduinos tradicionais! (Bastando, é claro, instalar um setup de placa adicional ao Arduino IDE).
  • E para a processadora com Linux MT7688, você cria programas em Python, C/C++, Node.js, dentre outros, que podem fazer interface com a porta Serial interna de comunicação com o ATmega32u4 e assim desempenhar tarefas de automação e controle, e comunicação com a rede/internet!

Pinagem da Linkit Smart 7688 Duo

É bastante coisa em pouco espaço, não acha? Como fica então o acesso disso tudo com o mundo real? Bom, basicamente a grande maioria da pinagem da Linkit Smart 7688 Duo está a cargo do ATmega32u4. Fora isso, observando a imagem logo adiante, há uns 4 sinais de GPIO (no canto superior direito) que são controlados pelo MT7688, e na esquerda da imagem há sinais de Ethernet, UART e USB, que também são controlados pelo processador. Inclusive, os sinais de UART à direita da placa são usados para acesso direto ao console do Linux da Linkit.

Uma observação importante é a seguinte: A Linkit Smart 7688 Duo trabalha com níveis de sinais de 3.3 V. Ou seja, caso vá fazer interface com componentes que operem com uma tensão diferente desta, tome os devidos cuidados com a conexão dos componentes, fazendo as adaptações para ninguém queimar, ok?

Pinagem da Linkit Smart 7688 Duo

Fonte: www.seeed.com

Como é o acesso do sistema Linux?

Bom, uma USB é dedicada pro ATmega, e a outra é pra ligar dispositivo. Como faz então pra controlar o sistema Linux que há na placa?

Há duas formas de fazer isso:

1 – Usando um adaptador USB Serial conectado na Serial UART da Linkit Smart 7688 Duo:

Linkit com conversor serial2 – Bastando ligar a Linkit Smart 7688 Duo pela USB, a placa irá se comportar inicialmente como um Access Point. E assim como em um roteador convencional, basta você conectar via WiFi na placa, e acessar seus recursos!

Linkit Smart conexão USB

Conectado via WiFi, a placa possui um mecanismo de DNS padrão que permite que a mesma seja encontrada pelo endereço mylinkit.local (caso haja algum problema com esse endereço, o IP padrão dela como AP é 192.168.100.1). Ou seja, digitando esse endereço em um navegador, você será encaminhado para a página de Setup dos recursos de rede da Linkit Smart 7688 Duo, e nessa página é possível fazer a placa conectar na rede sem fio da sua casa, mudar a senha de acesso e fazer atualização de sistema. Inclusive, há até a opção de acessar um painel de configurações avançadas, para usuários mais habituados ao OpenWRT.

Linkit Smart Acesso Browser

E seja na forma 1, ou na forma 2, basta usar um programa como o Putty para acessar o console do sistema Linux da placa via Serial ou SSH, e assim proceder com a execução de comandos, instalação de programas, escrita de códigos, configurações de rede, dentre outros.

Duo Console - Putty

Apresentação no TDC2016 São Paulo

No The Developers Conference 2016 que ocorreu na cidade de São Paulo, apresentei a palestra “Conhecendo o Ecossistema Linkit para Makers”, em que falei sobre a Linkit One e a Linkit Smart 7688 Duo (tópico de outro artigo), suas possibilidades, arquiteturas, dentre outros. Veja abaixo os slides da minha apresentação.

 

Gostou? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP !

1
Linkit Smart 7688 Duo – Uma placa 2 em 1
12 votos, 4.92 classificação média (98% pontuação)

Graduado em Engenharia de Computação com ênfase em Sistemas Embarcados pela USP, campus São Carlos, possui MBA em gestão de TI pela UNIFRAN e Mestrado em Ciências pela EESC-USP. Atua como Analista de Tecnologia para Sistemas Embarcados na Padtec S/A, sendo também professor de pós-graduação e instrutor de cursos na área de sistemas embarcados. Como hobby, gosta de programar tudo que pode ser programado, escovando bits sempre ao lado de um bom café. Gosta de compartilhar seu conhecimento por meio de palestras, e publicando artigos como colaborador dos sites FILIPEFLOP e Embarcados.

Compartilhe este Post

12 Comentários

  1. Felipe - 1 de dezembro de 2016

    Fala amigo, preciso montar um sistema de aquisição de dados de sensores em um carro e posteriormente transmissão desses mesmos dados (a uma distancia de +- 700 metros) Teria alguma dica? Linkit Smart 7688 Duo poderia ser usada ou algum sistema utilizando o xbee?

  2. Miguel Wisintainer - 29 de novembro de 2016

    É uma placa muito, pena que nao tem FPU

  3. Miguel Wisintainer - 29 de novembro de 2016

    Ola, trabalhei 1 ano com esta placa, mas sem o “Arduino”.

    Se puder ajudar um pouco, me avise!

    tcpipchip@hotmail.com

  4. Luan - 26 de novembro de 2016

    Como assim um Arduino e um Raspberry Pi? Você consegue fazer qualquer instrumentação e controle feito em um atmega com o raspberry!

    • ANDRE M L CURVELLO - 26 de novembro de 2016

      Olá Luan,

      Sim, muita coisa você consegue fazer com o Raspberry Pi sem problema algum.
      Mas e a aquisição de sinais analógicos? E a geração de vários sinais PWM?
      São alguns dos pontos a serem observados.
      Todavia, o ponto aqui é trabalhar em equipe, em níveis diferentes de aplicação :)

      Att.
      André Curvello.

  5. Honer - 25 de novembro de 2016

    Parabéns, que bom que tem vocês para nos apresentar essas belezas! Já estou comprando a minha na loja filipeflop.

  6. Ivan Assaritti - 24 de novembro de 2016

    Olá Curvello,

    Parabéns por mais esse artigo, introduzindo essa agradável novidade ao mundo embarcado.

    Fiquei curioso sobre o tratamento das memórias flash e ram compartilhadas entre os processadores.

    Exemplo: Se eu quiser inserir uma aplicação arduino de 5MB (sim, eu sei que exagerei…), será possível?

    O sistema irá tratar sem choque as áreas de memória para ambos?

    Abraços

    Ivan

Deixe uma resposta