Skip to content

mtinet/smartFarm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Repository files navigation

smartFarm



This code was written by Juhyun Kim.

๊ฐ•์˜ ์ž๋ฃŒ

http://han.gl/WLvoNj


๊ตฌ์กฐ

Raspberry Pi Pico W - Firebase Realtime Database - Web or App

1. Firebase์˜ ํ™œ์šฉ๋ฐฉ๋ฒ•

1

2. ๋ณธ smartFarm์˜ ์šด์šฉ ๊ตฌ์กฐ

2

3. ํšŒ๋กœ๋„

3



๊ฐ ์„ธ๊ทธ๋จผํŠธ์˜ ํŠน์ง•

1. Firebase

1. Firebase๋Š” ๊ตฌ๊ธ€์—์„œ ์šด์˜ํ•˜๋Š” ์ธํ„ฐ๋„ท ๊ด€๋ จ BaaS์„œ๋น„์Šค๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. BaaS์— ๋Œ€ํ•œ ์ •์˜๋Š” ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค. ๊ฐ ์˜จ๋ผ์ธ ์„œ๋น„์Šค ํ”„๋กœ๋ฐ”์ด๋”์˜ ๋ถ„๋ฅ˜๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ์„ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.

image

2. ์šฐ๋ฆฌ๊ฐ€ ์Šค๋งˆํŠธํŒœ ํ”„๋กœ์ ํŠธ์—์„œ Firebase๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ฒซ์งธ, ์šฐ๋ฆฌ๋Š” IPv4 ์‹œ์Šคํ…œ์˜ ํ•œ๊ณ„๋กœ ์ธํ•ด ๊ฐœ๋ณ„ ๊ธฐ๊ธฐ์— ๊ณต์ธIP๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.
  • ๋‘˜์งธ, ์ด๋Š” ๋ช‡ ๊ฐœ ์•ˆ๋˜๋Š” ๊ณต์ธIP ์•„๋ž˜์— ๊ณต์œ ๊ธฐ๋ฅผ ์—ฐ๊ฒฐํ•ด ์‚ฌ์„ค IP๋ฅผ ๋งŒ๋“ค์–ด๋‚ด ์‚ฌ์šฉํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์…‹์งธ, ์‚ฌ์„ค IP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋””๋ฐ”์ด์Šค๊ฐ€ ์šด์šฉํ•˜๋Š” ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋„ท์งธ, ์ด ์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ธ ๊ณต์ธ IP์—์„œ ์‚ฌ์„ค IP๋กœ ์—ฐ๊ณ„๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ธ ํฌํŠธํฌ์›Œ๋”ฉ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋‹ค์„ฏ์งธ, ๋ชจ๋ฐ”์ผ ํ†ต์‹ ์—์„œ๋Š” ๊ฐ ๋ชจ๋ฐ”์ผ ํ†ต์‹ ์‚ฌ๊ฐ€ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋ฐ”์ผ ํ†ต์‹ ๋ง NAT์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์—ฌ์„ฏ์งธ, ํ•˜์ง€๋งŒ ์ด๋ฅผ ๋„์ „ํ•œ ์‚ฌ๋žŒ๋“ค์€ NAT๋ฅผ ํ†ตํ•ด ์—ญ์œผ๋กœ ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค๋‚˜ ๋ชจ๋ฐ”์ผ ํ†ต์‹ ๋ง์„ ํ†ตํ•ด ํ…Œ๋”๋ง์„ ํ•˜๊ณ  ์žˆ๋Š” ๋””๋ฐ”์ด์Šค์—์„œ ์šด์šฉํ•˜๋Š” ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋ฐ”์ผ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ†ต์‹ ์‚ฌ์˜ ๊ถŒํ•œ๋ถ€์—ฌ ์—†์ด๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ˆ˜์‹ญ ์ˆ˜๋ฐฑ๋ฒˆ์˜ ์‹œ๋„ ๋์— ์•Œ๊ฒŒ ๋œ๋‹ค. ํ†ต์‹ ์‚ฌ๋Š” ๊ทธ๊ฑธ ์ง€์›ํ•  ์ƒ๊ฐ์ด ์—†๋‹ค.
  • ์ผ๊ณฑ์งธ, ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ต์‹ ์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋กœ ๊ตฌ์„ฑ๋˜๊ณ , ์„œ๋ฒ„๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์—ด๋ฉด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ํ˜•ํƒœ๋กœ ์„œ๋น„์Šค๊ฐ€ ๋˜๋Š”๋ฐ, ์œ„์˜ ์„ค๋ช…๊ณผ ๊ฐ™์€ ์ด์œ ๋“ค๋กœ ์„œ๋ฒ„๊ฐ€ ์„œ๋น„์Šค๋ฅผ ํ•ด๋„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘๊ทผ์„ ํ•  ์ˆ˜๊ฐ€ ์—†๊ฑฐ๋‚˜, ๊ทธ ๊ณผ์ •์ด ๋งค์šฐ ์–ด๋ ต๋‹ค๋Š”๋ฐ ์žˆ๋‹ค.
  • ์—ฌ๋Ÿ์งธ, ๋”ฐ๋ผ์„œ, ์šฐ๋ฆฌ๋Š” ๊ตฌ๊ธ€ ๊ณ„์ •๊ณผ ๊ฐ„๋‹จํ•œ ์„ธํŒ…๋งŒ์œผ๋กœ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Firebase๋ผ๋Š” ์ค‘๊ฐ„ ๋‹จ๊ณ„์˜ Realtime Database ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด ์ด ๊ณณ์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฆฌ๊ณ , ์ด ๊ณณ์— ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๊ฐ€๋Š” ํ˜•ํƒœ์˜ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ƒํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.
  • ์ฐธ๊ณ ๋กœ, Firebase๋Š” Realtime Database๋งŒ ์ง€์›๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ์ธ์ฆ, ์•ฑ์ฒดํฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์Šคํ† ๋ฆฌ์ง€, ํ˜ธ์ŠคํŒ…, ํ•จ์ˆ˜ ์„œ๋น„์Šค, ๋จธ์‹ ๋Ÿฌ๋‹, ๋ถ„์„ ๋“ฑ ์—„์ฒญ๋‚˜๊ฒŒ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ถฉ๋ถ„ํ•œ ์šฉ๋Ÿ‰์„ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ๊ฐœ๋ฐœ๋‹จ๊ณ„๋‚˜ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ๋Š” ๋ฌด๋ฃŒ๋ผ๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.
  • ์–ด์จŒ๋“  ์‚ฌ๋žŒ๋“ค์ด ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด ๋ถ€๊ฐ€๊ฐ€์น˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ด์•ผ ์ž์‹ ๋“ค๋„ ๋จน๊ณ  ์‚ด ์ˆ˜ ์žˆ์Œ์„ ์ž˜ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๊ณ , ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์œผ๋ฉด ๋งŽ์„์ˆ˜๋ก ์ข‹์œผ๋‹ˆ ์ด๋ ‡๊ฒŒ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋ณธ ์„œ๋น„์Šค๋“ค์„ ํ†ตํ•ด์„œ ์šฐ๋ฆฌ ๊ฐ™์€ ์ดˆ๋ณด๊ฐœ๋ฐœ์ž๋“ค์ด ๋งˆ์Œ ๋†“๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ด๋Š” ์˜คํ”ˆ์†Œ์Šค ์ง„์˜์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์ด ์ž˜ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๊ณ , ๊ทธ ์•ˆ์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์•„์ง ๊ฑด์žฌํ•˜๊ฒŒ ์ƒ์กดํ•ด ์žˆ๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ์ฆ๋ช…๋œ ์‚ฌ์‹ค์ด๋ฉฐ, ์‚ฌ์‹ค ๊ตฌ๊ธ€๋„ ๊ทธ๋Ÿฐ ๋ฌธํ™”๋ฅผ ํ†ตํ•ด ์„ฑ์žฅํ•ด์™”์œผ๋‹ˆ, ๊ทธ๋Ÿฐ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์ž์‹ ๋“ค์˜ ์ƒํƒœ๊ณ„๋ฅผ ๋”์šฑ ํ™•์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์–ด์ฐŒ๋ณด๋ฉด ๋งค์šฐ ๋‹น์—ฐํ•œ ์ผ์ด๋‹ค.

