Códigos Utilizados:
Página em PHP
<html>
<head>
<title>Controle WebServer</title>
</head>
<body>
<?php
echo "<p>Pagina de Controle</p>";
include "php_serial.class.php";
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyUSB0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
//sleep(1); //era 2
?>
<br>
<table>
<tr>
<tr>
<td></td>
<td>
<?php
// Botão para Frente ?>
<form action="index.php" method="POST">
<input type="hidden" name="direcao" value="frente" />
<input type="Submit" value="Frente">
</form>
</td>
</tr>
<td>
<?php
// Botão para Esquerda ?>
<form action="index.php" method="POST">
<input type="hidden" name="direcao" value="esquerda" />
<input type="Submit" value="Esquerda">
</form>
</td>
<td>
</td>
<td>
<?php
// Botão para Direita ?>
<form action="index.php" method="POST">
<input type="hidden" name="direcao" value="direita" />
<input type="Submit" value="Direita">
</form>
</td>
</tr>
<tr>
<td></td>
<td>
<?php
// Botão para Trás ?>
<form action="index.php" method="POST">
<input type="hidden" name="direcao" value="tras" />
<input type="Submit" value="Tras">
</form>
</td>
</tr>
</table>
<?php
if ($_POST['direcao']=="esquerda"){
echo "Anda para esquerda";
$serial->sendMessage('e');
}
if ($_POST['direcao']=="frente"){
echo "Anda para frente";
$serial->sendMessage('f');
}
if ($_POST['direcao']=="direita"){
echo "Anda para direita";
$serial->sendMessage('d');
}
if ($_POST['direcao']=="tras"){
echo "Anda para tras";
$serial->sendMessage('t');
}
$serial->deviceClose();
?>
</body>
</html>
Código para Arduino
#include <Servo.h> //Inclui a biblioteca Servo
char c;
Servo servodir,servoesq; // Identifica os servos utilizados
void setup(){
pinMode(13, OUTPUT);
servodir.attach(2); //Determina a porta 10 para o servo da direita
servoesq.attach(3); //Determina a porta 11 para o servo da esquerda
servodir.write(89.9);
servoesq.write(89.9);
//Inicializaçao da Serial e Abertura
Serial.begin(9600);
Serial.println("### WWW.LAB DE GARAGEM .COM ###");
Serial.println("### Servidor PHP e Arduino ###");
for (int i=0;i<5;i++){
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
delay(100);
}
}
void loop(){
if (Serial.available() > 0)
{
c = Serial.read();
Serial.println(c);
}
else
{
delay(5);
}
if (c=='e'){
Serial.println("esquerda");
digitalWrite(13, HIGH);
servodir.write(75);
servoesq.write(78);
delay(500);
servodir.write(89.9);
servoesq.write(89.9);
digitalWrite(13, LOW);
}
if (c=='f'){
Serial.println("frente");
digitalWrite(13, HIGH);
servodir.write(75);
servoesq.write(100);
delay(1500);
servodir.write(89.9);
servoesq.write(89.9);
digitalWrite(13, LOW);
}
if (c=='d'){
Serial.println("direita");
digitalWrite(13, HIGH);
servodir.write(100);
servoesq.write(100);
delay(500);
servodir.write(89.9);
servoesq.write(89.9);
digitalWrite(13, LOW);
}
if (c=='t'){
Serial.println("tras");
digitalWrite(13, HIGH);
servodir.write(100);
servoesq.write(80);
delay(1000);
servodir.write(89.9);
servoesq.write(89.9);
digitalWrite(13, LOW);
}
if (c=='p'){
Serial.println("pare");
servodir.detach(); //Determina a porta 10 para o servo da direita
servoesq.detach(); //Determina a porta 11 para o servo da esquerda
delay(10000);
servodir.attach(2); //Determina a porta 10 para o servo da direita
servoesq.attach(3); //Determina a porta 11 para o servo da esquerda
Serial.println("reativado!");
}
c='\0';
}
Comentar
Ok, Pode deixar um abraço, valeu mesmo!!!
Valeu Lucas!
Ah! Um detalhe. Não pode esquecer de dar permissão de acesso à porta serial, conforme esse tópico: http://labdegaragem.com/forum/topics/ajuda-com-webserver-apache-php...
Boa sorte!
Muito obrigado pelo compartilhamento Marcelo, boa sorte nos projetos, você merece!!!
Abraços
Lucas,
Coloquei os códigos no post. Boa sorte!
Abraço!
Olá Marcelo,
Achei legal seu projeto, gostaria de saber se vc compartilharia, me amarro em projetos desses tipos, não tenho tanta experiência com Arduíno assim, mas gostei, e como faço para te adicionar como amigo?
Valeu cara abraço e boa sorte nos seus projetos.
Gean,
Nesse projeto usamos uma webcam comum mesmo transmitindo para um serviço de stream, o Ustream. O server com página em PHP ficou responsável pelos comandos de direção, enviando dados via serial para o Arduino.
No seu caso, você precisará embutir o vídeo na página do Server que você vai criar. Essa parte não fiz, então precisa fuçar.
Boa sorte!
OLá Marcelo pode me ajudar?!!
Estou querendo fazer (quase) o mesmo. Basicamente o robô será no mesmo style. Será totalmente controlado via interface gráfica(GUI) contendo uma câmera na qual ele enviará pra esse interface. A interface vou fazer no QT mesmo.
A questao é que nao sei que tipo de camera uso, e como será essa transmissão da video imagem para a interface gráfica,e se será arduino ou PIC. Tem ideia uheuheueuhe?
Abraço amigo
Rubens,
Com certeza! Vou postar todos os detalhes lá no wiki. O que está faltando é tempo! :(
Acho que até a semana que vem vai rolar.
O programa é basicamente o que postei no fórum, quando deu pau e pedi uma ajuda para a galera. Dá uma olhada lá que já dá para começar. assim que eu ajeitar tudo coloco no ar. Ok?
Abraço!!
Legal,
Como funciona o webserver?
Você pode explicar melhor como é feita a comunicação e a programação para o controle?
Abraço
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)