ನಾವು Arduino ನಲ್ಲಿ ಸ್ವಯಂ ಚಾಲಿತ ರೋಬೋಟ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ. ರೆಡಿಮೇಡ್ ಆರ್ಡುನೊ ರೋಬೋಟ್‌ಗಳು ಗುರಾಣಿ ಮಾಡಲು, ನಿಮಗೆ ಅಗತ್ಯವಿರುತ್ತದೆ

ಸೆಗ್ವೇ ನಂತಹ ಸಮತೋಲನವನ್ನು ಹೊಂದಿರುವ ರೋಬೋಟ್ ಅನ್ನು ರಚಿಸಲು ನೀವು ಆರ್ಡುನೊವನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂಬುದರ ಕುರಿತು ಮಾತನಾಡೋಣ.

ಇಂಗ್ಲಿಷ್ನಿಂದ ಸೆಗ್ವೇ. ಸೆಗ್ವೇ ಎಲೆಕ್ಟ್ರಿಕ್ ಡ್ರೈವ್ ಹೊಂದಿದ ದ್ವಿಚಕ್ರ ನಿಂತಿರುವ ವಾಹನವಾಗಿದೆ. ಅವುಗಳನ್ನು ಗೈರೊಸ್ಕೂಟರ್ ಅಥವಾ ಎಲೆಕ್ಟ್ರಿಕ್ ಸ್ಕೂಟರ್ ಎಂದೂ ಕರೆಯುತ್ತಾರೆ.

ಸೆಗ್ವೇ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ನೀವು ಎಂದಾದರೂ ಯೋಚಿಸಿದ್ದೀರಾ? ಈ ಟ್ಯುಟೋರಿಯಲ್ ನಲ್ಲಿ ಸೆಗ್ವೇಯಂತೆಯೇ ತನ್ನನ್ನು ತಾನು ಸಮತೋಲನಗೊಳಿಸಿಕೊಳ್ಳುವ ಆರ್ಡುನೊ ರೋಬೋಟ್ ಅನ್ನು ಹೇಗೆ ತಯಾರಿಸಬೇಕೆಂದು ನಾವು ನಿಮಗೆ ತೋರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ.

ರೋಬೋಟ್ ಅನ್ನು ಸಮತೋಲನಗೊಳಿಸಲು, ಮೋಟಾರುಗಳು ರೋಬೋಟ್ನ ಪತನವನ್ನು ಪ್ರತಿರೋಧಿಸಬೇಕು. ಈ ಕ್ರಿಯೆಗೆ ಪ್ರತಿಕ್ರಿಯೆ ಮತ್ತು ಸರಿಪಡಿಸುವ ಅಂಶಗಳ ಅಗತ್ಯವಿದೆ. ಪ್ರತಿಕ್ರಿಯೆ ಅಂಶ - , ಇದು ಎಲ್ಲಾ ಮೂರು ಅಕ್ಷಗಳಲ್ಲಿ ವೇಗವರ್ಧನೆ ಮತ್ತು ತಿರುಗುವಿಕೆ ಎರಡನ್ನೂ ಒದಗಿಸುತ್ತದೆ (). ರೋಬೋಟ್‌ನ ಪ್ರಸ್ತುತ ದೃಷ್ಟಿಕೋನವನ್ನು ತಿಳಿಯಲು Arduino ಇದನ್ನು ಬಳಸುತ್ತದೆ. ಸರಿಪಡಿಸುವ ಅಂಶವೆಂದರೆ ಎಂಜಿನ್ ಮತ್ತು ಚಕ್ರದ ಸಂಯೋಜನೆ.

ಅಂತಿಮ ಫಲಿತಾಂಶವು ಈ ರೀತಿ ಇರಬೇಕು:

ರೋಬೋಟ್ ಯೋಜನೆ

L298N ಮೋಟಾರ್ ಡ್ರೈವರ್ ಮಾಡ್ಯೂಲ್:

ಚಕ್ರದೊಂದಿಗೆ DC ಗೇರ್ ಮೋಟಾರ್:

ಸ್ವಯಂ ಸಮತೋಲನದ ರೋಬೋಟ್ ಮೂಲಭೂತವಾಗಿ ತಲೆಕೆಳಗಾದ ಲೋಲಕವಾಗಿದೆ. ಚಕ್ರದ ಆಕ್ಸಲ್‌ಗಳಿಗೆ ಹೋಲಿಸಿದರೆ ದ್ರವ್ಯರಾಶಿಯ ಕೇಂದ್ರವು ಹೆಚ್ಚಿದ್ದರೆ ಅದನ್ನು ಉತ್ತಮವಾಗಿ ಸಮತೋಲನಗೊಳಿಸಬಹುದು. ದ್ರವ್ಯರಾಶಿಯ ಹೆಚ್ಚಿನ ಕೇಂದ್ರ ಎಂದರೆ ಜಡತ್ವದ ಹೆಚ್ಚಿನ ದ್ರವ್ಯರಾಶಿಯ ಕ್ಷಣ, ಇದು ಕಡಿಮೆ ಕೋನೀಯ ವೇಗವರ್ಧನೆಗೆ (ನಿಧಾನ ಪತನ) ಅನುರೂಪವಾಗಿದೆ. ಅದಕ್ಕಾಗಿಯೇ ನಾವು ಬ್ಯಾಟರಿ ಪ್ಯಾಕ್ ಅನ್ನು ಮೇಲೆ ಹಾಕುತ್ತೇವೆ. ಆದಾಗ್ಯೂ, ವಸ್ತುಗಳ ಲಭ್ಯತೆಯ ಆಧಾರದ ಮೇಲೆ ರೋಬೋಟ್‌ನ ಎತ್ತರವನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ 🙂

ಸ್ವಯಂ-ಸಮತೋಲನ ರೋಬೋಟ್‌ನ ಪೂರ್ಣಗೊಂಡ ಆವೃತ್ತಿಯನ್ನು ಮೇಲಿನ ಚಿತ್ರದಲ್ಲಿ ಕಾಣಬಹುದು. ಮೇಲ್ಭಾಗದಲ್ಲಿ ಶಕ್ತಿಗಾಗಿ ಆರು Ni-Cd ಬ್ಯಾಟರಿಗಳಿವೆ ಮುದ್ರಿತ ಸರ್ಕ್ಯೂಟ್ ಬೋರ್ಡ್. ಮೋಟಾರ್ಗಳ ನಡುವೆ, ಮೋಟಾರ್ ಡ್ರೈವರ್ಗಾಗಿ 9-ವೋಲ್ಟ್ ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.

ಸಿದ್ಧಾಂತ

ನಿಯಂತ್ರಣ ಸಿದ್ಧಾಂತದಲ್ಲಿ, ಕೆಲವು ವೇರಿಯಬಲ್ ಅನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವುದು (ಈ ಸಂದರ್ಭದಲ್ಲಿ ರೋಬೋಟ್‌ನ ಸ್ಥಾನ) ವಿಶೇಷ ನಿಯಂತ್ರಕವನ್ನು PID ಎಂದು ಕರೆಯುವ ಅಗತ್ಯವಿದೆ (ಅನುಪಾತದ ಇಂಟೆಗ್ರಲ್ ಡೆರಿವೇಟಿವ್). ಈ ಪ್ರತಿಯೊಂದು ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು "ಲಾಭ" ವನ್ನು ಹೊಂದಿದೆ, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ Kp, Ki ಮತ್ತು Kd ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. PID ಅಪೇಕ್ಷಿತ ಮೌಲ್ಯ (ಅಥವಾ ಇನ್ಪುಟ್) ಮತ್ತು ನಿಜವಾದ ಮೌಲ್ಯ (ಅಥವಾ ಔಟ್ಪುಟ್) ನಡುವೆ ತಿದ್ದುಪಡಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಇನ್ಪುಟ್ ಮತ್ತು ಔಟ್ಪುಟ್ ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು "ದೋಷ" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.

PID ನಿಯಂತ್ರಕವು ಔಟ್‌ಪುಟ್ ಅನ್ನು ನಿರಂತರವಾಗಿ ಸರಿಹೊಂದಿಸುವ ಮೂಲಕ ದೋಷವನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಚಿಕ್ಕ ಮೌಲ್ಯಕ್ಕೆ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ನಮ್ಮ ಸ್ವಯಂ-ಸಮತೋಲನ Arduino ರೋಬೋಟ್‌ನಲ್ಲಿ, ಇನ್‌ಪುಟ್ (ಇದು ಡಿಗ್ರಿಗಳಲ್ಲಿ ಅಪೇಕ್ಷಿತ ಇಳಿಜಾರು) ಅನ್ನು ಸಾಫ್ಟ್‌ವೇರ್‌ನಿಂದ ಹೊಂದಿಸಲಾಗಿದೆ. MPU6050 ರೋಬೋಟ್‌ನ ಪ್ರಸ್ತುತ ಟಿಲ್ಟ್ ಅನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ಮೋಟಾರ್ ಅನ್ನು ನಿಯಂತ್ರಿಸಲು ಮತ್ತು ರೋಬೋಟ್ ಅನ್ನು ನೇರವಾಗಿ ಇರಿಸಲು ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ನಿರ್ವಹಿಸುವ PID ಅಲ್ಗಾರಿದಮ್‌ಗೆ ಅದನ್ನು ಫೀಡ್ ಮಾಡುತ್ತದೆ.

PID ಗೆ Kp, Ki ಮತ್ತು Kd ಮೌಲ್ಯಗಳನ್ನು ಸೂಕ್ತ ಮೌಲ್ಯಗಳಿಗೆ ಹೊಂದಿಸುವ ಅಗತ್ಯವಿದೆ. ಎಂಜಿನಿಯರ್‌ಗಳು ಬಳಸುತ್ತಾರೆ ಸಾಫ್ಟ್ವೇರ್, MATLAB ನಂತಹ, ಈ ಮೌಲ್ಯಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು. ದುರದೃಷ್ಟವಶಾತ್, ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ ನಾವು MATLAB ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ ಏಕೆಂದರೆ ಇದು ಯೋಜನೆಯನ್ನು ಇನ್ನಷ್ಟು ಸಂಕೀರ್ಣಗೊಳಿಸುತ್ತದೆ. ಬದಲಾಗಿ, ನಾವು PID ಮೌಲ್ಯಗಳನ್ನು ಟ್ಯೂನ್ ಮಾಡುತ್ತೇವೆ. ಇದನ್ನು ಹೇಗೆ ಮಾಡಬೇಕೆಂದು ಇಲ್ಲಿದೆ:

  1. Kp, Ki ಮತ್ತು Kd ಅನ್ನು ಶೂನ್ಯಕ್ಕೆ ಹೊಂದಿಸಿ.
  2. ಕೆಪಿ ಹೊಂದಿಸಿ. ತುಂಬಾ ಕಡಿಮೆ Kp ರೋಬೋಟ್ ಬೀಳಲು ಕಾರಣವಾಗುತ್ತದೆ ಏಕೆಂದರೆ ಫಿಕ್ಸ್ ಸಾಕಾಗುವುದಿಲ್ಲ. ತುಂಬಾ ಕೆಪಿ ರೋಬೋಟ್ ಅನ್ನು ಹಿಂದಕ್ಕೆ ಮತ್ತು ಮುಂದಕ್ಕೆ ಹೋಗುವಂತೆ ಮಾಡುತ್ತದೆ. ಉತ್ತಮ Kp ರೋಬೋಟ್ ಅನ್ನು ಸ್ವಲ್ಪ ಹಿಂದಕ್ಕೆ ಮತ್ತು ಮುಂದಕ್ಕೆ ಒಲವು ಮಾಡುತ್ತದೆ (ಅಥವಾ ಸ್ವಲ್ಪ ಆಂದೋಲನಗೊಳ್ಳುತ್ತದೆ).
  3. Kp ಅನ್ನು ಹೊಂದಿಸಿದ ನಂತರ, Kd ಅನ್ನು ಹೊಂದಿಸಿ. ರೋಬೋಟ್ ಬಹುತೇಕ ಸ್ಥಿರವಾಗುವವರೆಗೆ ಉತ್ತಮ Kd ಮೌಲ್ಯವು ಆಂದೋಲನಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಅಲ್ಲದೆ, ಸರಿಯಾದ Kd ತಳ್ಳಿದರೂ ಸಹ ರೋಬೋಟ್ ಅನ್ನು ಇರಿಸುತ್ತದೆ.
  4. ಅಂತಿಮವಾಗಿ, ಕಿ ಅನ್ನು ಸ್ಥಾಪಿಸಿ. ಆನ್ ಮಾಡಿದಾಗ, Kp ಮತ್ತು Kd ಹೊಂದಿಸಿದ್ದರೂ ಸಹ ರೋಬೋಟ್ ಆಂದೋಲನಗೊಳ್ಳುತ್ತದೆ, ಆದರೆ ಕಾಲಾನಂತರದಲ್ಲಿ ಸ್ಥಿರಗೊಳ್ಳುತ್ತದೆ. ಸರಿಯಾದ ಕಿ ಮೌಲ್ಯವು ರೋಬೋಟ್ ಅನ್ನು ಸ್ಥಿರಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಸಮಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ರೋಬೋಟ್‌ನ ನಡವಳಿಕೆಯನ್ನು ವೀಡಿಯೊದಲ್ಲಿ ಕೆಳಗೆ ನೋಡಬಹುದು:

ಸ್ವಯಂ-ಸಮತೋಲನ ರೋಬೋಟ್‌ಗಾಗಿ Arduino ಕೋಡ್

ನಮ್ಮ ರೋಬೋಟ್ ಅನ್ನು ರಚಿಸಲು ನಮಗೆ ನಾಲ್ಕು ಬಾಹ್ಯ ಗ್ರಂಥಾಲಯಗಳ ಅಗತ್ಯವಿದೆ. PID ಲೈಬ್ರರಿಯು P, I ಮತ್ತು D ಮೌಲ್ಯಗಳನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಸುಲಭಗೊಳಿಸುತ್ತದೆ. L298N ಮಾಡ್ಯೂಲ್‌ನೊಂದಿಗೆ ಎರಡು ಮೋಟಾರ್‌ಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು LMotorController ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. I2Cdev ಲೈಬ್ರರಿ ಮತ್ತು MPU6050_6_Axis_MotionApps20 ಲೈಬ್ರರಿಯನ್ನು MPU6050 ನಿಂದ ಡೇಟಾವನ್ನು ಓದಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಈ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ನೀವು ಲೈಬ್ರರಿಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಕೋಡ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು.

