Pico W 기초부터 클라우드 연동까지!
콘테스트 프로젝트완료

Poco-W를 사용한 공기질 측정.

Pico W 기초부터 클라우드 연동까지!
I
2022.08.02에 시작
6
좋아요
2.3K
조회
2
댓글
Poco-W를 사용한 공기질 측정.

사용 기술

Home AutomationRaspberry PiSensors
Pico W 기초부터 클라우드 연동까지!완료
콘테스트 프로젝트 진행 상황

각 Quest를 단계적으로 완성하는 프로젝트입니다.

Quest 1
Quest 2
Quest 3
Quest 4
4 / 4 완료
Quest 1: PICO-W를 사용한 에어컨 On/Off Control
2022.08.08
완료

□ 아이디어 소개 및 개요 (개발 계획 및 과정 포함)

여름이 다 끝나가는 무렵에 에어컨을 언제 켜야 될지 또 언제 꺼야 될지 잘 알지 못합니다.

밖의 공기가 충분히 내려가고 습도가 낮으면 에어컨을 끄고 창문을 열면 되는데…

온도와 습도를 알면 불쾌 지수를 알 수 있습니다. 

사람이 느끼는 더위는 온도 뿐만 아니라 습도에도 매우 민감하기 때문에 하기와 같은 Idea를 구현하고자 합니다.

 

1. 실내 온도 / 습도 측정  ==> 불쾌지수의 계산

2. 실외의 온도 / 습도 측정  ==> 실외의 불쾌 지수의 계산.

   ==> Wifi Module을 이용하여 WEB상의 내가 살고 있는 동네의 온도와 습도 Data를 가져온다.

3. MQTT Broker와 dashboard를 이용하여 전체 상황 모니터링( 온도/습도/불쾌지수) 및 원격지 제어

   ==> 원격지에서도 에어컨을 On/Off시킬 수 있도록 정해진 불쾌지수 Level을 설정하고  Phone에 Message전송

  1. 확장 기능으로 창문을 개방할 있다면 에어컨의 Off Signal 연동하여 창문을 Open하는 Signal생성 ( 여기에서는 LED 대체 )

 

□ 전체 구조를 표현하는 블록 다이어그램

□ 하드웨어 구성 다이어그램

 

□ 소프트웨어 구성 다이어그램

Pico-W :  

    Power-On --> WiFi_Connect --> IOT Device Init --> While loop (  Measure Temp / Humidity ) --> 불쾌지수계산 

    --> Update Data to WEB --> Check 외부온도/습도 from WEB -->  Check Messsage --> Msg가 있으면 LED/On/Off Control. 

 

IOT Server 

    Check Updated Data --> if ( Data > THD ) then  send Message to Phone and Pico-W. 

 

이상입니다. 

 

Quest 2: 개발 환경 구성 (툴 설치 및 클라우드 환경 설정)
2022.08.16
완료

PicoW의 개발 환경은 3가지를 모두 설정 후 Test해 본 후 최종 가장 적합한 것으로 사용하려고 한다. 

1.  VSCode : C언어 사용 :  개발에 SDK사용

2.  MicroPython사용  : PicoW Board에 UF2 firmware write 필요. 

                               Tonny IDE환경 설치 

3.  ArduinoIDE :  개발 환경설정이 가장 쉬움.

 

Pico-W를 사용하는데 필요한 MicroPython관련 Package

1. Tonny MicroPython IDE를 설치 : tonny.org에서 windows용 설치.

하기와 같이 설치 화면이 나타나면 Next를 Click한다. 

Tonny를 실행한 후 도구 -> 옵션을 선택한 후 인터프리터에서  MicroPython을 선택한다. 

안타깝게도 Pi Pico-W는 아직 Update가 되지 않은것 같다. 

 

그리고 예제 프로그램을 실행하면  Pico-W에서는 LED Port가 다르기 때문에 LED가 Blink되지 않는다.  

아뭏든 Pico-W를 연결하여 실행이 된다. 

Pico-W에서 LED를 Blink하기 위해서는  GPIO PIn Access가 아니라 하기와 같이 LED로 되어 있다. 

이렇게 하였더니 LED가 Blink된다 

 

 

