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

基于 Arduino 与 Google Sheets 的实时 RFID 考勤系统

组件与物料

组件 数量
Arduino UNO R3 1
Arduino Ethernet Shield 2(W5500) 1
RFID-RC522 模块(含 S50 白卡/钥匙扣) 1
杜邦线若干 1

软件与云服务

项目背景

室内空气污染往往比室外严重 2~5 倍,灰尘、过敏原引发打喷嚏、眼睛痒甚至哮喘。本项目利用 RFID 刷卡考勤,配合 Ethernet Shield 通过 Pushingbox 将 UID 实时推送至 Google Sheets,实现零成本云端考勤记录,适合中小团队、教室、实验室等场景。

软件准备

1. Arduino IDE

从 官网 下载最新版。

2. Google Drive 侧配置

  1. 新建 Google 表格,表头建议:Timestamp, UID, Name, Status。
  2. 打开“扩展程序 → Apps Script”,粘贴接收 HTTP GET 请求并追加行的脚本,部署为“Web 应用”,权限选“任何人”,复制生成的 URL。

3. Pushingbox 配置

  1. 登录 Pushingbox,创建 Scenario,Action 选择“HTTP Request”,URL 填入 Apps Script 部署链接,Method 选 GET,参数如 uid=$UID$。
  2. 记下生成的 DeviceID(形如 vXXXXXXXXXXXXXX)。

硬件接线

Ethernet Shield

直接插在 UNO 顶部,RJ45 接路由器 LAN 口。

RFID-RC522 (SPI)

RC522 引脚 UNO 引脚 Mega 引脚
RST 9 9
SDA (SS) 10* 53*
MOSI 11 51
MISO 12 50
SCK 13 52
3.3V 3.3V 3.3V
GND GND GND

注意:Ethernet Shield 已占用引脚 10 (UNO) / 53 (Mega) 作为 SS,因此 RC522 的 SDA 必须改接别的引脚(如 UNO 的 4),并在代码中修改 SS_PIN 定义,避免 SPI 总线冲突。

基于 Arduino 与 Google Sheets 的实时 RFID 考勤系统

库安装

核心代码逻辑

#include <SPI.h>
#include <MFRC522.h>
#include <Ethernet.h>

#define SS_PIN 4   // 避开 Ethernet Shield 的 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
char server[] = "api.pushingbox.com";
EthernetClient client;

void setup() {
  Serial.begin(115200);
  SPI.begin();
  mfrc522.PCD_Init();
  Ethernet.begin(mac);
  delay(1000);
}

void loop() {
  if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) return;
  String uid = "";
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    uid += String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    uid += String(mfrc522.uid.uidByte[i], HEX);
  }
  uid.toUpperCase();
  sendToPushingbox(uid);
  delay(1000); // 防重复触发
}

void sendToPushingbox(String uid) {
  if (client.connect(server, 80)) {
    String url = "/pushingbox?devid=YOUR_DEVICEID&uid=" + uid;
    client.print("GET " + url + " HTTP/1.1\r\nHost: " + String(server) + "\r\nConnection: close\r\n\r\n");
  }
  client.stop();
}

将 YOUR_DEVICEID 替换为 Pushingbox 分配的 ID。上传后打开串口监视器观察调试信息,刷卡即可在 Google 表格看到新行。

进阶扩展

  • 在 Apps Script 中加入姓名查找表(UID→姓名),自动填充 Name 列。
  • 添加 LCD/OLED 现场显示刷卡结果。
  • 改用 ESP8266/ESP32 走 WiFi,省去 Ethernet Shield,降低成本。
  • 配合 Google 表单/数据验证实现“签入/签出”状态切换。

常见问题

串口显示连接失败
检查网线、路由器 DHCP、MAC 地址冲突;尝试固定 IP。
Pushingbox 无数据
确认 DeviceID 正确、Apps Script 部署权限为“任何人”、URL 可在浏览器直接访问并写入表格。
RFID 读卡距离短
天线贴金属会屏蔽,垫 5 mm 塑料/木板;供电确保 3.3V 稳定。

制造工艺

  1. 基于 Arduino 与 Python 的可靠 RFID 考勤系统
  2. Arduino Mega 拍照自动上传 Google Drive:PHPoC WiFi Shield 方案
  3. Arduino UNO 驱动 16x2 LCD 实现动画与小游戏
  4. SERENA:基于 Arduino Mega 2560 与 TFT 触摸屏的多级密码报警系统
  5. 智能地下室通风系统:Arduino 驱动的湿度自动控制
  6. Python 3 控制 Arduino UNO - 串口通信点亮内置 LED 入门教程
  7. Arduino Nano 驱动 128x64 OLED 实时运行康威生命游戏 (元胞自动机)
  8. Arduino 高速转速计 - 单次检测算法实测 6.5MHz 级响应,红外 + 红激光方案
  9. eDOT:基于 Arduino 的精密时钟与气象站,内置红外遥控
  10. 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机
  11. 基于Arduino、Windows IoT与Azure云的高级跌倒检测系统
  12. Arduino 指纹考勤系统:本地存储 + ThingSpeak 云端同步