#ಸೇರಿಸು #ಸೇರಿಸು #include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif #define MIN_ABS_MPUED;605; // MPU ನಿಯಂತ್ರಣ/ಸ್ಥಿತಿ ವರ್ಸ್ bool dmpReady = ತಪ್ಪು; // DMP init ಯಶಸ್ವಿಯಾದರೆ ಸರಿ ಹೊಂದಿಸಿ uint8_t mpuIntStatus; // MPU uint8_t devStatus ನಿಂದ ನಿಜವಾದ ಅಡಚಣೆ ಸ್ಥಿತಿ ಬೈಟ್ ಅನ್ನು ಹೊಂದಿದೆ; // ಪ್ರತಿ ಸಾಧನದ ಕಾರ್ಯಾಚರಣೆಯ ನಂತರ ಸ್ಥಿತಿ ಹಿಂತಿರುಗಿ (0 = ಯಶಸ್ಸು, !0 = ದೋಷ) uint16_t packetSize; // ನಿರೀಕ್ಷಿತ DMP ಪ್ಯಾಕೆಟ್ ಗಾತ್ರ (ಡೀಫಾಲ್ಟ್ 42 ಬೈಟ್‌ಗಳು) uint16_t fifoCount; // ಪ್ರಸ್ತುತ FIFO uint8_t fifoBuffer ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಬೈಟ್‌ಗಳ ಎಣಿಕೆ; // FIFO ಶೇಖರಣಾ ಬಫರ್ // ಓರಿಯಂಟೇಶನ್/ಮೋಷನ್ ವರ್ಸ್ ಕ್ವಾಟರ್ನಿಯನ್ ಕ್ಯೂ; // ಕ್ವಾಟರ್ನಿಯನ್ ಕಂಟೇನರ್ ವೆಕ್ಟರ್ ಫ್ಲೋಟ್ ಗುರುತ್ವ; // ಗುರುತ್ವ ವೆಕ್ಟರ್ ಫ್ಲೋಟ್ ypr; // ಯಾವ್/ಪಿಚ್/ರೋಲ್ ಕಂಟೇನರ್ ಮತ್ತು ಗ್ರಾವಿಟಿ ವೆಕ್ಟರ್ //PID ಡಬಲ್ ಒರಿಜಿನಲ್‌ಸೆಟ್‌ಪಾಯಿಂಟ್ = 173; ಡಬಲ್ ಸೆಟ್‌ಪಾಯಿಂಟ್ = ಮೂಲ ಸೆಟ್‌ಪಾಯಿಂಟ್; ಡಬಲ್ ಮೂವಿಂಗ್ ಆಂಗಲ್ಆಫ್ಸೆಟ್ = 0.1; ಡಬಲ್ ಇನ್ಪುಟ್, ಔಟ್ಪುಟ್; //ನಿಮ್ಮ ಸ್ವಂತ ವಿನ್ಯಾಸ ಡಬಲ್ Kp = 50 ಗೆ ಸರಿಹೊಂದುವಂತೆ ಈ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿಸಿ; ಡಬಲ್ ಕೆಡಿ = 1.4; ಡಬಲ್ ಕಿ = 60; PID pid (&ಇನ್ಪುಟ್, &ಔಟ್ಪುಟ್, &ಸೆಟ್ಪಾಯಿಂಟ್, Kp, Ki, Kd, ​​DIRECT); ಡಬಲ್ ಮೋಟಾರ್‌ಸ್ಪೀಡ್‌ಫ್ಯಾಕ್ಟರ್‌ಲೆಫ್ಟ್ = 0.6; ಡಬಲ್ ಮೋಟಾರ್ಸ್ಪೀಡ್ ಫ್ಯಾಕ್ಟರ್ ರೈಟ್ = 0.5; //ಮೋಟಾರ್ ಕಂಟ್ರೋಲರ್ ಇಂಟ್ ENA = 5; ಇಂಟ್ IN1 = 6; ಇಂಟ್ IN2 = 7; ಇಂಟ್ IN3 = 8; ಇಂಟ್ IN4 = 9; ಇಂಟ್ ENB = 10; LMotorController ಮೋಟಾರ್ ಕಂಟ್ರೋಲರ್(ENA, IN1, IN2, ENB, IN3, IN4, motorSpeedFactorLeft, motorSpeedFactorRight); ಬಾಷ್ಪಶೀಲ bool mpuInterrupt = ತಪ್ಪು; // MPU ಇಂಟರಪ್ಟ್ ಪಿನ್ ಹೆಚ್ಚಿನ ಅನೂರ್ಜಿತವಾಗಿದೆಯೇ ಎಂದು ಸೂಚಿಸುತ್ತದೆ dmpDataReady() (mpuInterrupt = true; ) void setup() ( // I2C ಬಸ್‌ಗೆ ಸೇರಿಕೊಳ್ಳಿ (I2Cdev ಲೈಬ್ರರಿ ಇದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮಾಡುವುದಿಲ್ಲ) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_begin(WI2CDEV_ARDUINO_begin) ); TWBR = 24; // 400kHz I2C ಗಡಿಯಾರ (ಸಿಪಿಯು 8MHz ಆಗಿದ್ದರೆ 200kHz) #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE ಫಾಸ್ಟ್‌ವೈರ್::ಸೆಟಪ್(400, ನಿಜ); // ನಿಮ್ಮ ಸ್ವಂತ ಗೈರೊ ಆಫ್‌ಸೆಟ್‌ಗಳನ್ನು ಇಲ್ಲಿ ಪೂರೈಸಿ, ನಿಮಿಷ ಸಂವೇದನಾಶೀಲತೆಗಾಗಿ ಸ್ಕೇಲ್ ಮಾಡಲಾಗಿದೆ mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset(1788); // 1688 ಫ್ಯಾಕ್ಟರಿಗಾಗಿ ನನ್ನ ಡೀಫಾಲ್ಟ್ ಚಿಪ್ // ಅದು ಕೆಲಸ ಮಾಡಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ (ಹಾಗಿದ್ದರೆ 0 ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ) (devStatus == 0) (// DMP ಅನ್ನು ಆನ್ ಮಾಡಿ, ಈಗ ಅದು ಸಿದ್ಧವಾಗಿದೆ mpu.setDMPEnabled (ನಿಜ); // Arduino ಅಡಚಣೆ ಪತ್ತೆ ಅಟ್ಯಾಚ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿInterrupt(0 , dmpDataReady , RISING); mpuIntStatus = mpu.getIntStatus (); // ನಮ್ಮ DMP ರೆಡಿ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸಿ ಆದ್ದರಿಂದ ಮುಖ್ಯ ಲೂಪ್ () ಕಾರ್ಯವು ಅದನ್ನು ಬಳಸಲು ಸರಿಯಾಗಿದೆ ಎಂದು ತಿಳಿಯುತ್ತದೆ dmpReady = true; // ನಂತರದ ಹೋಲಿಕೆಗಾಗಿ ನಿರೀಕ್ಷಿತ DMP ಪ್ಯಾಕೆಟ್ ಗಾತ್ರವನ್ನು ಪಡೆಯಿರಿ packetSize = mpu.dmpGetFIFOPacketSize(); //ಸೆಟಪ್ PID pid.SetMode(AUTOMATIC); pid.SetSampleTime(10); ಪಿಡ್. SetOutputLimits(-255, 255); ) ಬೇರೆ (// ದೋಷ! // 1 = ಆರಂಭಿಕ ಮೆಮೊರಿ ಲೋಡ್ ವಿಫಲವಾಗಿದೆ // 2 = DMP ಕಾನ್ಫಿಗರೇಶನ್ ನವೀಕರಣಗಳು ವಿಫಲವಾಗಿದೆ // (ಇದು" ಮುರಿದು ಹೋದರೆ, ಸಾಮಾನ್ಯವಾಗಿ ಕೋಡ್ 1 ಆಗಿರುತ್ತದೆ) Serial.print(F("DMP ಇನಿಶಿಯಲೈಸೇಶನ್) ವಿಫಲವಾಗಿದೆ (ಕೋಡ್ ")); Serial.print(devStatus); Serial.println(F(")")); ) void loop() ( // ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವಿಫಲವಾದರೆ, (!dmpReady) ಏನನ್ನೂ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಬೇಡಿ ) ಹಿಂತಿರುಗಿ;< packetSize) { //no mpu data - performing PID calculations and output to motors pid.Compute(); motorController.move(output, MIN_ABS_SPEED); } // reset interrupt flag and get INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus(); // get current FIFO count fifoCount = mpu.getFIFOCount(); // check for overflow (this should never happen unless our code is too inefficient) if ((mpuIntStatus & 0x10) || fifoCount == 1024) { // reset so we can continue cleanly mpu.resetFIFO(); Serial.println(F("FIFO overflow!")); // otherwise, check for DMP data ready interrupt (this should happen frequently) } else if (mpuIntStatus & 0x02) { // wait for correct available data length, should be a VERY short wait while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount(); // read a packet from FIFO mpu.getFIFOBytes(fifoBuffer, packetSize); // track FIFO count here in case there is >1 ಪ್ಯಾಕೆಟ್ ಲಭ್ಯವಿದೆ // (ಇದು ಅಡಚಣೆಗಾಗಿ ಕಾಯದೆ ತಕ್ಷಣವೇ ಹೆಚ್ಚಿನದನ್ನು ಓದಲು ನಮಗೆ ಅನುಮತಿಸುತ್ತದೆ) fifoCount -= packetSize; mpu.dmpGetQuaternion(&q, fifoBuffer); mpu.dmpGetGravity(&ಗ್ರಾವಿಟಿ, &q); mpu.dmpGetYawPitchRoll(ypr, &q, & gravity); ಇನ್ಪುಟ್ = ypr * 180/M_PI + 180; ))

Kp, Ki, Kd ಮೌಲ್ಯಗಳು ಕೆಲಸ ಮಾಡಬಹುದು ಅಥವಾ ಕೆಲಸ ಮಾಡದಿರಬಹುದು. ಅವರು ಮಾಡದಿದ್ದರೆ, ಮೇಲಿನ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ. ಕೋಡ್‌ನಲ್ಲಿನ ಟಿಲ್ಟ್ ಅನ್ನು 173 ಡಿಗ್ರಿಗಳಿಗೆ ಹೊಂದಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ನೀವು ಬಯಸಿದರೆ ನೀವು ಈ ಮೌಲ್ಯವನ್ನು ಬದಲಾಯಿಸಬಹುದು, ಆದರೆ ಇದು ರೋಬೋಟ್ ಬೆಂಬಲಿಸಬೇಕಾದ ಕೋನವಾಗಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಅಲ್ಲದೆ, ನಿಮ್ಮ ಮೋಟಾರ್‌ಗಳು ತುಂಬಾ ವೇಗವಾಗಿದ್ದರೆ, ನೀವು ಮೋಟಾರ್‌ಸ್ಪೀಡ್‌ಫ್ಯಾಕ್ಟರ್‌ಲೆಫ್ಟ್ ಮತ್ತು ಮೋಟಾರ್‌ಸ್ಪೀಡ್‌ಫ್ಯಾಕ್ಟರ್ ರೈಟ್ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿಸಬಹುದು.

ಈಗ ಅಷ್ಟೆ. ನಿಮ್ಮನ್ನು ನೋಡಿ.

ಈ ಲೇಖನದಲ್ಲಿ, ನಾವು ನಮ್ಮ ರೋಬೋಟ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ನಿರ್ಮಿಸುತ್ತೇವೆ. ನಾವು ಏನು ಪಡೆಯುತ್ತೇವೆ, ಕೆಳಗಿನ ಫೋಟೋವನ್ನು ನೋಡಿ. ರೋಬೋಟ್ ಸ್ವತಂತ್ರವಾಗಿ ಮತ್ತು ಸ್ಮಾರ್ಟ್‌ಫೋನ್‌ನ ನಿಯಂತ್ರಣದಲ್ಲಿ ಚಾಲನೆ ಮಾಡುತ್ತದೆ. ನಾವು ಮೊದಲಿನಿಂದಲೂ ನಮ್ಮ ಸ್ವಂತ ಮೊಬೈಲ್ ರೋಬೋಟ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ನೋಡುತ್ತೇವೆ.

3 ಡಿಮುದ್ರಕ

ನಾನು ರೋಬೋಟ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಬಯಸಿದರೆ, ನಾನು ಮೋಟಾರ್ಗಳು, ಬೋರ್ಡ್ಗಳು, ಬ್ಯಾಟರಿಗಳನ್ನು ಸ್ಥಾಪಿಸುವ ವೇದಿಕೆಯ ಮೇಲೆ ನಾನು ನಿರ್ಧರಿಸಬೇಕು. ಸಹಜವಾಗಿ, ನಾನು ಸಿದ್ಧ ಆವೃತ್ತಿಯನ್ನು ಖರೀದಿಸಬಹುದು, ಆದರೆ ವೇದಿಕೆಯನ್ನು ನೀವೇ ಮಾಡಲು ಹೆಚ್ಚು ಆಸಕ್ತಿಕರವಾಗಿದೆ. ಅಂತಹ ವೇದಿಕೆಯು ಖಂಡಿತವಾಗಿಯೂ ನಿಮ್ಮ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸುತ್ತದೆ. ವೇದಿಕೆಯನ್ನು org ನಿಂದ ತಯಾರಿಸಬಹುದು. ಗಾಜು, ಪ್ಲೈವುಡ್, ಮತ್ತು ನಾನು ಅದನ್ನು ಪ್ಲಾಸ್ಟಿಕ್‌ನಿಂದ ಮಾಡುತ್ತೇನೆ.

ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ನೀವೇ ಮಾಡಲು ಅನಾನುಕೂಲವಾಗಿದೆ ಎಂದು ನೀವು ಹೇಳಬಹುದು ಮತ್ತು ಸೆಂಟರ್ ಪಂಚ್‌ನಿಂದ ನಿಮಗೆ ಸಾಕಷ್ಟು ಉಪಕರಣಗಳು ಬೇಕಾಗುತ್ತವೆ ರುಬ್ಬುವ ಯಂತ್ರ. ಮತ್ತು ನಮಗೆ ಕಲ್ಪನೆ ಮತ್ತು 3D ಪ್ರಿಂಟರ್ ಅಗತ್ಯವಿದೆ ಎಂದು ನಾನು ಹೇಳುತ್ತೇನೆ.

3D ಪ್ರಿಂಟರ್? ಪ್ರತಿಯೊಬ್ಬರೂ ಬಹುಶಃ A4 ನಲ್ಲಿ ನಮಗೆ ಅಗತ್ಯವಿರುವ ಪಠ್ಯವನ್ನು ಮುದ್ರಿಸಬಹುದಾದ ಸಾಮಾನ್ಯ ಕಚೇರಿ ಮುದ್ರಕದೊಂದಿಗೆ ಪರಿಚಿತರಾಗಿದ್ದಾರೆ. ಆದ್ದರಿಂದ, 3D ಮುದ್ರಕವು ಅಪೇಕ್ಷಿತ ಭಾಗವನ್ನು ಮುದ್ರಿಸಬಹುದಾದ ಮುದ್ರಕವಾಗಿದೆ. ವಿವಿಧ 3ಡಿ ಮುದ್ರಕಗಳಿವೆ. ನನ್ನ ಬಳಿ ಎಫ್‌ಡಿಎಂ ತಂತ್ರಜ್ಞಾನವಿರುವ ಪ್ರಿಂಟರ್ ಇದೆ (ಲೇಯರ್ ಬೈ ಲೇಯರ್ ಠೇವಣಿ). ಇತರ ಯಾವ 3ಡಿ ಮುದ್ರಣ ತಂತ್ರಜ್ಞಾನಗಳು ಲಭ್ಯವಿವೆ ಎಂಬುದನ್ನು ಅಂತರ್ಜಾಲದಲ್ಲಿ ಕಾಣಬಹುದು.

ಅನೇಕ 3D ಮುದ್ರಕಗಳು Arduino ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ. ನೀವು ಬಯಸಿದರೆ, ನಿಮ್ಮ ಸ್ವಂತ 3D ಪ್ರಿಂಟರ್ ಅನ್ನು ನೀವು ನಿರ್ಮಿಸಬಹುದು. 3D ಪ್ರಿಂಟರ್‌ನ ಮುಖ್ಯ ಉಪಾಯವೆಂದರೆ ನೀವು ಸಂಪೂರ್ಣವಾಗಿ ಯಾವುದೇ ವಿಷಯವನ್ನು ಮುದ್ರಿಸಬಹುದು, ಆದರೆ ನಾವು ರೋಬೋಟ್‌ಗಾಗಿ ದೇಹವನ್ನು ಮುದ್ರಿಸುತ್ತೇವೆ.

ಮೊದಲಿಗೆ, ವೇದಿಕೆಯ ವಿವರಣೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸೋಣ. ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ 2 ಚಕ್ರಗಳಾಗಿರಬೇಕು ಮತ್ತು ಆರ್ಡುನೊ, ಪವರ್, ಮೋಟಾರ್‌ಗಳು ಮತ್ತು ಕೆಲವು ಸಂವೇದಕಗಳನ್ನು ಹೊಂದಿಸಬೇಕು ಎಂದು ನಾನು ಬಯಸುತ್ತೇನೆ.

ಈಗ ನೀವು ವೇದಿಕೆಯ ವಿನ್ಯಾಸವನ್ನು ಕಾಗದದ ಮೇಲೆ ಸೆಳೆಯಬೇಕು ಮತ್ತು ಅದರ ಮೇಲೆ ಅಗತ್ಯವಾದ ಘಟಕಗಳನ್ನು ಇರಿಸಬೇಕು. ಉದಾಹರಣೆಗೆ, ಈ ರೀತಿ.