VSCode 설치 파일 다운로드

 - 공식 홈페이지로 접속

    code.visualstudio.com/

 

Download for Windows를 Click하여 설치 프로그램 다운로드하면 Download의 path를 물어보고 하기와 같이 안내 화면으로 이동한다. 

2. VSCode 설치

 다운로드한 VSCode 설치파일을 실행 하면 윈도우의 보안경고창이 뜨고 설치 화면이 표시된다. 

 

- 라이센스 관련 동의 체크 후 "다음" 클릭한다. 

하기의 추가 작업 설정 후 "다음" 클릭한다.

- 아이콘 추가 : 바탕 화면에 VSCode 아이콘을 만들기

- "code(으)로 열기" : 폴더나 파일을 VSCode로 바로 열 수 있도록 마우스 우클릭 메뉴에 code(으)로 열기를 표시해 줌. 

- VSCode를 기본 편집기로 사용할 경우. 

- PATH에 추가 :  명령 창(CMD, 파워셀 등)에서 code를 입력하면 VSCode가 바로 실행 된다

 

 

 

설치를 Click하면 하기와 같이 설치가 진행된다. 

 

설치가 완료되면 하기의 화면이 나오고, 이제 VSCode를 실행해 보자. 

- Pico-W를 사용하는데 필요한 관련 Package설치 

1.  ARM GCC compiler "https://developer.arm.com/downloads/-..."

2.  CMAKE "https://cmake.org/download/"

3.  Visual Studio Build Tools "https://visualstudio.microsoft.com/do..."

4.  GIT "https://git-scm.com/download/win"

 

- Thingspeak.com에 계정을 만드는 방법

Cloud Service로는 이전에 사용해 보았던 ThingSpeak를 사용하려고 한다. 

무료 사용자는 하루 8,219 개를 Data를 Update할 수 있다고 합니다. 

따라서 24시간 * 60분 * 60초 / 8219 = 10.5초 

1개의 센서라면  10초에 1번 정도로 값을 Server로 보낼 수 있고, 

만약 2개의 Data를 사용한다면 20초에 1번 정도로 값을 보낼 수 있습니다.   

 

1. https://thingspeak.com에서 Get Started For Free Click

2. ThingSpeak Get Started For Free 화면으로 이동하여  account가 없는 사람은  Create one! Click하고, 이전에 account가 있는 사람은 email address를 넣고 Next Click한다.

3. Creat One Click하였을 경우 Email Address부터 요구하는 정보를 Keyin하고 Continue Click한다. 

 4. 계정 등록이 끝나면, 최종 verify 메일이 옵니다.

6. 계정 인증 후, 비번 완료하면 끝납니다.

   저는 이전에 Test하였던 LoRa Test Data가 보입니다. 

 

 

Quest 3: Pico W - 클라우드 연결 및 데이터 업로드
2022.09.03
완료

ThingSpeak를 이용한 Pico W Data Upload

 

1. IoT 클라우드 서비스에 대한 계정이 활성화된 상태(로그온)을 확인할 수 있는 캡쳐본을 제출하세요.

- 이전에 사용하던 센서가 동작을 하지 않아 마침 Quest_AI에서 받은 Board를 보니 원하는 센서가 있어 Uart로 Pico-W와 연결하였습니다. 

  Pico-W  <-UART-> Sensor Board : 온도, 습도, 기압, 모션, 지자기, TOF (거리) 등등 

              <-I2C->  SSD1306 : OLED Display 

              <-I2C->  BMP280 :  온도,  기압,  높이 측정 가능

 

OLED에 온도 / 습도 / 기압 / 높이를 Display해 보았습니다. 

 

Sersor Board에서 UART Data의 전송 :  온도 / 습도 / 기압  Data를  Pico-W에 전송

 

 

우선 온도/습도/기압/높이 4가지의 측정 Data만  ThingSpeak에 전달해 보았습니다. 

온도/습도 ==> B-L475E-IOT01A 

기압/높이 ==> BMP280

2. IoT 클라우드와 연결된 Pico W 사물의 이름 설정 등 IoT 연결 과정을 설명해 주세요.