2. Github Pages

1. Github๋Š” ์ „์„ธ๊ณ„ ์ฝ”๋”๋“ค์˜ ์ž๋ฃŒ ์ €์žฅ์†Œ์ด๋ฉฐ, ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

2. Github Pages๋Š” HTML, CSS, JavaScript๋กœ ๋Œ€๋ณ€๋˜๋Š” ์ •์  ์›นํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์„œ๋น„์Šค๋ฅผ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. ์ •์  ์›นํŽ˜์ด์ง€๋Š” ์„œ๋ฒ„์ธก์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ํŠน์ •ํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋™์ ์›นํŽ˜์ด์ง€(WAS์„œ๋ฒ„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๋“ฑ์ด ์ถ”๊ฐ€๋จ)์™€ ๋‹ฌ๋ฆฌ ๋‹จ์ˆœํžˆ ์›นํŽ˜์ด์ง€๋งŒ ์ œ๊ณตํ•œ๋‹ค.

3. ์šฐ๋ฆฌ๊ฐ€ ์Šค๋งˆํŠธํŒœ ํ”„๋กœ์ ํŠธ์—์„œ Github Pages๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ฒซ์งธ, ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ Firebase์˜ Realtime Database๊ฐ€ ์•„๋‹ˆ๋ผ ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์Šค๋งˆํŠธํŒœ์˜ ์ •๋ณด๋ฅผ ์ง€๊ตฌ ๋ฐ˜๋Œ€ํŽธ์—์„œ๋„ ํ™•์ธํ•˜๊ณ  ์›๊ฒฉ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์ด๋‹ค.
  • ๋‘˜์งธ, ์„œ๋ฒ„์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๊ฐ€ ๊ฐ€์žฅ ์ง๊ด€์ ์ด๋ฉฐ ๋น ๋ฅด์ง€๋งŒ, ์„œ๋ฒ„๋ฅผ ์Šค์Šค๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฐœ์ธ ์—ญ๋Ÿ‰์˜ ๋ฌธ์ œ, ๋„คํŠธ์›Œํฌ์˜ ์ ‘๊ทผ์„ฑ ์ œ์•ฝ์— ๋”ฐ๋ฅธ ํ•œ๊ณ„ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ œ์•ฝ์กฐ๊ฑด์ด ๋งŽ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ๊ทน๋ณตํ•˜๋ฉด์„œ๋„ ๊ทธ๋Ÿด์‹ธํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • ์…‹์งธ, Github Pages๋Š” ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ ๊ฐ€์žฅ ์‰ฌ์šด ์„œ๋น„์Šค๋ฅผ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.
  • ๋„ท์งธ, Github ์ž์ฒด๋Š” ์ „์„ธ๊ณ„ ์‚ฌ๋žŒ๋“ค์ด ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด ์ด ์ƒํƒœ๊ณ„๋ฅผ ์ดํ•ดํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์†Œํ”„ํŠธ์›จ์–ด ๊ด€๋ จ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ ๋“ ๋“ ํ•œ ์ง€์›๊ตฐ์„ ์–ป๊ฒŒ ๋˜๋Š” ์…ˆ์ด๋‹ค.
  • ๋‹ค์„ฏ์งธ, ๋‹น์—ฐํžˆ ์›นํŽ˜์ด์ง€๋„ ๋ฌด๋ฃŒ๋กœ ๋ฐฐํฌ๋˜๋ฉฐ, ์ž์‹ ๋งŒ์˜ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ๋งค์šฐ ํ›Œ๋ฅญํ•œ ๋„๊ตฌ์ด๋‹ค.
  • ์—ฌ์„ฏ์งธ, ์ผ๋‹จ ์›นํŽ˜์ด์ง€๋กœ ๊ตฌํ˜„๋œ ๊ฒƒ์€ WebViewer๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์•ฑ์œผ๋กœ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ผ๊ณฑ์งธ, ๋ถ€์ˆ˜์ ์œผ๋กœ W3Schools๋“ฑ์˜ ์‚ฌ์ดํŠธ๋ฅผ Github์™€ ํ•จ๊ป˜ ํ™œ์šฉํ•จ์œผ๋กœ์จ ์›น์„ ์ด์šฉํ•œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ๊ณต๋ถ€ํ•˜๊ณ , ๊ด€๋ จ ์—ญ๋Ÿ‰์„ ํ‚ค์›Œ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