ಲೇಔಟ್ ಸಿದ್ಧವಾದಾಗ, ನೀವು ವೇದಿಕೆಯ 3D ಮಾದರಿಯನ್ನು ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಇದಕ್ಕಾಗಿ ಹಲವು ಕಾರ್ಯಕ್ರಮಗಳಿವೆ. ನಾನು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುತ್ತೇನೆ. ಕಂಪಾಸ್‌ನೊಂದಿಗೆ ಹೇಗೆ ಕೆಲಸ ಮಾಡಬೇಕೆಂದು ನಾನು ಕಲಿಸುವುದಿಲ್ಲ, ಆದರೆ ನಿಮಗೆ ಆಸಕ್ತಿ ಇದ್ದರೆ, ನೀವು ಇಂಟರ್ನೆಟ್‌ನಲ್ಲಿ ನೋಡಬಹುದು ಅಥವಾ ಕಂಪಾಸ್‌ನಲ್ಲಿ ಪಾಠ ಮಾಡಲು ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ಕೇಳಬಹುದು.

ಇದು ನಾನು ಕಂಡುಕೊಂಡ ವೇದಿಕೆ.

ಅದರ ನಂತರ, ನೀವು 3D ಮಾದರಿಯನ್ನು 3D ಪ್ರಿಂಟರ್ ಮೂಲಕ ಅರ್ಥವಾಗುವ G- ಕೋಡ್ ಆಗಿ ಪರಿವರ್ತಿಸಬೇಕು. ಇದಕ್ಕಾಗಿ, ವಿಶೇಷ ಕಾರ್ಯಕ್ರಮಗಳಿವೆ - ಸ್ಲೈಸರ್ಗಳು. ನಾನು Sli3er ಸ್ಲೈಸರ್‌ನೊಂದಿಗೆ Repetier-Host ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದೇನೆ. ಭಾಗವು ಮುದ್ರಿಸಲು ಸಿದ್ಧವಾಗಿದೆ ಎಂದು ತೋರುತ್ತಿದೆ.

ಮತ್ತು ಮುದ್ರಿತ ಮಾದರಿ ಇಲ್ಲಿದೆ.

ಇತ್ತೀಚೆಗೆ ನಮಗೆ ಒಂದು ಕಲ್ಪನೆ ಇತ್ತು, ಮತ್ತು ಮುಗಿದ ಭಾಗವು ಈಗಾಗಲೇ ನಮ್ಮ ಮುಂದೆ ಇದೆ. 3D ಪ್ರಿಂಟರ್ ಸಹಾಯದಿಂದ, ನೀವು ಒಂದೇ ಪ್ರತಿಗಳಲ್ಲಿ ಅನನ್ಯ ವಿಷಯಗಳನ್ನು ರಚಿಸಬಹುದು. 3D ಪ್ರಿಂಟರ್ ಅದ್ಭುತವಾಗಿದೆ. ನಾನು ಎಲ್ಲರಿಗೂ ಸಲಹೆ ನೀಡುತ್ತೇನೆ!

ಮೋಟಾರ್ಸ್

ಈಗ ನಾವು ನಮ್ಮ ಮೊಬೈಲ್ ರೋಬೋಟ್ ಹೇಗೆ ಚಲಿಸುತ್ತದೆ ಎಂಬುದರ ಕುರಿತು ಯೋಚಿಸಬೇಕಾಗಿದೆ. ಮನಸ್ಸಿಗೆ ಬರುವ ಮೊದಲ ವಿಷಯವೆಂದರೆ ಚಕ್ರಗಳು. ಹಾಗಾಗಿ ಮಾಡೋಣ.

ಯಾರಾದರೂ ನೆನಪಿಸಿಕೊಂಡರೆ, ನಾವು ಈಗಾಗಲೇ ಮೋಟಾರ್ ಅನ್ನು Arduino ಗೆ ಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸಿದ್ದೇವೆ. ಯಾರು ನೆನಪಿಲ್ಲ, ತಿಳಿದಿಲ್ಲ ಅಥವಾ ಓದಿಲ್ಲ - ನೋಡಿ. MOSFET ಅನ್ನು ಬಳಸಿಕೊಂಡು ಮೋಟಾರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸುವಲ್ಲಿ ಗಮನಾರ್ಹ ನ್ಯೂನತೆಗಳಿವೆ - ತಿರುಗುವಿಕೆಯ ವೇಗ ಮತ್ತು ದಿಕ್ಕನ್ನು ತ್ವರಿತವಾಗಿ ಬದಲಾಯಿಸುವುದು ಅಸಾಧ್ಯ. ನೈಜವಾಗಿ ಮೋಟಾರ್‌ಗಳನ್ನು ಹೇಗೆ ನಿಯಂತ್ರಿಸಬೇಕೆಂದು ಆರ್ಡುನೊಗೆ ಕಲಿಸಲು ಇದು ಸಮಯ!

ಇದನ್ನು ಮಾಡಲು, ನೀವು L293D ಚಿಪ್ ಅನ್ನು ಬಳಸಬಹುದು. L293D ನಿಮಗೆ ಎರಡು ಮೋಟಾರ್‌ಗಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ನಿಯಂತ್ರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ, ಪ್ರತಿ ಚಾನಲ್‌ಗೆ 600 mA ಮತ್ತು ಗರಿಷ್ಠ ಪ್ರವಾಹ 1000 mA ವರೆಗೆ, ಮತ್ತು ನೀವು ಚಾನಲ್‌ಗಳನ್ನು ಸಂಯೋಜಿಸಿದರೆ, ನಂತರ 1200 mA ಮತ್ತು 2000 mA ಗರಿಷ್ಠ ಪ್ರವಾಹ. ನಾನು ಕೆಳಗೆ ಸಂಘದ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇನೆ.

ಆರಂಭಿಕರಿಗಾಗಿ, ಯಾವಾಗಲೂ, ಎಲ್ಲಿ ಮತ್ತು ಯಾವುದನ್ನು ಸಂಪರ್ಕಿಸಬೇಕು ಎಂಬುದನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ನೀವು ಡೇಟಾಶೀಟ್ ಅನ್ನು ನೋಡಬೇಕು. ಮೈಕ್ರೊ ಸರ್ಕ್ಯೂಟ್ಗಳ ಬಗ್ಗೆ ನಿಮಗೆ ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ, ಲೇಖನವನ್ನು ಓದುವುದು ಯೋಗ್ಯವಾಗಿದೆ.

ನಾವೀಗ ಆರಂಭಿಸೋಣ. ಒಂದು ಮೋಟರ್ನೊಂದಿಗೆ ಸರಳವಾದ ಯೋಜನೆಯನ್ನು ಜೋಡಿಸಿ ಮತ್ತು ಅದನ್ನು ತಿರುಗಿಸೋಣ. ಅಸೆಂಬ್ಲಿ ರೇಖಾಚಿತ್ರಕ್ಕೆ ಗಮನ ಕೊಡಿ.

ನಿಮಗೆ ಇಂಗ್ಲಿಷ್ ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ ಅಥವಾ ಡೇಟಾಶೀಟ್ ಅರ್ಥವಾಗದಿದ್ದರೆ, ಸಂಪರ್ಕದ ವಿವರಣೆ ಇಲ್ಲಿದೆ. ಮೈಕ್ರೊ ಸರ್ಕ್ಯೂಟ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಪ್ರತಿಯೊಬ್ಬರೂ ತಿಳಿದಿದ್ದಾರೆ ಅಥವಾ ಮೈಕ್ರೊ ಸರ್ಕ್ಯೂಟ್‌ಗಳ ಬಗ್ಗೆ ಲೇಖನದಿಂದ ಕಲಿತಿದ್ದಾರೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.

  • ಪಿನ್ 1 - ಮೋಟರ್ನ ತಿರುಗುವಿಕೆಯ ವೇಗಕ್ಕೆ ಜವಾಬ್ದಾರಿ. ಇದೇ ರೀತಿಯದ್ದು ಪಿನ್ 9 ನಲ್ಲಿದೆ. ಇದು 0 ರಿಂದ 255 ರವರೆಗಿನ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಇದನ್ನು PWM ಬಳಸಿ ಸುಲಭವಾಗಿ ಆಯೋಜಿಸಬಹುದು. ನಾನು EN ಅನ್ನು PWM ಅನ್ನು ಬೆಂಬಲಿಸುವ Arduino ನ ಐದನೇ ಪಿನ್‌ಗೆ ಸಂಪರ್ಕಿಸಿದೆ.
  • ಪಿನ್ಗಳು 2 ಮತ್ತು 7 - ಮೋಟರ್ನ ಚಲನೆಯ ದಿಕ್ಕಿನ ಜವಾಬ್ದಾರಿ. ಇದೇ ರೀತಿಯವುಗಳು ಪಿನ್‌ಗಳು 10 ಮತ್ತು 15 ರಲ್ಲಿವೆ. ಈ ಪಿನ್‌ಗಳಲ್ಲಿ ಒಂದಕ್ಕೆ ತರ್ಕವನ್ನು ಅನ್ವಯಿಸುವುದರಿಂದ ಮೋಟಾರ್ ಅನ್ನು ಒಂದು ದಿಕ್ಕಿನಲ್ಲಿ ತಿರುಗಿಸುತ್ತದೆ (ಮೋಟಾರ್‌ನ ಸಂಪರ್ಕವನ್ನು ಅವಲಂಬಿಸಿ), ತರ್ಕವನ್ನು ಇನ್ನೊಂದಕ್ಕೆ ಅನ್ವಯಿಸುವುದರಿಂದ ಮೋಟಾರ್ ಸ್ಪಿನ್ ಆಗುತ್ತದೆ ವಿರುದ್ಧ ದಿಕ್ಕಿನಲ್ಲಿ.
  • ಪಿನ್ಗಳು 3 ಮತ್ತು 6 - ನೀವು ಅವರಿಗೆ ಮೋಟಾರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಬೇಕು. ಧ್ರುವೀಯತೆಯು ಮುಖ್ಯವಲ್ಲ, ತಿರುಗುವಿಕೆಯ ದಿಕ್ಕು ಮಾತ್ರ ಸಂಪರ್ಕವನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಇದೇ - 11 ಮತ್ತು 14 ಪಿನ್‌ಗಳಲ್ಲಿ.
  • ಪಿನ್ಗಳು 4 ಮತ್ತು 5 ನೆಲವಾಗಿವೆ. ಇದಕ್ಕೆ ವಿವರಣೆಯ ಅಗತ್ಯವಿಲ್ಲ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ಇದೇ - 12 ಮತ್ತು 13.
  • ಪಿನ್ 8 - ಮೋಟಾರುಗಳಿಗೆ ಶಕ್ತಿ. ಇದು 4.5 ರಿಂದ 36 ವೋಲ್ಟ್ಗಳ ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಶಕ್ತಿಯನ್ನು ಪಡೆಯಬೇಕಾಗಿದೆ.
  • ಪಿನ್ 16 - ಆರ್ಡುನೊದಿಂದ ತಾರ್ಕಿಕ ಘಟಕವನ್ನು ಅದಕ್ಕೆ ಸರಬರಾಜು ಮಾಡಲಾಗುತ್ತದೆ. 5 ವೋಲ್ಟ್ಗಳು, ಏನಾದರೂ ಇದ್ದರೆ.

ಗ್ರೇಟ್! ಮೋಟಾರ್ ಸಂಪರ್ಕಗೊಂಡಿದೆ. ಈಗ ನೀವು ಕೋಡ್ ಮಾಡಬಹುದು.

#ಡಿಫೈನ್ FRW_BUT 7 //ಫಾರ್ವರ್ಡ್ ಬಟನ್ #ಡಿಫೈನ್ BCW_BUT 6 //ಬ್ಯಾಕ್ ಬಟನ್ #ಡಿಫೈನ್ SPD 5 //ತಿರುಗುವಿಕೆಯ ವೇಗ ನಿಯಂತ್ರಣ... #FRW 4 ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ //...ತಿರುಗುವ ದಿಕ್ಕನ್ನು (ಫಾರ್ವರ್ಡ್)... # BCW 3 ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ / /... ತಿರುಗುವಿಕೆಯ ದಿಕ್ಕು (ಹಿಂದಕ್ಕೆ) # SPD_POT A5 int xspeed = 0; // ಮೋಟಾರ್ ಇಂಟ್ frw_move = 0 ತಿರುಗುವಿಕೆಯ ವೇಗವನ್ನು ನಿರ್ಧರಿಸಲು ವೇರಿಯಬಲ್; // "ಫಾರ್ವರ್ಡ್" ಕಮಾಂಡ್ ಇಂಟ್ bcw_move = 0 ಗಾಗಿ ವೇರಿಯಬಲ್; //"ಬ್ಯಾಕ್" ಕಮಾಂಡ್ ನಿರರ್ಥಕ ಸೆಟಪ್ () ( // ಡಿಸೈನ್ ಪಿನ್‌ಗಳ ಪಿನ್‌ಮೋಡ್ (SPD, OUTPUT); ಪಿನ್‌ಮೋಡ್ (FRW, OUTPUT); ಪಿನ್‌ಮೋಡ್ (BCW, OUTPUT); ಪಿನ್‌ಮೋಡ್ (SPD_POT, INPUT); ಪಿನ್‌ಮೋಡ್ (FRW_BUT, INPUT_PULLUP ); ಪಿನ್‌ಮೋಡ್ (BCW_BUT, INPUT_PULLUP); ) ನಿರರ್ಥಕ ಲೂಪ್ () ( //ಪೊಟೆನ್ಟಿಯೊಮೀಟರ್‌ನಿಂದ ರೀಡಿಂಗ್‌ಗಳನ್ನು ಓದಿ //ಮತ್ತು ಅವುಗಳನ್ನು ಅಪೇಕ್ಷಿತ ಶ್ರೇಣಿಗೆ ತರಲು - 0 ರಿಂದ 255 ವರೆಗೆ // ನಂತರ - ಅದನ್ನು ವೇಗ ನಿಯಂತ್ರಣ ಪಿನ್ xspeed ಗೆ ರವಾನಿಸಿ = ಅನಲಾಗ್ ರೀಡ್ (SPD_POT); ನಿರ್ಬಂಧ (xspeed, 0, 1023); xspeed = ನಕ್ಷೆ (xspeed, 0, 1023, 0, 255); // ಫಾರ್ವರ್ಡ್ ಬಟನ್ ಒತ್ತಿದರೆ (!digitalRead(FRW_BUT)) (frw_move = 1; ) ಬೇರೆ (frw_move = 0; ) //"ಹಿಂದೆ" ಗುಂಡಿಯನ್ನು ಒತ್ತುವುದನ್ನು ನಿರ್ಧರಿಸಿದರೆ(!ಡಿಜಿಟಲ್‌ರೀಡ್(BCW_BUT)) (bcw_move = 1; ) ಬೇರೆ (bcw_move = 0; ) //L293D ಗೆ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಲು ಕಾರ್ಯಕ್ಕೆ ಕರೆ ಮಾಡಿ ಮೋಟಾರ್();

ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ? ಇದು ಸರಳವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ನೀವು ಎಡ ಗುಂಡಿಯನ್ನು ಒತ್ತಿದಾಗ, ಚಕ್ರವು ಒಂದು ದಿಕ್ಕಿನಲ್ಲಿ ತಿರುಗುತ್ತದೆ ಮತ್ತು ನೀವು ಬಲ ಗುಂಡಿಯನ್ನು ಒತ್ತಿದಾಗ ಅದು ಇನ್ನೊಂದು ದಿಕ್ಕಿನಲ್ಲಿ ತಿರುಗುತ್ತದೆ. ಪೊಟೆನ್ಟಿಯೊಮೀಟರ್ ನಾಬ್ ಅನ್ನು ತಿರುಗಿಸುವ ಮೂಲಕ, ನೀವು ಮೋಟರ್ನ ತಿರುಗುವಿಕೆಯ ವೇಗವನ್ನು ಸರಿಹೊಂದಿಸಬಹುದು. ನಮ್ಮ ಮೋಟಾರ್ ಟೆಸ್ಟ್ ರಿಗ್ನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ವೀಡಿಯೊದಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ.

ಝಡ್ ವೈ. ಹೌದು, ವೀಡಿಯೊದ ಗುಣಮಟ್ಟವು ಉತ್ತಮವಾಗಿಲ್ಲ ಎಂದು ನನಗೆ ತಿಳಿದಿದೆ, ಆದರೆ ನಾನು ಯೋಗ್ಯವಾದ ಕ್ಯಾಮೆರಾವನ್ನು ಹುಡುಕಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ ಮತ್ತು ಸಾಧ್ಯವಾದಷ್ಟು ಬೇಗ ಶೂಟ್ ಮಾಡಲು ಸ್ಥಳವನ್ನು ವ್ಯವಸ್ಥೆಗೊಳಿಸುತ್ತೇನೆ.

