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

Système de stationnement intelligent : Solutions de stationnement urbain efficaces

Composants et fournitures

Raspberry Pi 3 Modèle B×1
Arduino Mega 2560×1
Capteur ultrason HC-SR04 (générique)×3

Applications et services en ligne

À propos de ce projet

Trouver une place de stationnement libre dans une ville congestionnée comme Bangalore est très difficile. Avant de sortir en voiture, la première préoccupation est : où garer son véhicule ? Souvent, on arrive à un parking complet et doit en chercher un autre. C'est un vrai casse-tête.

J'ai donc conçu un système de stationnement intelligent basé sur le cloud, espérant résoudre ce problème dans ma ville. ARTIK Cloud est une plateforme idéale pour cela.

Avec ce système, un utilisateur peut trouver une place disponible facilement via une application mobile ou web, depuis n'importe où. Les données de stationnement sont mises à jour toutes les 30 secondes.

Voici les étapes du projet :

  1. Créer un dispositif dans ARTIK Cloud
  2. Créer une application dans ARTIK Cloud
  3. Créer une règle dans ARTIK Cloud
  4. Préparer l'Arduino
  5. Connecter les capteurs
  6. Préparer le Raspberry Pi
  7. Développer l'application web

Étape 1 : Créer un dispositif dans ARTIK Cloud

(Procédure détaillée avec captures d'écran : connexion compte Samsung, création type de dispositif, manifeste, champs de données, actions, connexion dispositif, génération token.)

Étape 2 : Créer une règle dans ARTIK Cloud

Définir des conditions pour déclencher des actions (ex: alerte quand places libres < seuil).

Étape 3 : Préparer l'Arduino

L'Arduino Mega collecte les données des capteurs ultrason (jusqu'à 3 par station) et les envoie au Raspberry Pi via port série. Voir le code dans la section Code.

Étape 4 : Connecter les capteurs

Voir la section Schémas pour le câblage des capteurs HC-SR04 sur l'Arduino.

Étape 5 : Préparer le Raspberry Pi

Le Raspberry Pi agit comme client WebSocket vers ARTIK Cloud. Utilise Node.js (à installer). Étapes :

sudo apt-get update
sudo apt-get install nodejs npm
npm install --save ws
npm install serialport

Téléchargez le code source depuis GitHub, modifiez DEVICE ID et DEVICE TOKEN, puis lancez :

sudo node staff-parking.js

Étape 6 : Développer l'application web

Application HTML/JavaScript communiquant avec ARTIK Cloud via WebSocket, intégrant Google Maps API. Téléchargez le dossier web-app depuis GitHub, modifiez les identifiants, ouvrez websocket.html dans un navigateur.

Code

Raspberry Pi (staff-parking) JavaScript
// Transfert données stationnement personnel
var webSocketUrl = "wss://api.artik.cloud/v1.1/websocket?ack=true";
var device_id = "Votre_Device_ID"; var device_token = "Votre_Device_Token";
var WebSocket = require('ws'); var isWebSocketReady = false; var ws = null;
var serialport = require("serialport"); var SerialPort = serialport.SerialPort;
var sp = new SerialPort("/dev/ttyACM0", { baudrate: 9600, parser: serialport.parsers.readline("\n") });
var parking_state = 0;

function getTimeMillis() { return parseInt(Date.now().toString()); }

function start() {
  ws = new WebSocket(webSocketUrl);
  ws.on('open', function() { console.log("Connexion WebSocket ouverte"); register(); });
  ws.on('message', function(data) { handleRcvMsg(data); });
  ws.on('close', function() { console.log("Connexion WebSocket fermée"); });
}

function register() {
  var registerMessage = '{"type":"register","sdid":"'+device_id+'","Authorization":"bearer '+device_token+'","cid":"'+getTimeMillis()+'"}';
  ws.send(registerMessage, {mask: true}); isWebSocketReady = true;
}

function handleRcvMsg(msg) { /* Traitement messages reçus */ }