3. Raspberry Pi Pico W

1. Raspberry Pi Pico W๋Š” ์•„๋‘์ด๋…ธ ์šฐ๋…ธ์— ๋Œ€์‘ํ•˜๋Š” ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ์žฌ๋‹จ์˜ ํ”ผ์ง€์ปฌ ์ปดํ“จํŒ… ๋„๊ตฌ์ธ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ํ”ผ์ฝ”์˜ ์™€์ดํŒŒ์ด ๋ฒ„์ „์ด๋‹ค.

image

image

2. ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•˜๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ด€๋ จ ์ƒํƒœ๊ณ„์— ์‰ฝ๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

3. ์šฐ๋ฆฌ๊ฐ€ ์Šค๋งˆํŠธํŒœ ํ”„๋กœ์ ํŠธ์—์„œ Raspberry Pi Pico W๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ฒซ์งธ, ๋‹ค๋ฅธ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๊ฐ€ ๋ผ์ฆˆ๋น„์•ˆ์ด๋ผ๋Š” ๋ฆฌ๋ˆ…์Šค OS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํ“จํ„ฐ(MPU, ๋งˆ์ดํฌ๋กœ ํ”„๋กœ์„ธ์„œ ์œ ๋‹›์„ ์‚ฌ์šฉํ•˜๋Š”)์ธ ๋ฐ˜๋ฉด์— ํ”ผ์ฝ”๋Š” ํŽŒ์›จ์–ด(ํŒŒ์ด์ฌ ํŽŒ์›จ์–ด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŽŒ์›จ์–ด ๋“ฑ)๋ฅผ ์˜ฌ๋ ค์„œ ์ฃผ๋กœ ํ”ผ์ง€์ปฌ ์ปดํ“จํŒ…์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์žฅ๋น„(MCU, ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”)์ด๋‹ค. ์ด๋Š” ์•„๋‘์ด๋…ธ ์šฐ๋…ธ์™€ ๊ฐ™์€ ๋ฐ˜๋ณต์ ์ธ ์ผ์„ ํ•˜๋Š”๋ฐ ์ตœ์ ํ™” ๋˜์–ด ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ๋‘˜์งธ, ์•„๋‘์ด๋…ธ ์šฐ๋…ธ์™€์˜ ์ฐจ์ด์ ์€ ์•„๋‘์ด๋…ธ ์šฐ๋…ธ์˜ ๊ฒฝ์šฐ C, C++์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ฐ€๋ณ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‚ฌ์šฉ ์–ธ์–ด๊ฐ€ ์š”์ฆ˜ ์„ธ๋Œ€์—๊ฒŒ ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์ด ์žˆ๋Š”๋ฐ ๋ฐ˜ํ•ด ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ํ”ผ์ฝ”์˜ ๊ฒฝ์šฐ ์–ด๋–ค ํŽŒ์›จ์–ด๋ฅผ ์—…๋กœ๋“œ ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๋งˆ์ดํฌ๋กœ ํŒŒ์ด์ฌ์ด๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋“ฑ์„ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒ๋Œ€์ ์œผ๋กœ ๊ณ ๊ธ‰ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์žฅ์ ์ด๋‹ค.
  • ์…‹์งธ, ๋งˆ์ดํฌ๋กœ ํŒŒ์ด์ฌ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ https://micropython.org/download/rp2-pico-w/ ๋งํฌ์—์„œ ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ๋‹ค์Œ ํ”ผ์ฝ”์— ์—…๋กœ๋“œ ํ•˜๋ฉด ๋œ๋‹ค. ์—…๋กœ๋“œ๋Š” ํ”ผ์ฝ”์˜ Bootsel ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ ์ปดํ“จํ„ฐ์— USB์ผ€์ด๋ธ”์„ ๊ฝ‚์œผ๋ฉด ํ”ผ์ฝ”๊ฐ€ ์™ธ์žฅ ๋””์Šคํฌ๋กœ ์ธ์‹์ด ๋˜๊ณ , ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ํŽŒ์›จ์–ด ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.
  • ๋„ท์งธ, Pico W๋Š” ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์ด์ง€๋งŒ WiFi๋ชจ๋“ˆ์ด ์‹ค์žฅ๋˜์–ด ์žˆ์–ด, ์ฃผ๋ณ€์— ์™€์ดํŒŒ์ด ๊ณต์œ ๊ธฐ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋ฐ”๋กœ ๊ณต์œ ๊ธฐ(2.4GHz)์— ์ ‘์†ํ•ด ์ธํ„ฐ๋„ท๊ณผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค์„ฏ์งธ, ์กฐ๋„, ์˜จ๋„, ์Šต๋„ ์„ผ์„œ๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์„ผ์„œ๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ๋ฐ›์•„์™€์„œ Firebase๋กœ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ์–ด๋–ค ์žฅ์น˜๋ฅผ ๋งŒ๋“ค๋”๋ผ๋„ ํ•ด๋‹น ์‹œ์Šคํ…œ๋งŒ ์ดํ•ดํ•˜๊ณ  ์žˆ์œผ๋ฉด ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์—ฌ์„ฏ์งธ, ๋ฐ˜๋„์ฒด ์ด์Šˆ ์ดํ›„๋กœ ๊ฐ ์‹ฑ๊ธ€๋ณด๋“œ ์ปดํ“จํ„ฐ์˜ ๊ฐ€๊ฒฉ์ด ํญ๋“ฑํ•˜์˜€๋Š”๋ฐ, ํ”ผ์ฝ”๋Š” ์—ฌ์ „ํžˆ ์ €๋ ดํ•˜๋‹ค. ์ผ๋ฐ˜ ํ”ผ์ฝ”๋Š” 4๋‹ฌ๋Ÿฌ, ํ”ผ์ฝ” W๋Š” 6๋‹ฌ๋Ÿฌ ์ˆ˜์ค€์ด๊ณ , ๊ตญ๋‚ด์—์„œ๋„ ํฐ ์ฐจ์ด ์—†์ด ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋”์šฑ ๋งค๋ ฅ์ ์ด๋‹ค.
  • ์ผ๊ณฑ์งธ, ๋ธ”๋ฃจํˆฌ์Šค๋ฅผ ์ด์šฉํ•œ ์Šค๋งˆํŠธํŒœ์€ ๊ทผ๊ฑฐ๋ฆฌ์—์„œ๋งŒ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ง„์ •ํ•œ ์˜๋ฏธ์˜ IoT๋ผ๊ณ  ๋ณผ ์ˆ˜ ์—†๋Š”๋ฐ, ํ”ผ์ฝ” W๋Š” ์ด์ ์„ ๊ต‰์žฅํžˆ ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ESP32, ESP8266๋ณด๋“œ์— ๋น„ํ•ด์„œ ์‚ฌ์šฉ์„ฑ์ด ์šฉ์ดํ•˜๋‹ค.


