Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Compteur de voitures utilisant Arduino + Traitement + PHP

Composants et fournitures

Arduino UNO
× 1
Capteur de mouvement PIR (générique)
× 2
LED (générique)
× 1
Câbles de raccordement (générique)
× 1

Applications et services en ligne

Arduino IDE
Samsung ARTIK Cloud pour IoT
Traitement
PHP

À propos de ce projet

Présentation

Ce projet montre comment vous pouvez utiliser Arduino pour compter le nombre de voitures qui entrent et sortent d'un centre commercial à l'aide de deux capteurs, envoyez les données au cloud à l'aide de Processing &PHP, puis affichez plus tard le nombre de places disponibles dans le parking. Vous n'avez pas besoin d'un shield Ethernet ou Wifi pour ce projet !

Comment ça marche

Les capteurs doivent être placés aux points d'entrée et de sortie du parking pour que cela fonctionne comme prévu. En gros, vous incrémentez le compte chaque fois qu'une voiture entre et décrémente quand elle sort. La LED du système indique simplement que le véhicule est correctement compté car il s'allume à chaque fois qu'une voiture passe à travers le capteur.

Traitement

Traitement est un langage/outil de développement open source pour écrire des programmes sur d'autres ordinateurs. Utile lorsque vous souhaitez que ces autres ordinateurs "parlent" avec un Arduino, par exemple pour afficher ou enregistrer certaines données collectées par l'Arduino.

Pour ce projet, nous avons utilisé Processing pour recevoir les données (nombre de voitures) envoyé par Arduino via le port série. Téléchargez et installez l'IDE de traitement sur votre ordinateur. Vous pouvez voir dans le croquis de traitement ci-joint des lignes de code très simples et directes. Ici, nous appelons le fichier PHP en utilisant la méthode loadStrings() .

PHP

Le fichier PHP post-message.php est le même fichier dans le tutoriel trouvé ici. Nous avons téléchargé l'intégralité du fichier zip à partir de la page Github et modifié quelques lignes de code dans le fichier d'origine afin de pouvoir l'utiliser sans avoir à nous connecter à notre compte Samsung. Pour que cela fonctionne, vous devrez suivre les instructions ici pour changer le port de votre serveur WAMP ou XAMP et installer le certificat CA pour ARTIK Cloud. Alternativement, vous pouvez utiliser votre serveur distant ou hébergé avec un certificat SSL installé.

Copiez les fichiers dans un dossier, disons, acdemo afin qu'il soit accessible via l'URL http://localhost:8000/acdemo/post-message.php ou https://www.yourwebsite.com/acdemo/post-message.php

Il n'y a que deux fichiers dans le SDK PHP que vous devez modifier :ArtikCloudProxy.php et post-message.php . Vous pouvez afficher votre identifiant client et appareil ici.

Dans le post-message.php fichier, vous devez obtenir votre jeton d'accès et l'ID de l'appareil. Le moyen le plus simple d'obtenir le jeton est de suivre les étapes ici. Notez que les seules données que nous envoyons au cloud sont le nombre de voitures qui entre et sort du centre commercial. Nous avons créé un appareil dans Artik Cloud et l'avons nommé Car Counter avec un champ appelé count qui détient cette valeur.

Maintenant que tout est configuré, il est temps de commencer ! Suivez les étapes simples ci-dessous :

Artik Cloud

  • 1. Connectez-vous à votre compte Artik Cloud et accédez à Applications> Nouvelle application
  • 2. Entrez les détails nécessaires pour votre demande dans l'écran suivant.
  • 3. Une fois que vous aurez fini de créer votre application, elle s'affichera dans votre tableau de bord. Cliquez sur le nom de l'application et recherchez Afficher l'ID client et le secret . Vous avez besoin de ces codes pour les fichiers PHP.
  • 4. Dans le menu latéral, sélectionnez votre application et cliquez sur Autorisations . Ajouter Compteur de voitures dans la liste des types d'appareils et cochez Lire &Écrire autorisations.

Codage

  • 1. Téléchargez le croquis sur votre Arduino UNO. Si c'est la première fois que vous utilisez Arduino, suivez ces étapes pour comprendre comment faire cette procédure.
  • 2. Exécutez le Traitement sketch dans l'IDE de traitement. Assurez-vous que votre serveur WAMP est activé à ce stade si vous utilisez votre ordinateur local au lieu d'un serveur hébergé.
  • 3. Si vous avez réussi à connecter les pièces de ce système sur la base du schéma de connexion ci-dessus, passez par le capteur PIR pour voir si cela fonctionne.
  • 4. Connectez-vous à votre compte Artik Cloud pour voir si les données sont envoyées correctement.

Dépannage

  • 1. Ouvrez le lien ci-dessous pour voir si les données sont correctement envoyées à Artik Cloud. Si rien ne se passe, cela affichera un fichier Json. Si vous ne voyez pas de fichier Json, vous n'avez peut-être pas installé le certificat SSL comme décrit ci-dessus. Essayez de revenir en arrière et assurez-vous de bien suivre les instructions.

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

Que faire ensuite

