Codebits 2012, e as minhas experiências do ImpCar, um carrinho remotamente comandado com EletricImp

E estamos praticamente na reta final do Codebits.

Este ano, após o ano passado termos participado com um projeto no concurso de programação, e termos sido seleccionados em doze de todos os projetos que terminaram a edição de 2011 para participar no Sapo Labs, tendo conseguido chegar ao final no grupo dos cinco que terminaram com o nosso Home Automation que se veio a chamar MyDomus, tinha já decidido que não faria uma questão fulcral fazer um projeto para concurso este ano. Já tinha assim decidido aproveitar mais as talks para aprender, do que própriamente estar agarrado ao PC a programar contra relógio – sim este ano não quero fazer uma direta ! 🙂

Assim elegi algumas talks para ver, e no principio da semana encontrei uma coisa que gostava de experimentar aqui, e por isso tratei de perguntar se o Filipe da InMotion a ia trazer para ver.

Não não se trata do Raspberry PI – esse já tive bastante oportunidade de experimentar, dado que é o cérebro do MyDomus desde que o tenho, mas sim o Electric Imp.

O Electric Imp é um pequeno dispositivo (32mm x 24mm x 2.1mm) com um formato semelhante a um cartão de memória que permite ligar dispositivos á internet ou outros sistemas. O imp contêm um pequeno processador Cortex-M3 dentro dele, e permite interligar sistemas ligando-se á Cloud da ElectricImp via standard 802.11b/g/n WiFi, com  WEP, WPA ou WPA2 tendo em si uma grande antena.

Grande performance, com um baixo consumo são anunciados para este equipamento, permitindo que se mantenha uma ligação segura ao serviço, executando o código definido no editor Online do Imp – o Planner – libertando o developer das tarefas de manutenção, upgrade e outras – apenas têm que alterar o código, e o imp quando se ligar á internet atualiza o código.

Através de uma breakout, ou um shield, permite ligar a seis pinos para uso de aplicações/hardware. UARTs, I2C, SPI, analog in and out, PWMs, GPIOs são os vários modos seleccionáveis via software para as portas.

Assim tinha uma ideia para este projeto: tentar construir um sistema que pudesse ser controlado em qualquer parte do mundo. Para isso decidi reaproveitar um velhinho carrinho telecomandado, e ligá-lo ao imp.

Após algumas pesquisas lá descobri então como o fazer,a  escolha acabou por cair no Arduino com um shield controlador de motores/servos. Ora com o dito shield para controlar motores emprestado na Quarta, e finalmente colocando as mãos no Imp na Quinta Feira de tarde, lá deitei as mãos á obra e consegui fazer alguma coisa, experimentando então o shield Imp da Sparkfun que a InMotion me vendeu, dado que tinha planeado usar inicialmente uma breakout mais simples.

Acabei por ontem após a saída do Codebits, quase ás duas manhã, conseguir colocar um led a piscar, e pelas três já conseguia controlar o led via API remotamente.

Hoje foi dia de investigar o funcionamento dos motores e servos, chegar á conclusão que o motor da direcção estava queimado, e o servo que me emprestaram não era passível de ser adaptado ao carro. No entanto, sem desistir, lá decidi que o objetivo passava quanto muito não fosse a fazer algo que andasse para trás e para a frente para provar que o conceito funcionava, e as latências das redes não afetavam o controle do carro, algo que o Filipe Valpereiro já me tinha altertado quando lhe expliquei o que pretendia fazer.

A verdade é que lá consegui fazer o que pretendia, e este “pet projet” lá surgiu, e as latências não afetam assim tanto a coisa, sendo possível controlar o carrinho remotamente:

Encontrei algumas dificuldades dado que para implementar a comunicação entre o Shield Imp e o arduino usei comunicação série com a library SoftwareSerial, e os pinos para o shield do Imp são estáticamente os 8 e 9. Ora o 8 é usado no Moto Shield da LadyAda, e o 9 é também usado caso seja utilizado um servo.

A única forma que encontrei de reverter isto (além de tentar alterar o pino 8 na library AFMotor do shield da Ladyada que não funcionou foi cortar uns jumpers no PCB do Impshield e soldar outros de forma a usar o pino 0 e 1 do Arduino para o TX/RX. Infelizmente ao ser implementada a comunicação via UART quando se programa o Arduino obtêm-se um erro, pelo que para se conseguir tar, ou se tira o shield fora, ou se arranja maneira de lhe cortarmos a alimentação. Optei por tirar o shield, programar o Arduino, e voltar a colocar o shield.

E assim foi a experiência. Em breve tentarei algo mais complexo, mas terei de analisar cuidadosamente se existem outros shields controladores mais eficazes em termos de utilização das portas do Arduino, ou eventualmente tentar construir um controlador do motor.

De resto têm sido uns dias agradáveis: temáticas interessantes, mais projetos de hardware por aí, e até talks sobre Windows tem aparecido, como a talk sobre o desenvolvimento de aplicações para a AppStore do Windows 8 que o Caio Proiete deu.

Hoje ao final da tarde foi o tipico dia em que os corajosos experimentavam os Nuclear Tacos, e eu dado que estava numa Talk, acabei por não ir.

Hoje ao final da noite foi altura do mediático e famoso Quiz Show, com perguntas que *não lembram a ninguém* e é mesmo preciso uma grande “bagagem” para lhes saber responder.

Para amanhã tenho programado um Workshop de como fazer gadgets com Arduino, que foi adiado de Quarta para hoje. Pelo meio fica ainda a minha experiência em que usei uma estação de soldar – a primeira que usei na vida – que me emprestam no stand do Altlab, o Lisbon’s Hackerspace de [DIT] Do It Together, muito gentilmente para soldar os conetores no shield.

É uma edição marcada por lançamentos de muitas API’s, services Sapo SDK, e especialmente pela oferta cloudpt.pt tão mediatizada ultimamente com a promessa de oferta de 16 GB a todos. É verdade! E nós, participantes do Codebits tivémos direito a uma oferta especial: 50 GB for life!

E para finalizar vêm as apresentações dos que chegarem ao fim do concurso de programação: best part! Ideias novas, e muita técnica e qualidade. Portugal têm bastante, não tenho dúvidas disso.

More to come nos próximos dias por aqui 🙂

3 thoughts on “Codebits 2012, e as minhas experiências do ImpCar, um carrinho remotamente comandado com EletricImp

  1. Olá Edgar!

    Offtopic:
    Bem me parecia que hoje reconhecia a tua cara de algum lado só não sabia de onde! Também estou no Codebits e estivemos lado a lado na Talk do Filipe Valpereiro e do Caio Poiete!

    Cumps!

    =)

Leave a Reply

Your email address will not be published. Required fields are marked *