ಈಗ L293 ಚಾನಲ್‌ಗಳ ಸಂಪರ್ಕದ ಬಗ್ಗೆ. ನೀವು ಹೆಚ್ಚು ಶಕ್ತಿಯುತ ಮೋಟಾರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಬಯಸಿದರೆ, ನೀವು ಚಾನಲ್ಗಳನ್ನು ಸಂಯೋಜಿಸಬಹುದು.

ಮೈಕ್ರೋ ಸರ್ಕ್ಯೂಟ್ನ ಸಾದೃಶ್ಯದ ಔಟ್ಪುಟ್ಗಳನ್ನು ಸಮಾನಾಂತರವಾಗಿ ಸಂಪರ್ಕಿಸುವುದು ಮೊದಲ ಮಾರ್ಗವಾಗಿದೆ, ಇದು ಗರಿಷ್ಠ ಪ್ರಸ್ತುತ ಶಕ್ತಿಯನ್ನು ಎರಡು ಅಂಶಗಳಿಂದ ಹೆಚ್ಚಿಸುತ್ತದೆ. ಮೈನಸ್ - ಕೇವಲ ಒಂದು ಮೋಟಾರ್ ಅನ್ನು ಒಂದು ಮೈಕ್ರೋ ಸರ್ಕ್ಯೂಟ್ಗೆ ಸಂಪರ್ಕಿಸಬಹುದು.

ಎರಡನೆಯ ಮಾರ್ಗವೆಂದರೆ L293 ಮೇಲೆ ಮತ್ತೊಂದು L293 ಅನ್ನು ಬೆಸುಗೆ ಹಾಕುವುದು. ನಾವು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ ಮತ್ತು ಬೆಸುಗೆ ಪಿನ್ 1 ಗೆ ಪಿನ್ 1, ಪಿನ್ 2 ಗೆ ಪಿನ್ 2 ಮತ್ತು ಹೀಗೆ. ಈ ವಿಧಾನವು ಪ್ರಸ್ತುತ ಬಲದಲ್ಲಿ ಎರಡು ಬಾರಿ ಹೆಚ್ಚಳವನ್ನು ನೀಡುತ್ತದೆ, ಆದರೆ, ಮೊದಲನೆಯದಕ್ಕಿಂತ ಭಿನ್ನವಾಗಿ, ಇದು ಎರಡು ಮೋಟಾರ್ಗಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ನಿಯಂತ್ರಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಬಿಡುತ್ತದೆ. ನಿಮಗೆ ಒಂದು ಕಲ್ಪನೆ ಇರಬಹುದು - ನಾನು ಒಂದೆರಡು L293 ಗಳನ್ನು ಬೆಸುಗೆ ಹಾಕಬೇಕೇ? ದುರದೃಷ್ಟವಶಾತ್, ಮೈಕ್ರೊ ಸರ್ಕ್ಯೂಟ್ಗಳ ನಂತರದ ಬೆಸುಗೆ ಹಾಕುವಿಕೆಯು ಮತ್ತೊಂದು 600 mA ಯಿಂದ ಪ್ರಸ್ತುತ ಶಕ್ತಿಯ ಹೆಚ್ಚಳಕ್ಕೆ ಕಾರಣವಾಗುವುದಿಲ್ಲ. ಹೆಚ್ಚಳವು ಚಿಕ್ಕದಾಗಿರುತ್ತದೆ.

"ಓಹ್, ನಾನು ನನ್ನ 12-ವೋಲ್ಟ್ ಮೋಟಾರ್ ಅನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಬೇಕಾಗಿದೆ..." ಅಸಮಾಧಾನಗೊಳ್ಳಬೇಡಿ. ಹೆಚ್ಚು ಶಕ್ತಿಯುತ ಮೋಟಾರ್ಗಳಿಗಾಗಿ, ಹಿರಿಯ ಸಹೋದರ L293 - L298 ಸೂಕ್ತವಾಗಿದೆ, ಆದರೆ ಈಗ ನಾವು ಅದನ್ನು ಪರಿಗಣಿಸುವುದಿಲ್ಲ. ನಾವು ಇದನ್ನು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಮಾಡುತ್ತೇವೆ.

ಮೋಟಾರ್ ಶೀಲ್ಡ್

ಅಂತಹ ತಂತಿಗಳ ಬಂಡಲ್ನೊಂದಿಗೆ ಅದು ತುಂಬಾ ಉತ್ತಮವಾಗಿ ಕಾಣುವುದಿಲ್ಲ ಎಂದು ಒಪ್ಪಿಕೊಳ್ಳಿ. ಅದನ್ನು ತೊಡೆದುಹಾಕಲು, ನೀವು ಬೆಸುಗೆ ಹಾಕಲು ಮುದ್ರಿತ ಸರ್ಕ್ಯೂಟ್ ಅಥವಾ ಬ್ರೆಡ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ L293 ನೊಂದಿಗೆ ಸರ್ಕ್ಯೂಟ್ ಅನ್ನು ಬೆಸುಗೆ ಹಾಕಬಹುದು, ಆದರೆ ನೀವು ಬೆಸುಗೆ ಹಾಕಲು ಬಯಸದಿದ್ದರೆ ಅಥವಾ ಹೇಗೆ ಎಂದು ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ ಏನು? ಇದಕ್ಕಾಗಿ ಇವೆ ಟರ್ನ್ಕೀ ಪರಿಹಾರಗಳು Arduino ಗಾಗಿ ಗುರಾಣಿಗಳ ರೂಪದಲ್ಲಿ, ಉದಾಹರಣೆಗೆ. ನಾನು ಅವುಗಳಲ್ಲಿ ಒಂದನ್ನು ಕುರಿತು ಮಾತನಾಡುತ್ತೇನೆ - DK ಎಲೆಕ್ಟ್ರಾನಿಕ್ಸ್‌ನಿಂದ ಮೋಟಾರ್ ಶೀಲ್ಡ್ V1.

ಇಲ್ಲಿ, ವಾಸ್ತವವಾಗಿ, ಗುರಾಣಿಯ ಫೋಟೋ.

ಈ ಶೀಲ್ಡ್ ಎರಡು L293D ಗಳನ್ನು ಹೊಂದಿದೆ, ಇದು ನಿಮಗೆ ನಾಲ್ಕು ಮೋಟಾರ್‌ಗಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ನಿಯಂತ್ರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಸರ್ವೋಮೋಟರ್‌ಗಳಿಗೆ ಎರಡು ಸಂಪರ್ಕಗಳಿವೆ. ಪವರ್ ಅನ್ನು ಟರ್ಮಿನಲ್ ಬ್ಲಾಕ್‌ಗೆ ಅಥವಾ ಜಂಪರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿದ ಆರ್ಡುನೊ ವಿದ್ಯುತ್ ಸರಬರಾಜಿನಿಂದ ಸರಬರಾಜು ಮಾಡಲಾಗುತ್ತದೆ. ಜಿಗಿತಗಾರನು ಗುರಾಣಿಯಿಂದ ಆರ್ಡುನೊಗೆ ಶಕ್ತಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಸಹ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ಶೀಲ್ಡ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ವಿಶೇಷ ಗ್ರಂಥಾಲಯವಿದೆ. ನೀವು ಅದನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದು.

ಮಂಡಳಿಯ ಮೈನಸಸ್ಗೆ. 0, 1, 2, 13 ಹೊರತುಪಡಿಸಿ ಬಹುತೇಕ ಎಲ್ಲಾ ಡಿಜಿಟಲ್ ಪಿನ್‌ಗಳನ್ನು ಶೀಲ್ಡ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ. ನಮಗೆ ತಿಳಿದಿರುವಂತೆ, ಪಿನ್‌ಗಳು 0 ಮತ್ತು 1 ಅನ್ನು ಫರ್ಮ್‌ವೇರ್‌ಗಾಗಿ Arduino ಬಳಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ಬಳಸದಿರುವುದು ಉತ್ತಮ.

ಒಳ್ಳೆಯ ಬದಿಯೂ ಇದೆ. ನೀವು ಸರ್ವೋಗಳನ್ನು ಸಂಪರ್ಕಿಸದಿದ್ದರೆ, ಉದಾಹರಣೆಗೆ, ಪಿನ್ಗಳು 9 ಮತ್ತು 10 ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಲಾಗುತ್ತದೆ, ಮತ್ತು ನೀವು ಯಾವುದೇ ಮೋಟಾರ್ಗಳನ್ನು ಬಳಸದಿದ್ದರೆ, ಬಳಕೆಯಾಗದ ಮೋಟರ್ ಅನ್ನು ಅವಲಂಬಿಸಿ ಪಿನ್ಗಳು 3, 5, 6, 11 ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಲಾಗುತ್ತದೆ. ಮತ್ತು ಮುಂದೆ. ನಾವು ಇನ್ನೂ ಆರು ಅನಲಾಗ್ ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಬಯಸಿದಲ್ಲಿ, ಅದನ್ನು ಡಿಜಿಟಲ್ ಆಗಿ ಬಳಸಬಹುದು.

ಮೋಟಾರ್ಗಳನ್ನು ಸಂಪರ್ಕಿಸಲು ಪ್ರಾರಂಭಿಸೋಣ. ಪ್ರಯೋಗದ ಸಲುವಾಗಿ, ನಾವು ಮುಂದೆ, ಹಿಂದಕ್ಕೆ ಚಲಿಸುವ ಮತ್ತು ತನ್ನದೇ ಆದ ಅಕ್ಷದ ಸುತ್ತ ತಿರುಗುವ ರೋಬೋಟ್ ಅನ್ನು ತಯಾರಿಸುತ್ತೇವೆ. ವೇದಿಕೆಯಾಗಿ, ಮೇಲೆ ವಿವರಿಸಿದ ನನ್ನ ಸ್ವಂತ ಅಭಿವೃದ್ಧಿಯನ್ನು ನಾನು ತೆಗೆದುಕೊಂಡೆ. ನಿಮ್ಮ ಹೃದಯದ ಆಸೆಗಳನ್ನು ನೀವು ತೆಗೆದುಕೊಳ್ಳಬಹುದು, ಮುಖ್ಯ ವಿಷಯವೆಂದರೆ ಅದು ಗುಣಲಕ್ಷಣಗಳ ವಿಷಯದಲ್ಲಿ ಸೂಕ್ತವಾಗಿದೆ.

ನಮಗೆ ಬೇಕಾಗುತ್ತದೆ

  • Arduino UNO - ಯಾವುದೇ ಇತರ Arduino UNO ಫಾರ್ಮ್ ಫ್ಯಾಕ್ಟರ್ ಅನ್ನು ಬಳಸಬಹುದು. ಲಿಯೊನಾರ್ಡೊ ಅಥವಾ ಇಸ್ಕ್ರಾ, ಉದಾಹರಣೆಗೆ.
  • ಮೋಟಾರ್ ಶೀಲ್ಡ್ - ಈ ಶೀಲ್ಡ್ನ ಇತರ ಆವೃತ್ತಿಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ.
  • 6V ಗಾಗಿ ಮೋಟಾರ್ಸ್ - ಮೋಟಾರ್ ಶೀಲ್ಡ್ನ ಗುಣಲಕ್ಷಣಗಳಿಗೆ ಸೂಕ್ತವಾದ ಯಾವುದನ್ನಾದರೂ ನೀವು ತೆಗೆದುಕೊಳ್ಳಬಹುದು.
  • 42 ಎಂಎಂ ಚಕ್ರಗಳು - ಮೋಟಾರ್‌ಗಳು ಮತ್ತು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಹೊಂದಿಸಲು ಚಕ್ರಗಳು
  • ಮೋಟಾರ್ ಆರೋಹಣಗಳು - ಮೋಟಾರುಗಳನ್ನು ವೇದಿಕೆಗೆ ಜೋಡಿಸಬೇಕು. ನಿಮಗೆ ಸರಿಹೊಂದುವದನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ.
  • ಪವರ್ - ನಾನು ಬ್ಯಾಟರಿ ಪ್ಯಾಕ್ ತೆಗೆದುಕೊಂಡು ಸುಮಾರು 5 ವೋಲ್ಟ್‌ಗಳನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೇನೆ, ಇದು ಮೋಟಾರ್‌ಗಳು ಮತ್ತು ಆರ್ಡುನೊಗೆ ಶಕ್ತಿ ತುಂಬಲು ಸಾಕಾಗುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ನಾನು DC / DC ಪರಿವರ್ತಕವನ್ನು ಸಂಪರ್ಕಿಸಿ ಮತ್ತು ವೋಲ್ಟೇಜ್ ಅನ್ನು 9V ಗೆ ಹೆಚ್ಚಿಸಿದೆ. ಯಾವುದೇ ಪರಿವರ್ತಕ ಇಲ್ಲದಿದ್ದರೆ, ಆರ್ಡುನೊ ವಿದ್ಯುತ್ ಸರಬರಾಜಿಗೆ ಸಂಪರ್ಕಿಸುವ ಮೂಲಕ ನೀವು ಸಾಮಾನ್ಯ ಕಿರೀಟವನ್ನು ಬಳಸಬಹುದು.

ನಮ್ಮ ರೋಬೋಟ್ ಅನ್ನು ಜೋಡಿಸಲು ಇದು ಸಮಯ.

ಹಂತ 1

ನಾವು Arduino ಮತ್ತು ಮೋಟಾರ್ ಶೀಲ್ಡ್ ಅನ್ನು ಸಂಪರ್ಕಿಸುತ್ತೇವೆ.

ಹಂತ 2

ನಾವು ಮೋಟಾರ್ಗಳನ್ನು ಜೋಡಿಸುತ್ತೇವೆ ಮತ್ತು ಅವುಗಳನ್ನು ವೇದಿಕೆಗೆ ಜೋಡಿಸುತ್ತೇವೆ.

ಹಂತ 3

ನಾವು ಬೂಸ್ಟ್ ಪರಿವರ್ತಕದ ಮೂಲಕ ಶಕ್ತಿಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ.

ಕ್ರೋನಾ ಹೊಂದಿರುವವರಿಗೆ. ಜಿಗಿತಗಾರನನ್ನು ಮರೆಯಬೇಡಿ!

ಹಂತ 4

ನಾವು ಮೋಟಾರ್‌ಗಳನ್ನು ಆರ್ಡುನೊದೊಂದಿಗೆ ಮೋಟಾರ್ ಶೀಲ್ಡ್‌ಗೆ ಜೋಡಿಸುತ್ತೇವೆ.

ಹಂತ 5

ನಾವು ಆಹಾರವನ್ನು ಸೇರಿಸುತ್ತೇವೆ.

ಹಂತ 6 (ಐಚ್ಛಿಕ)

ಮುಚ್ಚಳವನ್ನು ಲಗತ್ತಿಸಿ - ಸೌಂದರ್ಯಕ್ಕಾಗಿ.

ನಾವು ಸಿದ್ಧಪಡಿಸಿದ ರೋಬೋಟ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಈಗ ಅದನ್ನು ಪ್ರೋಗ್ರಾಂ ಮಾಡಲು ಸಮಯ. ಕೋಡ್ ಅನ್ನು ನೋಡೋಣ.

