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

智能停车系统:树莓派 + Arduino Mega + 超声波传感器云端方案

系统架构概览

本项目构建一套基于 Samsung ARTIK Cloud(现已停止服务,建议迁移至 AWS IoT / Azure IoT / EMQX 等)的云端智能停车演示系统,逻辑拓扑如下:

[超声波传感器×3] → [Arduino Mega 串口] → [树莓派 3B USB/串口] → [WebSocket] → [ARTIK Cloud] ← [Web App / 手机端]

硬件清单

元器件数量角色
树莓派 3 Model B1边缘网关,运行 Node.js WebSocket 客户端
Arduino Mega 25601采集 3 路 HC-SR04 超声波数据,串口上报
HC-SR04 超声波模块3分别监测 3 个车位占用状态

云平台配置步骤(以 ARTIK 为例,通用于 MQTT/HTTP 平台)

  1. 创建设备类型:定义字段 parking_slot (Integer),表示空闲车位数
  2. 注册设备实例:获取 Device ID 与 Device Token
  3. 创建规则:当 parking_slot 变化时触发 Action,推送给订阅端
  4. 开发 Web App:建立 WebSocket 连接,实时渲染车位数与 Google Maps 标注

Arduino 端:超声波采集与串口上报


#define TRIG1 2  #define ECHO1 3
#define TRIG2 4  #define ECHO2 5
#define TRIG3 6  #define ECHO3 7

long d1, d2, d3;
int freeSlots = 0;

void setup() {
  Serial.begin(9600);
  pinMode(TRIG1, OUTPUT); pinMode(ECHO1, INPUT);
  pinMode(TRIG2, OUTPUT); pinMode(ECHO2, INPUT);
  pinMode(TRIG3, OUTPUT); pinMode(ECHO3, INPUT);
}

void loop() {
  d1 = readDist(TRIG1, ECHO1);
  d2 = readDist(TRIG2, ECHO2);
  d3 = readDist(TRIG3, ECHO3);
  // 距离 < 10cm 判定有车
  int occupied = (d1<10) + (d2<10) + (d3<10);
  freeSlots = 3 - occupied;
  Serial.println(freeSlots);  // 每 5 秒上报一次
  delay(5000);
}

long readDist(int trig, int echo) {
  digitalWrite(trig, LOW); delayMicroseconds(2);
  digitalWrite(trig, HIGH); delayMicroseconds(10);
  digitalWrite(trig, LOW);
  long dur = pulseIn(echo, HIGH, 30000); // 30ms 超时
  return dur / 58.2; // cm
}

树莓派端:Node.js WebSocket 网关


// staff-parking.js
const WebSocket = require('ws');
const SerialPort = require('serialport');
const Readline = require('@serialport/parser-readline');

const DEVICE_ID = 'YOUR_DEVICE_ID';
const DEVICE_TOKEN = 'YOUR_DEVICE_TOKEN';
const WS_URL = `wss://api.artik.cloud/v1.1/websocket?ack=true`;

const port = new SerialPort('/dev/ttyACM0', { baudRate: 9600 });
const parser = port.pipe(new Readline({ delimiter: '\n' }));

const ws = new WebSocket(WS_URL);
ws.on('open', () => {
  ws.send(JSON.stringify({
    type: 'register', sdid: DEVICE_ID,
    Authorization: 'bearer ' + DEVICE_TOKEN,
    cid: Date.now()
  }));
});

parser.on('data', line => {
  const slots = parseInt(line.trim());
  if (!isNaN(slots)) {
    ws.send(JSON.stringify({
      sdid: DEVICE_ID,
      ts: Date.now(),
      data: { parking_slot: slots },
      cid: Date.now()
    }));
  }
});

Web 前端:实时车位看板 + 地图


// websocket_client.js 关键片段
const ws = new WebSocket('wss://api.artik.cloud/v1.1/websocket?ack=true');
ws.onopen = () => ws.send(registerMsg);
ws.onmessage = evt => {
  const msg = JSON.parse(evt.data);
  if (msg.type === 'action') {
    const free = msg.data.actions[0].parameters.text;
    document.getElementById('rainbow').innerText = `空闲车位: ${free}`;
  }
};
// Google Maps 初始化标记两个停车场位置

原理图与实物

智能停车系统:树莓派 + Arduino Mega + 超声波传感器云端方案
智能停车系统:树莓派 + Arduino Mega + 超声波传感器云端方案
智能停车系统:树莓派 + Arduino Mega + 超声波传感器云端方案

迁移建议(ARTIK Cloud 已下线)

扩展方向

  1. 增加车牌识别(OpenCV + 树莓派摄像头)
  2. 接入 NB-IoT / LoRa 远程部署无需 WiFi
  3. 增加红外/雷达融合提高检测鲁棒性
  4. 开发微信小程序 / App 预约车位、导航引导

完整代码仓库

https://github.com/husinul/Smart-Car-Parking

制造工艺

  1. 智能调酒师:树莓派驱动的自动鸡尾酒机
  2. 输送系统全解析:工作原理、类型与核心优势
  3. 汽车千斤顶选购指南:类型、用途与安全操作要点
  4. 掌握车辆悬架系统:保护爱车与提升乘坐舒适的核心技术
  5. 车停着暖风不热、开动才热?6大核心原因与对策
  6. 汽车冷却系统常见故障及诊断指南
  7. 智能压缩机系统如何提升工厂效能
  8. 智能照明控制将温室电费最高降 33%
  9. SensiCut:精准识别材料的先进激光切割平台
  10. 楼宇管理系统(BMS)赋能智慧城市:IoT驱动能效、安防与个性化体验
  11. C# 构造函数:类型、示例与高级模式完全指南
  12. 掌握 C# using 指令:命名空间导入、别名与静态导入全解析