์„ธ๊ทธ๋จผํŠธ ๊ฐ„ ํ†ต์‹  ํ…Œ์ŠคํŠธ ์˜์ƒ

Raspberry Pi Pico - Firebase - Github Pages(P5js)

1. ์›นํŽ˜์ด์ง€๋ฅผ Github Pages์— ์˜ฌ๋ ค ๊ตฌ๋™์„ ํ•œ ํ›„ Firebase์™€ ํ†ต์‹ ์ด ์ž˜๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธ

test.mp4

2. P5js, Github Pages, Android WebViewer๋กœ ๊ฐ๊ฐ ์ ‘์†ํ•˜์—ฌ ์ œ์–ดํ•˜๋Š” ํ…Œ์ŠคํŠธ

KakaoTalk_20221231_232533880

KakaoTalk_20221231_232521289.mp4

Raspberry Pi Pico - Firebase - Github Pages(Gauge)

1. Firebase - Github Pages

2022-12-31.14-44-34.mp4

2. Raspberry Pi Pico W - Firebase - Github Pages ์ƒํ˜ธ ์—ฐ๋™ ์ „์ฒด ํ…Œ์ŠคํŠธ(์„ผ์„œ ์‹ค์ธก, ์‹ค๋ฌผ ์•ก์ธ„์—์ดํ„ฐ ์ œ์–ด๋งŒ ๋น ์ง„ ์ƒํƒœ)

