신성혁

임베디드 소프트웨어 개발자

신성혁입니다.

비전공자에서 임베디드 개발자까지, 하드웨어와 소프트웨어의 경계에서 문제를 해결합니다.

경력
가이아스 2년+
주력 스택
C · Python · Linux
프로젝트
14건
전문 영역
임베디드 × 서버

시작

귀찮은 걸 제일 싫어했습니다

토목공학과에 어영부영 진학해서, 하고 싶은 것도 없이 흘러가는 대로 학교만 대충 다니며, 남는 시간은 대부분 게임으로 흘려 보냈습니다.

NO SIGNAL

같이 게임하던 사람의 권유로 Python을 처음 접했고, 프로그래밍이라는 것이 귀찮은 일을 전부 자동화해버릴 수 있으며 거기서 그치지 않고 제 입맛대로 커스텀까지 할 수 있다는 것을 알게 됐습니다.

>>> for f in files: rename(f)
  • photo_001.jpg
  • photo_002.jpg
  • photo_003.jpg
  • photo_004.jpg
  • photo_005.jpg
  • photo_006.jpg
  • photo_007.jpg
귀찮은 걸 전부 자동화할 수 있다고?? 그것도 내 입맛대로?!?!
?!

제일 싫어하던 것이 귀찮은 일이었으니 여기에 완전히 매력을 느꼈고, 3학년 때 졸업 후 소프트웨어로 진로를 바꾸기로 마음먹었습니다. 다만 독학으로 시작한 터라 출발은 형편없어서, IDE를 겨우 깔고 print("hello world") 한 줄 찍는 것조차 어려웠습니다. 그래도 진로를 바꾸려면 학점부터 챙겨야 했기에, 그때부터는 학교 생활도 성실하게 했습니다.

$ python
>>> print "hello world"
  File "<stdin>", line 1
    print "hello world"
    ^^^^^^^^^^^^^^^^^^^
SyntaxError: Missing parentheses in call to 'print'.
>>> 

전환

데이터를 보다가 장비를 만들게 됐습니다

독학만으로는 기초가 계속 비어 있다는 걸 알았기에, 졸업 후 KEPCO 부트캠프에 들어가 6개월간 통계 이론과 ML/DL 실무를 배웠습니다. 한국전력이 운영하는 과정이다 보니 다루는 데이터가 대부분 전력이었고, 그래서 그때 진행한 프로젝트 5건 중 4건이 전력 주제였습니다. 510개 관측지점 데이터로 6시간 뒤 수요를 예측해 MAPE 0.53%를 달성했고, 약 20개 기상요소와 전력 사용량의 상관관계를 분석해 최대 상관계수가 0.43 미만이라는 결론을 도출했습니다.

2023년 9월, 지금 회사에 재직 중이던 직원의 추천으로 입사해 처음에는 데이터 분석과 서버·웹을 맡았습니다. 900개소에 적용된 정전 감지 수집 서버와 27개 테이블을 다루는 SNMP 검침 서버처럼, 부트캠프에서 다루던 것과 같은 전력 데이터를 이번에는 받아서 저장하는 쪽이었습니다.

그런데 이 회사는 그 데이터를 만들어내는 장비까지 직접 만드는 곳이었습니다. 서버에서 값이 이상하면 원인이 대개 반대편 장비에 있었고, 그 장비를 열어보다 보니 자연스럽게 펌웨어 쪽으로 넘어왔습니다. 화면으로 보던 전력을 이제는 직접 재고 있는 셈입니다.

임베디드는 제가 가장 원하던 것 — 귀찮은 걸 대신 해주는 것 — 에 가장 근접한 스택이었습니다.

지금

이런 것들을 만들고 있습니다

