LusoRobótica - Robótica em Português
Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: _ze_pedro_ em 10 de Novembro de 2009, 19:44
-
boas!
eu ando do 12º ano tenho de fazer a pap
vi um projecto no you tube que me despertou a atenção e decidi avançar
Sonda Móvel (Video1) ESTG - IPVC (http://www.youtube.com/watch?v=QQGsZUiRqTk#)
agora tenho algumas duvidas
eu em relação a comunicação estou a pensar em ultilizar o x-bee que tambem nao conheço muito bem
agora a minha duvida principal ocomo fazer a interface com o computador ? como o consigo visualizar as imagens e fazer um software para conseguir controlar a sonda?
cump.
-
Boa tarde.
Creio que esse projecto português já foi postado antes, contudo e infelizmente, o seu autor só quer ter muitas views no vídeo pois em todos os fóruns que vi o seu dono posta-lo só colocou o vídeo e um pequeno texto.
Podes controlar por Xbee facilmente com um computador com um arduino ligado a este ou com um xbee explorer:
http://www.sparkfun.com/commerce/product_info.php?products_id=8687 (http://www.sparkfun.com/commerce/product_info.php?products_id=8687)
Terás de qualquer das formas que o controlar ou por linha de comandos, ou com um software que terás que desenvolver para o efeito utilizando comunicação serial.
O microbyte fez um excelente projecto e pode-te ajudar:
http://lusorobotica.com/index.php/topic,82.0.html (http://lusorobotica.com/index.php/topic,82.0.html)
Ahh bem-vindo ;)
-
obrigado ;)
eu vou pesquisar e vou postando aqui as novidades para que me possam tambem ajudar em algo que nao saiba
cump.
-
Boas. ;)
Bem, podes guiar-te pelo trabalho que fiz...
Para teres uma ideia, o objectivo foi criar um protótipo de um veículo de combate a incêndios.
No vídeo que mostraste, tens à mesma o controlo do "carro" e um sistema de Pan+Tilt (que tem a câmara acoplada).
Na página do projecto tens várias informações, vídeos, e também download do programa de controlo e também do código do Arduino.
http://protovci.wordpress.com/ (http://protovci.wordpress.com/)
Qualquer dúvida específica, podes falar comigo (http://ricardodias.wordpress.com/contactos/). ;)
-
eu ja li o post do teu trabalho todo lol
acho que te vou solicitar muitas vezes
vou precisar de umas dicas principalmente na interface com o pc
cump.
-
De onde és? Se fores de perto, podemos combinar um encontro e eu explico-te tudo tim tim por tim tim. :P
-
lisboa
espero que sejas daqui lool
-
Infelizmente não... :P Entroncamento. Ainda é longe. Mas se quiseres cá vir, falamos.
É um trabalho de grupo ou individual?
-
hum isso da para ir de comboio para ai não da? lol
era uma grande ajuda mesmo
para fazer a interface no computador como fizes.te assim de forma muito simples
vou fazer o trabalho sosinho ;)
cump.
-
Dá... Entroncamento é a cidade dos comboios :D
Bom, o GUI foi feito em Python utilizando 2 bibliotecas: PyGame (esta biblioteca permitiu receber os dados do Joystick, ou gamepad, mas também de construir todo o ambiente gráfico das instruções que se enviavam para o carro) e PySerial (esta biblioteca basicamente dá a oportunidade ao teu código Python para comunicar com um dispositivo Serial, neste caso com o XBee acoplato ao XBee Explorer USB)
É claro que não tens de o fazer em Python... Podes fazer em VB.NET, em C++, ou noutra linguagem qualquer que te sintas mais à vontade.
-
ok
olha tens msn? assim era mais facil para falarmos...
cump.
-
Eu tenho MSN mas acho que para o bem da "comunidade" devias pôr as tuas dúvidas aqui para que todos possam ter acesso às perguntas e respectivas respostas.
Apenas porque um fórum é isso mesmo, é partilha de informação. E se calhar as tuas dúvidas agora, poderão vir a ser dúvidas de alguém daqui a uns dias...
-
claro claro tens razao ;)
eu nunca trabalhei com esses softwares nem sei como funcionam
por exemplo como posso ler dados de um comando que se ligue ao computador por usb?
cump.
-
Bem, isso é uma questão muito genérica.
Para responder, tens de me dizer antes se tens bases de programação... E qual a linguagem com que te sentes mais à vontade?
-
basic ou linguagem c ;)
-
Então, abres o google e pesquisas:
"basic joystick input"
"c joystick input"
Depois comparas e vês a que achas mais simples e escolhes.
-
por exemplo no python como consegues fazer isso ?
-
Já sacaste o código fonte do ProtoVCI? De certeza que não... :P
Sacas e ves aquilo... Basicamente isso vai responder à tua pergunta.
Há uma parte do código responsável por pegar nos dados do Joystick. E outra parte para enviar o que é para enviar por Serial.
-
onde vou sacar isso podes.me mandar o link?
loool
-
protovci.wordpress.com
Está lá uma página de Downloads.
-
ja consegui ver ;)
agora em termos graficos como funciona essa parte?
obrigado pela paciencia ;)
-
alguem aqui ja fez umas lagartas?
eu gostava de por umas no carro
mas as de compra normalmente sao caras
cump.
-
eu tenho aí um post que link(a) um site de um pessoal que se dedica à construção de tanques rc (enooormes) que explicam mt bem como fazer as lagartas (e não só) pesquisa no portal por 'lagartas' ou 'construção de lagartas'..
-
PRECISAVA DE UMA AJUDINHA ;)
ALGUEM ME PODE AJUDAR NISTO POR AQUI?
tenho uma pequena grande duvida lool
eu quero comunicar 2 arduinos com o xbee
vou ter um sensor de temperatura 2 motores que vao estar num carro
depois vou ter de controlar
a minha duvida é
por os xbee a comunicar e em termos de programaçao por exemplo no xbee que envia
ter "1" do pin 3 e o arduino que recebe vai por os motores a funcionar para a frente
e o sinal do sensor como envia.lo e conseguir ler o sinal nas saidas do arduino
gostava de saber em termos de programaça uma ideia para perceber melhor como se faz essa programaçao eu tenho alguns conhecimentos de C mas nao muito
podem.me ajudar?;)
cump.
ze pedro
-
tenho uma pequena grande duvida lool
eu quero comunicar 2 arduinos com o xbee
vou ter um sensor de temperatura 2 motores que vao estar num carro
depois vou ter de controlar
a minha duvida é
por os xbee a comunicar e em termos de programaçao por exemplo no xbee que envia
ter "1" do pin 3 e o arduino que recebe vai por os motores a funcionar para a frente
e o sinal do sensor como envia.lo e conseguir ler o sinal nas saidas do arduino
gostava de saber em termos de programaça uma ideia para perceber melhor como se faz essa programaçao eu tenho alguns conhecimentos de C mas nao muito
podem.me ajudar?;)
cump.
ze pedro
tens que mudar de compilador para o teu português, não está facil de entender exactamente o que pretendes :p
para usares xbee com arduinos, podes começar por experimentar comunicação Serial. Tenho um breve post em que mostro um exemplo: http://lusorobotica.com/index.php/topic,319.0.html (http://lusorobotica.com/index.php/topic,319.0.html)
se fizeres uma pesquisa no forum por "comunicação serial" obterás muita informação útil
boa sorte
-
vou tentar ser mais explicito..
imagina que tenho um botão e carrego no botão que está ligado ao arduino (por exemplo ao pin 1)
depois como o pin 1 foi a 1 vai enviar para o outro arduino que estão a comunicar através do xbee a ordem de fazer andar os dois motores para a frente
os motores vão estar ligados com o L293D
imagina que o motor 1 está ligado ao pin 1 e 2 e o motor 2 esta ligado ao pin 3 e 4
isto é so para ter uma ideia
ja entendes.te melhor? lool
obrigado pela atençao;)
-
leste o post que eu escrevi? qual foi a parte que não percebeste?
tens aqui mais informação (http://lab.guilhermemartins.net/2008/12/24/serial-comunication-with-xbee-arduino/)
-
ja li ;)
// SENDER
int analogValue2, analogValue5, val2, val5;
void setup()
{
// start serial port at 19200 bps
Serial.begin(19200);
}
void loop()
{
// read analog input
analogValue2 = analogRead(2);
analogValue5 = analogRead(5);
val2 = map(analogValue2, 0, 1023, 253, 0); // 254 and 255 for SYNC
val5 = map(analogValue5, 0, 1023, 253, 0);
Serial.print(254, BYTE); //SYNC char
Serial.print(val2, BYTE);
Serial.print(255, BYTE); //SYNC char
Serial.print(val5, BYTE);
delay(150);
}
// RECIEVER
byte incomingByte, sensor1, sensor2;
void setup() {
// start serial port at 19200 bps
Serial.begin(19200);
Serial.println(”Ready!”);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
delay(1000);
}
void loop() {
if (Serial.available()) {
incomingByte = Serial.read();
Serial.print(int(incomingByte));
if ((int(incomingByte) == 254)) {
sensor1 = Serial.read();
Serial.print(”Sensor 1 = “);
Serial.print(int(sensor1));
}
if ((int(incomingByte) == 255)) {
sensor2 = Serial.read();
Serial.print(” Sensor 2 = “);
Serial.print(int(sensor2));
}
}
analogWrite (5, sensor1);
analogWrite (6, sensor2);
}
o que ta com o risco por cima é o que nao percebo bem como isso "funciona" lol
obrigado mais uma vez pela paciência mas nunca trabalhei com isto e tenho so alguns conhecimentos de linguagem c e quero aprender mais qualquer coisa ;)
-
porque não lês antes uns bons tutoriais para entenderes melhor aquilo com que vais lidar?
-
ja tou a entender melhor ;) ja li umas coisitas
so uma pergunta
a ligaçao do xbee ao arduino é feito dessa maneira nao è?
http://www.rogercom.com/ZigBee/XBeeConfig1.gif (http://www.rogercom.com/ZigBee/XBeeConfig1.gif)
os 3.3V ligam ao pin 1
os pin 10 vai a massa
para comunicar os dois basta fazer isso nos dois x bee nao é?
-
iap é assim mesmo, cuidado que os chip da xbee é muito sensível, mais voltagem do que 3.3v ou amperagem a mais e diz-lhe adeus... se puderes e se tiveres € usa um adaptador para xbee, facilita imenso a sua utilização
-
hum ok ok
no arduino onde diz power 3.3v o xbee pode ser alimentado ai?
a escola é que vai investir mas nao me posso esticar e o adaptador nao dever assim tao barato nao é?
-
Sim, pode ser alimentado por ai.
Mas se os pinos deste não forem 5V compatíveis, terás que utilizar divisores de tensão com resistencias ou logic level converters.
-
ok ok ;)
eu vou ver isso bem qualquer duvida ponho aqui ;)
vou postar tambem umas fotos do que ja tenho feito
-
BOAS
alguem aqui me pode tirar uma duvida?
eu tenho um programa feito em python e no pc que o fiz funciona agora no pc para onde o passei nao funciona mas os programas sao da memso versao è tudo igual
a unica diferença é que no outro tinha o vista e neste tinha o xp
sera que isso tem alguma influencia??
da.me este erro
Traceback (most recent call last):
File "C:\Documents and Settings\Pedro\Ambiente de trabalho\pap.py", line 44, in <module>
screen = pygame.display.set_mode(size, pygame.FULLSCREEN)
error: No available video device
nao consigo perceber porque num pc funciona no outro nao
cump.
-
BOAS TENHO UMA DUVIDA
eu estou a fazer ums testes
gostava de saber pqq me da um erro no programa no arduino
alguem me pode ajudar?
int pwn_esq = (5);
int pwn_dir = (6);
void setup()
{
Serial.begin(9600);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (7, OUTPUT);
pinMode (8, OUTPUT);
pinMode (pwn_esq, OUTPUT);
pinMode (pwn_dir, OUTPUT);
}
void loop()
{
if ( Serial.available() > 0)
{
char inByte = Serial.read();
delay(10);
if (inByte == '*')
{
int len = 5;
char inString[len];
for (int i = 0; i <= len; i++)
{
inString[i] = Serial.read();
}
// Motores / Direcção
if ((inString[0] == 0 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
// Motor direita parado
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
analogWrite (pwn_esq, 255);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 255);
// Motor direita tras
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 0 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 255);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
// Motor direita tras
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 0 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
analogWrite (pwn_dir, 255)
// Motor direita tras
digitalWrite (7, HIGH); // -----> O ERRO É A PARTIR DAQUI <-----
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
analogWrite (pwn_dir, 255)
// Motor direita parado
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
analogWrite (pwn_dir, 255)
// Motor direita parado
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}
}
}
}
cump.
ze pedro
-
Supostamente tens vários erros:
1º (neste tenho algumas duvidas mas acho que está correcto como tenho)
int inString[len];
for (int i = 0; i <= len; i++)
{
inString[i] = Serial.read();
}
2º faltam-te ; em todos os analogWrite a partir de aqui
analogWrite (pwn_dir, 255);
// Motor direita tras
digitalWrite (7, HIGH); // -----> O ERRO É A PARTIR DAQUI <-----
-
Supostamente tens vários erros:
1º (neste tenho algumas duvidas mas acho que está correcto como tenho)
int inString[len];
for (int i = 0; i <= len; i++)
{
inString[i] = Serial.read();
}
2º faltam-te ; em todos os analogWrite a partir de aqui
analogWrite (pwn_dir, 255);
// Motor direita tras
digitalWrite (7, HIGH); // -----> O ERRO É A PARTIR DAQUI <-----
2º o motor ai vai estar parado por isso nao necessita de pwn para controlar a velocidade acho que nao è disso :)
cump.
ze pedro
-
o erro que me da è este
error: expected';' before 'digitalWrite'
in function 'void loop()':
error: expected ';' before 'digitalWrite'
-
2º faltam-te ; em todos os analogWrite a partir de aqui
-
ja experimentei e da.me o mesmo erro:S
-
int pwn_esq = (5);
int pwn_dir = (6);
void setup()
{
Serial.begin(9600);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (7, OUTPUT);
pinMode (8, OUTPUT);
pinMode (pwn_esq, OUTPUT);
pinMode (pwn_dir, OUTPUT);
}
void loop()
{
if ( Serial.available() > 0)
{
char inByte = Serial.read();
delay(10);
if (inByte == '*')
{
int len = 5;
char inString[len];
for (int i = 0; i <= len; i++)
{
inString[i] = Serial.read();
}
// Motores / Direcção
if ((inString[0] == 0 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
// Motor direita parado
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
analogWrite (pwn_esq, 255);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 255);
// Motor direita tras
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 0 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 255);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
// Motor direita tras
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 0 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
analogWrite (pwn_dir, 255);
// Motor direita tras
digitalWrite (7, HIGH); // -----> O ERRO É A PARTIR DAQUI <-----
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
analogWrite (pwn_dir, 255);
// Motor direita parado
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
analogWrite (pwn_dir, 255);
// Motor direita parado
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}
}
}
}
Foi só por ";" no fim dos analogWrite, aqui compila...
-
pura falta de atençao ;D
obrigado ;);)
-
O que importa é que agora funciona ;)
Cumps
-
agora a ver se faz o que quero
daqui a bocado quando ja estiver em casa ja vou ver :D depois ja digo aqui se funcionou
cumps
-
tenho aqui uma questão para colocar se alguem me puder ajudar agradecia
eu no carro estou a pensar em por uma camara e pensei numa camara wireless mas sao muito caras por isso quero tentar resolver o problema de uma maneira mais barata
eu vou enviar os dados por xbee para o pc e depois visualizo num programa em python a minha questao é....
sera possivel fazer isso?
as velocidades serao compativeis? sera que posso utilizar so um arduino e um xbee no carro ou necessito de outro porque eu vou comandar o carro a partir do python depois vou enviar tudo por usb para o xbee e recebo no carro depois conforme os comando o carro vai funcionar
esquematizando:
-o que envio no pc:
comando(usb) --> python --> envio para xbee (usb) --> recebo no carro pelo xbee --> o carro faz as funçoes que lhe envio
- o que recebo no pc:
sensor(es) e camara --> xbee do carro --> xbee pc --> visualizo o valor do(s) sensor(es) e visualizo a imagem da camara
sera que posso fazer isso tudo so um xbee no carro?
se alguem nao percebeu diga que eu explico melhor
ah!! a camara seria uma web usb normal
cump.
ze pedro;)
-
É tudo possivel, menos a parte da camera, um arduino não consegue enviar um filme, pois mesmo a 320x240x16 bits já são 1228800bits para cada imagem, se quiseres uns miseros 20fps são 20 vezes isso, um arduino tem 2kb de ram que se vão embora bem depressa, é impossivel mesmo.
-
ele pode enviar o video pelo xbee
-
Isso não sei que não conheço, mas o arduino a processar o video e a enviar para o xbee bem que podes esquecer, a não ser que só esteja a fazer isso e uses cores hsl ou yuv, ou mesmo escala de cinzas, mas mesmo assim é muitos muitos dados e é preciso uma boa pericia a programar e não é concerteza a usar o wiring para o fazer, mas sim puro c.
-
Isso não sei que não conheço, mas o arduino a processar o video e a enviar para o xbee bem que podes esquecer, a não ser que só esteja a fazer isso e uses cores hsl ou yuv, ou mesmo escala de cinzas, mas mesmo assim é muitos muitos dados e é preciso uma boa pericia a programar e não é concerteza a usar o wiring para o fazer, mas sim puro c.
Off-topic: É possível com micro-controlador "mbed - LPC1768 Development Board" ligar uma câmara ou um microfone para criar aplicações de processamento de vídeo ou de som? Por exemplo no vídeo conseguir destingir entre um objecto e o outro? E no som conseguir identificar num ruído a nossa comunicação, do tipo dizemos uma palavra qualquer e durante o processamento comparava os dados desse ruído com outros predefinidos na base de dados, e o micro-controlador escrevia essa palavra por exemplo num LCD, ou dar uma resposta, conforme as várias palavras que recebe.
-
Possivelmente sim, mas com muitas limitações e mesmo assim não sei se consegues, analise e processamento de sinal requerem grandes quantidades de ram para ir armazenando os dados processados e tudo o que lhes vais fazendo, na casa dos gigas, tratar imagens é em PC's que têm grande capacidade para trabalhar com numeros, som, deve ser mais facil, os telemoveis já fazem isso á uns anos, mas mesmo assim é preciso algoritmos muito bem trabalhados.
-
pois tou a ver que è muito complicado assim :S
entao alguem sabe de alguma uma soluçao facil e barata ???
obrigado pelas respostas
cump.
ze pedro
-
procura no ebay por wireless camera ou algo assim.
Olha ai, agora procura um que envie para portugal e que tenha a camera e o receptor, depois no pc terás de usar uma placa de captura de tv, mas por menos de 50$ estão ai dezenas se não mesmo centenas delas:
http://shop.ebay.com/?_from=R40&_trksid=p3907.m570.l1311&_nkw=wireless+camera&_sacat=See-All-Categories (http://shop.ebay.com/?_from=R40&_trksid=p3907.m570.l1311&_nkw=wireless+camera&_sacat=See-All-Categories)
Até parece impossivel:
camera+receptor+placa de captura de video por 20 dolares falta é saber se tem qualidade que chegue:
http://cgi.ebay.com/Wireless-Spy-Nanny-Mini-Camera-USB-DVR-Recording-PC-/260612614194?cmd=ViewItem&pt=LH_DefaultDomain_0&hash=item3cadb8e832 (http://cgi.ebay.com/Wireless-Spy-Nanny-Mini-Camera-USB-DVR-Recording-PC-/260612614194?cmd=ViewItem&pt=LH_DefaultDomain_0&hash=item3cadb8e832)
-
^^ e era mais 30$ de portes... mas já acabou.
Tmb existe isto:
http://cgi.ebay.com/Easy-CAP-Video-Capture-Adapter-USB-2-0-Audio-Laptop-/150432986346?cmd=ViewItem&pt=LH_DefaultDomain_0&hash=item23068134ea (http://cgi.ebay.com/Easy-CAP-Video-Capture-Adapter-USB-2-0-Audio-Laptop-/150432986346?cmd=ViewItem&pt=LH_DefaultDomain_0&hash=item23068134ea)
nunca experimentei, mas penso que faz o que procuras, ele consegue receber info de uma camera com fios, agora receber do receptor, com uma wireless há de ser o mesmo não?
-
Mas á lá muitas iguais a esse mete nanny camera na busca que te aparecem muitas, isso é só uma placa para pegar em video e passar para o pc, não recebe nada sem fios.
-
eu vou fazer uma pesquisa por o ebay loool
ja vi que ha muita oferta ;)
obrigado :D
-
Mas á lá muitas iguais a esse mete nanny camera na busca que te aparecem muitas, isso é só uma placa para pegar em video e passar para o pc, não recebe nada sem fios.
Estava a dizer ligar aquilo ao receptor wireless da camera, com fios, tipo
computador------easy cap------receptor ~~~~ emissor/camera.
---- = fios
~~ = sem fios
-
Sim, isso deve dar, mas atenção que aquilo faz uma resolução bastante baixa, 320x240
-
tenho mais uma duvida :D
qual é a maneira mais adequada para ligar um sensor lm35 ao arduino e para ter valores +- certos sem ruido para ler os valores e depois envia.los para o python
cump.
ze pedro
-
Por exemplo, assim:
http://pscmpf.blogspot.com/2008/12/arduino-lm35-sensor.html (http://pscmpf.blogspot.com/2008/12/arduino-lm35-sensor.html)
-
pois a minha duvida era essa :D
eu pensei em ligar assim mas nao sabia se podia haver alguns contras mas ja vi que nao ;)
obrigado ;)
-
boas
alguem ja comprou algo na inMotion??
https://www.inmotion.pt (https://www.inmotion.pt)
alguem me sabe dar um feed back??
cump.
ze pedro
-
Já comprei e recomendo.
Talvez um bocadinho cara, comparado com os preços da Sparkfun, mas com os portes é capaz de ficar ela por ela...
É uma questão de fazeres as contas.
Cumprimentos.
-
eu quero mandar vir um xbee explore e preciso dele o mais rapido possivel
obrigado microbyte
-
Mandei vir o meu de lá, pela mesma razão. ;)
De nada.
-
os nossos trabalhos sao muito parecidos loool
eu a base do meu projecto é o o teu ;)
cump.
ze pedro
-
Fixe! Então depois manda-me fotos ou assim, quero saber como correu, que nota tiveste, etc...
Mandaste-me uma PM há uns tempos, mas não te consigo responder, parece k me bloqueaste ou então tens a caixa de entrada cheia...
Aqui fica a resposta que tinha para ti:
ola tudo bem?
eu estou a basear.me no teu projecto para fazer a minha pap
nao esto ua estudar agora o programa do arduino tenho algumas duvidas
na pasta que tens no site tem o programa receiver2 , motores, e servos
tu so utilizas o receiver2 nao è? è so isso que envias para o arduino
tenho outra duvida
"if(inString[5] == 1 + 0x30)" que significa esse 0x30?
obrigado mais uma vez ;)
cump.
ze pedro
Boas novamente.
Estás à vontade para usar e alterar o código ao teu gosto.
Dizes bem... Na pasta do projecto Arduino estão lá 3 pedaços do mesmo código.
Isso está assim, porque quando crias uma nova "aba" no IDE do Arduino, ele cria-te outro ficheiro. Essa foi a forma que encontrei para separar as várias partes do carro.
Na verdade, se isso te faz confusão, podes juntar o código todo no mesmo ficheiro ".pde"
Respondendo mais especificamente à tua pergunta, não é só o receiver2 que está a ser usado, precisas de todos os outros ficheiros na mesma pasta, ou como te disse, o código junto no mesmo ficheiro.
Quanto à tua questão... Vou tentar explicar-te.
Tudo começa com a Tabela ASCII (http://www.asciitable.com/ (http://www.asciitable.com/)).
Se ainda não conheces, dá uma vista de olhos pela tabela e facilmente repararás que cada caracter tem um código associado (por exemplo o caracter '*' é o código 42 em decimal, ou 2A em hexadecimal).
Ora, o que o GUI envia são caracteres. Na verdade, envia os códigos desses caracteres. Ou seja, se eu do GUI mandar o caracter 'a', o que o Arduino vai ler é 97 (em decimal), que é o código desse caracter.
Como nós enviamos caracteres numéricos, só temos de começar a contar no caracter '0', que é 30 em hexadecimal.
Como é que fazemos isso? Subtraímos 0x30 (ou 48, é equivalente) ao caracter que recebemos e ficamos com um inteiro. Esse inteiro coincide com o caracter numérico.
Exemplo: Se nós recebermos 50 (corresponde ao caracter '2'), se subtraírmos 48 (ou 0x30), ficamos com 2. Daí o 0x30.
Percebeste? Se não percebeste, diz que eu tento explicar de outra maneira.
Vai dando notícias do teu projecto. ;)
Cumprimentos,
Ricardo Dias
-
loool
obrigado pela resposta :D
ja percebi mais ou menos
eu em casa vou ler melhor agora nao tenho muito tempo para ler com atençao porque estou no estagio
eu ja tenho o python feito com algumas alteraçoes e o programa do arduino tambem
eu vou postar aqui para dares uma vista de olhos e para veres se gostas claro :D
so um pouco :P
-
aqui esta o programa do python
tem umas " mariquices " espero que gostem ;)
micro da.me depois opiniao
# -*- coding: iso-8859-15 -*-
import serial # biblioteca pyserial
import time # biblioteca do tempo para o relogio
import pygame # biblioteca pygame
import os
import sys
from pygame.locals import *
from pygame import joystick, event
i = 0 # variavel inicial do botao btn_2 (luz on)
a = 0 # variavel inicial da botao btn_1 (luz off)
b = 1 # tentativas esgotadas
c = 3 # numero de tentativas
s = 1 # variavel do while para a porta serie
p = 0 # variavel do while da porta serie
#--------------------------------------------------------------------------------------------------------------------------------
##########
#-PASSWORD-#
##########
pw = 9999 # Password
print "AVISO\n\nTEM 3 TENTATIVAS" # imprime o numero de tentativas no inicio
password = raw_input ("\nInserir Password:")# valor inserido na password
while password != str(pw): # enquando a password nao foi correcta imprime "pass errada" e permite colocar outra vez nova password
c = c - 1 # menos uma tentativa
print ("\nPassword Errada\n___________________________________")
if c == 1: #se o numero de tentativa for = 1
print "\nAVISO\n\nTEM", c, "TENTATIVA" # imprime "tentativa"
else:
if c != 0: #se for diferente de 0
print "\nAVISO\n\nTEM", c, "TENTATIVAS" #imprime "tentativas"
if (b == 3): #se o numero de tentativas utilizadas for = 3
print ("\n\nNUMERO DE TENTATIVAS ESGOTADAS")
time.sleep(2)
os._exit(1) # para o python shell e nao avança mais
else: # se nao
b = b + 1 # incrementa 1
password = raw_input ("\nInserir Password:") # inserir de novo a password
print "\n\nPASSWORD CORRECTA\n\n___________________________________"
#---------------------------------------------------------------------------------------------------------------------------------
# normalizar os valores do joystick de -1 e 1 para 1 e 2
def normalizar(num):
if num == -1:
num = 1
elif num == 1:
num = 2
return num
def load_image(name, colorkey=None):
fullname = os.path.join('images', name)
try:
image = pygame.image.load(fullname)
except pygame.error, message:
print 'Cannot load image:', name
raise SystemExit, message
image = image.convert()
if colorkey is not None:
if colorkey is -1:
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()
#---------------------------------------------------------------------------------------------------------
#########################
""" Porta Série setup """
#########################
print ("\nPORTA SÉRIE")
porta1 = raw_input("\nNumero da porta: ") # inserir o numero da porta
#porta1 = 3
porta = int(porta1) - 1
while ((s == 1) and (p == 0)):
print ("___________________________________\n\nPORTA SÉRIE\n\nInserir Novamente")
porta1 = raw_input("\nNumero da porta: ") # inserir numero de novo
porta = int(porta1) - 1
try:
ser = serial.Serial(porta) # abre a porta usb
print 'A usar a porta',ser.portstr
s = 1
p = 1
except:
print '\nERRO: Porta nao encontrada ou em uso.'
s = 1
p = 0
ser.baudrate = 9600 # velocidade de transmissao 9600 bps
#ser.open()
#-----------------------------------------------------------------------------------------------------------------
# ################# #
""" Setup Inicial """
# ################# #
pygame.init()
background = pygame.image.load(os.path.join('images', "bem_V.png")) # imagem de inicio "bem vido!"
backgroundRect = background.get_rect()
size = (width, height) = background.get_size() # Tira as dimensões da imagem de fundo
#size = (640, 480)
screen = pygame.display.set_mode(size) # Cria uma janela do tamanho da imagem de fundo
#screen = pygame.display.set_mode(size, pygame.FULLSCREEN)
screen.blit(background, backgroundRect)
pygame.display.flip()
pygame.display.set_caption('ExplorUino - Painel de Controlo') # coloca o nome do projecto na barra do windows
clock = pygame.time.Clock()
screen.blit(background, (0, 0))
pygame.display.flip()
time.sleep(3)
# Fim do Setup
#------------------------------------------------------------------------------------------------------------------
img_fundo = pygame.image.load(os.path.join('images', "fundo.png")) # coloca a imagem de fundo
background.blit(img_fundo, (0, 0))
# declara as variaveis do joystick (esquerda) para comandar o sentido e a direcçao do carro
eixox = 0
eixoy = 0
# declara as variaveis do joystick (direita) para comandar a direcçao da camara
rot1 = 0
rot2 = 0
# declara as variaveis dos botoes do comando
btn_1 = a # luz off
btn_2 = i # luz on
btn_3 = 0 # start
try:
j = pygame.joystick.Joystick(0) # create a joystick instance
j.init() # init instance
print 'Enabled joystick: ' + j.get_name()
except pygame.error:
print 'AVISO: Nao foi encontrado nenhum joystick.'
while 1:
clock.tick(60)# velocidade do ciclo era 60
time.sleep(0.05)
pygame.event.pump()# inicio do ciclo das imagens e dos valores dos comandos
for evento in pygame.event.get():
if evento.type == pygame.JOYAXISMOTION: # se os joystick apresentarem um valor
# faz uma aproximaçao de 0 casas decimais para evitar o ruido e o tremor dos joysticks
eixox = round(j.get_axis(0), 0)
eixoy = round(j.get_axis(1), 0)
rot1 = round(j.get_axis(2), 0)
rot2 = round(j.get_axis(3), 0)
# vai "normalizar" os valores dos joysticks de -1 ou 1 para 1 ou 2
eixox = normalizar(int(eixox))
eixoy = normalizar(int(eixoy))
rot1 = normalizar(int(rot1))
rot2 = normalizar(int(rot2))
elif evento.type == pygame.JOYBUTTONDOWN or evento.type == pygame.JOYBUTTONUP:# se os botoes do comando apresentarem algum valor
#declara quais sao os botoes das variaveis
btn_1 = j.get_button(3)
btn_2 = j.get_button(2)
btn_3 = j.get_button(9)
#------------------------------------------------
###############
# Porta Série #
###############
ser.write("*")
ser.write(str(eixoy)) #0
ser.write(str(eixox)) #1
ser.write(str(btn_1)) #2 b1
ser.write(str(btn_2)) #3 b2
#ser.write(str(rot1)) #4
#ser.write(str(rot2)) #5
#ser.write(str(btn_3)) # botao start (parar tudo)
#ser.write("0") #4
#ser.write("+") #5
#------------------------------------------------
print "\nX=", eixox, " Y=", eixoy, " B1=", btn_1, " B2=", btn_2, " B3=", btn_3, "rot1=", rot1, "rot2=", rot2, # valores das variaveis do comando
pygame.draw.rect(background, (255, 255, 255), pygame.Rect(49, 90, 550, 350), 0)
#Parte da Direccao do Carro
if eixox == 1:
img_dir = pygame.image.load(os.path.join('images', "esq.png"))
elif eixox == 2:
img_dir = pygame.image.load(os.path.join('images', "dir.png"))
else:
img_dir = pygame.image.load(os.path.join('images', "0.png"))
background.blit(img_dir, (50, 110))
#Motores
if eixoy == 1:
img_mot = pygame.image.load(os.path.join('images', "frent.png"))
elif eixoy == 2:
img_mot = pygame.image.load(os.path.join('images', "tr_tr.png"))
else:
img_mot = pygame.image.load(os.path.join('images', "parado.png"))
background.blit(img_mot, (25, 290))
#Luz
if ((btn_2 == 1) or ((btn_1 == 0) and (i == 1) and (a == 1))):
i = 1
a = 1
img_luz = pygame.image.load(os.path.join('images', "luz_on.png"))
background.blit(img_luz, (350, 130))
elif ((btn_1 == 1) or ((btn_2 == 0) and (i == 0)and (a == 0))):
i = 0
a = 0
img_luz = pygame.image.load(os.path.join('images', "luz_off.png"))
background.blit(img_luz, (350, 130))
#Relógio
font = pygame.font.Font(None, 16) # tipo de letra e tamanho
curtime = time.strftime("%d-%m-%Y %H:%M:%S") # como vai ser colocadas a hora e a data
txt_time = font.render(curtime, 1, (255, 255, 255), (0,0,0))# cor da letra
pygame.draw.rect(background, (0, 0, 0), pygame.Rect(500, 30, 150, 20), 0)
background.blit(txt_time, (495, 459))#posiçao da hora e da data
img_sensor = pygame.image.load(os.path.join('images', "sensores.png")) # coloca a imagem de fundo
background.blit(img_sensor, (430, 250))
if (btn_3)== 0: # se o botao do start nao for pressionado
screen.blit(background, (0, 0))
pygame.display.flip()# executa o ciclo de novo
else: # se for pressionado
pygame.quit()# sai da janela do projecto
os._exit(1)# sair
as imagens vao em anexo
a imagens com os valores dos sensores foi uma que fiz so para ver como ficavam
so mesmo para ter uma ideia lol
ainda falta algumas coisas no python
tenho mostrar os valores dos sensores é so o que falta
em termos de material
chegaram hoje os xbee vou busca.los a tarde
ja mandei vir o xbee explore usb
acho que esta no bom caminho
cump.
-
em relaçao ao arduino
o programa que tenho por agora esta nestes modos lol
ainda falta ler os dados dos sensores fazer a conversao dos valores e enviar para o xbee
/*
Comentário:
-> LIGAÇÕES
----------------------------------------------
| IN/OUT DIGITAIS: | IN/OUT ANALÓGICAS: |
-----------------------------------------------------
0(rx) | xbee | Temperatura |
-----------------------------------------------------
1(tx) | xbee | Humidade |
-----------------------------------------------------
2 | Luz | Pressao |
-----------------------------------------------------
3 (pwn)| Motor Esq | |
-----------------------------------------------------
4 | Motor Esq | |
-----------------------------------------------------
5(pwn) | Pwn Motor Esq |
--------------------------------
6(pwn) | Pwn Motor Dir |
--------------------------------
7 | Motor Dir |
--------------------------------
8 | Motor Dir |
--------------------------------
9(pwn) | "Servo camara dir/esq"|
--------------------------------
10(pwn)| "Servo camara frt/trs"|
--------------------------------
11(pwn)| |
--------------------------------
12 | |
--------------------------------
13 | |
--------------------------------
*/
/************
** INICIO **
************/
/* Declaração de Variáveis */
int luz = (2);
int pwn_esq = (5);
int pwn_dir = (6);
int camara1 = (12);
int camara2 = (13);
int a = 0;
int i = 0;
/* Configuração de Arranque */
void setup()
{
Serial.begin(9600); // Abrir a porta série
pinMode (3, OUTPUT); // Declarar o o pin do motor esquerdo OUTPUT
pinMode (4, OUTPUT); // Declarar o o pin do motor esquerdo OUTPUT
pinMode (7, OUTPUT); // Declarar o o pin do motor direito OUTPUT
pinMode (8, OUTPUT); // Declarar o o pin do motor direito OUTPUT
pinMode (pwn_esq, OUTPUT); // Declarar o o pin do pwn do motor esquerdo OUTPUT
pinMode (pwn_dir, OUTPUT); // Declarar o o pin do pwn do motor direito OUTPUT
}
void loop()
{
if ( Serial.available() > 0) // Se ouver entrada de dados por Serial...
{
char inByte = Serial.read(); // ler um BYTE
delay(10);
if (inByte == '*') // Se o BYTE lido for um asterisco a seguir vem os dados...
{
int len = 5; // A string esperada tem 6 BYTES
char inString[len]; // declarar a variavel da string
for (int i = 0; i <= len; i++)
{
inString = Serial.read();
}
// Motores / Direcção
{
if ((inString[0] == 0 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 0);
// Motor direita parado
digitalWrite(7, LOW);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 0);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
analogWrite (pwn_esq, 255);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 255);
// Motor direita tras
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 0 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 255);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 0);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 0);
// Motor direita tras
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 0 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
analogWrite (pwn_esq, 255);
// Motor direita tras
digitalWrite (7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
analogWrite (pwn_esq, 255);
// Motor direita parado
digitalWrite(7,LOW);
digitalWrite(8,LOW);
analogWrite (pwn_dir, 0);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
analogWrite (pwn_esq, 255);
// Motor direita parado
digitalWrite(7,LOW);
digitalWrite(8,LOW);
analogWrite (pwn_dir, 0);
}
}
// luz
if((inString[3] == 1 + 0x30) || ((inString[2] == 0 + 0x30) && (i == 1)) && (a == 1))
{
digitalWrite(luz, HIGH);
i = 1;
a = 1;
}
else
if ((inString[2] == 1 + 0x30) || ((inString[3] == 0 + 0x30) && (i == 0) && (a == 0)))
{
digitalWrite(luz, LOW);
i = 0;
a = 0;
}
}
}
}
eu ja fiz uns testes e ja consigo enviar os dados para o xbee com o cabo usb e ja consigo cotrolar os motores conforme a posiçao do joystick do comando
cump.
ze pedro
-
Está fixe...
A ideia de ter algum feedback do carro também não me escapou... O que escapou na altura foi o tempo. ;D
Força com isso, quero ver alguns vídeos no fim.
-
pois eu queria por uma camara tambem no carro mas ainda estou a procura de soluçoes baratas e simples porque tambem ja nao tenho muito tempo
eu assim que puder vou pondo fotos e filmes ;)
-
ja tenho os xbee :D
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg812.imageshack.us%2Fimg812%2F2723%2Fdsc0010.th.jpg&hash=782e1dab9ade2982f5c89b58458f378811556b5c) (http://img812.imageshack.us/i/dsc0010.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
agora so ja falta o xbee explore usb e a shield para o arduino
-
mais uma foto :D
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg685.imageshack.us%2Fimg685%2F4009%2Ftgrg.th.jpg&hash=a826fa839e1a42abee41fd281cc89dc473ea6c2b) (http://img685.imageshack.us/i/tgrg.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
agora tou a testar o lm35
-
boas pessoal
estou a tentar escrever o valor do sensor no python mas nao estou a conseguir
alguem me pode ajudar??
no arduino tenho este programa
tempC = analogRead(tempPin); //read the value from the sensor
tempC = (5.0 * tempC * 100.0)/1024.0; //convert the analog data to temperature
//Serial.print(byte(tempC));
Serial.print((byte)tempC); //send the data to the computer
delay(500);
isto è so a parte para enviar falta o resto do programa todo
mas è so para perceberem
no python eu quero ler esse valor e escreve.lo
alguem me pode ajudar?
ja estive a tentar mas nao consigo
o programa do python é o que esta em cima
obrigado
cump.
ze pedro
-
Se vais ler a temperatura no pc e é lá que a vais ver, envia só o valor lido da adc e faz as contas para a conversão no pc, operações matemáticas em virgula flutuante, principalmente divisões demorarm centenas de ciclos de relógio, assim ficas com o programa mais leve.
-
hum... yah tens razao lool
mas pronto entao tenho aqui uma duvida
eu leio o adc e envio logo o valor nao è?
mas depois no python como vou ler essee valor essa è a minha duvida maior
temp = analogRead(tempPin); //read the value from the sensor
Serial.print(byte(temp));
basicamente no arduino pode ser assim ne?
-
entao e fotos? :P
-
ja postei uma na outra pagina
eu agora tenho estado mais na programaçao quando acabar o meus estagio è que vou começar na parte "mecanica" da coisa lol
-
de onde mandas-te vir os xbee?
-
foram os stores da minha escola que mandaram vir acho que foi da aliatron
para a semana vai chegar a shield para o arduino e o xbee explore usb
-
hum... yah tens razao lool
mas pronto entao tenho aqui uma duvida
eu leio o adc e envio logo o valor nao è?
mas depois no python como vou ler essee valor essa è a minha duvida maior
temp = analogRead(tempPin); //read the value from the sensor
Serial.print(byte(temp));
basicamente no arduino pode ser assim ne?
eu ja estive a tentar ler o dado e escreve.lo no ecra no python nao consegui...:S
help me!! :P
-
hum... yah tens razao lool
mas pronto entao tenho aqui uma duvida
eu leio o adc e envio logo o valor nao è?
mas depois no python como vou ler essee valor essa è a minha duvida maior
temp = analogRead(tempPin); //read the value from the sensor
Serial.print(byte(temp));
basicamente no arduino pode ser assim ne?
eu ja estive a tentar ler o dado e escreve.lo no ecra no python nao consegui...:S
help me!! :P
Calma aí... Que o que estás a fazer não faz muito sentido...
Relembrando... O analogRead() devolve valores entre 0 e 1023...
Um byte vai de 0 a 255, ao fazeres um cast do valor para um byte, eu não faço ideia do que o que o Arduino faz.
Divide por 8 para mapeares para um valor que possa ser recebido por um byte (e quando fores a calcular tens de fazer os respectuvos ajustes na fórmula), ou então tenta enviar um inteiro.
-
pois tens razao micro ::)
eu ontem estive em busca da soluçao a noite toda loool
eu vou por aqui os programas que tenho
eu acho que so tenho o problema è em ler o byte e depois escrever o numero porque de resto acho que esta bem no python da uma olhada ;)
pyhton:
# -*- coding: cp1252 -*-
import pygame
import sys
import serial
temp = "0"
#print ("\nPORTA SÉRIE")
#porta1 = raw_input("\nNumero da porta: ") # inserir o numero da porta
porta1 = 3
porta = int(porta1) - 1
try:
ser = serial.Serial(porta) # abre a porta usb
print 'A usar a porta',ser.portstr # diz qual é a porta realmente usada
except:
print 'ERRO: Porta nao encontrada ou em uso.'
ser.baudrate = 9600
pygame.init()
temp = ser.read()
screen = pygame.display.set_mode((256, 256))
screen.fill((159, 182, 205))
# Create a font
font = pygame.font.Font(None, 17)
# Render the text
text = font.render(temp, True, (255,
255, 255), (159, 182, 205))
# Create a rectangle
textRect = text.get_rect()
# Center the rectangle
textRect.centerx = screen.get_rect().centerx
textRect.centery = screen.get_rect().centery
# Blit the text
screen.blit(text, textRect)
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
arduino:
float tempC;
int tempPin = 0;
void setup()
{
Serial.begin(9600); //opens serial port, sets data rate to 9600 bps
}
void loop()
{
tempC = analogRead(tempPin); //read the value from the sensor
tempC = (5.0 * tempC * 100.0)/1024.0; //convert the analog data to temperature
//Serial.println(tempC);
Serial.print((byte)tempC); //send the data to the computer
delay(1000); //wait one second before sending new data
}
estes sao os programas em que tou a fazer os testes so nao consigo mesmo è ler no python o valor
cump.
ze pedro
-
Tu meteste a função que lê da porta de série no arranque do programa...
O ser.read() devia estar dentro do while...
Mas deve haver uma função que vê se há alguma coisa para ler da porta de série, porque tal como no arduino só faz sentido correr a funcao de leitura se houver algo para ler.
-
hum...tou a perceber +- ha algum exemplo disso? por ai?
-
hum...tou a perceber +- ha algum exemplo disso? por ai?
Não precisas de exemplos... Basta consultares as referências das bilbiotecas que estás a usar...
Só pesquisei por "pyserial", apareceu-me logo a página da bilbioteca, fui às classes:
http://pyserial.sourceforge.net/pyserial_api.html#classes (http://pyserial.sourceforge.net/pyserial_api.html#classes)
Encontrei uma:
inWaiting()
Return the number of chars in the receive buffer.
Ora, se inWaiting() for maior que 0, há qualquer coisa para ler.
-
eu ja andei por ai a ler mas nao percebi muito bem certas coisas loool ::)
è o que da ser "maçarico" lool
vou experimentar ja te digo algo ;)
-
eu ja andei por ai a ler mas nao percebi muito bem certas coisas loool ::)
è o que da ser "maçarico" lool
vou experimentar ja te digo algo ;)
Lol, o objectivo era perceberes que eu também não sei estas coisas de cor, e explicar-te como cheguei à resposta...
Saber procurar as coisas também é importante.
-
eu sei e eu ando a procura :D
passo os dias a procura de coisas ahahah algumas vao funcionando outras nem por isso lool mas vou conseguindo ;)
-
ja estive a fazer ficou assim mas nao funciona falta.me algo ainda
while (ser.inWaiting() >= 0):
temp = ser.read()
print "è :",temp
eu tenh oa certeza que esta certo eu experimentei a mandar um '*' e consigo escreve.lo
no "ser.read()" è que me falta algo porque eu mando o byte mas tenho de descodificar o byte isso é que acho que me falta
-
ja estive a fazer ficou assim mas nao funciona falta.me algo ainda
while (ser.inWaiting() >= 0):
temp = ser.read()
print "è :",temp
eu tenh oa certeza que esta certo eu experimentei a mandar um '*' e consigo escreve.lo
no "ser.read()" è que me falta algo porque eu mando o byte mas tenho de descodificar o byte isso é que acho que me falta
ser.inWaiting() >= 0 ????
Isso é sempre... A função retorna-te o nº de caracteres em buffer, ou seja, ou não tem nenhum (=0) ou tem algum (>0).
Tu tens de meter no while principal uma condição if(ser.inWaiting() >= 0) ... bla bla bla :D
-
yah tens razao
mas assim ele nem me envia nada mas supostamente o valor devia de ser maior que 0 eu estou a enviar dados :S
-
yah tens razao
mas assim ele nem me envia nada mas supostamente o valor devia de ser maior que 0 eu estou a enviar dados :S
"Ele" quem? Tens de te explicar porque eu não percebi nada dessa frase.
-
o arduino loool
eu tou a ler o sensor depois envio por serie
mas se tiver "while (ser.inWaiting() > 0):" nao me faz nada , ou seja tenho 0
-
Bom, vamos separar esta questão do resto do projecto.
No Arduino vais carregar o exemplo "AnalogInSerial" e vais ligar o sensor ao pino analógico 0, seguidamente abres a janela de Serial do programa do Arduino, para ver se realmente ele está a enviar o que é suposto.
Depois vais fazer um programa Python NOVO, com um loop, a imprimir o valor da funcao inWaiting().
-
entao vamos la com calma ;)
no arduino tenho isto
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg180.imageshack.us%2Fimg180%2F282%2F69510618.th.png&hash=280d26da6b2f50cacee2e66b15a16efdfc432fcd) (http://img180.imageshack.us/i/69510618.png/)
Uploaded with ImageShack.us (http://imageshack.us)
os valores estao correctos
-
Isso está certo, mas se calhar é desnecessário enviares tantos bytes. (Um float tem 4 bytes, um int também)
E se enviares só a parte inteira (num byte)? Reduzes 8 bytes para 1 byte (que vai de 0 a 255 - já é uma margem boa para a temperatura xD).
É só uma ideia, não estou a dizer que está mal, só que em princípio facilita a parte da leitura pelo Python.
Serial.print((byte)((int)tempC));
Se não perceberes pergunta...
-
eu percebi ;) lool
agora è a questao do python que quando vou ler o que vem do arduino o que me escreve no ecra é isto :
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg96.imageshack.us%2Fimg96%2F5621%2F22236005.th.png&hash=6e50a60934a2bf09f195269c1ff63d034c38c0cb) (http://img96.imageshack.us/i/22236005.png/)
Uploaded with ImageShack.us (http://imageshack.us)
eu acho que tem a ver da maneira como estou a ler os dados
essa è a minha grande duvida lool
obrigado pela paciencia ;)
-
eu percebi ;) lool
agora è a questao do python que quando vou ler o que vem do arduino o que me escreve no ecra é isto :
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg96.imageshack.us%2Fimg96%2F5621%2F22236005.th.png&hash=6e50a60934a2bf09f195269c1ff63d034c38c0cb) (http://img96.imageshack.us/i/22236005.png/)
Uploaded with ImageShack.us (http://imageshack.us)
eu acho que tem a ver da maneira como estou a ler os dados
obrigado pela paciencia ;)
Eu gostei muito dessa imagem, mas eu não vejo é código nenhum!!!! :P
Achas que eu me alimento a JPEGs? A minha alimentação é à base de Java e C++ xD
-
eu percebi ;) lool
agora è a questao do python que quando vou ler o que vem do arduino o que me escreve no ecra é isto :
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg96.imageshack.us%2Fimg96%2F5621%2F22236005.th.png&hash=6e50a60934a2bf09f195269c1ff63d034c38c0cb) (http://img96.imageshack.us/i/22236005.png/)
Uploaded with ImageShack.us (http://imageshack.us)
eu acho que tem a ver da maneira como estou a ler os dados
obrigado pela paciencia ;)
Eu gostei muito dessa imagem, mas eu não vejo é código nenhum!!!! :P
Achas que eu me alimento a JPEGs? A minha alimentação é à base de Java e C++ xD
lool mas nao é codigo é a imagem quando ponho em run ahahah
o que esta no meio é o que me aparece em vez do valor lool
eu ponho aqui o codigo so um pouco
-
eu percebi ;) lool
agora è a questao do python que quando vou ler o que vem do arduino o que me escreve no ecra é isto :
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg96.imageshack.us%2Fimg96%2F5621%2F22236005.th.png&hash=6e50a60934a2bf09f195269c1ff63d034c38c0cb) (http://img96.imageshack.us/i/22236005.png/)
Uploaded with ImageShack.us (http://imageshack.us)
eu acho que tem a ver da maneira como estou a ler os dados
obrigado pela paciencia ;)
Eu gostei muito dessa imagem, mas eu não vejo é código nenhum!!!! :P
Achas que eu me alimento a JPEGs? A minha alimentação é à base de Java e C++ xD
lool mas nao é codigo é a imagem quando ponho em run ahahah
o que esta no meio é o que me aparece em vez do valor lool
eu ponho aqui o codigo so um pouco
Eu percebi, estava a ser irónico ;D
Mete aí o código.
-
ai esta o codigo
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg688.imageshack.us%2Fimg688%2F5671%2F15545565.th.png&hash=4199e337f8161d8aaab4ab5ce9b9efefa41cfa50) (http://img688.imageshack.us/i/15545565.png/)
Uploaded with ImageShack.us (http://imageshack.us)
eu tenho o "while(ser.inWaiting() >= 0):" porque se estiver "while(ser.inWaiting() > 0):" nao passa dai o programa :S
-
Mete aqui em texto sff, senão tenho de estar a escrever tudo outra vez...
-
# -*- coding: cp1252 -*-
import pygame
import sys
import serial
temp = 0
#print ("\nPORTA SÉRIE")
#porta1 = raw_input("\nNumero da porta: ") # inserir o numero da porta
porta1 = 3
porta = int(porta1) - 1
try:
ser = serial.Serial(porta) # abre a porta usb
print 'A usar a porta',ser.portstr # diz qual é a porta realmente usada
except:
print 'ERRO: Porta nao encontrada ou em uso.'
ser.baudrate = 9600
pygame.init()
print "è :",temp
while(ser.inWaiting() > 0):
temp = ser.read()
print temp
screen = pygame.display.set_mode((256, 256))
screen.fill((159, 182, 205))
font = pygame.font.Font(None, 17)
text = font.render(temp, True, (255,255, 255), (159, 182, 205))
textRect = text.get_rect()
textRect.centerx = screen.get_rect().centerx
textRect.centery = screen.get_rect().centery
screen.blit(text, textRect)
pygame.display.update()
ai esta
-
Eu não tenho a certeza se a função font.render() aceita no primeiro argumento um byte.
Sabes que a funçao Read da bilbioteca serial te retorna um byte. Agora tens de construir uma String para passar como argumento à função render().
penso que basta fazeres:
text = font.render(""+temp, True, (255,255, 255), (159, 182, 205))
O Python vai concatenar um byte a uma String nula e o resultado é uma string.
Não sei se será disto, mas pelo menos despistamos já esta hipótese.
-
é so substituir isso ?? ou tenho de fazer mals alguma coisa?
è que ja substitui e da a mesma cena :(
-
Então vamos lá ver outra coisa...
Qual é o número da tua porta COM?
-
é a porta 3
-
é a porta 3
Eu não tenho a certeza, mas como tens no código estás a usar a 2...
Esquece... Estás a usar a 3.
import serial
ser = serial.Serial(2) # abrir a porta 3
print ser.portstr # check which port was really used
temp = 0
while true:
if(ser.inWaiting() > 0):
temp = int(ser.read(1))
print ""+temp
ser.close() # close port
Experimenta este código... Na consola.
-
Traceback (most recent call last):
File "C:/Documents and Settings/Zé Pedro/Desktop/test.py", line 10, in <module>
while true:
NameError: name 'true' is not defined
nao da :(
-
import serial
ser = serial.Serial(2) # abrir a porta 3
print ser.portstr # check which port was really used
#ser.baudrate (9600)
temp = 0
while 1:# true:
if(ser.inWaiting() >0):
temp = int(ser.read(1))
print ""+temp
ser.close() # close port
pus assim
agora da.me este erro:
COM3
Traceback (most recent call last):
File "C:/Documents and Settings/Zé Pedro/Desktop/test.py", line 11, in <module>
temp = int(ser.read(1))
ValueError: invalid literal for int() with base 10: '\x18'
>>>
-
import serial
ser = serial.Serial(2) # abrir a porta 3
print ser.portstr # check which port was really used
#ser.baudrate (9600)
temp = 0
while 1:# true:
if(ser.inWaiting() >0):
temp = int(ser.read(1))
print ""+temp
ser.close() # close port
pus assim
agora da.me este erro:
COM3
Traceback (most recent call last):
File "C:/Documents and Settings/Zé Pedro/Desktop/test.py", line 11, in <module>
temp = int(ser.read(1))
ValueError: invalid literal for int() with base 10: '\x18'
>>>
Muda para:
import serial
ser = serial.Serial(2) # abrir a porta 3
print ser.portstr # check which port was really used
#ser.baudrate (9600)
temp = 0
while 1:# true:
if(ser.inWaiting() >0):
temp = ord(ser.read(1))
print ""+temp
ser.close() # close port
-
ja da!! mas tive que mudar o print""+temp para print temp
ahahah :D aleluia :D
import serial
ser = serial.Serial(2) # abrir a porta 3
print ser.portstr # check which port was really used
#ser.baudrate (9600)
temp = 0
while 1:# true:
if(ser.inWaiting() >0):
temp = ord(ser.read(1))
print temp
ser.close()
obrigado micro!! ;)
-
Ainda bem! ;D
Siga a marinha! :P
-
bem ja esta tudo a funcionar a 100% :D em termos de temperatura claro lool o controle do carro começo a fazer teste para a proxima semana è quando chega o resto do material!
python :
# -*- coding: iso-8859-15 -*-
import serial # biblioteca pyserial
import time # biblioteca do tempo para o relogio
import pygame # biblioteca pygame
import os
import sys
from pygame.locals import *
from pygame import joystick, event
i = 0 # variavel inicial do botao btn_2 (luz on)
a = 0 # variavel inicial da botao btn_1 (luz off)
b = 1 # tentativas esgotadas
c = 3 # numero de tentativas
s = 1 # variavel do while para a porta serie
p = 0 # variavel do while da porta serie
temp = 0
#--------------------------------------------------------------------------------------------------------------------------------
##########
#-PASSWORD-#
##########
pw = 9999 # Password
print "AVISO\n\nTEM 3 TENTATIVAS" # imprime o numero de tentativas no inicio
password = raw_input ("\nInserir Password:")# valor inserido na password
while password != str(pw): # enquando a password nao foi correcta imprime "pass errada" e permite colocar outra vez nova password
c = c - 1 # menos uma tentativa
print ("\nPassword Errada\n___________________________________")
if c == 1: #se o numero de tentativa for = 1
print "\nAVISO\n\nTEM", c, "TENTATIVA" # imprime "tentativa"
else:
if c != 0: #se for diferente de 0
print "\nAVISO\n\nTEM", c, "TENTATIVAS" #imprime "tentativas"
if (b == 3): #se o numero de tentativas utilizadas for = 3
print ("\n\nNUMERO DE TENTATIVAS ESGOTADAS")
time.sleep(2)
os._exit(1) # para o python shell e nao avança mais
else: # se nao
b = b + 1 # incrementa 1
password = raw_input ("\nInserir Password:") # inserir de novo a password
print "\n\nPASSWORD CORRECTA\n\n___________________________________"
#---------------------------------------------------------------------------------------------------------------------------------
# normalizar os valores do joystick de -1 e 1 para 1 e 2
def normalizar(num):
if num == -1:
num = 1
elif num == 1:
num = 2
return num
def load_image(name, colorkey=None):
fullname = os.path.join('images', name)
try:
image = pygame.image.load(fullname)
except pygame.error, message:
print 'Cannot load image:', name
raise SystemExit, message
image = image.convert()
if colorkey is not None:
if colorkey is -1:
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()
#---------------------------------------------------------------------------------------------------------
#########################
""" Porta Série setup """
#########################
print ("\nPORTA SÉRIE")
#porta1 = raw_input("\nNumero da porta: ") # inserir o numero da porta
porta1 = 3
porta = int(porta1) - 1 # numero que inserido menos 1 para dar o numero verdadeiro da porta
try:
ser = serial.Serial(porta) # abre a porta usb
print '\nA usar a porta',ser.portstr # diz qual é a porta realmente usada
except:
print '\nERRO: Porta nao encontrada ou em uso.'
ser.baudrate = 9600 # velocidade de transmissao 9600 bps
#-----------------------------------------------------------------------------------------------------------------
# ################# #
""" Setup Inicial """
# ################# #
pygame.init()
background = pygame.image.load(os.path.join('images', "bem_V.png")) # imagem de inicio "bem vido!"
backgroundRect = background.get_rect()
size = (width, height) = background.get_size() # Tira as dimensões da imagem de fundo
#size = (640, 480)
screen = pygame.display.set_mode(size) # Cria uma janela do tamanho da imagem de fundo
#screen = pygame.display.set_mode(size, pygame.FULLSCREEN)
screen.blit(background, backgroundRect)
pygame.display.flip()
pygame.display.set_caption('ExplorUino - Painel de Controlo') # coloca o nome do projecto na barra do windows
#pygame.mouse.set_visible(1) # rato visivel
#OK = [pygame.JOYBUTTONDOWN, pygame.JOYHATMOTION, pygame.JOYAXISMOTION ]#pygame.KEYDOWN
clock = pygame.time.Clock()
screen.blit(background, (0, 0))
pygame.display.flip()
time.sleep(3)
# Fim do Setup
#------------------------------------------------------------------------------------------------------------------
img_fundo = pygame.image.load(os.path.join('images', "fundo.png")) # coloca a imagem de fundo
background.blit(img_fundo, (0, 0))
# declara as variaveis do joystick (esquerda) para comandar o sentido e a direcçao do carro
eixox = 0
eixoy = 0
# declara as variaveis do joystick (direita) para comandar a direcçao da camara
rot1 = 0
rot2 = 0
# declara as variaveis dos botoes do comando
btn_1 = a # luz off
btn_2 = i # luz on
btn_3 = 0 # start
try:
j = pygame.joystick.Joystick(0) # create a joystick instance
j.init() # init instance
print '\nEnabled joystick: ' + j.get_name()
except pygame.error:
print '\nAVISO: Nao foi encontrado nenhum joystick.'
while 1:
clock.tick(60)
time.sleep(0.05)
pygame.event.pump()
for evento in pygame.event.get():
if evento.type == pygame.JOYAXISMOTION: # se os joystick apresentarem um valor
# faz uma aproximaçao de 0 casas decimais para evitar o ruido e o tremor dos joysticks
eixox = round(j.get_axis(0), 0)
eixoy = round(j.get_axis(1), 0)
rot1 = round(j.get_axis(2), 0)
rot2 = round(j.get_axis(3), 0)
# vai "normalizar" os valores dos joysticks de -1 ou 1 para 1 ou 2
eixox = normalizar(int(eixox))
eixoy = normalizar(int(eixoy))
rot1 = normalizar(int(rot1))
rot2 = normalizar(int(rot2))
elif evento.type == pygame.JOYBUTTONDOWN or evento.type == pygame.JOYBUTTONUP:# se os botoes do comando apresentarem algum valor
#declara quais sao os botoes das variaveis
btn_1 = j.get_button(3)
btn_2 = j.get_button(2)
btn_3 = j.get_button(9)
#------------------------------------------------
###############
# Porta Série #
###############
ser.write("*")
ser.write(str(eixoy)) #0
ser.write(str(eixox)) #1
ser.write(str(btn_1)) #2 b1
ser.write(str(btn_2)) #3 b2
ser.write(str(rot1)) #4
ser.write(str(rot2)) #5
#-------------------------------------------------------------------------------------------
print "\nX=", eixox, " Y=", eixoy, " B1=", btn_1, " B2=", btn_2, " B3=", btn_3, "rot1=", rot1, "rot2=", rot2,"T=", temp, # valores das variaveis do comando
pygame.draw.rect(background, (255, 255, 255), pygame.Rect(49, 90, 550, 350), 0)
#Parte da Direccao do Carro
if eixox == 1:
img_dir = pygame.image.load(os.path.join('images', "esq.png"))
elif eixox == 2:
img_dir = pygame.image.load(os.path.join('images', "dir.png"))
else:
img_dir = pygame.image.load(os.path.join('images', "0.png"))
background.blit(img_dir, (50, 110))
#Motores
if eixoy == 1:
img_mot = pygame.image.load(os.path.join('images', "frent.png"))
elif eixoy == 2:
img_mot = pygame.image.load(os.path.join('images', "tras.png"))
else:
img_mot = pygame.image.load(os.path.join('images', "parado.png"))
background.blit(img_mot, (25, 290))
#Luz
if ((btn_2 == 1) or ((btn_1 == 0) and (i == 1) and (a == 1))):
i = 1
a = 1
img_luz = pygame.image.load(os.path.join('images', "luz_on.png"))
background.blit(img_luz, (350, 130))
else:
if ((btn_1 == 1) or ((btn_2 == 0) and (i == 0)and (a == 0))):
i = 0
a = 0
img_luz = pygame.image.load(os.path.join('images', "luz_off.png"))
background.blit(img_luz, (350, 130))
#Relógio
font = pygame.font.Font(None, 16) # tipo de letra e tamanho
curtime = time.strftime("%d %B %Y %H:%M:%S") # como vai ser colocadas a hora e a data
txt_time = font.render(curtime, 1, (255, 255, 255), (0,0,0))# cor da letra
pygame.draw.rect(background, (0, 0, 0), pygame.Rect(500, 30, 150, 20), 0)
background.blit(txt_time, (495, 459))#posiçao da hora e da data
#Sensor
img_sensor = pygame.image.load(os.path.join('images', "sensores.png")) # coloca a imagem de fundo
background.blit(img_sensor, (430, 245))
#if(ser.inWaiting() >0):
temp = ord(ser.read(1))
font2 = pygame.font.Font(None, 15)
text = font.render(str(temp), True, (0,0, 0), (227, 108, 10))
background.blit(text, (456, 267))
if (btn_3)== 0: # se o botao do start nao for pressionado
screen.blit(background, (0, 0))
pygame.display.flip()# executa o ciclo de novo
else: # se for pressionado
pygame.quit()# sai da janela do projecto
os._exit(1)# para o python shell
esta +- assim
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg810.imageshack.us%2Fimg810%2F7561%2Flusoimage.png&hash=9698b6e0fc6f46f793ce52d48a0bf1254a13dca7) (http://img810.imageshack.us/i/lusoimage.png/)
Uploaded with ImageShack.us (http://imageshack.us)
opinioes!!! aceitam-se :)
imagens do pyhton em anexo para quem quizer
cump.
ze pedro
-
Muito bom mesmo :D
-
Altamente, a humidade e pressão vais medir com o que?
já tinha houvido falar de python, mas nunca tinha visto código, nem nada feito com ele, acho que lhe vou dar um test drive.
-
os sensores de humidade e pressao ainda nao sei se vou por agora ta ai so por uma questao de imagem para ver como fica
so o sensor de temperatura esta a funcionar
depende do tempo e se a escola estiver disponivel para comprar
ha sensores de pressao e humidade è so procurares eu ainda tenho de procurar uns nao muito caros lool
mais uma vez obrigado micro por tudo ;)
cump.
ze pedro
-
sensor de pressao
http://aliatron.com/loja/catalog/product_info.php?products_id=728 (http://aliatron.com/loja/catalog/product_info.php?products_id=728)
sensor de humidade
http://aliatron.com/loja/catalog/product_info.php?products_id=821 (http://aliatron.com/loja/catalog/product_info.php?products_id=821)
mas acho isso muito caro vou ter que procurar
se alguem souber de sensores mais baratos que me diga algo ;)
lol
cump.
-
De pressão não estou a ver mas de humidade tens uns muito conhecidos que são de humidade e temperatura sht11.
-
e sao muito caros?
-
Não são lá muito baratos: http://pt.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=6675265 (http://pt.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=6675265)
Mas tens estes:
Sensor Humidade - http://www.sparkfun.com/commerce/product_info.php?products_id=9569 (http://www.sparkfun.com/commerce/product_info.php?products_id=9569) -
$16.95
Sensor Humidade + Temperatura - http://www.sparkfun.com/commerce/product_info.php?products_id=8257 (http://www.sparkfun.com/commerce/product_info.php?products_id=8257) - $41.95
Fala com o TigPT que a Loja LusoRobótica é distribuidora da SparkFun!
-
De momento só temos o SHT15, mas vamos tentar arranjar mais:
http://loja.lusorobotica.com/meteorologia/44-humidity-and-temperature-sensor-sht15-breakout.html (http://loja.lusorobotica.com/meteorologia/44-humidity-and-temperature-sensor-sht15-breakout.html)
-
Tinha andado lá a dar uma volta mas não o vi mas também não usei a pesquisa :p O preço até é bom em relação ao que anda por aí :)
-
InMotion tb o vende:
http://www.inmotion.pt/store/product_info.php?products_id=101 (http://www.inmotion.pt/store/product_info.php?products_id=101) (preço sem IVA)
-
epah sao um bocado caros lool
nao me posso "esticar" muito mesmo assim para me comprarem este material ja foi o que foi loool :P
-
como o sensor ja esta funcionar... ::)
hoje dediquei.me a testar a parte dos motores em 5 min fiz um carro de teste arranjei um bocado de madeira e um rolon :D
a foto nao esta grande coisa pois è tirada de uma web
ora vejam:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg231.imageshack.us%2Fimg231%2F1457%2Fpicture001pr.jpg&hash=168077de3501bfbf884d9c4c0d1c5cd7a68de0c0) (http://img231.imageshack.us/i/picture001pr.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
falta.me uma roda :( nao arranjei nenhuma para por o bicho a andar mas ja deu para fazer testes e para ver se estava tudo correcto esta tudo a funcionar como previsto mas ha um problema de gestao de dados
para conseguir escrever o valor da temperatura no python correctamente tenho de ter um delay de 300 milisegundos no arduino quando leio o valor do sensor entao como tenho de ter esse delay vou ter problemas em controlar o carro fica muito lento
entao o que acontece é
eu carrego para andar para a frente ao fim de 5.... 6 segundos os motores começam a rodar ou entao nao roda fica tipo bloqueado
se tirar a leitura do sensor no arduino ja funciona tudo na perfeiçao
alguem tem ideias de como posso dar a volta isto
eu pensei numa coisa nao sei se é possivel
eu pensei em fazer tipo um loop so para a temperatura e ter outro para os motores é possivel ??
-
bem...
depois de um dia a pensar na soluçao para o problema...ja consegui resolver ;D
o que fiz foi fazer esperar a leitura do sensor de forma a nao ter de esperar todo o programa
o programa:
int luz = (2);
int pwn_esq = (5);
int pwn_dir = (6);
int camara1 = (12);
int camara2 = (13);
int a = 0;
int i = 0;
float tempC;
int tempPin = 0;
int s = 0;
/* Configuração de Arranque */
void setup()
{
Serial.begin(9600); // Abrir a porta série
pinMode (3, OUTPUT); // Declarar o o pin do motor esquerdo OUTPUT
pinMode (4, OUTPUT); // Declarar o o pin do motor esquerdo OUTPUT
pinMode (7, OUTPUT); // Declarar o o pin do motor direito OUTPUT
pinMode (8, OUTPUT); // Declarar o o pin do motor direito OUTPUT
pinMode (pwn_esq, OUTPUT); // Declarar o o pin do pwn do motor esquerdo OUTPUT
pinMode (pwn_dir, OUTPUT); // Declarar o o pin do pwn do motor direito OUTPUT
pinMode (camara1, INPUT); // Declarar o o pin da camara OUTPUT
pinMode (camara2, INPUT); // Declarar o o pin da camara OUTPUT
}
void loop()
{
if (s == 10000)
{
tempC = analogRead(tempPin);
tempC = (5.0 * tempC * 100.0)/1024.0;
Serial.print((byte)tempC);
s = 0;
}
else
s = s + 1;
if ( Serial.available() > 0) // Se ouver entrada de dados por Serial...
{
char inByte = Serial.read(); // ler um BYTE
delay(10);
if (inByte == '*') // Se o BYTE lido for um asterisco a seguir vem os dados...
{
int len = 3; // A string esperada tem 6 BYTES
char inString[len]; // declarar a variavel da string
for (int i = 0; i <= len; i++)
{
inString = Serial.read();
}
// Motores / Direcção
{
if ((inString[0] == 0 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 0);
// Motor direita parado
digitalWrite(7, LOW);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 0);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
analogWrite (pwn_esq, 255);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 0 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 255);
// Motor direita tras
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 0 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 255);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 0);
// Motor direita frente
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 1 + 0x30))
{
// Mortor esquerda parado
digitalWrite(3, LOW);
digitalWrite(4, LOW);
analogWrite (pwn_esq, 0);
// Motor direita tras
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 0 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
analogWrite (pwn_esq, 255);
// Motor direita tras
digitalWrite (7, HIGH);
digitalWrite(8, LOW);
analogWrite (pwn_dir, 255);
}
else
if ((inString[0] == 1 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda frente
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
analogWrite (pwn_esq, 255);
// Motor direita parado
digitalWrite(7,LOW);
digitalWrite(8,LOW);
analogWrite (pwn_dir, 0);
}
else
if ((inString[0] == 2 + 0x30) && (inString[1] == 2 + 0x30))
{
// Mortor esquerda tras
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
analogWrite (pwn_esq, 255);
// Motor direita parado
digitalWrite(7,LOW);
digitalWrite(8,LOW);
analogWrite (pwn_dir, 0);
}
}
// luz
if((inString[3] == 1 + 0x30) || ((inString[2] == 0 + 0x30) && (i == 1)) && (a == 1))
{
digitalWrite(luz, HIGH);
i = 1;
a = 1;
}
else
if ((inString[2] == 1 + 0x30) || ((inString[3] == 0 + 0x30) && (i == 0) && (a == 0)))
{
digitalWrite(luz, LOW);
i = 0;
a = 0;
}
}
}
}
foi a maneira que arranjei
secalhar ha maneira de fazer de forma mais simples mas o que interessa è que esta a funcionar
cump.
ze pedro
-
bem chegou hoje a carta do xbee explore :D
amanha vou buscar aos correios
so ja falta a shield para o arduino
queria fazer uma perguntinha a quem percebe da coisa
em termos de xbee é muito complicado de configurar?? nunca trabalhei com nada igual nem parecido lool
se alguem me puder dar umas dicas agradecia ;)
cump.
ze pedro
-
Se o que pretendes é apenas comunicação entre dois módulos é relativamente fácil configurar, experimenta ver esta página onde tem muita informação, julgo que o que precisas mesmo está no ponto 3.
http://www.ladyada.net/make/xbee/usermanual.html (http://www.ladyada.net/make/xbee/usermanual.html)
-
obrigado ;)
tenho de seguir esses passos todos nao è ?;)
http://www.ladyada.net/make/xbee/arduino.html (http://www.ladyada.net/make/xbee/arduino.html)
cump.
ze pedro
-
Tens 2 maneiras de configurar, ou usando o terminal ou usando o X-CTU que é o software disponibilizado pelo fabricante da XBEE. Eu prefiro o X-CTU :)
-
ok ok :D
eu ja fiz o download do X-CTU vou utilizar essa maneira lool :P
mas ainda me falta a shield para o arduino è so o que falta depois é que vou fazer a configuraçao
se tiver duvidas vou postando aqui ;)
obrigado;)
-
micro tenho uma questao para te fazer è sobre o teu pan and tilt eu nao vou utilizar isso no projecto mas è so para saber lool
é que tenho estado a ver e na o consigo perceber lool
ser.write("0")
ser.write("+")
envias isto para o arduino que é a string 4 e 5
depois no arduino tens :
if(inString[4] == 1 + 0x30){
dim_pan(6);
}else if(inString[4] == 2 + 0x30){
dim_pan(4);
}else if(inString[4] == 3 + 0x30){
dim_pan(2);
}else if(inString[4] == 4 + 0x30){
dim_pan(1);
}else if(inString[4] == 5 + 0x30){
aum_pan(1);
}else if(inString[4] == 6 + 0x30){
aum_pan(2);
}else if(inString[4] == 7 + 0x30){
aum_pan(4);
}else if(inString[4] == 8 + 0x30){
aum_pan(6);
}
/* Tilt */
if(inString[5] == 1 + 0x30){
aum_tilt(6);
}else if(inString[5] == 2 + 0x30){
aum_tilt(4);
}else if(inString[5] == 3 + 0x30){
aum_tilt(2);
}else if(inString[5] == 4 + 0x30){
aum_tilt(1);
}else if(inString[5] == 5 + 0x30){
dim_tilt(1);
}else if(inString[5] == 6 + 0x30){
dim_tilt(2);
}else if(inString[5] == 7 + 0x30){
dim_tilt(4);
}else if(inString[5] == 8 + 0x30){
dim_tilt(6);
}
nao estou a entender como consegues enviar o valor do joystick e de onde vem esse" if(inString[5] == 8 + 0x30){", ou seja o 8 o 7 o 6....por ai fora:S
se me puderes explicar :D
cump.
ze pedro
-
A parte do
ser.write("0")
ser.write("+")
Era para ter um caracter de fim (o +) e outro "canal" se fosse necessário. Não são usados para nada.
O código Python do site é que está desactualizado.
O novo, lê os dados do segundo joystick do comando e envia o X no lugar desse "0" e o Y no lugar desse "+", pois o caracter de fim não tinha utilidade nenhuma.
Não cheguei a actualizar no site.
-
pois eu estava a achar estranho lool
a maneira como envias os dados do joystick da esquerda é da mesma maneira que envias do da direita nao é?
quer dizer nao deve ser pois tens de 1 a 8
-
pois eu estava a achar estranho lool
a maneira como envias os dados do joystick da esquerda é da mesma maneira que envias do da direita nao é?
quer dizer nao deve ser pois tens de 1 a 8
Sim sim, divido cada eixo em várias partes, para ter várias velocidades.
-
yah ja estou a perceber ;);)
por exemplo:
tens 8 combinaçoes no joystick:
x :
- 1
- 2
y:
- 1
- 2
x y :
1 1
1 2
2 1
2 2
è assim nao è?
cump.
ze pedro
obrigado pela explicaçao ;)
-
Não, olha para o código Arduino, penso que está bastantes explícito o que é suposto o Arduino receber... E não é só 1 e 2...
-
eu sei lool
eu ja entendi como funciona ;)
obrigado micro! ;)
-
eu sei lool
eu ja entendi como funciona ;)
obrigado micro! ;)
Não tem nada a ver com aquilo que puseste, mas pronto xD
-
o que eu pus foi as 8 combinaçoes que consegues fazer no joystick
nao è isso que utilizas para ter as 8?
-
o que eu pus foi as 8 combinaçoes que consegues fazer no joystick
nao è isso que utilizas para ter as 8?
Não, por isso é que disse para ires ver o código do Arduino.
-
ah ok :P lool
-
como prometido aqui vai um filme do bicho :D
as imagens nao sao muito boas foi de um telemovel mas ja da para ver algo
o carro é de testes no final nao vai ser esse esse foi um improviso rapido :D
ainda me falta a shield do xbee para o arduino em principio vem esta semana
espero que gostem
ExplorUino (http://www.youtube.com/watch?v=X_LqNABnkHM#)
cump.
ze pedro
-
boas :D
venho por aqui mais umas fotos do meu projecto
este fds estive a cacabar o carro final espero que gostem ;)
aceitam.se ideias para melhorar :D
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg443.imageshack.us%2Fimg443%2F3113%2Fdsc0264j.th.jpg&hash=5c156face93fa0f4eea5cc21b526a3155e0f128d) (http://img443.imageshack.us/i/dsc0264j.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg251.imageshack.us%2Fimg251%2F3435%2Fdsc0262i.th.jpg&hash=918e76a60491ef7b2dad5eb183e10e50a93140f5) (http://img251.imageshack.us/i/dsc0262i.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg714.imageshack.us%2Fimg714%2F9885%2Fdsc0261t.th.jpg&hash=e8875dd751eceb399eb05d4731dd2fc47575442c) (http://img714.imageshack.us/i/dsc0261t.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
espero que gostem
cump.
ze pedro
-
Estás com uma base muito fixe. Aqueles rodas são de onde?
-
sao de umas impressoras hp muito velhinhas se nao tou em erro 550c ou 500 é algo assim
nao me lembro bem
mas cada impressora tras uma roda so
cump.
ze pedro
-
ja tenho a shield para o arduino
agora estou é com dificuldaddes em configurar os xbee:S
alguem me pode ajudar?
cump.
ze pedro
-
ja consegui configurar os xbee's :D
depois ponho fotos e filmes
cump.
ze pedro
-
BOAS PESSOAL :D
ja conclui o meu projecto :D
apresentei na quinta feira de manha a minha nota foi 18 correu tudo muito bem
quero agradecer a toda a gente que me ajudou a realizar o projecto
obrigado!!
eu ja ponho imagens lool
depois vou por um video mas ainda tenho de fazer loool :D
cump.
ze pedro
-
Parabéns! :) Mas fico à espera das imagens e dos videos :p
-
Boas
Muitos parabens e faço minhas as palavras do metro, fico à espera de fotos e videos
cump
-
Parabéns!
É bom ver o nosso esforço e trabalho reconhecido!
-
Parabéns !!!
-
como prometido
aqui vao umas fotos :D
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg805.imageshack.us%2Fimg805%2F4940%2Fdsc0256s.th.jpg&hash=c9dbd33331652eef6fa607626f551c938fb71d00) (http://img805.imageshack.us/i/dsc0256s.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg641.imageshack.us%2Fimg641%2F9991%2Fdsc0261c.th.jpg&hash=a1f39a7b1e25a31c29e839634b7fade3de30686b) (http://img641.imageshack.us/i/dsc0261c.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg27.imageshack.us%2Fimg27%2F3080%2Fdsc0262o.th.jpg&hash=74f0f9b05e2cf738724a9b634e797504bb3e65aa) (http://img27.imageshack.us/i/dsc0262o.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg132.imageshack.us%2Fimg132%2F7568%2Fdsc0266zb.th.jpg&hash=4c8e84e908b0b3d21084ba5b9f5b1f744e83fe70) (http://img132.imageshack.us/i/dsc0266zb.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
falta.me o video lool
nas fotos o carro nao tem a bateria é so o que falta, excepto a primeira
espero que gostem ;)
ps: em anexo o relatorio do trabalho
-
Só não gostei foi muito da parte do "Todos os direitos reservados", pois aquele GUI em Python foi praticamente cópia do meu, mas tudo bem... Não sei se reparaste na parte da licença do ProtoVCI.
-
Está altamente, parabens pela nota mas acima de tudo pelo aspecto cool ;D
-
Fizeste o trabalho todo sozinho? Foste penalizado por isso?
Sempre que fazia trabalhos sozinho era penalizado num campo chamado "interacção grupal" por ser só eu... por isso em vez de ter 20 tiravam sempre 2-3 pontos por causa desse campo, e ficava com 17-18 :(
Já agora parabéns, está com bom aspecto :)
EDIT: reparei que no relatório usas "PWN" é PWM... não sei se foi só lapso.
-
Eu não sei como são avaliados os vossos relatórios nem que percentagem tem na nota final. A nível de conteúdo ainda está razoável agora a nível de formatação está mau. Devias ter em atenção a criação de relatórios sobretudo se pensares entrar na faculdade ou mesmo no mercado de trabalho se precisares de fazer relatórios sobre o que estás a fazer.
-
Só não gostei foi muito da parte do "Todos os direitos reservados", pois aquele GUI em Python foi praticamente cópia do meu, mas tudo bem... Não sei se reparaste na parte da licença do ProtoVCI.
eu sei eu sei
foi so para dar mais um ar profissional a coisa
eu nao tenho nem quero ter direitos de nada
e disponibilizo todo o codigo e tudo o que fiz
mas desculpa micro ;)
-
eu sei que o relatorio nao esta muito bom
pois eu nao era para ter entregue o trabalho naquele dia
mas como na minha turma fui o unico a ter trabalho feito os stores quizeram que eu apresenta.se logo o trabalho
fiz aquilo numa noite melhor que aquilo era impossivel
no dia em que acabei tudo os meus profs disseram.me apresentas amanha
eu ainda nao tinha nada de nada feito
EDIT: reparei que no relatório usas "PWN" é PWM... não sei se foi só lapso.
foi um lapso
foi tudo mesmo feito a pressa
-
Tá bom
-
Só não gostei foi muito da parte do "Todos os direitos reservados", pois aquele GUI em Python foi praticamente cópia do meu, mas tudo bem... Não sei se reparaste na parte da licença do ProtoVCI.
eu sei eu sei
foi so para dar mais um ar profissional a coisa
eu nao tenho nem quero ter direitos de nada
e disponibilizo todo o codigo e tudo o que fiz
mas desculpa micro ;)
Ainda por cima disponibilizas um código que não é teu e está sob licença... É preciso ter muito cuidado com isso, pois se fosse outro punha-te em tribunal e não saías de lá com os bolsos mais cheios...
É claro que não te vou fazer isso, mas é para chamar a atençao que não é só sacar as coisas da net... Quando se saca e usa, é preciso dar os devidos créditos a quem de direito... Ainda para mais coisas sob licença.
-
Já agora, sob que tipo de licenca?
Em portugal alguem liga a esse tipo de coisas legalmente?
-
eu nao fiz nada com o objectivo de utilizar nada para fins lucrativos foi so para dar uns aspecto mesmo profissional
como te disse nao quero ter qualquer tipo de licenças pois o objectivo do projecto era apender mais qualquer coisa e tambem me divertir pois gosto de saber coisas novas
tb desenvolvi muito codigo no projecto e experimentei muitas coisas
primeiro aprendi depois desenvolvi e nunca foi com esse objectivo de roubar nada a ngm antes pelo contrario
simplesmente desenvolvi mais coisas quem quizer utilizar o que fiz ta a vontade nao ha qualquer problema de licenças nem nada nao è esse o meu objectivo
o meu objectivo è aprender e partilhar aos outros o que aprendi e se conseguir ensinar algo tambem :D (duvido:P )
mas ja percebi que errei peço desculpa
mas como aquilo foi para um projecto escolar e "um projecto de divertimento" pareceu.me a mim no meu entender que nao havia problema algum simplesmente foi isso
-
Senso:
http://creativecommons.org/licenses/by-nc-sa/2.5/pt/ (http://creativecommons.org/licenses/by-nc-sa/2.5/pt/)
@ze pedro
Se pareceu que estou chateado, peço desculpa, não é nada disso e não me leves a mal... :D
Volto a repetir aquilo que disse, foi apenas uma chamada de atenção não directamente para ti.
Fui eu o próprio a ajudar-te e a incentivar-te a olhares para o código!
-
Eu conheço, a questão é se isso é realmente legal e se o tribunal te dá ouvidos ou não, só isso.
-
Isso é um standard internacional e penso que o próprio Arduino tem uma licença parecida...
Experimenta a dizer que inventaste uma coisa igual ao Arduino que vais ver...
-
Até todo o conteúdo do LusoRobótica está protegido por CC. Colocamos a licença no footer do mesmo. Assim todos os membros podem postar livremente as suas ideias, que ninguém pode utiliza-las para fins comerciais sem os contactar a pedir autorização.