2023-01-01.11-23-27.mp4

3. Pico์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์—˜์ด๋””์˜ ์ดˆ๋ก์ƒ‰์€ LED On, Fan Off, ํ•˜๋Š˜์ƒ‰์€ LED On, Fan On, ํŒŒ๋ž€์ƒ‰์€ LED Off, Fan On, ๊บผ์ง€๋ฉด LED Off, Fan Off

KakaoTalk_20230101_130414591.mp4


์„ธํŒ…

1.Firebase ์„ธํŒ…

1. ์•„๋ž˜ ๋งํฌ๋กœ ์ด๋™ํ•ด์„œ ๊ตฌ๊ธ€ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์„ ํ•˜๊ณ , ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ์žˆ๋Š” '์ฝ˜์†”๋กœ ์ด๋™' ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ Firebase ์ฝ˜์†”๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

https://firebase.google.com/
image

2. 'ํ”„๋กœ์ ํŠธ ์ถ”๊ฐ€'๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.

image
image

3. ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ Google ์• ๋„๋ฆฌํ‹ฑ์Šค ์‚ฌ์šฉ ์„ค์ •์„ ํ•ด์ œํ•˜๊ณ  'ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ'๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

image
image

4. 30์ดˆ ์ •๋„ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

image
image
image

5. ์ƒˆ๋กœ ๋งŒ๋“  ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

image

6. Firebase ๋ฉ”๋‰ด์ค‘์—์„œ ๋นŒ๋“œ-Realtime Database๋ฅผ ์„ ํƒํ•ด์„œ ์—ฐ๋‹ค.

ํ™”๋ฉด ์บก์ฒ˜ 2022-12-31 160136

7. '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

image

8. ์„œ๋ฒ„ ์œ„์น˜๋ฅผ ์„ ํƒํ•œ๋‹ค.

image

9. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ณธ ์„ค์ •์„ ํ•œ๋‹ค. ์ถ”ํ›„ ์–ธ์ œ๋‚˜ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ธฐ๋ณธ ์„ธํŒ…์œผ๋กœ ์‚ฌ์šฉ์„ค์ •์„ ํ•œ๋‹ค.

image

10. ๊ฐ€์šด๋ฐ ์žˆ๋Š” ๋งํฌ๋ฅผ ํ†ตํ•ด Realtime Database์— ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

image

11. '๊ทœ์น™' ํƒญ์œผ๋กœ ๋“ค์–ด์˜ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ฝ๊ธฐ, ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์„ค์ •๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด ์„ค์ •์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

