Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Система учёта рабочего времени по отпечатку пальца на Arduino с облачным хранилищем (ThingSpeak)

Компоненты и материалы

Arduino Mega 2560 R3×1
Сенсор отпечатков R301T (ElectroPeak)×1
MicroSD модуль (TF карта)×1
RTC DS3231 (I2C)×1
TFT 3.5" дисплей (MCUFRIEND_kbv)×1
NodeMCU ESP8266 (ESP-12E) — WiFi мост×1
Перемыжки мама-папа×1 набор

Инструменты

Программное обеспечение

О проекте

Устройство для учёта рабочего времени: сотрудник кладёт палец на сканер → система фиксирует вход/выход, сохраняет на SD-карту (дата, имя, время прихода, ухода, отработано часов), дублирует в EEPROM Mega (защита от потери питания). При наличии WiFi NodeMCU отправляет данные на ThingSpeak (5 полей: дата, имя, вход, выход, часы). Можно выгрузить CSV из панели ThingSpeak.

Настройка ThingSpeak

  1. Регистрация на ThingSpeak.com.
  2. Channels → New Channel → имя, 5 полей (Date, Name, Enter, Exit, WorkTime).
  3. API Keys → сохранить Channel ID и Write API Key.
  4. Установить библиотеку ThingSpeak в Arduino IDE.
  5. Пример WriteMultipleFields → вставить свои SSID, PASS, Channel ID, Write API Key.
  6. Минимальный интервал обновления канала — 15 секунд.

Архитектура системы

Формат данных между Mega и NodeMCU

Строка с разделителями *: Date*Name*Enter*Exit*WorkTime*
Пример: 2024-01-15*Ivan*09:00*18:00*9.0*

Код NodeMCU (загрузчик на ThingSpeak)

#include "ThingSpeak.h"
#include 

char ssid[] = "YOUR_SSID";
char pass[] = "YOUR_PASSWORD";
WiFiClient client;
unsigned long myChannelNumber = YOUR_CHANNEL_ID;
const char * myWriteAPIKey = "YOUR_WRITE_API_KEY";

String Final = "", Date = "", Enter = "", Exit = "", Name = "", WT = "";

void String_Analyze(String input) {
  int i1 = input.indexOf('*', 0);
  int i2 = input.indexOf('*', i1 + 1);
  int i3 = input.indexOf('*', i2 + 1);
  int i4 = input.lastIndexOf('*');
  Name = input.substring(0, i1);
  Date = input.substring(i1 + 1, i2);
  Enter = input.substring(i2 + 1, i3);
  Exit = input.substring(i3 + 1, i4);
  WT = input.substring(i4 + 1);
}

void Get_String() {
  while (Serial.available()) Final = Serial.readString();
}

void setup() {
  Serial.begin(9600);
  WiFi.mode(WIFI_STA);
  ThingSpeak.begin(client);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
}

void loop() {
  if (WiFi.status() != WL_CONNECTED) {
    while (WiFi.status() != WL_CONNECTED) {
      WiFi.begin(ssid, pass);
      Serial.print("0"); delay(5000);
    }
  }
  digitalWrite(LED_BUILTIN, LOW);
  Get_String();
  String_Analyze(Final);
  if (Final.length() > 0) {
    ThingSpeak.setField(1, Date);
    ThingSpeak.setField(2, Name);
    ThingSpeak.setField(3, Enter);
    ThingSpeak.setField(4, Exit);
    ThingSpeak.setField(5, WT);
    int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
    Serial.print(x == 200 ? "1" : "0");
    delay(17000); // ThingSpeak лимит 15 сек
    Final = "";
  }
}

Код Arduino Mega (основная логика)

Требует библиотек: Adafruit_Fingerprint, Adafruit_GFX, MCUFRIEND_kbv, RTClib, SD, EEPROM.
Полный скетч (с регистрацией отпечатков через Serial Monitor, меню на TFT, записью на SD, отправкой в NodeMCU) доступен в архиве electropeak_attendance_code.zip во вложениях.

Корпус (лазерная резка)

DWG-файл attendanceboxlasercut.dwg — планки акрила/плексигласа для монтажа Mega, TFT, сканера, SD, NodeMCU, блока питания. Сборка на болтах/винтах.

Идеи для расширения

Производственный процесс

  1. 10 ключевых преимуществ облачного хранилища для современных бизнесов
  2. DVD-проигрыватели: история, технологии и будущие инновации
  3. Надежная система учета рабочего времени на Arduino с RFID и Python
  4. Беспроводная передача данных по магнитному полю на Arduino с 3D-сенсором Infineon
  5. SERENA: Пользовательская система сигнализации на Arduino Mega 2560 с TFT Touchscreen
  6. Логгер температуры и влажности на Arduino с DHT11 и Ethernet Shield
  7. Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266
  8. Сенсорная башня на Arduino Cloud: Мониторинг температуры, движения и газа
  9. Умная вентиляция подвала на Arduino: контроль влажности
  10. Использование облачной мощи для IoT: раскрытие бесшовной связности и инсайтов данных