//ಮೋಟರ್ ಶೀಲ್ಡ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಲೈಬ್ರರಿಯನ್ನು ಸೇರಿಸಿ #ಸೇರಿಸು //ಟರ್ಮಿನಲ್ ಬ್ಲಾಕ್ ಸಂಖ್ಯೆ 2 AF_DCMotor l_motor(2) ನಲ್ಲಿ ಎಡ ಮೋಟರ್ ಅನ್ನು ನಿರ್ಧರಿಸಿ; //ಟರ್ಮಿನಲ್ ಬ್ಲಾಕ್ ಸಂಖ್ಯೆ 3 AF_DCMotor r_motor(3) ಗೆ ಸರಿಯಾದ ಮೋಟರ್ ಅನ್ನು ವಿವರಿಸಿ; //ವೇಗವನ್ನು ನಿರ್ಧರಿಸಲು ವೇರಿಯಬಲ್‌ಗಳು //ಮತ್ತು ಚಲನೆಯ ಸಮಯವನ್ನು ಇಂಟ್ ಎಸ್‌ಪಿಡಿ = 50; ಇಂಟಿಟೈಮ್ (1000); ಶೂನ್ಯ ಸೆಟಪ್ () ( //ಆರಂಭಿಕ ವೇಗವನ್ನು ಹೊಂದಿಸಿ ಮತ್ತು ಮೋಟಾರ್‌ಗಳನ್ನು ಆಫ್ ಮಾಡಿ l_motor.setSpeed(spd); l_motor.run (RELEASE); r_motor.setSpeed(100); r_motor.run(RELEASE); ) ಅನೂರ್ಜಿತ ಲೂಪ್ () ( // ರೈಡ್ ಫಾರ್ವರ್ಡ್ l_motor.run(FORWARD); r_motor.run(FORWARD); l_motor.setSpeed(spd); r_motor.setSpeed(spd); ವಿಳಂಬ(ಸಮಯ); // ಹಿಂದಕ್ಕೆ ಓಡಿಸಿ l_motor.run(BACKWARD); r_motor. ರನ್ (ಹಿಂಭಾಗಕ್ಕೆ); l_motor.setSpeed ​​(spd); r_motor.setSpeed ​​(spd); ವಿಳಂಬ (ಸಮಯ); // ಅಪ್ರದಕ್ಷಿಣಾಕಾರವಾಗಿ ಸ್ಪಿನ್ ಮಾಡಿ l_motor.run (FORWARD); r_motor.run (BACKWARD); l_motor.setSpeed ​​(spd); r_motor . setSpeed(spd); ವಿಳಂಬ(ಸಮಯ); // ಪ್ರದಕ್ಷಿಣಾಕಾರವಾಗಿ ಸ್ಪಿನ್ ಮಾಡಿ r_motor.run(FORWARD); l_motor.run(BACKWARD); l_motor.setSpeed(spd); r_motor.setSpeed(spd); ವಿಳಂಬ(ಸಮಯ); )

ಗ್ರೇಟ್! ಪರಿಶೀಲಿಸಲು ಸಮಯ. ನನ್ನ ಪರೀಕ್ಷೆಯ ವೀಡಿಯೊ ಇಲ್ಲಿದೆ. ನಿಮ್ಮ ಬಗ್ಗೆ ಏನು?

"ರೊಬೊಟಿಕ್ಸ್ ಬೋರ್ಡ್‌ಗಳ ಬಗ್ಗೆ ನೀವು ಏನಾದರೂ ಹೇಳಿದ್ದೀರಾ?" - ಕೋರ್ಸ್‌ನ ಭಾಗ 2 ರ ಪರಿಚಯಾತ್ಮಕ ಪಾಠವನ್ನು ಓದುವವರು ಹೇಳಬಹುದು. ಹೌದು, ಅಂತಹ ಶುಲ್ಕಗಳಿವೆ. ಸ್ಟ್ರೆಲಾ ರೊಬೊಟಿಕ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಪರಿಗಣಿಸಿ.

ರೊಬೊಟಿಕ್ಸ್ ಕನಸು. (ಬಹುತೇಕ). ನಾನು ಮಂಡಳಿಯ ಅನುಕೂಲಗಳನ್ನು ವಿವರಿಸಿದೆ. ನೇರವಾಗಿ ವಿಷಯಕ್ಕೆ.

ಅದರ ಮೇಲೆ, ಹಿರಿಯ ಸಹೋದರ L293 - L298 ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ಮತ್ತು ಪಿನ್‌ಗಳನ್ನು ಟ್ರಿಪಲ್‌ಗಳಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ, ಇದು ಅನೇಕ ಸಂವೇದಕಗಳನ್ನು ಸಂಪರ್ಕಿಸಲು ಸರಿಯಾಗಿದೆ.

Arduino UNO ಮತ್ತು ಮೋಟಾರ್ ಶೀಲ್ಡ್ ಬದಲಿಗೆ ಈ ಬೋರ್ಡ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಬಹುದು. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಆಂಪರ್ಕಾದ ವ್ಯಕ್ತಿಗಳು ಬಾಣದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಗ್ರಂಥಾಲಯವನ್ನು ಬರೆದರು, ಇದು ಮೋಟಾರ್‌ಗಳನ್ನು ನಿಯಂತ್ರಿಸುವುದನ್ನು ಕ್ಷುಲ್ಲಕ ಕೆಲಸವನ್ನಾಗಿ ಮಾಡುತ್ತದೆ.

ಗೊತ್ತಿಲ್ಲದವರಿಗೆ ಹೇಳುತ್ತೇನೆ. ಪ್ರತಿ ಸಾಮಾನ್ಯ ಗ್ರಂಥಾಲಯವು ಅದನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದರ ಉದಾಹರಣೆಗಳನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ಬಾಣದ ಗ್ರಂಥಾಲಯವು ಇದಕ್ಕೆ ಹೊರತಾಗಿಲ್ಲ. ಅವುಗಳನ್ನು ಹುಡುಕಲು, ಫೈಲ್ -> ಉದಾಹರಣೆಗಳು -> ಸ್ಟ್ರೆಲಾ ಟ್ಯಾಬ್‌ಗೆ ಹೋಗಿ. ಅಲ್ಲಿ ನಾವು ಸ್ಟ್ರೆಲಾಮೋಟರ್ಸ್ ಉದಾಹರಣೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇವೆ, ಅಲ್ಲಿ ಮೋಟಾರ್ ಶೀಲ್ಡ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಕೆಚ್ ಅನ್ನು ಹೋಲುವ ಸ್ಕೆಚ್ ಅನ್ನು ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ. ಮೂಲಕ, ಮೋಟಾರ್ ಶೀಲ್ಡ್ಗೆ ಉದಾಹರಣೆಗಳೂ ಇವೆ. ಆಸಕ್ತಿ ಇದ್ದರೆ, ಒಮ್ಮೆ ನೋಡಿ.

ಬಾಣದಿಂದ ನೀವು ಇನ್ನೇನು ಮಾಡಬಹುದು - ಕೆಳಗೆ ನೋಡಿ ಮತ್ತು ನಾವು ಬ್ಲೂಟೂತ್ ಮೂಲಕ ವೈರ್‌ಲೆಸ್ ಸಂವಹನಕ್ಕೆ ಹೋಗುತ್ತೇವೆ.

ಬ್ಲೂಟೂತ್

ಕೋಣೆಯ ಸುತ್ತಲೂ ಸ್ವತಃ ಓಡಿಸುವ ರೋಬೋಟ್ ಒಳ್ಳೆಯದು, ಆದರೆ ನಾನು ರೋಬೋಟ್ ಅನ್ನು ನಾನೇ ನಡೆಸಲು ಬಯಸುತ್ತೇನೆ. ಇದನ್ನು ಮಾಡಲು, ನೀವು Arduino ಮತ್ತು ನಿಯಂತ್ರಣ ಸಾಧನದ ನಡುವೆ ಸಂಪರ್ಕವನ್ನು ಸಂಘಟಿಸಬೇಕು.

ನಿಯಂತ್ರಣ ಸಾಧನವಾಗಿ, ನಾನು ಸ್ಮಾರ್ಟ್ಫೋನ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ್ದೇನೆ. ನಾವು ಬ್ಲೂಟೂತ್ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸಂವಹನವನ್ನು ಆಯೋಜಿಸುತ್ತೇವೆ, ಆದ್ದರಿಂದ ಪರಿಚಯ ಮಾಡಿಕೊಳ್ಳುವ ಸಮಯ.

ಇದು HC-06 ಮಾಡ್ಯೂಲ್ ಆಗಿದೆ. ನಾನು ಹೆಚ್ಚು ವಿವರಗಳಿಗೆ ಹೋಗುವುದಿಲ್ಲ, ಆದರೆ ನಿಮಗೆ ಆಸಕ್ತಿ ಇದ್ದರೆ, ನಾವು ಮುಂದುವರಿಯೋಣ. ಸ್ಮಾರ್ಟ್‌ಫೋನ್‌ನಿಂದ ರೋಬೋಟ್ ಅನ್ನು ತಿರುಗಿಸುವುದು ನಮ್ಮ ಗುರಿಯಾಗಿದೆ. ಬಹುಶಃ ಪ್ರಾರಂಭಿಸೋಣ.

ಮೊದಲು ನೀವು HC-06 ಅನ್ನು Arduino ಗೆ ಸಂಪರ್ಕಿಸಬೇಕು. ನಾವು ಸಾಫ್ಟ್‌ವೇರ್ ಸೀರಿಯಲ್ ಬಳಸಿ ಸಂಪರ್ಕಿಸುತ್ತೇವೆ. ನಮಗೆ ಅಗತ್ಯವಿರುವ ಪಿನ್‌ಗಳಲ್ಲಿ ಸೀರಿಯಲ್ ಪೋರ್ಟ್ ಅನ್ನು ಅನುಕರಿಸಲು ಈ ಲೈಬ್ರರಿ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಪ್ರಯೋಗದ ಸಲುವಾಗಿ, ಇದನ್ನು A0(RX) ಮತ್ತು A1(TX) ಪಿನ್‌ಗಳಲ್ಲಿ ಮಾಡಲು ಪ್ರಯತ್ನಿಸೋಣ. ಯಾವುದಕ್ಕಾಗಿ? ಮೋಟಾರ್ ಶೀಲ್ಡ್ ಬಗ್ಗೆ ನಾನು ಹೇಳಿದ್ದನ್ನು ನೆನಪಿಸಿಕೊಳ್ಳಿ.

ನಾವು ಈ ರೀತಿ ಸಂಪರ್ಕಿಸುತ್ತೇವೆ:

  • Vcc - 5V ಗೆ
  • GND ಗೆ GND
  • RX ನಿಂದ TX
  • TX ನಿಂದ RX

ನಾವು ಮೇಲೆ ನಿರ್ಮಿಸಿದ ರೋಬೋಟ್‌ಗೆ ನಾನು HC-06 ಅನ್ನು ಸಂಪರ್ಕಿಸುತ್ತೇನೆ. ಇದನ್ನು ಮಾಡಲು, ನಾವು ಮೋಟಾರ್ ಶೀಲ್ಡ್ನಲ್ಲಿ ಮೂರು ಪಟ್ಟಿಗಳನ್ನು ಬಳಸುತ್ತೇವೆ.

ರೋಬೋಟ್ ಸಿದ್ಧವಾಗಿದೆ. ಇದು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಲು ಉಳಿದಿದೆ.

ಕೋಡ್ ಅನ್ನು ಓದುವ ಮೊದಲು, ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಕೆಲವು ವಿಷಯಗಳಿವೆ. ಈ ಜಗತ್ತಿನಲ್ಲಿರುವ ಎಲ್ಲದರಂತೆ ಮೋಟಾರ್‌ಗಳು ಪರಿಪೂರ್ಣವಾಗಿಲ್ಲ. ಪರಸ್ಪರ ಅನುಸರಿಸುವ ಒಂದೇ ಬ್ಯಾಚ್‌ನಿಂದ ಎರಡು ಮೋಟರ್‌ಗಳು ಸಹ ಸ್ವಲ್ಪ ವಿಭಿನ್ನವಾಗಿರುತ್ತದೆ, ಇದು ಒಂದೇ ವೋಲ್ಟೇಜ್‌ನಲ್ಲಿನ ಕ್ರಾಂತಿಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿನ ವ್ಯತ್ಯಾಸದ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ಮೋಟಾರುಗಳು ಮೋಟಾರು ಶೀಲ್ಡ್ಗೆ ಸರಳವಾಗಿ ಸಂಪರ್ಕಗೊಂಡಿದ್ದರೆ ಮತ್ತು ಅದೇ ವೇಗವನ್ನು ಅವುಗಳಿಗೆ ಅನ್ವಯಿಸಿದರೆ ಮತ್ತು ಇದು ಒಂದೇ ವೋಲ್ಟೇಜ್ ಆಗಿದ್ದರೆ, ರೋಬೋಟ್ ನೇರವಾಗಿ ಹೋಗುವುದಿಲ್ಲ, ಆದರೆ ಸ್ವಲ್ಪ, ಅಥವಾ ಬಹಳಷ್ಟು, ಬದಿಗೆ. ಇದನ್ನು ಮೇಲಿನ ವೀಡಿಯೊದಲ್ಲಿ ನೋಡಬಹುದು.

ಇದನ್ನು ತಪ್ಪಿಸಲು, ನಾವು ಹೊಂದಾಣಿಕೆ ಅಂಶಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತೇವೆ. ನನ್ನ ಎಡ ಚಕ್ರವು ಬಲಕ್ಕಿಂತ ಹೆಚ್ಚು ವೇಗವಾಗಿ ತಿರುಗುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾನು ಸರಿದೂಗಿಸಲು 0.62 ಅಂಶವನ್ನು ಹಾಕುತ್ತೇನೆ. ಗುಣಾಂಕದ ಮೌಲ್ಯವನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ.

// ಮೋಟಾರ್ ಶೀಲ್ಡ್ ಮತ್ತು ಸಾಫ್ಟ್‌ವೇರ್ ಸೀರಿಯಲ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಲೈಬ್ರರಿಗಳನ್ನು ಸೇರಿಸಿ #include #ಸೇರಿಸು //SoftwareSerial ಎಮ್ಯುಲೇಶನ್ mySerial (A0, A1) ಗಾಗಿ ಪಿನ್‌ಗಳನ್ನು ನಿರ್ಧರಿಸಿ; // RX, TX //ಎಡ ಮೋಟಾರ್ ಅನ್ನು ಟರ್ಮಿನಲ್ ಸಂಖ್ಯೆ 2 AF_DCMotor l_motor(2) ಗೆ ವಿವರಿಸಿ; //ಟರ್ಮಿನಲ್ ಬ್ಲಾಕ್ ಸಂಖ್ಯೆ 3 AF_DCMotor r_motor(3) ಗೆ ಸರಿಯಾದ ಮೋಟರ್ ಅನ್ನು ವಿವರಿಸಿ; //ವೇಗವನ್ನು ನಿರ್ಧರಿಸಲು ಅಸ್ಥಿರಗಳು //ಮತ್ತು ತಿರುಗುವಿಕೆ ಫ್ಲೋಟ್ ಎಸ್‌ಪಿಡಿ = 70.0; ಫ್ಲೋಟ್ corr_l = 0.62; ಫ್ಲೋಟ್ corr_r = 1; ಫ್ಲೋಟ್ರೊಟ್ = 50.0; ಶೂನ್ಯ ಸೆಟಪ್ () ( // ಆರಂಭಿಕ ವೇಗವನ್ನು ಹೊಂದಿಸಿ ಮತ್ತು ಮೋಟಾರ್‌ಗಳನ್ನು ಆಫ್ ಮಾಡಿ l_motor.setSpeed ​​(spd); l_motor.run (RELEASE); r_motor.setSpeed ​​(spd); r_motor.run (RELEASE); //HC-06 ನೊಂದಿಗೆ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿ mySerial .begin(9600); ) void loop() ( //ಡೇಟಾ ಇದ್ದರೆ, //(mySerial.available()) ( drive();) ) void drive() ( //Variable for ಕಂಟ್ರೋಲ್ ಫಂಕ್ಷನ್ ಗೆ ಕರೆ ಮಾಡಿ ಒಳಬರುವ ಡೇಟಾ ಚಾರ್ ನಿಯಂತ್ರಣ = mySerial.read(); //ಮೊದಲು ವೇಗವನ್ನು ಹೊಂದಿಸಿ<= 9)) { spd = (control - "0") * 25.0; //сохраняем новое значение скорости } else if (control == "q") { spd = 255.0; } //Сравниваем команды, пришедшие со смартфона else if (control == "S") //Если пришла команда "S", стоим { l_motor.run(RELEASE); r_motor. run(RELEASE); } else if (control == "F") //Если пришла команда "F", едем вперед { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "B") //Если пришла команда "B", едем назад { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "I") //Если пришла команда "I", едем вперёд и направо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r + rot); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "J")//Если пришла команда "J", едем назад и направо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r + rot); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "G") //Если пришла команда "G", едем вперёд и налево { l_motor.setSpeed(spd * corr_l + rot); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "H") //Если пришла команда "H", едем назад и налево { l_motor.setSpeed(spd * corr_l + rot); r_motor.setSpeed(spd * corr_r); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "R") //Если пришла команда "R", крутимся вправо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(BACKWARD); } else if (control = "L") //Если пришла команда "L", крутимся влево { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); l_motor.run(FORWARD); r_motor.run(BACKWARD); } }

