Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP

Komponen dan Perlengkapan

Aplikasi dan Layanan Online

Tentang Proyek Ini

Pendahuluan

Proyek ini menunjukkan cara menggunakan Arduino untuk menghitung jumlah mobil yang masuk dan keluar dari sebuah mall menggunakan dua sensor, mengirim data ke cloud menggunakan Processing & PHP, dan nanti melihat jumlah slot parkir yang tersedia di area parkir. Anda tidak perlu shield Ethernet atau WiFi untuk proyek ini!

Cara Kerja

Sensor perlu ditempatkan di titik masuk dan keluar area parkir agar berfungsi sebagaimana mestinya. Secara dasar, Anda menambah count setiap kali mobil masuk dan mengurangi saat keluar. LED di sistem hanya menunjukkan bahwa kendaraan terhitung dengan benar karena menyala setiap kali mobil melewati sensor.

Processing

Processing adalah bahasa/alat pengembangan open source untuk menulis program di komputer lain. Berguna ketika Anda ingin komputer lain "berbicara" dengan Arduino, misalnya untuk menampilkan atau menyimpan data yang dikumpulkan oleh Arduino.

Untuk proyek ini, kami menggunakan Processing untuk menerima data (jumlah mobil) yang dikirim Arduino melalui port serial. Unduh dan instal IDE Processing di komputer Anda. Anda dapat melihat dalam skets Processing yang dilampirkan baris kode yang sangat sederhana dan mudah dipahami. Di sini, kami memanggil file PHP menggunakan metode loadStrings().

Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP

PHP

File PHP post-message.php adalah file yang sama dalam tutorial yang ditemukan di sini. Kami mengunduh seluruh file zip dari halaman Github dan mengedit beberapa baris kode dalam file asli sehingga kami dapat menggunakannya tanpa harus login ke akun Samsung kami. Untuk ini berfungsi, Anda perlu mengikuti petunjuk di sini tentang mengubah port server WAMP atau XAMP Anda dan menginstal sertifikat CA untuk ARTIK Cloud. Alternatifnya, Anda dapat menggunakan server remote atau hosted dengan sertifikat SSL yang terpasang.

Salin file ke sebuah folder, misalnya, acdemo sehingga dapat diakses menggunakan URL https://localhost:8000/acdemo/post-message.php atau https://www.yourwebsite.com/acdemo/post-message.php

Hanya ada dua file dalam SDK PHP yang perlu Anda edit: ArtikCloudProxy.php dan post-message.php. Anda dapat melihat client & device ID di sini.

Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP

Dalam file post-message.php, Anda perlu mendapatkan access token dan device ID Anda. Cara termudah untuk mendapatkan token adalah dengan mengikuti langkah di sini. Perhatikan bahwa satu-satunya data yang kami kirim ke cloud adalah jumlah mobil yang masuk dan keluar dari mall. Kami membuat sebuah device di Artik Cloud dan menamainya Car Counter dengan sebuah field yang disebut count yang menyimpan nilai ini.

Sekarang semua telah disiapkan, saatnya untuk memulai! Ikuti langkah-langkah sederhana di bawah ini:

Artik Cloud

Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP
Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP
Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP

Pengkodean

Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP

Pemecahan Masalah

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

Apa yang Harus Dilakukan Selanjutnya

Berdasarkan data jumlah mobil di atas, Anda dapat membuat aplikasi untuk mall sehingga pembeli dapat melihat jumlah slot yang tersedia di area parkir sebelum pergi ke mall. Anda juga dapat menambahkan indikator lampu lain yang menyala ketika parkir penuh atau tidak.

Kode

Kode 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); } } 

Ini adalah kode yang menampilkan jumlah mobil ke serial dan menyalakan LED untuk menunjukkan bahwa mobil melewati sensor PIR.

Skets Processing

