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

โญ Arduino UNO R4 WiFi Wi-Fi ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ๊ณ ๋คํธ์ํฌ ์์ ์ ์ํํ ์ ์๋ ESP32-S3 ๋ชจ๋์ด ๋ด์ฅ๋์ด ์์ HTTPS, MQTT, UDP๋ฅผ ํฌํจํ ํ๋กํ ์ฝ์ด ํ ์คํธ๋๊ณ ์ง์๋จ WiFiS3 Arduino UNO R4 Core ์ ํจ๊ป ์ ๊ณต๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ โญ WiFi Web Server LED Blink ๐ณ SSID, PASSWORD ๋ก์ปฌ Wi-Fi ๋คํธ์ํฌ์ฉ ๋คํธ์ํฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๋์ ํ์ผ (ํค๋) ์ ์ ์ฅํ์ฌ ์ ๋ณด ๋ณดํธํ๊ธฐ //arduino_secrets.h header file #define SECRET_SSID "yournetwork" #define SECRET_PASS "yourp..

GitHub - gani0325/checkCar: ์์ฐจ์ ์ํฉ์ ์๋ ค์ค~ ๋ด ๋ถ๋ถ์ด๋ ์์๋~ GitHub - gani0325/checkCar: ์์ฐจ์ ์ํฉ์ ์๋ ค์ค~ ๋ด ๋ถ๋ถ์ด๋ ์์๋~ ์์ฐจ์ ์ํฉ์ ์๋ ค์ค~ ๋ด ๋ถ๋ถ์ด๋ ์์๋~. Contribute to gani0325/checkCar development by creating an account on GitHub. github.com ๐ checkCar ๐ ์์ฐจ์ ์ํฉ์ ์๋ ค์ค~ ๋ด ๋ถ๋ถ์ด๋ ์์๋~ ์์ฐจ๊ฐ ๊ฐ์๊ธฐ ๋ฉ์ถ๋ค๋ฉด ๋ท์ฐจ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ๋ชจ๋ฅธ๋ค! So, ์์ฐจ๊ฐ ๋ท์ฐจ์๊ฒ "์์ ์ฌ๊ณ ๊ฐ ๋ฌ์ด", "๋๋ฌผ ์ถ๋ชฐ!", "๋ด ์ฐจ๊ฐ ๊ณ ์ฅ๋๋ฏ" ๋ฑ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๊ณ ์ ํ๋ค! ๊ทธ๋ฐ์๋, ๋ด ์ฐจ๊ฐ ์ฃผ์ฐจ๋์ด์๊ฑฐ๋ ๋ฉ์ถฐ์์ ๋ ์ฑ(tcp)์ผ๋ก "๋ ์ ์..

