<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>끄적끄적 코딩 공방</title>
    <link>https://coding-shop.tistory.com/</link>
    <description>나의 코딩 일기장</description>
    <language>ko</language>
    <pubDate>Sat, 23 May 2026 11:30:22 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>코샵</managingEditor>
    <image>
      <title>끄적끄적 코딩 공방</title>
      <url>https://tistory1.daumcdn.net/tistory/5310522/attach/f6c68320fdc7470fa4af6d011a62a950</url>
      <link>https://coding-shop.tistory.com</link>
    </image>
    <item>
      <title>파이썬 시리얼 통신 완벽 가이드: pyserial과 struct 활용법</title>
      <link>https://coding-shop.tistory.com/737</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;!-- SEO 메타태그 --&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;&lt;!-- Open Graph 태그 --&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;&lt;!-- 구글 폰트 연결 --&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;&lt;div class=&quot;blog-container&quot;&gt; 
 &lt;div class=&quot;toc&quot;&gt; 
  &lt;h4 data-ke-size=&quot;size20&quot;&gt;목차&lt;/h4&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;&lt;a href=&quot;#intro&quot;&gt;1. 왜 파이썬으로 시리얼 통신을 할까?&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#pyserial&quot;&gt;2. `pyserial` - 시리얼 통신의 시작&lt;/a&gt; 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;&lt;a href=&quot;#pyserial_install&quot;&gt;2.1. 설치 및 포트 확인&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;#pyserial_basic&quot;&gt;2.2. 기본 사용법: 연결, 송신, 수신&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;#pyserial_example&quot;&gt;2.3. 간단한 예제: 아두이노와 문자열 주고받기&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#struct&quot;&gt;3. `struct` - 바이너리 데이터 다루기&lt;/a&gt; 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;&lt;a href=&quot;#struct_why&quot;&gt;3.1. 왜 문자열이 아닌 바이너리 데이터를 사용할까?&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;#struct_basic&quot;&gt;3.2. 핵심 함수: `pack`과 `unpack`&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;#struct_format&quot;&gt;3.3. 데이터 구조를 정의하는 '포맷 문자열'&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#all_together&quot;&gt;4. 실전 예제: `pyserial`과 `struct`로 센서 데이터 받기&lt;/a&gt; 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;&lt;a href=&quot;#arduino_code&quot;&gt;4.1. 아두이노 코드: 정수와 실수를 struct로 전송&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;#python_code&quot;&gt;4.2. 파이썬 코드: 수신 후 struct로 해석&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#conclusion&quot;&gt;5. 결론&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; 
 &lt;/div&gt; 
 &lt;h2 id=&quot;intro&quot; data-ke-size=&quot;size26&quot;&gt;1. 왜 파이썬으로 시리얼 통신을 할까?&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;아두이노, 라즈베리파이, 각종 산업용 장비 등 많은 하드웨어는 &lt;b&gt;시리얼 통신(Serial Communication)&lt;/b&gt;을 통해 외부와 데이터를 주고받습니다. 파이썬은 쉽고 강력한 pyserial 라이브러리를 제공하여 이러한 장치들과 손쉽게 통신할 수 있는 환경을 제공합니다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;단순한 텍스트를 넘어 온도, 습도 같은 센서 값이나 모터 제어 명령 등 정수, 실수 형태의 데이터를 주고받을 때는 바이너리(binary) 형식으로 변환하는 과정이 필요합니다. 이때 struct 모듈이 빛을 발합니다. 이 두 가지를 조합하면 매우 안정적이고 효율적인 데이터 통신이 가능합니다.&lt;/p&gt; 
 &lt;h2 id=&quot;pyserial&quot; data-ke-size=&quot;size26&quot;&gt;2. pyserial - 시리얼 통신의 시작&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;pyserial은 파이썬에서 시리얼 포트(COM 포트)를 제어하기 위한 표준 라이브러리입니다.&lt;/p&gt; 
 &lt;h3 id=&quot;pyserial_install&quot; data-ke-size=&quot;size23&quot;&gt;2.1. 설치 및 포트 확인&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;먼저 pip을 이용해 pyserial을 설치합니다.&lt;/p&gt; 
 &lt;pre class=&quot;cmake&quot;&gt;&lt;code&gt;pip install pyserial&lt;/code&gt;&lt;/pre&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;설치 후, 장치가 어떤 COM 포트에 연결되었는지 확인해야 합니다.&lt;/p&gt; 
 &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
  &lt;li&gt;&lt;b&gt;Windows:&lt;/b&gt; 장치 관리자 → 포트 (COM &amp;amp; LPT) 에서 확인 (예: `COM3`)&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;Linux:&lt;/b&gt; 터미널에서 `ls /dev/tty*` 명령어로 확인 (예: `/dev/ttyUSB0` 또는 `/dev/ttyACM0`)&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;macOS:&lt;/b&gt; 터미널에서 `ls /dev/cu.*` 명령어로 확인 (예: `/dev/cu.usbmodem1411`)&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3 id=&quot;pyserial_basic&quot; data-ke-size=&quot;size23&quot;&gt;2.2. 기본 사용법: 연결, 송신, 수신&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;기본적인 사용법은 매우 간단합니다. `serial.Serial` 객체를 생성하고, `write()`와 `read()` 메서드를 사용하면 됩니다.&lt;/p&gt; 
 &lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;import serial
import time

# 시리얼 포트와 보드레이트를 설정하여 객체 생성
# 포트 이름은 실제 연결된 포트에 맞게 수정해야 함
# 보드레이트(baudrate)는 장치와 동일하게 설정해야 함
ser = serial.Serial('COM3', 9600, timeout=1)

# 데이터 보내기 (bytes 형태로 인코딩 필요)
ser.write(b'Hello Arduino\n')

# 잠시 대기
time.sleep(1)

# 데이터 읽기
if ser.in_waiting &amp;gt; 0:
    # readline()은 \n을 만날 때까지 읽음
    line = ser.readline().decode('utf-8').rstrip()
    print(line)

# 포트 닫기
ser.close()&lt;/code&gt;&lt;/pre&gt; 
 &lt;div class=&quot;warning-box&quot;&gt; 
  &lt;h4 data-ke-size=&quot;size20&quot;&gt;`write()`는 바이트(bytes)를 보냅니다!&lt;/h4&gt; 
  &lt;p data-ke-size=&quot;size16&quot;&gt;파이썬3부터 문자열과 바이트가 명확히 구분됩니다. `ser.write()`로 데이터를 보낼 때는 반드시 바이트 형태로 보내야 합니다. 문자열 앞에 `b`를 붙이거나 (`b'hello'`), `.encode()` 메서드를 사용 (`'hello'.encode('utf-8')`)하여 바이트로 변환할 수 있습니다.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;h3 id=&quot;pyserial_example&quot; data-ke-size=&quot;size23&quot;&gt;2.3. 간단한 예제: 아두이노와 문자열 주고받기&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 '1'을 보내면 LED를 켜고, '0'을 보내면 끄는 간단한 예제입니다.&lt;/p&gt; 
 &lt;h4 data-ke-size=&quot;size20&quot;&gt;아두이노 코드&lt;/h4&gt; 
 &lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
  if (Serial.available() &amp;gt; 0) {
    char data = Serial.read();
    if (data == '1') {
      digitalWrite(13, HIGH);
      Serial.println(&quot;LED ON&quot;);
    } else if (data == '0') {
      digitalWrite(13, LOW);
      Serial.println(&quot;LED OFF&quot;);
    }
  }
}&lt;/code&gt;&lt;/pre&gt; 
 &lt;h4 data-ke-size=&quot;size20&quot;&gt;파이썬 코드&lt;/h4&gt; 
 &lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;import serial
ser = serial.Serial('COM3', 9600)

ser.write(b'1') # LED 켜기
response = ser.readline().decode().strip()
print(f&quot;Arduino says: {response}&quot;)

ser.close()&lt;/code&gt;&lt;/pre&gt; 
 &lt;h2 id=&quot;struct&quot; data-ke-size=&quot;size26&quot;&gt;3. struct - 바이너리 데이터 다루기&lt;/h2&gt; 
 &lt;h3 id=&quot;struct_why&quot; data-ke-size=&quot;size23&quot;&gt;3.1. 왜 문자열이 아닌 바이너리 데이터를 사용할까?&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;문자열 &quot;3.14&quot;는 4바이트를 차지하지만, 실제 4바이트 실수(float)는 훨씬 더 정밀한 값을 표현할 수 있습니다. 여러 센서 데이터를 보낼 때 &quot;temp:25.5,humi:60.2&quot;처럼 문자열로 보내면 파싱(parsing) 과정이 번거롭고 데이터 크기도 커집니다. `struct`를 사용해 정수, 실수 등을 정해진 규격의 바이트 덩어리(struct)로 만들어 보내면, 파싱 없이 바로 데이터로 변환할 수 있어 효율적입니다.&lt;/p&gt; 
 &lt;h3 id=&quot;struct_basic&quot; data-ke-size=&quot;size23&quot;&gt;3.2. 핵심 함수: `pack`과 `unpack`&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;`struct` 모듈의 핵심은 두 함수입니다.&lt;/p&gt; 
 &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
  &lt;li&gt;&lt;code&gt;struct.pack(format, v1, v2, ...)&lt;/code&gt;: 주어진 포맷에 따라 값들을 바이트 객체로 &lt;b&gt;압축(packing)&lt;/b&gt;합니다.&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;struct.unpack(format, buffer)&lt;/code&gt;: 바이트 객체를 주어진 포맷에 따라 값들의 튜플로 &lt;b&gt;해제(unpacking)&lt;/b&gt;합니다.&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3 id=&quot;struct_format&quot; data-ke-size=&quot;size23&quot;&gt;3.3. 데이터 구조를 정의하는 '포맷 문자열'&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;`pack`과 `unpack`의 첫 인자인 포맷 문자열은 데이터의 구조, 순서, 크기를 정의합니다.&lt;/p&gt; 
 &lt;table data-ke-align=&quot;alignLeft&quot;&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;문자&lt;/th&gt; 
    &lt;th&gt;C 타입&lt;/th&gt; 
    &lt;th&gt;파이썬 타입&lt;/th&gt; 
    &lt;th&gt;크기(byte)&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/td&gt; 
    &lt;td colspan=&quot;2&quot;&gt;리틀 엔디안 (Little-endian)&lt;/td&gt; 
    &lt;td&gt;-&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;B&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;unsigned char&lt;/td&gt; 
    &lt;td&gt;integer&lt;/td&gt; 
    &lt;td&gt;1&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;h&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;short&lt;/td&gt; 
    &lt;td&gt;integer&lt;/td&gt; 
    &lt;td&gt;2&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;i&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;int&lt;/td&gt; 
    &lt;td&gt;integer&lt;/td&gt; 
    &lt;td&gt;4&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;f&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;float&lt;/td&gt; 
    &lt;td&gt;float&lt;/td&gt; 
    &lt;td&gt;4&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 포맷 &lt;code&gt;'&amp;lt;Bf'&lt;/code&gt;는 '리틀 엔디안 방식으로, 1바이트 부호 없는 정수(&lt;code&gt;B&lt;/code&gt;) 1개와 4바이트 실수(&lt;code&gt;f&lt;/code&gt;) 1개가 순서대로 있다'는 의미입니다.&lt;/p&gt; 
 &lt;h2 id=&quot;all_together&quot; data-ke-size=&quot;size26&quot;&gt;4. 실전 예제: `pyserial`과 `struct`로 센서 데이터 받기&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;아두이노가 LED 상태(0 또는 1)와 가상의 온도 값(실수)을 `struct`를 이용해 파이썬으로 보내는 예제입니다.&lt;/p&gt; 
 &lt;h3 id=&quot;arduino_code&quot; data-ke-size=&quot;size23&quot;&gt;4.1. 아두이노 코드: 정수와 실수를 struct로 전송&lt;/h3&gt; 
 &lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;// 데이터 구조체 정의
struct SensorData {
  byte ledState;     // 1바이트 정수
  float temperature; // 4바이트 실수
};

SensorData data;

void setup() {
  Serial.begin(9600);
  data.ledState = 1; // 초기 LED 상태
}

void loop() {
  // 가상의 온도 값 생성
  data.temperature = 20.0 + (millis() % 1000) / 100.0;

  // 구조체를 바이트 배열로 전송
  Serial.write((byte*)&amp;amp;data, sizeof(data));

  delay(1000);
}&lt;/code&gt;&lt;/pre&gt; 
 &lt;h3 id=&quot;python_code&quot; data-ke-size=&quot;size23&quot;&gt;4.2. 파이썬 코드: 수신 후 struct로 해석&lt;/h3&gt; 
 &lt;pre class=&quot;python&quot;&gt;&lt;code&gt;import serial
import struct

# 포맷 문자열 (아두이노 struct와 일치해야 함)
# &amp;lt; : Little-endian
# B : unsigned char (1 byte)
# f : float (4 bytes)
data_format = '&amp;lt;Bf'
data_size = struct.calcsize(data_format) # 포맷의 총 바이트 크기 계산 (5)

ser = serial.Serial('COM3', 9600)

print(f&quot;Waiting for {data_size} bytes of data...&quot;)

while True:
    if ser.in_waiting &amp;gt;= data_size:
        # 정확히 필요한 바이트 수만큼 읽기
        packet = ser.read(data_size)

        # unpack을 사용하여 바이트를 데이터로 변환
        # 결과는 튜플로 반환됨
        unpacked_data = struct.unpack(data_format, packet)

        led_state = unpacked_data[0]
        temperature = unpacked_data[1]

        print(f&quot;Received -&amp;gt; LED State: {led_state}, Temperature: {temperature:.2f} C&quot;)

