Categories
Arduino Raspberry Technological

Arduino (IoT): Simple Tutorial Arduino PHP Web JSON/XML

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Arduino PHP Web JSON/XML

En este tutorial aprendemos a interfaz entre servicios web como openweather.org y lenguajes como PHP para parse JSON o XML y alimentar la Arduino.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Servidor Linux/PHP
  4. Arduino IDE (https://www.arduino.cc/en/Main/Software)
Arduino IoT Simple Tutorial Web JSON XML Santiapps Marcio Valenzuela
Arduino IoT Simple Tutorial Web JSON XML

OpenWeather:

http://api.openweathermap.org/data/2.5/weather?q=Amsterdam,NL&units=metric&appid=suID

Resultado:

{"coord":{"lon":4.89,"lat":52.37},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}],"base":"cmc stations","main":{"temp":24.17,"pressure":1013.79,"humidity":39,"temp_min":24.17,"temp_max":24.17,"sea_level":1013.72,"grnd_level":1013.79},"wind":{"speed":8.56,"deg":79.5083},"clouds":{"all":12},"dt":1463065042,"sys":{"message":0.0123,"country":"NL","sunrise":1463024893,"sunset":1463081183},"id":2759794,"name":"Amsterdam","cod":200}

PHP:

[/code]
<?php
 // retrieve the current weather in Amsterdam in degrees Celcius
 $json = file_get_contents('http://api.openweathermap.org/data/2.5/weather?q=Amsterdam,NL&units=metric&appid=suID');

// parse the JSON
$data = json_decode($json);

// show the city (and the country)
echo ‘<h1>’, $data->name, ‘ (‘, $data->sys->country, ‘)</h1>’;

// the general information about the weather
echo ‘<h2>Temperature:</h2>’;
echo ‘<p><strong>Current:</strong> ‘, $data->main->temp, ‘&deg; C</p>’;
echo ‘<p><strong>Min:</strong> ‘, $data->main->temp_min, ‘&deg; C</p>’;
echo ‘<p><strong>Max:</strong> ‘, $data->main->temp_max, ‘&deg; C</p>’;

// something about the air
echo ‘<h2>Air</h2>’;
echo ‘<p><strong>Humidity:</strong> ‘, $data->main->humidity, ‘%</p>’;
echo ‘<p><strong>Pressure:</strong> ‘, $data->main->pressure, ‘ hPa</p>’;

// and about the wind
echo ‘<h2>Wind</h2>’;
echo ‘<p><strong>Speed:</strong> ‘, $data->wind->speed, ‘ m/s</p>’;
echo ‘<p><strong>Direction:</strong> ‘, $data->wind->deg, ‘&deg;</p>’;

// and what the weather is according to the API (an array)
echo ‘<h2>The weather</h2>’;
echo ‘<ul>’;
foreach ($data->weather as $weather) {
echo ‘<li>’, $weather->description, ‘</li>’;
}
echo ‘<ul>’;
?>

[/code]

 

Resultado:

Arduino IoT Simple Tutorial Web JSON XML
Arduino IoT Simple Tutorial Web JSON XML

Ahora queremos obtener el forecast de los próximos 5 días:

[/code]
<?php
// retrieve the current weather in Amsterdam in degrees Celcius
$json = file_get_contents('http://api.openweathermap.org/data/2.5/forecast?q=SanPedroSula,HN&units=metric&appid=suID');

// parse the JSON
$data = json_decode($json);

// show the city (and the country)
echo ‘<h1>’, $data->city->name, ‘ (‘, $data->city->country, ‘)</h1>’;

for ($x = 0; $x <= 39; $x++) {
// the general information about the weather
echo ‘<h2>Data for ‘,$data->list[$x]->dt_txt,’:</h2>’;
echo ‘<p><strong>Temp_range:</strong> ‘, $data->list[$x]->main->temp_min, ‘ – ‘, $data->list[$x]->main->temp_max, ‘&deg; C</p>’;
echo ‘<p><strong>Pressure:</strong> ‘, $data->list[$x]->main->pressure, ‘</p>’;
echo ‘<p><strong>Humidity:</strong> ‘, $data->list[$x]->main->humidity, ‘</p>’;
echo ‘<p><strong>Weather:</strong> ‘, $data->list[$x]->weather[0]->description, ‘</p>’;
}
?>

[/code]

Para poder servir la info en un arreglo podemos usar este código:

