GBS-8200: Configurando uma WeMos D1 para trabalhar com o firmware GBS-Control

Faz um tempinho que estou brincando com um custom firmware para a upscaler GBS-8200, que uso para ligar meus consoles e computadores clássicos à minha TV LCD. Chamado GBS-Control, esse firmware corrige algumas deficiências do original, melhora o desempenho geral da placa e adiciona alguns novos recursos interessantes. Há toda uma discussão sobre o desenvolvimento do GBS-Control no fórum Shmups.

Para usar o GBS-Control é necessário fazer algumas pequenas modificações na GBS-8200, para acoplar a ela uma Arduino ou compatível. É a Arduino que irá rodar o firmware, assumindo controle do conversor de vídeo da GBS-8200. Fiz essa minha modificação em minha placa há algum tempo atrás e documentei o processo em dois vídeos no YouTube (parte 1 e parte 2).

Mas a Arduino é apenas a ponta do Iceberg. Se no lugar dela você usar uma placa mais sofisticada, porém ainda compatível, como a WeMos D1 sua GBS-8200 ganha “superpoderes” como gerador de scanlines, controle remoto via Wi-Fi e várias opções para ajuste fino da posição e geometria da imagem. E o melhor é que a WeMos D1 é barata: comprei a minha por R$ 30 no Mercado Livre. E a instalação dela na GBS-8200 é fácil: basta tirar a Arduino e colocar a WeMos D1 no lugar.

Placa WeMos D1

Uma WeMos D1

Mas antes você precisa programar a WeMos D1 com o GBS-Control. E como sou um novato completo nesse mundo de Arduino e afins, patinei um pouquinho até encontrar o caminho das pedras. Por isso decidi compartilhar um passo-a-passo aqui neste artigo, acompanhando o vídeo que fiz sobre a modificação e postei lá no YouTube.

Estas instruções parecem complexas, mas você não vai levar mais do que 10 minutos para fazer tudo. E o resultado final vale a pena, acredite em mim. Olhe esse detalhe de Streets of Rage 2 rodando numa GBS-8200 com a WeMos D1.

Streets of Rage 2 no MegaDrive via GBS-Control

Detalhe de Streets of Rage 2 rodando em uma TV LCD de 32″ a 1280 x 960 pixels através de uma GBS-8200 modificada com o GBS-Control e WeMos D1

Passo 1: Adicionando o suporte à WeMos D1 na Arduino IDE

Antes de mais nada, assumo que você já tenha o ambiente de desenvolvimento do Arduino (Arduino IDE) instalado e funcionando em sua máquina. Estas intruções foram testadas com a versão 1.8.5. Se você usa Linux, uma dica: baixe a IDE do site oficial, e não de um repositório de sua distribuição. Em casa uso o Linux Mint, e a versão que veio via APT era pré-histórica: 1.0.5.

A Arduino IDE não sabe o que é uma WeMos D1, então precisamos baixar um pacote para adicionar suporte a esta placa. Abra a interface e clique em File / Preferences. Na janela que surge, na aba Settings, cole a seguinte URL no campo Additional Board Manager URLs:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Clique em OK.

Adicionando URLs ao Boards Manager

Adicione uma URL extra para que o Board Manager da Arduino IDE possa baixar o pacote de suporte à WeMos D1

Agora clique em Tools / Board / Boards Manager. Na janela que surge, selecione a opção esp8266 by ESP8266 Community e clique no botão Install. Agora você deve ver a opção WeMos D1 R2 & mini em Tools / Board.

Pacote de suporte à ESP8266

Este é o pacote para adicionar o suporte a WeMos D1 (e outras placas baseadas no ESP8266) à Arduino IDE.

Passo 2: habilitando o acesso à WeMos D1

Estes passos se aplicam apenas a quem usa Linux, como eu. Plugue sua WeMos D1 ao PC, abra a Arduino IDE, clique em Tools e observe a opção Ports. Se ela estiver desabilitada (acinzentada), você vai precisar fazer alguns passos extras antes de usar a WeMos D1, já que ela não foi reconhecida pelo sistema. Se a opção Ports estiver habilitada, pule para o passo 3.