image

12. false๋กœ ๊ธฐ๋ณธ ์„ค์ •๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด๊ณณ์„ ํด๋ฆญํ•˜์—ฌ true๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  '๊ฒŒ์‹œ'๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ถ”ํ›„ ๋ณด์•ˆ ๋ฐ ํŠธ๋ž˜ํ”ฝ์— ๋”ฐ๋ฅธ ๊ฒฐ์ œ๋น„์šฉ ์ฆ๊ฐ€์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ํ…Œ์ŠคํŠธ ํ•  ๋•Œ๋งŒ true๋กœ ์„ค์ •ํ•˜๊ณ , ์‹ค์ œ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ฝ๊ณ  ์“ฐ๋Š” ๊ถŒํ•œ์„ false๋กœ ๋ฐ”๊พธ๊ณ  ์ ‘๊ทผํ•œ ์‚ฌ๋žŒ์˜ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์—‘์„ธ์Šค ํ† ํฐ์„ ๋ถ€์—ฌ๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

image

13. ๋‹ค์Œ์œผ๋กœ ์ด Realtime Database๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ด€๋ จ config ๋‚ด์šฉ์„ ์–ป์–ด์•ผ ํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”-๊ธฐ์–ด ๋ฒ„ํŠผ-ํ”„๋กœ์ ํŠธ ์„ค์ •์œผ๋กœ ๊ฐ€์„œ ๋‚ด ์›น์•ฑ์— firebase๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์„ธํŒ…์„ ์™„๋ฃŒํ•˜๊ณ , config ์ •๋ณด๋ฅผ ์–ป์–ด๋‚ธ๋‹ค. ํ•œ ๋ฒˆ ์„ธํŒ…์„ ์™„๋ฃŒํ•˜๋ฉด ์„ธํŒ…์„ ์‚ญ์ œํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ณ„์† ํ•ด๋‹น config๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

image

210127985-4958b729-b8d9-4291-88dd-9501b94bfc01

210128004-1cfdf26e-da0b-4f69-9ae5-163931e758bd

image

image

ํ™”๋ฉด ์บก์ฒ˜ 2022-12-31 155100

14. firebase config ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ์•„๋ž˜์˜ ์ตœ์ข… ์ด๋ฏธ์ง€ ์•ˆ์— ์žˆ๋Š” firebaseConfig ๋‚ด๋ถ€์˜ ๊ฐ’๋งŒ ๋ณต์‚ฌํ•ด์„œ ๋‚ด ์›น์˜ web/public/js/firebase.jsํŒŒ์ผ์˜ ํ•ด๋‹น ๋ถ€๋ถ„์— ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ์ž์‹ ์˜ Realtime Database์— ์ ‘๊ทผํ•ด์„œ ์˜จ๋„, ์Šต๋„, ์กฐ๋„, LED์ œ์–ด, Fan์ œ์–ด๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” smartFarm ์ œ์–ด์šฉ ์›น ์„œ๋น„์Šค๋ฅผ ๋ฐ”๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ™”๋ฉด ์บก์ฒ˜ 2022-12-31 155119

  • Firebase ์‚ฌ์šฉ ์š”๊ธˆ์ œ๋Š” ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋˜๋ฉฐ, ํ…Œ์ŠคํŠธ ์šฉ๋„๋กœ๋Š” ๋น„์šฉ์ด ๋”ฐ๋กœ ๋“ค์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.
    https://firebase.google.com/pricing?authuser=0&hl=ko

2. Web(github pages) ์„ธํŒ…


3. Raspberry Pi Pico W ์„ธํŒ…

1. ๊ฐœ๋ฐœ IDE๋กœ๋Š” Thonny๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํŽŒ์›จ์–ด ๋งํฌ๋กœ ๋“ค์–ด๊ฐ€์„œ view raw๋ฅผ ๋ˆŒ๋Ÿฌ ํŽŒ์›จ์–ด๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ , ํ”ผ์ฝ” W์˜ bootsel๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  USB์ผ€์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๋ฉด ํ™œ์„ฑํ™”๋˜๋Š” ํ”ผ์ฝ” ํด๋”(ํŒŒ์ผ๊ด€๋ฆฌ์ž-๋‚ดPC-ํ”ผ์ฝ” W ๋“œ๋ผ์ด๋ธŒ)์— ๋ณต์‚ฌํ•ด์„œ ๋„ฃ๋Š”๋‹ค.

2. Thonny ์„ค์น˜ ํ›„ Run-Configure Interpreter-Interpreter์—์„œ 'MicroPython (Raspberry Pi Pico)'๋ฅผ ์„ ํƒํ•˜๊ณ  ์—ฐ๊ฒฐ๋œ Port๋ฅผ ์„ ํƒํ•ด์•ผ ํ”ผ์ฝ”์— ๋งˆ์ดํฌ๋กœํŒŒ์ด์ฌ์„ ์‚ฌ์šฉํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜์—ฌ ์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