ರೋಬೋಟ್ ಕೇಳಿದರು. ಈಗ ಸ್ಮಾರ್ಟ್ಫೋನ್ ತೆಗೆದುಕೊಳ್ಳೋಣ.

ಆರ್ಸಿ ನಿಯಂತ್ರಕ

ಬ್ಲೂಟೂತ್ ಮೂಲಕ Arduino ಮತ್ತು ಸ್ಮಾರ್ಟ್‌ಫೋನ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಹಲವು ವಿಭಿನ್ನ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿವೆ. ಹುಡುಕಾಟದಲ್ಲಿ, ಕೀವರ್ಡ್‌ಗಳು ಹೀಗಿರುತ್ತವೆ: Arduino, Bluetooth, RC.

ನಾನು Bluetooth RC ನಿಯಂತ್ರಕ ಎಂಬ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ್ದೇನೆ. ಇದು ನಮ್ಮ ಉದ್ದೇಶಕ್ಕಾಗಿ ಪರಿಪೂರ್ಣವಾಗಿದೆ. ಗುಂಡಿಯನ್ನು ಒತ್ತಿದಾಗ, ಅಪ್ಲಿಕೇಶನ್ HC-06 ಗೆ ಚಾರ್ ಮೌಲ್ಯವನ್ನು ಕಳುಹಿಸುತ್ತದೆ, ಅದು ಪ್ರತಿಯಾಗಿ, ಒಳಬರುವ ಮೌಲ್ಯವನ್ನು Arduino ಗೆ ರವಾನಿಸುತ್ತದೆ. ಬಟನ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಕಳುಹಿಸಲಾದ ಮೌಲ್ಯವು ಸ್ವಯಂ-ಸೆಟ್ ಆಗಿದೆ.

ರೋಬೋಟ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಲು, ನೀವು ಗೇರ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು "ಸೆಟ್ಟಿಂಗ್‌ಗಳು" ನಲ್ಲಿ "ಸೆಟ್ಟಿಂಗ್‌ಗಳು" ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ಈ ಕಳುಹಿಸಿದ ಅಕ್ಷರಗಳಿಗೆ ಬಟನ್‌ಗಳು ಹೊಂದಿಕೆಯಾಗುತ್ತವೆ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು ಅಥವಾ ಆರ್ಡುನೊ ಕೋಡ್ ಅನ್ನು ಬದಲಾಯಿಸಬೇಕು.

ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿಸಿದ ನಂತರ, ನೀವು HC-06 ನೊಂದಿಗೆ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಬಹುದು. ಗೇರ್ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು "ಕಾರಿಗೆ ಸಂಪರ್ಕಪಡಿಸಿ" ಗೆ ಹೋಗಿ ಜೋಡಿಯಾಗಿರುವ ಸಾಧನಗಳೊಂದಿಗೆ ವಿಂಡೋ ತೆರೆಯುತ್ತದೆ. ಅದರಲ್ಲಿ ನಾವು HC-06 ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇವೆ. ಅದು ಇಲ್ಲದಿದ್ದರೆ, "ಸಾಧನಗಳಿಗಾಗಿ ಸ್ಕ್ಯಾನ್" ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಅದನ್ನು ಹುಡುಕುತ್ತಿದ್ದೇವೆ. ಸಾಧನವು ಕಂಡುಬಂದರೆ, ಆದರೆ ಜೋಡಿಸಲು ಬಯಸದಿದ್ದರೆ, ನಿಮ್ಮ ಸ್ಮಾರ್ಟ್‌ಫೋನ್‌ನಲ್ಲಿ ಬ್ಲೂಟೂತ್‌ಗೆ ಹೋಗಿ ಮತ್ತು ಎಂದಿನಂತೆ ಜೋಡಿಸಿ. ಡೀಫಾಲ್ಟ್ ಪಾಸ್ವರ್ಡ್ 1234. ಅದರ ನಂತರ, "ಸಾಧನಗಳಿಗಾಗಿ ಸ್ಕ್ಯಾನ್" ಗೆ ಹೋಗಿ ಮತ್ತು ಸಂಪರ್ಕಪಡಿಸಿ.

ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿದಾಗ, ಮೇಲಿನ ಹಸಿರು ದೀಪವು ಆನ್ ಆಗುತ್ತದೆ ಮತ್ತು HC-06 ಮಿಟುಕಿಸುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ. ನೀವು ಚಾಲನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು. ಮೇಲಿನ ಪಟ್ಟಿಯು ಚಲನೆಯ ವೇಗಕ್ಕೆ ಕಾರಣವಾಗಿದೆ.

ಬಾಣಕ್ಕೆ ಹಿಂತಿರುಗಿ ನೋಡೋಣ. ಬಾಣದ ಮತ್ತೊಂದು ಪ್ರಯೋಜನವೆಂದರೆ ಬ್ಲೂಟೂತ್ XBee ಸ್ವರೂಪವನ್ನು ಸ್ಥಾಪಿಸುವ ಸಾಮರ್ಥ್ಯ, ಮತ್ತು ಇತರ ಪಿನ್‌ಗಳು ಮುಕ್ತವಾಗಿ ಉಳಿಯುವುದು ಒಳ್ಳೆಯದು. ಮತ್ತು ಮೋಟಾರುಗಳನ್ನು ನಿಯಂತ್ರಿಸುವ ಕೋಡ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುವ ಬಾಣದ ಸಿದ್ಧ ಲೈಬ್ರರಿ ಇರುವುದರಿಂದ, ಬ್ಲೂಟೂತ್ ಮೂಲಕ ರೋಬೋಟ್ ಅನ್ನು ನಿಯಂತ್ರಿಸಲು ಬಾಣವನ್ನು ಬಳಸುವುದು ತುಂಬಾ ಯೋಗ್ಯವಾಗಿದೆ.

ಇದನ್ನು ಮಾಡಲು, ನೀವು XBee ಅನ್ನು Strela ಗೆ ಸಂಪರ್ಕಿಸಬೇಕು, ಅದನ್ನು "ArduinoBluetoothRCCarOnStrela" ಎಂಬ ಉದಾಹರಣೆಗಳಿಂದ ಸ್ಕೆಚ್‌ನೊಂದಿಗೆ ಫ್ಲ್ಯಾಷ್ ಮಾಡಿ ಮತ್ತು RC ನಿಯಂತ್ರಕದ ಮೂಲಕ XBee ಗೆ ಸಂಪರ್ಕಪಡಿಸಬೇಕು.

ಸಲಹೆ

ನನ್ನ ರೋಬೋಟ್ ಸಿದ್ಧವಾಗಿದೆ ಮತ್ತು ಸ್ಮಾರ್ಟ್‌ಫೋನ್‌ನಿಂದ ಆಜ್ಞೆಯನ್ನು ಸಹ ಚಾಲನೆ ಮಾಡುತ್ತದೆ. ಆದರೆ ಎಲ್ಲವೂ ಸುಗಮವಾಗಿ ನಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಾನು ಕೆಲವು ಸಮಸ್ಯೆಗಳು ಮತ್ತು ಅವುಗಳ ಪರಿಹಾರಗಳ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇನೆ, ಜೊತೆಗೆ ಹರಿಕಾರ ರೊಬೊಟಿಕ್ಸ್ಗೆ ಕೆಲವು ಸಲಹೆಗಳನ್ನು ನೀಡುತ್ತೇನೆ.

ಚಕ್ರಗಳು ತಪ್ಪು ದಿಕ್ಕಿನಲ್ಲಿ ತಿರುಗುತ್ತವೆ- ಟರ್ಮಿನಲ್ ಬ್ಲಾಕ್‌ಗಳಲ್ಲಿ ಅಥವಾ ಪ್ರೋಗ್ರಾಮಿಕ್‌ನಲ್ಲಿ ತಂತಿಗಳನ್ನು ಮರುಹೊಂದಿಸುವ ಮೂಲಕ ಈ ಸಮಸ್ಯೆಯನ್ನು ಸುಲಭವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ.

ಬ್ಲೂಟೂತ್ ಮಾಡ್ಯೂಲ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ- ಮಾಡ್ಯೂಲ್ನಲ್ಲಿ ಬರೆಯುವ ಕೆಂಪು ಎಲ್ಇಡಿ ಇರುವಿಕೆಯನ್ನು ನೀವು ಪರಿಶೀಲಿಸಬೇಕು. ಅದು ಬೆಳಗದಿದ್ದರೆ, ಬ್ಲೂಟೂತ್ ಮಾಡ್ಯೂಲ್ ಸರಿಯಾಗಿ ಸಂಪರ್ಕಗೊಂಡಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ಎಲ್ಇಡಿ ಆನ್ ಆಗಿದ್ದರೆ, ಆದರೆ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿದರೆ, ಮಾಡ್ಯೂಲ್ನ RX ಅನ್ನು ಬೋರ್ಡ್ನ TX ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು ಮತ್ತು ಪ್ರತಿಯಾಗಿ, ಮತ್ತು ಪ್ರಮಾಣಿತ ಮೂಲಕ ಮಾಡ್ಯೂಲ್ ಅನ್ನು Arduino ನೊಂದಿಗೆ ಜೋಡಿಸುವ ವಿಧಾನವನ್ನು ಸಹ ಪ್ರಯತ್ನಿಸಿ. ಬ್ಲೂಟೂತ್ ಇಂಟರ್ಫೇಸ್.

ರೋಬೋಟ್ ನೇರವಾಗಿ ಓಡಿಸುವುದಿಲ್ಲ- ನಾನು ಬ್ಲೂಟೂತ್ ಮತ್ತು ಮೋಟಾರ್ ಶೀಲ್ಡ್ ಬಗ್ಗೆ ಮಾತನಾಡುವಾಗ ಈ ಸಮಸ್ಯೆಯನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ವಿವರಿಸಿದ್ದೇನೆ.

ಚಾಲನೆ ಮಾಡುವಾಗ, ರೋಬೋಟ್ ಇದ್ದಕ್ಕಿದ್ದಂತೆ ನಿಲ್ಲುತ್ತದೆ ಮತ್ತು ಸಂಪರ್ಕವನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತದೆHC-06- ವಿದ್ಯುತ್ ಪೂರೈಕೆಯಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ. ಸ್ಥಿರ ಕಾರ್ಯಾಚರಣೆಗಾಗಿ Arduino ಗೆ ಕನಿಷ್ಠ 7V ಅಗತ್ಯವಿದೆ ಎಂದು ನಮಗೆ ತಿಳಿದಿದೆ ಮತ್ತು ಮೋಟಾರ್‌ಗಳು ಚೆನ್ನಾಗಿ ತಿನ್ನುತ್ತವೆ ಎಂದು ನಮಗೆ ತಿಳಿದಿದೆ. ನೀವು ಮಲ್ಟಿಮೀಟರ್ ಪ್ರೋಬ್‌ಗಳನ್ನು ವೋಲ್ಟೇಜ್ ಪೂರೈಕೆ ಟರ್ಮಿನಲ್‌ಗಳಿಗೆ ತಂದರೆ ಮತ್ತು ಮೋಟರ್‌ಗಳನ್ನು ಆಫ್‌ನೊಂದಿಗೆ ವೋಲ್ಟೇಜ್ ಅನ್ನು ಅಳೆಯಿದರೆ, ಮತ್ತು ನಂತರ ಅವುಗಳನ್ನು ಆನ್ ಮಾಡಿದರೆ, ಮಲ್ಟಿಮೀಟರ್‌ನಲ್ಲಿನ ವೋಲ್ಟೇಜ್ ಕುಸಿಯುತ್ತದೆ ಎಂದು ನೀವು ನೋಡಬಹುದು. ಇದಲ್ಲದೆ, ವೋಲ್ಟೇಜ್ ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ಇಳಿಯಬಹುದು.

ಮೋಟಾರ್‌ಗಳಿಗೆ ಸಾಕಷ್ಟು ಕರೆಂಟ್ ಅನ್ನು ಒದಗಿಸಲು ಸಾಧ್ಯವಾಗದ ವಿದ್ಯುತ್ ಸರಬರಾಜು ಸಂಪರ್ಕಗೊಂಡಿದ್ದರೆ, ವೋಲ್ಟೇಜ್ ಬಹಳಷ್ಟು ಬೀಳಬಹುದು, ಉದಾಹರಣೆಗೆ 9 ರಿಂದ 5 ವೋಲ್ಟ್‌ಗಳವರೆಗೆ, ಮತ್ತು 5V ಇನ್ನು ಮುಂದೆ Arduino ಗೆ ಸಾಕಾಗುವುದಿಲ್ಲ ಮತ್ತು ಅದು ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ. ಹೆಚ್ಚು ಶಕ್ತಿಶಾಲಿ ವಿದ್ಯುತ್ ಸರಬರಾಜನ್ನು ಸಂಪರ್ಕಿಸುವುದು ಪರಿಹಾರವಾಗಿದೆ. ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು ಹೇಗೆ, ನಾನು ಕೆಳಗೆ ಹೇಳುತ್ತೇನೆ.

ನೀವು ಹೆಚ್ಚು ಶಕ್ತಿಯುತವಾದ ವಿದ್ಯುತ್ ಮೂಲವನ್ನು ಸಂಪರ್ಕಿಸಿದರೆ, ನಂತರ ವೋಲ್ಟೇಜ್ ಡ್ರಾಪ್ ಕೆಲವು ಮಿಲಿಸೆಕೆಂಡುಗಳವರೆಗೆ ಮಾತ್ರ ಆಗಿರಬಹುದು, ಆದರೆ ನಿಯಂತ್ರಕವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಲು ಅವು ಸಾಕಷ್ಟು ಇರಬಹುದು. ವಿದ್ಯುತ್ ತಂತಿಗಳೊಂದಿಗೆ ಸಮಾನಾಂತರವಾಗಿ ಕನಿಷ್ಟ 1000 uF ನ ಕೆಪಾಸಿಟರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವುದು ಪರಿಹಾರವಾಗಿದೆ, ಧಾರಣವನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ನಿರ್ಧರಿಸಬಹುದು. ನಾನು ಕೆಪಾಸಿಟರ್ ಅನ್ನು 3300 uF ನಲ್ಲಿ ಮತ್ತು 16V ನಲ್ಲಿ ಇರಿಸಿದೆ. ಕೆಪಾಸಿಟರ್ನ ಗರಿಷ್ಠ ವೋಲ್ಟೇಜ್ ಅನ್ನು ನೋಡಲು ಮರೆಯಬೇಡಿ.

ವಿದ್ಯುತ್ ಸರಬರಾಜು ಸಾಕಷ್ಟು ಶಕ್ತಿಯುತವಾದಾಗ, ವೋಲ್ಟೇಜ್ ಡ್ರಾಪ್ 0.2V ಗಿಂತ ಹೆಚ್ಚಿಲ್ಲ.

ಹರಿಕಾರ ರೊಬೊಟಿಕ್ಸ್ಗಾಗಿ ಕೆಲವು ಸಲಹೆಗಳು

ರೋಬೋಟ್ನ ವಿನ್ಯಾಸವನ್ನು ಪ್ರಾರಂಭಿಸಿ, ವಿದ್ಯುತ್ ಘಟಕದ ಶಕ್ತಿಯನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಮತ್ತು ಸೂಕ್ತವಾದ ವಿದ್ಯುತ್ ಮೂಲವನ್ನು ಆಯ್ಕೆಮಾಡಲು ಕಾಳಜಿ ವಹಿಸುವುದು ಮೊದಲನೆಯದು. 4 AAA ಬ್ಯಾಟರಿಗಳು ನಿಮ್ಮ 4 6V ಮೋಟಾರ್‌ಗಳಿಗೆ ಶಕ್ತಿ ನೀಡದಿದ್ದರೆ ಮತ್ತು ಹೆಚ್ಚಿನ ವಿದ್ಯುತ್ ಸರಬರಾಜಿಗೆ ಸ್ಥಳವಿಲ್ಲದಿದ್ದರೆ ಅದು ಅವಮಾನಕರವಾಗಿರುತ್ತದೆ.

