Bom dia.

Preciso de ajuda para fazer com que o Arduino me envie um POST ou GET para o PHP que vai popular o Banco MYSQL'.Já fiz varios testes e nada até agora.

Estou usando:

Arduino uno;

Ethernet Shield;

E estou usando o WAMPSERVER onde estam os arquivos .PHP e o BANCO MYSQL

Obrigado!!!

Exibições: 5709

Responder esta

Respostas a este tópico

Esse trecho de código eu utilizei para gravar a umidade e temperatura em um banco de dados...

IPAddress serverip(192, 168, 254, 2);
int serverport = 80;

EthernetClient client;
if(client.connect(serverip, serverport)){
  client.print("GET /nome_do_diretorio/nome_do_arquivo.php?temperatura=");
  client.print(temp);
  client.print("&umidade=");
  client.print(umid);
  client.println(" HTTP/1.1");
  client.println("Host: 192.168.254.2");
  client.println("User-Agent: arduino");
  client.println("Accept: text/html");
  client.println();

}

Boa tarde ALex.

Obrigado por sua atenção, eu até tentei fazer de uma forma parecida.

Eu estou usando o WampServer será que é isto que esta barrando, onde esta o seu arquivo.php

Obrigado mais uma vez.

No caso eu uso xampp, criei um diretório dentro do C:\xampp\htdocs

Ex.: C:\xampp\htdocs\nome_do_diretorio\nome_do_arquivo.php

Agora não lembro certo, mas pode ser alguma coisa relacionada a "permissões"... talvez tenha que liberar para que outras máquinas possam acessar o teu servidor (se não me engano tive que fazer isso). Verifica o firewall também, deixa o mysql "público".

Vou dar uma olahada no firewall agora no wamp não achei esta opção do mysql publico vou pesquisar.

Obrigado mais uma vez .

mysql público é no firewall. No xampp eu editei o my.ini.

deixei:

bind-address = 0.0.0.0

e

#skip-networking

vou tentar mais algumas vezes com Wamp se não der certo vou usar o Xamp.

Ai com certeza vou seguir seus passos e vai dar certo.

Obrigado mesmo.

Ps: Estou indo embora para casa (estou no trabalho).

William,

pelo que você descreveu o problema não é o mysql. É a configuração do Apache. Procure pelo arquivo httpd.conf na pasta do apache do seu Wamp. Para enviar as requisições para o php é o Apache quem vai receber, não o MySQL. Além disso, por segurança é melhor até deixar o MySQL local mesmo e só permitir ao Apache receber as conexões externas, para evitar quaisquer tentativas de intervenção não autorizada no seu banco de dados.

Um tutorial com imagens para ajudar mais do que as palavras que eu diria:

http://tarcisiogambin.net/blog/como-corrigir-erros-de-acesso-no-wam...

Bom dia Gabriel.

Obrigado pela ajuda, você comentou httpd.conf do apache mais o que eu deve alterar nela?

Obrigado.

Procure pela cláusula Directory, que geralmente vem assim:

<Directory "[sua pasta www ou htdocs]">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>

Perceba que a ordem é "Deny, Allow" (Negar, permitir). Ele primeiro nega o acesso de todos ("Deny all") e depois permite acesso somente ao localhost("Allow from 127.0.0.1").

Vamos mudar o allow para "Allow from *", permitindo acesso de qualquer endereço para aquela pasta.

<Directory "[sua pasta www ou htdocs]">
Order Deny,Allow
Deny from all
Allow from *
</Directory>

Reinicie o seu apache e pronto! Seu apache já deve permitir o acesso de qualquer endereço.

Obrigado vou fazer isto.

Pode ser "all" ao invés de " * "?

Obrigado mais uma vez.

Sim. Também pode

Boa noite Gabriel.

Blz Consegui deixar o wamp configurado na rede local.

Você poderia me ajudar com o arduino em si, você te algum exemplo para me mostra (Script) Fazendo insert no Mysql com POST ou GET .

Pergunta onde ou como ver os logs para ver se arduino esta fazendo alguma coisa, estou olhando nos logs de err do wamp mais não chega nada.

