亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

智能停车计数系统:Arduino + Processing + PHP 实时车位追踪上云

组件与材料

组件 数量 备注
Arduino UNO 1 主控,读取 PIR 并串口上传计数
PIR 人体红外传感器 (通用) 2 分别安装于入口/出口
LED (指示灯) 1 检测到车辆闪烁确认
杜邦线 1

应用与在线服务

项目原理

计数逻辑

两个 PIR 传感器分别部署在停车场入口与出口。车辆驶入触发入口传感器 → 计数器 +1;驶出触发出口传感器 → 计数器 -1。LED 每次计数闪烁 500ms 指示。计数值通过 USB 串口实时发送给 PC 端的 Processing 程序。

数据上云链路

  1. Arduino → (USB/串口) → Processing (读取串口字符串)
  2. Processing → `loadStrings("https://localhost:8000/acdemo/post-message.php?count=" + val)` → PHP 代理
  3. PHP → HTTPS POST JSON → Samsung ARTIK Cloud (设备类型 Car Counter, 字段 count)
  4. 前端/手机 App 可从云端读取实时剩余车位

软件架构图

智能停车计数系统:Arduino + Processing + PHP 实时车位追踪上云

智能停车计数系统:Arduino + Processing + PHP 实时车位追踪上云

智能停车计数系统:Arduino + Processing + PHP 实时车位追踪上云

核心代码

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() {
  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);
  }
}

Processing 端 (串口网关 → HTTP GET)

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

void setup() {
  // 根据实际端口修改索引:Windows 通常 COM3=Serial.list()[0] 或 [1]
  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) {
      // 调用本地 PHP 代理上传云端
      loadStrings("https://localhost:8000/acdemo/post-message.php?count=" + val);
    }
  }
  println(val); // 控制台打印
}

PHP 代理 (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);

PHP SDK 核心类 (ArtikCloudProxy.php)

<?php
class ArtikCloudProxy {
  const CLIENT_ID = "YOUR_CLIENT_ID";
  const DEVICE_ID = "YOUR_DEVICE_ID";
  const API_URL = "https://api.artik.cloud/v1.1";
  const API_MESSAGES_POST = "/messages";
  public $token = null;
  public $user = null;

  public function setAccessToken($someToken) {
    $this->token = $someToken;
    $this->user = $this->getUsersSelf();
  }
  public function getCall($url) { /* cURL GET 实现 */ }
  public function postCall($url, $payload) { /* cURL POST 实现 */ }
  public function getUsersSelf() { return $this->getCall(API_URL . API_USERS_SELF); }
  public function sendMessage($payload) { return $this->postCall(API_URL . API_MESSAGES_POST, $payload); }
}

部署步骤

  1. 搭建硬件:按原理图连接 2 路 PIR + LED
  2. 上传 Arduino 代码,打开串口监视器验证计数输出
  3. 本地搭建 WAMP/XAMPP,配置 HTTPS 端口 (如 8000) 并安装 CA 证书
  4. 将 `post-message.php` 与 `ArtikCloudProxy.php` 放入站点目录 (如 `acdemo`)
  5. 在 ARTIK Cloud 创建应用、设备类型 Car Counter、获取 Client ID/Secret/Device ID/Access Token 填入 PHP
  6. 运行 Processing 草图,确保串口端口正确
  7. 登录 ARTIK Cloud 仪表盘查看实时数据

故障排查

现代化迁移建议 (ARTIK Cloud 已停服)

原理图

智能停车计数系统:Arduino + Processing + PHP 实时车位追踪上云 智能停车计数系统:Arduino + Processing + PHP 实时车位追踪上云

制造工艺

  1. Arduino Mega 按键 PWM 调光:三阶段渐变 LED 实战教程
  2. 用 Arduino 制作超声波悬浮装置:分步指南
  3. 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
  4. DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
  5. Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
  6. 用 Arduino 测量地球质量:DIY 分步指南
  7. DIY Arduino 加湿器控制器:继电器安全控制高压电路
  8. Arduino 声纳实时测距与 Processing 可视化
  9. MAX30100脉搏血氧传感器与Arduino接入指南:获取PPG波形与SpO2
  10. 通过 Arduino IoT Cloud 用 Alexa 控制电视:分步指南
  11. 情人节礼物:DIY 恋爱天数计数器
  12. Arduino 实时数字罗盘:HMC5883L + Processing 可视化教程