import processing.serial.*; Serial myPort; // Buat objek dari kelas Serial String val; // Data yang diterima dari port serial void setup() { // Saya tahu bahwa port pertama dalam daftar serial di mac saya // adalah Serial.list()[0]. // Di mesin Windows, ini biasanya membuka COM1. // Buka port mana pun yang Anda gunakan. String portName = Serial.list()[0]; //ubah 0 menjadi 1 atau 2 dst. untuk cocok dengan port Anda myPort = new Serial(this, portName, 9600); } void draw() { if ( myPort.available() > 0) { // Jika data tersedia, val = myPort.readStringUntil('\n'); // baca dan simpan di val int count = parseInt(val); if(count >= 0){ loadStrings("https://localhost:8000/acdemo/post-message.php?count="+val); } } println(val); //cetak di konsol } 

Skets Processing ini membaca nilai masuk pada port analog dan kemudian menggunakan fungsi Komunikasi Serial untuk mengeluarkan nilai.

post-message.php

<?php $count = filter_input(INPUT_GET, 'count', FILTER_SANITIZE_NUMBER_INT); require('ArtikCloudProxy.php'); $proxy = new ArtikCloudProxy(); $proxy->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); 

Kode ini GET nilai yang diteruskan oleh skets Processing dan POST count ke cloud.

ArtikCloudProxy.php

<?php /** * ARTIK Cloud helper class yang berkomunikasi dengan ARTIK Cloud * */ class ArtikCloudProxy { # Konfigurasi Umum const CLIENT_ID = "YOUR_CLIENT_ID"; const DEVICE_ID = "YOUR_DEVICE_ID"; const API_URL = "https://api.artik.cloud/v1.1"; # Jalur API const API_USERS_SELF = "/users/self"; const API_MESSAGES_LAST = "/messages/last?sdids=<DEVICES>&count=<COUNT>"; const API_MESSAGES_POST = "/messages"; # Anggota public $token = null; public $user = null; public function __construct(){ } /** * Mengatur access token dan mencari informasi profil pengguna */ public function setAccessToken($someToken){ $this->token = $someToken; $this->user = $this->getUsersSelf(); } /** * Panggilan API GET */ 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; } /** * Panggilan API POST */ 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; } /** * 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("<DEVICES>", $deviceCommaSeparatedList, $apiPath); $apiPath = str_replace("<COUNT>", $countByDevice, $apiPath); return $this->getCall(ArtikCloudProxy::API_URL.$apiPath); } } 

Ini adalah kelas ArtikCloudProxy yang diperlukan untuk terhubung ke cloud Artik. Simpan di folder yang sama dengan post-message.php yang dapat diakses dari web. Lakukan perubahan yang diperlukan pada konfigurasi.

Skematik

Diagram untuk menghubungkan 2 sensor PIR dan LED

Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP Smart Parking Counter: Pelacakan Kendaraan Real-Time dengan Arduino, Processing, dan PHP

Proses manufaktur

  1. Mengontrol Kecerahan LED dengan PWM melalui Tombol Push pada Arduino Mega
  2. Buat Alat Levitasi Ultrasonik dengan Arduino – Panduan Langkah demi Langkah
  3. Buat Kotak Pintar IoT dengan ESP8266, Arduino & Sensor Ultrasonik – Pemantauan Real-Time
  4. Bangun Iron Man Arduino: Komponen, Sensor, dan Panduan Langkah demi Langkah
  5. Find Me: Pelacak Item Cerdas dengan Arduino dan Bluetooth
  6. Mengukur Massa Bumi dengan Arduino: Panduan DIY Langkah demi Langkah
  7. Pengontrol Kelembapan Arduino DIY dengan Relay – Pengaturan Tegangan Tinggi yang Aman
  8. Pengukuran Jarak Real-Time dengan Sonar Arduino & Visualisasi Processing
  9. Hadiah Valentine: Penghitung Hari Bersama DIY
  10. Membuat Kompas Digital Real-Time dengan Arduino & Processing