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 stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP

Composants et fournitures

Composant Quantité
Arduino UNO 1
Capteur de mouvement PIR (générique) 2
LED (générique) 1
Fils de connexion (génériques) 1

Applications et services en ligne

À propos de ce projet

Introduction

Ce projet montre comment vous pouvez utiliser Arduino pour compter le nombre de voitures qui entrent et sortent d'un centre commercial en utilisant deux capteurs, envoyer les données vers le cloud en utilisant Processing et PHP, et visualiser plus tard le nombre de places disponibles dans le parking. Vous n'avez pas besoin de shield Ethernet ou WiFi pour ce projet !

Comment cela fonctionne

Les capteurs doivent être placés aux points d'entrée et de sortie du parking pour que cela fonctionne comme prévu. Fondamentalement, vous incrémentez le compteur chaque fois qu'une voiture arrive et vous le décrémentez lorsqu'elle part. La LED du système indique simplement que le véhicule est correctement compté car elle s'allume à chaque fois qu'une voiture passe devant le capteur.

Processing

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

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

Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP

PHP

Le fichier PHP post-message.php est le même fichier que dans le tutoriel trouvé ici. Nous avons téléchargé le fichier zip complet depuis la page Github et modifié quelques lignes de code dans le fichier original pour pouvoir l'utiliser sans avoir à nous connecter à notre compte Samsung. Pour que cela fonctionne, vous devrez suivre les instructions ici concernant le changement du port de votre serveur WAMP ou XAMP et l'installation du 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'ils puissent être accessibles via l'URL https://localhost:8000/acdemo/post-message.php ou https://www.votresite.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 voir votre ID client et appareil ici.

Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP

Dans le fichier post-message.php, vous devez obtenir votre jeton d'accès et votre ID d'appareil. La façon la plus simple d'obtenir le jeton est de suivre les étapes ici. Notez que la seule donnée que nous envoyons au cloud est le nombre de voitures qui entrent et sortent du centre commercial. Nous avons créé un dispositif dans Artik Cloud et l'avons nommé Compteur de voitures avec un champ appelé count qui contient cette valeur.

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

Artik Cloud

  1. Connectez-vous à votre compte Artik Cloud et allez dans Applications > Nouvelle application
Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP
  1. Entrez les détails nécessaires pour votre application dans l'écran suivant.
  1. Une fois la création de votre application terminée, elle sera affichée 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.
Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP
  1. Dans le menu latéral, sélectionnez votre application et cliquez sur Permissions. Ajoutez Compteur de voitures dans la liste des types de dispositifs et cochez les permissions Lecture et Écriture.
Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP

Codage

  1. Téléversez le croquis sur votre Arduino UNO. Si c'est votre première fois avec Arduino, suivez ces étapes pour comprendre comment faire cette procédure.
  2. Exécutez le croquis Processing dans l'IDE Processing. Assurez-vous que votre serveur WAMP est activé à ce moment si vous utilisez votre ordinateur local au lieu d'un serveur hébergé.
  3. Si vous avez connecté avec succès les composants pour ce système selon le schéma de connexion ci-dessus, passez devant le capteur PIR pour voir s'il fonctionne.
  4. Connectez-vous à votre compte Artik Cloud pour voir si les données sont envoyées correctement.
Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP

Dépannage

  1. Ouvrez le lien ci-dessous pour voir si les données sont correctement envoyées à Artik Cloud. Si rien ne va mal, 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 suivre correctement les instructions.
https://localhost:8000/acdemo/post-message.php?count=10

Prochaines étapes

Basé sur les données de comptage de voitures ci-dessus, vous pouvez créer une application pour un centre commercial afin que les acheteurs puissent voir le nombre de places disponibles dans le parking avant d'aller au centre commercial. Vous pouvez également ajouter un autre indicateur lumineux qui s'allume lorsque le parking est complet ou non.

Code

Code Arduino

int pirPinIN = 7;
int pirPinOUT = 10;
int led = 13;
static long counter = 0;

void setup() {
  pinMode(pirPinIN, INPUT);
  pinMode(pirPinOUT, INPUT);
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Serial.begin(9600);
}

void loop() {
  long now = millis();
  if (digitalRead(pirPinIN) == HIGH) {
    counter++;
    Serial.println(counter);
    digitalWrite(led, HIGH);
    delay(500);
    digitalWrite(led, LOW);
  }
  if (digitalRead(pirPinOUT) == HIGH) {
    counter--;
    Serial.println(counter);
    digitalWrite(led, HIGH);
    delay(500);
    digitalWrite(led, LOW);
  }
}

Croquis Processing

import processing.serial.*;
Serial myPort;
String val;

void setup() {
  String portName = Serial.list()[0];
  myPort = new Serial(this, portName, 9600);
}

void draw() {
  if (myPort.available() > 0) {
    val = myPort.readStringUntil('\n');
    int count = parseInt(val);
    if (count >= 0) {
      loadStrings("https://localhost:8000/acdemo/post-message.php?count=" + val);
    }
  }
  println(val);
}

post-message.php

<?php
$count = filter_input(INPUT_GET, 'count', FILTER_SANITIZE_NUMBER_INT);
require('ArtikCloudProxy.php');
$proxy = new ArtikCloudProxy();
$proxy->setAccessToken("VOTRE_JETON_ACCES");
$data = '{"count":' . $count . '}';
$payload = array("data"=>$data, "sdid"=>"VOTRE_ID_DISPOSITIF", "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.php

<?php
class ArtikCloudProxy {
    const CLIENT_ID = "VOTRE_CLIENT_ID";
    const DEVICE_ID = "VOTRE_DEVICE_ID";
    const API_URL = "https://api.artik.cloud/v1.1";
    const API_USERS_SELF = "/users/self";
    const API_MESSAGES_LAST = "/messages/last?sdids=<DEVICES>&count=<COUNT>";
    const API_MESSAGES_POST = "/messages";

    public $token = null;
    public $user = null;

    public function __construct(){ }

    public function setAccessToken($someToken){
        $this->token = $someToken;
        $this->user = $this->getUsersSelf();
    }

    public function getCall($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPGET, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        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);
            $response = $json;
        }
        return $response;
    }

    public function postCall($url, $payload){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, (String) $payload);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        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);
            $response = $json;
        }
        return $response;
    }

    public function getUsersSelf(){
        return $this->getCall(ArtikCloudProxy::API_URL . ArtikCloudProxy::API_USERS_SELF);
    }

    public function sendMessage($payload){
        return $this->postCall(ArtikCloudProxy::API_URL . ArtikCloudProxy::API_MESSAGES_POST, $payload);
    }

    public function getMessagesLast($deviceCommaSeparatedList, $countByDevice){
        $apiPath = ArtikCloudProxy::API_MESSAGES_LAST;
        $apiPath = str_replace("<DEVICES>", $deviceCommaSeparatedList, $apiPath);
        $apiPath = str_replace("<COUNT>", $countByDevice, $apiPath);
        return $this->getCall(ArtikCloudProxy::API_URL . $apiPath);
    }
}
?>

Schémas

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

Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP

Processus de fabrication

  1. Contrôler la Luminosité de LEDs par PWM avec un Bouton Poussoir sur Arduino Mega
  2. Construire un dispositif de lévitation ultrasonique avec Arduino – Guide étape par étape
  3. Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
  4. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  5. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  6. Mesurer la masse de la Terre avec Arduino : Guide DIY étape par étape
  7. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
  8. Cadeau de Saint-Valentin : Compteur DIY des jours passés ensemble
  9. Construire une Boussole Numérique Temps Réel avec Arduino et Processing