ಶಕ್ತಿಯನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು, ನಾವು ಮೋಟಾರ್ಗಳು, ಬೋರ್ಡ್ಗಳು, ಸಂವೇದಕಗಳ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಹುಡುಕುತ್ತಿದ್ದೇವೆ. ಭೌತಶಾಸ್ತ್ರದ ಕೋರ್ಸ್‌ನಿಂದ ನಾವು ವಿದ್ಯುತ್ ಅನ್ನು P = IU ಸೂತ್ರದಿಂದ ಲೆಕ್ಕಾಚಾರ ಮಾಡಬಹುದು ಎಂದು ನಮಗೆ ತಿಳಿದಿದೆ, ಅಲ್ಲಿ ನಾನು ಪ್ರಸ್ತುತ ಶಕ್ತಿ, U ಎಂಬುದು ವೋಲ್ಟೇಜ್. ಈ ಸೂತ್ರ ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು, ಸಿದ್ಧಪಡಿಸಿದ ಸಾಧನದ ವಿದ್ಯುತ್ ಬಳಕೆಯನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು ಸುಲಭ, ಮತ್ತು ವಿದ್ಯುತ್ ಬಳಕೆ ಮತ್ತು ಸರಬರಾಜಿನ ಆಪರೇಟಿಂಗ್ ವೋಲ್ಟೇಜ್ ಅನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು, ಪ್ರಸ್ತುತವನ್ನು ತಿಳಿದುಕೊಳ್ಳುವ ಮೂಲಕ ಸಾಧನದ ಕಾರ್ಯಾಚರಣೆಗೆ ಅಗತ್ಯವಾದ ಪ್ರಸ್ತುತ ಶಕ್ತಿಯನ್ನು ನೀವು ಕಂಡುಹಿಡಿಯಬಹುದು. ಶಕ್ತಿ, ಆಯ್ಕೆಮಾಡಿದ ಬ್ಯಾಟರಿಯಿಂದ ಅಗತ್ಯವಿರುವ ಬ್ಯಾಟರಿ ಸಾಮರ್ಥ್ಯ ಮತ್ತು ಸಾಧನದ ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯವನ್ನು ನೀವು ನಿರ್ಧರಿಸಬಹುದು .

ನಾನು ಹೇಳಿದಂತೆ, ನೀವು ಯಾವಾಗಲೂ ನಿರ್ದಿಷ್ಟ ಗುರಿಯನ್ನು ಹೊಂದಿಸಬೇಕು, ಅದನ್ನು ತಲುಪಿದ ನಂತರ ಯೋಜನೆಯು ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಪರಿಗಣಿಸಬಹುದು. ಈ ಆಲೋಚನೆಗೆ ಸೂಕ್ಷ್ಮ ವ್ಯತ್ಯಾಸಗಳಿವೆ. ಯೋಜನೆಯು ಸಾಕಷ್ಟು ದೊಡ್ಡದಾಗಿದ್ದರೆ, ಗುರಿಯನ್ನು ತಲುಪುವುದು ಅಷ್ಟು ಸುಲಭವಲ್ಲ, ವಿಶೇಷವಾಗಿ ಕೋಡ್ ಬರೆಯುವಾಗ. ಒಮ್ಮೆ ನಾನು ದೊಡ್ಡ ಕೋಡ್ ಅನ್ನು ಬರೆದಿದ್ದೇನೆ, ನಾನು ಯೋಚಿಸಿದೆ - “ಈಗ ನಾನು ಎಲ್ಲವನ್ನೂ ಬರೆಯುತ್ತೇನೆ ಮತ್ತು ಅದನ್ನು ಪರಿಶೀಲಿಸುತ್ತೇನೆ! ' ಕೋಡ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುವಾಗ, ಹಲವಾರು ದೋಷಗಳು ಇದ್ದುದರಿಂದ ಅದು ತಕ್ಷಣವೇ ಕಂಪೈಲ್ ಆಗಲಿಲ್ಲ. ನಾನು ದೋಷಗಳನ್ನು ತೆಗೆದುಹಾಕಿದ್ದೇನೆ, ಆದರೆ ಕೋಡ್ ಮಾತ್ರ ನಾನು ಬಯಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸಲಿಲ್ಲ. ನಾನು ಮೊದಲಿನಿಂದಲೂ ಎಲ್ಲವನ್ನೂ ಪುನಃ ಬರೆಯಬೇಕಾಗಿತ್ತು, ಕ್ರಮೇಣ ಕೋಡ್ ಅನ್ನು ಸೇರಿಸುವುದು ಮತ್ತು ಕಾರ್ಯಸಾಧ್ಯತೆಗಾಗಿ ಪರಿಣಾಮವಾಗಿ ಕೋಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವುದು. ಹಾಗಾಗಿ ಅದೇ ರೀತಿ ಮಾಡಲು ನಾನು ನಿಮಗೆ ಸಲಹೆ ನೀಡುತ್ತೇನೆ.

ಮೂರು ಅಕ್ಷರಗಳ "ಪಾಸ್ವರ್ಡ್" ಮಾಡುವ ಗುರಿ ಇದ್ದರೆ, ನೀವು ಮೂರನ್ನೂ ಒಂದೇ ಬಾರಿಗೆ ಪ್ರೋಗ್ರಾಂ ಮಾಡಬಾರದು. ಒಂದು ಅಕ್ಷರದಿಂದ ಪಾಸ್‌ವರ್ಡ್ ಮಾಡುವುದು ಉತ್ತಮ, ಅದನ್ನು ಪರಿಶೀಲಿಸಿ, ನಂತರ ಎರಡರಿಂದ ಮತ್ತು ಪರಿಶೀಲನೆಯ ನಂತರ - ಮೂರರಿಂದ. ಇದು ನನಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ರೋಬೋಟ್ ಅನ್ನು ಪ್ರಯೋಗ ಮತ್ತು ದೋಷದಿಂದ ರಚಿಸಲಾಗಿದೆ. ಒಮ್ಮೆ ಪ್ರೋಗ್ರಾಂ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ ಆದ್ದರಿಂದ ಕ್ರಿಯೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ. ಅದೇ ಶ್ರುತಿ ಗುಣಾಂಕಗಳು ಚಕ್ರಗಳಲ್ಲಿವೆ, ಆದ್ದರಿಂದ ಏನಾದರೂ ಕೆಲಸ ಮಾಡದಿದ್ದರೆ ನೀವು ಬಿಟ್ಟುಕೊಡಬಾರದು ಮತ್ತು ಅದು ಕೆಲಸ ಮಾಡದಿದ್ದರೆ, ನೀವು ವೇದಿಕೆಗಳಲ್ಲಿ ದಯೆಯ ಜನರ ಕಡೆಗೆ ತಿರುಗಬಹುದು ಅಥವಾ ನನಗೆ ಬರೆಯಬಹುದು, ನಾವು ಖಂಡಿತವಾಗಿಯೂ ಸಹಾಯ ಮಾಡುತ್ತದೆ!

ತೀರ್ಮಾನ

ರೊಬೊಟಿಕ್ಸ್ ಅದ್ಭುತವಾಗಿದೆ! ಶೀಘ್ರದಲ್ಲೇ, ನಾನು ಭಾವಿಸುತ್ತೇನೆ, ರೋಬೋಟ್ಗಳು ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ, ಮತ್ತು ಈಗಾಗಲೇ ಜನರ ಜೀವನದಲ್ಲಿ ನಡೆದಿವೆ. ನಾವು ಸ್ಮಾರ್ಟ್‌ಫೋನ್‌ನಿಂದ ನಿಯಂತ್ರಿಸಲ್ಪಡುವ ಸರಳವಾದ ರೋಬೋಟ್-ಕಾರನ್ನು ತಯಾರಿಸಿದ್ದೇವೆ, ನಂತರ ನಾವು ಹೆಚ್ಚು ಗಂಭೀರವಾದ ಯೋಜನೆಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುತ್ತೇವೆ, ಆದರೆ ಇದೀಗ - ಶೀಘ್ರದಲ್ಲೇ ನಿಮ್ಮನ್ನು ನೋಡೋಣ!

ಅವರು ಸರಳ ರೋಬೋಟ್‌ಗಳನ್ನು ರಚಿಸುವ ಮೂಲಕ ಆರ್ಡುನೋವನ್ನು ಕಲಿಯಲು ಪ್ರಾರಂಭಿಸುತ್ತಾರೆ. ಇಂದು ನಾನು ಆರ್ಡುನೊ ಯುನೊದಲ್ಲಿನ ಸರಳವಾದ ರೋಬೋಟ್ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇನೆ, ಅದು ನಾಯಿಯಂತೆ ನಿಮ್ಮ ಕೈ ಅಥವಾ ಅತಿಗೆಂಪು ಬೆಳಕನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಯಾವುದೇ ವಸ್ತುವನ್ನು ಅನುಸರಿಸುತ್ತದೆ. ಅಲ್ಲದೆ, ಈ ರೋಬೋಟ್ ಮಕ್ಕಳನ್ನು ರಂಜಿಸಲಿದೆ. ನನ್ನ 3 ವರ್ಷದ ಸೋದರಳಿಯ ಸ್ವಇಚ್ಛೆಯಿಂದ ರೋಬೋಟ್‌ನೊಂದಿಗೆ ಆಡಿದರು :)

ನಿರ್ಮಿಸುವಾಗ ಅಗತ್ಯವಿರುವ ಭಾಗಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವ ಮೂಲಕ ನಾನು ಪ್ರಾರಂಭಿಸುತ್ತೇನೆ - Arduino UNO;

ಅತಿಗೆಂಪು ರೇಂಜ್‌ಫೈಂಡರ್‌ಗಳು;

- ಗೇರ್ ಬಾಕ್ಸ್ ಮತ್ತು ಚಕ್ರಗಳೊಂದಿಗೆ 3-ವೋಲ್ಟ್ ಮೋಟಾರ್ಗಳು;

- 3A ಬ್ಯಾಟರಿಗಳಿಗೆ ಕನೆಕ್ಟರ್ಸ್;

ಬ್ಯಾಟರಿ (ಸಾಕಷ್ಟು ಬ್ಯಾಟರಿಗಳು ಇಲ್ಲದಿದ್ದರೆ);

- ಮೋಟಾರ್ಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು ರಿಲೇ;

ಸರಿ, ಮತ್ತು ಸೃಷ್ಟಿ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಅಗತ್ಯವಿರುವ ಇತರ ವಸ್ತುಗಳು.
ಮೊದಲು ನಾವು ಬೇಸ್ ತಯಾರಿಸುತ್ತೇವೆ. ನಾನು ಅದನ್ನು ಮರದಿಂದ ಮಾಡಲು ನಿರ್ಧರಿಸಿದೆ. ಮೋಟಾರ್‌ಗಳು ಸ್ಲಾಟ್‌ಗಳಲ್ಲಿ ಸಂಪೂರ್ಣವಾಗಿ ಕುಳಿತುಕೊಳ್ಳುವ ರೀತಿಯಲ್ಲಿ ನಾನು ಮರದ ಹಲಗೆಯನ್ನು ಕಂಡೆ


ನಂತರ ನಾನು ಮರದ ಹಲಗೆಯೊಂದಿಗೆ ಮೋಟಾರ್ಗಳನ್ನು ಕ್ಲ್ಯಾಂಪ್ ಮಾಡುತ್ತೇನೆ, ಈ ಬಾರ್ ಅನ್ನು ತಿರುಗಿಸುತ್ತೇನೆ

ಪ್ರಕರಣದಲ್ಲಿ ಮತ್ತಷ್ಟು, ನಾನು ಆರ್ಡುನೊ, ರಿಲೇ, ಬ್ರೈನ್‌ಬೋರ್ಡ್, ರೇಂಜ್‌ಫೈಂಡರ್‌ಗಳು ಮತ್ತು ಚಾಸಿಸ್ ಬೇಸ್‌ನ ಅಡಿಯಲ್ಲಿ ತಿರುಗುವಿಕೆಯನ್ನು ಇರಿಸಿದೆ

ಈಗ ನಾವು ಯೋಜನೆಯ ಪ್ರಕಾರ ಎಲ್ಲವನ್ನೂ ಸಂಪರ್ಕಿಸುತ್ತೇವೆ

ಕೊನೆಯಲ್ಲಿ, ನಾವು ಕೆಳಗಿನ ಸ್ಕೆಚ್ ಅನ್ನು ಆರ್ಡುನೊಗೆ ಲೋಡ್ ಮಾಡುತ್ತೇವೆ:

ಕಾನ್ಸ್ಟ್ ಇಂಟ್ ಆರ್ = 13; // IR ರೇಂಜ್‌ಫೈಂಡರ್‌ಗಳನ್ನು ಸಂಪರ್ಕಿಸಿರುವ ಪಿನ್‌ಗಳು const L = 12; ಇಂಟ್ ಮೋಟಾರ್ ಎಲ್ = 9; //ಪಿನ್‌ಗಳಿಗೆ ರಿಲೇ ಅನ್ನು ಸಂಪರ್ಕಿಸಲಾಗಿದೆ ಇಂಟ್ ಮೋಟಾರ್ಆರ್ = 11; ಇಂಟ್ ಬಟನ್ ಸ್ಟೇಟ್ = 0; ಅನೂರ್ಜಿತ ಸೆಟಪ್ () (ಪಿನ್‌ಮೋಡ್ (ಆರ್, ಇನ್‌ಪುಟ್); ಪಿನ್‌ಮೋಡ್ (ಎಲ್, ಇನ್‌ಪುಟ್); ಪಿನ್‌ಮೋಡ್ (ಮೋಟರ್, ಔಟ್‌ಪುಟ್); ಪಿನ್‌ಮೋಡ್ (ಮೋಟಾರ್ಎಲ್, ಔಟ್‌ಪುಟ್); ) ಅನೂರ್ಜಿತ ಲೂಪ್ () ( (ಬಟನ್‌ಸ್ಟೇಟ್ = ಡಿಜಿಟಲ್ ರೀಡ್ (ಎಲ್); ವೇಳೆ (ಬಟನ್ ಸ್ಟೇಟ್ == ಹೆಚ್ಚು)(ಡಿಜಿಟಲ್ ರೈಟ್(ಮೋಟಾರ್ ಆರ್, ಹೈ);) ಬೇರೆ (ಡಿಜಿಟಲ್ ರೈಟ್(ಮೋಟಾರ್ ಆರ್,ಲೋ);)) ((ಬಟನ್ ಸ್ಟೇಟ್ = ಡಿಜಿಟಲ್ ರೀಡ್(ಆರ್); ವೇಳೆ (ಬಟನ್ ಸ್ಟೇಟ್ == ಹೈ)(ಡಿಜಿಟಲ್ ರೈಟ್(ಮೋಟಾರ್ ಎಲ್, ಹೈ);) ಬೇರೆ (ಡಿಜಿಟಲ್ ರೈಟ್(ಮೋಟಾರ್ಎಲ್, ಕಡಿಮೆ);)))

ಕಾರ್ಯಾಚರಣೆಯ ತತ್ವವು ತುಂಬಾ ಸರಳವಾಗಿದೆ. ಎಡ ರೇಂಜ್ಫೈಂಡರ್ ಬಲ ಚಕ್ರಕ್ಕೆ ಕಾರಣವಾಗಿದೆ, ಮತ್ತು ಎಡಕ್ಕೆ ಸರಿಯಾದದು

ಅದನ್ನು ಸ್ಪಷ್ಟಪಡಿಸಲು, ನೀವು ರಚಿಸುವ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ರೋಬೋಟ್ನ ಕ್ರಿಯೆಯನ್ನು ತೋರಿಸುವ ವೀಡಿಯೊವನ್ನು ವೀಕ್ಷಿಸಬಹುದು

ಈ ರೋಬೋಟ್ ತುಂಬಾ ಸರಳವಾಗಿದೆ ಮತ್ತು ಯಾರಾದರೂ ಇದನ್ನು ಮಾಡಬಹುದು. ರಿಲೇಗಳು ಮತ್ತು ಐಆರ್ ರೇಂಜ್‌ಫೈಂಡರ್‌ಗಳಂತಹ ಮಾಡ್ಯೂಲ್‌ಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಅವುಗಳನ್ನು ಹೇಗೆ ಉತ್ತಮವಾಗಿ ಬಳಸುವುದು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಇದು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ನೀವು ಈ ಕರಕುಶಲತೆಯನ್ನು ಆನಂದಿಸಿದ್ದೀರಿ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ, ಕರಕುಶಲ ವಸ್ತುಗಳು ತಂಪಾಗಿವೆ ಎಂದು ನೆನಪಿಡಿ!