ser.close() # 실제로는 루프를 빠져나올 로직이 필요
&lt;/code&gt;&lt;/pre&gt; 
 &lt;div class=&quot;success-box&quot;&gt; 
  &lt;h4 data-ke-size=&quot;size20&quot;&gt;`struct.calcsize()`의 중요성&lt;/h4&gt; 
  &lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 읽을 때 `ser.read(struct.calcsize(format))` 처럼 정확한 크기를 지정하면, 데이터가 깨지거나 동기화가 맞지 않는 문제를 예방할 수 있습니다. 통신 프로토콜을 설계할 때 매우 유용한 함수입니다.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;h2 id=&quot;conclusion&quot; data-ke-size=&quot;size26&quot;&gt;5. 결론&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;파이썬으로 하드웨어와 시리얼 통신을 할 때 `pyserial`은 통신 채널을, `struct`는 데이터의 형식을 담당하는 환상의 조합입니다.&lt;/p&gt; 
 &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
  &lt;li&gt;&lt;b&gt;간단한 제어 신호나 텍스트&lt;/b&gt;는 `pyserial`만으로 충분합니다.&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;여러 종류의 센서 데이터나 수치 데이터&lt;/b&gt;를 주고받을 때는 `struct`를 함께 사용하면 훨씬 간결하고 안정적인 코드를 작성할 수 있습니다.&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이 가이드를 바탕으로 여러분의 파이썬 프로젝트와 다양한 하드웨어를 성공적으로 연결해보시길 바랍니다.&lt;/p&gt; &lt;!-- 관련 태그 --&gt; 
 &lt;div style=&quot;margin-top: 40px; padding-top: 20px; border-top: 1px solid #eee; text-align: center; font-size: 15px; color: #7f8c8d;&quot;&gt; 
  &lt;p data-ke-size=&quot;size16&quot;&gt;#파이썬 #pyserial #struct #시리얼통신 #아두이노 #PythonSerial #BinaryData&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;</description>
      <category>파이썬/Basic</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/737</guid>
      <comments>https://coding-shop.tistory.com/737#entry737comment</comments>
      <pubDate>Mon, 20 Oct 2025 12:01:08 +0900</pubDate>
    </item>
    <item>
      <title>PLC 주소 체계 완벽 가이드 (%IX, %QX, %MW)와 Modbus 매핑</title>
      <link>https://coding-shop.tistory.com/736</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;!-- SEO 메타태그 --&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;&lt;!-- Open Graph 태그 --&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;&lt;!-- 구글 폰트 연결 --&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;&lt;div class=&quot;blog-container&quot;&gt; 
 &lt;div class=&quot;toc&quot;&gt; 
  &lt;h4 data-ke-size=&quot;size20&quot;&gt;목차&lt;/h4&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;&lt;a href=&quot;#intro&quot;&gt;1. 서론: PLC 주소, 왜 알아야 할까?&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#structure&quot;&gt;2. PLC 주소의 기본 구조&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#examples&quot;&gt;3. 실전! PLC 주소 해석하기&lt;/a&gt; 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;&lt;a href=&quot;#ex1&quot;&gt;3.1. `%IX0.0.0` - 디지털 입력&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;#ex2&quot;&gt;3.2. `%QX0.0.1` - 디지털 출력&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;#ex3&quot;&gt;3.3. `%MW119` - 내부 메모리&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#components&quot;&gt;4. 주소 구성 요소 요약&lt;/a&gt; 
    &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
     &lt;li&gt;&lt;a href=&quot;#area&quot;&gt;4.1. 영역 (I, Q, M)&lt;/a&gt;&lt;/li&gt; 
     &lt;li&gt;&lt;a href=&quot;#datatype&quot;&gt;4.2. 데이터 타입 (X, B, W, D)&lt;/a&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#modbus&quot;&gt;5. 핵심 활용: Modbus 주소 매핑&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#conclusion&quot;&gt;6. 결론&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; 
 &lt;/div&gt; 
 &lt;h2 id=&quot;intro&quot; data-ke-size=&quot;size26&quot;&gt;1. 서론: PLC 주소, 왜 알아야 할까?&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;스마트팩토리와 공장 자동화의 두뇌 역할을 하는 &lt;b&gt;PLC(Programmable Logic Controller)&lt;/b&gt;. PLC 프로그래밍의 가장 첫걸음은 바로 '주소(Address)'를 이해하는 것입니다. 센서의 신호를 읽고, 모터를 제어하는 모든 작업은 이 주소를 통해 이루어집니다. &lt;code&gt;%IX0.0.0&lt;/code&gt;, &lt;code&gt;%MW119&lt;/code&gt; 처럼 암호같이 보이는 주소들이 무엇을 의미하는지 모른다면 PLC의 기능을 제대로 활용할 수 없습니다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 IEC 61131-3 표준에 기반한 PLC 주소 체계를 명확하게 분석하고, 더 나아가 HMI나 SCADA 시스템 연동에 필수적인 &lt;b&gt;Modbus 통신 주소 매핑&lt;/b&gt; 방법까지 알아보겠습니다.&lt;/p&gt; 
 &lt;h2 id=&quot;structure&quot; data-ke-size=&quot;size26&quot;&gt;2. PLC 주소의 기본 구조&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;PLC 주소는 일정한 규칙을 가지고 있습니다. 가장 일반적인 형식은 다음과 같습니다.&lt;/p&gt; 
 &lt;div class=&quot;info-box&quot;&gt;
  &lt;b&gt;기본 형식: &lt;/b&gt; &lt;code&gt;%[영역][데이터타입][크기].[경로]&lt;/code&gt;
 &lt;/div&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;각 부분은 다음과 같은 의미를 가집니다.&lt;/p&gt; 
 &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
  &lt;li&gt;&lt;code&gt;%&lt;/code&gt;: PLC 주소임을 나타내는 접두사입니다.&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;영역&lt;/b&gt;: 데이터가 어디에 속하는지를 나타냅니다. (입력, 출력, 내부 메모리 등)&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;데이터타입/크기&lt;/b&gt;: 데이터의 종류를 정의합니다. (비트, 바이트, 워드 등)&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;경로&lt;/b&gt;: 해당 영역에서의 구체적인 위치(번호)를 나타냅니다.&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h2 id=&quot;examples&quot; data-ke-size=&quot;size26&quot;&gt;3. 실전! PLC 주소 해석하기&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가장 흔하게 접하는 주소 세 가지를 예시로 그 구조를 자세히 살펴보겠습니다.&lt;/p&gt; 
 &lt;h3 id=&quot;ex1&quot; data-ke-size=&quot;size23&quot;&gt;3.1. `%IX0.0.0` - 디지털 입력 (Input)&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;센서, 푸시 버튼 스위치 등 외부 장치로부터 신호를 받는 '디지털 입력' 주소입니다.&lt;/p&gt; 
 &lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;% I X 0 . 0 . 0
│ │ │ │   │   │
│ │ │ │   │   └─ 비트(Bit) 번호 (0)
│ │ │ │   └───── 바이트(Byte) 번호 (0)
│ │ │ └───────── 워드(Word) 번호 (0)
│ │ └─────────── X = 비트 단위 (1 bit)
│ └───────────── I = Input (입력 영역)
└─────────────── PLC 주소 접두사
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;의미:&lt;/b&gt; 입력(I) 영역의 비트(X) 단위 데이터로, 0번 워드의 0번 바이트에 있는 0번 비트를 의미합니다. 즉, 가장 첫 번째 디지털 입력 접점입니다.&lt;/p&gt; 
 &lt;h3 id=&quot;ex2&quot; data-ke-size=&quot;size23&quot;&gt;3.2. `%QX0.0.1` - 디지털 출력 (Output)&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;램프, 모터, 릴레이 등 외부 장치로 신호를 보내 제어하는 '디지털 출력' 주소입니다.&lt;/p&gt; 
 &lt;pre class=&quot;gcode&quot;&gt;&lt;code&gt;% Q X 0 . 0 . 1
│ │ │ │   │   │
│ │ │ │   │   └─ 비트(Bit) 번호 (1)
│ │ │ │   └───── 바이트(Byte) 번호 (0)
│ │ │ └───────── 워드(Word) 번호 (0)
│ │ └─────────── X = 비트 단위 (1 bit)
│ └───────────── Q = Output (출력 영역)
└─────────────── PLC 주소 접두사
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;의미:&lt;/b&gt; 출력(Q) 영역의 0번 워드, 0번 바이트의 1번 비트입니다. 0번부터 시작하므로, 이것은 두 번째 디지털 출력 접점을 나타냅니다.&lt;/p&gt; 
 &lt;h3 id=&quot;ex3&quot; data-ke-size=&quot;size23&quot;&gt;3.3. `%MW119` - 내부 메모리 (Memory Word)&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;PLC 내부에서 연산 결과를 저장하거나 데이터를 임시로 보관하는 '내부 메모리' 주소입니다.&lt;/p&gt; 
 &lt;pre class=&quot;gcode&quot;&gt;&lt;code&gt;% M W 119
│ │ │ │
│ │ │ └─ 워드(Word) 번호 (119번째)
│ │ └─── W = 워드 단위 (16 bit)
│ └───── M = Memory (내부 메모리 영역)
└─────── PLC 주소 접두사
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;의미:&lt;/b&gt; 내부 메모리(M) 영역의 16비트 워드(W) 단위 데이터로, 119번째 메모리 워드 공간을 의미합니다. 이 공간에는 보통 -32768 ~ 32767 범위의 정수 값을 저장할 수 있습니다.&lt;/p&gt; 
 &lt;h2 id=&quot;components&quot; data-ke-size=&quot;size26&quot;&gt;4. 주소 구성 요소 요약&lt;/h2&gt; 
 &lt;h3 id=&quot;area&quot; data-ke-size=&quot;size23&quot;&gt;4.1. 영역 (Area)&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;주소의 첫 글자는 데이터가 속한 물리적 또는 논리적 공간을 정의합니다.&lt;/p&gt; 
 &lt;table data-ke-align=&quot;alignLeft&quot;&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;코드&lt;/th&gt; 
    &lt;th&gt;의미&lt;/th&gt; 
    &lt;th&gt;설명&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;I&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;Input&lt;/td&gt; 
    &lt;td&gt;디지털 입력 모듈. 센서, 스위치 등의 상태를 읽습니다.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;Q&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;Output&lt;/td&gt; 
    &lt;td&gt;디지털 출력 모듈. 릴레이, 밸브, 램프 등을 제어합니다.&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;M&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;Memory&lt;/td&gt; 
    &lt;td&gt;PLC 내부 메모리. 연산 중간값, 설정값 등을 저장하는 변수 공간입니다.&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;h3 id=&quot;datatype&quot; data-ke-size=&quot;size23&quot;&gt;4.2. 데이터 타입 (Data Type / Size)&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;영역 코드 다음 글자는 데이터의 크기를 정의합니다.&lt;/p&gt; 
 &lt;table data-ke-align=&quot;alignLeft&quot;&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;코드&lt;/th&gt; 
    &lt;th&gt;타입&lt;/th&gt; 
    &lt;th&gt;크기&lt;/th&gt; 
    &lt;th&gt;범위 예시&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;X&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;Bit&lt;/td&gt; 
    &lt;td&gt;1 bit&lt;/td&gt; 
    &lt;td&gt;0 또는 1 (FALSE/TRUE)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;B&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;Byte&lt;/td&gt; 
    &lt;td&gt;8 bits&lt;/td&gt; 
    &lt;td&gt;0 ~ 255&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;W&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;Word&lt;/td&gt; 
    &lt;td&gt;16 bits&lt;/td&gt; 
    &lt;td&gt;-32768 ~ 32767&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;D&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;Double Word&lt;/td&gt; 
    &lt;td&gt;32 bits&lt;/td&gt; 
    &lt;td&gt;-2,147,483,648 ~ 2,147,483,647&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;h2 id=&quot;modbus&quot; data-ke-size=&quot;size26&quot;&gt;5. 핵심 활용: Modbus 주소 매핑&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;PLC의 데이터를 외부 HMI, SCADA 시스템이나 다른 장비에서 읽고 쓰려면 &lt;b&gt;Modbus&lt;/b&gt;와 같은 표준 통신 프로토콜을 사용해야 합니다. 이때 PLC 내부 주소를 Modbus 주소로 변환(매핑)하는 규칙을 알아야 합니다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Modbus는 기능 코드(Function Code)를 사용하여 어떤 종류의 데이터를 읽을지 결정합니다. PLC 주소와 Modbus 주소의 일반적인 매핑 관계는 다음과 같습니다.&lt;/p&gt; 
 &lt;table data-ke-align=&quot;alignLeft&quot;&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;PLC 주소&lt;/th&gt; 
    &lt;th&gt;Modbus 기능 코드&lt;/th&gt; 
    &lt;th&gt;Modbus 주소 (10진수)&lt;/th&gt; 
    &lt;th&gt;설명&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;%IX0.0.0&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;FC 02 (Read Discrete Inputs)&lt;/td&gt; 
    &lt;td&gt;0&lt;/td&gt; 
    &lt;td&gt;첫 번째 디지털 입력 (읽기 전용)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;%IX0.0.1&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;FC 02&lt;/td&gt; 
    &lt;td&gt;1&lt;/td&gt; 
    &lt;td&gt;두 번째 디지털 입력 (읽기 전용)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;%QX0.0.0&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;FC 01 (Read Coils)&lt;/td&gt; 
    &lt;td&gt;0&lt;/td&gt; 
    &lt;td&gt;첫 번째 디지털 출력 (읽기/쓰기 가능)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;%QX0.0.1&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;FC 01&lt;/td&gt; 
    &lt;td&gt;1&lt;/td&gt; 
    &lt;td&gt;두 번째 디지털 출력 (읽기/쓰기 가능)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;%MW119&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;FC 03 (Read Holding Registers)&lt;/td&gt; 
    &lt;td&gt;119&lt;/td&gt; 
    &lt;td&gt;119번 메모리 워드 (읽기/쓰기 가능)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;b&gt;%MW120&lt;/b&gt;&lt;/td&gt; 
    &lt;td&gt;FC 03&lt;/td&gt; 
    &lt;td&gt;120&lt;/td&gt; 
    &lt;td&gt;120번 메모리 워드 (읽기/쓰기 가능)&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;div class=&quot;info-box&quot;&gt;
  &lt;b&gt;Key Point:&lt;/b&gt; 일반적으로 PLC 메모리 워드 주소(&lt;code&gt;%MW[번호]&lt;/code&gt;)는 Modbus Holding Register 주소(FC 03)와 1:1로 매핑되는 경우가 많습니다. 예를 들어 `%MW100`은 Modbus 주소 100번에 해당합니다. (단, PLC 제조사나 설정에 따라 오프셋이 있을 수 있습니다.)
 &lt;/div&gt; 
 &lt;h2 id=&quot;conclusion&quot; data-ke-size=&quot;size26&quot;&gt;6. 결론&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;PLC 주소 체계는 자동화 시스템의 가장 기본적인 언어입니다. &lt;code&gt;%I&lt;/code&gt;는 눈과 귀(입력), &lt;code&gt;%Q&lt;/code&gt;는 손과 발(출력), &lt;code&gt;%M&lt;/code&gt;은 머릿속(메모리)에 해당한다고 생각하면 이해하기 쉽습니다. 이 주소 체계를 명확히 이해하고, Modbus 매핑 규칙까지 파악한다면 PLC를 훨씬 더 깊이 있게 다룰 수 있게 될 것입니다. 현장의 설비를 제어하고 모니터링하는 데 이 가이드가 튼튼한 기초가 되기를 바랍니다.&lt;/p&gt; &lt;!-- 관련 태그 --&gt; 
 &lt;div style=&quot;margin-top: 40px; padding-top: 20px; border-top: 1px solid #eee; text-align: center; font-size: 15px; color: #7f8c8d;&quot;&gt; 
  &lt;p data-ke-size=&quot;size16&quot;&gt;#PLC #PLC주소 #자동제어 #Modbus #스마트팩토리 #IEC61131&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;</description>
      <category>하드웨어</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/736</guid>
      <comments>https://coding-shop.tistory.com/736#entry736comment</comments>
      <pubDate>Mon, 20 Oct 2025 12:00:49 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 터미널 WiFi 연결 완벽 정복: nmcli &amp;amp; nmtui 사용법</title>
      <link>https://coding-shop.tistory.com/735</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;!-- SEO 메타태그 --&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;&lt;!-- Open Graph 태그 --&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;&lt;!-- 구글 폰트 연결 --&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;&lt;div class=&quot;blog-container&quot;&gt; 
 &lt;div class=&quot;toc&quot;&gt; 
  &lt;h4 data-ke-size=&quot;size20&quot;&gt;목차&lt;/h4&gt; 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;&lt;a href=&quot;#intro&quot;&gt;1. 서론: 왜 터미널에서 WiFi를?&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#scan&quot;&gt;2. 주변 WiFi 네트워크 검색하기&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#connect&quot;&gt;3. WiFi 네트워크에 연결하기&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#status&quot;&gt;4. 연결 상태 확인하기&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#manage&quot;&gt;5. 저장된 WiFi 연결 관리하기&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#radio&quot;&gt;6. WiFi 어댑터 켜고 끄기&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#nmtui&quot;&gt;7. 더 쉬운 방법: 텍스트 UI `nmtui`&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;#conclusion&quot;&gt;8. 결론&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; 
 &lt;/div&gt; 
 &lt;h2 id=&quot;intro&quot; data-ke-size=&quot;size26&quot;&gt;1. 서론: 왜 터미널에서 WiFi를?&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이나 개인 서버, 또는 GUI(그래픽 사용자 인터페이스) 없이 설치된 리눅스 환경에서는 마우스 클릭으로 네트워크에 연결할 수 없습니다. 이때 필요한 것이 바로 &lt;b&gt;NetworkManager&lt;/b&gt;의 커맨드라인 인터페이스(CLI)인 &lt;code&gt;nmcli&lt;/code&gt;입니다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;nmcli&lt;/code&gt;를 사용하면 터미널에서 몇 가지 명령어만으로 WiFi를 검색, 연결, 관리하는 모든 작업을 수행할 수 있어 매우 강력하고 효율적입니다. 이 글에서는 &lt;code&gt;nmcli&lt;/code&gt;의 핵심 사용법과, 조금 더 사용자 친화적인 텍스트 UI(TUI) 도구인 &lt;code&gt;nmtui&lt;/code&gt;까지 알아보겠습니다.&lt;/p&gt; 
 &lt;div class=&quot;info-box&quot;&gt;
  &lt;b&gt;사전 조건:&lt;/b&gt; 이 명령어들은 대부분의 최신 리눅스 배포판에 기본으로 설치된 NetworkManager를 사용합니다. 만약 NetworkManager가 설치되어 있지 않다면, `sudo apt install network-manager` (Debian/Ubuntu) 또는 `sudo yum install NetworkManager` (CentOS/RHEL) 명령어로 설치해주세요.
 &lt;/div&gt; 
 &lt;h2 id=&quot;scan&quot; data-ke-size=&quot;size26&quot;&gt;2. 주변 WiFi 네트워크 검색하기&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 할 일은 주변에 어떤 WiFi 네트워크(AP)가 있는지 확인하는 것입니다.&lt;/p&gt; 
 &lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;nmcli device wifi list&lt;/code&gt;&lt;/pre&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이 명령을 실행하면 다음과 같이 사용 가능한 WiFi 목록이 출력됩니다.&lt;/p&gt; 
 &lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #f0f0f0; color: #333;&quot;&gt;&lt;code&gt;IN-USE  SSID        MODE   CHAN  RATE        SIGNAL  BARS  SECURITY