Meu código: Arduino e Php


#include <SPI.h>
#include <Ethernet.h>

int bstate = 0; // Esta é a variável que irá enviar, mas vai ser formatada como String first.
String txData =""; // Estes são os dados que serão enviados para a página PHP. Ela terá nomes e dados variáveis ??nele.

// Configurações de Rede Local
// Meu mac 90-A2-DA-0D-83-9D deve ser exclusivo na rede local
// (deve ser na parte traseira do ethernet shield)

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x83, 0x9D };
byte ip[] = { 192, 168, 0, 7 }; // Deve ser único na rede local
byte gateway[] = { 192, 168, 0, 1 }; // Deixei isso para consultas no caso de você precisar deles
byte subnet[] = { 255, 255, 255, 0 }; // Deixei isso para consultas no caso de você precisar deles

void setup()
{
Ethernet.begin(mac, ip);
// Mina funciona apenas com o mac e ip. Pode ser necessária Gateway e DNS
// Dependendo da configuração do roteador, você pode precisar
// referência http://arduino.cc/en/Reference/EthernetBegin

Serial.begin(9600); //Apenas para a saída para que possamos ver se o seu trabalho
delay(1000);
}
void loop()
{
bstate++; // Isso só acrescenta um para a variável "bstate" cada vez através do loop. Eu só fiz isso para testes
// Eu vou enviar os dados como uma String. Eu li sobre alguns com dificuldades de enviar integers.g
// 'TxDados' é uma string que é enviada para a página PHP.

txData = "BUTTON_STATE="+ (String (bstate));

// 'BUTTON_STATE' é a variável POST que a página PHP está procurando.
// O '+' coloca as partes de cordas juntos.
// '(String (bstate))' formatos 'bstate' a partir de um valor numérico para uma string.
// Múltiplas seria semelhante
// TxDados = "VARIABLE1 =" + (String (var1)) + "& variavel2 =" (String (var2));

EthernetClient client;
//("yourwebsite.com", 80) também pode ser, eu acho que um IP, (xxx.xxx.xxx.xxx, 80) ou
// você pode definir um 'servidor' variável como fizemos com 'ip' e 'mac'
// assim, 'server byte [] = {xxx, xxx, xxx, xxx}'
// então essa linha ficaria assim 'if (client.connect(server,80))'

if (client.connect("localhost",80))
{

Serial.println("localhost"); //Isso não é necessário, apenas para o gabarito
Serial.println();

// HERE IS THE MEAT AND GRAVEY = AQUI ESTÁ A CARNE E gravey
// O '/ update / update.php' é o diretório eo arquivo que você está enviando para
// se o arquivo está na raiz do domínio que seria apenas '/ update.php'


client.print("POST /PHP/Update.php HTTP/1.1\n");
// yourwebsite.com, domínio onde o arquivo php está hospedado

client.print("Host: yourwebsite.com\n");
client.print("Connection: close\n");

client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");

// Lembre-se de nossa variável TxDados? Ele tem todas as informações que estamos enviando
// para a página PHP, 'update.php'. MAS, a página PHP precisa saber quantos caracteres
// estão vindo. Damos-lo usando "txData.length () '

client.print(txData.length());
client.print("\n\n");
client.print(txData); // after all of the required junk we send the data
}
else
{
Serial.println("Connection Failed."); // Mais uma vez a série é para o gabarito.
Serial.println();
}
delay(5000); // este atraso foi para o meu teste para enviar um número a cada 5 segundos
}

______________________________________________________________________________________________________

<?php
require_once("config.php");

$nome = $_POST["BUTTON_STATE"];

//conectando e selecionando o banco de dados
$banco = mysql_select_db("PROJETO");
if (!$banco)die ("Erro de conexão com banco de dados, o seguinte erro ocorreu -> ".mysql_error());

$query = "INSERT INTO SENSOR(ID,BUTTON_STATE,DATA)
VALUES('' ,'$nome',null)";

if(!@mysql_query($query))
{
echo "&Answer; SQL Error - ".mysql_error();
return;
}
?>

Obrigado por tudo.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço