시계제작! 에 뜻을 두기로 하고, 시계제작을 시작했습니다.
어떤 플랫폼으로 만들겠다는 정의는 하진 않고 그냥 시작~~
첫번째는 집에서 굴러다니는 라즈베리파이피코를 이용한 시계입니다. 와이파이 연결을 지원하는 녀석이니,
버스 알람도 같이 넣어 봤습니다.
소스 첨부!
lcd_api.py
pico_i2c_lcd.py
는 인터넷에 공개되어 있는 소스입니다. 흔히 쓰는 i2c lcd 를 다룰수 있는 라이브러리로 보시면 됩니다.
핵심은 main.py!
main.py로 만들어서 피코에 넣어두면 기동시 자동으로 실행되는 점도 있습니다.
작업 순서는 이렇습니다.
1. 라즈베리파이피코 에서 마이크로파이썬을 이용할 수 있도록 셋팅한다.
https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
2. 개발툴 Thonny 설치
3. 위 소스들을 넣고 실행! 입니다.
!!핵심소스 설명
def connectWifi():
wlan.active(True)
if not wlan.isconnected():
wlan.connect(ssid, password)
counter = 0
while not wlan.isconnected() and wlan.status() >= 0 :
counter = counter + 1
picodebug.logPrint(f"Wating to connect to Wifi: {counter}")
sleep(1)
if( counter > 10 ):
picodebug.logPrint("Connection Failed..")
return
ip = wlan.ifconfig()[0]
picodebug.logPrint(f"Connection Success IP:{ip}")
와이파이 연결할때, 끝도 없이 연결시도를 하는건 아니고 10번 이상이면 적당히 끊습니다.
picodebug는 로그기록용 모듈입니다. ( 소스참고 ) 실제 운영할때는 로그를 파일로 남기기 위해 옵션값을 통해 콘솔출력 <-> 파일출력 바꿀수 있도록 되어 있습니다.
def getTime():
try:
res=urequests.get(url=timeURL) #JSON형태로 시간리턴!
jsonObject = json.loads(res.text)
res.close()
year = jsonObject['year']
month = jsonObject['month']
day = jsonObject['day']
hours = jsonObject['hour']
minutes = jsonObject['minute']
seconds = jsonObject['seconds']
#시간설정!
rtc.datetime((year, month, day, 0, hours,minutes, seconds, 0))
except OSError as e:
picodebug.logPrint("OSError code in getTime()..." + e.errno)
except NameError as e:
picodebug.logPrint("Error..."+e)
picodebug.logPrint("Error code..."+e.errno)
시간을 가져오는 소스입니다~ 기동시 한번만 가져오고, rtc 모듈로 셋팅하고 시간 표시는 이걸 이용해서 표기합니다.
웹호출시 urequets, json 파싱에 json 을 이용합니다. 우리가 쓰는게 micropython 이니, python 모듈이 그대로 되는것도 있지만, 안되는것 도 있다는거~!
참고: rtc == Real Time Clock
잘됩니다~! 훗
전원은 베터리를 쓰고 싶었지만, 전원 직접연결로 하였네요~!