O Teu Primeiro Robot com Picaxe

Esta tradução foi feita com o consentimento do seu autor.
O artigo original encontra-se aqui.
Todas e quaisquer questões relativamente ao seu conteúdo deverão ser discutidas no forum LMR (se possivel em inglês) .

Todas e quaisquer questões relativas à tradução para português por favor comuniquem ao tradutor (eu) .
——————————————————————————-

Este projecto não requere conhecimento de electrónica, e não está no âmbito deste projecto aprofundar muito neste sentido, apenas vai fazer com que dês o primeiro passo na construção de um robot muito rapidamente.  É baseado num sistema chamado Picaxe que apesar de ser muito simples é também bastante poderoso. Se quizeres experimentar outra plataforma igualmente simples e robusta existe o Arduino.
Tens aqui um projecto simples que usa um Arduino e uma breadboard para construir um simples perseguidor de luz.


Tempo de construção: 2 horas

URL com mais informação

Custos: $85 / 60€


Bem-vindos(as). Antes de começarmos, aqui estão umas coisas que deves ler:

  1. Para teu próprio interesse, lê isto antes de continuares
  2. Se procuras um projecto ainda mais simples e menos dispendioso, este pode-te interessar: http://letsmakerobots.com/node/87
  3. Se nunca construiste um robot antes, este video pode-te inspirar, verás que é muito fácil e que não precisas nenhum material em especial para o fazer:  http://letsmakerobots.com/node/35
  4. Para saberes onde poderás ir depois, aqui tens uma 2ª parte

OK – vamos começar  ;-)


Como começar um robot fixe por aproximadamente 85$

Isto é fixe porque:

  • A electrónica que se usa são “peças reais” (não se trata de peças inventadas que para funcionar precisam de muitas horas de modificação, e também não se trata de um simples kit de peças que é só montar e já está).
  • É fácil e simples, terás um robot feito dentro de aproximadamente uma hora!
  • Podes evoluir a partir daqui, mesmo com as mesmas peças, se não te importares de desmontar o teu robot.
  • É barato.
  • É um projecto a sério, e é divertido! É também o projecto mais divertido de construção de um Robot.. fim da história!  :)

Estas links tratam-se apenas de sítios que uso para descobrir componentes na web. Podes usar qualquer loja que gostes é claro. Convém dares uma olhada nesta página para veres “onde podes adquirir Picaxe”

Os preços são sempre aproximados. Tenta ao máximo obter todos os componentes da mesma loja, e se possível de uma loja localizada no teu país para obteres os melhores preços e a maior rapidez na entrega.

firstBot-B_replacement.jpg

1 PICAXE-28X1 Starter Pack
A placa de 28 pins neste pacote é como o jogo o Mario Bros, divertido e cheio de extras e coisas por descobrir, e faz com que queiras continuar a brincar uma e outra vez. O pacote inclui o cérebro principal, o PICAXE-28X1.

É um pouco dispendioso, mas é a única e a primeira vez que eu te recomendo a comprar, inclui muitas coisas básicas, um Cd-Rom com imensos manuais, cabos, a placa, o Microprocessador, etc.. Na verdade torna-se bastante barato. Pacotes similares costumam custar 10 vezes a mais o seu preço!

Certifica-te que obténs a versão USB, a imagem nas lojas pode não corresponder e mostra um cabo serial quando tu compras um cabo USB. Quando comprares a versão USB, não é necessário que compres o cabo USB pois este já vem incluido na caixa.

Podes comprar aqui

Uma vez que tiveres feito a compra, apenas precisas de comprar um Microcontrolador e uma placa nova para futuros projectos, sai muito mais barato e tornas-te num inventor de robots com todas as ferramentas necessárias.


Para fazeres ligações com mais facilidade aconselho-te a fazeres mais um pequeno investimento e compra female to female jumpers. Aconselho bastante esta compra, apesar de não ser estritamente necessário vais ver que te facilita a vida.


firstBot-C_replacement.jpg

1 L293D Motor Driver – Controlador de 2 motores

O nome diz tudo, falaremos mais sobre este chip :)

Podes comprar aqui


firstBot-D_replacement.jpg

1 PICAXE Servo Upgrade Pack

– Uma maneira simples de obter um servo coberto com todos os componentes necessários para este projecto.

Podes sempre obter um servo standard, os pins macho iguais na imagem e uma resistência de 330 Ohm em vez do chip amarelo fazem o mesmo.

Podes comprar aqui

