Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Contador de autos usando Arduino + Procesamiento + PHP

Componentes y suministros

Arduino UNO
× 1
Sensor de movimiento PIR (genérico)
× 2
LED (genérico)
× 1
Cables de puente (genéricos)
× 1

Aplicaciones y servicios en línea

Arduino IDE
Samsung ARTIK Cloud para IoT
Procesamiento
PHP

Acerca de este proyecto

Introducción

Este proyecto demuestra cómo se puede utilizar Arduino para contar la cantidad de autos que entran y salen de un centro comercial usando dos sensores, enviar los datos a la nube usando Processing y PHP, y luego ver la cantidad de espacios disponibles en el estacionamiento. ¡No necesitas un escudo de Ethernet o Wifi para este proyecto!

Cómo funciona

Los sensores deben colocarse en el punto de entrada y salida del estacionamiento para que esto funcione según lo previsto. Básicamente, incrementa el recuento cada vez que entra un coche y decrementa cuando sale. El LED del sistema simplemente indica que el vehículo se cuenta correctamente, ya que se enciende cada vez que un automóvil pasa por el sensor.

Procesando

Procesando es una herramienta de desarrollo / lenguaje de código abierto para escribir programas en otras computadoras. Útil cuando desea que esas otras computadoras "hablen" con un Arduino, por ejemplo, para mostrar o guardar algunos datos recopilados por el Arduino.

Para este proyecto, usamos Processing para recibir los datos (recuento de autos) enviado por Arduino a través del puerto serie. Descargue e instale el IDE de procesamiento en su computadora. Puede ver en el boceto de procesamiento adjunto unas líneas de código muy simples y directas. Aquí, llamamos al archivo PHP usando el método loadStrings () .

PHP

El archivo PHP post-message.php es el mismo archivo del tutorial que se encuentra aquí. Descargamos el archivo zip completo de la página de Github y editamos algunas líneas de código en el archivo original para que podamos usarlo sin tener que iniciar sesión en nuestra cuenta de Samsung. Para que esto funcione, deberá seguir las instrucciones aquí sobre cómo cambiar el puerto de su servidor WAMP o XAMP e instalar el certificado CA para ARTIK Cloud. Alternativamente, puede utilizar su servidor remoto o alojado con el certificado SSL instalado.

Copie los archivos a una carpeta, por ejemplo, acdemo para que se pueda acceder utilizando la URL http:// localhost:8000 / acdemo / post-message.php o https://www.yourwebsite.com/acdemo/post-message.php

Solo hay dos archivos en el SDK de PHP que necesita editar: ArtikCloudProxy.php y post-message.php . Puede ver su ID de cliente y dispositivo aquí.

En post-message.php archivo, debe obtener su token de acceso y la identificación del dispositivo. La forma más fácil de obtener el token es siguiendo los pasos aquí. Tenga en cuenta que los únicos datos que enviamos a la nube son la cantidad de automóviles que entra y sale del centro comercial. Creamos un dispositivo en Artik Cloud y lo llamamos Contador de autos con un campo llamado recuento que tiene este valor.

Ahora que todo está configurado, ¡es hora de ponerlo en marcha! Siga los sencillos pasos a continuación:

Artik Cloud

  • 1. Inicie sesión en su cuenta de Artik Cloud y vaya a Aplicaciones > Nueva aplicación
  • 2. Ingrese los detalles necesarios para su aplicación en la siguiente pantalla.
  • 3. Una vez que termine de crear su aplicación, se mostrará en su panel de control. Haga clic en el nombre de la aplicación y busque Mostrar ID de cliente y secreto . Necesita estos códigos para los archivos PHP.
  • 4. En el menú lateral, seleccione su aplicación y haga clic en Permisos . Agregar mostrador de automóviles en la lista de tipos de dispositivos y marque Leer & Escribir permisos.

Codificación

  • 1. Sube el boceto a tu Arduino UNO. Si es la primera vez que usa Arduino, siga estos pasos para comprender cómo realizar este procedimiento.
  • 2. Ejecute el Procesando croquis en el IDE de procesamiento. Asegúrese de que su servidor WAMP esté encendido en este punto, si está utilizando su computadora local en lugar de un servidor alojado.
  • 3. Si ha conectado correctamente las piezas de este sistema según el diagrama de conexión anterior, pase a través del sensor PIR para ver si funciona.
  • 4. Inicie sesión en su cuenta de Artik Cloud para ver si los datos se envían correctamente.

Solución de problemas

  • 1. Abra el enlace a continuación para ver si los datos se envían correctamente a Artik Cloud. Si nada sale mal, esto mostrará un archivo Json. Si no ve un archivo Json, es posible que no haya instalado el certificado SSL como se describe anteriormente. Intente regresar y asegúrese de seguir las instrucciones correctamente.

http:// localhost:8000 / acdemo / post-message.php? count =10

Qué hacer a continuación

Según los datos anteriores del recuento de automóviles, puede crear una aplicación para un centro comercial de modo que los compradores puedan ver la cantidad de espacios disponibles en el espacio de estacionamiento antes de ir al centro comercial. También puede agregar otro indicador de luz que se enciende cuando el estacionamiento está lleno o no.

Código

  • Código Arduino
  • Bosquejo de procesamiento
  • post-message.php
  • ArtikCloudProxy.php