ThingSpeak를 연결하는 과정에서 mqtt를 사용하였는데  WiFi는 연결및 Server에 연결을 성공하였습니다. 

우선 ThingSpeak에 Data를 Upload시키기 위해서는 하기와 같이 계정에 Channels을 추가하여야 합니다. 

 다음은 추가된 Channel에 Upload할 Data를 추가합니다.

- 온도/습도/기압/높이 4가지의 측정 Data를 추가하였습니다.  

중요한 것은 하기의 Channel ID와 WRITE API KEY는 Copy하여 Data Update시에 사용합니다.

3. IoT 클라우드에 업로드된 데이터 상태가 확인되는 대시보드 화면을 캡쳐하여 제출하세요.

 

참고 자료

1.  <https://www.instructables.com/IoT-Made-Ease-ESP-MicroPython-MQTT-ThingSpeak/>

2.  <https://towardsdatascience.com/iot-made-easy-esp-micropython-mqtt-thingspeak-ce05eea27814>

3.  https://techtotinker.blogspot.com/2020/12/021-esp32-micropython-mqtt.html?m=1

4. ESP32 MicroPython: MQTT | Part 1: MQTT Publish : https://www.youtube.com/watch?v=ugEnE7XSR5I

5. MQTT Basics for ThingSpeak : https://kr.mathworks.com/help/thingspeak/mqtt-basics.html

 

이상입니다. 

 

Quest 4: Quest4 최종 결과물 완성
2022.09.27
완료

Quest4 최종 결과물 Report

 

목차 

□ 1. 아이디어 소개 및 구현 

□ 2. Project Idea 개념

□ 3. HW Circuit 

□ 4. Thingspeak 환경설정 및 개발툴 셋업

□ 5. Message전송 방법

□ 6. Source Code

□ 7. 데모 Capture / 동영상

□ 8. PROJECT후기 ( 선택한 개발툴과 프로그래밍 언어의 장·단점 및 특징 등 ) 

□ 9. 참조 사이트

 

□ 1. 아이디어 소개 및 구현

1. 사람이 느끼는 더위는 온도 뿐만 아니라 습도에도 매우 민감하기 때문에 하기와 같은 Idea를 구현하고자 합니다.

    - 실내 온도 / 습도 측정 하고  측정된 온습도 Data를 이용하여 불쾌지수의 계산하여  Cloud로 전송합니다. 

    - 실외 온도 / 습도 측정 하고  실외의 불쾌 지수의 계산하여 Cloud로 전송합니다. 

 

2. MQTT Broker와 dashboard를 이용하여 전체 상황 모니터링( 온도/습도/불쾌지수) 및 Message전달. 

  -  계산된 실내 불쾌 지수가 75이상일 경우 에어컨을 작동시키는 것을 트위터로 권고합니다.

 

3. SW와 센서를 추가하여 SW로 외출 Mode를 설정할 수 있도록 하였고,  외출 Mode에서 사람의 움직임을 Monitoring하여 

  Cloud에 전송하고,  전송된 Data를 바탕으로 외출한 사이 외부에서 침입이 있는지를 Message로 전송할 수 있는 방범 Mode를 추가하였습니다. 

출처 : https://m.blog.naver.com/iotsensor/221153546510

 

□ 2. Project Idea 개념

 

□ 3. HW Circuit / SW  Block Diagram

- SENSOR Board를 UART로 연결하여 외부의 온도/습도 및 Sensor정보를 받음.  

- SENSOR Board의 전원은 외부 USB전원을 사용함. 

1) Bread board기판 

2) 실제 구현한 Bread Board기판. 

□ 4. Thingspeak 환경설정 및 개발툴 셋업

 

- Thingspeak의 사용 방법 

Cloud Service로는 이전에 사용해 보았던 ThingSpeak를 사용하려고 한다. 

무료 사용자는 하루 8,219 개를 Data를 Update할 수 있다고 합니다. 

따라서 24시간 * 60분 * 60초 / 8219 = 10.5초 

1개의 센서라면  10초에 1번 정도로 값을 Server로 보낼 수 있고, 

만약 2개의 Data를 사용한다면 20초에 1번 정도로 값을 보낼 수 있습니다. 

 