지금 메인으로 맡고 있는 것은 전기이륜차 배터리 스왑 스테이션의 파워유닛 펌웨어입니다. 슬롯 2개 중 한 번에 하나만 충전되는 구조라 CAN으로 BMS와 핸드셰이크하며 두 배터리의 SOC 차이를 ±10% 안에서 관리합니다. 실기가 한 대뿐이라 개발이 자주 막혔기에, 하드웨어 없이도 검증할 수 있도록 빌드 프로필 3종과 BLE 가상 충전 시뮬레이터를 먼저 만들었습니다.

그 전에는 한전 AMI 검수 서버를 맡아, 인수받은 코드가 소스 없는 암호화 바이너리에 의존하고 있었기에 구매규격서만 보고 프레임·CRC16·ARIA-128·SNMP를 다시 구현했습니다. 외부 의존 패키지 없이 표준 라이브러리만으로 13,029줄에 테스트 922개입니다.

그 망을 들여다보려면 채널마다 Wireshark 창을 따로 띄워야 했는데, 그게 불편해서 개인 프로젝트로 MeshHawk을 만들었습니다. 동글 7대를 한 창에서 동시에 받아 MAC부터 DLMS까지 5개 계층으로 벗겨내고, 실캡처 106프레임을 전부 복호화합니다. 결국 이것도 귀찮은 일을 없애려고 만든 도구였습니다.

데이터 분석에서 시작해 웹과 서버를 거쳐 펌웨어까지, 돌아보면 계속 스택 아래쪽으로 내려왔습니다. 문제가 있는 층위까지 직접 내려가서 푸는 것이 결국 가장 확실한 자동화라고 생각합니다.

  1. 데이터 분석

    2023

    전력 수요 예측 LSTM · 상관분석

  2. 웹 · 백엔드

    2023

    Django 대시보드 · 견적 플랫폼

  3. 서버 · 프로토콜

    2024–2026

    SNMP 검침 서버 · AMI 검수 서버

  4. 펌웨어

    2025–2026

    BSS 파워유닛 · FOTA 부트로더

  5. 비트 · 전파

    2026

    802.15.4 프레이밍 · AES-CCM* 복호화

작업

지금까지의 14가지 문제

전력 IoT 펌웨어와 서버가 중심이고, 개인 프로젝트와 학습 프로젝트가 그 주변을 채웁니다.

기술

다루는 것들

문제가 있는 층위로 내려가려면, 그 층위의 언어를 알아야 합니다.

Embedded

  • C
  • ARM Cortex-M (M23/M4)
  • Nuvoton M2354 / TrustZone
  • STM32MP151
  • Yocto / BitBake
  • CAN
  • BLE
  • FOTA / Bootloader

Backend

  • Python3
  • Java
  • Django
  • SNMP4J
  • MQTT
  • Node.js

Data / ML

  • pandas
  • scikit-learn
  • TensorFlow/Keras
  • PyTorch
  • Plotly

Infra & Tools

  • Linux
  • ShellScript
  • Git
  • systemd
  • pm2

Database

  • Oracle
  • MySQL
  • SQLite3

여정

비전공자에서 여기까지

교육 과정을 거쳐 전력 IoT 현장으로, 데이터에서 펌웨어로 옮겨온 경로입니다.

가이아스

임베디드 / 서버 개발자2023.09 ~ 현재

전력 IoT 디바이스 펌웨어와 원격검침 서버를 개발합니다. 원격검침 DCU 리셋 장치, SNMP 검침 서버, 정전 감지 데이터 수집 서버를 거쳐 현재는 배터리 스왑 스테이션(BSS) 파워유닛 펌웨어를 메인으로 개발하고 있습니다.

빅데이터·AI 풀스택 교육 과정

교육생2023.01 ~ 2023.07

6개월간 통계 이론과 ML/DL 실무 프로젝트(예측 모델, 이미지 인식 등)를 학습하고, Django 기반 웹 서비스 제작과 Git/Trello/Slack 협업을 경험했습니다.

연락

함께 만들 것이 있다면

언제든 편하게 연락 주세요.

메일 보내기