Quem me deu o caminho das pedras foi o Steve Kemp. Todo dispostivo USB tem uma identidade composta pelo ID do fabricante (Vendor ID) e do produto (Product ID), e precisamos descobrir os IDs da WeMos. Para isso, antes de plugar a placa ao seu computador, digite o comando lsusb. Você vai ver algo parecido com isso:

Bus 002 Device 005: ID 1a2c:2d23 China Resource Semico Co., Ltd
Bus 002 Device 006: ID 04ca:3005 Lite-On Technology Corp.
Bus 002 Device 003: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0ac8:c342 Z-Star Microelectronics Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Não se preocupe se os IDs e nomes que aparecerem em sua máquina forem diferentes, afinal a lista acima mostra o que está plugado à minha máquina. O que importa é o passo seguinte: plugue a WeMos ao PC e rode novamente o comando lsusb. Compare com o resultado anterior, e você verá uma linha extra com algo como:

Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

Esse é o conversor USB↔Serial integrado à WeMos. Anote o Vendor ID (no meu caso 1a86) e Product ID (7523) listados em sua máquina. Atenção: não copie simplesmente os IDs que estou mencionando aqui, pois eles podem ser diferentes em sua placa.

Agora vamos criar uma “regra” do udev (o gerenciador de dispositivos no Linux) que vai dizer ao sistema o que fazer quando a placa for plugada. Como root, digite:

cd /etc/udev/rules.d
pico 99-wemos.rules

Isso vai abrir o editor de texto Pico. Cole o conteúdo abaixo:

SUBSYSTEM=="tty", GROUP="plugdev", MODE="0660"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="wemos"

Lembre-se de substituir os valores em idVendor e idProduct pelo Vendor ID e Product ID mostrados em sua máquina. Tecle Ctrl-X para sair do editor, e responda Y quando ele perguntar se você quer salvar o arquivo.

Recarregue as regras do udev com o comando abaixo:

# /etc/init.d/udev reload

Desplugue sua WeMos D1 do PC, plugue novamente e ela deve ser reconhecida na Arduino IDE.

Passo 3: instalando a biblioteca WebSockets

Estamos quase no final. Para compilar o GBS-Control você precisa da biblioteca WebSockets instalada na Arduino IDE. Para isso, clique em Sketch / Include Library / Manage Libraries. Na janela que surgir, clique no campo Filter your search… e digite WebSockets. O pacote que queremos é o WebSockets by Marcus Sattler, em minha máquina ele era o último da lista. Clique sobre ele e no botão Install.

Instalando a biblioteca WebSockets

Adicione a biblioteca WebSockets à Arduino IDE antes de compilar o gbs-control

Passo 4: compilando o GBS-Control

Agora sim podemos compilar o GBS-Control. Acesse a página do projeto no GitHub, clique no botão Clone or Download e selecione a opção Download ZIP. Descompacte o arquivo gbs-control-master.zip e você deve ter uma pasta chamada gbs-control-master contendo o código-fonte do GBS-Control.

Renomeie a pasta gbs-control-master para gbs-control. Este passo é importante: não sei porque motivo, mas a Arduino IDE insiste que todo sketch (programa) esteja contido em uma pasta com o mesmo nome. Como o sketch se chama gbs-control.ino, ele tem que estar dentro de uma pasta chamada gbs-control.

Abra o arquivo gbs-control.ino na Arduino IDE e clique em Sketch / Verify/Compile. Depois de alguns minutos, a mensagem Done compiling. deve aparecer acima da janela de status no rodapé da tela. Agora é só clicar em Sketch / Upload e esperar a transferência do programa para a placa.

Compilando o GBS-Control

Resultado da compilação do GBS-Control

Ufa! Sua WeMos D1 está prontinha e programada com o GBS-Control. Agora é só seguir os passos do meu vídeo no YouTube para conectá-la à sua GBS-8200 e se divertir. Até mais!

 

#! [Crunchbang]

Há tempo não uso mais o Linux como sistema operacional em minhas máquinas. Em 2005 migrei para o Mac OS X em meus computadores domésticos (como fizeram muitos colegas dos tempos de Conectiva), e profissionalmente uso o Windows desde 2008.

