๋ชฉ๋ก๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/Arduino (64)

๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[์ž๋™์ฐจ ๋’ทํŽธ์— LCDํŒ์œผ๋กœ ์ƒํ™ฉ ์ „๋‹ฌํ•˜๊ธฐ 7] ์™„์„ฑ๋ณธ

GitHub - gani0325/checkCar: ์•ž์ฐจ์˜ ์ƒํ™ฉ์„ ์•Œ๋ ค์ค˜~ ๋‚ด ๋ถ•๋ถ•์ด๋Š” ์ž˜์žˆ๋‹ˆ~ GitHub - gani0325/checkCar: ์•ž์ฐจ์˜ ์ƒํ™ฉ์„ ์•Œ๋ ค์ค˜~ ๋‚ด ๋ถ•๋ถ•์ด๋Š” ์ž˜์žˆ๋‹ˆ~ ์•ž์ฐจ์˜ ์ƒํ™ฉ์„ ์•Œ๋ ค์ค˜~ ๋‚ด ๋ถ•๋ถ•์ด๋Š” ์ž˜์žˆ๋‹ˆ~. Contribute to gani0325/checkCar development by creating an account on GitHub. github.com ๐Ÿš— checkCar ๐Ÿš— ์•ž์ฐจ์˜ ์ƒํ™ฉ์„ ์•Œ๋ ค์ค˜~ ๋‚ด ๋ถ•๋ถ•์ด๋Š” ์ž˜์žˆ๋‹ˆ~ ์•ž์ฐจ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋ฉˆ์ถ˜๋‹ค๋ฉด ๋’ท์ฐจ๋Š” ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ๋ชจ๋ฅธ๋‹ค! So, ์•ž์ฐจ๊ฐ€ ๋’ท์ฐจ์—๊ฒŒ "์•ž์— ์‚ฌ๊ณ ๊ฐ€ ๋‚ฌ์–ด", "๋™๋ฌผ ์ถœ๋ชฐ!", "๋‚ด ์ฐจ๊ฐ€ ๊ณ ์žฅ๋‚œ๋“ฏ" ๋“ฑ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๊ณ ์ž ํ•œ๋‹ค! ๊ทธ๋ฐ–์—๋„, ๋‚ด ์ฐจ๊ฐ€ ์ฃผ์ฐจ๋˜์–ด์žˆ๊ฑฐ๋‚˜ ๋ฉˆ์ถฐ์žˆ์„ ๋•Œ ์•ฑ(tcp)์œผ๋กœ "๋‚˜ ์ž ์‹œ..

[์ž๋™์ฐจ ๋’ทํŽธ์— LCDํŒ์œผ๋กœ ์ƒํ™ฉ ์ „๋‹ฌํ•˜๊ธฐ 6] ์กฐ์ด์Šคํ‹ฑ x, y 4๋ถ„ํ•  ํ•ด์„œ led ๋ถˆ ์ผœ๊ธฐ

โญ ์กฐ์ด์Šคํ‹ฑ 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..

[์ž๋™์ฐจ ๋’ทํŽธ์— LCDํŒ์œผ๋กœ ์ƒํ™ฉ ์ „๋‹ฌํ•˜๊ธฐ 4] Joystick button ๋งˆ๋‹ค lcd ์ถœ๋ ฅ

โญ Joystick button ๋งˆ๋‹ค lcd ์ถœ๋ ฅ โ“ Wire.h I2C ํ†ต์‹ ์„ ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ๋งˆ์Šคํ„ฐ ํ•œ๋Œ€์™€ ์Šฌ๋ ˆ์ด๋ธŒ ์—ฌ๋Ÿฌ๋Œ€๋ฅผ ํ†ต์‹ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. SDA๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก๊ณผ ์†ก์‹ ์„ ํ•˜๋Š” ๋ฐ˜์ด์ค‘(์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์†ก์‹ ๊ณผ ์ˆ˜์‹ ์ค‘์— ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•œ๋‹ค.) SCL์€ ๊ธฐ์ค€ ํด๋Ÿญ์„ ์Šฌ๋ ˆ์ด๋ธŒ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. ์Šฌ๋ ˆ์ด๋ธŒ์˜ ๊ตฌ๋ณ„์„ ์ฃผ์†Œ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธด ๋ฐ์ดํ„ฐ์˜ ๊ตํ™˜์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ํด๋Ÿญ์„ ๊ฐ€์ง€๊ณ  ํ†ต์‹ ํ•˜๋ฏ€๋กœ ๋™๊ธฐ์‹ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. arduino(uno๋Š” ์ œ์™ธ)์—๋Š” I2C ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์นฉ์ด ๋‚ด์žฅ๋˜์–ด์žˆ๋‹ค. // mytest.ino //#include "test2.h" // LiquidCrystal ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ #include #include #include "test2.h" // ์กฐ์ด์Šคํ‹ฑ ์‰ด๋“œ์˜ ..