Código Arduino Arduino
Este es el código que muestra el recuento de automóviles en serie y enciende el LED para indicar que un automóvil pasa a través del sensor PIR.
 int pirPinIN =7; int pirPinOUT =10; int led =13; static long counter =0; configuración vacía () {pinMode (pirPinIN, INPUT); pinMode (pirPinOUT, ENTRADA); pinMode (led, SALIDA); digitalWrite (led, BAJO); Serial.begin (9600);} bucle vacío () {largo ahora =millis (); if (digitalRead (pirPinIN) ==HIGH) {contador ++; Serial.println (contador); digitalWrite (led, ALTO); retraso (500); digitalWrite (led, BAJO); } if (digitalRead (pirPinOUT) ==HIGH) {contador--; Serial.println (contador); digitalWrite (led, ALTO); retraso (500); digitalWrite (led, BAJO); }} 
Procesando Sketch Java
Este esquema de procesamiento lee los valores entrantes en los puertos analógicos y luego usa las funciones de comunicación en serie para generar los valores.
 import processing.serial. *; Serial myPort; // Crear objeto desde Serial classString val; // Datos recibidos de la configuración del puerto serial void () {// Sé que el primer puerto en la lista serial en mi mac // es Serial.list () [0]. // En máquinas con Windows, esto generalmente abre COM1. // Abra el puerto que esté usando. String portName =Serial.list () [0]; // cambia el 0 a 1 o 2, etc. para que coincida con tu puerto myPort =new Serial (this, portName, 9600);} void draw () {if (myPort.available ()> 0) {// Si los datos son disponible, val =myPort.readStringUntil ('\ n'); // leerlo y almacenarlo en val int count =parseInt (val); if (cuenta> =0) {loadStrings ("http:// localhost:8000 / acdemo / post-message.php? count =" + val); }} println (val); // imprimirlo en la consola} 
post-message.php PHP
Este código OBTIENE el valor pasado por el boceto de procesamiento y PUBLICA el recuento en la nube.
  setAccessToken ("YOUR_ACCESS_TOKEN"); $ data ='{"count":'. $ count. '}'; $ payload =array ("data" => $ data, "sdid" => "YOUR_DEVICE_ID", "tipo" => "mensaje"); $ payload =json_encode ($ payload, JSON_HEX_QUOT | JSON_HEX_TAG); $ respuesta =$ proxy-> sendMessage ($ payload); header ('Content-Type:application / json '); echo json_encode ($ respuesta); 
ArtikCloudProxy.php PHP
Esta es la clase ArtikCloudProxy necesaria para conectarse a la nube Artik. Guárdelo en la misma carpeta que post-message.php en algún lugar accesible para la web. Realice los cambios necesarios en la configuración.
  &count ="; const API_MESSAGES_POST ="/ mensajes"; # Miembros public $ token =null; public $ usuario =nulo; función pública __construct () {} / ** * Establece el token de acceso y busca la información del perfil del usuario * / función pública setAccessToken ($ someToken) {$ this-> token =$ someToken; $ esto-> usuario =$ esto-> getUsersSelf (); } / ** * API llamada GET * / función pública getCall ($ url) {$ ch =curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_HTTPGET, verdadero); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, verdadero); curl_setopt ($ ch, CURLOPT_HEADER, falso); curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('Content-Type:application / json', 'Authorization:bearer'. $ this-> token)); $ json =curl_exec ($ ch); $ estado =curl_getinfo ($ ch, CURLINFO_HTTP_CODE); curl_close ($ ch); if ($ estado ==200) {$ respuesta =json_decode ($ json); } más {var_dump ($ json); $ respuesta =$ json; } return $ respuesta; } / ** * POST de llamada a API * / función pública postCall ($ url, $ payload) {$ ch =curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_POST, verdadero); curl_setopt ($ ch, CURLOPT_POSTFIELDS, (String) $ payload); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, verdadero); curl_setopt ($ ch, CURLOPT_HEADER, falso); curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('Content-Type:application / json', 'Authorization:bearer'. $ this-> token)); $ json =curl_exec ($ ch); $ estado =curl_getinfo ($ ch, CURLINFO_HTTP_CODE); curl_close ($ ch); if ($ estado ==200) {$ respuesta =json_decode ($ json); } más {var_dump ($ json); $ respuesta =$ json; } return $ respuesta; } / ** * GET / users / self API * / public function getUsersSelf () {return $ this-> getCall (ArtikCloudProxy ::API_URL. ArtikCloudProxy ::API_USERS_SELF); } / ** * POST / mensaje API * / función pública sendMessage ($ payload) {return $ this-> postCall (ArtikCloudProxy ::API_URL. ArtikCloudProxy ::API_MESSAGES_POST, $ payload); } / ** * OBTENER / histórico / normalizado / mensajes / última API * / función pública getMessagesLast ($ deviceCommaSeparatedList, $ countByDevice) {$ apiPath =ArtikCloudProxy ::API_MESSAGES_LAST; $ apiPath =str_replace ("", $ deviceCommaSeparatedList, $ apiPath); $ apiPath =str_replace ("", $ countByDevice, $ apiPath); return $ this-> getCall (ArtikCloudProxy ::API_URL. $ apiPath); }} 

Esquemas

Diagrama para conectar los 2 sensores PIR y el LED

Proceso de manufactura

  1. Atenuación de luces con PWM usando el botón pulsador
  2. Máquina de LEVITACIÓN ULTRASÓNICA usando ARDUINO
  3. IOT - Smart Jar usando ESP8266, Arduino y sensor ultrasónico
  4. Iron Man
  5. Encuéntrame
  6. Cómo medir la masa de la Tierra usando Arduino
  7. Control del humidificador Arduino
  8. Sonda usando arduino y visualización en procesamiento IDE
  9. Uso del sensor de pulso portátil MAX30100 con Arduino
  10. Idea del día de San Valentín - Contador de días pasados ​​juntos (foto)
  11. Cómo hacer una brújula usando Arduino y Processing IDE