Pessoal...
Estou participando de um projeto de pesquisa e temos uma central de monitoramento de irrigação armazenando os dados no cartão de memória. Porém precisamos enviar esses dados para um servidor PHP com banco de dados MYSQL e não podemos fugir/alterar hardware (ENC28J60 + Arduino MEGA). Estou utilizando a biblioteca EtherCard e a comunicação com o módulo está OK, consigo enviar um texto para o bando de dados seguindo esse exemplo.:
- Código do Arduino
#include <EtherCard.h>
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
byte Ethernet::buffer[700];
static uint32_t timer;
char mensagem[50];
const char website[] PROGMEM = "192.168.253.16";
static byte myip[] = { 192,168,253,177 };
static byte gwip[] = { 192,168,253,200 };
static void my_callback (byte status, word off, word len)
{
Ethernet::buffer[off+len] = 0; //mensagem do retorno do servidor
//Serial.print((const char*) Ethernet::buffer + off); //mostra todo o retorno
Serial.print((const char*) Ethernet::buffer + off + 157); //mostra somente ok
}
void setup (){
delay(1000);
Serial.begin(57600);
Serial.println("Obtendo IP:");
if (ether.begin(sizeof Ethernet::buffer, mymac,53) == 0)
Serial.println( "Falha ao acessar o controlador Ethernet");
ether.staticSetup(myip, gwip);
ether.printIp("IP: ", ether.myip);
ether.printIp("Gatway: ", ether.gwip);
ether.printIp("Sevidor DNS: ", ether.dnsip);
if (!ether.dnsLookup(website)) //IP do servidor por DNS
Serial.println("Falha no DNS");
ether.parseIp(ether.hisip, "192.168.253.16"); //IP do servidor manual
ether.printIp("Servidor: ", ether.hisip);
Serial.println(" ");
}
void loop (){
ether.packetLoop(ether.packetReceive());
if (millis() > timer){
timer = millis() + 4000;
ether.persistTcpConnection(true);
sprintf(mensagem, "?inf=teste");
ether.browseUrl(PSTR("/conexao.php"), mensagem, website, my_callback);
}
}
- Código do PHP
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "", "aula");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Escape user inputs for security
$inf = mysqli_real_escape_string($link, $_REQUEST['inf']);
// Attempt insert query execution
$sql = "INSERT INTO arduino (inf) VALUES ('$inf')";
if(mysqli_query($link, $sql)){
echo "Records added successfully.";
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// Close connection
mysqli_close($link);
?>
Não entendo muito de programação mas gostaria de enviar os dados lidos pelos sensores de umidade da central de monitoramento de irrigação para o banco de dados e exibir em uma página posteriormente (página já está pronta). Não estou conseguindo enviar dados de variáveis/portas do arduino pela rede ao MYSQL. Já vi alguns tópicos do forum e artigos na internet mas não conseguir resolver. Como devo proceder? Obrigado!!!!