O que é um Servo?
Um Servo é um componente bastante usado na robótica. Resumindo é como uma pequena caixinha preta com uns fios, e um eixo que gira cerca de 200 graus. Neste eixo podes montar um disco ou um outro qualquer periférico que aconpanhe o servo.

Os 3 fios são para: 2 para alimentação e um para envio de sinal.

O fio do sinal liga-se a algo que controle o servo, neste caso o microcontrolador.

O resultado é que o microcontrolador dá ordem ao servo para onde é que o eixo deva girar, e isto é muito útil; Tu podes programar algo para se mover para uma determinada posição.


how_20to_20start_20a_20robot_html_m635aebaf.jpg

1 Sharp GP2D120 IR Sensor – 11.5″ / Analógico
11.5″ou outro raido de alcance serve. Não compres a versão Digital dos sensores Sharp para este tipo de projectos, eles não medem as distâncias da mesma maneira que os analógicos.

Podes comprar aqui

Certifica-te que obténs o conector vermelho/preto/branco. Nem sempre vem incluido e não é um conector standard.

Este sensor não é o meu favorito, normalmente uso sensores de ultrasons, por ex o SRF05 (também se vendem loja-picaxe onde lhes chamam SRF005 e tem uma imagem da traseira do SRF04 na loja! Mas o correcto é o SRF05, eu já lhes disse mas….) Enfim, o SRF05 é muito mais fiável e preciso. Também é mais rápido e custa um pouco mais, é um pouco mais complicado de ser programado e mais complexo de se instalar – por isso não o vou usar aqui, se não tiveres experiência opta pelo Sharp.

Se optares pelo SRF05, está aqui um pequeno tutorial em que ensino a ligá-lo e a programá-lo


how_20to_20start_20a_20robot_html_476a7702.jpg

2 Motores com redutoras e rodas
Quanto mais alto o rácio, mais forte será o robot, quanto mais baixo mais rápido será o robot. Recomendo um rácio algures entre 120:1 e 210:1 para este tipo de projecto. A razão pela qual o robot é tão lento, é que este tem um rácio elevado. Lentidão é mais simples para inciantes, é mais simples de entender e de acompanhar o que acontece.

Preço total para 2+2: 15 USD
Podes comprar aqui


Também vais precisar:

  • Fita adesiva de dupla face (aquela com a parte fofinha no meio é a melhor)
  • Alguns fios
  • Fita adesiva normal (poderá servir para isolar as ligações)
  • Equipamento de soldar simples (qualquer um simples e barato serve)
  • Uma tesoura, um alicate e um canivete podem sempre ser úteis
  • Uma chave de parafusos

Podes também comprar já agora:


Onde encontrar manuais para os produtos Picaxe


OK! Fizeste a encomenda, já recebeste o material.. e deixa-me adivinhar, querer começar a construir o teu robot  :)   vamos lá começar!

how_20to_20start_20a_20robot_html_m7c8c0419.jpg

Primeiro monta as rodas nos motores. Monta as tiras de borrachas nas rodas.


how_20to_20start_20a_20robot_html_m7d73a855.jpg

Uma maneira fácil e rápida de montar coisas no teu robot (e bastante sólida e duradoura)  é usando fita adesiva (aquela que tem uma parte fofinha no meio) de dupla face.


how_20to_20start_20a_20robot_html_34acc71f.jpg

Coloca as pilhas na caixa, assim terás uma ideia real do peso e do equilibrio do chassis do robot. Põe fita adesiva de dupla face na base da caixa e na base do servo também.


how_20to_20start_20a_20robot_html_m42a09ec4.jpg

how_20to_20start_20a_20robot_html_m73a2485f.jpg

Escolhe o teu próprio design, se achares que o meu “design” é muito simples adicciona coisas como quizeres.

O principal é que tudo esteja bem colado. Pilhas, Servo e Roda. As rodas e o servo devem poder girar livremente, e o robot deve conseguir equilibrar-se nas rodas, balançando ou não.

Remove as pilhas para evitar algum curto circuito durante a montagem!


how_20to_20start_20a_20robot_html_m47be8185.jpg

Agora o cérebro.

Deves ter uma placa de projecto semelhante a esta.

