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

(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ์๋ณด ๋ชจํฐ : ์ ์ด ๊ณ์ธก ํ๋ก์ ์ํด ์ ๋ ฅ๋ ์ ํธ๋งํผ ์ ํํ๊ฒ ์์ง์ผ ์ ์๋ ๋ชจํฐ : 0~180๋ ๊น์ง์ ๊ฐ๋ ํํ ๊ฐ๋ฅ ๐ Servo ๋ผ์ด๋ธ๋ฌ๋ฆฌ // ์๋ณด ๋ชจํฐ๋ฅผ ์ ์ดํ๊ธฐ ์ํ ๊ฐ์ฒด ์์ฑ Servo myservo; // ์๋ณด ๋ชจํฐ ์ ์ดํ์ ์๋ณด ๋ชจํฐ์ ์ฐ๊ฒฐ myservo.attach(ํ); // ์๋ณด ๋ชจํฐ๋ฅผ ์ง์ ํ ๊ฐ๋๋ก ํ์ myservo.write(๊ฐ๋); ๐ฅ ์๋ ๋ก๊ทธ ์จ๋๊ณ : ์จ๋ ์ผ์์ ์๋ณด๋ชจํฐ๋ฅผ ํ์ฉํ์ฌ ํ์ฌ ์จ๋๋ฅผ ๋ํ๋ด๋ ์๋ ๋ก๊ทธ ์จ๋๊ณ

(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ์ธ์ฒด ๊ฐ์ง ์ผ์ : ์์ง์์ด ๊ฐ์ง ๋๋ฉด HIGH, ๋ณํ๊ฐ ์์ ๊ฒฝ์ฐ LOW ์ถ๋ ฅ : ์ ์ธ์ ์ ํตํด ์ฌ๋์ ์์ง์์ ๊ฐ์งํ๋ ์ผ์ ๐ ์๊ฐ์ ์๋ ค์ฃผ๋ ํจ์ millis() : ๊ฒฝ๊ณผ๋ ์๊ฐ์ ๋ฐ๋ฆฌ ์ด ๋จ์๋ก ๋ฐํ : delay ์์ด ์ฃผ๊ธฐ์ ์ธ ์์ ์ํ ๊ฐ๋ฅ ํ์ฌ ์๊ฐ (ms) = millis(); ๐ฅ ์ ์ด ์๋ ๋์ด๋ฒจ : ์ธ์ฒด ๊ฐ์ง ์ผ์๋ก ์์ง์์ด ์๋์ง ๊ฐ์งํ๊ณ , ๊ฐ์ง๋๋ฉด ํผ์์กฐ ๋ถ์ ๋ฅผ ์ด์ฉํ์ฌ ๋ฉ๋ก๋๋ฅผ ์ถ๋ ฅ ๐ฅ ์นจ์ ๋ฐฉ์ง ์์คํ : ์ธ์ฒด ๊ฐ์ง ์ผ์๋ก ์์ง์์ด ๊ฐ์ง๋๋ฉด, RGB LED๋ฅผ ์ด์ฉํ์ฌ ๊ฒฝ๊ณ ๋ฑ์ ๋ฐํ๊ณ ํผ์์กฐ๋ถ์ ๋ฅผ ์ด์ฉํ์ฌ ๊ฒฝ๊ณ ์์ ์ถ๋ ฅ

(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ RGB LED : ํ๋์ LED์ Red, Green, Blue ์ธ๊ฐ์ ๋ฐ๊ด ์์๋ฅผ ๋ฃ์ด ์ธ๊ฐ์ง ์์ ์ด์ฉํด ์ํ๋ ์ปฌ๋ฌ๋ฅผ ์กฐํฉ ๐ฅ RGB LED ๋ก ๋ฌด์ง๊ฐ ํํํ๊ธฐ : ์ธ ๊ฐ์ง ์์์ ์กฐํฉํ์ฌ ๋นจ, ์ฃผ, ๋ ธ, ์ด, ํ, ๋จ, ๋ณด 7๊ฐ์ง ์์์ ๋ํ๋ด๊ธฐ ๐ฅ ์์์ ์ฝ๋ ๊ฐ์ ์ ๋ ฅ๋ฐ์ RGB LED์ ํํํ๊ธฐ : ์๋ฆฌ์ผ ํต์ ์ผ๋ก RGB ๊ฐ๊ฐ์ ์์ ๊ฐ์ ์ ๋ ฅ๋ฐ๊ธฐ : Serial ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ parseInt ํจ์๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ์ผ๋ก ๋ณํํ์ฌ ๋ฐํ ์ ์ํ ๋ณ์ = Serial.parseInt();

(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ๋์งํธ ์ ํธ : digitalWrite (๋ณด๋ด๊ธฐ), digitalRead (๋ฐ๊ธฐ) ๋ก ๋์งํธ ์ ํธ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ๋๋ค ๐ฅ ์๋ ๋ก๊ทธ ์ ํธ ์ฝ๊ธฐ ์ฝ์ด์จ ๊ฐ = analogRead(์ฐ๊ฒฐ๋ ํ); : 0~5V ์ฌ์ด์ ๊ฐ์ 1024 ๋จ๊ณ๋ก ๋๋์ด ์ ๋๋ฅผ ํํ ๐ฅ ์๋ ๋ก๊ทธ ์ ํธ ์ถ๋ ฅํ๊ธฐ analogWrite(ํ ๋ฒํธ, ์ถ๋ ฅ ์ ํธ); : ์ ๊ธฐ์ ์ ํ์ค (pulse) ์ ํธ, ์ ์์ ON/OFF ๊ฐ ์ผ์ ํ ์ฃผ๊ธฐ๋ก ๋ฐ๋ณต๋๋ ๊ฒ ๐ PWM (Pulse Width Modulation) : ๋์งํธ ์ ํธ์ ํญ (pulse width)์ ์กฐ์ ํจ์ผ๋ก์จ ์๋ ๋ก๊ทธ ์ ํธ๋ฅผ ํํํ๋ ๊ฒ : duty cycle์ ํ ์ฃผ๊ฐ (2ms) ์์ ์ง์๋๋ HIGH ๊ตฌ๊ฐ์ ๋น์จ ๐ฅ ADC (Analog to Dig..

(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ์ด์ํ ์ผ์ : ์ด์ํ๋ฅผ ์ด์ฉํด ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ๋ ์ผ์ : ์ด์ํ๋ฅผ ์ก์ ํ์ฌ ๋ฌผ์ฒด์ ๋ถ๋ชํ์ ๋์์จ ์๊ฐ์ผ๋ก ๊ฑฐ๋ฆฌ๋ฅผ ์ฐ์ถํ๋ ์๋ฆฌ => ์ด์ํ ์ก์ ๋ถ๋ถ์์ ์ด์ํ ํ์ค ์ถ๋ ฅ => ๋ฌผ์ฒด์ ๋ถ๋ชํ ๋์์จ ์ ํธ๋ฅผ ์์ฝ ์์ ๋ถ๋ถ์์ ๋ฐ์ => ๋ฌผ์ฒด์ ๋ถ๋ชํ ๋์์จ ์๊ฐ ์ฐจ๋ก ๋ฌผ์ฒด์์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ ๊ฑฐ๋ฆฌ (cm) = ์๊ฐ (us) X 0.017(cm/us) ์ด์ํ ์๋๊ฐ 340 m/s ์ธ๋ฐ ์๋ณต์ด๋๊น 170 m/s, m์์ cm/us ๋ก ๋ฐ๋๋๊น 0.017 ๊ฑฐ๋ฆฌ ์ธก์ : 2cm~4cm ์ธก์ ๊ฐ๋ฅํ ๊ฐ๋ : ์ฝ 15๋ ์ด์ํ ์๋ : 340 m/s ๐ ๋ง์ดํฌ๋ก์ด (us) ์๊ฐ๋งํผ ๊ทธ ์ํ๋ก ์ ์ง/๋์ ์ค์ง (1ms = 1000us) delayMicroseconds(us); ๐..

(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ํ ์ ์๋ถ ์ผ์ : ํ ์ ๋ด ์๋ถ ํจ๋์ ์ธก์ ํ๋ ์ผ์ : ์๊ทน ์ ์ ์ฌ์ด์ ์ ๋ฅ๊ฐ ํ๋ฆ์ผ๋ก์จ ์๋ถ๋ ์ธก์ ์๋ถ๋์ด ๋ง์์ง๋ฉด ์ถ๋ ฅ ๊ฐ ์์์ง ํ ์ ๋ด ์๋ถ๋์ด ์ ์ผ๋ฉด ์ ํญ ๊ฐ ์ปค์ง ๋์งํธ ์ถ๋ ฅ : ์๋ถ์ ์ ๋ฌด๋ฅผ 0/1๋ก ์ถ๋ ฅ ์๋ ๋ก๊ทธ ์ถ๋ ฅ : ์ ํํ ๊ฐ ์ถ๋ ฅ (๋ง๋ฅธ ๋ : 600~1000, ์ ์ ๋ : 370~600, ๋ฌผ : 0~370

(์ฝ๋๋ ์ ์๊ถ์ ๊ณต์ ์๋ฉ๋๋น!!) ๐ฅ ์จ/์ต๋ ์ผ์ : ์ฃผ๋ณ ํ๊ฒฝ์ ์จ๋์ ์ต๋์ ๋ฐ๋ผ ์ ํญ๊ฐ ๋ณํจ : ์จ๋๋ฅผ ์ธก์ ํ๋ ์๋ฏธ์คํฐ + ์ต๋์ผ์ ํจ๊ป ๊ตฌ์ฑ ์จ๋ : 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); ๐ฅ ์กฐ๋์..