function sendStateToArtikCloud(parking_slot) {
  var ts = ', "ts": '+getTimeMillis();
  var data = { "parking_slot": parking_slot };
  var payload = '{"sdid":"'+device_id+'"'+ts+',"data":'+JSON.stringify(data)+',"cid":"'+getTimeMillis()+'"}';
  ws.send(payload, {mask: true});
}

function exitClosePins() { process.exit(); }

start();
sp.on("open", function() {
  sp.on('data', function(data) {
    console.log("Données série reçues: " + data);
    var parking_slot = parseInt(data);
    sendStateToArtikCloud(parking_slot);
  });
});
process.on('SIGINT', exitClosePins);
Arduino (sonar) C/C++
#define echoPin1 2 #define trigPin1 3
#define echoPin2 4 #define trigPin2 5
#define echoPin3 6 #define trigPin3 7

long duration1, distance1, duration2, distance2, duration3, distance3;
int count=0, freeSlot=0;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin1, OUTPUT); pinMode(echoPin1, INPUT);
  pinMode(trigPin2, OUTPUT); pinMode(echoPin2, INPUT);
  pinMode(trigPin3, OUTPUT); pinMode(echoPin3, INPUT);
}

void loop() {
  // Mesure distance capteur 1
  digitalWrite(trigPin1, LOW); delayMicroseconds(2);
  digitalWrite(trigPin1, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin1, LOW);
  duration1 = pulseIn(echoPin1, HIGH);
  // Capteur 2
  digitalWrite(trigPin2, LOW); delayMicroseconds(2);
  digitalWrite(trigPin2, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin2, LOW);
  duration2 = pulseIn(echoPin2, HIGH);
  // Capteur 3
  digitalWrite(trigPin3, LOW); delayMicroseconds(2);
  digitalWrite(trigPin3, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin3, LOW);
  duration3 = pulseIn(echoPin3, HIGH);

  distance1 = duration1/58.2; if(distance1<10) distance1=1; else distance1=0;
  distance2 = duration2/58.2; if(distance2<10) distance2=1; else distance2=0;
  distance3 = duration3/58.2; if(distance3<10) distance3=1; else distance3=0;

  count = distance1 + distance2 + distance3;
  freeSlot = 3 - count; // 3 places totales
  Serial.println(freeSlot);
  delay(5000); // Mise à jour toutes les 5 secondes (exemple)
}
Application Web (HTML) HTML
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Système de stationnement intelligent ARTIK Cloud</title> <script src="websocket_client.js"></script> <style> ... </style> </head> <body onload="javascript:init()"> ... </body> </html>
Application Web (Côté client) JavaScript
// Interactions temps réel via WebSocket
var wsUri = "wss://api.artik.cloud/v1.1/websocket?ack=true";
var device_id = "Votre_Device_ID"; var device_token = "Votre_Device_Token";
// ... code complet de gestion WebSocket, affichage places libres sur carte Google Maps ...
Code source complet

Tous les codes et fichiers nécessaires sont dans ce dépôt GitHub : https://github.com/husinul/Smart-Car-Parking

Schémas

Système de stationnement intelligent : Solutions de stationnement urbain efficaces Système de stationnement intelligent : Solutions de stationnement urbain efficaces Système de stationnement intelligent : Solutions de stationnement urbain efficaces

Processus de fabrication

  1. Constructeurs C# : Types, exemples et patterns avancés
  2. Maîtriser les directives using C# : Imports, alias et directives static
  3. Systèmes de gestion de bâtiment : alimenter les smart cities avec l'IoT
  4. Contrôles d'éclairage intelligents réduisent les factures énergétiques des serres de 33 %
  5. SensiCut : plateforme de découpe laser avancée identifiant précisément les matériaux
  6. Systèmes de convoyage : fonctionnement, types et avantages clés
  7. Maîtriser le cric automobile : types, usages et conseils de sécurité
  8. Maîtriser la suspension automobile : composants, types, fonctionnement et diagnostic
  9. Pourquoi le chauffage de ma voiture ne marche qu'en roulant ? Causes et solutions