(isto pode ser do teu interesse: http://letsmakerobots.com/node/75)

Nota que tem um chip já inserido. Remove-o. Este chip é um Darlington-driver, não vamos precisar dele neste projecto, por isso podes removê-lo.

É fácil remover chips dos sockets, basta inserir com cuidado uma chave de fendas e fazer uma ligeira pressão e retirar o chip com muito cuidado.


how_20to_20start_20a_20robot_html_291efe75.jpg

Um chip novo normalmente não encaixa logo dentro do socket, terás que dobrar com muito cuidado os pins para o interior em ambos os lados. Pousa o chip lateralmente numa mesa e dobra os pins ligeiramente, repete o mesmo processo do outro lado. (os pins encaixam no socket)

Certifica-te de que todos os pins ficam encaixados.

Se compras-te o upgrade de Servo da loja Picaxe, tens contigo um chip amarelo. Mete-o no mesmo sitio do Darlington.

Nota que sobram dois orifícios do socket onde entra o chip amarelo. Não te preocupes pois é mesmo assim.

Este chip amarelo são 8 * Resistências de 330 Ohm´s num só pacote. Assim, se em vez do chip tiveres uma resistência podes apenas inseri-la na slot com o número “0”, este é o único que vamos usar pois só temos um servo neste projecto.

how_20to_20start_20a_20robot_html_2060dd0.jpg

Insere também o chip maior, o cérebro, o microcontrolador, o Picaxe 28 (nº de versão) na placa de projecto.

É importante ter isto do lado correcto. Repara que há uma pequena marca num dos lados da placa.

O chip vai ser alimentado através da placa através de 2 dos seus pins.

Todos os restantes pins estão ligados à volta da placa, e serão todos programáveis, podes enviar voltagem se quizeres controlar algo ou receber voltagem se quizeres analizar algo.


how_20to_20start_20a_20robot_html_m8e36525.jpg

Agora insere o controlador de motores L293D.

Este chip recebe quatro saidas (outputs) do microcontrolador, e transforma-as em 2. É estranho não é? Mas é assim mesmo acredita… Qualquer saída do microcontrolador tem sempre dois estados “on” ou “off”. Isto limitaria os movimentos do nosso robot, só poderiamos ter o estado de “andar” ou “parado”. Não seria possivel inverter a direcção do motor. Isto não seria muito agradável se o nosso robot fosse em direcção a uma parede.

A placa é feita de maneira inteligente, então os 2 outputs ficam com o seu próprio espaço com a marca (A) e (B) logo a seguir ao chip L293D (vê na figura abaixo).  Falaremos sobre isto mais tarde.


how_20to_20start_20a_20robot_html_m5e197d54.jpg

Na parte de trás da placa encontras umas fitas de plástico. Podes removê-las pois não têm qualquer utilidade.


how_20to_20start_20a_20robot_html_78bf680a.jpg

Usa 4 fios e solda-os nos orifícios “A” e “B”.  Podes sempre usar terminais ou qualquer outro tipo de connector.

how_20to_20start_20a_20robot_html_m47e92c89.jpg

Se tiveres fita termoretráctil usa-a. Isto dá longevidade e isolamento às tuas ligações.

how_20to_20start_20a_20robot_html_740b3260.jpg

O fio correspondente 2 “A” vai para um pin do motor, e o fio do 2 “B” vai para outro pin do mesmo motor. Não importa qual é qual, desde que os fios “A” sejam ligados a um motor e os “B” a outro.


how_20to_20start_20a_20robot_html_26eee1d6.jpg

how_20to_20start_20a_20robot_html_m6140e9be.jpg

Agora vamos às ligações do servo.

Se leste a documentação do Picaxe, viste que recomendam usar duas fontes de alimentação diferentes quando se usam servos ou motores. Resumindo, sim é uma boa prática, mas como este robot é tão simples não é necessário.

Vais precisar de soldar um pin extra ao output “0”, se quizeres usar a ligação normal para o servo. Este pin vem como Picaxe Upgrade Pack (vem uma fileira destes pins), mas só vais precisar apenas de um para cada servo, e estes podem ser adquiridos em qualquer loja electrónica.

Se o cabo do teu servo for (Preto, Vermelho, Branco) ou (Preto, Vermelho, Amarelo), o Preto deve ficar na ponta da placa. O meu é (Castanho, Vermelho, Laranja) e então o castanho fica na ponta.

O truque é normalmente o Vermelho; a referência deste é “V”, “V+”, “+”, “1”.. qualquer umas destas referências é usada.

O fio preto ( ou castanho no meu caso) é “G”, “GND”, “0”, ou “-“. É conhecido como Ground, e é para onde a voltagem se dirige. Lembras-te dos 2 pólos das aulas de física?

A última cor é “o sinal” e pode ser Branco, Amarelo ou Laranja.

O servoo precisa de ambos “+ e -” ou “V e G” e sinal.

Alguns outros dispositivos podem precisar apenas de Ground e Sinal, outros poderão precisar de Ground, Voltagem, Sinal de entrada e Sinal de Saida. Pode ser confuso ao ínicio mas com o tempo habituas-te. Até eu me habituei   :)


