행복한 하루

[e4ds make project] Quest2 - PicoW Fire Detector(화재 감지기) 개발 환경 구성 (툴 설치 및 클라우드 환경 설정) 본문

RaspberryPi/Project

[e4ds make project] Quest2 - PicoW Fire Detector(화재 감지기) 개발 환경 구성 (툴 설치 및 클라우드 환경 설정)

변화의 물결 2022. 8. 25. 18:29

 

안녕하세요.

  Quest2는  Pico W를 사용해보기 미리 프로그램에 맛을 보라고 간단한 MicroPython 설치와 Cloud 서비스 계정을 만들어 보라는 것입니다. 이것을 위해서 웨비나 세미나가 진행되었습니다. 그런데 Cloud 쪽은 시간이 부족해서 다음에 다시 진행한다고 합니다. 

 그리고 이번 프로젝트에서는  MQTT 통신을 이용해보려고 무료 사이트 접속하는 것을 확인해보았습니다.


1. PicoW에 MicroPython 설치

  - https://micropython.org/download/rp2-pico-w/ 에 microPython uf2파일을 PicoW에 다운로드해줍니다.

 - 이전 Pico 내용과 유사합니다.

 

  - MicroPython이 설치되면 장치 관리자에 시리얼 포트로 장치가 나타납니다.

 

  - 시리얼 통신 프로그램으로 접속해 보면 MicroPython을 실행시킬 수 있는 명령어 창이 나옵니다. (115200bps)

 

 - help(machine) 해서 머신 모듈이 무엇이 있는지 확인 가능합니다.

 - 간단하게 python으로 LED on/off 제어 한 줄씩 입력해봅니다.

2. thonny.org에서 Thonny 설치

  - thonny.org에서 Thonny를  OS 버전에 맞게 다운로드한 후 설치를 진행합니다.

 

  - 기본 설치 경로 확인 후 설치 진행

 

  - 기본 Tool 환경을 설정합니다.

 

  - PicoW USB로 연결한 상태에서 Thonny의 하단에 Pyhon3.x 되어 있는 부분을 MicroPython으로 바꿔줍니다.

3. 프로그램 소스 테스트

  - 부착되어 있는 LED는 깜박이는 코드 작성합니다.

  - 실행 버튼을 누르면 0.2 간격으로 깜박이는 확인 할 수 있습니다.

4. PicoW 네트워크 연결

  - WiFi 공유기와 접속 테스트를 하려면 샘플로 제공되는 되는 소스를 입력해서 테스트해봅니다. Secret.py 파일 만드라고 하는데 테스트하는 것이니 하나에 파일에 다 넣어서 테스트했습니다.

  - 소스를 실행시키면, Mac 주소와 할당받은 IP 주소를 출력해줍니다.

 

import rp2
import network
import ubinascii
import machine
import urequests as requests
import time
#from secrets import secrets
import socket


# Set country to avoid possible errors
rp2.country('KR')

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# If you need to disable powersaving mode
# wlan.config(pm = 0xa11140)


secrets = {
    'ssid': 'your ssid',
    'pw': 'your pw',
    }

# See the MAC address in the wireless chip OTP
mac = ubinascii.hexlify(network.WLAN().config('mac'),':').decode()
print('mac = ' + mac)

# Other things to query
# print(wlan.config('channel'))
# print(wlan.config('essid'))
# print(wlan.config('txpower'))

# Load login data from different file for safety reasons
ssid = secrets['ssid']
pw = secrets['pw']

wlan.connect(ssid, pw)

# Wait for connection with 10 second timeout
timeout = 10
while timeout > 0:
    if wlan.status() < 0 or wlan.status() >= 3:
        break
    timeout -= 1
    print('Waiting for connection...')
    time.sleep(1)

# Define blinking function for onboard LED to indicate error codes    
def blink_onboard_led(num_blinks):
    led = machine.Pin('LED', machine.Pin.OUT)
    for i in range(num_blinks):
        led.on()
        time.sleep(.2)
        led.off()
        time.sleep(.2)
    
# Handle connection error
# Error meanings
# 0  Link Down
# 1  Link Join
# 2  Link NoIp
# 3  Link Up
# -1 Link Fail
# -2 Link NoNet
# -3 Link BadAuth

wlan_status = wlan.status()
blink_onboard_led(wlan_status)

if wlan_status != 3:
    raise RuntimeError('Wi-Fi connection failed')
else:
    print('Connected')
    status = wlan.ifconfig()
    print('ip = ' + status[0])

  

5. IoT 클라우드 서비스에 대한 무료 계정 생성(MQTT 이용)

 - 이번 프로젝트에는 MQTT 통신을 이용해서 자료를 전송하고, 받는 것으로 계획하였습니다.

 - 무료로 HIVEMQ 사이트를 이용할 계획입니다.

 

 (1) https://www.hivemq.com/ 사이트로 이동

  -  Sign up now로 해서 간단하게 가입을 합니다.

  

  - 메일로 온 링크를 클릭해서 간단한 프로필 입력과 AWS, Azure 선택만 하면 Cloud 생성이 끝이 납니다.

 

(2) Cloud 정보 설정

 - 상단 메뉴에서 Cloud -> HiveMQ Cloud를 선택합니다. -> Sign up now 누르면 아래와 접속할 수 있는 정보들이 나옵니다. (github 로그인 등 연동이 되어 있다면, 아니면 아이디 입력해야 할 수 있습니다.)

 

- “MANAGE CLUSTER” -> “GETTING STARTED”

- IoT Devices 위한 자격을 부여하기 위한 계정 정보를 생성합니다.

 

- 그러면 테스트해볼 웹 툴과 프로그램으로 연동할 수 있는 소스 자료들일 확인할 수 있습니다.

 

 - HiveMQ MQTT Browser Client 선택하면 Broker 서버 주소를 입력할 있으며, Publish, Subscription 있도록 되어 있습니다.

 

  - 다음 Quest3에서 MQTT에 통신 이용해서 PicoW와 데이터 통신하는 로직을 작성 예정입니다.

 

 감사합니다.

 

 

<참고 사이트>

1. PiCockpit

https://picockpit.com/raspberry-pi/

https://picockpit.com/raspberry-pi/everything-about-the-raspberry-pi-pico-w/ #Raspberry_Pi_Pico_Variants

2. raspberrypi

https://www.raspberrypi.com/documentation/microcontrollers/?version=E0C9125B0D9B

3. Raspberry Pi Pico and Pico W

https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html#raspberry-pi-pico-w-2

https://www.raspberrypi.com/documentation/microcontrollers/?version=E0C9125B0D9B

4. Pico W

https://micropython.org/download/rp2-pico-w/

5. 12 MQTT

https://jeongchul.tistory.com/296

Comments