*       MyHomeWiFi  Infra  11    270 Mbit/s  90      ▂▄▆█  WPA2
        CafeWiFi    Infra  6     130 Mbit/s  75      ▂▄▆_  WPA2
        PublicWiFi  Infra  1     54 Mbit/s   50      ▂▄__  --
        &lt;/code&gt;&lt;/pre&gt; 
 &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
  &lt;li&gt;&lt;b&gt;IN-USE:&lt;/b&gt; 현재 연결된 네트워크를 `*`로 표시합니다.&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;SSID:&lt;/b&gt; 네트워크 이름입니다.&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;SIGNAL:&lt;/b&gt; 신호 세기입니다. (높을수록 좋음)&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;SECURITY:&lt;/b&gt; 보안 방식입니다. (WPA2, WPA3 등)&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h2 id=&quot;connect&quot; data-ke-size=&quot;size26&quot;&gt;3. WiFi 네트워크에 연결하기&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;연결하려는 네트워크의 SSID(이름)와 비밀번호를 알면 다음 명령어로 바로 연결할 수 있습니다.&lt;/p&gt; 
 &lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;sudo nmcli device wifi connect &quot;SSID이름&quot; password &quot;비밀번호&quot;&lt;/code&gt;&lt;/pre&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, SSID가 &quot;MyHomeWiFi&quot;이고 비밀번호가 &quot;mypassword123&quot;이라면 다음과 같이 입력합니다.&lt;/p&gt; 
 &lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;sudo nmcli device wifi connect &quot;MyHomeWiFi&quot; password &quot;mypassword123&quot;&lt;/code&gt;&lt;/pre&gt; 
 &lt;div class=&quot;success-box&quot;&gt;
  &lt;b&gt;자동 저장 및 재연결:&lt;/b&gt; 이 명령으로 한 번 연결하면 네트워크 정보가 자동으로 저장됩니다. 나중에 재부팅하거나 해당 네트워크 범위에 다시 들어가면 자동으로 연결됩니다.
 &lt;/div&gt; 
 &lt;h2 id=&quot;status&quot; data-ke-size=&quot;size26&quot;&gt;4. 연결 상태 확인하기&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;네트워크가 잘 연결되었는지, 현재 IP 주소는 무엇인지 확인하는 방법입니다.&lt;/p&gt; 
 &lt;h3 data-ke-size=&quot;size23&quot;&gt;4.1. 현재 활성화된 연결 정보 보기&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가장 유용한 명령어로, 현재 활성화된 연결의 상세 정보를 보여줍니다.&lt;/p&gt; 
 &lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;nmcli connection show --active&lt;/code&gt;&lt;/pre&gt; 
 &lt;h3 data-ke-size=&quot;size23&quot;&gt;4.2. 모든 네트워크 장치 상태 보기&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;WiFi, 이더넷 등 시스템의 모든 네트워크 인터페이스 상태를 한눈에 볼 수 있습니다.&lt;/p&gt; 
 &lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;nmcli device status&lt;/code&gt;&lt;/pre&gt; 
 &lt;h2 id=&quot;manage&quot; data-ke-size=&quot;size26&quot;&gt;5. 저장된 WiFi 연결 관리하기&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;시스템에 저장된 모든 네트워크 프로필을 확인하고 관리할 수 있습니다.&lt;/p&gt; 
 &lt;h3 data-ke-size=&quot;size23&quot;&gt;5.1. 저장된 모든 연결 목록 보기&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 연결했던 모든 네트워크의 프로필 목록을 보여줍니다.&lt;/p&gt; 
 &lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;nmcli connection show&lt;/code&gt;&lt;/pre&gt; 
 &lt;h3 data-ke-size=&quot;size23&quot;&gt;5.2. 저장된 연결 삭제하기&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;더 이상 사용하지 않거나 비밀번호가 변경된 네트워크 프로필을 삭제합니다.&lt;/p&gt; 
 &lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sudo nmcli connection delete &quot;SSID이름&quot;&lt;/code&gt;&lt;/pre&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 &quot;CafeWiFi&quot; 프로필을 삭제하려면 다음과 같이 입력합니다.&lt;/p&gt; 
 &lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sudo nmcli connection delete &quot;CafeWiFi&quot;&lt;/code&gt;&lt;/pre&gt; 
 &lt;h2 id=&quot;radio&quot; data-ke-size=&quot;size26&quot;&gt;6. WiFi 어댑터 켜고 끄기&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;물리적인 WiFi 하드웨어 자체를 끄거나 켤 수 있습니다. 비행기 모드와 유사한 기능입니다.&lt;/p&gt; 
 &lt;h3 data-ke-size=&quot;size23&quot;&gt;WiFi 기능 비활성화&lt;/h3&gt; 
 &lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;sudo nmcli radio wifi off&lt;/code&gt;&lt;/pre&gt; 
 &lt;h3 data-ke-size=&quot;size23&quot;&gt;WiFi 기능 활성화&lt;/h3&gt; 
 &lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;sudo nmcli radio wifi on&lt;/code&gt;&lt;/pre&gt; 
 &lt;h2 id=&quot;nmtui&quot; data-ke-size=&quot;size26&quot;&gt;7. 더 쉬운 방법: 텍스트 UI `nmtui`&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;nmcli&lt;/code&gt;의 다양한 옵션이 복잡하게 느껴진다면, &lt;code&gt;nmtui&lt;/code&gt;를 사용해보세요. &lt;code&gt;nmtui&lt;/code&gt;는 터미널에서 실행되는 텍스트 기반의 그래픽 인터페이스로, 키보드 방향키와 Enter 키만으로 쉽게 네트워크를 설정할 수 있습니다.&lt;/p&gt; 
 &lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R1LDO/btsRai8Wxbd/HxSdnWank5uJWw0d2DstOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R1LDO/btsRai8Wxbd/HxSdnWank5uJWw0d2DstOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R1LDO/btsRai8Wxbd/HxSdnWank5uJWw0d2DstOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR1LDO%2FbtsRai8Wxbd%2FHxSdnWank5uJWw0d2DstOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;601&quot; height=&quot;460&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;sudo nmtui&lt;/code&gt;&lt;/pre&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;위 명령을 실행하면 다음과 같은 메뉴가 나타납니다.&lt;/p&gt; 
 &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
  &lt;li&gt;&lt;b&gt;Edit a connection:&lt;/b&gt; 저장된 연결의 IP 주소, DNS 등 상세 설정 변경&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;Activate a connection:&lt;/b&gt; 사용 가능한 네트워크 목록에서 연결 활성화&lt;/li&gt; 
  &lt;li&gt;&lt;b&gt;Set system hostname:&lt;/b&gt; 시스템의 호스트 이름 변경&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;nmtui&lt;/code&gt;는 특히 WiFi 목록을 보고 선택하여 연결하는 과정이 매우 직관적이어서, &lt;code&gt;nmcli&lt;/code&gt; 명령어가 익숙하지 않은 사용자에게 매우 유용합니다.&lt;/p&gt; 
 &lt;h2 id=&quot;conclusion&quot; data-ke-size=&quot;size26&quot;&gt;8. 결론&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이제 여러분은 리눅스 터미널 환경에서 WiFi를 자유자재로 다룰 수 있게 되었습니다. &lt;code&gt;nmcli&lt;/code&gt;는 스크립트를 통한 자동화에 특히 유용하며, &lt;code&gt;nmtui&lt;/code&gt;는 복잡한 명령어 없이 빠르고 직관적인 설정이 필요할 때 빛을 발합니다. 이 두 가지 도구를 잘 활용하여 어떤 리눅스 환경에서든 끊김 없는 네트워크 환경을 구축하시길 바랍니다.&lt;/p&gt; &lt;!-- 관련 태그 --&gt; 
 &lt;div style=&quot;margin-top: 40px; padding-top: 20px; border-top: 1px solid #eee; text-align: center; font-size: 15px; color: #7f8c8d;&quot;&gt; 
  &lt;p data-ke-size=&quot;size16&quot;&gt;#Linux #WiFi #nmcli #nmtui #NetworkManager #Ubuntu #CentOS #RaspberryPi&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;</description>
      <category>Linux</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/735</guid>
      <comments>https://coding-shop.tistory.com/735#entry735comment</comments>
      <pubDate>Mon, 20 Oct 2025 12:00:23 +0900</pubDate>
    </item>
    <item>
      <title>비닐하우스 개폐기 원격 제어</title>
      <link>https://coding-shop.tistory.com/734</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SMPS를 통해 DC 개폐기 모터에 전원 공급&lt;br&gt;전자접촉기를 통해 전극 변경을 통해 정회전, 역회전 동작&lt;br&gt;라즈베리파이를 통해 릴레이 제어&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1317&quot; data-origin-height=&quot;1756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n5pdM/btsQvZKjYR0/kujPkcuaMhCcVlkqaSDkS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n5pdM/btsQvZKjYR0/kujPkcuaMhCcVlkqaSDkS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n5pdM/btsQvZKjYR0/kujPkcuaMhCcVlkqaSDkS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn5pdM%2FbtsQvZKjYR0%2FkujPkcuaMhCcVlkqaSDkS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1317&quot; height=&quot;1756&quot; data-origin-width=&quot;1317&quot; data-origin-height=&quot;1756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1647&quot; data-origin-height=&quot;2196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bev5KN/btsQxJzzaZV/DcT9WN4i7ePMgGIK2H70AK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bev5KN/btsQxJzzaZV/DcT9WN4i7ePMgGIK2H70AK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bev5KN/btsQxJzzaZV/DcT9WN4i7ePMgGIK2H70AK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbev5KN%2FbtsQxJzzaZV%2FDcT9WN4i7ePMgGIK2H70AK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1647&quot; height=&quot;2196&quot; data-origin-width=&quot;1647&quot; data-origin-height=&quot;2196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=rSIydyBg_wA&quot; data-video-thumbnail=&quot;https://blog.kakaocdn.net/dna/kADEg/hyZINUrNES/AAAAAAAAAAAAAAAAAAAAAPldMKY1xS6OqUQYauDNAQ7-gZHq8PFbGE3BL-PnX-_L/img.jpg?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1759244399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=2kMPnRQfijnwj4E3uW3djWZ9RyE%3D&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-video-title=&quot;비닐하우스 개폐기 원격제어&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/rSIydyBg_wA&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>스마트팜</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/734</guid>
      <comments>https://coding-shop.tistory.com/734#entry734comment</comments>
      <pubDate>Fri, 12 Sep 2025 14:50:26 +0900</pubDate>
    </item>
    <item>
      <title>USB 카메라 해상도와 FPS 확인하는 완벽 가이드</title>
      <link>https://coding-shop.tistory.com/733</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- SEO 메타태그 --&gt;