1. https://thingspeak.com에서 Get Started For Free를 Click함. 

2. ThingSpeak Get Started For Free 화면으로 이동하여  account가 없는 사람은  Create one!을 Click하고, 이전에 account가 있는 사람은 email address를 넣고 Next를 Click한다.

3. Creat One을 Click하였을 경우 Email Address부터 요구하는 정보를 Keyin하고 Continue를 Click한다. 

 4. 계정 등록이 끝나면, 최종 verify 메일이 옵니다.

6. 계정 인증 후, 비번 완료하면 끝납니다.

 

7.  Channel Settings에서 PicoW에서 보낼 Data를 추가한다. 

Channel 설정이 끝나고 PicoW를 통하여 Measure된 Data를 MQTT를 통해 전송하면 하기와 같이 Display된다.

실내 불쾌 지수와 실외 불쾌지수는 Add Widget을 하여 설정하였다.  

SW를 누르면 방범 Mode On / Off가 Toggle한다. 

방범 Mode가 On되어 있을 경우 PIR센서를 통하여 움직임이 감지되면  PIR_Counter를 Increase시키고, 

방범Mode가 Off되면 PIR_Counter를 '0'로 초기화 시키고 움직임이 감지되어도 PIR_Counter는 '0'로 유지한다. 

 

□ 5. Message전송 방법 및 결과. 

Message전송 결과. 

 

설정 방법 

- App / React를 선정하고 하기와 같이 설정을 진행한다. 

- 외출모드에서  PIR센서의 움직임이  2회 이상 Detection되었을 경우 Tweeter를 통해 경고 Message를 전송한다.

 

- 실내 불쾌지수가 75이상일 경우 Tweeter를 통해  불쾌지수가 높기 때문에 에어컨을 On을 추천한다.. 

Message전송 관련 설정 결과. 

 

□ 6. Source Code

Library설정 

 

# Thingspeak연결 

import network

from umqtt.robust import MQTTClient

import time

import sys

# Configuration parameters

#=======================================================

WIFI_SSID = 'User SSID'

WIFI_PASSWORD = 'User Passward'

THINGSPEAK_MQTT_CLIENT_ID = "User Client ID"

THINGSPEAK_MQTT_USERNAME = "User Name"

THINGSPEAK_MQTT_PASSWORD = "User Password"

THINGSPEAK_CHANNEL_ID = 'User Channel ID'

#=======================================================

# turn off the WiFi Access Point

ap_if = network.WLAN(network.AP_IF)

ap_if.active(False)

# connect the device to the WiFi network

wifi = network.WLAN(network.STA_IF)

wifi.active(True)

wifi.connect(WIFI_SSID, WIFI_PASSWORD)

# wait until the device is connected to the WiFi network

MAX_ATTEMPTS = 5

attempt_count = 0

while not wifi.isconnected() and attempt_count < MAX_ATTEMPTS:

    attempt_count += 1

    time.sleep(1)

if attempt_count == MAX_ATTEMPTS:

    print('could not connect to the WiFi network')

    sys.exit()

 

# To use a secure connection (encrypted) with TLS: 

#   set MQTTClient initializer parameter to "ssl=True"

#   Caveat: a secure connection uses more heap space

THINGSPEAK_MQTT_USERNAME = THINGSPEAK_MQTT_CLIENT_ID

client = MQTTClient(server=b"mqtt3.thingspeak.com",

                    client_id=THINGSPEAK_MQTT_CLIENT_ID, 

                    user=THINGSPEAK_MQTT_USERNAME, 

                    password=THINGSPEAK_MQTT_PASSWORD, 

                    ssl=False)

                    

try:            

    client.connect()

except Exception as e:

    print('could not connect to MQTT server {}{}'.format(type(e).__name__, e))

    sys.exit()

 

#온습도 센서의 I2C연결 

from machine import Pin

from machine import I2C

import ahtx0

# I2C for the AHT20 : Pin15와 Pin14에 연결되어 있고 통신속도는 400KHz로 설정함. 

i2c = I2C(1, scl=Pin(15), sda=Pin(14), freq=400000)

 

# 실내 온도 습도를 읽는 Routine

