Código de Arduino - Obtener JSON desde placa Arduino / IoT

Imágen de perfil
Val: 10
Ha mantenido su posición en Arduino (en relación al último mes)
Gráfica de Arduino

Obtener JSON desde placa Arduino / IoTgráfica de visualizaciones


Arduino

Publicado el 28 de Noviembre del 2018 por Esteban
899 visualizaciones desde el 28 de Noviembre del 2018
module-wifi-nodemcu-v3

Este código fue utilizado basándose en la idea del IoT (Internet de las cosas).

Básicamente, manejar el comportamiento de la placa (NodeMCU:ESP8266 en este caso) sobre los periféricos que se conecten a ella, con los valores que posee el JSON en la página web http://plazaapp.herokuapp.com/luces/status

Estos se modifican en la página principal http://plazaapp.herokuapp.com, de ahí la placa se conecta a Internet, obtiene el JSON, y de acuerdo a los valores, enciende, apaga, o cambia los valores RGB de los leds que en este caso se utilizaron, puestos en la maqueta de la imagen.

Se utiliza la placa NodeMCU:ESP8266 por la facilidad de lograr conectarse a la red, debido a que viene con esta funcionalidad integrada, gracias el modulo ESP8266.
photo_2018-11-28_10-13-00

Requerimientos

- Placa Arduino o de cualquier otro fabricante con posibilidad de conectarse a internet
- Arduino IDE
- Cable USB

Soluciones de los errores más comunes: (Son las descargas necesarias para funcionar con la placa NodeMCU: ESP8266)
- https://arduino.stackexchange.com/questions/54373/nodemcu-arduino-ide-dynamicjsonbuffer-was-not-declared-in-this-scope/54377
- https://stackoverflow.com/questions/50080260/arduino-ide-cant-find-esp8266wifi-h-file
- https://github.com/FirebaseExtended/firebase-arduino/issues/354

1.0

Publicado el 28 de Noviembre del 2018gráfica de visualizaciones de la versión: 1.0
900 visualizaciones desde el 28 de Noviembre del 2018
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h>
 
/*se define los pines a utilizar llevando en cuenta que los puertos 
del nodemcu no son los mismos que del integrado esp8266*/
 
#define D0   16 //GPIO16 - WAKE UP    perim
#define D1   5  //GPIO5               inter
#define D2   4  //GPIO14              par_r
#define D5   14 //GPIO14 - HSCLK      par_g
#define D6   12 //GPIO12 - HMISO      par_b
 
// WiFi Parameters
const char* ssid = "Nombre de la red";
const char* password = "Contraseña de la red";
 
void setup() {
  Serial.begin(115200);
 
  //se configura los pines a utilizar como salida
  pinMode(D0,OUTPUT);  //D0 perim
  pinMode(D1,OUTPUT);  //D1 inter
  pinMode(D2,OUTPUT);  //D2 park_r
  pinMode(D5,OUTPUT);  //D5 park_g
  pinMode(D6,OUTPUT);  //D6 park_b
 
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting...");
  }
}
 
void loop() {
  // Check WiFi Status
  Serial.println("Conectando...");
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;  //Object of class HTTPClient
    http.begin("http://plazaapp.herokuapp.com/luces/status");
    Serial.println("Obteniendo...");
    int httpCode = http.GET();
    //Check the returning code                                                                  
    if (httpCode > 0) {
      // Parsing
      const size_t bufferSize = JSON_OBJECT_SIZE(9) + 150;
      DynamicJsonBuffer jsonBuffer(bufferSize);
      JsonObject& root = jsonBuffer.parseObject(http.getString());
      // Parameters
      Serial.println("Valores obtenidos:");
      int perim = root["perim"]; // 0
      int inter = root["inter"]; // 1
      int park = root["park"]; // 0
      int par_r = root["par_r"]; // 11
      int par_g = root["par_g"]; // 21
      int par_b = root["par_b"]; // 92
      // Output to serial monitor
      Serial.print("perim:");
      Serial.println(perim);
      Serial.print("inter:");
      Serial.println(inter);
      Serial.print("park:");
      Serial.println(park);
      Serial.print("par_r:");
      Serial.println(par_r);
      Serial.print("par_g:");
      Serial.println(par_g);
      Serial.print("par_b:");
      Serial.println(par_b);
 
      Serial.println("Trabajando sobre los leds...");
      if (perim == 1){
        analogWrite(D0,HIGH);
      }
      if (inter == 1){
        analogWrite(D1,HIGH);
      }
      if(park == 1){
        analogWrite(D2,par_r);    //luces RGB
        analogWrite(D5,par_g);
        analogWrite(D6,par_b);
      }
       if (perim == 0){
        analogWrite(D0,LOW);
      }
      if (inter == 0){
        analogWrite(D1,LOW);
      }
      if(park == 0){
        analogWrite(D2,0);
        analogWrite(D5,0);
        analogWrite(D6,0);
      }
      Serial.println("");
    }
    http.end();   //Close connection
  }
  // Delay
  delay(10000);
}



Comentarios sobre la versión: 1.0 (0)


No hay comentarios
 

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s4948