image
image

3. ์™ผ์ชฝ ์ƒ๋‹จ์€ ๋‚ด ์ปดํ“จํ„ฐ์˜ ํด๋”์™€ ํŒŒ์ผ, ์™ผ์ชฝ ํ•˜๋‹จ์€ ํ”ผ์ฝ” ๋‚ด๋ถ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ํด๋”์™€ ํŒŒ์ผ, ๊ฐ€์šด๋ฐ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๊ฐ„, ๊ฐ€์šด๋ฐ ํ•˜๋‹จ์€ ํŒŒ์ด์ฌ ์ƒํƒœ ์ฒดํฌ์šฉ ์ฝ˜์†”์ด ์œ„์น˜ํ•œ๋‹ค.

image

4. ์œ„์ชฝ์˜ ํ”Œ๋ ˆ์ด ๋ฒ„ํŠผ๊ณผ ์ •์ง€ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฉˆ์ถ˜๋‹ค.

5. ์ฝ”๋“œ์˜ ์ €์žฅ์€ ๋‚ด ์ปดํ“จํ„ฐ์—๋„ ํ•  ์ˆ˜ ์žˆ๊ณ , ํ”ผ์ฝ”์—๋„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ ํƒํ•ด์„œ ์ €์žฅํ•˜๊ณ , ์„œ๋กœ ์—…๋กœ๋“œ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋œ๋‹ค.

5. ํ”ผ์ฝ”์— ์—…๋กœ๋“œ ํ•œ ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ , ํ”Œ๋ ˆ์ด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ”ผ์ฝ” ํŒŒ์ด์ฌ ํŽŒ์›จ์–ด๊ฐ€ ์—ฐ์‚ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ฝ˜์†”์— ๋ณด์—ฌ์ฃผ๊ฒŒ ๋œ๋‹ค.

6. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์žˆ์œผ๋‚˜ ํ”ผ์ฝ”์˜ ์ €์žฅ ๊ฐ€๋Šฅ ์šฉ๋Ÿ‰์ด 800kB๋ฐ–์— ์•ˆ๋˜์„œ ์šฉ๋Ÿ‰์ด ํฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

7. ๋”ฐ๋ผ์„œ Firebase ์ธ์ฆ ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ธ ์ˆ˜ ์—†๊ณ , Firebase RTDB์˜ ๊ทœ์น™์„ false๋กœ ํ•ด ๋†“์„ ๊ฒฝ์šฐ ํ† ํฐ์„ ํ†ตํ•œ ์“ฐ๊ธฐ, ์ฝ๊ธฐ ๊ถŒํ•œ์„ ํš๋“ํ•  ๋ฐฉ๋ฒ•์ด ์—†์–ด ๊ทœ์น™์„ ํ•ญ์ƒ true๋กœ ํ•ด๋†“๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๋‹ค. ์ถ”ํ›„ ํ”ผ์ฝ”์˜ ๋‚ด๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚œ ์ œํ’ˆ์ด ๋‚˜์˜ค๋ฉด ํ•ด๊ฒฐ๋  ๋ฌธ์ œ๋กœ ๋ณด์ธ๋‹ค.

8. pico ํด๋” ์•ˆ์— ์žˆ๋Š” boot.py, main.pyํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ Thonny๋ฅผ ์ด์šฉํ•ด ์ž์‹ ์˜ ํ”ผ์ฝ”์— ์—…๋กœ๋“œ ํ•œ ๋‹ค์Œ ์ƒ๋‹จ์˜ ํ”Œ๋ ˆ์ด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

9. Thonny๋กœ ์‹คํ–‰์„ ํ•˜๋ฉด ๊ฐ๊ฐ์˜ ํŒŒ์ผ๋“ค์„ ์›ํ•˜๋Š”๋Œ€๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์•„๋‘์ด๋…ธ์ฒ˜๋Ÿผ ์ „์›์„ ๋„ฃ์œผ๋ฉด ๋ฐ”๋กœ ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŒŒ์ผ๋ช…์„ ๋ฐ˜๋“œ์‹œ main.py๋กœ ์ง€์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

10. boot.py ํŒŒ์ผ์€ ํ”ผ์ฝ”๊ฐ€ ์ž˜ ๋ถ€ํŒ…์ด ๋˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์›๋ž˜ ํ”ผ์ฝ”์˜ boot๊ณผ์ •์„ ์•ฝ๊ฐ„ ์ˆ˜์ •ํ•ด ๋†“์€ ํŒŒ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