def ahtx20measure():

    # Create the sensor object using I2C

    sensor = ahtx0.AHT10(i2c)

    return sensor.temperature, sensor.relative_humidity

 

#Display 설정 :  SSD1306 

# import library and create object oled

from ssd1306 import SSD1306_I2C

oled_i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=400000) 

oled = SSD1306_I2C(128, 64, oled_i2c, addr=0x3C)

# Clear display :

def displayClear():

    oled.fill(0)

    oled.show()

# create a function do display all data:

def displayData(intemp, inhumi, inrate, outtemp, outhumi, outrate, mode, pir ):

    oled.fill(0)

    oled.text("InT : " + str(intemp) + "oC", 0, 4)

    oled.text("InH : " + str(inhumi) + "%",0, 16)

    oled.text("DCI : " + str(inrate) + " ", 0, 29)    #DCI : Discomfort Index

    if mode == 1:

        oled.text("OutMode : " + str(outtemp) + " ", 0, 43)

    else :

        oled.text("InMode : " + str(outtemp) + " ", 0, 43)

                

    oled.text("Pir  : " + str(pir), 0, 57)

    oled.show()

 

#UART 설정 :  L475IOT Board를 UART로 연결

from machine import UART    

    

uart0 = UART(0, baudrate=115200, tx=Pin(12), rx=Pin(13))

def measure_data():

    

    time.sleep(0.5)

    

    if uart0.any() > 0:

        str = uart0.readline()

        str = str.decode()

        str = str.rstrip()

        str = str.split(" ")

        

    return str[1], str[2]

 

#방범 Mode시 외부 침입을 Detect하기 위하여 PIR 센서의 입력을 External Interrupt로 연결하여 

# 방범 Mode에서 외부 침입이 감지되면  PIR_Coutnr를 증가 시킨다. 

 

from time import sleep

PIR = Pin(11, Pin.IN, Pin.PULL_DOWN)

PIR_count = 0

def pir_rising(k):

    global PIR_count

    sleep(0.01)

    if  k.value(): # PIR Deteted, 1, HIGH

        if OUT_status == 1:                    #방범 Mode일 경우 

            PIR_count = PIR_count +1

            print('Mode = Out :',PIR_count)

        else :

            PIR_count = 0

            print('Mode = In :',PIR_count)

 

#Mode SW를 통해 방범 Mode의 설정. 

OUT = Pin(18, Pin.IN, Pin.PULL_DOWN)

OUT_status = 0

def out_rising(j):

    global OUT_status

    sleep(0.01)

    if  j.value():

        if OUT_status == 1:

            OUT_status = 0

       else : 

           OUT_status = 1

                       

#        print(OUT_status)

OUT.irq(out_rising, Pin.IRQ_RISING)

 

# Continually publish two fields to a Thingspeak channel using MQTT

PUBLISH_PERIOD_IN_SEC = 20        #Update주기 설정 : 20초 

while True:

    try:

        credentials = bytes("channels/{:s}/publish".format(THINGSPEAK_CHANNEL_ID), 'utf-8')  

        Intemp, Inhumi, Outtemp, Outhumi = collectData()

        Inrate = 9/5*Intempf -0.55*(1-Inhumif/100) * (9/5*Intempf-26)+32

 

        Outrate = 9/5*Outtempf -0.55*(1-Outhumif/100) * (9/5*Outtempf-26)+32

        print(Intemp,Inhumi,Inrate,Outtemp,Outhumi,Outrate,OUT_status,PIR_count)

        displayData(Intemp,Inhumi,Inrate,Outtemp,Outhumi,Outrate,OUT_status,PIR_count)

        payload = "field1="+str(Intemp)+"&field2="+str(Inhumi)+"&field3="+str(Inrate)+"&field4="+str(Outtemp)+"&field5="+str(Outhumi)+"&field6="+str(Outrate)+"&field7="+str(PIR_count)       

        client.publish(credentials, payload)

        time.sleep(PUBLISH_PERIOD_IN_SEC)

 

 

□ 7. 데모 Capture / 동영상 Link

동영상 Link :   https://youtu.be/hTe8YEaBCP4

 

