๋ชฉ๋ก๐ฉโ๐ป IoT (Embedded)/Arduino (64)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?

(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ์จ๋ ์ผ์ (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) ๐ฅ ๋ฒํผ ์ ํธ๋ก ์ถ๋ ฅํ๊ธฐ

(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ LED 1์ด๋ง๋ค ๊น๋นก์ด๊ธฐ : LED์ ์งง์ ๋ถ๋ถ (-) ๊ธด ๋ถ๋ถ (+) V(์ ์) / R(์ ํญ) = I(์ ๋ฅ) : ์ ์ LED 1.8V : LED 20mA : ์ ์ 5V : ์ ํญ 160 ohm void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } ๐ ์๋ฆฌ์ผ ํต์ : PC์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํจ ๐ฅ LED ๊ฒฝ๊ด๋ฑ

๐ฅ ์๋์ด๋ ธ : ์ํธ์์ฉํ๋ ๊ธฐ๊ธฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์คํ์์ค ํ๋กํ ํ์ดํ ํ๋ซํผ ๐ MCU (Micro Controller Unit) : ํน์ ๊ธฐ๋ฅ์ ์ ์ดํ๊ธฐ ์ํ ์ ์ฑ๋ฅ์ ์์ ์ฅ์น : Memory + I/O + CPU ๐ฅ ์๋์ด๋ ธ ๊ตฌ์กฐ : ๋ฆฌ์ ๋ฒํผ : USB ์ปค๋ฅํฐ : ์ ์ ์ฐ๊ฒฐํ : ๋์งํธ ์ ์ถ๋ ฅํ : ์๋ ๋ก๊ทธ ์ ๋ ฅํ : MCU ๐ฅ ์ค์ผ์น : ์๋์ด๋ ธ์ ํ๋ก๊ทธ๋จ ์ด๋ฆ void setup() { // put your setup code here, to run once: // ๋ณ์ ์ด๊ธฐํ, ์ผ์ ์ฐ๊ฒฐ, ํ์ ๋ฐฐ์ด } void loop() { // put your main code here, to run repeatedly: // ํน์ ์กฐ๊ฑด } ๐ ๊ตฌ์กฐ : C++(C) ์ดํด : Setup (์ค๋น ๋ฐ ์ด๊ธฐํ..