image

  • boot.py
frommachineimportPinfromutimeimportsleepled=Pin(27, Pin.OUT) led.on() sleep(0.2) led.off() sleep(0.2) led.on() sleep(0.2) led.off() sleep(0.2) led.on() sleep(0.2) led.off() sleep(0.2) importmain

11. ์•„๋ž˜ ์บก์ณ์˜ 17๋ฒˆ์งธ ์ค„ wlan.connect์˜ ํŒŒ๋ผ๋ฉ”ํ„ฐ์—๋Š” ์ž์‹ ์˜ ์™€์ดํŒŒ์ด SSID, Password๋ฅผ ์ž…๋ ฅํ•ด ๋†“์œผ๋ฉด ์ž๋™์œผ๋กœ ์™€์ดํŒŒ์ด์— ์ ‘์†์ด ๋ฉ๋‹ˆ๋‹ค. 27๋ฒˆ์งธ์ค„ url์—๋Š” ์ž์‹ ์ด ๋งŒ๋“  Firebase RTDB์˜ ์ฃผ์†Œ๋กœ ์ˆ˜์ •ํ•ด์ฃผ์„ธ์š”.

image

12. ์•„๋ž˜ ์ฝ”๋“œ๋Š” ์กฐ๋„, ์˜จ๋„, ์ˆ˜๋ถ„ ๊ฐ’์„ ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑํ•ด์„œ ๋ณด๋‚ด๋„๋ก ์„ธํŒ…ํ•ด๋†จ์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„ ์‹ค์ œ ์„ผ์„œ๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

  • base.py
frommachineimportPin, I2Cimportnetworkimporttimeimporturequestsimportrandom# ์ œ์–ดํ•  ํ•€ ๋ฒˆํ˜ธ ์„ค์ •frommachineimportPinled=Pin(26, Pin.OUT) fan=Pin(27, Pin.OUT) # ์™€์ดํŒŒ์ด ์—ฐ๊ฒฐํ•˜๊ธฐwlan=network.WLAN(network.STA_IF) wlan.active(True) ifnotwlan.isconnected(): wlan.connect("<SSID>", "<Password>") print("Waiting for Wi-Fi connection", end="...") whilenotwlan.isconnected(): print(".", end="") time.sleep(1) else: print(wlan.ifconfig()) print("WiFi is Connected") # RTDB์ฃผ์†Œurl="<์ž์‹ ์˜ Firebase RTDB์ฃผ์†Œ>"# DB ๋‚ด์—ญ ๊ฐ€์ ธ์˜ค๊ธฐresponse=urequests.get(url+".json").json() # byteํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ json์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ซ์•„์ฃผ๋Š” ์ผ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋จ# print(response)# print(response['smartFarm'])# print(response['smartFarm']['led'])whileTrue: # ํ˜„์žฌ DB์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ดresponse=urequests.get(url+".json").json() # ํ˜„์žฌ DB์˜ led ํ‚ค ๊ฐ’์˜ ์ƒํƒœ์— ๋”ฐ๋ผ led 26๋ฒˆ์„ ์ œ์–ดif (response['smartFarm']['led'] ==0) : led.value(1) else : led.value(0) # ํ˜„์žฌ DB์˜ fan ํ‚ค ๊ฐ’์˜ ์ƒํƒœ์— ๋”ฐ๋ผ led 27๋ฒˆ์„ ์ œ์–ดif (response['smartFarm']['fan'] ==0) : fan.value(1) else : fan.value(0) # ๊ฐ์ฒด ๊ต์ฒดํ•˜๊ธฐ, patch๋Š” ํŠน์ • ์ฃผ์†Œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋จmyobj={'light': random.randrange(0, 100), 'temp': random.randrange(0, 50), 'mois': random.randrange(0,100)} urequests.patch(url+"smartFarm.json", json=myobj).json()

13. pico ํด๋”์— ์žˆ๋Š” main.pyํŒŒ์ผ๊ณผ ssd1306.pyํŒŒ์ผ์„ pico w์— ํ•จ๊ป˜ ๋„ฃ์–ด์•ผ OLED๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๋ฉ๋‹ˆ๋‹ค.

14. main.py, main(non_OLED).py ํŒŒ์ผ์€ Firebase์˜ ๊ฐ’์— ๋”ฐ๋ผ LED, Fan์„ ์ œ์–ดํ•˜๊ณ , ์„ผ์„œ๋กœ๋ถ€ํ„ฐ ์ธก์ •๋œ Moisture, Temperature, Light๊ฐ’์„ Firebase๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ์„ธํŒ… ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

15. ์•„๋ž˜ ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ตœ์ข… ํ…Œ์ŠคํŠธ ์˜์ƒ์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published