Hardware Free
Hackeando um SmartBOX e instalando Linux & JAVA gráfico
Ricardo JL Rufino
rjlr@cin.ufpe.br
ricardo@criativasoft.com.br
AgendaApresentação
Ricardo JL Rufino
➔ Esp. em Engenharia de Software
➔ Mestrando em Gestão de TI (UFPE)
➔ Sócio fundador da CriativaSoft.
➔ Atuo no desenvolvimento de Software desde 2007, focado em
soluções empresariais sobre plataforma JavaEE.
Desenvolvedor de softwares open-source como Framework
Web MVC Mentawai, ProjectNCode e instrutor de cursos de
Java.
Qual o Alvo ?
Qual o Alvo ?
● ANDROID TELEVISION BOX
– DealExtreme: AT-758 Box de TV Smart Android 4.2.2
● Fabricante: Sunchip
● SoC A20 @ 1Ghz ( ARM Cortex-A7)
● 512MiB DDR3 @ 384MHz
● FLASH (NAND) - 4 GB
● HDMI
● WiFi 802.11 b/g/n
● Ethernet
● Micro-SD
● 1 USB2.0 Host, 1 USB2.0 OTG
● IRDA (Infra-Vermelho)
● VALOR: ~ $45 / R$128
http://linux-sunxi.org/Sunchip_SDK-758
SoC (A20) – Visão Geral
Outros Similares
● Olinuxino Micro
Outros Similares
● Cubietruck (Cubieboard)
http://www.cnx-software.com/2013/06/25/cubietruck-development-board-features-allwinner-a20-
soc-2gb-ram-and-gb-ethernet/
Instalação do Linux
● Fácil e a Difícil
● Fácil: Usando uma imagem já pronta:
– http://linux-sunxi.org/Bootable_OS_images
– LOGO DISPONIBILIZAREI A MINHA !
● Difícil: Compilando e extraindo as informações
do dispositivo.
Instalação do Linux (Fácil)
● Existem já algumas distribuições prontas para
vários dispositivos.
● Se não encontrar a imagem para o dispositivo
idêntico, procura um do mesmo processador
– Foi o que eu fiz !! Usando o Debian para A20
– http://linux-sunxi.org/Bootable_OS_images
Gravação da Imagem
● Linux: Usando DD
– dd bs=4M sd.img of=/dev/sdX
– CUIDADO COM O X !!
● Windows
– http://www.raspberrypi.org/documentation/installatio
n/installing-images/windows.md
Estrutura do SD
● O SD tem duas partições:
– 1 – BOOT (64 MB – FAT)
● uEnv.txt : Parâmetros de Configuração
● script.bin : Configurações do Hardware (binário)
● uimage : Kernel
● SETOR onde fica o u-boot (não visível)
– 2 – LINUX FS / ROOTFS (> 2GB EXT4)
● Sistema de Arquivos do LINUX
● No caso estamos usando o Debian
Entendendo o Processo de BOOT
● Principais envolvidos
– U-BOOT (u-boot-sunxi)
– Kernel / Linux – (linux-sunxi)
● Etapas
– O Processador inicia um chip com software de boot (Boot ROM) / BIOS
– Segundo verifica se tem um SD e a partição de boot (u-boot)
– O u-boot é configurado usando o uEnv.txt e script.bin
– U-boot carrega o kernel(uImage) e passa o comando pra ele.
– Kernel faz todo o processo normal do linux
BOOT pela USB
● É mais rápido (empírica e teoricamente)
● Pode usar a mesma imagem para o SD
●
Alterar arquivo uEnv.txt na partição de Boot do SD:
– root=/dev/sda2 ro rootwait
No caso sda2, porque a imagem tem duas
partições e o linux tá na segunda, mas você
pode usar só uma partição (tem que ser EXT4)
Algumas coisas mais avançadas
● Quando não se tem o mesmo modelo é preciso
extrair algumas informações do dispositivo.
– Script.bin
– Alguns links referentes a isso:
● http://linux-sunxi.org/Identification_guide
● http://linux-sunxi.org/Retrieving_device_information
Script.bin
● É um arquivo que guarda as informações do hardware
● Ele pode ser capturado e descompilado (FEX) usando o Sunxi-
tools
● Quando for usar uma imagem feita para outro equipamento
você deve usar o Script.bin do seu equipamento.
– NOTA: É bom desativar a partição NAND no A20, pois a minha
corrompeu por algum motivo e perdi o S.O original...
– Setar: nand_used = 0
● Guida de Configuração:
– http://linux-sunxi.org/Script.bin
– http://linux-sunxi.org/Fex_Guide
Infra-RED
Deve ser habilitado no Script.bin (fex)
● Carregar módulo
– modprobe sunxi-ir
● Verificar se foi inicializado corretamente
– cat /proc/bus/input/devices
– dmesg | grep IR
● Teste:
– apt-get install input-utils
– Input-events 0
● Aparentemente funciona apenas com protocolo NEC
[ir_para]
ir_used = 1
ir0_rx = port:PB04<2><default><default><default>
WIFI
Deve ser habilitado no Script.bin (fex)
Verificar se tem:
[wifi_para]
wifi_used = 1
wifi_sdc_id = 3
wifi_usbc_id = 2
wifi_usbc_type = 1
Etc...
[usb_wifi_para]
usb_wifi_used = 1
usb_wifi_usbc_num = 2
NOTA: Internamente é ligado em um barramento USB
GPIO
● Deve ser habilitado no Script.bin (fex)
– http://linux-sunxi.org/GPIO
● Carregar módulo
– modprobe gpio-sunxi
● Programação Basica
– # Exportar pino para o usarspace
– echo 1 > /sys/class/gpio/export
– # Configurar direção (Output)
– echo out > /sys/class/gpio/gpio1_ph20/direction
– # Alterar Valores
– echo 1 > /sys/class/gpio/gpio1_ph20/value
– echo 0 > /sys/class/gpio/gpio1_ph20/value
[gpio_para]
gpio_used = 1
gpio_num = 2
gpio_pin_1 = port:PH20<1><default><default><0>
gpio_pin_2 = port:PH10<0><default><default><0>
JAVA
JAVA 8 ARM
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-
securebackup-cookie"
http://download.oracle.com/otn-pub/java/jdk/8u6-b23/jdk-8u6-linux-arm-vfp-hflt.tar.gz
tar zxvf jdk-8u6-linux-arm-vfp-hflt.tar.gz -C /opt
mv jdk1.8.0_XX jdk1.8.0
update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0/bin/javac 1
update-alternatives --install /usr/bin/java java /opt/jdk1.8.0/bin/java 1
update-alternatives --config javac
update-alternatives --config java
● Verificar se foi instalado corretamente
java -version
JAVA 8 ARM - interface gráfica
Não precisamos de um ambiente gráfico completo como: GNOME , KDE,
LXDE
Podemos rodar diretamente no 'X' sem nenhuma coisa no monitor (nem o
relógio)
● Você pode usar a API da Swing e AWT
– Ainda não funciona o JAVA FX !!! = (
– Precisa fazer o driver da GPU MALI400 funcionar !!
● Instalar o X
– # apt-get install xorg
● Configurar o script: ~/.xsession
● Startar o Servidor gŕafico
– # startx
~/.xsession
xrandr --output VGA1 --mode 1280x720 #For setting a video mode
xrandr --fb 1280x720 #Not always required, sets the framebuffer size
xset -dpms s off
# Sua aplicação !
java -jar /opt/jdk1.8.0/demo/jfc/SwingSet2/SwingSet2.jar
E quando as coisas NÃO dão CERTO ?
Debugar pela UART
● É possível monitorar o processo de BOOT e
saber o que está acontecendo pela porta UART
● Usei um ARDUINO UNO pra isso !!
PS: No Leonardo acho que não da certo !
Tem que ter um chip separado de USB
Placa
Debugando usando o Arduino
Debugando usando o Arduino
● Nessa configuração o arduino está em RESET,
ou seja, ele está funcionando apenas o CHIP
USB (Atmega16U2) para fazer a conversão:
– Serial UART → USB
● Plugue o arduino no seu computador
● Abra um terminal serial (pode ser o putty)
● No Linux:
– # screen /dev/ttyACM{X} 115200
Melhor que Raspberry ?!?!
● Bonitinho (vem com “case”)
● Mais rápido (1Ghz sem overclock)
– FALAR MAIS..
● Micro-SD
● WiFI
● Memória Interna (FLASH)
● MAAAAAsss não tem GPIO !!
Dúvidas ?
OpenDevice
Open IoT (Internet Of Things) Platform and Framework.
“Conjunto de ferramentas e APIs para construção de
soluções de Internet das Coisas”
OpenDevice
● Apis e Ferramentas que permitem construir
sistemas de:
– Automação Residencial
– Monitoramento de Sensores
– Monitoramento de Energia
– Controle de Robôs
– Smart City
OpenDevice
● Objetivo:
O principal objetivo é monitorar e controlar
hardwares baratos como Arduino, RaspberryPI e
plataformas semelhantes, local (offline) ou sobre
a nuvem usando linguagens de programação de
alto nível e com a abstração de protocolos e
detalhes de baixo nível.
Foco no que é importante !
Isso permite que você se concentre em seu
projeto e na inovação, deixar os detalhes
obscuros de protocolos de comunicação e
especificações com OpenDevice, você vai dar um
passo importante para o sucesso de seu
projeto.
Tecnologias Envolvidas
Funcionalidades
● Open API (for: REST, JavaScript, Java, Android, Arduino,
EnergiaIDE)
● Real-time (WebSockets)
● Event-Based
● Async & non-blocking
● Multi-protocolo (Usb, Bluetooth, TCP)
● Independente de Linguagem
● Independente de Plataforma (Windows, Linux, Mac, MIPs on
OpenWRT)
● Lightweight/Built-in Servers (não precisa do tomcat ou glassfish)
Visão Geral
Event-driven and Real-Time
Você não precisa consultar a informação,
ela vem até você quando os dados
estiverem disponíveis
Hands-On/Of
Uma pitada de java...
Blink - Arduino
* C / Arduino
Blink - Java
Blink Java (mais livre)
Blink Java (Comandos)
Incrementando no Arduino
* C / Arduino
Incrementando no JAVA
Definição de Dispositivos
Definição das Conexões
* JAVA
Adicionando Rest !
Adicione essa linha e seja feliz !!!
Você pode acessar pelo navegador
… ou com JavaScript !
Agora ficou sério ! WebSockets !
Adicione essas linhas e fique Real-Time e de quebra servidor http !
Biblioteca de Rest e WebSocket ! (adicione no pom.xml)
Ao adicionar o servidor de W.S automaticamente já é adicionado o servidor de REST
Api JavaScript para WebSocket
Instalação
● Usamos o Maven (arquivo pom.xml)
Substitua: ${opendevice-version} pela ultima versão, atualmente: 0.1.2-SNAPSHOT.
Qualquer dúvida consulte:
https://opendevice.atlassian.net/wiki/display/DOC/A.+First+Steps+with+OpenDevice
Instalação
● Adicionar o repositório da Sonatype
Instalação (lib arduino/similar)
● Baixar ou Clonar o repositório do GIT
– opendevice-hardware-libraries
● Copiar a pasta: arduino/OpenDevice
– Para pasta /libraries da IDE do Arduino
● Reinicie a IDE do Arduino
Github / Sources: https://github.com/OpenDevice
HORÁRIO RESERVADO
À PROGRAMAÇÃO E MÃO NA MASSA
Postura !
Nós somos desenvolvedores, não somos “normais”
ACEITE ISSO.. !!!
Devemos ser agentes de Transformação e Criação.
Atitude !
Não espere a ideia brilhante !
Execute a ideia que você gosta.
Descubra o que você gosta
Não escute os outros
●
Muita gente vai dizer que você não consegue
●
Muita gente vai dizer que já existe
Dúvidas ?
Contatos
● E-mail:
– ricardo@criativasoft.com.br
– rjlr@cin.ufpe.br
● Facebook
– /ricardojlrufino
Link's
● OpenDevice:
– http://opendevice.io
– https://github.com/OpenDevice
– https://opendevice.atlassian.net/wiki
– http://opendevice.criativasoft.com.br
● Facebook
– /opendevice
Link's
● Onde Comprar ? (Gringos):
– www.adafruit.com
– www.sparkfun.com
– www.seeedstudio.com
– imall.iteadstudio.com
– www.dx.com (mercado livre – demora....)
● Brasil
– Lab de Garagem (http://www.labdegaragem.org
– Multilógica Shop (http://multilogica-shop.com/);
– Rlrobotics (http://www.rlrobotics.ind.br/arduino);
– Webtronico (http://www.webtronico.com/)
Obrigado pela sua atenção.

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice

  • 1.
    Hardware Free Hackeando umSmartBOX e instalando Linux & JAVA gráfico Ricardo JL Rufino rjlr@cin.ufpe.br ricardo@criativasoft.com.br
  • 2.
    AgendaApresentação Ricardo JL Rufino ➔Esp. em Engenharia de Software ➔ Mestrando em Gestão de TI (UFPE) ➔ Sócio fundador da CriativaSoft. ➔ Atuo no desenvolvimento de Software desde 2007, focado em soluções empresariais sobre plataforma JavaEE. Desenvolvedor de softwares open-source como Framework Web MVC Mentawai, ProjectNCode e instrutor de cursos de Java.
  • 3.
  • 4.
    Qual o Alvo? ● ANDROID TELEVISION BOX – DealExtreme: AT-758 Box de TV Smart Android 4.2.2 ● Fabricante: Sunchip ● SoC A20 @ 1Ghz ( ARM Cortex-A7) ● 512MiB DDR3 @ 384MHz ● FLASH (NAND) - 4 GB ● HDMI ● WiFi 802.11 b/g/n ● Ethernet ● Micro-SD ● 1 USB2.0 Host, 1 USB2.0 OTG ● IRDA (Infra-Vermelho) ● VALOR: ~ $45 / R$128 http://linux-sunxi.org/Sunchip_SDK-758
  • 5.
    SoC (A20) –Visão Geral
  • 6.
  • 7.
    Outros Similares ● Cubietruck(Cubieboard) http://www.cnx-software.com/2013/06/25/cubietruck-development-board-features-allwinner-a20- soc-2gb-ram-and-gb-ethernet/
  • 8.
    Instalação do Linux ●Fácil e a Difícil ● Fácil: Usando uma imagem já pronta: – http://linux-sunxi.org/Bootable_OS_images – LOGO DISPONIBILIZAREI A MINHA ! ● Difícil: Compilando e extraindo as informações do dispositivo.
  • 9.
    Instalação do Linux(Fácil) ● Existem já algumas distribuições prontas para vários dispositivos. ● Se não encontrar a imagem para o dispositivo idêntico, procura um do mesmo processador – Foi o que eu fiz !! Usando o Debian para A20 – http://linux-sunxi.org/Bootable_OS_images
  • 10.
    Gravação da Imagem ●Linux: Usando DD – dd bs=4M sd.img of=/dev/sdX – CUIDADO COM O X !! ● Windows – http://www.raspberrypi.org/documentation/installatio n/installing-images/windows.md
  • 11.
    Estrutura do SD ●O SD tem duas partições: – 1 – BOOT (64 MB – FAT) ● uEnv.txt : Parâmetros de Configuração ● script.bin : Configurações do Hardware (binário) ● uimage : Kernel ● SETOR onde fica o u-boot (não visível) – 2 – LINUX FS / ROOTFS (> 2GB EXT4) ● Sistema de Arquivos do LINUX ● No caso estamos usando o Debian
  • 12.
    Entendendo o Processode BOOT ● Principais envolvidos – U-BOOT (u-boot-sunxi) – Kernel / Linux – (linux-sunxi) ● Etapas – O Processador inicia um chip com software de boot (Boot ROM) / BIOS – Segundo verifica se tem um SD e a partição de boot (u-boot) – O u-boot é configurado usando o uEnv.txt e script.bin – U-boot carrega o kernel(uImage) e passa o comando pra ele. – Kernel faz todo o processo normal do linux
  • 13.
    BOOT pela USB ●É mais rápido (empírica e teoricamente) ● Pode usar a mesma imagem para o SD ● Alterar arquivo uEnv.txt na partição de Boot do SD: – root=/dev/sda2 ro rootwait No caso sda2, porque a imagem tem duas partições e o linux tá na segunda, mas você pode usar só uma partição (tem que ser EXT4)
  • 14.
    Algumas coisas maisavançadas ● Quando não se tem o mesmo modelo é preciso extrair algumas informações do dispositivo. – Script.bin – Alguns links referentes a isso: ● http://linux-sunxi.org/Identification_guide ● http://linux-sunxi.org/Retrieving_device_information
  • 15.
    Script.bin ● É umarquivo que guarda as informações do hardware ● Ele pode ser capturado e descompilado (FEX) usando o Sunxi- tools ● Quando for usar uma imagem feita para outro equipamento você deve usar o Script.bin do seu equipamento. – NOTA: É bom desativar a partição NAND no A20, pois a minha corrompeu por algum motivo e perdi o S.O original... – Setar: nand_used = 0 ● Guida de Configuração: – http://linux-sunxi.org/Script.bin – http://linux-sunxi.org/Fex_Guide
  • 16.
    Infra-RED Deve ser habilitadono Script.bin (fex) ● Carregar módulo – modprobe sunxi-ir ● Verificar se foi inicializado corretamente – cat /proc/bus/input/devices – dmesg | grep IR ● Teste: – apt-get install input-utils – Input-events 0 ● Aparentemente funciona apenas com protocolo NEC [ir_para] ir_used = 1 ir0_rx = port:PB04<2><default><default><default>
  • 17.
    WIFI Deve ser habilitadono Script.bin (fex) Verificar se tem: [wifi_para] wifi_used = 1 wifi_sdc_id = 3 wifi_usbc_id = 2 wifi_usbc_type = 1 Etc... [usb_wifi_para] usb_wifi_used = 1 usb_wifi_usbc_num = 2 NOTA: Internamente é ligado em um barramento USB
  • 18.
    GPIO ● Deve serhabilitado no Script.bin (fex) – http://linux-sunxi.org/GPIO ● Carregar módulo – modprobe gpio-sunxi ● Programação Basica – # Exportar pino para o usarspace – echo 1 > /sys/class/gpio/export – # Configurar direção (Output) – echo out > /sys/class/gpio/gpio1_ph20/direction – # Alterar Valores – echo 1 > /sys/class/gpio/gpio1_ph20/value – echo 0 > /sys/class/gpio/gpio1_ph20/value [gpio_para] gpio_used = 1 gpio_num = 2 gpio_pin_1 = port:PH20<1><default><default><0> gpio_pin_2 = port:PH10<0><default><default><0>
  • 19.
  • 20.
    JAVA 8 ARM wget--no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept- securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u6-b23/jdk-8u6-linux-arm-vfp-hflt.tar.gz tar zxvf jdk-8u6-linux-arm-vfp-hflt.tar.gz -C /opt mv jdk1.8.0_XX jdk1.8.0 update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0/bin/javac 1 update-alternatives --install /usr/bin/java java /opt/jdk1.8.0/bin/java 1 update-alternatives --config javac update-alternatives --config java ● Verificar se foi instalado corretamente java -version
  • 21.
    JAVA 8 ARM- interface gráfica Não precisamos de um ambiente gráfico completo como: GNOME , KDE, LXDE Podemos rodar diretamente no 'X' sem nenhuma coisa no monitor (nem o relógio) ● Você pode usar a API da Swing e AWT – Ainda não funciona o JAVA FX !!! = ( – Precisa fazer o driver da GPU MALI400 funcionar !! ● Instalar o X – # apt-get install xorg ● Configurar o script: ~/.xsession ● Startar o Servidor gŕafico – # startx
  • 22.
    ~/.xsession xrandr --output VGA1--mode 1280x720 #For setting a video mode xrandr --fb 1280x720 #Not always required, sets the framebuffer size xset -dpms s off # Sua aplicação ! java -jar /opt/jdk1.8.0/demo/jfc/SwingSet2/SwingSet2.jar
  • 23.
    E quando ascoisas NÃO dão CERTO ?
  • 24.
    Debugar pela UART ●É possível monitorar o processo de BOOT e saber o que está acontecendo pela porta UART ● Usei um ARDUINO UNO pra isso !! PS: No Leonardo acho que não da certo ! Tem que ter um chip separado de USB
  • 25.
  • 26.
  • 27.
    Debugando usando oArduino ● Nessa configuração o arduino está em RESET, ou seja, ele está funcionando apenas o CHIP USB (Atmega16U2) para fazer a conversão: – Serial UART → USB ● Plugue o arduino no seu computador ● Abra um terminal serial (pode ser o putty) ● No Linux: – # screen /dev/ttyACM{X} 115200
  • 28.
    Melhor que Raspberry?!?! ● Bonitinho (vem com “case”) ● Mais rápido (1Ghz sem overclock) – FALAR MAIS.. ● Micro-SD ● WiFI ● Memória Interna (FLASH) ● MAAAAAsss não tem GPIO !!
  • 29.
  • 30.
    OpenDevice Open IoT (InternetOf Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  • 31.
    OpenDevice ● Apis eFerramentas que permitem construir sistemas de: – Automação Residencial – Monitoramento de Sensores – Monitoramento de Energia – Controle de Robôs – Smart City
  • 32.
    OpenDevice ● Objetivo: O principalobjetivo é monitorar e controlar hardwares baratos como Arduino, RaspberryPI e plataformas semelhantes, local (offline) ou sobre a nuvem usando linguagens de programação de alto nível e com a abstração de protocolos e detalhes de baixo nível.
  • 33.
    Foco no queé importante ! Isso permite que você se concentre em seu projeto e na inovação, deixar os detalhes obscuros de protocolos de comunicação e especificações com OpenDevice, você vai dar um passo importante para o sucesso de seu projeto.
  • 34.
  • 35.
    Funcionalidades ● Open API(for: REST, JavaScript, Java, Android, Arduino, EnergiaIDE) ● Real-time (WebSockets) ● Event-Based ● Async & non-blocking ● Multi-protocolo (Usb, Bluetooth, TCP) ● Independente de Linguagem ● Independente de Plataforma (Windows, Linux, Mac, MIPs on OpenWRT) ● Lightweight/Built-in Servers (não precisa do tomcat ou glassfish)
  • 36.
  • 37.
    Event-driven and Real-Time Vocênão precisa consultar a informação, ela vem até você quando os dados estiverem disponíveis
  • 38.
  • 39.
    Blink - Arduino *C / Arduino
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
    Incrementando no JAVA Definiçãode Dispositivos Definição das Conexões * JAVA
  • 45.
    Adicionando Rest ! Adicioneessa linha e seja feliz !!! Você pode acessar pelo navegador … ou com JavaScript !
  • 46.
    Agora ficou sério! WebSockets ! Adicione essas linhas e fique Real-Time e de quebra servidor http ! Biblioteca de Rest e WebSocket ! (adicione no pom.xml) Ao adicionar o servidor de W.S automaticamente já é adicionado o servidor de REST
  • 47.
  • 48.
    Instalação ● Usamos oMaven (arquivo pom.xml) Substitua: ${opendevice-version} pela ultima versão, atualmente: 0.1.2-SNAPSHOT. Qualquer dúvida consulte: https://opendevice.atlassian.net/wiki/display/DOC/A.+First+Steps+with+OpenDevice
  • 49.
    Instalação ● Adicionar orepositório da Sonatype
  • 50.
    Instalação (lib arduino/similar) ●Baixar ou Clonar o repositório do GIT – opendevice-hardware-libraries ● Copiar a pasta: arduino/OpenDevice – Para pasta /libraries da IDE do Arduino ● Reinicie a IDE do Arduino Github / Sources: https://github.com/OpenDevice
  • 51.
  • 52.
    Postura ! Nós somosdesenvolvedores, não somos “normais” ACEITE ISSO.. !!! Devemos ser agentes de Transformação e Criação.
  • 53.
    Atitude ! Não esperea ideia brilhante ! Execute a ideia que você gosta. Descubra o que você gosta Não escute os outros ● Muita gente vai dizer que você não consegue ● Muita gente vai dizer que já existe
  • 54.
  • 55.
    Contatos ● E-mail: – ricardo@criativasoft.com.br –rjlr@cin.ufpe.br ● Facebook – /ricardojlrufino
  • 56.
    Link's ● OpenDevice: – http://opendevice.io –https://github.com/OpenDevice – https://opendevice.atlassian.net/wiki – http://opendevice.criativasoft.com.br ● Facebook – /opendevice
  • 57.
    Link's ● Onde Comprar? (Gringos): – www.adafruit.com – www.sparkfun.com – www.seeedstudio.com – imall.iteadstudio.com – www.dx.com (mercado livre – demora....) ● Brasil – Lab de Garagem (http://www.labdegaragem.org – Multilógica Shop (http://multilogica-shop.com/); – Rlrobotics (http://www.rlrobotics.ind.br/arduino); – Webtronico (http://www.webtronico.com/)
  • 58.