[code]
<?php
// retrieve the current weather in Amsterdam in degrees Celcius
$json = file_get_contents(‘http://api.openweathermap.org/data/2.5/forecast?q=SanPedroSula,HN&units=metric&appid=suID’);
// parse the JSON
$data = json_decode($json);</pre>
// show the city (and the country)
//echo ‘<h1>’, $data->city->name, ‘ (‘, $data->city->country, ‘)</h1>’;

//create master array
$masterArray = array();
for ($x = 0; $x <= 39; $x++) {
$dataArray = array(“timestamp” => $data->list[$x]->dt_txt,
“temp_min” => $data->list[$x]->main->temp_min,
“temp_max” => $data->list[$x]->main->temp_max,
“pressure” => $data->list[$x]->main->pressure,
“humidity” => $data->list[$x]->main->humidity,
“weather” => $data->list[$x]->weather[0]->description);
//echo ‘<pre>’; print_r($dataArray); echo ‘</pre>’;
array_push($masterArray, $dataArray);
} //end for loop
echo ‘<pre>’; print_r($masterArray); echo ‘</pre>’;
?>
<pre>[/code]

Es importante saber usar server scripts para poder integrarlos a nuestros proyectos de IoT.  Adelante trabajaremos con un proyecto que lee los datos que posteamos de un modulo Arduino a la web para alimentar un proyecto mas avanzado de AI residencial.

Categories
Arduino Raspberry Technological

Arduino (IoT): Simple Tutorial Válvula Solenoide con MOSFET

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Válvula Solenoide con MOSFET

En este tutorial introducimos otros switch digital basado en transistores, el MOSFET!

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Válvula Solenoide de 12V
  4. MOSFET IRLB-8721
  5. Diode
  6. Batería 12VDC Lead-Acid (de algún UPS)
  7. Breadboard
  8. Arduino IDE (https://www.arduino.cc/en/Main/Software)
Arduino IoT: Simple Tutorial Solenoide con MOSFET by Santiapps Marcio Valenzuela
Arduino IoT: Simple Tutorial Solenoide con MOSFET

Una válvula solenoide no es mas que una válvula controlada por un electromagnet, que es esencialmente un motor invertido.  Sabemos entonces que los motores generan contra corrientes.  Como podemos ver en el diagrama de arriba, debemos alimentar la válvula de una fuente y proteger el cerebro (Arduino) de las contra corrientes a través de un diodo.

Entra el MOSFET!  Este dispositivo es muy similar a un transistor BJT como el TIP-120, pero es capaz de operar a mayores voltages.  Y esa es la clave, porque a diferencia de un BJT, el flujo de corriente no se activa por medio de un flujo de corriente a la Base como en el caso del BJT.  En el caso del MOSFET el flujo de corriente se activa con un campo (field) eléctrico en la Base.

Otra diferencia es que donde en un BJT tenemos la Base, en el MOSFET tenemos el Gate.  Y el flujo de corriente que queremos controlar no es entre Emitter y Collector sino entre Source y Drain.

Arduino IoT: Simple Tutorial Valvula Solenoid Santiapps Marcio Valenzuela
Arduino IoT: Simple Tutorial Valvular Solenoid with MOSFET

Aquí vemos como una señal desde el pin 3 hacia el Gate del MOSFET IRLB8721 abre el flujo para que la solenoide complete el circuito a tierra y como el diodo controla dicho flujo en una sola dirección.

Como seleccionar un MOSFET:

Vds

Vgs

RDSon

ROJA

El código:

/* MOSFET IRLB8721
This sketch will blink a LED and at the same time, use the MOSFET to open a 12V solenoid.
Arduino D10 : To LED (Through 330 Ohm Resistor)
Arduino D02 : To MOSFET Gate
*/
int ledPin = 13; // Connect the pin to Arduino pin 13
int mosfetPin = 3; // Connect the MOSFeT Gate (first pin on the left, when writing on the chip is facing you) to Arduino pin 3
void setup(){
pinMode(ledPin, OUTPUT);
pinMode(mosfetPin, OUTPUT);
}
void loop(){
digitalWrite(ledPin, HIGH);
digitalWrite(mosfetPin, HIGH);
delay(5000); // Will turn both the LED and the MOSFET on for 60s, it gives you plenty of time to see if water is flowing as expected!
digitalWrite(ledPin, LOW);
digitalWrite(mosfetPin, LOW);
delay(5000); // Will shut down everything for 5s and restart.
}

Las conexiones finales usando el perf board se pueden ver aquí:

Arduino IoT: Simple Tutorial Solenoide con MOSFET
Arduino IoT: Simple Tutorial Solenoide con MOSFET

y el video final se puede ver aquí:

Controlar el flujo de un liquido puede ser muy util para regar plantas y muchas otras aplicaciones mas.

Categories
Arduino Artificial Intelligence Raspberry

YouTube: Comunicación de Data en Proyectos Arduino Parte 6: Thingspeak Autonomous Logger (Completo)

Canal de YouTube

Translate »