1) Demo시 Thingspeak screen & IDE


□ 8. PROJECT후기 ( 선택한 개발툴과 프로그래밍 언어의 장·단점 및 특징 등 ) 

단순 결과물 제출보다는 Pico W의 장·단점, 선택한 개발툴과 프로그래밍 언어의 장·단점 및 특징, 사용하신 클라우드 서비스의 장·단점 및 특징들을 포함하여 제출해 주시기 바랍니다.

Raspberry Pi PicoW 보드의 장점. 

Raspberry Pi Pico 보드는 유연한 디지털 인터페이스를 갖춘 고성능 마이크로컨트롤러 보드로서

다른 Board와 비교하여 가장 큰 장점은 $6의 가격입니다.  

 

출처 : https://dronebotworkshop.com/picow-arduino/

RP2040 칩 기능:

  • 듀얼 ARM Cortex-M0+ @ 133MHz
  • 6개의 독립 뱅크에 264kB 온칩 SRAM
  • 전용 QSPI 버스를 통해 최대 16MB의 오프칩 플래시 메모리 지원
  • DMA 컨트롤러
  • 완전히 연결된 AHB 크로스바
  • 보간기 및 정수 분배기 주변 장치
  • 코어 전압을 생성하는 온칩 프로그래밍 가능 LDO
  • USB 및 코어 클록 생성을 위한 2개의 온칩 PLL
  • 30개의 GPIO 핀(그 중 4개는 아날로그 입력으로 사용할 수 있음)
  • 주변기기
    • 2개의 UART
    • 2개의 SPI 컨트롤러
    • 2 I2C 컨트롤러
    • 16 PWM 채널
    • USB 1.1 컨트롤러 및 PHY(호스트 및 장치 지원 포함)
    • 8 PIO 상태 머신

 

Pico-W의 아쉬운 점 :

1. 현재는 블루투스가 지원되지 않는다는 것입니다.

2. 5GHz WiFI를 지원하지 않는다. 

  

출처 : https://dronebotworkshop.com/picow-arduino/

 

 Micropython : 

 

이번 Quest에서 MicorPython이라는 것을 처음 접해 보았습니다.  Python과 무었이 다를까

아마도 MCU에서 Python program을 수행시키기 위해 몸집을 줄인것으로 이해하였습니다.

Python과 동일하게 Library import하여 사용하는 것도 동일하여 처음 사용해 보는 저로서는 어렵지 않게 예제를 수행시킬 수 있었습니다.

다만 C C++와는 다른 Data format을 이해하고 형을 변경시키는 과정에서 시간이  걸렸습니다.

따라서 micro Python을 이해하고 사용하기 위해서는 Python에 대한 기초 지식이 필요할 것으로 판단됩니다.

하지만 타 언어에 비해서 MicroPython을 사용하는데 시간이 많이 걸리지 않고또한 Arduino에서 사용하였던 Sensor나 부품들을 사용할 수 있기에 교육용으로 사용하기에는 좋을 것같습니다.

 

다만이번 Project를 하면서  Pico-W Hold가 되거나   Boot Mode에서 Firmware Download했음에도 인식이 되지 않는 등  MicroPython Firmware에 안정화 작업이 필요한 것으로 보여집니다따라서 Pico-W를 사용하여  MicroPython으로 상용제품읆 만드는 것은 다양한 문제가 있을 수 있으나 교육용으로 사용하는데는  Open되어 있는 Library를 사용하여 손쉽고  빠르게 주변 기기들을 제어하고 통신할 수 있다는 것 만으로도 충분한 가능성이 있을 것 같습니다.  

저의 경우를 본다면  DHT11 Sensor가 동작이 되지않아서 대치할 만한 Sensor를 찾던 중 STM32L745 IOT Board에 동일한 기능의  Sensor뿐만 아니라 여러가지 Sensor가 있다는 것을 알게 되었습니다.  STM32L745 IOT Board의 센서 Data를  이용하기 위하여 UART를 이용하였고,  MicroPython에서는 하기의 단 몇 Line을 통해서 Sensor Board Pico-W와의  연결 및 Data을 가져올 수 있었습니다