Na verdade acredito que o “sistema operacional” é cada vez menos relevante. O que importa são os aplicativos que uso para realizar as tarefas do dia-a-dia, e no meu caso boa parte deles está na web. Pra que gastar 20 GB de espaço em disco com Windows e Office quando uma janela do Google Docs me atende da mesma forma? E uma boa experiência recente com um Chromebook em um review para a PCWorld reforçou esse ponto de vista.

Foi quando terminei o review do Chromebook e voltei a usar meu PC “velho de guerra” na redação que notei o “peso” de um sistema e apps tradicionais. O tempo de boot, a demora para abrir o Outlook 2013, os engasgos no streaming de áudio sempre que eu trocava de app ou abria uma nova aba no navegador. Isso num PC com um processador Core 2 Duo Dual Core de 1,6 GHz e 4 GB de RAM.

Daí pensei em procurar um sistema mais “leve”, que me oferecesse a agilidade do Chrome OS. Há uma versão não oficial do Chrome OS (baseada no código Open Source) distribuída por um hacker conhecido como Hexxeh, mas a última compilação foi em abril deste ano, e em testes que fiz anteriormente a compatibilidade com o hardware e a estabilidade deixaram a desejar.

Pensei em uma solução baseada em Linux e foi aí que tropecei no Crunchbang, uma distro baseada no Debian e no gerenciador de janelas OpenBox. O bichinho VOA! A imagem ISO tem cerca de 750 MB, instalei em um pendrive de 2 GB que estava no fundo da gaveta usando o Universal USB Installer e fiquei impressionado.

Continue reading

Transformando o Atrix em um “Netbook”

Vou à CES 2012 no próximo final de semana, e preciso de um “computador” para trabalhar remotamente e enviar textos, imagens e vídeos para a redação. No ano passado fiz isso com o iPad mas nesse ano pensei em levar um Motorola Atrix + Lapdock.

O problema, por incrível que pareça, é que é difícil conseguir uma conexão confiável à Internet numa das maiores feiras de tecnologia do mundo. As redes de telefonia celular ficam congestionadas, o Wi-Fi da sala de imprensa idem, e não há Wi-Fi nos pavilhões. Tenho que estar preparado para trabalhar o máximo possível “offline”.

Aí é que está o problema: sem uma conexão à internet a Lapdock do Atrix é um peso de papel. O único aplicativo que roda no modo Webtop (com o aparelho plugado à Lapdock) é o Firefox, e embora online eu consiga editar textos (com o Google Docs) e imagens (com o Picnik), offline o máximo que dá pra fazer é usar o teclado no Quick Office. Preciso de mais que isso.

Por isso aproveitei o fim de ano para um projetinho divertido: transformar o Atrix com Lapdock em algo mais parecido com um “netbook”, com as ferramentas necessárias para me ser útil mesmo quando estou offline. Isso é fácil de fazer e você sequer precisa de ROMs customizadas: bastam alguns minutos e um cartão microSD. O resultado é um “netbook” Ubuntu, onde você pode instalar e rodar o que quiser.

Continue reading

Cinco sistemas operacionais para seu netbook

Se eu tivesse que apontar qual a contribuição mais importante dos netbooks para o mundo da informática, diria que foi a diversificação do mercado de sistemas operacionais. Teoricamente eles são “PCs” como quaisquer outros, e rodam o mesmo software, mas características de hardware como o tamanho das telas, recursos de rede, tamanho das baterias, poder de processamento e espaço em disco disponível forçaram os desenvolvedores a fazer uma série de ajustes aos seus produtos.

O resultado foi uma explosão de sistemas operacionais para todos os gostos. A maioria dos netbooks vem com Windows de fábrica (XP ou 7, ultimamente), mas ele pode não ser a melhor opção para todos os usuários. Confira abaixo cinco sistemas operacionais “alternativos” que você pode usar para tirar o máximo de seu portátil. E o melhor, a maioria deles é gratuita!

Continue reading

Máquina de Arcade: Gambiarra I

