산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 지문인식 근태관리 시스템: 클라우드(ThingSpeak) 데이터 저장

부품 및 소모품

부품수량비고
Arduino Mega 2560 R31메인 컨트롤러 (시리얼 포트 다수 필요)
ElectroPeak R301T 지문 센서1시리얼 통신
Micro SD TF 카드 어댑터 모듈1로컬 데이터 백업용
DS3231 I2C RTC 모듈1정확한 시간 스탬프
3.5" TFT 컬러 LCD 실드1상태/메뉴 표시 (아두이노 메가 호환)
NodeMCU ESP8266 ESP-12E1WiFi 통신 및 ThingSpeak 업로드 전담
수-암 점퍼 와이어1세트배선용

필요 도구

소프트웨어

프로젝트 개요

IoT 기기 구현 능력을 기르기 위한 튜토리얼로, 지문인식 기반 근태관리 장치를 만듭니다. 직원이 지문으로 출/퇴근 인증 시:

  1. 날짜, 이름, 출근시간, 퇴근시간, 근무시간을 SD 카드에 저장
  2. 인터넷 연결 시 ThingSpeak 클라우드에 자동 업로드 (CSV 다운로드 가능)
  3. 인터넷 미연결 시 EEPROM에 미전송 데이터 보관 → 재연결 시 일괄 전송
  4. 정전 시에도 EEPROM에 데이터 보존

ThingSpeak 설정 방법

  1. ThingSpeak.com 회원가입
  2. My Channels → New Channel 생성
  3. 필드 5개 설정: Date, Name, Enter Time, Exit Time, Work Hours
  4. API Keys 탭에서 Channel ID와 Write API Key 복사
  5. Arduino IDE 라이브러리 매니저에서 "ThingSpeak" 검색 설치
  6. 예제 `WriteMultipleFields` 열어서 SSID, Password, Channel ID, Write API Key 입력 후 테스트

주의: ThingSpeak 무료 계정은 최소 15초 간격으로만 업데이트 가능. 코드에서 `delay(17000)`로 준수.

하드웨어 구성

아두이노 메가 메인 보드

NodeMCU 역할

메가로부터 시리얼로 데이터 문자열 수신(`날짜*이름*출근*퇴근*근무시간` 형식) → 파싱 → ThingSpeak 필드 매핑 → 업로드 → 성공/실패(1/0) 메가로 회신.

소스 코드

1. ThingSpeak 테스트 코드 (NodeMCU용)


#include "ThingSpeak.h"
#include 

char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
WiFiClient client;
unsigned long myChannelNumber = SECRET_CH_ID;
const char * myWriteAPIKey = SECRET_WRITE_APIKEY;

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  ThingSpeak.begin(client);
}

void loop() {
  if (WiFi.status() != WL_CONNECTED) {
    WiFi.begin(ssid, pass);
    while (WiFi.status() != WL_CONNECTED) { delay(5000); }
  }
  
  ThingSpeak.setField(1, number1);
  ThingSpeak.setField(2, number2);
  ThingSpeak.setField(3, number3);
  ThingSpeak.setField(4, number4);
  
  int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
  if (x == 200) Serial.println("Channel update successful.");
  else Serial.println("Problem updating channel. HTTP error " + String(x));
  
  delay(20000);  // 20초 대기 (무료 계정 제한)
}

2. NodeMCU 실전 업로드 코드


#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);  // LED off (active low)
}

void loop() {
  // WiFi 재연결
  if (WiFi.status() != WL_CONNECTED) {
    while (WiFi.status() != WL_CONNECTED) {
      WiFi.begin(ssid, pass);
      Serial.print("0"); delay(5000);
    }
  }
  digitalWrite(LED_BUILTIN, LOW);  // LED on = connected
  
  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);
    if (x == 200) { delay(100); Serial.print("1"); }
    else { delay(100); Serial.print("0"); }
    
    delay(17000);  // ThingSpeak 15초 룰 준수
    Final = "";
  }
}

3. 아두이노 메가 메인 코드 (별도 파일 제공)

다음 라이브러리 필요:

기능: 지문 등록/인증, RTC 시간 읽기, SD 카드 로그 기록, TFT 메뉴 UI, NodeMCU로 데이터 전송 관리, EEPROM 미전송 데이터 큐 관리.

전체 코드는 프로젝트 페이지 첨부 파일(`electropeak_attendance_code.zip`)에서 다운로드 가능.

케이스 제작

확장 아이디어

참고 자료

제조공정

  1. 현대 비즈니스를 위한 클라우드 스토리지 10가지 핵심 이점
  2. DVD 플레이어: 역사, 기술, 그리고 미래 혁신
  3. 파이썬 연동 아두이노 RFID 출석 관리 시스템 구축하기
  4. 아두이노 기반 무선 자기장 데이터 전송 – 인피니언 3D 자기 센서 활용
  5. SERENA: TFT LCD 터치스크린 탑재 아두이노 메가 2560 커스텀 알람 시스템
  6. 아두이노 DHT11 이더넷 실드 온습도 데이터 로거
  7. DFRobot 정전식 지문 인식 센서 아두이노/ESP8266 연동 가이드
  8. 아두이노 클라우드 센서 타워 만들기: 온도, 모션, 가스 모니터링
  9. 스마트 지하실 환기 시스템: 아두이노 기반 습도 제어
  10. 클라우드 파워로 IoT 잠금 해제: 끊김 없는 연결과 데이터 인사이트