[개인프로젝트] 핸즈실에사람있나요오오

role : @dreamwillbet - micropython @hge2020 - front

핸즈실에 사람이 있는지는 학기초 단골 단톡방 소재이곤 했습니다.
한번 만들어야지 하고 있었는데 esp32모듈이 눈에 보인김에 간단하게 작업해 보기로 하였습니다.

2022/07/19~07/31

보드 : esp32 + micropython
백 : 파이어베이스(파이어스토어,펑션,호스팅)
프론트 : flutter

esp32에서 조도값을 센싱해와 실시간 확인이 가능한 간단하게 웹앱형태로 만들었습니다.

전체소스 : GitHub - coldreason/saramitnayo

webapp : https://handssilesaramitnayo.web.app

  1. 보드 구성

esp32보드는 wifi와 블루투스를 내장한 보드로 아두이노로도 코딩이 가능한게 특징입니다.

image

ADC 관련하여 저런 특이사항이 있었고 이를 숙지하고 보드를 구성합니다.

(조도센서 : 메카솔루션 조도센서)

  1. 임베디드 코딩?

micropython을 위해서는 펌웨어를 새로 올려주어야 합니다.

과거의 유산들
https://www.notion.so/Capstone-1867685672d744e195c9b0d6f4b67561
https://www.notion.so/Esp32-tutorial-54638531d7a344f68fd454ff3d0399ef
을 참고하여 펌웨어를 올리고 보드 및 센서 불량 여부를 확인합니다.

  • 부족한 메모리로 인해 ENOMEM 에러를 자주 겪습니다. gc.collect로 메모리 확보에 신경을 써주어야합니다.
  • esp 시리즈가 여러종류 8266등등 이고 사용자가 아두이노에 비해 밀리다보니 해결안된 에러가 좀 있었습니다. http request의 경우 문제가 없었지만 https의 경우 문제(펌웨어관련 에러)가 발생했고 건드릴 실력은 없었기에 공식 urequests라이브러리를 참고해서 적당히 수정해서 써야 했습니다.

소스 : GitHub - coldreason/saramitnayo at board


환경 측정이 한번에 될거라고 생각 안했기에 원격으로 기준들을 수정가능한 구조로 제작하였으나 큰 이득은 없었습니다.

앞쪽라이트는 디버깅을 위해 주위 불이 켜져있으면 on 꺼져있으면 off됩니다

  1. 파이어베이스

파이어베이스의 활용은 크게 세단계로 나누어집니다.

데이터를 저장하기위한 firestore(db역할)
http 엔드포인트를 제공해주기위한 function(node js기반)
웹 앱을 호스팅해줄 hosting

function은 4개부로 구성되어있고
테스트를 위한 helloworld
세팅값을 받아오기위한 initialize
기기가 force update가 on 되어있는지를 확인하기 위한 check
기기의 현재 상태를 받기위한 update로 구성됩니다.

소스 : GitHub - coldreason/saramitnayo

좋아요 1
  1. flutter
    플러터는 앱/웹/데스크탑 크로스플랫폼 툴입니다.
    최근 업데이트가 되며 파이어베이스와의 연동이 더욱 간편해졌습니다.

firebase_cli와 getx_cli를 통해 빠르게 구조를 잡아주었습니다

코드 : GitHub - coldreason/saramitnayo at flutter

핸즈실 불 on // off

오 좋다.
혹시 시간되면 불켜졌나 말고 문 열렸나 확인하게 센서 지자기 센서로 바꿔서 잠금장치쪽에 설치해서 자기장 측정해보는것도 좋을것 같아.
핸즈실에 9축 IMU도 남는거 아마 있을거야.

좋아요 1