โญ ์กฐ์ด์คํฑ x, y X์ถ์ ์ฝ๊ณ X์ถ์ ๊ฐ์ ๋ง์กฑํ๋ ์ผ์ชฝ/์ค๋ฅธ์ชฝ์ด ๊ฒฐ์ ๋๋ฉด์ Y์ถ์ ๋ฌด์ํ๊ณ ๋์ด๊ฐ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋์ X์ถ์ ๋ฐฉํฅํค๋ฅผ ๊ตฌํ๊ณ Y์ถ์ ๋ฐฉํฅํค๋ฅผ ๊ตฌํ๋ ์์ ๋ฐ๋ก if๋ฌธ์ ๋ถ๋ฆฌํด์ ์ฝ๋ฉํ ๊ฒ AXIS_X ๊ธฐ์ค ์ ํธ๋ก ๋ณด๋ฉด ๊ธฐ์ค ์ ํธ ๊ฐ์์ +, - ๊ฐ์ธ ๋์ค ํ๋์ํ๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ. ๋์ ์ค๋ฅธ์ชฝ, ์ผ์ชฝ์ด ๋์ฌ ์ ์์ต๋๋ค. ๊ทธ๋์ if~else if๋ฌธ์ ์ฌ์ฉ const int AXIS_X = A0; const int AXIS_Y = A1; const int SW_P = 3; void setup() { Serial.begin(9600); pinMode(SW_P,INPUT_PULLUP); } void loop() { //X์ถ ๋ฐฉํฅ๊ฐ if(analogRead(AXIS_X)=700){ Seri..

โญ client ์์ ๋ฐ์ message ๋ฅผ serial ํต์ ํตํด arduino ๋ก ์ ์ก โญ server.c #include #include #include #include #include #include #define BUF_SIZE 16 void error_handling(char *message); int main(int argc, char *argv[]) { // ์๋ฒ, ํด๋ผ์ด์ธํธ ์์ผ ํ์ผ๋์คํฌ๋ฆฝํฐ ๋ณ์ ์ ์ธ int serv_sock, clnt_sock; char message[BUF_SIZE]; int str_len, i; // sockaddr_in ๊ตฌ์กฐ์ฒด ๋ณ์ ์ ์ธ struct sockaddr_in serv_adr, clnt_adr; socklen_t clnt_adr_sz; if(argc ..

โญ Joystick button ๋ง๋ค lcd ์ถ๋ ฅ โ Wire.h I2C ํต์ ์ ํ๋๋ฐ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ๋ง์คํฐ ํ๋์ ์ฌ๋ ์ด๋ธ ์ฌ๋ฌ๋๋ฅผ ํต์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. SDA๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ก๊ณผ ์ก์ ์ ํ๋ ๋ฐ์ด์ค(์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ์ง๋ง ์ก์ ๊ณผ ์์ ์ค์ ํ๋์ฉ ์ฒ๋ฆฌํ๋ค.) SCL์ ๊ธฐ์ค ํด๋ญ์ ์ฌ๋ ์ด๋ธ์๊ฒ ์ ๋ฌํ๋ค. ์ฌ๋ ์ด๋ธ์ ๊ตฌ๋ณ์ ์ฃผ์๋ก ํ๊ธฐ ๋๋ฌธ์ ๊ธด ๋ฐ์ดํฐ์ ๊ตํ์๋ ์ ํฉํ์ง ์๋ค. ํด๋ญ์ ๊ฐ์ง๊ณ ํต์ ํ๋ฏ๋ก ๋๊ธฐ์ ํต์ ์ด ๊ฐ๋ฅํ๋ค. arduino(uno๋ ์ ์ธ)์๋ I2C ํต์ ์ ํ ์ ์๋ ์นฉ์ด ๋ด์ฅ๋์ด์๋ค. // mytest.ino //#include "test2.h" // LiquidCrystal ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ #include #include #include "test2.h" // ์กฐ์ด์คํฑ ์ด๋์ ..

โญ ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ์๋ฆฌ์ผ ํต์ ํ๊ธฐ /dev/tty~ ๋ผ๋ ์ด๋ฆ์ ์ฅ์น๋ฅผ ์ ์์ค ํจ์๋ก ์ ์ด ์ค์ ์ฅ์น๊ฐ ์์ผ๋ฉด ์ปดํจํฐ์ ๊ฐ์ ํฌํธ๋ฅผ ์ค์นํ๋ฉด ๋๋ค ๋ฆฌ๋ ์ค์ c(์บ๋ฆญํฐ ์ฅ์น{1๋ฐ์ดํธ์ฉ ํต์ ๋ชฉ์ })์ธ tty~๊ฐ ํ์ผํํ๋ก ์์ฑ โญ struct termios ์๋ฆฌ์ผ ํฌํธ์ ์ ์ถ๋ ฅ์ ์ค์ ํ๋ ๊ตฌ์กฐ์ฒด ์์ผ ๋คํธ์ํฌ์์ ๋คํธ์ํฌ ์ ๋ณด๋ฅผ ์ค์ ํ๋ ๋ฐฉ์๊ณผ ๋น์ทํ๊ฒ ์ฌ์ฉ๋จ POSIX๊ฐ ์ง์ ํ ํ์ค ์ธํฐํ์ด์ค ์ด์์ฒด์ ํ์ค์์ ๋ง์กฑํ๋ค ๊ตฌ์กฐ์ฒด ํญ๋ชฉ c_iflag: ํฐ๋ฏธ๋ ์ ๋ ฅ์ ๋ํด ์ค์ c_oflag: ํฐ๋ฏธ๋ ์ถ๋ ฅ์ ๋ํด ์ค์ c_cflag: ํฐ๋ฏธ๋ ์ ์ด์ ๋ํด ์ค์ (๋ฐ์ดํฐ ๋นํธ, ํจ๋ฆฌํฐ ๋ฑ) โญ ์๋ฆฌ์ผ ํต์ ๋ฐฉ์ 1) canonical ์ํฐ์ ๋ ฅ ๋๊ธฐ (ํฐ๋ฏธ๋ ์ ๋ ฅ์ ์์ค๋ฌธ์('\n'), EOF(End of file)..

โญ ์์ผ ๋ ํ๋ก๊ทธ๋จ์ด ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ก ํต์ ํ ์ ์๋๋ก ์์ชฝ์ ์์ฑ๋๋ ๋งํฌ์ ๋จ์ ์์ผ์ด ์ฐ๊ฒฐ๋๋ฉด ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ ๐ Server 1) socket() Socket discriptor ์์ฑ int socket(int domain, int type, int protocol); ์ฑ๊ณต ์ fd (ํ์ผ ๋์คํฌ๋ฆฝํฐ), ์คํจ ์ -1 domain : ์ฃผ์ ์์ญ ์ค์ (AF_INET(IPv4), AF_INET(IPv6)) type : ์์ผ์ ํต์ ํ์ ์ค์ protocol : ํต์ ์ ์ฌ์ฉํ ํ๋กํ ์ฝ ์ค์ memset ์ผ๋ก ์ฃผ์๋ฅผ ๋ถ์ฌ serv_sock์ bind๋ก ์ฃผ์ ๋ฃ๊ธฐ ์ํ ๋ฐ์์ memset(&serv_addr,0,sizeof(serv_addr)); serv_addr...

โญ LCD 1) LCD(Liquid Cristal Display) ์ก์ (Liquid Crystal)์ด๋ผ๋ ์ ์ฒด์ด๋ฉด์ ๊ณ ์ฒด์ ๊ฐ์ ๊ดํ์ ์ฑ์ง์ ๊ฐ์ง๋ ๋ฌผ์ง ๊ณ ์ฒด ํ๋ฉด์ ์ ๊ธฐ์ ์ ํธ๋ฅผ ๋ณด๋ด์ด ์ก์ ์ด ํน์ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌ๋๋ฉด ๋น์ ์ฐจ๋จํ๊ฑฐ๋ ํฌ๊ณผํ ์ ์์ 2) 16X2 LCD ๋ชจ๋ 16๊ฐ ๋ฌธ์๋ฅผ 2์ด๋ก ์ถ๋ ฅํ ์ ์๋ ๋ชจ๋ 8bit ๋ฐ์ดํฐ๋ฒ์ค์ 8๊ฐ์ ์ ์ด ์ ํธ๋ก ๊ตฌ์ฑ๋์ด ์์ด์ ์ด 16๊ฐ์ ํ์ด ํ์ํจ (I2C ๋ชจ๋์ ์ด์ฉ์ 2๊ฐ ํ๋ง ํ์) 3) ์์ง์ด๋ LCD ํ #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Hellow..