Skip to content

2025-Capstone-Project-Barion/Arduino

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 

Repository files navigation

Arduino: LinearActuator-Receiver

Arduino: Controlling linear actuators via serial communication with RubikPi


๊ฐœ์š”

์ด ์‹œ์Šคํ…œ์€ RubikPi๋กœ๋ถ€ํ„ฐ "UP" ๋˜๋Š” "DOWN" ๋ช…๋ น์„ ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์œผ๋กœ ์ˆ˜์‹ ํ•˜๊ณ , ์ด์— ๋”ฐ๋ผ ๋ฆฌ๋‹ˆ์–ด ์•ก์ถ”์—์ดํ„ฐ๋ฅผ ํ™•์žฅ ๋˜๋Š” ์ˆ˜์ถ•ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.



๐Ÿ›  Tech Stack

๐Ÿ”Œ Hardware Control

Category Technology
Hardware Controller
Arduino
Hardware
๐Ÿ–ฅ๏ธ Touch Display / โš™๏ธ Linear Actuator
Programming Language
C

ํ•˜๋“œ์›จ์–ด ์—ฐ๊ฒฐ

  • IN1: ์•ก์ถ”์—์ดํ„ฐ ์ œ์–ด ํ•€ 1 โ†’ Arduino ๋””์ง€ํ„ธ 9๋ฒˆ ํ•€
  • IN2: ์•ก์ถ”์—์ดํ„ฐ ์ œ์–ด ํ•€ 2 โ†’ Arduino ๋””์ง€ํ„ธ 10๋ฒˆ ํ•€
  • ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ์†๋„: 9600 bps
  • Arduino์™€ RubikPi๋Š” USB ์ผ€์ด๋ธ”์„ ํ†ตํ•ด ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด, Arduino์— ์ „์›์„ ๊ณต๊ธ‰ํ•จ
  • L298N ๋ชจํ„ฐ ๋“œ๋ผ์ด๋ฒ„ ์—ฐ๊ฒฐ ๊ตฌ์„ฑ:
    • IN1, IN2 ํ•€์€ ๊ฐ๊ฐ Arduino์˜ 9๋ฒˆ, 10๋ฒˆ ํ•€๊ณผ ์—ฐ๊ฒฐ
    • GND ํ•€(์ „๋ฉด 2๋ฒˆ์งธ ์Šฌ๋กฏ)์€ 12V ์™ธ๋ถ€ ์ „์›์˜ ๋งˆ์ด๋„ˆ์Šค(-) ๋‹จ์ž ๋ฐ Arduino GND์™€ ๊ณตํ†ต ์ ‘์ง€
    • ์ „๋ฉด 1๋ฒˆ์งธ ์Šฌ๋กฏ(VCC)์—๋Š” 12V ์™ธ๋ถ€ ์ „์›์˜ ํ”Œ๋Ÿฌ์Šค(+) ๋‹จ์ž ์—ฐ๊ฒฐ
    • ์ขŒ์ธก ์ถœ๋ ฅ๋ถ€๋Š” ๋ฆฌ๋‹ˆ์–ด ์•ก์ถ”์—์ดํ„ฐ ์—ฐ๊ฒฐ:
      • ์ขŒ์ธก ์Šฌ๋กฏ โ†’ ์•ก์ถ”์—์ดํ„ฐ + ์„ 
      • ์šฐ์ธก ์Šฌ๋กฏ โ†’ ์•ก์ถ”์—์ดํ„ฐ - ์„ 

๋™์ž‘ ํ๋ฆ„

  • "UP\n" ๋ช…๋ น ์ˆ˜์‹  โ†’ ์•ก์ถ”์—์ดํ„ฐ ํ™•์žฅ
  • "DOWN\n" ๋ช…๋ น ์ˆ˜์‹  โ†’ ์•ก์ถ”์—์ดํ„ฐ ์ˆ˜์ถ•
  • ๋ชจ๋“  ๋™์ž‘์€ ์•ฝ 15์ดˆ ๋™์•ˆ ์ง€์†๋œ ํ›„ ์ž๋™ ์ •์ง€

Arduino ์ œ์–ด์ฝ”๋“œ

// ํ•€ ๋ฒˆํ˜ธ ์ •์˜
const int IN1 = 9;
const int IN2 = 10;