Segundo passo nos meus planos de dominação mundial, ops, construção de minha própria máquina de arcade: transplantar os componentes para um “gabinete” temporário para que eu possa deixá-la montada em um canto e facilitar os testes. Afinal de contas limpar a mesa da cozinha, pegar a placa, a fonte, o HD, ligar tudo, catar o monitor do Gabriel, etc e tal não é produtivo.

O plano: dar um pulo em uma loja de materiais para arte, comprar placas de MDF (um tipo de compensado, mais resistente) e montar um caixote para abrigar os componentes. Mas minha preguiça, combinada ao mau-tempo constante em São Paulo nos últimos meses, interferiu e resolvi não sair de casa.

Plano B: seguir o conselho do Leandro Pereira, que disse no Twitter: “monta dentro da caixa”. Faz sentido, a placa-mãe veio dentro de uma caixa de papelão razoavelmente resistente e do tamanho certinho. Não caberia a fonte, mas ela é bem protegida e pode ficar externa, nem o HD, mas para testes iniciais um pendrive de 16 GB dá e sobra. Então mãos à obra!

Continue reading

Máquina de Arcade: Está viva!!

As peças para o gabinete chegaram na segunda pela manhã, e corri para casa no final do expediente para poder brincar pelo menos um pouco com elas. Montei tudo, espalhado mesmo, sobre a mesa da cozinha aproveitando um teclado e mouse velhos que achei em um canto e o monitor LCD do micro do Gabriel. Para ver se funcionava, tasquei um pendrive com o Ubuntu 9.10. E não é que funcionou de primeira?

Gostei do desempenho do Atom 330 no geral: a máquina é silenciosa e “esperta”, responde rapidinho sem te deixar esperando. Infelizmente, os testes com o SDLMame desapontaram: o desempenho em um Atom dual-core não foi muito superior ao em um Atom single-core (no meu Dell Mini 9): Neo*Geo roda a 100% com frameskip zero, mas Out Run chega a só 60% da velocidade (e som sempre ruim).

Continue reading

Máquina de Arcade: Testando software

As coisas não saíram exatamente como o esperado, e as peças para a máquina de arcade não chegaram na sexta-feira. Com isso, os testes que eu tinha planejado para o fim de semana com o hardware “real” foram por água abaixo. Mas nem tudo foi perdido.

Aproveitei a manhã de sábado para visitar algumas lojas na vizinhança de casa em busca de chapas de MDF para um gabinete improvisado, mas não tive sorte. E a preguiça me impediu de me aventurar mais do que alguns quarteirões além de casa, portanto a ida à Leroy Merlin mais próxima ficou para depois.

Continue reading

Projeto de férias: máquina de arcade

Gabinete "Bartop"Se tudo sair como planejado (e isso é raro) entro em férias em pouco mais de duas semanas, pela primeira vez desde… caramba, desde 2001. É, eu sou louco mesmo, mas isso não vem ao caso (será?).

O que importa é que preciso de um projeto para me manter ocupado durante este período. Já tentei “projetos de verão” antes, mas a maioria foi por água abaixo por falta de tempo, e pela primeira vez este fator não vai estar contra mim. Então decidi tocar uma idéia que tenho na cabeça há MUITO tempo: montar minha própria máquina de arcade (ou, como chamavam na minha terra, “fliperama”). Não, não é essa da foto.

Continue reading

Ubuntu 9.04 Netbook Remix no Eee PC 701

Comentário rápido: quando vi que saiu o primeiro beta do Ubuntu 9.04 (codinome Jaunty Jackalope), corri para dar uma “olhadinha”. Baixei a ISO do LiveCD/instalação, passei pra um pendrive usando o UNetbootin e instalei no meu companheiro de aventuras: um Eee PC 701 com 512 MB de RAM.

Me decepcionei com o desempenho. A interface Netbook Remix é absurdamente lenta: são necessários quase dois segundos para ela reagir e fazer o “mouseover” dos itens nas listas laterais. Abrir o Firefox demora notavelmente mais do que no Ubuntu 8.10 usando o desktop padrão. Acabei desinstalando e colocando o Ubuntu 8.10 de volta no lugar.