C 언어를 사용하였을 경우 보다 시간 및 Coding Line수가 비교할 수 없을 만큼 간단하여 처음 사용하는 사람도 개념만 있다면 손쉽게 사용할 수 있을 것 같다.

from machine import UART       

uart0 = UART(0, baudrate=115200, tx=Pin(12), rx=Pin(13))

if uart0.any() > 0:

    str = uart0.readline()

 

하지만 단점으로는 Micro Python도 하나의 언어이기 때문에 Python에 대한 기초지식이 없다면 기존에 있는 것을 따라하기는 쉬울지 몰라도 새롭게 무엇인가를 추가하는데에는 문제가 발생할 수 있습니다또한 문제가 발생하였을 때에  Library에서 발생하는 것이라면 더 더욱 Debugging이 쉽지 않을 것입니다

 

결론적으로 말한다면  Embedded System에서 사용하는 C/C++를 사용하는 것보다는 빠른 시간안에 결과물을 도출할 수 있어 교육용이나 기본 성능을 확인하는 평가용으로는 좋은 Solution이 될 것 같습니다하지만 상업용으로 MicroPython을 생각하신다면 좀 더 고민을 해 보아야 할 것 같습니다.  

 

클라우드 서비스의 장·단점 및 특징

ThingSpeak는 타 Cloud Service에 비해 가입철차가 간편하고  측정된 Data Upload하는데 쉽다.   그리고 수학적 계산이 필요한 경우 Matlab이라는 강력한 Tool을 사용할 수 있어서 Data 분석에 탁월하다.   또한 간단한 설정만으로 Tweet을 할 수 있어서  결과를 Tweet으로 받아 볼 수 있다.

다만,  Phone으로 Message를 전달하려고 하는 경우 타 Application을 사용해야 되는 만큼  ThingSpeak에서 지원하지 않는 기능이 필요한 경우에는 복잡해 진다.

 

  Azure / AWS 같은 경우 Data하나를 Upload하기 위해서 거쳐야할 절차가 복잡해서 교육용으로 사용하기에는 어렵지 않을까 생각된다.

저도 Azure를 연결하고 측정 Data  Upload하고 LED On/Off를 하는데  2일이 걸렸다아마도 많은  신청자들이 알 수 없는 Error에  막히고 수많은 절차에 질려서 포기하지 않았을까 싶다.   AWS또한 동일하여 예제 Program을 이용하여 MQTT를 연결하는데만도 넘어야될 산이 많다.   아마도 Azure나 AWS가 친숙하지 않고 설정해야 될 항목이 많아서세미나를 해 주신 내용이 없었다면  MQTT를 연결하는데 더 많은 시간이 걸렸을 것이다.  

Azure / AWS는 상용으로 사용하는데는 보안 인증등 신뢰성 측면에서 높은 점수를 줄 수 있을것 같으나, 교육용으로는 사용하기에는 해당 설정 만으로 너무 진이 빠지는 것아  같다.

 

□ 9. 참조 사이트

     □ https://thonny.org/

    □ https://thingspeak.com/

     □ https://core-electronics.com.au/projects/wifi-garage-door-controller-with-raspberry-pi-pico-w-smart-home-project/ 

     □ https://www.raspberrypi.com/products/raspberry-pi-pico/     

     □ https://circuitpython.org/board/raspberry_pi_pico/

     □ https://www.cnx-software.com/2022/07/03/getting-started-with-wifi-on-raspberry-pi-pico-w-board/

     □ https://dronebotworkshop.com/soil-moisture/  : IOT로 정원 물주기 등 다수의 Project 참고 

     □ https://dronebotworkshop.com/picow-arduino/

 

프로젝트 자료실

프로젝트를 재현하거나 학습하는데 필요한 모든 자료를 제공합니다.

등록된 자료가 없습니다.

프로젝트 소개

사용 기술
Home AutomationRaspberry PiSensors

코드 & 회로도

등록된 코드/회로 자료가 없습니다.

댓글 2

j
j2022.08.22

아.. 이전에 이글을 보고 대충 그런가 보다 했는데.. 지금 다시 보니 많은 도움이 되네요.

j
j2022.09.06

잘 읽었습니다.