Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Intelligent Parkeersysteem: Efficiënte Stedelijke Parkeersoplossingen

Onderdelen en benodigdheden

Raspberry Pi 3 Model B × 1
Arduino Mega 2560 × 1
Ultrasonische Sensor HC-SR04 × 3

Apps en online diensten

  • Samsung ARTIK Cloud voor IoT (opmerking: ARTIK Cloud is sinds 2020 beëindigd; overweeg alternatieven zoals AWS IoT, Azure IoT, of ThingsBoard)
  • Google Maps API
  • Arduino IDE

Over dit project

Het vinden van een vrije parkeerplaats in een drukke stad is lastig. Mensen rijden vaak naar een parkeergarage om te ontdekken dat deze vol zit, en moeten dan verder zoeken. Dit project lost dit op met een cloud-gebaseerd slim parkeersysteem.

Met dit systeem kan een gebruiker via een mobiele of web-app vanaf elke locatie een beschikbare parkeerplaats vinden. De parkeergegevens worden elke 30 seconden bijgewerkt.

Stappen in dit project:

  1. Een apparaat aanmaken in ARTIK Cloud Platform
  2. Een applicatie aanmaken in ARTIK Cloud
  3. Een regel (rule) aanmaken in ARTIK Cloud
  4. Arduino voorbereiden
  5. Sensoren aansluiten
  6. Raspberry Pi voorbereiden
  7. Web-applicatie ontwikkelen

Stap 1: Apparaat aanmaken in ARTIK Cloud

Log in op je Samsung-account, ga naar DEVELOPER → DEVICE TYPES → NEW. Geef een weergavenaam en unieke naam. Maak een manifest aan met een veld (bijv. parking_slot, type integer). Genereer een Device ID en Device Token na het koppelen.

Stap 2: Regel aanmaken in ARTIK Cloud

Maak een regel onder RULES → NEW RULE. Stel een voorwaarde in (bijv. als parking_slot > 0) en een actie die getriggerd wordt. Dit stelt realtime notificaties in.

Stap 3: Arduino voorbereiden

De Arduino Mega verzamelt data van de ultrasoon-sensoren op de parkeerplaatsen en stuurt deze via de seriële poort naar de Raspberry Pi. Upload de sonar-sketch (zie code-sectie).

Stap 4: Sensoren aansluiten

Intelligent Parkeersysteem: Efficiënte Stedelijke Parkeersoplossingen

Drie HC-SR04 sensoren zijn aangesloten op digitale pinnen 2-7 van de Arduino Mega.

Stap 5: Raspberry Pi voorbereiden

De Raspberry Pi fungeert als WebSocket-client naar ARTIK Cloud. Gebruik Node.js:

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

Download de broncode (staff-parking.js) van GitHub, pas Device ID en Token aan, en start met:

sudo node staff-parking.js

Stap 6: Web-applicatie ontwikkelen

De web-app gebruikt HTML, JavaScript en WebSocket voor communicatie met ARTIK Cloud. Google Maps API toont de parkeergelegenheden. Download de web-app map van GitHub, pas Device ID/Token aan, en open websocket.html in een browser.

Code

Raspberry Pi (staff-parking.js)

// Staff parking data transfer naar ARTIK Cloud
var webSocketUrl = "wss://api.artik.cloud/v1.1/websocket?ack=true";
var device_id = "JOUW_DEVICE_ID";
var device_token = "JOUW_DEVICE_TOKEN";

var WebSocket = require('ws');
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;

var sp = new SerialPort("/dev/ttyACM0", {
  baudrate: 9600,
  parser: serialport.parsers.readline("\n")
});

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

function start() {
  var ws = new WebSocket(webSocketUrl);
  ws.on('open', function() {
    console.log("WebSocket verbinding open");
    register(ws);
  });
  ws.on('message', function(data) { handleRcvMsg(data); });
  ws.on('close', function() { console.log("WebSocket gesloten"); });
}

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

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

start();

sp.on("open", function() {
  sp.on('data', function(data) {
    var parking_slot = parseInt(data);
    sendStateToArtikCloud(ws, parking_slot);
  });
});

Arduino (sonar.ino)

#define echoPin1 2
#define trigPin1 3
#define echoPin2 4
#define trigPin2 5
#define echoPin3 6
#define trigPin3 7

long duration1, distance1;
long duration2, distance2;
long duration3, distance3;
int 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() {
  // Sensor 1
  digitalWrite(trigPin1, LOW); delayMicroseconds(2);
  digitalWrite(trigPin1, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin1, LOW);
  duration1 = pulseIn(echoPin1, HIGH);
  distance1 = duration1 / 58.2;
  distance1 = (distance1 < 10) ? 1 : 0;

  // Sensor 2
  digitalWrite(trigPin2, LOW); delayMicroseconds(2);
  digitalWrite(trigPin2, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin2, LOW);
  duration2 = pulseIn(echoPin2, HIGH);
  distance2 = duration2 / 58.2;
  distance2 = (distance2 < 10) ? 1 : 0;

  // Sensor 3
  digitalWrite(trigPin3, LOW); delayMicroseconds(2);
  digitalWrite(trigPin3, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin3, LOW);
  duration3 = pulseIn(echoPin3, HIGH);
  distance3 = duration3 / 58.2;
  distance3 = (distance3 < 10) ? 1 : 0;

  int count = distance1 + distance2 + distance3;
  freeSlot = 3 - count;

  Serial.println(freeSlot);
  delay(5000);  // Update elke 5 seconden (demo), 30s in productie
}

Web App (HTML + JavaScript)

De frontend toont parkeercapaciteit en vrije plaatsen per locatie op een Google Maps-kaart. De WebSocket-client luist naar acties van ARTIK Cloud en werkt de UI bij.

Broncode repository

Alle benodigde code en bestanden: GitHub - Smart-Car-Parking

Schema's

Intelligent Parkeersysteem: Efficiënte Stedelijke Parkeersoplossingen
Intelligent Parkeersysteem: Efficiënte Stedelijke Parkeersoplossingen
Intelligent Parkeersysteem: Efficiënte Stedelijke Parkeersoplossingen

Productieproces

  1. Slimme Barman: Bouw Je Eigen Raspberry Pi-Cocktailstation
  2. Transportbandsystemen Uitgelegd: Werking, Typen en Voordelen
  3. Uw Wagenkrik Beheersen: Typen, Toepassingen en Veiligheidstips
  4. Meester uw voertuig ophangingssysteem: Auto beschermen & rijcomfort verbeteren
  5. Waarom werkt mijn autoverwarming alleen tijdens het rijden? Oorzaken & oplossingen
  6. Hoe slimme compressorsystemen de faciliteitsefficiëntie verbeteren
  7. Slimme verlichtingscontrole verlaagt kasenergierekeningen met tot 33%
  8. SensiCut: Geavanceerd laser snijder platform identificeert materialen accurate
  9. Building Management Systems: Slimme steden aandrijven met IoT
  10. C# Constructors: Types, Voorbeelden en Geavanceerde Patronen
  11. C# using-statements: imports, aliasen en static directives