[์ž๋™์ฐจ ๋’ทํŽธ์— LCDํŒ์œผ๋กœ ์ƒํ™ฉ ์ „๋‹ฌํ•˜๊ธฐ 3] ๋ฆฌ๋ˆ…์Šค ์‹œ๋ฆฌ์–ผ ํ†ต์‹  (termios.h)

โญ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ํ•˜๊ธฐ /dev/tty~ ๋ผ๋Š” ์ด๋ฆ„์˜ ์žฅ์น˜๋ฅผ ์ €์ˆ˜์ค€ ํ•จ์ˆ˜๋กœ ์ œ์–ด ์‹ค์ œ ์žฅ์น˜๊ฐ€ ์—†์œผ๋ฉด ์ปดํ“จํ„ฐ์— ๊ฐ€์ƒ ํฌํŠธ๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋œ๋‹ค ๋ฆฌ๋ˆ…์Šค์˜ c(์บ๋ฆญํ„ฐ ์žฅ์น˜{1๋ฐ”์ดํŠธ์”ฉ ํ†ต์‹ ๋ชฉ์ })์ธ tty~๊ฐ€ ํŒŒ์ผํ˜•ํƒœ๋กœ ์ƒ์„ฑ โญ struct termios ์‹œ๋ฆฌ์–ผ ํฌํŠธ์˜ ์ž…์ถœ๋ ฅ์„ ์„ค์ •ํ•˜๋Š” ๊ตฌ์กฐ์ฒด ์†Œ์ผ“ ๋„คํŠธ์›Œํฌ์—์„œ ๋„คํŠธ์›Œํฌ ์ •๋ณด๋ฅผ ์„ค์ •ํ•˜๋˜ ๋ฐฉ์‹๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์‚ฌ์šฉ๋จ POSIX๊ฐ€ ์ง€์ •ํ•œ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค ์šด์˜์ฒด์ œ ํ‘œ์ค€์•ˆ์„ ๋งŒ์กฑํ•œ๋‹ค ๊ตฌ์กฐ์ฒด ํ•ญ๋ชฉ c_iflag: ํ„ฐ๋ฏธ๋„ ์ž…๋ ฅ์— ๋Œ€ํ•ด ์„ค์ • c_oflag: ํ„ฐ๋ฏธ๋„ ์ถœ๋ ฅ์— ๋Œ€ํ•ด ์„ค์ • c_cflag: ํ„ฐ๋ฏธ๋„ ์ œ์–ด์— ๋Œ€ํ•ด ์„ค์ •(๋ฐ์ดํ„ฐ ๋น„ํŠธ, ํŒจ๋ฆฌํ‹ฐ ๋“ฑ) โญ ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ๋ฐฉ์‹ 1) canonical ์—”ํ„ฐ์ž…๋ ฅ ๋Œ€๊ธฐ (ํ„ฐ๋ฏธ๋„ ์ž…๋ ฅ์€ ์ƒˆ์ค„๋ฌธ์ž('\n'), EOF(End of file)..

[์ž๋™์ฐจ ๋’ทํŽธ์— LCDํŒ์œผ๋กœ ์ƒํ™ฉ ์ „๋‹ฌํ•˜๊ธฐ 2] TCP/IP ํ†ต์‹  ํ•จ์ˆ˜ ์‚ฌ์šฉ ์ˆœ์„œ

โญ ์†Œ์ผ“ ๋‘ ํ”„๋กœ๊ทธ๋žจ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์–‘์ชฝ์— ์ƒ์„ฑ๋˜๋Š” ๋งํฌ์˜ ๋‹จ์ž ์†Œ์ผ“์ด ์—ฐ๊ฒฐ๋˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Œ ๐Ÿš€ 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, I2C ํ†ต์‹ , joystick, LED)

โญ 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..