Sur la base des données ci-dessus sur le nombre de voitures, vous pouvez créer une application pour un centre commercial afin que les acheteurs puissent afficher le nombre de places disponibles dans le parking avant de se rendre au centre commercial. Vous pouvez également ajouter un autre indicateur lumineux qui s'allume lorsque le parking est plein ou non.

Code

  • Code Arduino
  • Traiter l'esquisse
  • post-message.php
  • ArtikCloudProxy.php
Code ArduinoArduino
C'est le code qui affiche le nombre de voitures au numéro de série et allume la LED pour indiquer qu'une voiture passe à travers le capteur PIR.
int pirPinIN =7;int pirPinOUT =10;int led =13;static long counter =0 ; configuration vide () { pinMode (pirPinIN, INPUT); pinMode(pirPinOUT, INPUT); pinMode (led, SORTIE); digitalWrite(led, LOW); Serial.begin(9600);} void loop(){ long now =millis(); if (digitalRead(pirPinIN) ==HIGH) { counter++; Serial.println(compteur); digitalWrite (led, HAUT); retard (500); digitalWrite(led, LOW); } if (digitalRead(pirPinOUT) ==HIGH) { counter--; Serial.println(compteur); digitalWrite (led, HAUT); retard (500); digitalWrite(led, LOW); }}
Traitement de l'esquisseJava
Cette esquisse de traitement lit les valeurs entrantes sur les ports analogiques, puis utilise les fonctions de communication série pour sortir les valeurs.
import processing.serial.*;Serial myPort; // Créer un objet à partir de Serial classString val; // Données reçues du portvoid setup(){ // Je sais que le premier port de la liste série sur mon mac // est Serial.list()[0]. // Sur les machines Windows, cela ouvre généralement COM1. // Ouvrez le port que vous utilisez. String portName =Serial.list()[0]; //changez le 0 en 1 ou 2 etc. pour correspondre à votre port myPort =new Serial(this, portName, 9600);}void draw(){ if ( myPort.available()> 0) { // Si les données sont disponible, val =myPort.readStringUntil('\n'); // le lit et le stocke dans val int count =parseInt(val); if(count>=0){ loadStrings("http://localhost:8000/acdemo/post-message.php?count="+val); } } println(val); //l'imprimer dans la console}
post-message.phpPHP
Ce code obtient la valeur transmise par l'esquisse de traitement et POST le nombre dans le cloud.
setAccessToken("YOUR_ACCESS_TOKEN");$data ='{"count":'.$count.'}';$payload =array("data"=>$data,"sdid" =>"YOUR_DEVICE_ID","type"=>"message");$payload =json_encode($payload, JSON_HEX_QUOT | JSON_HEX_TAG);$response =$proxy->sendMessage($payload);header('Content-Type :application /json');echo json_encode($response);
ArtikCloudProxy.phpPHP
Il s'agit de la classe ArtikCloudProxy nécessaire pour se connecter au cloud Artik. Enregistrez-le dans le même dossier que post-message.php quelque part accessible sur le Web. Apportez les modifications nécessaires à la configuration.
&count="; const API_MESSAGES_POST ="/messages"; # Membres public $token =null; public $user =null; public function __construct(){ } /** * Définit le jeton d'accès et recherche les informations du profil utilisateur */ public function setAccessToken($someToken){ $this->token =$someToken; $this->user =$this->getUsersSelf(); } /** * Appel d'API GET */ public function getCall($url){ $ch =curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPGET, vrai); curl_setopt($ch, CURLOPT_RETURNTRANSFER, vrai); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json', 'Authorization:bearer'.$this->token)); $json =curl_exec($ch); $status =curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($status ==200){ $response =json_decode($json); } else{ var_dump($json); $réponse =$json; } renvoie $réponse ; } /** * API call POST */ public function postCall($url, $payload){ $ch =curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, vrai); curl_setopt($ch, CURLOPT_POSTFIELDS, (Chaîne) $payload); curl_setopt($ch, CURLOPT_RETURNTRANSFER, vrai); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type :application/json', 'Autorisation :porteur '.$this->token)); $json =curl_exec($ch); $status =curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($status ==200){ $response =json_decode($json); } else{ var_dump($json); $réponse =$json; } renvoie $réponse ; } /** * GET /users/self API */ public function getUsersSelf(){ return $this->getCall(ArtikCloudProxy::API_URL . ArtikCloudProxy::API_USERS_SELF); } /** * POST /message API */ public function sendMessage($payload){ return $this->postCall(ArtikCloudProxy::API_URL . ArtikCloudProxy::API_MESSAGES_POST, $payload); } /** * GET /historical/normalized/messages/last API */ public function 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); }}

Schémas

Schéma de raccordement des 2 capteurs PIR et de la LED

Processus de fabrication

  1. Variation des lumières avec PWM à l'aide du bouton-poussoir
  2. Machine à LÉVITATION ULTRASONIQUE utilisant ARDUINO
  3. IOT - Smart Jar utilisant ESP8266, Arduino et capteur à ultrasons
  4. Iron Man
  5. Trouvez-moi
  6. Comment mesurer la masse de la Terre à l'aide d'Arduino
  7. Contrôle de l'humidificateur Arduino
  8. Idée pour la Saint-Valentin - Compteur de jours passés ensemble (Photo)
  9. Comment faire une boussole en utilisant Arduino et Processing IDE