๋ชฉ๋ก๐ฉ๐ป IoT (Embedded) (235)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ์จ/์ต๋ ์ผ์ : ์ฃผ๋ณ ํ๊ฒฝ์ ์จ๋์ ์ต๋์ ๋ฐ๋ผ ์ ํญ๊ฐ ๋ณํจ : ์จ๋๋ฅผ ์ธก์ ํ๋ ์๋ฏธ์คํฐ + ์ต๋์ผ์ ํจ๊ป ๊ตฌ์ฑ ์จ๋ : 0~50๋ (์ค์ฐจ๋ฒ์ +- 2๋) ์ต๋ : 20~90% RH (์ค์ฐจ๋ฒ์ +- 5% RH) ์๋์ด๋ ธ์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ : ์๋ฆฌ์ผ ํต์ , ๋ฌธ์์ด, Servo, SoftwareSerial ํ์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ : ์ธ๋ถ ๋ชจ๋ ์ ์ด, LiquidCrystal, DHT11 ๐ DHT ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๐ Adafruit Unified Sensor ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๐ DHT 11 ๋ผ์ด๋ธ๋ฌ๋ฆฌ DHT dht (์ฐ๊ฒฐ๋ ํ, DHT11 = ์์์ข ๋ฅ); bht.begin() : ์จ/์ต๋ ์ผ์ ์ฐ๊ฒฐ ์จ๋ : bht.readHumidity(); ์ต๋ : bht.readTem..
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ์กฐ๋ ์ผ์ : ๋ฐ๊ธฐ๋ฅผ ์ธก์ : ์กฐ๋์ ๋ฐ๋ผ ์ ํญ ๊ฐ์ด ๋ณํ๋ ์์ : PhotoResistor, CDS ๋ฑ์ผ๋ก ๋ถ๋ฆฌ์ : ๋ฐ์์ง๋ฉด ์ ํญ๊ฐ ๋ฎ์์ง๊ณ , ์ด๋์์ง๋ฉด ์ ํญ๊ฐ์ด ์ปค์ง์ ์ถ๋ ฅ ์ ์ ์์์ง (๊ทน์ฑ ์์) ๐ฅ ์ผ์กฐ๋ ์ธก์ ๊ธฐ ์กฐ๋ ์ผ์๋ฅผ ์ด์ฉํด์ ์ผ์กฐ๋์ ์ธก์ ์กฐ๋๊ฐ ๋ฎ์ ๊ฒฝ์ฐ์๋ LED๋ฅผ ์ผ์ ์ผ์ ๋์ ์กฐ๋๋ฅผ ์ ์ง ๐ฅ ์กฐ๋์ ๋ฐ๋ผ ๋ฐ์์ง๋ ์ ๋ ์๋ ๋ก๊ทธ ์ถ๋ ฅ ํ์ LED๋ฅผ ์ฐ๊ฒฐํ์ฌ ์กฐ๋๊ฐ ๋ฎ์์ ๋ฐ๋ผ ์ ์ ๋ ๋ฐ์์ง๋ ์ค๋งํธํ ์ ๋ฑ ๐ map : ๊ฐ์ ๋ฒ์๋ฅผ ๋น์จ์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ ํจ์ map ํจ์๋ฅผ ํ์ฉํด์ ์ผ์ ๊ฐ(0~1023)์ ๋ฐ๋ผ 9๋ฒ LED์ ๋ฐ๊ธฐ(255~0)๋ฅผ ์กฐ์ ๋ฐ๊ธฐ = map(sensorValue, 0, 1023, 255, 0); ๐ฅ ์กฐ๋์..
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ์จ๋ ์ผ์ (LM35) : ์จ๋ ๋ณํ์ ๋ฐ๋ผ ์ถ๋ ฅ ์ ์ ๋ณํ : 1V ๋น 100๋ ์จ๋ = ์ถ๋ ฅ ๊ฐ X 1/1023 X 5 X 100 ๐ฅ ์จ๋ ๋ชจ๋ํฐ๋ง ์์คํ ์จ๋ ์ถ๋ ฅํ๊ธฐ ๐ฅ ์จ๋๋ฅผ ์๊น๋ก ๋ํ๋ด๊ธฐ ์จ๋๊ฐ 30๋ ์ด์์ผ ๋ ๋นจ๊ฐ์ ์จ๋๊ฐ 20๋ ์ด์์ด๊ณ 30๋ ๋ฏธ๋ง์ด๋ฉด ์ด๋ก์ ์จ๋๊ฐ 10๋ ์ด์์ด๊ณ 20๋ ๋ฏธ๋ง์ด๋ฉด ํ์์ ์จ๋๊ฐ 10๋ ๋ฏธ๋ง์ผ ๊ฒฝ์ฐ ํ๋์
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ๋ฐฐ์ด : ๋์ผํ ๋ฐ์ดํฐํ์ ๊ฐ์ง๊ณ ๋์ผํ ์ด๋ฆ์ผ๋ก ์ ์ธ๋ ๋ณ์์ ๋ฌถ์ -> ์ฃผํ์ ๊ฐ๋ค์ ๋ฐฐ์ด๋ก ์ ์ฅ int melody[] = {262, 196, 196, 220, 196, 0, 247, 262}; // ๋ฉ๋ก๋ int durations[] = {250, 125, 125, 250, 250, 250, 250, 250 }; // ์ฌ์ ์๊ฐ ๐ฅ ์ ์ฉํ ํจ์๋ค random : ๋์ ๋ฐ์ millis : ์๊ฐ ์ ๋ณด ๋ฐํ pulseln : ํ์ค ๊ฐ๊ฒฉ ์ฝ์ด์ค๊ธฐ min : ์ต์๊ฐ max : ์ต๋๊ฐ abs : ์ ๋๊ฐ ํจ์๋ ํธ์ถ๋๊ธฐ ์ ์ ์ ์! ๐ฅ Arduino says ๊ฒ์
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ํผ์์กฐ ๋ถ์ : ์ ๊ธฐ์ ์ ํธ๋ก ๋ฐ์ํ๋ ํผ์์กฐ ํจ๊ณผ๋ฅผ ์ด์ฉํด ์๋ฆฌ๋ฅผ ๋ฐ์์ํค๋ ์์ : ์ ๊ธฐ์ ์ธ ํ์ค(Pulse) ์ ํธ -> ์ ์์ on/off ๊ฐ ์ผ์ ํ ์ฃผ๊ธฐ๋ก ๋ฐ๋ณต๋๋ ๊ฒ : ํ์ค์ ์ฃผํ์๋ฅผ ๋ฐ๊พธ๋ฉด ์ฃผํ์์ ๋ฐ๋ผ ์๋ฆฌ์ ๋๋ฎ์ด๋ ๋ณํจ ํผ์์กฐ ํจ๊ณผ : ์ ๊ธฐ์ ์ธ ์ ํธ๋ฅผ ์ฃผ์์ ๋ ์์ถํ๊ณ ํ์ฅํ๋ ์ฑ์ง์ ์ด์ฉํ์ฌ ๋ฐ์ํ๋ ๋จ๋ฆผ์ผ๋ก ์๋ฆฌ๋ฅผ ๋ฐ์ ๐ ์๋ฆฌ ์ถ๋ ฅ tone : ์ฐ๊ฒฐ๋ ํ์ผ๋ก ์ค์ ํ ์๊ฐ ๋์ ์ฃผํ์์ ํ์ค๋ฅผ ๋ฐ์์ํค๋ ํจ์ tone(ํ๋ฒํธ, ์ฃผํ์, ์ฌ์์๊ฐ); ๐ ์๋ฆฌ ์ถ๋ ฅ ์ ์ง noTone(ํ๋ฒํธ); ๐ฅ ํผ์๋ ธ ๋ถ์ ๋ก beep beep
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ์๋ฆฌ์ผ ํต์ ์ผ๋ก ๋ฉ์์ง ์์ : USB ์ผ์ด๋ธ ํตํด ์๋ฆฌ์ผ ํต์ ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ์ ๐ Serial.begin (bps) : bps๋ก ํต์ ์๋ ์ค์ ๐ Serial.print("๋ฉ์์ง") : pc๋ก ๋ฉ์์ง ์ ์ก ๐ Serial.read() : ์๋ฆฌ์ผ ํต์ ์์ ๋ฒํผ์์ ํ ๋ฐ์ดํธ์ฉ ๋ฐ์ดํฐ ์ฝ์ด์ด ๐ Serial.readString() : ์์ ๋ ๋ฐ์ดํฐ ๋ฌธ์์ด๋ก ์ฝ์ด์ด ๐ String ํจ์ str1.equals(str2) : ๋ ๋ฌธ์์ด์ด ๊ฐ์์ง ๋น๊ต (true, false) str.length() : ๋ฌธ์์ด์ ๊ธธ์ด ๋ฐํ replace(str1, str2) : str1์ str2๋ก ๋ณํ str.toInt() : ๋ฌธ์์ด์ long ํํ์ ์ ์๋ก ๋ณํ str.tr..
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ํ๋กํ ํ์ : ๋ฒํผ์ ๋๋ฅด์ง ์์์ ๋ LOW(0)์ ๊ฐ์ ๋ณด์ฅํ ์ ์๋ ํ์ ๐ ์ ๋ฅ ์ ํ : ํน์ ๊ธฐ๊ธฐ์ ๊ณต๊ธ๋๋ ์ ๋ฅ ์ ํ ๐ ์ ์ ๋ถ๋ฐฐ : ์ ํญ์ ์ง๋ ฌ๋ก ์ฐ๊ฒฐํด์ ์ ์ ๋ถ๋ฐฐ ๐ ํ์ /ํ๋ค์ด ํ๋ค์ด : ํ๋กํ ์ํ์ผ ๋ ๊ฐ์ GND๋ก ๋์ด ๋ด๋ฆฐ๋ค ํ์ ์ ํญ : ํ๋กํ ์ํ์ผ ๋ ๊ฐ์ 5V๋ก ๋์ด ์ฌ๋ฆฐ๋ค ๐ฅ ๋ฒํผ์ผ๋ก ํ๋กํ ํ์ ํด๊ฒฐ : ๋ฒํผ์ ๋๋ ์ ๋๋ 1์ ๊ฐ์ด ์ถ๋ ฅ : ๋ฒํผ์ ๋๋ฅด์ง ์์์ ๋ 0์ ๊ฐ ์ถ๋ ฅ : ์ ํญ ์ฌ์ฉ ๐ฅ ๋ฒํผ์ ๋๋ ์ ๋๋ง LED๊ฐ ์ผ์ง๊ธฐ ๐ฅ ํ ๊ธ ์ค์์น๋ก LED ON/OFF ํ ๊ธ(Toggle) ์ด๋ ํ๋์ ์ค์ ๊ฐ์ผ๋ก๋ถํฐ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ ํํ๋ ๊ฒ
(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ Serial ํต์ : ์๋ฆฌ์ผ ํต์ ์ ์ํ Serial ์ ๊ณต : ์ฐ๊ฒฐ๋ ์ธ๋ถ ์ฅ์น์ ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ์ ๐ bps (bit-per-second) : 1์ด๋น ์ ์กํ ์ ์๋ ๋นํธ์ ์ : ํต์ ์๋๋ฅผ ๋ํ๋ด๋ ๋จ์ ๐ ํ๋กํ (floating) : ๋ฒํผ์ ์ํ๋ฅผ ์ ์ ์๋ ํ์ : ๋ฒํผ์ ๋๋ฅด๋ฉด (1), ๋๋ฅด์ง ์์ผ๋ฉด (0) ๐ฅ ๋ฒํผ ์ ํธ๋ก ์ถ๋ ฅํ๊ธฐ