Entendo que a versão Netbook Remix é otimizada para netbooks com telas de 10 polegadas e processadores Atom, mas podiam fazer um trabalho para garantir que ela rodasse pelo menos de forma “usável” no Eee PC 701, máquina que iniciou a onda dos netbooks e ainda é bastante popular por aí. Acho que é hora de trocar de máquina.

Hands-on com o Mobo White

POST ATUALIZADO em 06/10 às 14:36 (corrigida informação sobre o chipset de vídeo)

Chegou às minhas mãos o Mobo White 1050, um dos modelos na nova linha de subnotebooks da Positivo Informática. Ainda não tive tempo de fazer testes, mas já posso passar para vocês algumas impressões iniciais.

  • Não há dúvidas, ele é o MSI Wind. E isso é bom.
  • O nome diz “Mobo White” mas ele não é branco. Na verdade, a cor é um “branco pérola”, bonito. O teclado é branquinho mesmo, e minha preocupação é que, com o tempo, amarele ou pegue sujeira facilmente.
  • Alguns dados do hardware: Processador Intel Atom N270 de 1.6 GHz, 1 GB de RAM, HD de 120 GB Seagate Mobilemax (STM9120817AS), interface wireless RTL8187SE, interface ethernet RTL8102E (essa é nova pra mim), som Realtek HD Audio, vídeo on-board Intel 945 Intel GMA 950 e monitor LCD de 10 polegadas a 1024 x 600 pixels. Além disso, tem três portas USB, webcam e leitor de cartões SD. Nada de modem. Peso total: 1.3 Kg.
  • Dos 120 GB de espaço em disco, 3.72 GB são ocupados pelo sistema operacional (Windows XP SP3) mais o BrOffice.org 2.4 e Acrobat Reader. Segundo a Positivo, a bateria tem autonomia de seis horas. Com carga de 100%, o Windows reporta 5 horas de autonomia. Ainda não usei o Mobo por tempo suficiente para saber qual dos dois está certo.
    UPDATE às 18:32 de 30/09/08: acabo de terminar um teste em “uso real”: máquina rodando com navegador web, cliente de IM e editor de textos, fazendo minhas tarefas diárias. Nessas condições, a autonomia de bateria foi de três horas e trinta e um minutos. BEM longe do prometido pelo fabricante e pelo próprio sistema operacional. Vou fazer novos testes pra confirmar os números.
    UPDATE às 12:17 de 05/10/08: esqueci de mencionar um novo teste de bateria feito na noite de sexta. Novamente em “uso real”, a bateria chegou às
    quatro horas e cinquenta minutos. Mais próximo do que o Windows reportava, e próximo o suficiente da afirmação do fabricante para eu me considerar satisfeito. Meu Eee PC, que mal chega às duas horas e meia, está envergonhado num canto da mesa.
  • A bateria que acompanha a máquina é uma bateria estendida, maior que a bateria comum e que levanta a traseira do micro na mesa. Ela vem com seus próprios pézinhos de borracha para estabilizar a máquina, e a deixa em um ângulo confortável para digitação.
  • Falando no teclado, as teclas são bem maiores que as do Mobo original ou do EeePC, e no geral ele é bastante confortável para digitar. A única coisa estranha é a posição da tecla com os caracteres /, ? e °. Em vez de ficar ao lado do Shift da direita, como em um teclado ABNT2 comum, ela fica na última fileira, entre a tecla “menu” e a seta à esquerda (vide foto).
  • A máquina veio acompanhada de uma bolsinha de couro sintético para transporte, que pode acomodar o notebook e alguns CDs/documentação, mas não tem espaço para o adaptador de energia (que é do tamanho do de um notebook normal).
  • Está rodando há três horas, e incrivelmente frio. Mas estou rodando só o Windows, IM e um navegador. Nada de calor nem no teclado, nem na saída de ventilção do lado esquerdo. A máquina é bastante silenciosa.
  • Não recebi (ainda) o CD de restauração do sistema, portanto nada de testes com o Linux por enquanto. Mas já descobri que o Wiki dos usuários do MSI Wind tem instruções completas para instalação do Ubuntu 8.04. Claro, também quero experimentar outros sistemas se tiver tempo.

Alguém tem perguntas?