how_20to_20start_20a_20robot_html_m50796509.jpg

how_20to_20start_20a_20robot_html_2805b34a.jpg

Vamos agora colocar a “cabeça”, o sensor Sharp IR.

Se estiveres a usar um sensor de ultrasom tipo o SRF005 vê isto porque a programação é diferente.

Há milhões de maneiras de fazer isto, seguem algumas pistas:

Vermelho precisa de ser ligado ao V1, isto é (nesta configuração) qualquer coisa marcada com “V”, terá que ser ligada aqui.

O Preto vai para o G.

O Branco liga-se ao Input Analógico 1.

O que vês na imagem é o seguinte, cortei o cabo de um servo velho e queimado, e uni o cabo do servo ao cabo do sensor e isto facilita a ligação.

Se usares este método ou outro qualquer para ligar o Sharp IR, deverás ligar também os 3 restantes inputs analógicos ao V. Eu tinham alguns “jumpers” de sobra, e podes que as 3 ligações que sobram estão cortadas. ( O último par,  deixei-o ficar, são apenas dois “Ground”, e não precisamos de unir estes.)

A razão pela qual é importante ligar as entradas analógicas restantes, é porque são “left floating”. Isto significa que se não as ligasses, terias uma leitura dos valores do sensor cheia de “ruido”.


how_20to_20start_20a_20robot_html_m1f41e5b8.jpg

OK! Vamos agora ao que interessa  :)      “Let there be life”

Deverás ter o fio Vermelho vindo das pilhas (+) ligado ao Vermelho na placa. E o Preto (-) ligado ao (G).
A maneira como fazes estas ligações dependerá do teu projecto e dos teus componentes.
Certifica-te sempre que o (+) das pilhas liga ao (V) na placa. E o (-) das pilhas liga ao (G). Isto convém sempre sempre duplamente verificado, assim evitas que os componentes se danifiquem.

Não alimentes a placa com mais do que 6V (nem mesmo pilhas de 9V).

NOTA: estamos apenas a funcionar com uma fonte de alimentação. Mais tarde vais ter que partilhar o Ground, mesmo usando o V1 e o V2. Desta maneira poderás usar uma fonte de alimentação para a placa e outra fonte de alimentação (mais forte) para os motores.

Instala o Picaxe Programming Editor num PC, segue o manual para ligar o Jack / USB / Serial.

Instala as pilhas no teu robot (ainda sem cabeça), insere o jack na placa.. e no programa de edição do Picaxe escreve:

servo 0, 150

pressiona F5, espera que o programa transfira o código para a placa, e podes ver que o servo gira, ou dá um pequeno salto (dependendo da sua posição)

Se algo correr mal aqui, certifica-te que as ligações estão todas bem, volta a ler o manuel, e se mesmo assim não encontrares uma solução escreve nos forums (em inglês).

Se tudo estiver bem, para efectuar outro teste experimenta escrever:

servo 0, 200

e pressiona F5

O servo deverá girar um pouco e parar, para andar em sentido contrário escreve:

servo 0, 150

e pressiona F5

Agora o “pescoço” do teu robot está a olhar em frente.

Cola o Sharp IR no disco do servo, e isto vai ser a “cabeça” do teu robot.

how_20to_20start_20a_20robot_html_4756dc4b.jpg

“Olá Mundo, eu sou um robot, e esto pronto a obedecer às tuas ordens e explorar o mundo  :)

Finalizas-te os passos básicos!

how_20to_20start_20a_20robot_html_5cd20d4.jpg

O design pode variar, podes ter usado outros componentes, peças, etc.. Mas se fizeste as ligações como descritas anteriormente, aqui estão algumas pistas para te iniciares na programação do robot:

Faz copy-paste deste código para o editor, e pressiona F5:

+++

main:

readadc 1, b1 ‘ lê a voltagem recebida no pin analógico 1, e assigna este valor à variável b1
debug ‘ aqui mostras o valor no na janela do editor. Selecciona “Byte” se estiver em “Word”
goto main

+++

Agora põe a tua mão na frente do robot e vê se a variável b1 é alterada. Vais usar este valor para decidir o que deverá acontecer quando existe algum obstáculo a determinada distância.

Deves também usar um qualquer tipo de suporte para apoiares o chassis do robot, pois as rodas vão começar a andar.

Copia este código para o editor e pressiona F5 com o robot ligado.

+++

high 4

low 5

+++