ಲೇಖನದ ಅಂತಿಮ ಭಾಗವು ನಾವು ಚಾಸಿಸ್ನಲ್ಲಿ ಜೋಡಿಸುವ ಸಣ್ಣ ರೋಬೋಟ್ ಬಗ್ಗೆ - ಪ್ಲಾಸ್ಟಿಕ್ ಆಹಾರದ ಕಂಟೇನರ್ನಿಂದ ಮುಚ್ಚಳವನ್ನು. ನಮ್ಮ ರೋಬೋಟ್‌ನ ಮೆದುಳು Arduino UNO ಬೋರ್ಡ್ ಆಗಿದೆ, ಡ್ರೈವರ್ ಮೋಟಾರ್ ಶೀಲ್ಡ್ ಬೋರ್ಡ್ ಮೋಟಾರ್‌ಗಳು ಮತ್ತು ಸರ್ವೋ ಡ್ರೈವ್ ಅನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ, ಅಡಚಣೆ ಸಂವೇದಕ - ಅಲ್ಟ್ರಾಸಾನಿಕ್ ಸೋನಾರ್ - ವಾಲಿ (ಕಾರ್ಟೂನ್‌ನಿಂದ) - "HC-SR04 ಅಲ್ಟ್ರಾಸಾನಿಕ್ ಸಂವೇದಕ". , Arduino ನಲ್ಲಿ ರೋಬೋಟ್ ಅನ್ನು ಹೇಗೆ ರಚಿಸುವುದು?

9. ಬ್ಯಾಟರಿ ಮತ್ತು ಮೋಟಾರ್‌ಗಳನ್ನು ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ

ಬ್ಯಾಟರಿಯನ್ನು ಸಂಪರ್ಕಿಸುವಾಗ, ಧ್ರುವೀಯತೆಯು ಸರಿಯಾಗಿದೆ ಎಂದು ನೀವು ಸಂಪೂರ್ಣವಾಗಿ ಖಚಿತವಾಗಿರಬೇಕು, ಅವರು ಹೇಳಿದಂತೆ 7 ಬಾರಿ ಅಳತೆ ಮಾಡಿ, ಒಮ್ಮೆ ಪ್ಲಗ್ ಮಾಡಿ. ಈ ನಿಯಮವನ್ನು ಅನುಸರಿಸಲು ಪ್ರಯತ್ನಿಸಿ - ಕೆಂಪು ತಂತಿಯು ಯಾವಾಗಲೂ + ಶಕ್ತಿಯಾಗಿರುತ್ತದೆ, ಕಪ್ಪು ತಂತಿಯು ನೆಲವಾಗಿದೆ, ಇದು ಮೈನಸ್, ಇದು GND ಆಗಿದೆ. ತಯಾರಕರು ಅದೇ ನಿಯಮಗಳನ್ನು ಅನುಸರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಾರೆ. ಆದ್ದರಿಂದ, ನಾವು ಬ್ಯಾಟರಿ ವಿಭಾಗದಿಂದ ಬರುವ ತಂತಿಗಳನ್ನು ಮೋಟಾರ್ ನಿಯಂತ್ರಣ ಮಂಡಳಿಯಲ್ಲಿ + M ಮತ್ತು GND ಬ್ಲಾಕ್‌ಗೆ ಸಂಪರ್ಕಿಸುತ್ತೇವೆ. ಮೋಟಾರು ನಿಯಂತ್ರಣ ಮಂಡಳಿಯ M1, M2 ಬ್ಲಾಕ್ಗಳಿಗೆ ನಾವು ಡ್ರೈವ್ ಮೋಟಾರ್ಗಳಿಂದ ತಂತಿಗಳನ್ನು ಸಂಪರ್ಕಿಸುತ್ತೇವೆ. ಎಡಭಾಗವು, ಪ್ರಯಾಣದ ದಿಕ್ಕಿನಲ್ಲಿ, ಬ್ಲಾಕ್ M1 ಗೆ ಸಂಪರ್ಕ ಹೊಂದಿದೆ, ಬಲಭಾಗವು ಬ್ಲಾಕ್ M2 ಗೆ ಸಂಪರ್ಕ ಹೊಂದಿದೆ. ಮೋಟಾರುಗಳ ಧ್ರುವೀಯತೆಯ ಬಗ್ಗೆ ನೀವು ಇನ್ನೂ ಚಿಂತಿಸಬಾರದು, ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ ಏನಾದರೂ ತಪ್ಪಾದಲ್ಲಿ ಅದನ್ನು ಬದಲಾಯಿಸಬಹುದು.

10. ಮಾಡ್ಯೂಲ್ಗಳ ಧ್ರುವೀಯತೆ ಮತ್ತು ಸರಿಯಾದ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ

ಮೈಕ್ರೋರೋಬೋಟ್‌ನ ಜೋಡಣೆಯಲ್ಲಿ ಬಹಳ ಮುಖ್ಯವಾದ ಮತ್ತು ನಿರ್ಣಾಯಕ ಕ್ಷಣವೆಂದರೆ ಬ್ಲಾಕ್ ರೇಖಾಚಿತ್ರದ ಪ್ರಕಾರ ಸರಿಯಾದ ಅನುಸ್ಥಾಪನೆ, ಸಂಪರ್ಕಗಳು, ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು, ಬೋರ್ಡ್‌ಗಳಲ್ಲಿನ ಗುರುತುಗಳನ್ನು ನೋಡಿ, ಪರೀಕ್ಷಕನೊಂದಿಗೆ ಪರಿಶೀಲಿಸಿ, ವಿದ್ಯುತ್ ಸರಬರಾಜಿನ ಧ್ರುವೀಯತೆ ಒಬ್ಬ ಪರೀಕ್ಷಕ.

11. Arduino ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಹಂತ

ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಕಂಪ್ಯೂಟರ್‌ನಿಂದ Arduino ಮೈಕ್ರೊಕಂಟ್ರೋಲರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ, USB ಕೇಬಲ್ ಮತ್ತು ವಿಶೇಷ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಬಳಸಿ - ಸ್ಕೆಚ್‌ಗಳಿಗೆ (ಪ್ರೋಗ್ರಾಂಗಳು) ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮತ್ತು ಎಡಿಟಿಂಗ್ ಪರಿಸರ - Arduino IDE. ನೀವು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು arduino.cc ವೆಬ್‌ಸೈಟ್, ಡೌನ್‌ಲೋಡ್ ವಿಭಾಗದಿಂದ ಪಡೆಯಬಹುದು, ಅಲ್ಲಿ ನೀವು ಯಾವಾಗಲೂ ಪ್ರೋಗ್ರಾಂನ ಇತ್ತೀಚಿನ, ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು. ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪರಿಸರವನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ, ನೀವು ಯಾವ ಬೋರ್ಡ್ ಅನ್ನು ಬಳಸಬೇಕೆಂದು ಚಾಲಕ ಪ್ರೋಗ್ರಾಂನ ಮೆನುವಿನಿಂದ ಆಯ್ಕೆ ಮಾಡಲು ಮಾತ್ರ ಇದು ಉಳಿದಿದೆ - ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, Arduino UNO, ಮತ್ತು COM ಪೋರ್ಟ್ ಮೂಲಕ Arduino ಅನ್ನು USB ಎಮ್ಯುಲೇಶನ್ ಮೂಲಕ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ. ಈ ವಿಷಯದ ಕುರಿತು ಎಲ್ಲಾ ರೀತಿಯ ಕೈಪಿಡಿಗಳು ಬಹಳಷ್ಟು ಇವೆ, ಆದ್ದರಿಂದ ನಾವು ಈ ಹಂತವನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತೇವೆ (ಕೇವಲ ಸಂದರ್ಭದಲ್ಲಿ - ಮೆನು ಪರಿಕರಗಳು > ಸೀರಿಯಲ್ ಪೋರ್ಟ್).

ಮೈಕ್ರೋ ರೋಬೋಟ್‌ಗಾಗಿ ಪ್ರೋಗ್ರಾಂ ನಮ್ಮ ವೆಬ್‌ಸೈಟ್‌ನಿಂದ ಲಭ್ಯವಿದೆ, ಆದರೂ ನೋಂದಣಿಯ ನಂತರ ಮಾತ್ರ, ಆರ್ಡುನೊದಲ್ಲಿ ಮಿನಿ ರೋಬೋಟ್ ಜೋಕ್. ಪ್ರೋಗ್ರಾಂ ಕೆಲಸ ಮಾಡಲು, ಹೆಚ್ಚುವರಿ ಲೈಬ್ರರಿಗಳು ಅಗತ್ಯವಿದೆ - AFMotor.h, Sevo.h, NewPing.h, ಅವೆಲ್ಲವೂ ಆರ್ಕೈವ್‌ನಲ್ಲಿವೆ, ನೀವು ಆರ್ಕೈವ್ ಅನ್ನು ಫೋಲ್ಡರ್‌ಗೆ ಅನ್ಪ್ಯಾಕ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಸ್ಥಾಪಿಸಲಾದ ಪ್ರೋಗ್ರಾಂ Arduino IDE. ನನಗೆ, ಇದು c: ಪ್ರೋಗ್ರಾಂ ಫೈಲ್‌ಗಳು (x86) Arduino ಡೈರೆಕ್ಟರಿ, ಲೈಬ್ರರಿಗಳನ್ನು c: Program Files (x86) Arduino ಲೈಬ್ರರೀಸ್ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಇರಿಸಬೇಕಾಗುತ್ತದೆ. ನಂತರ c:Program Files (x86)ArduinolibrariesAPC_4_ROBOT ಡೈರೆಕ್ಟರಿಗೆ ಹೋಗಿ ಮತ್ತು APC_4_ROBOT.ino ಮೇಲೆ ಡಬಲ್ ಕ್ಲಿಕ್ ಮಾಡಿ ಇದು ಸ್ಕೆಚ್ ಆಗಿದೆ, ನಂತರ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪರಿಸರವು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನಾವು ಕಂಪ್ಯೂಟರ್‌ಗೆ ಯುಎಸ್‌ಬಿ ಕೇಬಲ್ ಮೂಲಕ ಬೇರ್ ಆರ್ಡುನೊ ಯುನೊ ಬೋರ್ಡ್ ಅನ್ನು (ಅಂದರೆ ಸಂಪರ್ಕಿತ ಮಾಡ್ಯೂಲ್‌ಗಳಿಲ್ಲದೆ) ಸಂಪರ್ಕಿಸುತ್ತೇವೆ, ಬಲಕ್ಕೆ ಬಾಣದ ಗುಂಡಿಯನ್ನು ಒತ್ತಿ, ಪ್ರೋಗ್ರಾಂ ನಿಯಂತ್ರಕಕ್ಕೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಇಡೀ ಪ್ರಕ್ರಿಯೆಯು ಕೆಲವು ಸೆಕೆಂಡುಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಮತ್ತು ಎಲ್ಲವನ್ನೂ ಸರಿಯಾಗಿ ಸಂಪರ್ಕಿಸಿದರೆ, ನಂತರ ಯಾವುದೇ ಕೆಂಪು ಶಾಸನಗಳು ಬೆಳಗಬಾರದು ಮತ್ತು ಕೆಳಗಿನ ಬಲ ಮೂಲೆಯಲ್ಲಿರುವ ಸೂಚಕವು ಅದರ ಚಲನೆಯನ್ನು 100% ಪೂರ್ಣಗೊಳಿಸುತ್ತದೆ. Arduino ಗಾಗಿ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು Atmega328 ನಿಯಂತ್ರಕದಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ.

12. ರೋಬೋಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವುದು

Arduino ನಲ್ಲಿ ಮಿನಿ ರೋಬೋಟ್ - ಸರಿಸಲು ಸಿದ್ಧವಾಗಿದೆ. ರೋಬೋಟ್ ವಾಲಿ

ನಮ್ಮ ರೋಬೋಟ್‌ನ ಮೊದಲ, ಆದರೆ ಪ್ರಾಯೋಗಿಕ ರನ್ ಅನ್ನು ಕೈಗೊಳ್ಳಲು ಸಾಧ್ಯವಿದೆ. ನಮ್ಮ ರೋಬೋಟ್ ಸರಿಯಾಗಿ ಹೋಗಲಿಲ್ಲ, ಒಂದು ಚಕ್ರ ಸರಿಯಾಗಿ ತಿರುಗುತ್ತಿತ್ತು, ಮತ್ತು ಇನ್ನೊಂದು ವಿರುದ್ಧ ದಿಕ್ಕಿನಲ್ಲಿ. ನಾನು ಬ್ಲಾಕ್ M2 ನಲ್ಲಿ ಮೋಟಾರು ತಂತಿಗಳ ಧ್ರುವೀಯತೆಯನ್ನು ಬದಲಾಯಿಸಬೇಕಾಗಿತ್ತು. ಆದರೆ ನಂತರ ನಮ್ಮ ಪುಟ್ಟ ರೋಬೋಟ್ ಗೌರವದಿಂದ ಕೋಣೆಯ ಎಲ್ಲಾ ಮೂಲೆಗಳು ಮತ್ತು ಅಡೆತಡೆಗಳನ್ನು ನಿಭಾಯಿಸಿತು.

Arduino ಕಲಿಯಲು ನಿರ್ಧರಿಸುವ ಎಲ್ಲಾ ಆರಂಭಿಕರಿಗಾಗಿ ನಾನು ಈ ಲೇಖನವನ್ನು ಅರ್ಪಿಸುತ್ತೇನೆ. ಮೊದಲ ಪಾಠದಿಂದ ಹೆಚ್ಚಿನ ಅಧ್ಯಯನವನ್ನು ಮುಂದುವರಿಸಬಹುದು - ಎಲ್ಇಡಿ ಮಿನುಗುವುದು. ರೋಬೋಟ್ನೊಂದಿಗಿನ ವಸ್ತುವು ತುಂಬಾ ಆಸಕ್ತಿದಾಯಕವಾಗಿದೆ, ಮತ್ತು ನಿಮಗೆ ಆಸಕ್ತಿಯನ್ನುಂಟುಮಾಡುವ ಸಲುವಾಗಿ, ಅಡೆತಡೆಗಳನ್ನು ಸುತ್ತುವ ರೋಬೋಟ್ ಅನ್ನು ನಿಖರವಾಗಿ ಹೇಗೆ ನಿರ್ಮಿಸುವುದು ಎಂದು ಪ್ರಾರಂಭಿಸಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ. ಉಳಿದವು ಹೆಚ್ಚು ಸುಲಭವಾಗಿರುತ್ತದೆ ಮತ್ತು ಗಡಿಯಾರದ ಕೆಲಸದಂತೆ ಹೋಗುತ್ತದೆ. ಈ ರೋಬೋಟ್ ನಿಜವಾಗಿಯೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಎಲ್ಲರಿಗೂ ಶುಭವಾಗಲಿ!

ಪಿ.ಎಸ್. ಇದು ಒಂದು ಲೇಖನದ ಸಾಕಷ್ಟು ಉಚಿತ ಭಾಷಾಂತರವಾಗಿತ್ತು, ಹಿಂದೊಮ್ಮೆ, ಇಂಟರ್ನೆಟ್‌ನ ವಿಶಾಲವಾದ ವಿಸ್ತಾರಗಳಲ್ಲಿ, ಹೆಚ್ಚು ಸಹಜವಾಗಿ ತಮಾಷೆಯಾಗಿದೆ, ಏಕೆಂದರೆ ಎಲ್ಲವನ್ನೂ ಹೊಸ ರೀತಿಯಲ್ಲಿ ಮಾಡಲಾಗಿದೆ, ರೇಖಾಚಿತ್ರಗಳನ್ನು ಅಂತಿಮಗೊಳಿಸಲಾಗಿದೆ, ಮೂಲಕ್ಕೆ ಯಾವುದೇ ಉಲ್ಲೇಖಗಳಿಲ್ಲ , ಏಕೆಂದರೆ ಡಾಕ್ಯುಮೆಂಟ್ ವರ್ಡ್ ಡಾಕ್ಯುಮೆಂಟ್ ಆಗಿತ್ತು.

ಮೇಲಕ್ಕೆ