// ์•ก์ถ”์—์ดํ„ฐ ๋™์ž‘ ์ƒํƒœ ์—ด๊ฑฐํ˜•
enum ActuatorState {
  EXTEND,  // ์ตœ๋Œ€ ๊ธธ์ด๋กœ ๋Š˜๋ฆผ
  RETRACT, // ์ตœ์†Œ ๊ธธ์ด๋กœ ์ค„์ž„
  STOP     // ์ •์ง€
};

// ์ƒํƒœ๋ณ„ ์ œ์–ด ํ•จ์ˆ˜
void controlActuator(ActuatorState state) {
  switch (state) {
    case EXTEND:
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      break;
    case RETRACT:
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      break;
    case STOP:
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
      break;
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  // ์ดˆ๊ธฐ ์ „์› ์‹œ์—๋Š” ์•„๋ฌด ๋™์ž‘๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
}

void loop() {
  if (Serial.available()) {
    String cmd = Serial.readStringUntil('\\n');
    cmd.trim();

    if (cmd == "UP") {
      // ์ตœ๋Œ€ ๊ธธ์ด๋กœ ๋Š˜๋ฆฌ๊ณ  ์ •์ง€
      controlActuator(EXTEND);
      delay(15000);
      controlActuator(STOP);
    }
    else if (cmd == "DOWN") {
      // ์ตœ์†Œ ๊ธธ์ด๋กœ ์ค„์ด๊ณ  ์ •์ง€
      controlActuator(RETRACT);
      delay(15000);
      controlActuator(STOP);
    }
  }
}

๊ณ ๋ ค์‚ฌํ•ญ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

  • ์ „์› ์—ฐ๊ฒฐ ์ˆœ์„œ ์ฃผ์˜
    ๋ฐ˜๋“œ์‹œ RubikPi์˜ ์ „์›์„ ๋จผ์ € ์ธ๊ฐ€ํ•œ ํ›„, L298N ๋ชจํ„ฐ ๋“œ๋ผ์ด๋ฒ„์— ์™ธ๋ถ€ 12V ์ „์›์„ ์—ฐ๊ฒฐํ•ด์•ผ ํ•จ.
    ์ž˜๋ชป๋œ ์ˆœ์„œ๋กœ ์ „์› ๊ณต๊ธ‰ ์‹œ, ์—ญ์ „๋ฅ˜๋กœ ์ธํ•œ Arduino ์†์ƒ(์‡ผํŠธ) ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ.

  • ์ •๊ฒฉ ์ „์•• ๊ณ ๋ ค
    Arduino๋Š” 5V ์ •๊ฒฉ ์ „์•• ๊ธฐ์ค€์œผ๋กœ ๋™์ž‘ํ•˜๋ฏ€๋กœ, GND ํ๋ฆ„์ด ๋ถˆ์•ˆ์ •ํ•  ๊ฒฝ์šฐ ์˜ค๋™์ž‘ ๋˜๋Š” ์†์ƒ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ.
    GND๋Š” RubikPiโ€“Arduinoโ€“L298N ๊ฐ„์— ํ•ญ์ƒ ๊ณตํ†ต์œผ๋กœ ์œ ์ง€๋  ๊ฒƒ.

  • ์‹œ๋ฆฌ์–ผ ๋ช…๋ น์–ด ๊ตฌ์„ฑ
    RubikPi์—์„œ ์ „์†ก๋˜๋Š” ๋ช…๋ น์–ด๋Š” ๊ฐœํ–‰ ๋ฌธ์ž \n ํฌํ•จ ํ•„์ˆ˜ (์˜ˆ: "UP\n", "DOWN\n")

  • ์ „์› ์•ˆ์ •์„ฑ ํ™•๋ณด
    ๋ฆฌ๋‹ˆ์–ด ์•ก์ถ”์—์ดํ„ฐ๋Š” ๋™์ž‘ ์‹œ ์ผ์ •ํ•œ ์ „์••๊ณผ ์ „๋ฅ˜๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ, 12V 2~3A ์ด์ƒ์˜ ์•ˆ์ •๋œ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ.


About

Arduino: Controlling linear actuators via serial communication with RubikPi

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages