problema de arduino al conectarse a un servidor web
Publicado por Avellaneda478 (1 intervención) el 16/09/2019 22:49:20
Hola, buenas tardes.
Somos el grupo de una escuela secundaria, en donde decidimos hacer un proyecto (lector de tarjetas y registro de usuario); en este proyecto utilizamos: un ArduinoUno + EthernetShield + RFID + PHP + mysql. Cuando uno ingresa la tarjeta se abre la puerta y manda los datos de la tarjeta a la base de datos de un servidor (WAMP).
Tenemos un proyecto ("controlpres") que corre en el apache del WAMP (en otra pc de la LAN), y la idea es que el arduino, una vez que el usuario pasa la tarjeta, envíe la información de la misma para que esto se almacene en la base de datos, para ello queremos que el arduino "corra" un php que se encarga de la inserción en la base.
El problema es que cuando tenemos que enviar los datos, no se conecta al servidor (apache); Llega hasta la línea de la conexión y el if (client.connect(server, 5100)) se va por el "else", o sea, que algo está pasando en la conexión (es decir, creemos que no se conecta).
NOTA:
modelo del Arduino: Arduino Uno R3
modelo del EthernetShield: W5100
Acá les dejo el código:
Somos el grupo de una escuela secundaria, en donde decidimos hacer un proyecto (lector de tarjetas y registro de usuario); en este proyecto utilizamos: un ArduinoUno + EthernetShield + RFID + PHP + mysql. Cuando uno ingresa la tarjeta se abre la puerta y manda los datos de la tarjeta a la base de datos de un servidor (WAMP).
Tenemos un proyecto ("controlpres") que corre en el apache del WAMP (en otra pc de la LAN), y la idea es que el arduino, una vez que el usuario pasa la tarjeta, envíe la información de la misma para que esto se almacene en la base de datos, para ello queremos que el arduino "corra" un php que se encarga de la inserción en la base.
El problema es que cuando tenemos que enviar los datos, no se conecta al servidor (apache); Llega hasta la línea de la conexión y el if (client.connect(server, 5100)) se va por el "else", o sea, que algo está pasando en la conexión (es decir, creemos que no se conecta).
NOTA:
modelo del Arduino: Arduino Uno R3
modelo del EthernetShield: W5100
Acá les dejo el código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <SPI.h>
#include <MFRC522.h>
#include <EthernetClient.h>
#include <EthernetUdp.h>
#include <Dns.h>
#include <EthernetServer.h>
#include <Ethernet.h>
#define SS_PIN 9
#define RST_PIN 8
#define LED_G 5 //define green LED pin
#define LED_R 4 //define red LED
#define RELAY 3 //relay pin
#define ACCESS_DELAY 2000
#define DENIED_DELAY 1000
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
// Configuracion del Ethernet Shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Direccion MAC
IPAddress ip(10, 0, 96, 12); // Direccion IP del Arduino
IPAddress server (10,0,30,254); // 10,0,96,18 10,0,30,254 Direccion IP del servidor
EthernetClient client;
byte estado_conexion;
boolean anteriormente_conectado;
int analog_pin = 0;
void setup(void) {
Serial.begin(9600);
Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(RELAY, OUTPUT);
digitalWrite(RELAY, LOW);
Serial.println("Coloque su tarjeta sobre el lector...");
Serial.println();
Serial.println("conectando....");
if (client.connect(server, 5100)) {
Serial.println("conectado");
client.println("GET /controlpres/iot.php?valor=88 2C 89 A6&acc_val=1"); // Enviamos los datos por GET
client.println();
} else {
Serial.println("Fallo de conexion");
}
}
void loop(void) {
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "1A B9 92 B9") //change here the UID of the card/cards that you want to give access
{
Serial.println("Acceso autorizado");
Serial.println();
delay(500);
digitalWrite(RELAY, HIGH);
digitalWrite(LED_G, HIGH);
delay(ACCESS_DELAY);
digitalWrite(RELAY, LOW);
digitalWrite(LED_G, LOW);
}
else {
Serial.println("Acceso denegado");
Serial.println();
digitalWrite(LED_R, HIGH);
delay(DENIED_DELAY);
digitalWrite(LED_R, LOW);
}
if (client.available()){
char c= client.read();
Serial.println(c);
}
if (!client.connected()){
Serial.println();
Serial.println("desconectando...");
client.stop();
for(;;)
;
}
}
Valora esta pregunta


0