# ๐ŸŒž ๋น› ์ถ”์  ์Šค๋งˆํŠธ ์ „๋ ฅ ์ œ์–ด ์‹œ์Šคํ…œ ## 1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋น› ์ถ”์  ์Šค๋งˆํŠธ ์ „๋ ฅ ์ œ์–ด ์‹œ์Šคํ…œ์€ ๋น› ์ถ”์  ํƒœ์–‘ํŒจ๋„๋กœ ๋ฐœ์ „ ํšจ์œจ์„ ๋†’์ด๊ณ  ์Šค๋งˆํŠธ ์ฝ˜์„ผํŠธ๋กœ ์ „๋ ฅ์„ ์ œ์–ดํ•˜๋Š” IoT ๊ธฐ๋ฐ˜ ์—๋„ˆ์ง€ ๊ด€๋ฆฌ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ๊ณ ์ •ํ˜• ํƒœ์–‘๊ด‘ ํŒจ๋„์€ ํƒœ์–‘์˜ ์ด๋™์ด๋‚˜ ์ฃผ๋ณ€ ์žฅ์• ๋ฌผ์— ๋”ฐ๋ฅธ ์กฐ๋„ ๋ณ€ํ™”์— ๋Œ€์‘ํ•˜์ง€ ๋ชปํ•ด ๋ฐœ์ „ ํšจ์œจ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด CDS ์„ผ์„œ ๊ธฐ๋ฐ˜ ํƒœ์–‘๊ด‘ ์ถ”์  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ํ•œํŽธ, ํšจ๊ณผ์ ์œผ๋กœ ์—๋„ˆ์ง€๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒจ๋„ ๊ด€๋ จ ์ •๋ณด ์‹ค์‹œ๊ฐ„ ์„œ๋ฒ„ ์ €์žฅ, ์Šค๋งˆํŠธ ์ฝ˜์„ผํŠธ ์ œ์–ด, LCD ์‹œ๊ฐํ™” UI ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋Š” ํ†ตํ•ฉ ์—๋„ˆ์ง€ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ### ์ „์ฒด ์‹œ์Šคํ…œ ๊ตฌ์„ฑ - #### **STM32 Nucleo-F411RE** - 8๊ฐœ์˜ CDS ์„ผ์„œ ์ž…๋ ฅ - ํƒœ์–‘๊ด‘ ํŒจ๋„ ์ž๋™ ํšŒ์ „(์Šคํ… ๋ชจํ„ฐ) - ํƒœ์–‘๊ด‘ ํŒจ๋„ ์ „์•• ์ธก์ • - Wi-Fi(ESP ๋ชจ๋“ˆ)๋กœ Raspberry Pi ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์†ก์‹  - #### **Raspberry Pi 5 (์„œ๋ฒ„)** - ์†Œ์ผ“ ์„œ๋ฒ„(iot_server.c) - MariaDB ๋ฐ์ดํ„ฐ ์ €์žฅ - Bluetooth๋กœ Arduino์™€ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  - #### **Arduino UNO** - ํŒจ๋„ ๋ฐฉํ–ฅ / ์ „์•• / ์ฝ˜์„ผํŠธ ์ƒํƒœ LCD ์ถœ๋ ฅ - ์‚ฌ์šฉ์ž ์ฝ˜์„ผํŠธ ON/OFF ์ œ์–ด(๋ฆด๋ ˆ์ด) - Bluetooth๋กœ ๋ช…๋ น ์ˆ˜์‹  ### ๐Ÿ”— ํ†ต์‹  ๊ตฌ์กฐ - STM32 โ†” **Wi-Fi** โ†” Raspberry Pi - Arduino โ†” **Bluetooth** โ†” Raspberry Pi --- ## 2. ์ฃผ์š” ๊ธฐ๋Šฅ ### 1) STM32 โ€” ํƒœ์–‘๊ด‘ ํŒจ๋„ ์ž๋™ ์ถ”์  ๋ฐ ์„ผ์„œ ๋ฐ์ดํ„ฐ ์†ก์‹  - 8๊ฐœ CDS ์„ผ์„œ๋กœ ๋น›์˜ ๊ฐ•๋„ ์ธก์ • - ๊ฐ€์žฅ ๋ฐ์€ ๋ฐฉํ–ฅ์œผ๋กœ ํŒจ๋„ ์ž๋™ ํšŒ์ „ - ํƒœ์–‘๊ด‘ ํŒจ๋„ ์ „์•• ์ธก์ • - Wi-Fi(ESP ๋ชจ๋“ˆ)๋กœ Raspberry Pi์— ์‹ค์‹œ๊ฐ„ ์ •๋ณด ์†ก์‹  ### 2) Raspberry Pi 5 โ€” IoT ์„œ๋ฒ„ + ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ €์žฅ - **iot_server.c** - ๋ฉ€ํ‹ฐ ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“ ์—ฐ๊ฒฐ - ID/PW ๊ธฐ๋ฐ˜ ์ธ์ฆ ์ฒ˜๋ฆฌ - ๋ฉ”์‹œ์ง€ ๋ผ์šฐํŒ… (ALLMSG, ํŠน์ • ID ์ „์†ก) - **sql_client.c** - โ€œ[LT_STM_SQL]SENSOR@โ€ฆโ€ ํŒจํ‚ท ํŒŒ์‹ฑ - MariaDB(sensor ํ…Œ์ด๋ธ”)์— ์‹ค์‹œ๊ฐ„ INSERT - **bt_client.c** - Bluetooth HC-06 ๋ชจ๋“ˆ ์‚ฌ์šฉ - Arduino์— ๋ช…๋ น ์ „๋‹ฌ - Arduino ์ƒํƒœ ์žฌ์ˆ˜์‹ ํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ ### 3) Arduino UNO โ€” LCD UI + ์Šค๋งˆํŠธ ์ฝ˜์„ผํŠธ ์ œ์–ด - Raspberry Pi โ†’ Bluetooth๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์‹  - LCD์— ํŒจ๋„ ๋ฐฉํ–ฅ, ์ „์••, ์ฝ˜์„ผํŠธ ์ƒํƒœ ์ถœ๋ ฅ - ์‚ฌ์šฉ์ž ๋ฒ„ํŠผ ์ž…๋ ฅ์œผ๋กœ ์ฝ˜์„ผํŠธ ON/OFF - ๋ฆด๋ ˆ์ด ์ œ์–ด + ์ƒํƒœ๋ฅผ Raspberry Pi๋กœ ๋‹ค์‹œ ์†ก์‹  --- ## 3. ๋‹ด๋‹น ์—ญํ•  ### Raspberry Pi **IoT ์„œ๋ฒ„ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ (iot_server ๊ณ„์—ด)** #### โ‘  STM32 โ†” ESP8266 Wi-Fi ํ†ต์‹  ๋ชจ๋“ˆ ์—ฐ๋™ ๊ฐœ๋ฐœ - STM32์™€ ESP8266 ๊ฐ„ UART ํ†ต์‹  ์ œ์–ด - ์„œ๋ฒ„(Raspberry Pi)์™€ ์‹ค์‹œ๊ฐ„ ์„ผ์„œ ๋ฐ์ดํ„ฐ ์†ก์‹  ๊ตฌ์กฐ ๊ตฌํ˜„ - AT Command ๊ธฐ๋ฐ˜ Wi-Fi ์„ค์ • #### โ‘ก ์„ผ์„œ ๋ฐ์ดํ„ฐ ํŒจํ‚ท ์„ค๊ณ„ ๋ฐ ์†ก์‹  ๋กœ์ง ๊ตฌํ˜„ - CDS ์„ผ์„œ ๊ฐ’ / ํƒœ์–‘๊ด‘ ํŒจ๋„ ์ „์•• ๋ฐ์ดํ„ฐ ํŒจํ‚ท ํฌ๋งท ์ •์˜ - ์„œ๋ฒ„ ์ˆ˜์‹ ์„ ๊ณ ๋ คํ•œ ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜ ํŒจํ‚ท ๊ตฌ์„ฑ - ๋ฐ์ดํ„ฐ ์†์‹ค ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์†ก์‹  ํƒ€์ด๋ฐ ๋ฐ ํฌ๋งท ์•ˆ์ •ํ™” #### โ‘ข ์„œ๋ฒ„ ์—ฐ๋™ ํ…Œ์ŠคํŠธ ๋ฐ ํ†ต์‹  ๊ฒ€์ฆ - Raspberry Pi ์†Œ์ผ“ ์„œ๋ฒ„์™€ ESP8266 TCP ํ†ต์‹  ํ…Œ์ŠคํŠธ - ํŒจํ‚ท ์ˆ˜์‹ /DB ์ €์žฅ ์—ฌ๋ถ€ ๊ฒ€์ฆ --- ## 4. ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ### 1) **๋ฐ์ดํ„ฐ ์†ก์‹  ์ค‘ ์Šคํ… ๋ชจํ„ฐ ๋Š๊น€ ํ˜„์ƒ** - ์›์ธ: Wi-Fi ์†ก์‹ (ESP) ๋ฃจํ‹ด์ด ๋ธ”๋กœํ‚น์œผ๋กœ ๋™์ž‘ - ํ•ด๊ฒฐ: **TIM4 ๊ธฐ๋ฐ˜ ๋…ผ๋ธ”๋กœํ‚น(non-blocking)๋ฐฉ์‹ ์Šคํ… ๋ชจํ„ฐ ์ œ์–ด ๊ตฌ์กฐ ๊ตฌํ˜„** - ๊ฒฐ๊ณผ: ๋ชจํ„ฐ ํšŒ์ „ ์•ˆ์ •์„ฑ ํ™•๋ณด ### 2) **์Šคํ… ๋ชจํ„ฐ ํšŒ์ „ ์‹œ ์ „์•• ๊ฐ•ํ•˜ โ†’ CDS ๊ฐ’ ์ผ์‹œ์  ํ•˜๋ฝ** - ์›์ธ: ๋ชจํ„ฐ ๊ตฌ๋™ ์‹œ ์ˆœ๊ฐ„์ ์ธ ์ „๋ฅ˜ ํ”ผํฌ โ†’ ADC ๋ ˆ์ผ ๋ณ€๋™ - ํ•ด๊ฒฐ: **๋ชจํ„ฐ ์ „์›๊ณผ MCU/์„ผ์„œ ์ „์›์„ ์™„์ „ ๋ถ„๋ฆฌ** - ๊ฒฐ๊ณผ: CDS ๊ฐ’ ์ผ์‹œ์  ํ•˜๋ฝ ํ˜„์ƒ ํ•ด๊ฒฐ ### 3) **LCD ์ž”์ƒ(ghosting) ๋ฐœ์ƒ** - ์›์ธ: ๋ฌธ์ž์—ด ๊ธธ์ด ๋ณ€ํ™”๋กœ ์ด์ „ ํ…์ŠคํŠธ ์ผ๋ถ€๊ฐ€ ๋‚จ์Œ - ํ•ด๊ฒฐ: - `lcd.clear()` ๋ฐ˜๋ณต ํ˜ธ์ถœ ์ง€์–‘ - partial update ๊ตฌ์กฐ ๋„์ž… (๋ณ€๊ฒฝ๋œ ๋ผ์ธ๋งŒ ์—…๋ฐ์ดํŠธ) - ๊ณต๋ฐฑ ํŒจ๋”ฉ์œผ๋กœ ์ž”์ƒ ์ œ๊ฑฐ - ๊ฒฐ๊ณผ: LCD ํ™”๋ฉด์ด ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€๋˜๊ณ  ์ถœ๋ ฅ ์†๋„ ํ–ฅ์ƒ ---