dev.to

I Got Tired of Coming into my Lab to Check the Pressure of my Cryocooler so I Built a Tool to do it for Me

극저온 냉각기 압력을 원격으로 확인하는 Raspberry Pi 도구를 만들었습니다

천체물리학 연구실에서 Raspberry Pi와 ADS1115로 극저온 냉각기의 압력·온도를 읽고, OLED 화면과 웹 대시보드로 확인하는 도구를 만들었습니다. TimescaleDB 기반으로 시계열 데이터를 저장하고 조회하며, GitHub Copilot으로 UI와 소프트웨어 구현을 빠르게 진행했습니다.

에디터 노트

이 프로젝트의 실질적인 변화는 센서값을 원격으로 보는 기능과 데이터 처리 방식을 함께 마련한 데 있습니다. 원시 전압을 보존하고 변환 수식을 나중에 적용해 과거 기록을 다시 해석할 수 있으며, 시간 구간별 집계와 보존 정책도 구체적으로 제시했습니다. 반면 네트워크 단절 시 메모리 버퍼를 어떤 방식으로 비우는지, 수식 입력을 어떻게 검증하는지는 자료에 설명이 없습니다. 댓글은 장치 이름과 집에서의 자동화 응용 가능성에 호응하지만 구현 세부를 검증하거나 논쟁하지는 않습니다.

AI 요약

연구실에서는 압력 센서의 0~10V 출력을 멀티미터로 읽어 매뉴얼의 표에 따라 Torr로 환산했습니다. 실시간 기록이 없어 금요일에 펌프를 돌린 뒤 월요일에 다시 와서 압력을 확인해야 했습니다. 연구자는 대학원생과 2채널 ADC 보드를 제작하고 여분의 Raspberry Pi를 연결해 전압을 읽었습니다. 이후 측정값을 화면에 표시하고 원격으로 확인하는 기능을 덧붙였습니다.

장치와 소프트웨어

Raspberry Pi 4B와 ADS1115 ADC, Adafruit 128x64 OLED bonnet을 사용합니다. ADC는 단일 종단 방식의 A0/A1 두 채널을 읽습니다. OLED에는 채널별 실시간 값이 표시되고, 사용자는 선택한 수식으로 전압을 단위값으로 변환합니다. 수식은 텍스트 파일로 관리하며 단위와 표현식을 지정합니다. 제곱근, 로그, 삼각함수 등 지원 함수와 pi, e 상수를 사용할 수 있고, 잘못된 수식 파일은 건너뜁니다.

화면 메뉴에서는 채널별 수식, 측정 기록 간격, ADC 범위, 화면 갱신 주기와 USB 로깅을 설정합니다. 설정은 settings.json에 보존합니다. USB 메모리를 연결하면 그 안의 유효한 수식 파일을 Raspberry Pi로 복사하고, USB 로깅을 켠 경우 측정값을 시간 정보가 포함된 CSV 파일에 기록합니다.

시계열 데이터와 대시보드

Raspberry Pi는 압력과 온도에 해당하는 전압을 TigerData Cloud의 TimescaleDB로 전송합니다. 네트워크가 끊기면 데이터를 메모리에 버퍼링합니다. 측정 원본 전압을 저장하고 변환 수식은 조회 단계에서 적용하므로, 수식을 고쳐도 과거 원본값은 바뀌지 않습니다.

time_bucket()으로 1분부터 24시간 범위의 그래프를 약 300개 지점으로 요약합니다. 6시간 이상 구간에는 1분 단위 continuous aggregate를 사용하며, 작성자 설명에 따르면 원시 데이터와의 차이는 0.012V 이내입니다. 실시간 게이지는 last()로 각 채널의 최신값을 조회합니다. 데이터는 하루 뒤 압축하고 90일 뒤 삭제하도록 설정했습니다. 대시보드는 Flask, FastAPI, Tailwind CSS, Chart.js를 사용하며 Vercel에 호스팅합니다. 읽기 전용 데이터베이스 역할로 연결하고, 실제 측정값을 노출하지 않는 시뮬레이션 데모도 제공합니다.

Copilot 활용과 공개

작성자는 Raspberry Pi의 ADC 테스트 코드에서 출발해 GitHub Copilot으로 OLED UI와 설정 메뉴를 구현했습니다. 이후 Copilot에 웹 인터페이스 제작을 맡겼다고 설명합니다. 프로젝트 코드 저장소는 GitHub에 공개했고 PCB는 요청하면 제공한다고 밝혔습니다. 도구를 설치한 다음 날 연구책임자가 진공 펌프를 끄고 압력 변화를 확인해 달라고 요청했을 때, 연구자는 웹사이트를 공유해 연구책임자가 직접 상태를 볼 수 있도록 했습니다.

dev.to 반응

  • @thisisryanswift — Mountain Dewer라는 이름에 좋아요를 보냅니다. 이름을 지은 사람에게 찬사를 보냅니다. 정말 훌륭합니다.
  • @erinosher — Mountain Dewer라는 이름이 정말 좋습니다. 이것도 정말 멋집니다. 집에서 해결하려고 생각해 둔 까다로운 자동화 작업을 위해 예전 Raspberry Pi를 꺼내고 싶어집니다.
  • @theycallmeswift — 정말 멋집니다. 공유해 주셔서 감사합니다!
  • @francistrdev — 멋집니다.

원문: dev.to / 번역·요약: Trawling