&lt;p&gt;&lt;/p&gt;
&lt;!-- Open Graph 태그 --&gt;
&lt;p&gt;&lt;/p&gt;
&lt;!-- 구글 폰트 연결 --&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;
        body { font-family: 'Noto Sans KR', sans-serif; line-height: 1.8; color: #333; margin: 0; padding: 0; background-color: #f9f9f9; }
        .blog-container { max-width: 800px; margin: 20px auto; padding: 30px; background-color: #fff; box-shadow: 0 2px 15px rgba(0,0,0,0.08); }
        .blog-title { font-size: 30px; font-weight: 700; color: #2c3e50; text-align: center; margin-bottom: 25px; }
        h2 { font-size: 24px; margin-top: 45px; margin-bottom: 20px; color: #2980b9; padding-bottom: 10px; border-bottom: 2px solid #3498db; }
        h3 { font-size: 20px; margin-top: 30px; margin-bottom: 15px; color: #2c3e50; }
        p { margin-bottom: 1.2em; font-size: 16px; }
        ul, ol { padding-left: 20px; }
        li { margin-bottom: 10px; }
        pre { background-color: #2d3436; color: #dfe6e9; padding: 15px; border-radius: 5px; overflow-x: auto; margin: 20px 0; font-family: 'Consolas', monospace; font-size: 15px; }
        code { background-color: #ecf0f1; padding: 3px 6px; border-radius: 4px; color: #e74c3c; font-family: 'Consolas', monospace; }
        .highlight-box { background-color: #e9f5ff; border-left: 5px solid #3498db; padding: 15px 20px; margin: 25px 0; border-radius: 5px; }
        .warning-box { background-color: #fff8e1; border-left: 5px solid #f9a825; padding: 15px 20px; margin: 25px 0; border-radius: 5px; }
        .success-box { background-color: #e8f5e8; border-left: 5px solid #4caf50; padding: 15px 20px; margin: 25px 0; border-radius: 5px; }
        .info-box { background-color: #f0f8ff; border-left: 5px solid #2196f3; padding: 15px 20px; margin: 25px 0; border-radius: 5px; }
        table { width: 100%; border-collapse: collapse; margin: 20px 0; }
        th, td { border: 1px solid #ddd; padding: 12px; text-align: left; }
        th { background-color: #f2f2f2; font-weight: bold; }
        .command-box { background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 5px; margin: 15px 0; font-family: 'Consolas', monospace; }
        .result-box { background-color: #f8f9fa; border: 1px solid #e9ecef; padding: 15px; border-radius: 5px; margin: 15px 0; font-family: 'Consolas', monospace; font-size: 14px; }
    &lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;blog-container&quot;&gt;
&lt;p style=&quot;text-align: center; color: #7f8c8d; font-size: 18px; margin-bottom: 30px;&quot; data-ke-size=&quot;size16&quot;&gt;FFmpeg와 v4l2를 활용한 실무 중심 카메라 스펙 분석&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; border: 1px solid #eaecef; padding: 15px 25px; margin: 30px 0;&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;목차&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#intro&quot;&gt;1. USB 카메라 스펙 확인이 중요한 이유&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#tools&quot;&gt;2. 필요한 도구 설치하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#device_check&quot;&gt;3. USB 카메라 연결 확인&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#basic_commands&quot;&gt;4. 기본 확인 명령어&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#detailed_specs&quot;&gt;5. 상세 스펙 확인하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#result_analysis&quot;&gt;6. 결과 해석하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#ffmpeg_test&quot;&gt;7. FFmpeg로 실제 테스트&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#rtsp_optimization&quot;&gt;8. RTSP 스트리밍 최적화&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#troubleshooting&quot;&gt;9. 문제 해결&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#practical_examples&quot;&gt;10. 실무 활용 예시&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;intro&quot; data-ke-size=&quot;size26&quot;&gt;1. USB 카메라 스펙 확인이 중요한 이유&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USB 카메라를 사용한 프로젝트에서 올바른 해상도와 FPS 설정은 &lt;b&gt;성능, 품질, 안정성&lt;/b&gt;에 직접적인 영향을 미칩니다. 잘못된 설정은 다음과 같은 문제를 야기할 수 있습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;성능 저하:&lt;/b&gt; 지원하지 않는 고해상도로 설정 시 프레임 드롭 발생&lt;/li&gt;
&lt;li&gt;&lt;b&gt;품질 저하:&lt;/b&gt; 부적절한 코덱 선택으로 인한 화질 손실&lt;/li&gt;
&lt;li&gt;&lt;b&gt;호환성 문제:&lt;/b&gt; 특정 해상도/FPS 조합이 지원되지 않아 오류 발생&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리소스 낭비:&lt;/b&gt; 불필요하게 높은 설정으로 CPU/메모리 사용량 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;info-box&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;  이 가이드에서 배울 것&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;USB 카메라의 실제 지원 사양 확인 방법&lt;/li&gt;
&lt;li&gt;FFmpeg와 v4l2 도구의 효과적인 활용법&lt;/li&gt;
&lt;li&gt;RTSP 스트리밍을 위한 최적 설정 선택&lt;/li&gt;
&lt;li&gt;실제 프로젝트에 바로 적용 가능한 명령어들&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;tools&quot; data-ke-size=&quot;size26&quot;&gt;2. 필요한 도구 설치하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USB 카메라 스펙을 확인하기 위해 필요한 도구들을 설치해보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2-1. v4l2-utils 설치&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# Ubuntu/Debian 계열 sudo apt update sudo apt install v4l2-utils # CentOS/RHEL 계열 sudo yum install v4l2-utils # 또는 sudo dnf install v4l2-utils&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2-2. FFmpeg 설치&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# Ubuntu/Debian 계열 sudo apt install ffmpeg # CentOS/RHEL 계열 sudo yum install ffmpeg # 또는 sudo dnf install ffmpeg&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2-3. 설치 확인&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 설치된 도구들 버전 확인 v4l2-ctl --version ffmpeg -version&lt;/div&gt;
&lt;h2 id=&quot;device_check&quot; data-ke-size=&quot;size26&quot;&gt;3. USB 카메라 연결 확인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 USB 카메라가 올바르게 연결되어 있는지 확인해야 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3-1. USB 장치 확인&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# USB 장치 목록 확인 lsusb&lt;/div&gt;
&lt;div class=&quot;result-box&quot;&gt;Bus 001 Device 003: ID 046d:0825 Logitech, Inc. Webcam C270 Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3-2. 비디오 장치 확인&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 비디오 장치 파일 확인 ls /dev/video*&lt;/div&gt;
&lt;div class=&quot;result-box&quot;&gt;/dev/video0 /dev/video1&lt;/div&gt;
&lt;div class=&quot;highlight-box&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;장치 파일 이해하기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;/dev/video0&lt;/code&gt;: 메인 비디오 스트림 (일반적으로 사용)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/dev/video1&lt;/code&gt;: 메타데이터나 제어용 스트림&lt;/li&gt;
&lt;li&gt;여러 카메라가 연결된 경우 &lt;code&gt;/dev/video2&lt;/code&gt;, &lt;code&gt;/dev/video3&lt;/code&gt; 등으로 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;basic_commands&quot; data-ke-size=&quot;size26&quot;&gt;4. 기본 확인 명령어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카메라의 기본 정보를 확인하는 명령어들입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4-1. 카메라 기본 정보&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 카메라 기본 정보 확인 v4l2-ctl -d /dev/video0 --info&lt;/div&gt;
&lt;div class=&quot;result-box&quot;&gt;Driver Info: Driver name : uvcvideo Card type : Logitech Webcam C270 Bus info : usb-0000:00:1d.0-1.1 Driver version : 5.4.0-74-generic Capabilities : 0x84200001 Video Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4-2. 현재 설정 확인&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 현재 카메라 설정 확인 v4l2-ctl -d /dev/video0 --get-fmt-video&lt;/div&gt;
&lt;div class=&quot;result-box&quot;&gt;Format Video Capture: Width/Height : 640/480 Pixel Format : 'MJPG' Field : None Bytes per Line : 0 Size Image : 46080 Colorspace : sRGB Transfer Function : Default (maps to sRGB) YCbCr Encoding : Default (maps to sRGB) Quantization : Default (maps to Full Range) Flags : 0x00000000&lt;/div&gt;
&lt;h2 id=&quot;detailed_specs&quot; data-ke-size=&quot;size26&quot;&gt;5. 상세 스펙 확인하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 중요한 부분입니다. 카메라가 지원하는 모든 해상도와 FPS를 확인해보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5-1. v4l2-ctl로 상세 확인 (권장)&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 모든 지원 해상도와 FPS 확인 v4l2-ctl -d /dev/video0 --list-formats-ext&lt;/div&gt;
&lt;div class=&quot;result-box&quot;&gt;ioctl: VIDIOC_ENUM_FMT Type: Video Capture [0]: 'MJPG' (Motion-JPEG, compressed) Size: Discrete 1920x1080 Interval: Discrete 0.033s (30.00 fps) Interval: Discrete 0.067s (15.00 fps) Size: Discrete 1280x720 Interval: Discrete 0.033s (30.00 fps) Interval: Discrete 0.067s (15.00 fps) Size: Discrete 640x480 Interval: Discrete 0.017s (60.00 fps) Interval: Discrete 0.033s (30.00 fps) Interval: Discrete 0.067s (15.00 fps) [1]: 'YUYV' (YUYV 4:2:2) Size: Discrete 1920x1080 Interval: Discrete 0.200s (5.00 fps) Size: Discrete 1280x720 Interval: Discrete 0.133s (7.50 fps) Size: Discrete 640x480 Interval: Discrete 0.033s (30.00 fps)&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5-2. FFmpeg로 확인&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# FFmpeg로 지원 포맷 확인 ffmpeg -f v4l2 -list_formats all -i /dev/video0&lt;/div&gt;
&lt;div class=&quot;result-box&quot;&gt;[video4linux2,v4l2 @ 0x55a8b8c0] Raw : yuyv422 : YUYV 4:2:2 [video4linux2,v4l2 @ 0x55a8b8c0] Compressed: mjpeg : Motion-JPEG [video4linux2,v4l2 @ 0x55a8b8c0] Supported size for the pixelformat 'yuyv422': Size: Discrete 1920x1080 Size: Discrete 1280x720 Size: Discrete 640x480 [video4linux2,v4l2 @ 0x55a8b8c0] Supported size for the pixelformat 'mjpeg': Size: Discrete 1920x1080 Size: Discrete 1280x720 Size: Discrete 640x480&lt;/div&gt;
&lt;h2 id=&quot;result_analysis&quot; data-ke-size=&quot;size26&quot;&gt;6. 결과 해석하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 결과를 어떻게 해석하고 활용하는지 알아보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6-1. 포맷별 특징&lt;/h3&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;포맷&lt;/th&gt;
&lt;th&gt;특징&lt;/th&gt;
&lt;th&gt;장점&lt;/th&gt;
&lt;th&gt;단점&lt;/th&gt;
&lt;th&gt;권장 용도&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;MJPEG&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;압축된 비디오 포맷&lt;/td&gt;
&lt;td&gt;높은 FPS 지원, CPU 부하 적음&lt;/td&gt;
&lt;td&gt;파일 크기 큼, 품질 손실&lt;/td&gt;
&lt;td&gt;실시간 스트리밍, 녹화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;YUYV&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;압축되지 않은 Raw 포맷&lt;/td&gt;
&lt;td&gt;최고 품질, 후처리 용이&lt;/td&gt;
&lt;td&gt;높은 대역폭, 낮은 FPS&lt;/td&gt;
&lt;td&gt;고품질 녹화, 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6-2. 해상도별 FPS 분석&lt;/h3&gt;
&lt;div class=&quot;info-box&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;  실제 결과 분석 예시&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MJPEG 포맷:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1920x1080: 30fps, 15fps 지원&lt;/li&gt;
&lt;li&gt;1280x720: 30fps, 15fps 지원&lt;/li&gt;
&lt;li&gt;640x480: 60fps, 30fps, 15fps 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;YUYV 포맷:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1920x1080: 5fps만 지원 (대역폭 제한)&lt;/li&gt;
&lt;li&gt;1280x720: 7.5fps 지원&lt;/li&gt;
&lt;li&gt;640x480: 30fps 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;ffmpeg_test&quot; data-ke-size=&quot;size26&quot;&gt;7. FFmpeg로 실제 테스트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인된 설정이 실제로 동작하는지 테스트해보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7-1. 기본 테스트 명령어&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 5초간 녹화하여 설정 테스트 ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 -t 5 test.mp4&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7-2. 다양한 설정 테스트&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 고해상도 테스트 ffmpeg -f v4l2 -framerate 30 -video_size 1920x1080 -i /dev/video0 -t 3 test_hd.mp4 # 고프레임레이트 테스트 ffmpeg -f v4l2 -framerate 60 -video_size 640x480 -i /dev/video0 -t 3 test_60fps.mp4 # YUYV 포맷 테스트 ffmpeg -f v4l2 -pix_fmt yuyv422 -framerate 30 -video_size 640x480 -i /dev/video0 -t 3 test_yuyv.mp4&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7-3. 실시간 미리보기&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 실시간 미리보기 (X11 필요) ffplay -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0&lt;/div&gt;
&lt;div class=&quot;success-box&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 테스트 성공 기준&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오류 메시지 없이 녹화 완료&lt;/li&gt;
&lt;li&gt;지정한 해상도와 FPS로 정상 녹화&lt;/li&gt;
&lt;li&gt;생성된 파일이 정상적으로 재생 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;rtsp_optimization&quot; data-ke-size=&quot;size26&quot;&gt;8. RTSP 스트리밍 최적화&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인된 스펙을 바탕으로 RTSP 스트리밍에 최적화된 설정을 선택해보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8-1. 용도별 권장 설정&lt;/h3&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;용도&lt;/th&gt;
&lt;th&gt;해상도&lt;/th&gt;
&lt;th&gt;FPS&lt;/th&gt;
&lt;th&gt;포맷&lt;/th&gt;
&lt;th&gt;비트레이트&lt;/th&gt;
&lt;th&gt;FFmpeg 명령어&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;고품질 스트리밍&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;1920x1080&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;MJPEG&lt;/td&gt;
&lt;td&gt;4Mbps&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-video_size 1920x1080 -framerate 30&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;균형 스트리밍&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;1280x720&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;MJPEG&lt;/td&gt;
&lt;td&gt;2Mbps&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-video_size 1280x720 -framerate 30&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;저지연 스트리밍&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;640x480&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;YUYV&lt;/td&gt;
&lt;td&gt;1Mbps&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-video_size 640x480 -framerate 30 -pix_fmt yuyv422&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8-2. RTSP 서버 설정 예시&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 고품질 RTSP 스트리밍 ffmpeg -f v4l2 -video_size 1920x1080 -framerate 30 -i /dev/video0 \ -c:v libx264 -preset ultrafast -tune zerolatency \ -b:v 4M -maxrate 4M -bufsize 8M \ -f rtsp rtsp://localhost:8554/stream # 균형 RTSP 스트리밍 ffmpeg -f v4l2 -video_size 1280x720 -framerate 30 -i /dev/video0 \ -c:v libx264 -preset fast -tune zerolatency \ -b:v 2M -maxrate 2M -bufsize 4M \ -f rtsp rtsp://localhost:8554/stream&lt;/div&gt;
&lt;h2 id=&quot;troubleshooting&quot; data-ke-size=&quot;size26&quot;&gt;9. 문제 해결&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자주 발생하는 문제들과 해결 방법을 알아보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9-1. 일반적인 오류&lt;/h3&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;오류 메시지&lt;/th&gt;
&lt;th&gt;원인&lt;/th&gt;
&lt;th&gt;해결 방법&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cannot find a valid device&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;카메라가 연결되지 않음&lt;/td&gt;
&lt;td&gt;USB 연결 확인, &lt;code&gt;ls /dev/video*&lt;/code&gt;로 장치 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Device or resource busy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;다른 프로그램이 카메라 사용 중&lt;/td&gt;
&lt;td&gt;다른 프로그램 종료 후 재시도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Invalid argument&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;지원하지 않는 해상도/FPS&lt;/td&gt;
&lt;td&gt;&lt;code&gt;v4l2-ctl --list-formats-ext&lt;/code&gt;로 지원 사양 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Permission denied&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;권한 부족&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo&lt;/code&gt; 사용 또는 사용자를 video 그룹에 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9-2. 권한 문제 해결&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 현재 사용자를 video 그룹에 추가 sudo usermod -a -G video $USER # 그룹 변경 적용 (재로그인 필요) newgrp video # 또는 sudo로 실행 sudo ffmpeg -f v4l2 -i /dev/video0 test.mp4&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9-3. 성능 최적화&lt;/h3&gt;
&lt;div class=&quot;warning-box&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;⚠️ 성능 문제 해결&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;CPU 사용률 높음:&lt;/b&gt; MJPEG 대신 H.264 사용 고려&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메모리 부족:&lt;/b&gt; 해상도나 FPS를 낮춤&lt;/li&gt;
&lt;li&gt;&lt;b&gt;지연 발생:&lt;/b&gt; 버퍼 크기 조정 또는 프리셋 변경&lt;/li&gt;
&lt;li&gt;&lt;b&gt;화질 저하:&lt;/b&gt; 비트레이트 증가 또는 프리셋을 slower로 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;practical_examples&quot; data-ke-size=&quot;size26&quot;&gt;10. 실무 활용 예시&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 프로젝트에서 활용할 수 있는 구체적인 예시들을 소개합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;10-1. 스마트팜 모니터링 시스템&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 온실 모니터링용 고품질 스트리밍 ffmpeg -f v4l2 -video_size 1920x1080 -framerate 30 -i /dev/video0 \ -c:v libx264 -preset medium -tune zerolatency \ -b:v 3M -maxrate 3M -bufsize 6M \ -f rtsp rtsp://192.168.1.100:8554/greenhouse # 야간 모니터링용 저조도 최적화 ffmpeg -f v4l2 -video_size 1280x720 -framerate 15 -i /dev/video0 \ -c:v libx264 -preset fast -tune zerolatency \ -b:v 1M -maxrate 1M -bufsize 2M \ -f rtsp rtsp://192.168.1.100:8554/night&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;10-2. 보안 카메라 시스템&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;# 실시간 감시용 고프레임레이트 ffmpeg -f v4l2 -video_size 640x480 -framerate 60 -i /dev/video0 \ -c:v libx264 -preset ultrafast -tune zerolatency \ -b:v 2M -maxrate 2M -bufsize 4M \ -f rtsp rtsp://192.168.1.100:8554/security # 녹화용 고해상도 ffmpeg -f v4l2 -video_size 1920x1080 -framerate 30 -i /dev/video0 \ -c:v libx264 -preset slow -crf 18 \ -b:v 5M -maxrate 5M -bufsize 10M \ -f mp4 /var/recordings/recording_$(date +%Y%m%d_%H%M%S).mp4&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;10-3. 자동화된 스펙 확인 스크립트&lt;/h3&gt;
&lt;div class=&quot;command-box&quot;&gt;#!/bin/bash # camera_spec_check.sh echo &quot;=== USB 카메라 스펙 확인 ===&quot; echo &quot;장치: $1&quot; echo &quot;&quot; echo &quot;1. 기본 정보:&quot; v4l2-ctl -d $1 --info echo &quot;&quot; echo &quot;2. 지원 해상도 및 FPS:&quot; v4l2-ctl -d $1 --list-formats-ext echo &quot;&quot; echo &quot;3. 현재 설정:&quot; v4l2-ctl -d $1 --get-fmt-video echo &quot;&quot; echo &quot;4. 테스트 녹화 (5초):&quot; ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i $1 -t 5 test_$(date +%Y%m%d_%H%M%S).mp4 -y echo &quot;테스트 완료!&quot;&lt;/div&gt;
&lt;div class=&quot;success-box&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;  실무 적용 팁&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;자동화:&lt;/b&gt; 스크립트를 만들어 반복 작업을 자동화하세요&lt;/li&gt;
&lt;li&gt;&lt;b&gt;모니터링:&lt;/b&gt; 시스템 리소스 사용량을 지속적으로 모니터링하세요&lt;/li&gt;
&lt;li&gt;&lt;b&gt;백업:&lt;/b&gt; 최적 설정을 문서화하고 백업해두세요&lt;/li&gt;
&lt;li&gt;&lt;b&gt;테스트:&lt;/b&gt; 실제 환경에서 충분한 테스트를 거치세요&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;마무리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USB 카메라의 해상도와 FPS를 정확히 파악하는 것은 성공적인 멀티미디어 프로젝트의 첫걸음입니다. 이 가이드를 통해 확인한 스펙을 바탕으로 프로젝트에 최적화된 설정을 선택할 수 있을 것입니다. 특히 스마트팜이나 보안 시스템과 같은 실시간 비디오 처리가 필요한 프로젝트에서는 이러한 기본 작업이 매우 중요합니다.&lt;/p&gt;
&lt;div class=&quot;info-box&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;  추가 학습 자료&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;FFmpeg 공식 문서: &lt;a href=&quot;https://ffmpeg.org/documentation.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ffmpeg.org/documentation.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;v4l2 공식 문서: &lt;a href=&quot;https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/v4l2.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/v4l2.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;RTSP 스트리밍 가이드: &lt;a href=&quot;https://trac.ffmpeg.org/wiki/StreamingGuide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://trac.ffmpeg.org/wiki/StreamingGuide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 관련 태그 --&gt;
&lt;div style=&quot;margin-top: 40px; padding-top: 20px; border-top: 1px solid #eee; text-align: center; font-size: 15px; color: #7f8c8d;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#USB카메라 #해상도확인 #FPS확인 #FFmpeg #v4l2 #RTSP스트리밍 #MJPEG #YUYV #카메라스펙 #멀티미디어&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>하드웨어</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/733</guid>
      <comments>https://coding-shop.tistory.com/733#entry733comment</comments>
      <pubDate>Thu, 11 Sep 2025 18:09:42 +0900</pubDate>
    </item>
    <item>
      <title>라즈베리파이 WiFi 고정 IP 설정 완벽 가이드</title>
      <link>https://coding-shop.tistory.com/732</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;
&lt;!-- SEO 메타태그 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;
&lt;!-- Open Graph 태그 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;
&lt;!-- 구글 폰트 연결 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;blog-container&quot;&gt;&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; border: 1px solid #eaecef; padding: 15px 25px; margin: 30px 0;&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;목차&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#intro&quot;&gt;1. 왜 고정 IP가 필요할까?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#choose_ip&quot;&gt;2. 내게 맞는 IP 주소 정하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#method1&quot;&gt;3. 방법 1: dhcpcd.conf 파일 설정 (전통적이고 확실한 방법)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#method2&quot;&gt;4. 방법 2: NetworkManager 사용 (최신 OS의 표준)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#method3&quot;&gt;5. 방법 3: interfaces 파일 설정 (구형 OS 방식)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#apply&quot;&gt;6. 설정 적용 및 확인하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#troubleshooting&quot;&gt;7. 문제 해결 및 백업&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#conclusion&quot;&gt;8. 결론: 어떤 방법을 선택해야 할까?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;intro&quot; data-ke-size=&quot;size26&quot;&gt;1. 왜 고정 IP가 필요할까?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라즈베리파이를 서버(웹, 파일, 게임 등)로 사용하거나, 매번 같은 주소로 SSH 원격 접속을 하고 싶을 때, 고정 IP 설정은 필수입니다. IP가 계속 바뀌는 유동 IP 환경에서는 라즈베리파이의 주소를 매번 새로 찾아야 하는 번거로움이 있기 때문입니다. 고정 IP를 설정하면 재부팅해도 항상 같은 주소를 유지하여 안정적인 운영이 가능해집니다.&lt;/p&gt;
&lt;h2 id=&quot;choose_ip&quot; data-ke-size=&quot;size26&quot;&gt;2. 내게 맞는 IP 주소 정하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고정 IP를 설정하기 전, 내 네트워크 환경에 맞는 정보를 알아야 합니다. 터미널에 &lt;code&gt;ip route show&lt;/code&gt; 또는 &lt;code&gt;ip route | grep default&lt;/code&gt;를 입력하여 현재 IP 대역과 게이트웨이(공유기) 주소를 확인하세요.&lt;/p&gt;
&lt;div class=&quot;highlight-box&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;IP 주소 선택 요령&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;ip_address (고정 IP 주소):&lt;/b&gt; 다른 기기와 충돌하지 않는 주소를 선택해야 합니다. 보통 공유기(게이트웨이)의 IP가 &lt;code&gt;192.168.1.1&lt;/code&gt;이라면, &lt;code&gt;192.168.1.100&lt;/code&gt; ~ &lt;code&gt;192.168.1.200&lt;/code&gt; 사이의 값을 사용하는 것이 안전합니다. &lt;code&gt;/24&lt;/code&gt;는 서브넷 마스크(255.255.255.0)를 의미합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;routers (게이트웨이):&lt;/b&gt; 대부분의 경우 여러분의 인터넷 공유기 주소입니다. (예: &lt;code&gt;192.168.1.1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;domain_name_servers (DNS 서버):&lt;/b&gt; 인터넷 주소를 찾아주는 서버입니다. 잘 모를 경우 구글 DNS(&lt;code&gt;8.8.8.8&lt;/code&gt;)나 통신사 DNS(공유기 주소와 동일)를 사용하면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;method1&quot; data-ke-size=&quot;size26&quot;&gt;3. 방법 1: &lt;code&gt;dhcpcd.conf&lt;/code&gt; 파일 설정 (전통적이고 확실한 방법)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법은 라즈베리파이 OS에서 오랫동안 사용되어 온 표준적인 고정 IP 설정 방식입니다. 터미널 환경(CLI)에서 작업하는 사용자에게 가장 권장됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1단계: 설정 파일 열기&lt;/h3&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;sudo nano /etc/dhcpcd.conf&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2단계: 고정 IP 정보 추가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일의 가장 아래쪽에 다음 내용을 추가합니다. 각 값은 자신의 네트워크 환경에 맞게 수정하세요.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# WiFi 고정 IP 설정
interface wlan0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8 8.8.4.4&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정 후 &lt;code&gt;Ctrl + X&lt;/code&gt;, &lt;code&gt;Y&lt;/code&gt;, &lt;code&gt;Enter&lt;/code&gt;를 차례로 눌러 저장하고 종료합니다.&lt;/p&gt;
&lt;h2 id=&quot;method2&quot; data-ke-size=&quot;size26&quot;&gt;4. 방법 2: NetworkManager 사용 (최신 OS의 표준)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최신 라즈베리파이 OS(Bookworm 이상)는 기본적으로 NetworkManager를 사용하여 네트워크를 관리합니다. GUI 환경을 사용하거나, 터미널에서 nmcli 명령어를 선호하는 사용자에게 적합합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;방법 2-1: GUI로 설정하기&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;바탕화면 오른쪽 상단의 WiFi 아이콘을 우클릭하여 &quot;Advanced Options&quot; 또는 &quot;Edit Connections&quot;를 선택합니다.&lt;/li&gt;
&lt;li&gt;현재 연결된 WiFi 네트워크를 선택하고 편집(Edit) 버튼을 누릅니다.&lt;/li&gt;
&lt;li&gt;&quot;IPv4 Settings&quot; 탭으로 이동합니다.&lt;/li&gt;
&lt;li&gt;Method를 &quot;Manual&quot;로 변경합니다.&lt;/li&gt;
&lt;li&gt;Addresses 섹션에서 &quot;Add&quot; 버튼을 누르고 Address(192.168.1.100), Netmask(255.255.255.0), Gateway(192.168.1.1)를 입력합니다.&lt;/li&gt;
&lt;li&gt;DNS servers 필드에 &lt;code&gt;8.8.8.8,8.8.4.4&lt;/code&gt;와 같이 DNS 서버 주소를 입력하고 저장합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;방법 2-2: 터미널(nmcli)로 설정하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;code&gt;nmcli con show&lt;/code&gt; 명령어로 현재 연결된 WiFi의 정확한 이름을 확인합니다. (예: &quot;MyHomeWiFi&quot;)&lt;/p&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;# 고정 IP, 게이트웨이, DNS, 수동 방식 설정 (한 줄씩 실행)
sudo nmcli con modify &quot;WiFi네트워크명&quot; ipv4.addresses 192.168.1.100/24
sudo nmcli con modify &quot;WiFi네트워크명&quot; ipv4.gateway 192.168.1.1
sudo nmcli con modify &quot;WiFi네트워크명&quot; ipv4.dns &quot;8.8.8.8,8.8.4.4&quot;
sudo nmcli con modify &quot;WiFi네트워크명&quot; ipv4.method manual&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;method3&quot; data-ke-size=&quot;size26&quot;&gt;5. 방법 3: &lt;code&gt;interfaces&lt;/code&gt; 파일 설정 (구형 OS 방식)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법은 구형 라즈비안(Buster 이전)이나 일부 커스텀 OS에서 사용되던 방식입니다. 최신 OS에서는 &lt;code&gt;dhcpcd.conf&lt;/code&gt;나 NetworkManager 사용이 권장되므로, 참고용으로만 알아두세요.&lt;/p&gt;
&lt;div class=&quot;warning-box&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의:&lt;/b&gt; 최신 라즈베리파이 OS에서 이 방법을 사용하면 네트워크 설정이 꼬일 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# /etc/network/interfaces 파일 내용 예시
auto wlan0
iface wlan0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
    dns-nameservers 8.8.8.8 8.8.4.4&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;apply&quot; data-ke-size=&quot;size26&quot;&gt;6. 설정 적용 및 확인하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정을 마친 후에는 변경 사항을 시스템에 적용해야 합니다.&lt;/p&gt;
&lt;pre class=&quot;vala&quot;&gt;&lt;code&gt;# dhcpcd.conf 수정한 경우
sudo systemctl restart dhcpcd

# NetworkManager 수정한 경우 (연결 재시작)
sudo nmcli con down &quot;WiFi네트워크명&quot; &amp;amp;&amp;amp; sudo nmcli con up &quot;WiFi네트워크명&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적용 후 아래 명령어로 IP 주소가 올바르게 변경되었는지 확인합니다.&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;ip addr show wlan0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과에 설정한 고정 IP(&lt;code&gt;192.168.1.100&lt;/code&gt;)가 보이면 성공입니다. &lt;code&gt;ping -c 4 8.8.8.8&lt;/code&gt; 명령어로 인터넷 연결도 확인해보세요.&lt;/p&gt;
&lt;h2 id=&quot;troubleshooting&quot; data-ke-size=&quot;size26&quot;&gt;7. 문제 해결 및 백업&lt;/h2&gt;
&lt;div class=&quot;warning-box&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;네트워크 연결이 안 될 때 체크리스트&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;IP 충돌:&lt;/b&gt; 설정한 IP를 다른 기기가 이미 사용하고 있는지 확인하고, 다른 IP로 변경해보세요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;게이트웨이 오류:&lt;/b&gt; 공유기 주소가 정확한지 다시 확인하세요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DNS 오류:&lt;/b&gt; DNS 서버 주소가 올바른지 확인하거나, &lt;code&gt;1.1.1.1&lt;/code&gt;(Cloudflare) 등 다른 DNS로 변경해보세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;설정 전 백업은 필수!&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 파일을 수정하기 전에는 항상 백업하는 습관이 좋습니다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;# dhcpcd.conf 파일 백업
sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.backup

# 문제 발생 시 복구
sudo cp /etc/dhcpcd.conf.backup /etc/dhcpcd.conf
sudo systemctl restart dhcpcd&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h2 id=&quot;conclusion&quot; data-ke-size=&quot;size26&quot;&gt;8. 결론: 어떤 방법을 선택해야 할까?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 가지 방법을 모두 살펴봤지만, 대부분의 사용자에게는 가장 적합한 방법이 정해져 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;GUI 환경을 사용한다면:&lt;/b&gt; 방법 2의 &lt;b&gt;NetworkManager GUI 설정&lt;/b&gt;이 가장 직관적이고 쉽습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;터미널 환경만 사용한다면:&lt;/b&gt; 방법 1의 &lt;b&gt;&lt;code&gt;dhcpcd.conf&lt;/code&gt; 파일 수정&lt;/b&gt;이 가장 안정적이고 널리 쓰이는 방법입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;최신 OS에서 터미널을 선호한다면:&lt;/b&gt; 방법 2의 &lt;b&gt;nmcli 명령어&lt;/b&gt;를 사용하는 것이 가장 현대적인 방식입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자신의 라즈베리파이 OS 버전과 사용 환경에 맞는 방법을 선택하여, 이제부터는 항상 같은 주소로 편리하게 라즈베리파이에 접속해보세요!&lt;/p&gt;
&lt;!-- 관련 태그 --&gt;
&lt;div style=&quot;margin-top: 40px; padding-top: 20px; border-top: 1px solid #eee; text-align: center; font-size: 15px; color: #7f8c8d;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#라즈베리파이 #고정IP #WiFi설정 #dhcpcd #NetworkManager #nmcli #라즈비안 #서버구축&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>하드웨어</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/732</guid>
      <comments>https://coding-shop.tistory.com/732#entry732comment</comments>
      <pubDate>Fri, 18 Jul 2025 16:50:23 +0900</pubDate>
    </item>
    <item>
      <title>AC와 DC 완벽 이해: 전기 초보자를 위한 핵심 가이드</title>
      <link>https://coding-shop.tistory.com/731</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;
&lt;!-- SEO 메타태그 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;
&lt;!-- Open Graph 태그 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;
&lt;!-- 구글 폰트 연결 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;blog-container&quot;&gt;&lt;!-- 목차 --&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFqhmI/btsPl6cbylC/wyqARewY08t7RtPcxV8PK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFqhmI/btsPl6cbylC/wyqARewY08t7RtPcxV8PK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFqhmI/btsPl6cbylC/wyqARewY08t7RtPcxV8PK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFqhmI%2FbtsPl6cbylC%2FwyqARewY08t7RtPcxV8PK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1408&quot; height=&quot;768&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f8f9fa; border: 1px solid #eaecef; padding: 15px 25px; margin: 30px 0;&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;목차&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#intro&quot;&gt;1. 들어가며: 전기의 두 얼굴, AC와 DC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#dc&quot;&gt;2. 직류 (DC, Direct Current) - 한결같은 흐름&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#ac&quot;&gt;3. 교류 (AC, Alternating Current) - 변화무쌍한 흐름&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#war&quot;&gt;4. 전류 전쟁: 왜 우리 집 콘센트는 교류(AC)일까?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#adapter&quot;&gt;5. 어댑터의 비밀: AC를 DC로 바꾸는 이유&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#comparison&quot;&gt;6. 한눈에 보는 AC vs DC 비교&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#conclusion&quot;&gt;7. 결론: 서로 다른 역할, 모두에게 필요한 전기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;intro&quot; data-ke-size=&quot;size26&quot;&gt;1. 들어가며: 전기의 두 얼굴, AC와 DC&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 매일 스마트폰을 충전하고, TV를 보고, 컴퓨터를 사용하며 전기의 혜택 속에서 살아갑니다. 하지만 우리가 사용하는 전기에 '교류(AC)'와 '직류(DC)'라는 두 가지 종류가 있다는 사실을 알고 계셨나요? 이 둘은 전기가 흐르는 방식에 근본적인 차이가 있으며, 각각의 특성에 따라 전혀 다른 용도로 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 전기 기술의 가장 기초가 되는 AC와 DC의 개념부터 실생활 예시, 그리고 역사적인 이야기까지 알기 쉽게 풀어보겠습니다.&lt;/p&gt;
&lt;h2 id=&quot;dc&quot; data-ke-size=&quot;size26&quot;&gt;2. 직류 (DC, Direct Current) - 한결같은 흐름&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biz1iw/btsPlPobU3U/2tN5Oz5Js7BjCNp1VkHnQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biz1iw/btsPlPobU3U/2tN5Oz5Js7BjCNp1VkHnQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biz1iw/btsPlPobU3U/2tN5Oz5Js7BjCNp1VkHnQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbiz1iw%2FbtsPlPobU3U%2F2tN5Oz5Js7BjCNp1VkHnQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1408&quot; height=&quot;768&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;직류(DC)&lt;/b&gt;는 이름 그대로 전자가 항상 &lt;b&gt;일정한 방향으로만 흐르는&lt;/b&gt; 전기입니다. (+)극에서 출발해 (-)극으로, 마치 한쪽으로만 물이 흐르는 강물처럼 방향이 바뀌지 않습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;특징:&lt;/b&gt; 전압과 전류의 크기가 안정적으로 유지됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;그래프 모양:&lt;/b&gt; 시간에 따른 전압 그래프를 그리면 쭉 뻗은 직선 형태로 나타납니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;핵심 역할:&lt;/b&gt; 전력을 저장(충전)하거나 정밀한 제어가 필요한 전자회로에 사용됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;우리 주변의 DC&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DC는 생각보다 우리 가까이에 있습니다. 대부분의 '배터리'로 작동하는 기기들이 DC를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시:&lt;/b&gt; 건전지, 스마트폰 및 노트북 배터리, 보조 배터리, 자동차 배터리, 리모컨, 대부분의 전자회로 기판, 태양광 패널&lt;/p&gt;
&lt;div class=&quot;highlight-box&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기억하세요!&lt;/b&gt;&lt;br /&gt;배터리가 들어가는 제품, USB로 충전하는 제품은 대부분 &lt;b&gt;직류(DC)&lt;/b&gt;로 동작합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;ac&quot; data-ke-size=&quot;size26&quot;&gt;3. 교류 (AC, Alternating Current) - 변화무쌍한 흐름&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uJVLo/btsPliLfn0i/R3TY2P4gj03gs41i2cAks1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uJVLo/btsPliLfn0i/R3TY2P4gj03gs41i2cAks1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uJVLo/btsPliLfn0i/R3TY2P4gj03gs41i2cAks1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuJVLo%2FbtsPliLfn0i%2FR3TY2P4gj03gs41i2cAks1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1408&quot; height=&quot;768&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;교류(AC)&lt;/b&gt;는 직류와 정반대입니다. 전자가 흐르는 방향과 세기가 주기적으로, &lt;b&gt;계속해서 바뀝니다.&lt;/b&gt; (+)극과 (-)극이 계속해서 바뀌면서 파도처럼 전기가 밀려왔다 밀려가기를 반복합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;특징:&lt;/b&gt; 전압과 전류의 방향이 주기적으로 바뀝니다. 우리나라는 보통 1초에 60번 방향을 바꾸는 &lt;b&gt;60Hz(헤르츠)&lt;/b&gt;의 교류를 사용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;그래프 모양:&lt;/b&gt; 시간에 따른 전압 그래프를 그리면 물결 모양의 사인파(Sine Wave) 형태로 나타납니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;핵심 역할:&lt;/b&gt; 전압을 쉽게 바꿀 수 있어(변압) 장거리 송전에 유리합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;우리 주변의 AC&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AC는 주로 발전소에서 만들어져 가정과 사무실로 공급되는 전력입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시:&lt;/b&gt; 벽에 붙어있는 콘센트, 냉장고, 세탁기, 에어컨 등 대형 가전제품, 전등, 모터가 사용되는 기기&lt;/p&gt;
&lt;h2 id=&quot;war&quot; data-ke-size=&quot;size26&quot;&gt;4. 전류 전쟁: 왜 우리 집 콘센트는 교류(AC)일까?&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Image_fx.jpg&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpmuFv/btsPl6wqnt2/UhhWoTt2Jigh3KL1qgkV91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpmuFv/btsPl6wqnt2/UhhWoTt2Jigh3KL1qgkV91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpmuFv/btsPl6wqnt2/UhhWoTt2Jigh3KL1qgkV91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpmuFv%2FbtsPl6wqnt2%2FUhhWoTt2Jigh3KL1qgkV91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1408&quot; height=&quot;768&quot; data-filename=&quot;Image_fx.jpg&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;19세기 후반, 발명왕 &lt;b&gt;에디슨&lt;/b&gt;은 직류(DC) 시스템을, 천재 과학자 &lt;b&gt;테슬라&lt;/b&gt;는 교류(AC) 시스템을 지지하며 치열한 경쟁을 벌였습니다. 이를 '전류 전쟁(War of the Currents)'이라고 부릅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에디슨의 DC는 안전했지만, 멀리 보내면 전력 손실이 너무 커서 동네마다 발전소를 지어야 했습니다. 반면, 테슬라의 AC는 &lt;b&gt;변압기(Transformer)&lt;/b&gt;를 이용해 전압을 매우 높게 올려(고압 송전) 전력 손실을 최소화하며 아주 먼 거리까지 전기를 보낼 수 있었습니다. 결국 경제성과 효율성에서 앞선 교류(AC)가 승리하여 오늘날 전 세계의 표준 송전 방식으로 자리 잡게 되었습니다.&lt;/p&gt;
&lt;div class=&quot;warning-box&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AC의 승리 비결, 변압기!&lt;/b&gt;&lt;br /&gt;교류는 변압기를 통해 간단하게 전압을 높이거나 낮출 수 있습니다. 발전소에서 수십만 볼트의 초고압으로 전기를 보내고, 우리 집 근처 변전소에서 220V로 낮추어 안전하게 공급하는 것이 가능한 이유입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;adapter&quot; data-ke-size=&quot;size26&quot;&gt;5. 어댑터의 비밀: AC를 DC로 바꾸는 이유&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Image_fx (1).jpg&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vBvHf/btsPlQADhTT/bjr0xdMls9ywkQoilBXb50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vBvHf/btsPlQADhTT/bjr0xdMls9ywkQoilBXb50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vBvHf/btsPlQADhTT/bjr0xdMls9ywkQoilBXb50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvBvHf%2FbtsPlQADhTT%2Fbjr0xdMls9ywkQoilBXb50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1408&quot; height=&quot;768&quot; data-filename=&quot;Image_fx (1).jpg&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 한 가지 의문이 생깁니다. &quot;콘센트에서는 교류(AC)가 나오는데, 왜 스마트폰이나 노트북은 직류(DC)로 작동할까?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 이 둘을 연결해주는 장치가 &lt;b&gt;'어댑터(Adapter)'&lt;/b&gt;입니다. 우리가 흔히 '충전기'라고 부르는 것들이죠. 어댑터의 핵심 역할은 가정용 콘센트의 높은 전압의 교류(AC 220V)를 스마트폰이나 노트북 등 전자제품이 필요로 하는 낮은 전압의 직류(DC 5V, 12V 등)로 &lt;b&gt;변환(Convert)&lt;/b&gt;해주는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 어댑터의 정식 명칭은 'AC/DC 컨버터' 또는 'AC/DC 전원 어댑터'입니다.&lt;/p&gt;
&lt;h2 id=&quot;comparison&quot; data-ke-size=&quot;size26&quot;&gt;6. 한눈에 보는 AC vs DC 비교&lt;/h2&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;직류 (DC)&lt;/th&gt;
&lt;th&gt;교류 (AC)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;흐름 방향&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;항상 한 방향&lt;/td&gt;
&lt;td&gt;주기적으로 방향 전환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;전압/전류&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;일정하게 유지&lt;/td&gt;
&lt;td&gt;주기적으로 변동 (사인파)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;전압 변환&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;복잡하고 어려움&lt;/td&gt;
&lt;td&gt;변압기로 쉽고 효율적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;장거리 송전&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;전력 손실이 커서 불리&lt;/td&gt;
&lt;td&gt;전력 손실이 적어 유리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;주요 사용처&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;배터리, 전자회로, 스마트폰, 노트북, 태양광&lt;/td&gt;
&lt;td&gt;가정용 콘센트, 발전소, 대형 가전, 모터&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;conclusion&quot; data-ke-size=&quot;size26&quot;&gt;7. 결론: 서로 다른 역할, 모두에게 필요한 전기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로 AC와 DC 중 어느 하나가 절대적으로 우월한 것은 아닙니다. &lt;b&gt;장거리 송전에는 교류(AC)가, 전자기기 구동에는 직류(DC)가&lt;/b&gt; 각각의 장점을 가지고 있어 우리 삶에 모두 필수적인 역할을 하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 콘센트를 볼 때마다 먼 발전소에서 온 교류(AC)를 떠올리고, 스마트폰을 충전할 때 어댑터가 교류를 직류(DC)로 열심히 바꾸고 있다는 사실을 기억해 보세요. 복잡하게만 느껴졌던 전기가 한층 더 가깝게 느껴질 것입니다.&lt;/p&gt;
&lt;!-- 관련 태그 --&gt;
&lt;div style=&quot;margin-top: 40px; padding-top: 20px; border-top: 1px solid #eee; text-align: center; font-size: 15px; color: #7f8c8d;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#AC #DC #교류 #직류 #전기상식 #전기기초 #에디슨 #테슬라 #전류전쟁 #어댑터 #컨버터&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>하드웨어</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/731</guid>
      <comments>https://coding-shop.tistory.com/731#entry731comment</comments>
      <pubDate>Thu, 17 Jul 2025 10:06:30 +0900</pubDate>
    </item>
    <item>
      <title>코맥스 푸시풀 지문인식 도어락(CDL-615P) 후기: '신세계'급 지문인식, 설치 전 필독!</title>
      <link>https://coding-shop.tistory.com/730</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;
        body {
            font-family: 'Noto Sans KR', sans-serif;
            line-height: 1.6;
            color: #333;
            background-color: #f9f9f9;
            margin: 0;
            padding: 20px;
        }
        .container {
            max-width: 800px;
            margin: auto;
            background: #fff;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.05);
        }
        h1, h2, h3 {
            color: #2c3e50;
            font-weight: 700;
            margin-top: 1.5em;
        }
        h1 {
            text-align: center;
            font-size: 2em;
            margin-bottom: 1em;
            border-bottom: 2px solid #8e44ad;
            padding-bottom: 0.5em;
        }
        h2 {
            font-size: 1.5em;
            color: #8e44ad;
            border-left: 5px solid #8e44ad;
            padding-left: 10px;
        }
        h3 {
            font-size: 1.2em;
            color: #9b59b6;
        }
        p {
            margin-bottom: 1em;
        }
        .conclusion-box {
            background-color: #f4ecf7;
            border: 1px solid #d7bde2;
            padding: 20px;
            border-radius: 8px;
            margin-bottom: 2em;
        }
        .pros-cons {
            display: grid;
            grid-template-columns: 1fr;
            gap: 20px;
            margin-bottom: 2em;
        }
        .pros, .cons {
            padding: 20px;
            border-radius: 8px;
        }
        .pros {
            background-color: #e8f8f5;
            border-left: 5px solid #1abc9c;
        }
        .cons {
            background-color: #feeeee;
            border-left: 5px solid #e74c3c;
        }
        .pros h3, .cons h3 {
            margin-top: 0;
            display: flex;
            align-items: center;
        }
        .pros h3::before, .cons h3::before {
            margin-right: 10px;
            font-size: 1.5em;
        }
        .pros h3::before {
            content: ' ';
        }
        .cons h3::before {
            content: ' ';
        }
        ul {
            padding-left: 20px;
        }
        li {
            margin-bottom: 0.5em;
        }
        .review-quote {
            background-color: #f5f5f5;
            border-left: 4px solid #bdc3c7;
            padding: 15px;
            margin: 1em 0;
            border-radius: 4px;
            font-style: italic;
        }
        .cta-button-container {
            text-align: center;
            margin: 2em 0;
        }
        .cta-button {
            background-color: #8e44ad;
            color: white;
            padding: 15px 30px;
            text-decoration: none;
            font-size: 1.2em;
            font-weight: bold;
            border-radius: 5px;
            transition: background-color 0.3s;
            display: inline-block;
        }
        .cta-button:hover {
            background-color: #7d3c98;
        }
        .affiliate-notice {
            text-align: center;
            font-size: 0.8em;
            color: #888;
            margin-top: 2em;
        }
    &lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;container&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;509&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lBe1J/btsPkE2iAPD/e1zlRuJmEUFmSSDd2Z9I8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lBe1J/btsPkE2iAPD/e1zlRuJmEUFmSSDd2Z9I8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lBe1J/btsPkE2iAPD/e1zlRuJmEUFmSSDd2Z9I8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlBe1J%2FbtsPkE2iAPD%2Fe1zlRuJmEUFmSSDd2Z9I8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;509&quot; height=&quot;509&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;509&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p class=&quot;affiliate-notice&quot; data-ke-size=&quot;size16&quot;&gt;이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매일 누르는 비밀번호가 귀찮고, 양손에 짐이 가득할 때마다 현관문 앞에서 난감했던 경험, 다들 있으시죠? 여기 '신세계'라는 감탄사가 절로 나오는 해결책이 있습니다. 바로 &lt;b&gt;코맥스(COMMAX)의 푸시풀 지문인식 도어락 CDL-615P&lt;/b&gt;입니다. 신뢰의 가전 브랜드 코맥스가 만든 이 제품, 과연 명성대로인지 114개의 실사용 후기를 통해 꼼꼼히 확인해 봤습니다.&lt;/p&gt;
&lt;div class=&quot;conclusion-box&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론부터 말씀드립니다!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;지문인식 하나만으로도 구매 가치는 충분! 하지만 '자가 설치'라면 잠시만요.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;손이 거친 부모님도, 장난꾸러기 아이들도 한 번에 '찍' 열리는 빠르고 정확한 지문인식은 일상의 질을 바꿔줍니다. 여기에 편리한 푸시풀 방식과 합리적인 가격은 덤입니다. 다만, '무타공'이라는 단어만 믿고 섣불리 자가 설치에 도전하기 전, 반드시 우리 집 현관문 상태를 확인하고 유튜브 설치 영상을 시청하는 준비가 필요합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코맥스 도어락, 무엇이 그토록 특별할까요?&lt;/h2&gt;
&lt;div class=&quot;pros-cons&quot;&gt;
&lt;div class=&quot;pros&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  장점: 일상을 바꾸는 편리함&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;'신세계'급 지문인식:&lt;/b&gt; &quot;인식률 대박&quot;이라는 후기가 압도적입니다. 손이 거칠어도, 어떤 각도로 손가락을 대어도 1초 만에 열리는 빠르고 정확한 인식률은 이 제품의 핵심 가치입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;양손 가득 짐이 있어도 '쓱'~ 푸시풀의 편리함:&lt;/b&gt; 밖에서는 당기고 안에서는 밀기만 하면 되니, 짐을 들고 있을 때나 아이를 안고 있을 때 그 편리함이 극대화됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;믿음의 브랜드, 착한 가격:&lt;/b&gt; '코맥스'라는 브랜드가 주는 신뢰감에, 지문인식 푸시풀 기능까지 갖추고도 10만 원대의 합리적인 가격을 자랑합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;한밤중에도 OK! 놀라운 고객센터:&lt;/b&gt; &quot;자정 넘은 시간에 전화했는데도 친절하게 문제를 해결해줬다&quot;는 후기는 코맥스의 든든한 사후 지원을 보여주는 좋은 예시입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;cons&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  단점 및 설치 전 체크리스트&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;'자가 설치'의 두 얼굴:&lt;/b&gt; 쉽다는 평도 많지만, 결코 만만하게 볼 수 없습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;체크 1. 현관문 상태:&lt;/b&gt; 기존에 여러 개의 구멍이 있다면 '보강판'을 추가 구매해야 합니다. 오래된 아파트의 경우, 문틀 안쪽이 용접되어 있어 새 부품이 안 들어갈 수 있습니다. (망치와 정이 필요할 수도!)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;체크 2. 유튜브 영상 시청 필수:&lt;/b&gt; 설명서만으로는 부족합니다. 특히 '빨간 선'을 연결하는 부분은 영상을 통해 정확히 확인해야 고장을 막을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복불복 A/S 경험:&lt;/b&gt; 훌륭한 고객센터 후기도 있지만, &quot;쿠팡 설치 제품이라 유상 A/S만 가능하다&quot;는 안내를 받았다는 상반된 후기도 있어 참고가 필요합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사소한 아쉬움:&lt;/b&gt; 문이 닫히고 1~3초 후 잠기는 약간의 딜레이, 안쪽 손잡이의 잠금 버튼이 가끔 잘못 눌리는 점 등이 단점으로 꼽혔습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실제 사용자들은 이렇게 말해요  &lt;/h2&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;5개월 사용 추가 후기: 지문인식 대박 편하고 좋아요. 무거운 짐 들었을 때 손가락 하나 대기만 하면 바로 열리니 마트에서 한가득 짐 들고 와도 문 열기 세상 편해요. 비밀번호를 너무 오래 입력을 안 해서 잊어버릴 지경이네요.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;퇴근 후 설치하다 12시가 넘었는데, 혹시나 하는 마음에 고객센터에 전화했더니 그 시간에 받는 거예요! 너무 친절하게 알려주셔서 문제 해결하고 신랑이랑 둘이서 '코맥스 대박이다'는 말만 했네요.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;설치 시 중요! 부모님 댁 현관은 오래된 방화문이라... 모티스가 안 들어가서 포기할 뻔했어요. 인터넷 찾아보니 오래된 문은 용접부를 망치로 쳐서 밀어내야 하더라고요. 그렇게 하니 설치됐습니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;비밀번호의 시대는 끝났다!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코맥스 CDL-615P는 단순한 도어락 교체를 넘어, 현관을 드나드는 방식을 바꾸는 경험을 선사합니다. 설치라는 허들만 넘는다면, 빠르고 정확한 지문인식이 주는 해방감은 기대 이상일 것입니다. 우리 집 보안과 편리함, 두 마리 토끼를 모두 잡고 싶다면 최고의 선택이 될 것입니다.&lt;/p&gt;
&lt;div class=&quot;cta-button-container&quot;&gt;&lt;a class=&quot;cta-button&quot; href=&quot;https://link.coupang.com/a/cEQg5s&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코맥스 지문인식 도어락 최저가 보기&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>상품 추천</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/730</guid>
      <comments>https://coding-shop.tistory.com/730#entry730comment</comments>
      <pubDate>Wed, 16 Jul 2025 22:15:50 +0900</pubDate>
    </item>
    <item>
      <title>에어컨, 건조기 화재 불안? 멀티아 고용량 멀티탭 하나로 고민 끝!</title>
      <link>https://coding-shop.tistory.com/729</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;
        body {
            font-family: 'Noto Sans KR', sans-serif;
            line-height: 1.6;
            color: #333;
            background-color: #f9f9f9;
            margin: 0;
            padding: 20px;
        }
        .container {
            max-width: 800px;
            margin: auto;
            background: #fff;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.05);
        }
        h1, h2, h3 {
            color: #2c3e50;
            font-weight: 700;
            margin-top: 1.5em;
        }
        h1 {
            text-align: center;
            font-size: 2em;
            margin-bottom: 1em;
            border-bottom: 2px solid #e67e22;
            padding-bottom: 0.5em;
        }
        h2 {
            font-size: 1.5em;
            color: #e67e22;
            border-left: 5px solid #e67e22;
            padding-left: 10px;
        }
        h3 {
            font-size: 1.2em;
            color: #d35400;
        }
        p {
            margin-bottom: 1em;
        }
        .conclusion-box {
            background-color: #fef5e7;
            border: 1px solid #f5cba7;
            padding: 20px;
            border-radius: 8px;
            margin-bottom: 2em;
        }
        .pros-cons {
            display: grid;
            grid-template-columns: 1fr;
            gap: 20px;
            margin-bottom: 2em;
        }
        .pros, .cons {
            padding: 20px;
            border-radius: 8px;
        }
        .pros {
            background-color: #e8f8f5;
            border-left: 5px solid #1abc9c;
        }
        .cons {
            background-color: #feeeee;
            border-left: 5px solid #e74c3c;
        }
        .pros h3, .cons h3 {
            margin-top: 0;
            display: flex;
            align-items: center;
        }
        .pros h3::before, .cons h3::before {
            margin-right: 10px;
            font-size: 1.5em;
        }
        .pros h3::before {
            content: ' ';
        }
        .cons h3::before {
            content: ' ';
        }
        ul {
            padding-left: 20px;
        }
        li {
            margin-bottom: 0.5em;
        }
        .review-quote {
            background-color: #f5f5f5;
            border-left: 4px solid #bdc3c7;
            padding: 15px;
            margin: 1em 0;
            border-radius: 4px;
            font-style: italic;
        }
        .cta-button-container {
            text-align: center;
            margin: 2em 0;
        }
        .cta-button {
            background-color: #e67e22;
            color: white;
            padding: 15px 30px;
            text-decoration: none;
            font-size: 1.2em;
            font-weight: bold;
            border-radius: 5px;
            transition: background-color 0.3s;
            display: inline-block;
        }
        .cta-button:hover {
            background-color: #d35400;
        }
        .affiliate-notice {
            text-align: center;
            font-size: 0.8em;
            color: #888;
            margin-top: 2em;
        }
        @media (max-width: 600px) {
            .pros-cons {
                grid-template-columns: 1fr;
            }
        }
    &lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;container&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;509&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GCzlU/btsPlfnksUD/Ff6rHykTAlYwAsRAzueRX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GCzlU/btsPlfnksUD/Ff6rHykTAlYwAsRAzueRX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GCzlU/btsPlfnksUD/Ff6rHykTAlYwAsRAzueRX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGCzlU%2FbtsPlfnksUD%2FFf6rHykTAlYwAsRAzueRX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;509&quot; height=&quot;509&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;509&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p class=&quot;affiliate-notice&quot; data-ke-size=&quot;size16&quot;&gt;이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무더운 여름, 에어컨 없이는 단 하루도 버티기 힘들죠. 그런데 혹시 에어컨 전원을 연결한 멀티탭에서 뜨끈한 열기나 타는 냄새를 맡아보신 적 없으신가요? 전력 소모가 큰 가전제품에 일반 멀티탭을 사용하는 것은 화재의 원인이 될 수 있는 아찔한 상황입니다. 오늘은 이런 불안감을 한 번에 해결해 줄 &lt;b&gt;'멀티아 에어컨 전용 고용량 멀티탭'&lt;/b&gt;의 실사용 후기를 집중 분석해 보겠습니다.&lt;/p&gt;
&lt;div class=&quot;conclusion-box&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론부터 말씀드립니다!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;안전을 위한 가장 확실하고 저렴한 투자&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에어컨, 건조기, 세탁기, 식기세척기, 인덕션 등 전력 소모가 큰 가전을 사용하신다면, 더 이상 고민하지 마세요. 두툼한 전선과 확실한 누전/배선 차단 기능, 신뢰의 KS 인증까지. 멀티아 고용량 멀티탭은 단순한 편의용품이 아니라, 우리 집의 안전을 지키는 필수품입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;pros-cons&quot;&gt;
&lt;div class=&quot;pros&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;멀티아 멀티탭, 강력 추천하는 이유&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;화재 불안감 ZERO! 강력한 안전 기능:&lt;/b&gt; 과부하, 합선, 누전 시 자동으로 전원을 차단해주는 차단기가 있어 안심입니다. 불에 잘 타지 않는 난연 1등급 재료로 만들어져 더욱 믿음이 갑니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;만져보면 아는 '진짜' 튼튼함:&lt;/b&gt; 일반 멀티탭과는 비교도 안 되게 두꺼운 전선은 보기만 해도 든든합니다. 많은 사용자가 &quot;튼튼해 보인다&quot;는 점을 최고의 장점으로 꼽았습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;에어컨부터 세탁기, 건조기까지 OK:&lt;/b&gt; 최대 4000W까지 사용 가능하여 전력 소모가 큰 가전제품들을 동시에 사용해도 문제가 없다는 후기가 많습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;'Made in Korea'와 'KS 인증'의 신뢰:&lt;/b&gt; 역시 국산! 국내에서 제조하고 KS 인증까지 받아 안전에 대한 신뢰도를 높였습니다. 에어컨 설치 기사님들이 추천하는 데는 다 이유가 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;cons&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구매 전 알아둘 점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;처음 꽂을 때 '번쩍!' 놀라지 마세요:&lt;/b&gt; 일부 후기에서 플러그를 처음 꽂을 때 작은 스파크가 발생했다는 내용이 있었습니다. 이는 고전력 제품의 자연스러운 현상일 수 있으나, 미리 알고 계시면 놀라지 않으실 겁니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가격, 그 이상의 가치:&lt;/b&gt; 일반 멀티탭보다는 가격대가 있지만, 한번 구매로 몇 년간 화재 걱정 없이 마음 편히 지낼 수 있다는 점을 생각하면 오히려 저렴한 투자입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;아쉬운 제품 라인업:&lt;/b&gt; &quot;3구 5M 제품이 없어 아쉽다&quot;는 의견처럼, 사용 환경에 따라 원하는 길이와 구성을 찾지 못할 수도 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실제 사용자들은 이렇게 말해요  &lt;/h2&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;친정부모님 댁 에어컨 코드가 퍼벅 소리를 내면서 탄내가 나서 큰일 날 뻔했어요... 쿠팡에서 에어컨 멀티탭이 따로 있어서 바로 구입했고, 새벽배송으로 받아서 바로 틀 수 있었어요. 이 무더위에 천만다행이에요.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;베란다에 워시타워를 이전 설치하면서 이 제품을 구매했어요. 세탁기와 건조기 모두 고전력 제품이라 차단기가 있는 전문 멀티탭으로 알아봤죠. 둘 다 한 번에 돌렸는데도 작동이 잘 됩니다. 만족스럽게 잘 쓰고 있어요.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;집에 에어컨 이전설치를 하면서 설치 기사님이 추천해주신 멀티탭이에요. 에어컨에 이런 멀티탭을 사용해야 하는지 몰랐는데 사고 나니 안심이 됩니다. 아기가 있어서 올여름 에어컨 풀가동해야 할 것 같은데 더 안심이 되어요.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;안전, 더 이상 타협하지 마세요.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오래된 멀티탭, 특히 전력 소모가 많은 가전제품에 연결된 멀티탭은 지금 당장 확인해보세요. 작은 관심이 큰 사고를 막을 수 있습니다. 멀티아 고용량 멀티탭은 단순한 선택이 아닌, 나와 우리 가족의 안전을 위한 필수적인 약속입니다.&lt;/p&gt;
&lt;div class=&quot;cta-button-container&quot;&gt;&lt;a class=&quot;cta-button&quot; href=&quot;https://link.coupang.com/a/cEPEpP&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;멀티아 고용량 멀티탭 최저가 보기&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>상품 추천</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/729</guid>
      <comments>https://coding-shop.tistory.com/729#entry729comment</comments>
      <pubDate>Wed, 16 Jul 2025 22:15:13 +0900</pubDate>
    </item>
    <item>
      <title>솔리티 스마트 도어락 WTS-700, 가성비일까? 함정일까? 973개 후기 총정리</title>
      <link>https://coding-shop.tistory.com/728</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;
        body {
            font-family: 'Noto Sans KR', sans-serif;
            line-height: 1.6;
            color: #333;
            background-color: #f9f9f9;
            margin: 0;
            padding: 20px;
        }
        .container {
            max-width: 800px;
            margin: auto;
            background: #fff;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.05);
        }
        h1, h2, h3 {
            color: #2c3e50;
            font-weight: 700;
            margin-top: 1.5em;
        }
        h1 {
            text-align: center;
            font-size: 2em;
            margin-bottom: 1em;
            border-bottom: 2px solid #3498db;
            padding-bottom: 0.5em;
        }
        h2 {
            font-size: 1.5em;
            color: #3498db;
            border-left: 5px solid #3498db;
            padding-left: 10px;
        }
        h3 {
            font-size: 1.2em;
            color: #2980b9;
        }
        p {
            margin-bottom: 1em;
        }
        .conclusion-box {
            background-color: #eaf5ff;
            border: 1px solid #aed6f1;
            padding: 20px;
            border-radius: 8px;
            margin-bottom: 2em;
        }
        .pros-cons {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 20px;
            margin-bottom: 2em;
        }
        .pros, .cons {
            padding: 20px;
            border-radius: 8px;
        }
        .pros {
            background-color: #e8f8f5;
            border-left: 5px solid #1abc9c;
        }
        .cons {
            background-color: #feeeee;
            border-left: 5px solid #e74c3c;
        }
        .pros h3, .cons h3 {
            margin-top: 0;
            display: flex;
            align-items: center;
        }
        .pros h3::before, .cons h3::before {
            margin-right: 10px;
            font-size: 1.5em;
        }
        .pros h3::before {
            content: ' ';
        }
        .cons h3::before {
            content: ' ';
        }
        ul {
            padding-left: 20px;
        }
        li {
            margin-bottom: 0.5em;
        }
        .review-quote {
            background-color: #f5f5f5;
            border-left: 4px solid #bdc3c7;
            padding: 15px;
            margin: 1em 0;
            border-radius: 4px;
            font-style: italic;
        }
        .cta-button-container {
            text-align: center;
            margin: 2em 0;
        }
        .cta-button {
            background-color: #3498db;
            color: white;
            padding: 15px 30px;
            text-decoration: none;
            font-size: 1.2em;
            font-weight: bold;
            border-radius: 5px;
            transition: background-color 0.3s;
            display: inline-block;
        }
        .cta-button:hover {
            background-color: #2980b9;
        }
        .affiliate-notice {
            text-align: center;
            font-size: 0.8em;
            color: #888;
            margin-top: 2em;
        }
        @media (max-width: 600px) {
            .pros-cons {
                grid-template-columns: 1fr;
            }
        }
    &lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;container&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;509&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boImao/btsPmSqAJNk/gBWewukY4aWOlAZ1YGR54k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boImao/btsPmSqAJNk/gBWewukY4aWOlAZ1YGR54k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boImao/btsPmSqAJNk/gBWewukY4aWOlAZ1YGR54k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboImao%2FbtsPmSqAJNk%2FgBWewukY4aWOlAZ1YGR54k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;509&quot; height=&quot;509&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;509&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p class=&quot;affiliate-notice&quot; data-ke-size=&quot;size16&quot;&gt;이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 '가성비 스마트 도어락'으로 인기를 끌고 있는 &lt;b&gt;솔리티 WTS-700&lt;/b&gt;. 저렴한 가격에 무타공 설치까지 가능하다니, 셀프 인테리어에 관심 있는 분들이라면 한 번쯤 눈여겨보셨을 텐데요. 정말 소문처럼 완벽한 제품일까요? 973개의 실사용자 후기를 꼼꼼하게 분석해 그 장단점을 파헤쳐 봤습니다.&lt;/p&gt;
&lt;div class=&quot;conclusion-box&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;바쁘신 분들을 위한 결론부터!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  이런 분들께 추천해요:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공구 좀 다뤄봤고, 유튜브 영상 보면서 차근차근 따라 하는 걸 즐기는 분&lt;/li&gt;
&lt;li&gt;설치 기사님 비용을 지불할 의향이 있으며, 가성비 좋은 도어락을 원하시는 분&lt;/li&gt;
&lt;li&gt;가격이 최우선! 약간의 불편함이나 뽑기 운은 감수할 수 있는 분&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  이런 분들은 다시 생각해보세요:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명서만 보고 조립하는 것에 자신 없는 분 (난이도가 상당할 수 있습니다)&lt;/li&gt;
&lt;li&gt;제품 고장 시 빠르고 확실한 A/S를 중요하게 생각하시는 분&lt;/li&gt;
&lt;li&gt;작은 흠집이나 불량에도 스트레스받는 꼼꼼한 성격의 소유자&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;솔리티 WTS-700, 어떤 점이 매력적일까?&lt;/h2&gt;
&lt;div class=&quot;pros-cons&quot;&gt;
&lt;div class=&quot;pros&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;압도적인 가성비:&lt;/b&gt; &quot;이 가격에 이 기능이?&quot; 라는 말이 절로 나올 정도로 저렴하면서도 스마트키, 카드키 등 필수 기능을 모두 갖췄습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;세련된 디자인:&lt;/b&gt; 군더더기 없이 깔끔하고 슬림한 디자인으로, 어떤 현관문에나 잘 어울린다는 평이 많습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;편리한 부가기능:&lt;/b&gt; 특히 아이들이 좋아하는 스티커 형태의 스마트키는 실사용자들의 만족도가 매우 높았습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;(조건부) 쉬운 자가설치:&lt;/b&gt; 설치 경험이 있거나 유튜브 영상을 참고하면 혼자서도 충분히 설치 가능하다는 후기가 많았습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;cons&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;'무타공'의 함정:&lt;/b&gt; 기존 손잡이 구멍이 가려지지 않거나, 문 두께가 맞지 않아 추가 부품이 필요한 경우가 많아 '완전한' 무타공을 기대했다면 실망할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;불친절한 설명서와 조립 난이도:&lt;/b&gt; 설명서가 부실하고, 작은 부품(하네스 잭)을 반대로 끼워도 조립이 되는 구조라 고장의 원인이 되기도 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;품질관리(QC) 문제:&lt;/b&gt; 간헐적으로 특정 번호가 눌리지 않는 터치패드 오류나, 누가 반품한 듯한 제품을 받았다는 후기가 꾸준히 발견됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;답답한 고객 서비스(A/S):&lt;/b&gt; 고장 시 A/S 접수가 어렵고, 출장비가 비싸다는 불만이 많았습니다. 자가 설치 실수 시 수리비가 제품 가격을 훌쩍 넘기도 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실제 사용자들은 이렇게 말해요  &lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;긍정적인 후기&lt;/h3&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;유튜브에서 동영상 검색해서 보고 하니까 어렵지 않았습니다. 보강판을 같이 주문할 수 있도록 하면 더 좋을 것 같네요. 좋은 제품 잘 쓰겠습니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;설치가 간편해서 혼자서도 쉽게 부착할 수 있었어요. 무타공 방식이라 문을 훼손할 걱정 없이... 디자인도 깔끔하고 세련된 스타일이라 어디에 설치해도 인테리어와 잘 어울립니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;아쉬운 후기&lt;/h3&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;자가 설치 자세한 설명이 없어요. ... 손잡이 방향이 잘못 조립해서 안 열린다고 도어락을 파손해서 재설치 해야된다고 하고 15만원 든다고 합니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;1개월 정도 사용하고 있는데 간헐적으로 터치가 안됩니다. 번호가 안 눌리니 집에도 못 들어가고 급하게 들어가야 할 때 이러면 위험할 수도 있을 거 같네요.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;review-quote&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;하네스 잭이 서로 안 맞으면 결합이 안 돼야 되는데 앞뒤 다 들어감. 반대로 결합해서 보니 작동이 안 되어 불량인 줄 알고 AS 불렀더니 반대로 결합했다고 출장비 5만원 달라네요.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;최종 정리 및 구매 가이드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;솔리티 WTS-700&lt;/b&gt;은 분명 &lt;b&gt;뛰어난 가성비를 자랑하는 매력적인 제품&lt;/b&gt;입니다. 하지만 그 이면에는 '뽑기 운'이 필요한 품질과 만만치 않은 설치 난이도, 그리고 아쉬운 A/S라는 그림자가 존재합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 당신이 저렴한 가격을 최우선으로 생각하고, 직접 설치에 자신 있거나 기꺼이 전문가의 도움을 받을 의향이 있다면 WTS-700은 훌륭한 선택이 될 수 있습니다. 하지만 작은 실수도 용납 못 하는 완벽주의자이거나, 스트레스 없는 사용과 확실한 사후 지원을 원한다면 조금 더 비용을 투자해 검증된 브랜드의 제품을 알아보는 것을 추천합니다.&lt;/p&gt;
&lt;div class=&quot;cta-button-container&quot;&gt;&lt;a class=&quot;cta-button&quot; href=&quot;https://link.coupang.com/a/cEQeON&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;솔리티 WTS-700 최저가 확인하기&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>상품 추천</category>
      <author>코샵</author>
      <guid isPermaLink="true">https://coding-shop.tistory.com/728</guid>
      <comments>https://coding-shop.tistory.com/728#entry728comment</comments>
      <pubDate>Wed, 16 Jul 2025 22:14:35 +0900</pubDate>
    </item>
  </channel>
</rss>