Uma das rodas deverá começar a rodar numa direcção. Verifica se ambas as rodas andam na mesma direcção e para a frente. Se for o caso, esta deverá ser a instrução de futuro para fazer o teu robot andar para a frente.

Se as rodas andarem para trás tenta desta maneira:

+++

low 4

high 5

+++

Para activares a outra roda escreve:

high 6

low 7

Já falámos anteriormente do servo.

Para um lado é:

servo 0, 75

Para o outro:

servo 1, 225

– ao centra:

servo 1, 150

Aqui está um pequeno programa que vai (ou que deverá, se tudo estiver correcto e se todos os parametros de controle de motores também estiverem correctos) fazer o robot andar, parar em frente das coisas, olhar para cada um dos lados para decidir qual a melhor alternativa, virar para esse lado e continuar a andar em procura de novas aventuras.

+++

Symbol dangerlevel = 70 ‘ a que distância devem estar as coisas antes de reagirmos ?
symbol turn = 300 ‘ o quanto devemos virar
symbol servo_turn = 700 ‘ quanto tempo devemos esperar que o servo vire (dependendo da sua velocidade) antes de medirmos as distâncias

main: ‘ o loop principal
readadc 1, b1 ‘ ler quanta distância está à nossa frente
if b1 < dangerlevel then
gosub nodanger ‘ se nada estiver à frente, continua em frente
else
gosub whichway ‘ se houver algum obstáculo decidir para que zona se deve ir

end if
goto main ‘ aqui termina o loop, o resto são sub-routinas

nodanger:’ aqui deverá estar a tua combinação para fazer o robot andar em frente, aqui precisas de ajustar os valores consoante a maneira como ligaste os teus motores
high 5 : high 6 : low 4 : low 7
return

whichway:
gosub totalhalt ‘ primeiro stop!

‘Olhar para um lado:
gosub lturn ‘ olha para um lado
pause servo_turn ‘ esperar que o servo termine de virar
gosub totalhalt
readadc 1, b1

‘Olhar para o outro lado:
gosub rturn ‘ olhar para o outro lado
pause servo_turn ‘
esperar que o servo termine de virar
gosub totalhalt
readadc 1, b2

‘ Decidir qual é a melhor via a seguir:
if b1<b2 then
gosub body_lturn
else
gosub body_rturn
end if
return

body_lturn:
high 6 : low 5 : low 7 : high 4 ‘ aqui deverá ser a combinação que vira o robot para um lado
pause turn : gosub totalhalt
return

body_rturn:
high 5 : low 6 : low 4 : high 7 ‘
aqui deverá ser a combinação que vira o robot para o outro lado
pause turn : gosub totalhalt
return

rturn:
servo 0, 100 ‘ olha para um lado
return

lturn:
servo 0, 200 ‘ olha para o outro lado
return

totalhalt:
low 4 : low 5 : low 6 : low 7 ‘ low nos quatro pins pára o robot!
Servo 0,150 ‘ olha em frente
wait 1 ‘ para tudo por 1 segundo
return

+++
Com alguma programação e adaptação a este código, podes fazer o robot andar e ao mesmo tempo ir virando a cabeça e tomar decisões, fazer pequenos ajustes à sua rota, virar em direcção a “zonas de interesse” por exemplo portas abertas, e tudo isto ao mesmo tempo enquanto ele se move. É muito engraçado o robot ir olhando para os lados enquanto anda.  ;)

Não te esqueças de ver a 2ª parte deste tutorial.

Som:

Podes também adiccional um pequeno buzzer ao example pin 1 e ao ground e escrever:

Sound 1, (100, 5)

– ou então fazer algo de acordo com o programa que vimos anteriormente:

Sound 1, (b1,5)

– assim obtemos sons engraçados consoante a distância dos objectos.

Podes também adiccionar um LED ao pin 2 e ao ground, e escrever:
(notaq que os leds têm uma maneira correcta de serem ligados e podem precisar de uma resistência para não queimar)

High 2

acende o LED

Low 2

apaga LED  ;)

————————————

– e que tal um apontador Laser montado num servo extra? Podes fazer com que o robot aponte o laser de um lado para o o outro, ligá-lo, desligá-lo.. podes fazer qualquer coisa que imaginares  :)

Benvindo a um mundo muito divertido que é o de fazer robots, existe uma grande diversidade de sensores, actuadores, motores à espera de serem ligados e de darem vida a robots  :)

Não te esqueças de partilhar connosco o que estás a fazer, o que tens aprendido, etc  :)

Se chegaste até aqui podes sempre dar aqui uma olhada Part II ;)

One thought on “O Teu Primeiro Robot com Picaxe”

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.