diff --git a/pir_sensor.c b/pir_sensor.c
new file mode 100644
index 0000000000000000000000000000000000000000..5c2c24bdf4e69a4dd0a8138db198b55e22bfd7c8
--- /dev/null
+++ b/pir_sensor.c
@@ -0,0 +1,110 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <string.h>
+
+int sock;
+
+#define PIR_PIN 17 // PIR 센서가 연결된 GPIO 핀 번호
+
+// GPIO 핀 초기화 함수
+void init_gpio() {
+    int fd;
+
+    // GPIO 핀을 export
+    fd = open("/sys/class/gpio/export", O_WRONLY);
+    if (fd == -1) {
+        perror("Error exporting GPIO");
+        exit(1);
+    }
+    write(fd, "17", 2);
+    close(fd);
+
+    // 방향 설정 (in으로 설정)
+    fd = open("/sys/class/gpio/gpio17/direction", O_WRONLY);
+    if (fd == -1) {
+        perror("Error setting direction GPIO");
+        exit(1);
+    }
+    write(fd, "in", 2);
+    close(fd);
+}
+
+// GPIO 핀 읽기 함수
+int read_gpio() {
+    int fd;
+    char buffer[2];
+
+    // 값 읽기
+    fd = open("/sys/class/gpio/gpio17/value", O_RDONLY);
+    if (fd == -1) {
+        perror("Error reading GPIO value");
+        exit(1);
+    }
+    read(fd, buffer, sizeof(buffer));
+    close(fd);
+
+    return atoi(buffer);
+}
+
+int main(int argc, char *argv[]) {
+    printf("PIR Sensor Test\n");
+    
+
+    // GPIO 핀 초기화
+    init_gpio();
+    struct sockaddr_in server_addr;
+
+    if (argc != 3)
+    {
+        printf("Please deliver IP & Port num as arguments correctly!\n");
+        exit(1);
+    }
+
+    sock = socket(PF_INET, SOCK_STREAM, 0);
+    if (sock == -1)
+    {
+        perror("socket() error");
+        exit(1);
+    }
+
+    memset(&server_addr, 0, sizeof(server_addr));
+    server_addr.sin_family = AF_INET;
+    server_addr.sin_addr.s_addr = inet_addr(argv[1]);
+    server_addr.sin_port = htons(atoi(argv[2]));
+
+    if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1)
+    {
+        perror("connect() error");
+        exit(1);
+    }
+    printf("join success!\n");
+
+    FILE* fp = fopen("/sys/class/gpio/gpio17/value","r");
+    sleep(1);
+
+    while(1){
+        int motion_check = read_gpio();
+
+        if (motion_check) {
+            printf("Motion detected!\n");
+            if(write(sock, "1", 1)==-1){
+                perror("Client sending data error"); 
+                return -1;
+                 }
+           
+        } else {
+            printf("No motion.\n");
+            if(write(sock, "0", 1)==-1){
+            perror("Client sending data error"); 
+            return -1;
+            }
+        }
+        sleep(1); // 1초 간격으로 센서 상태를 확인
+
+
+    }
+}