Escolar Documentos
Profissional Documentos
Cultura Documentos
Prefácio – Pág. 3
Dedicatória – Pag. 4
Sobre o Livro – Pag. 5
Capítulo 1 – Eletrônica
1.1 - Introdução - Pag.10
1.2 - Acessórios mais utilizados em eletrônica - Pag.10
1.3 - A Solda - Pag.10
1.4 - Ferro de soldar - Pag.11
1.5 - Sugador de solda - Pag.11
1.6 - Placa de circuito impresso - Pag.12
1.7 - Percloreto de ferro e caneta para desenho de circuitos - Pag.12
1.8 - Como fazer uma solda bem feita? - Pag.14
1.9 - Os componentes eletrônicos - Pag.15
1.10 - Os componentes que utilizaremos são os seguintes - Pag.15
1.10.1 - Resistor - Pag.15
1.10.2 - Cristais - Pag.16
1.10.3 - Capacitores cerâmicos - Pag.16
1.10.4 - Circuito Integrado L293D - Pag.17
1.10.5 - Multímetro - Pag.17
Capítulo 2 – Mecânica
2.1 - Introdução - Pag.21
2.2 - Modelix - Pag.21
2.3 - Motor e caixa de redução - Pag.22
2.4 - Mini Retífica - Pag.23
2.5 - Outros acessórios - Pag.24
1
6.7 - Programando o reconhecimento de voz sintetizada - Pag.90
6.8 - Código fonte da tela que carrega as palavras - Pag.92
6.9 - Código fonte da função de reconhecimento de comando de voz - Pag.95
2
Prefácio
3
Dedicatória
Quero dedicar este livro à minha família, em especial à minha mãe Maria
Amélia Molina Tiburcio. Também dedico o livro às amizades que consegui
fazer durante toda a minha vida.
4
Sobre o Livro
5
Ensinaremos essa matéria de forma simples e didática, dando a você
uma noção da programação de um robô para que este consiga “enxergar” e
fazer distinção de movimentos, “ouvir” e identificar instruções de voz, ter
uma conversa razoável com um interlocutor humano e se movimentar de
acordo com sua própria “vontade”.
6
Outro pioneiro, na década de 1930, Wallace J. Eckert trabalhava num
laboratório de computação com uma máquina fabricada pela IBM, ao qual a
programação era feita a base de cartões perfurados. Na época, Wallace
trabalhava em astronomia e ele programou o computador da IBM para
retornar resultados matemáticos e salvar as informações em outros cartões
perfurados, processo parecido com os pentes de memória dos dias atuais.
7
nosso projeto, deve-se adquirir a versão completa, pois a experimental é
limitada e só permite um programa do tamanho de 2 Kbytes. O Mikrobasic
pode ser comprado por US$99,00 (noventa e nove dólares).
Você vai descobrir que vale a pena comprar o MikroBasic, pois ele
será muito útil em seus próprios projetos e o custo compensa a enorme
gama de recursos que possui esta linguagem.
8
Capítulo 1 – Eletrônica
9
1.1 - Introdução
1.3 - A Solda
10
1.4 - Ferro de soldar
11
1.6 - Placa de circuito impresso
12
Figura 6 - Caneta para desenhar trilhas.
13
ATENÇÃO
Cuidado com o manuseio do percloreto, pois além de ser tóxico, ele
mancha permanentemente roupas, pisos e azulejos e não sai nem
com reza brava! Faça todos os procedimentos num local isolado e
longe de crianças e animais. Após o uso, guarde-o em local seguro. O
produto pode ser reutilizado diversas vezes.
Você verá que a corrosão ainda não está totalmente concluída, pois
existem algumas partes de cobre cor-de-rosa ainda na placa.
Mova a placa pra frente e para trás dentro do percloreto até que o
excesso de cobre desapareça, ficando apenas as trilhas que foram
desenhadas com a caneta especial. Finalmente, remova a tinta preta com
um algodão molhado com acetona.
Uma boa solda deve ser feita com cuidado e algum treino. A solda
deve ser fina e de boa qualidade com uma percentagem alta de estanho e
de antioxidante (que serve para remover a sujeira ou oxidação dos pontos
de solda). Treine a soldagem com as instruções a seguir:
14
principal causa do mau funcionamento dos circuitos. Para resolver o
problema, remova a solda com o sugador (Figura 3) e faça novamente a
soldagem.
. Fique atento na hora de soldar para que não caia nenhum pingo de solda
em outra parte da placa e cuidado especial na manipulação do ferro para
que não venha a sofrer queimaduras. Use um suporte para quando não
estiver usando o ferro.
1.10.1 - Resistor
15
Figura 9 – Trimpot mais comum.
1.10.2 - Cristais
Figura 10 – Cristais.
16
1.10.4 - Circuito Integrado L293D
Figura 12 – L293D.
1.10.5 - Multímetro
17
Figura 14 – Multímetros digital e analógico.
O valor correto será sempre aquele que for maior que zero e menor
que o número da faixa. Por exemplo, se você posicionou o multímetro em
20k e no visor apareceu 9.5, significa que o resistor tem uma resistência de
9.5kΩ.
18
ATENÇÃO
Nunca meça tensões de corrente alternada posicionando o multímetro
em corrente continua. Isso pode danificar o aparelho. Corrente
contínua e corrente alternada têm tipos de medições diferentes. Como
não vamos trabalhar com alternada, não vamos explicar os seus
fundamentos.
19
Capítulo 2 – Mecânica
20
2.1 - Introdução
2.2 - Modelix
21
A Figura 16 mostra algumas peças de alumínio do kit Modelix.
22
No nosso projeto, vamos usar duas caixas de redução ligadas a dois
motores CC. Quando abordarmos a montagem da estrutura mecânica,
falaremos mais sobre caixas de redução e onde podemos encontrá-las em
sucatas.
ATENÇÃO
Um ponto importante que não deve ser esquecido na hora da compra
é verificar a quantidade de acessórios que acompanham os aparelhos.
Muitas mini-retíficas de boa qualidade vêm acompanhadas de poucos
acessórios, então é importante também comprar uma maleta de
acessórios, principalmente de corte e furo, caso sua retífica venha
com poucas unidades.
23
2.5 - Outros acessórios
24
Capítulo 3 - PIC 18F452 e LCD Gráfico
25
3.1 - PIC 18F452
26
ao pino B0 que este estará registrando o valor 1, caso contrário, se
soltarmos a chave o valor será zero.
Por outro lado, podemos definir o pino B0 do PIC como pino de saída.
Se ligarmos um Led ao B0 e através de um programa, definirmos o pino
com o valor 1, o Led acenderá. Se definirmos B0 com o valor zero, o Led
apagará.
27
Figura 21 – Modelo de Dispositivo Programador de PIC.
Figura 22 – WinPic800.
28
O WinPic800 tem a função de carregar um arquivo com extensão
HEX (HEX é o programa compilado gerado pelo Mikrobasic) e gravar no
PIC. Depois de conectar o PIC ao Dispositivo Programador (Figura 21), vá
ao menu Arquivo/Abrir e carregue o arquivo HEX que você compilou no
MikroBasic.
29
Hoje, não existe uma padronização em relação aos controladores de
LCD, mas o mais comum é o controlador KS0108B. Para nosso projeto,
aconselhamos o uso do LCD tipo 12864G. Este possui o controlador
KS0108B e foi o LCD que melhor se adaptou aos testes no
desenvolvimento do projeto.
Atenção
Quando for adquirir um LCD Gráfico, verifique no Datasheet (manual
de especificações técnicas) se os pinos do LCD estão na seguinte
configuração:
N. 1 2 3 4 5 6 7 8 9 10
PINO
SINAL VSS VDD V0 RS R/W E DB0 DB1 DB2 DB3
N. 11 12 13 14 15 16 17 18 19 20
PINO
SINAL DB4 DB5 DB6 DB7 CS1 RST VEE CS2 NC NC
30
Capítulo 4 – Projetando o circuito eletrônico
31
4.1 - Introdução
32
A Figura 24 mostra como o circuito eletrônico deve ficar num lado da
placa e a posição dos componentes no outro lado. O lado direito da figura
mostra a ligação dos componentes e do LCD. Tome cuidado para não
inverter a posição dos fios no LCD.
. 1 PIC 18F452
. 7 Resistores 10 K Ohms
. 1 Cristal de 8 Mhz
33
. 1 Trimpot de 10 K Ohms (modelo semelhante ao da Figura 9 do Capítulo
1)
. 1 fonte de 5V
ATENÇÃO
Muito cuidado ao ligar o trimpot, como está mostrado ao lado direito
da Figura 24: Deve-se soldar o trimpot com a frente virada para você,
identificar os 3 pinos e soldá-los na placa, na posição mostrada na
figura 24. O trimpot é muito importante para o projeto, pois é ele quem
fornece o contraste da saída de sinal do LCD. Se a ligação for feita de
modo errado, o LCD não funcionará. Deve-se comprar o trimpot
semelhante ao modelo da Figura 9. Foram testados outros modelos
mas não funcionaram adequadamente.
Os pontos U+, U-, RX e TX são ligados aos 4 fios do cabo USB ligado
ao computador (depois veja o capítulo 8 sobre os pólos da porta USB). Os
dois pontos chamados M1 são os dois pólos do motor 1 e M2 são os dois
pólos do motor 2. Os pontos LCD + e LCD – do circuito são ligados aos
34
pontos LCD + e LCD - do LCD Gráfico.
Os dois pólos referentes à R1, R2, R3, R4, R5, R6 e R7 devem ser
ligados os dois pólos dos resistores de 10 K. Os dois pólos referentes ao
ponto A devem ser ligados ao cristal de 8 MHZ e os pontos B serão ligados
aos capacitores cerâmicos de 33 micro F.
35
Figura 25 - Conectores fêmea e macho do tipo pino.
36
Capítulo 5 – Montando a estrutura mecânica do
robô
37
5.1 - Introdução
Como foi visto no capitulo 2, iremos utilizar as peças do Modelix para
montar o corpo do robô. O kit Modelix contém peças de alumínio,
parafusos, porcas, eixos de metal, engrenagens e peças de borracha, entre
outros.
38
A figura abaixo mostra a visão frontal do LCD Grafico. Atenção para a
quantidade de furos das peças Modelix. Se precisar, faça pequenas
dobraduras nas peças para ficarem parecidas com as figuras.
39
40
A Figura abaixo mostra a estrutura com o LCD e a caixa de redução do
motor horizontal.
41
Conexão do motor na estrutura.
42
Abaixo são mostradas as visões frontal e lateral.
43
Conectando as partes da imagem anterior
44
A peça de plástico verde deve ser criada por você. Corte e faça dois
furos num pedaço de plástico resistente da mesma largura de uma
peça de alumínio do Modelix. Prenda dois parafusos na engrenagem
mais abaixo da caixa de redução, na peça de plástico e na peça do
Modelix, como mostrado na figura abaixo.
45
Este deve ser o resultado final desta etapa.
46
Agora vamos conectar a estrutura principal com a caixa de redução,
conforme figura abaixo. O motor tem que ser parafusado na estrutura e
a peça de Modelix 1 deve ser parafusado na peça de Modelix 2, no
segundo buraco. Lembre-se de que deve haver uma folga neste buraco
para que o robô movimente a cabeça para frente e para trás. Por isso,
deve-se usar um parafuso Modelix grande com duas borrachas nas
extremidades do parafuso. Não esqueça de colocar uma porca nesse
parafuso.
47
Abaixo tem o resultado final da montagem anterior. Preste muita
atenção nas conexões em buracos corretos das peças Modelix.
48
As duas últimas peças serão parafusadas em dois lugares distintos da
estrutura: No topo (EXTREMIDADE SUPERIOR) e mais abaixo
(EXTREMIDADE INFERIOR). Elas terão a função de bloquear os
movimentos da palheta do motor vertical quando estiver posicionado
na extremidade superior e inferior, como mostra a imagem abaixo:
Então você deve ligar um fio do pino S3 (do circuito) nas peças
Modelix da Extremidade Inferior e Superior e depois conecte um fio do
pino S1 à peça Modelix parafusada à engrenagem da caixa de redução
do Motor Vertical.
49
Quando a peça Modelix ligada à engrenagem do Motor Vertical
encostar-se à Extremidade Inferior ou Superior, o PIC receberá a
informação de que o motor vertical está posicionado em cima ou
embaixo.
Você pode perguntar: Mas como o PIC saberá quando o motor estiver
em cima ou embaixo, se existe apenas um sensor do ponto S3 para as
duas Extremidades?
50
Coloque uma das peças do Modelix embaixo do suporte do motor.
51
Conforme a figura abaixo, coloque a outra peça do Modelix por cima
da primeira e parafuse nos locais indicados.
52
A figura abaixo mostra a visão lateral do robô com toda a estrutura
montada.
53
Capítulo 6 – Programação do recurso de voz
54
6.1 - Introdução
55
Figura 28 – Motor CC.
56
Após o download, vá à pasta onde você salvou o programa e clique
duas vezes no ícone “vc_web.exe”. Vai aparecer a tela abaixo. Clique em
“Next >”.
57
Na próxima tela, marque a opção “I have read and accept the licence
terms” e clique em “Next >”.
58
Na próxima tela, clique em “Install >”.
59
A próxima tela solicita que o computador seja reiniciado para completar a
instalação. Clique em “Restart Now”.
60
Após o computador reiniciar, a próxima tela irá surgir. Ela mostra o
progresso da instalação. Aguarde a finalização.
61
A próxima tela solicita que o computador seja reiniciado para completar a
instalação. Clique em “Restart Now”. Pronto! O Visual C++ está
instalado.
Agora vá ao site
http://tech.groups.yahoo.com/group/build_smart_robot/files/ e salve o
arquivo “vcs_web.exe” em qualquer pasta (anote o nome da pasta onde
você salvou o arquivo para que possa instalá-lo no próximo passo).
62
Na próxima tela, marque a opção “I have read and accept the licence
terms” e clique em “Next >”.
63
Na próxima tela, clique em “Install >”.
64
Na próxima tela, clique em “Exit”. Pronto! o Visual C# está instalado.
65
6.3 – Registrando o Visual C#
66
A seguir, ainda no site, clique em “Continue”.
67
Finalmente, volte ao Visual C#. Preencha o campo Registration key na tela
abaixo e clique em “Register Now”. Se aparecer uma mensagem de alerta
com os dizeres “Deseja permitir que este programa atualize o seu
computador?”, clique em “SIM”.
68
Irá aparecer o site da Microsoft. Preencha os campos Email address e
Password com seu usuário e senha do MSN ou HOTMAIL e aperte o botão
“Sign In”
69
Irá aparecer uma página com o numero do registro. Anote o número
marcado em vermelho (a marca vermelha é nossa).
70
6.5 - Biblioteca de voz
71
Porém é difícil entender o que o Microsoft Speech fala quando as
frases são ditas em português, porque ele utiliza a voz padrão do Windows
7 e essa voz é baseada no sotaque inglês. Então nós precisaremos incluir
algumas outras vozes que falem com sotaque português, para que você
possa utilizar nos seus futuros projetos.
72
Na tela abaixo, clique em Conversão de Texto em Fala.
73
Mas como você pode reparar, as vozes padrão do Windows são em
inglês e então será necessário instalar vozes com sotaque em português
para que você conheça como usar vozes em português.
74
Após o Download, Siga as instruções abaixo:
a) Vá à pasta onde você salvou o arquivo e clique duas vezes com o botão
direito do mouse sobre winsdk_web.exe e siga as instruções abaixo:
75
Na próxima tela, marque a opção “I agree” e clique em ”Next >”.
76
Na próxima tela, marque todas as opções do lado esquerdo e clique em
”Next >”.
77
A próxima tela mostra o progresso da instalação do Windows SDK.
Aguarde!
78
Se aparecer a próxima tela, clique em ”Ok”.
79
6.6 - Instalando o pacote de voz em português
80
Escolha uma pasta para instalação e clique em “Avançar >”.
81
Na tela seguinte, marque a opção “I accept the agreement” e clique em
“Next >”.
82
Na próxima tela, escolha a opção “Typical Installation” e clique em “Next
>”.
83
Agora clique em “Install”.
84
Em seguida, a tela abaixo aparecerá. Clique em “I agree”.
OBS: Esta tela aparecerá toda vez que você iniciar o Windows. Clique
sempre em “I agree”:
85
Agora precisamos instalar o programa “eSpeak”, que está disponível
no site http://espeak.sourceforge.net/download.html (baixe a versão para
Windows). Este programa habilita as vozes de LianeTTS no recurso de Fala
do Painel de Controle do Windows. Depois de descarregado, descompacte
e clique no ícone setup_espeak.exe.
86
Em seguida, aparecerá tela abaixo solicitando que sejam informadas
as vozes que se pretende instalar. Adicione mb-br4, que é a biblioteca de
voz em português.
87
Desmarque a opção “Visualizar Readme.txt” e clique em “Concluir”:
Agora copie o arquivo br4, que está na pasta onde foi instalado o
LianeTTS (C:\winvox\Lianetts) para a pasta de instalação do eSpeak:
(C:\Program Files\eSpeak\espeak-data\mbrola).
88
ATENÇÃO
89
6.7 - Programando o reconhecimento de voz sintetizada
90
TOMOVE – Move o motor horizontal da cabeça para n posições. Após dar o
comando “mover”, diga um número de “um” a “seis” (ONE to SIX). O robô
irá se mover n passos para a esquerda ou n passos para a direita.
ONE – Move a cabeça horizontalmente uma posição
TWO – Move a cabeça duas posições
THREE – Move a cabeça três posições
FOUR – Move a cabeça quatro posições
FIVE – Move a cabeça cinco posições
SIX – Move a cabeça seis posições
91
Figura 31 – Tela MainForm.cs
comando[0] = "SERIOUS";
comando[1] = "ANGRY";
comando[2] = "SAD";
comando[3] = "TURNON";
comando[4] = "TURNOFF";
comando[5] = "RIGHT";
comando[6] = "LEFT";
comando[7] = "GOAHEAD";
comando[8] = "BACK";
comando[9] = "TOMOVE";
comando[10] = "ONE";
comando[11] = "TWO";
comando[12] = "THREE";
92
comando[13] = "FOUR";
comando[14] = "FIVE";
comando[15] = "SIX";
comando[16] = "HOW ARE YOU?";
comando[17] = "I AM OK";
comando[18] = "ARE YOU FINE?";
a = 0;
93
Se aparecer tela abaixo, clique em “Click here to switch to code
view”, para entrar no código fonte do objeto.
94
Outra função essencial deste objeto é a fala artificial ou voz
sintetizada. A linha de programa abaixo verifica se o comando de voz dado
foi “How are you?” (como vai você?). Então o programa irá falar com uma
voz artificial “I am fine. How about you?” (Estou bem, e você?). E outras
palavras, é possível programar o robô para estabelecer uma conversa com
você. Veja o código fonte abaixo:
Com isso, você tem uma gama infinita de comandos e respostas que
poder ser inseridos, podendo simular uma conversa entre o ser humano e o
computador. A imaginação é o limite!
int index;
ISpeechPhraseProperty oItem;
oItem = Result.PhraseInfo.Properties.Item(0).Children.Item(0);
index = oItem.Id;
if ((System.Decimal)Result.PhraseInfo.GrammarId == grammarId)
{
95
if( oItem.Name.CompareTo(this.Items[index].ToString())==0 )
{
this.SelectedIndex = index;
if (this.Text == "TOMOVE")
{
mover = true;
SendKeys.Send("M");
}
if (mover)
{
if (this.Text == "ONE") SendKeys.Send("1");
if (this.Text == "TWO") SendKeys.Send("2");
if (this.Text == "THREE") SendKeys.Send("3");
if (this.Text == "FOUR") SendKeys.Send("4");
if (this.Text == "FIVE") SendKeys.Send("5");
if (this.Text == "SIX") SendKeys.Send("6");
mover = false;
}
}
}
}
96
Fornecemos uma visão geral do processo de reconhecimento de
voz e voz sintetizada. Dê uma boa olhada em todo o programa no
Visual Studio, estude, entenda e faça as adaptações em seus próprios
projetos.
97
Capítulo 7 – Programação da visão artificial
98
7.1 - Introdução
OBS: A Webcam utilizada neste projeto tem 640 colunas X 480 linhas.
Você deve adquirir uma câmera com configuração semelhante. É
essencial que a Webcam fique posicionada logo atrás do robô.
99
7.2 – Algoritmo de detecção do movimento dos motores
100
Na próxima tela, clique em ”Eu concordo”:
101
Escolha a pasta de instalação (anote em um caderno) e clique em
“Próximo >”:
102
Na próxima tela, marque as opções abaixo e clique em “Instalar”.
103
Testando o OpenCV
104
Vai aparecer a seguinte tela. Clique em configurações avançadas do
sistema, conforme imagem abaixo:
105
Na próxima tela, clique em “Variáveis de ambiente”
106
IMPORTANTE: Todas as variáveis de ambiente deve ser separadas por
; (ponto e vírgula).
OBS: Agora feche e abra novamente o Visual C++ para que as
alterações tenham efeito.
Abra o Visual C++ Express Edition, vá ao menu File -> Open ->
Project/Solution, clique no botão “Abrir” e abra o projeto salvo, conforme
figura abaixo:
107
A seguir, clique na aba “Solution Explorer” (flecha do lado de cima
da figura abaixo). Em seguida, clique com o botão direito do mouse sobre
o item projeto2.1. Vai aparecer um menu “pop-up”. Clique em “Properties”
(flecha do lado de baixo).
108
No campo ao lado do item “Library Directores”, inclua os seguintes
diretórios:
109
Agora Vamos associar as bibliotecas do OpenCV ao nosso projeto.
Clique no item Configuration Properties -> Linker -> Input. No campo
Additional Dependencies, verifique se as bibliotecas cv120.lib,
cxcore120.lib e highgui120.lib estão contidas no campo, conforme figura a
seguir. Se não estiverem no campo, inclua o seguinte:
cv120.lib;cxcore120.lib;highgui120.lib
110
No lado direito da tela, procure a função int _tmain. Primeiro iremos
entender os tipos de variáveis mais importantes relacionados ao OpenCV,
no nosso projeto:
IplImage: Este tipo é atribuido a uma imagem, seja ela um bmp, jpg ou um
frame de um filme, ao vivo ou gravado.
111
Definindo as variáveis motion e capture.
IplImage* motion = 0;
CvCapture* capture = 0;
define a variável image, que será usada para conter cada frame do
filme.
IplImage* image;
Usa a variável image para receber cada frame, isto é, ela vai conter a
imagem de cada frame separadamente. Como nosso robô se
movimenta de acordo com movimentos no ambiente capturados pela
webcam, Isto será útil para tratar cada frame e identificar alguma
alteração no frame atual em relação ao frame anterior.
image = cvRetrieveFrame( capture );
112
Se a variável motion tiver algum conteúdo (motion contém cada frame
do filme), continua o processamento.
if( !motion )
{
113
center = cvPoint((comp_rect.x + comp_rect.width/2),(comp_rect.y +
comp_rect.height/2));
itoa(center.x/100,x,10);
itoa(center.y/100,y,10);
itoa(center.x/100,x,10);
itoa(center.y/100,y,10);
114
As coordenadas dos movimentos é mostrado na tela da webcam,
através da função cvPutText, como mostrado abaixo. A variável texto vai
conter as coordenadas x e y.
115
Capítulo 8 – Programação da porta USB
116
8.1 - Introdução
117
Figura 33 – Número da relação de pinos dos conectores A e B machos.
118
Figura 34 – ChipSet FT232BM.
119
Figura 36 – Posicionamento dos pinos do dispositivo de comunicação USB.
Os pinos PWL e GND devem ser ligados. São eles que possuem o
pólo negativo (-), que deve ser ligado ao pino U- do circuito do robô.
120
No próximo passo, você vai precisar ter acesso de administrador
no seu computador. Após conectar o dispositivo no computador, siga os
passos abaixo:
121
Irá aparecer a tela abaixo. Clique em Configurações avançadas do
sistema.
122
Na tela abaixo, clique com o botão direito em USB232-RCOM1 e em
Atualizar Driver...
123
Após baixar os drivers do FT232 no seu computador (veja o item 8.2),
conforme tela abaixo, clique em Procurar, insira a pasta onde você baixou
os drivers e clique em Avançar.
124
8.3 - Biblioteca de funções
125
Na mesma tela, clique em VC++ Directories, clique no item “Include
Directories” e inclua a pasta FTDrivers (e ponto e virgula), que foi
copiada para o seu computador anteriormente.
126
Explicando as funções
FT_HANDLE ftHandle;
FT_STATUS ftStatus;
DWORD bytesWritten;
127
{
printf("Open FTD Falhou!");
}
Ele apenas aceita variáveis tipo CHAR. A variável deve ser declarada
desta maneira: char charac[256];, depois deve-se usar a função strcpy_s
para atribuir um caracter à variável, por exemplo, strcpy_s(charac,"A").
Agora sim, pode ser usada: ftStatus = FT_Write(ftHandle, charac, 1,
&bytesWritten);
128
Muito bem, vimos como implementar as funções para comunicação
serial via porta USB. Estas funções farão a comunicação entre o
computador e o robô.
129
Capítulo 9 – Programação do Micro-controlador
PIC
130
9.1 – Mikrobasic
131
A letra B significa que o pino pertence a um bloco conjunto de oito
pinos, de B0 a B7. Existem outros blocos, dependendo da quantidade de
pinos que tiver o micro-controlador. No caso do 18F452, temos os blocos A,
B, C, D e E. Apenas o bloco E tem três pinos, o outros tem oito pinos cada.
. 1 PIC 18F452
. 1 Resistor de 10 K Ohms
. 1 Resistor de 330 Ohms
. 2 Capacitores Cerâmicos de 33 micro F
. 1 Cristal de 8 Mhz
. 1 Led
132
Vamos agora fazer o primeiro programa:
A quinta linha (PORTB.7 = 0) faz com que o PIC deixe de enviar sinal
elétrico para o pino B7. Procedendo assim, o LED se apaga.
133
A sexta linha (DELAY_MS(1000)) faz com que o PIC fique inativo
durante 1 segundo (1000 milissegundos). Se o LED estiver apagado, vai
ficar assim durante 1 segundo.
134
Para efetivamente configurar os parâmetros internos do nosso
programa, clique nos botões “Default” e “Ok”.
135
Figura 39 – Tela de principal do Mikrobasic.
136
Figura 41 – Tela para carga de imagens para LCD.
137
170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,
170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,
170,170,170,170,170, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 10, 10, 42, 42,170)
Portas de controle:
CS1 (LCD) = PORTB.0 (PIC)
CS2 (LCD) = PORTB.1 (PIC)
RS (LCD) = PORTB.2 (PIC)
RW (LCD) = PORTB.3 (PIC)
RST (LCD) = PORTB.5 (PIC)
EN (LCD) = PORTB.4 (PIC)
Portas de dados:
B0 (LCD) = PORTD.0 (PIC)
B1 (LCD) = PORTD.1 (PIC)
B2 (LCD) = PORTD.2 (PIC)
138
B3 (LCD) = PORTD.3 (PIC)
B4 (LCD) = PORTD.4 (PIC)
B5 (LCD) = PORTD.5 (PIC)
B6 (LCD) = PORTD.6 (PIC)
B7 (LCD) = PORTD.7 (PIC)
139
Finamente, se receber X = 2 e Y= 1, O motor X irá à direita um passo
e o motor Y irá para trás dois passos.
' ------------------------------------------------------
' GLCD Picture name: tela_principal.bmp
' A variável tela_principal_bmp vai conter a tela
' principal do LCD, que neste caso é
' ------------------------------------------------------
main:
140
'Configurando o LCD
Glcd_Init(PORTB,0,1,2,3,5,4,PORTD)
mostraMon = "1"
contad = 0
segundo = 0
T1CON = 1
pir1.TMR1IF = 0
PIE1 = 1
INTCON = $C0
mostraCara = "2"
fezComando = "0"
141
milis = 16
gosub MostraCaraRobot
if (contad = 2) then
gosub VerificaComando
contad = 0
end if
x = txt2
end if
wend
'********************************************
142
Conclusão
2) Posicione a WebCam logo atrás do robô numa altura dez cm mais alto.
9) Deve aparecer uma tela preta e outra tela com a imagem da WebCam.
12) Experimente dar comandos de voz para o robô, que foram configurados
no programa de reconhecimento de voz.
Considerações finais
143
Estarei sempre disponível para ajudar você, leitor. Criei um grupo
para que você possa compartilhar experiências e sanar dúvidas. Sempre
que possível participarei do grupo para ajudá-lo a fazer o projeto e o mais
importante: também ajudá-lo a se aprimorar! Anote o endereço do grupo:
http://groups.yahoo.com/group/build_smart_robot
Obrigado por ter adquirido este livro. O que espero de você é que
trabalhe duro e se divirta.
O AUTOR
144