ਮੇਕਫਨ-ਲੋਗੋ

ਮੇਕਫਨ MPU6050 Arduino ਜੈਸਚਰ ਮੋਸ਼ਨ ਟਰੈਕਿੰਗ

Makefun-MPU6050-Arduino-ਗੇਸਚਰ-ਮੋਸ਼ਨ-ਟਰੈਕਿੰਗ-ਉਤਪਾਦ

ਉਤਪਾਦ ਜਾਣਕਾਰੀ

ਨਿਰਧਾਰਨ

  • ਉਤਪਾਦ ਦਾ ਨਾਮ: Gesture-MotionTracking
  • ਸੰਸਕਰਣ: V.1.2
  • Github ਰਿਪੋਜ਼ਟਰੀ: Github ਲਿੰਕ

ਡਿਵਾਈਸ ਸੂਚੀ ਜਾਣ-ਪਛਾਣ

ਜੈਸਚਰ-ਮੋਸ਼ਨ ਟ੍ਰੈਕਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀਆਂ ਕਿੱਟਾਂ ਹਨ:

  • MPU6050 ਮੋਡੀਊਲ
  • JDY-16 ਬਲੂਟੁੱਥ ਮੋਡੀਊਲ
  • NRF24L01+ ਮੋਡੀਊਲ
  • Arduino NANO ਮੁੱਖ ਕੰਟਰੋਲ ਬੋਰਡ
  • ਮਿੰਨੀ ਰੋਟੀ ਬੋਰਡ
  • ਦਸਤਾਨੇ
  • ਮਰਦ ਤੋਂ ਔਰਤ ਡੂਪੋਂਟ ਲਾਈਨ
  • ਬੈਟਰੀ

ਉਤਪਾਦ ਵਰਤੋਂ ਨਿਰਦੇਸ਼

ਨੈਨੋ ਪ੍ਰੋਸੈਸਰ ਦੀ ਜਾਣ-ਪਛਾਣ

ਬਿਜਲੀ ਦੀ ਸਪਲਾਈ

  • ਅਰਡਿਨੋ ਨੈਨੋ ਨੂੰ ਮਿੰਨੀ-ਬੀ USB ਇੰਟਰਫੇਸ, ਵਿਨ ਕਨੈਕਸ਼ਨ ਦੁਆਰਾ ਬਾਹਰੀ 7~12V DC ਪਾਵਰ ਸਪਲਾਈ ਦੁਆਰਾ ਸੰਚਾਲਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਮੈਮੋਰੀ

  • ਨੈਨੋ 'ਤੇ ATmega168/ATmega328 ਵਿੱਚ 16KB/32KB ਫਲੈਸ਼ ਮੈਮੋਰੀ, 1KB/2KB SRAM, ਅਤੇ 0.5KB/1KB EEPROM ਹੈ।

ਇਨਪੁਟ ਅਤੇ ਆਉਟਪੁੱਟ

  • ਨੈਨੋ ਵਿੱਚ 14 ਡਿਜੀਟਲ I/O ਪੋਰਟ, 6 ਐਨਾਲਾਗ ਇਨਪੁਟਸ, ਅਤੇ ਸੀਰੀਅਲ ਕਮਿਊਨੀਕੇਸ਼ਨ, ਇੰਟਰੱਪਟਸ, PWM ਆਉਟਪੁੱਟ, SPI, ਆਦਿ ਵਰਗੇ ਵੱਖ-ਵੱਖ ਫੰਕਸ਼ਨਾਂ ਲਈ ਖਾਸ ਪਿੰਨ ਹਨ।

ਸੰਚਾਰ ਇੰਟਰਫੇਸ

  • ਨੈਨੋ UART ਰਾਹੀਂ ਸੀਰੀਅਲ ਸੰਚਾਰ ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ ਅਤੇ ਇਸ ਵਿੱਚ SPI ਅਤੇ I2C ਬੱਸ ਅਨੁਕੂਲ ਇੰਟਰਫੇਸ ਹਨ।

ਡਾਊਨਲੋਡਰ

  • ਨੈਨੋ ਨੂੰ Arduino ਸੌਫਟਵੇਅਰ ਅਤੇ ਬੂਟਲੋਡਰ ਪ੍ਰੋਗਰਾਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪ੍ਰੋਗਰਾਮ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ICSP ਸਿਰਲੇਖ ਰਾਹੀਂ ਵੀ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਧਿਆਨ

  • ਨੈਨੋ ਵਿੱਚ ਦਸਤੀ ਦਖਲ ਤੋਂ ਬਿਨਾਂ ਸੌਖੇ ਸੌਫਟਵੇਅਰ ਰੀਸੈਟ ਲਈ ਇੱਕ ਆਟੋਮੈਟਿਕ ਰੀਸੈਟ ਡਿਜ਼ਾਈਨ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ।

FAQ

ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ

  • Q: ਮੈਨੂੰ Gesture-MotionTracking ਲਈ ਨਵੀਨਤਮ ਅੱਪਡੇਟ ਜਾਂ ਵਾਧੂ ਸਰੋਤ ਕਿੱਥੋਂ ਮਿਲ ਸਕਦੇ ਹਨ?
    • A: ਤੁਸੀਂ ਅਪਡੇਟਾਂ ਅਤੇ ਸਰੋਤਾਂ ਲਈ ਪ੍ਰਦਾਨ ਕੀਤੇ ਲਿੰਕ 'ਤੇ ਅਧਿਕਾਰਤ ਗਿਥਬ ਰਿਪੋਜ਼ਟਰੀ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ।
  • Q: ਮੈਂ Arduino ਨੈਨੋ ਨੂੰ ਕਿਵੇਂ ਪਾਵਰ ਕਰਾਂ?
    • A: ਤੁਸੀਂ ਇੱਕ ਮਿੰਨੀ-ਬੀ USB ਇੰਟਰਫੇਸ ਜਾਂ ਵਿਨ ਪਿੰਨ ਦੁਆਰਾ ਕਨੈਕਟ ਕੀਤੀ ਇੱਕ ਬਾਹਰੀ 7~12V DC ਪਾਵਰ ਸਪਲਾਈ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਨੈਨੋ ਨੂੰ ਪਾਵਰ ਦੇ ਸਕਦੇ ਹੋ।

"`

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

1. ਡਿਵਾਈਸ ਸੂਚੀ ਜਾਣ-ਪਛਾਣ
ਲੋੜੀਂਦੀਆਂ ਕਿੱਟਾਂ ਹੇਠਾਂ ਦਿੱਤੀ ਸਾਰਣੀ ਵਿੱਚ ਦਿਖਾਈਆਂ ਗਈਆਂ ਹਨ। MPU6050 ਮੋਡੀਊਲ
JDY-16 ਬਲੂਟੁੱਥ ਮੋਡੀਊਲ NRF24L01+ ਮੋਡੀਊਲ
Arduino NANO ਮੁੱਖ ਕੰਟਰੋਲ ਬੋਰਡ ਮਿੰਨੀ ਰੋਟੀ ਬੋਰਡ ਦਸਤਾਨੇ
ਮਰਦ ਤੋਂ ਔਰਤ ਡੂਪੋਂਟ ਲਾਈਨ ਬੈਟਰੀ

1 1 2 1 2 1 ਕਈ 1

ਚਿੱਤਰ 1: ਡਿਵਾਈਸ ਸੂਚੀ
4

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
2. ਨੈਨੋ ਪ੍ਰੋਸੈਸਰ ਜਾਣ-ਪਛਾਣ
Arduino ਨੈਨੋ ਮਾਈਕ੍ਰੋਪ੍ਰੋਸੈਸਰ ATmega328 (Nano3.0) USB-mini ਇੰਟਰਫੇਸ ਵਾਲਾ ਹੈ, ਜਿਸ ਵਿੱਚ 14 ਡਿਜੀਟਲ ਇਨਪੁਟ/ਆਉਟਪੁੱਟ ਪਿੰਨ ਹਨ (ਜਿਨ੍ਹਾਂ ਵਿੱਚੋਂ 6 PWM ਆਉਟਪੁੱਟ ਵਜੋਂ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ), 8 ਐਨਾਲਾਗ ਇਨਪੁਟਸ, ਅਤੇ ਇੱਕ 16 MHz ਸਿਰੇਮਿਕ ਰੈਜ਼ੋਨੇਟਰ, 1 ਮਿੰਨੀ -B USB ਕਨੈਕਸ਼ਨ, ਇੱਕ ICSP ਸਿਰਲੇਖ ਅਤੇ ਇੱਕ ਰੀਸੈਟ ਬਟਨ। ਪ੍ਰੋਸੈਸਰ ATmega328 ਵਰਕਿੰਗ ਵੋਲtage 5v ਇਨਪੁਟ ਵੋਲtage (ਸਿਫਾਰਸ਼ੀ) 7-12v ਇਨਪੁਟ ਵੋਲtage (ਰੇਂਜ) 6-20v ਡਿਜੀਟਲ IO ਪਿੰਨ 14 (ਜਿਸ ਵਿੱਚੋਂ 6 ਨੂੰ PWM ਆਉਟਪੁੱਟ ਵਜੋਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ) ਐਨਾਲਾਗ ਇਨਪੁਟ ਪਿੰਨ 6 IO ਪਿੰਨ DC 40 mA ਫਲੈਸ਼ ਮੈਮੋਰੀ 16 ਜਾਂ 32 KB (ਜਿਸ ਵਿੱਚ ਬੂਟਲੋਡਰ ਲਈ 2 KB) SRAM 1KB ਜਾਂ 2KB EEPROM 0.5 KB ਜਾਂ 1KB ATmega328 CH340 USB ਤੋਂ ਸੀਰੀਅਲ ਪੋਰਟ ਚਿੱਪ ਘੜੀ 16 MHz
2.1 ਪਾਵਰ ਸਪਲਾਈ
ਅਰਡਿਨੋ ਨੈਨੋ ਪਾਵਰ ਸਪਲਾਈ ਮੋਡ: ਮਿਨੀ-ਬੀ USB ਇੰਟਰਫੇਸ ਪਾਵਰ ਸਪਲਾਈ ਅਤੇ ਬਾਹਰੀ ਵਿਨ ਕੁਨੈਕਸ਼ਨ 7~12V ਬਾਹਰੀ ਡੀਸੀ ਪਾਵਰ ਸਪਲਾਈ
2.2 ਮੈਮੋਰੀ
ATmega168/ATmega328 ਵਿੱਚ ਆਨ-ਚਿੱਪ 16KB/32KB ਫਲੈਸ਼ ਸ਼ਾਮਲ ਹੈ, ਜਿਸ ਵਿੱਚੋਂ 2KB ਬੂਟਲੋਡਰ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇੱਥੇ 1KB/2KB SRAM ਅਤੇ 0.5KB/1KB EEPROM ਵੀ ਹਨ।
2.3 ਇੰਪੁੱਟ ਅਤੇ ਆਉਟਪੁੱਟ
14 ਡਿਜ਼ੀਟਲ ਇੰਪੁੱਟ ਅਤੇ ਆਉਟਪੁੱਟ ਪੋਰਟ: ਵਰਕਿੰਗ ਵੋਲtage 5V ਹੈ, ਅਤੇ ਹਰੇਕ ਚੈਨਲ 40mA ਦੇ ਅਧਿਕਤਮ ਕਰੰਟ ਨੂੰ ਆਉਟਪੁੱਟ ਅਤੇ ਐਕਸੈਸ ਕਰ ਸਕਦਾ ਹੈ। ਹਰੇਕ ਚੈਨਲ 20-50K ohm ਅੰਦਰੂਨੀ ਪੁੱਲ-ਅੱਪ ਪ੍ਰਤੀਰੋਧ ਨਾਲ ਲੈਸ ਹੁੰਦਾ ਹੈ (ਮੂਲ ਰੂਪ ਵਿੱਚ ਜੁੜਿਆ ਨਹੀਂ ਹੁੰਦਾ)। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕੁਝ ਪਿੰਨਾਂ ਦੇ ਖਾਸ ਫੰਕਸ਼ਨ ਹੁੰਦੇ ਹਨ।
ਸੀਰੀਅਲ ਸਿਗਨਲ RX (0), TX (1): ਇਹ TTL ਵੋਲ ਦੇ ਨਾਲ ਸੀਰੀਅਲ ਪੋਰਟ ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੇ ਸਿਗਨਲ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈtage ਪੱਧਰ, FT232Rl ਦੇ ਅਨੁਸਾਰੀ ਪਿੰਨ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ।
ਬਾਹਰੀ ਇੰਟਰੱਪਟ (ਨੰਬਰ 2 ਅਤੇ ਨੰਬਰ 3): ਟ੍ਰਿਗਰ ਇੰਟਰੱਪਟ ਪਿੰਨ, ਜਿਸ ਨੂੰ ਚੜ੍ਹਦੇ ਕਿਨਾਰੇ, ਡਿੱਗਣ ਵਾਲੇ ਕਿਨਾਰੇ ਜਾਂ ਸਮਕਾਲੀ ਟਰਿੱਗਰ 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਪਲਸ ਚੌੜਾਈ ਮੋਡੂਲੇਸ਼ਨ PWM (3, 5, 6, 9, 10, 11): 6 ਚੈਨਲ, 8-ਬਿੱਟ PWM ਆਉਟਪੁੱਟ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
5

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
SPI10(SS)11(MOSI)12(MISO)13(SCK):SPI ਸੰਚਾਰ ਇੰਟਰਫੇਸ। LED (ਨੰਬਰ 13): Arduino ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ LED ਦੇ ਰਾਖਵੇਂ ਇੰਟਰਫੇਸ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਆਉਟਪੁੱਟ ਹੈ
ਉੱਚ, LED ਜਗਦੀ ਹੈ। ਜਦੋਂ ਆਉਟਪੁੱਟ ਘੱਟ ਹੁੰਦੀ ਹੈ, ਤਾਂ LED ਬੰਦ ਹੁੰਦਾ ਹੈ। 6 ਐਨਾਲਾਗ ਇਨਪੁਟ A0 ਤੋਂ A5: ਹਰੇਕ ਚੈਨਲ ਦਾ ਰੈਜ਼ੋਲਿਊਸ਼ਨ 10 ਬਿੱਟ ਹੁੰਦਾ ਹੈ (ਅਰਥਾਤ, ਇਨਪੁਟ ਵਿੱਚ 1024 ਵੱਖ-ਵੱਖ ਹੁੰਦੇ ਹਨ।
ਮੁੱਲ), ਡਿਫੌਲਟ ਇਨਪੁਟ ਸਿਗਨਲ ਰੇਂਜ 0 ਤੋਂ 5V ਹੈ, ਅਤੇ ਇੰਪੁੱਟ ਦੀ ਉਪਰਲੀ ਸੀਮਾ AREF ਦੁਆਰਾ ਐਡਜਸਟ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕੁਝ ਪਿੰਨਾਂ ਦੇ ਖਾਸ ਫੰਕਸ਼ਨ ਹੁੰਦੇ ਹਨ। TWI ਇੰਟਰਫੇਸ (SDA A4 ਅਤੇ SCL A5): ਸੰਚਾਰ ਇੰਟਰਫੇਸ (I2C ਬੱਸ ਦੇ ਅਨੁਕੂਲ) ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। AREF: ਹਵਾਲਾ voltagਐਨਾਲਾਗ ਇੰਪੁੱਟ ਸਿਗਨਲ ਦਾ e। ਰੀਸੈਟ ਮਾਈਕ੍ਰੋਕੰਟਰੋਲਰ ਚਿੱਪ ਨੂੰ ਰੀਸੈਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਸਿਗਨਲ ਘੱਟ ਹੁੰਦਾ ਹੈ।
2.4 ਸੰਚਾਰ ਇੰਟਰਫੇਸ
ਸੀਰੀਅਲ ਪੋਰਟ: ATmega328 ਦਾ ਬਿਲਟ-ਇਨ UART ਡਿਜੀਟਲ ਪੋਰਟ 0 (RX) ਅਤੇ 1 (TX) ਰਾਹੀਂ ਬਾਹਰੀ ਸੀਰੀਅਲ ਪੋਰਟ ਨਾਲ ਸੰਚਾਰ ਕਰ ਸਕਦਾ ਹੈ।
2.5 ਡਾਊਨਲੋਡਰ
Arduino Nano 'ਤੇ MCU ਵਿੱਚ ਇੱਕ ਬੂਟਲੋਡਰ ਪ੍ਰੋਗਰਾਮ ਹੈ, ਇਸਲਈ ਤੁਸੀਂ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਸਿੱਧਾ Arduino ਸੌਫਟਵੇਅਰ ਤੋਂ ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਨੈਨੋ 'ਤੇ ICSP ਸਿਰਲੇਖ ਰਾਹੀਂ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਸਿੱਧੇ MCU ਵਿੱਚ ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹੋ।
2.6 ਧਿਆਨ
Arduino Nano ਇੱਕ ਆਟੋਮੈਟਿਕ ਰੀਸੈਟ ਡਿਜ਼ਾਈਨ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ ਹੋਸਟ ਦੁਆਰਾ ਰੀਸੈਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਰੀਸੈਟ ਬਟਨ ਨੂੰ ਦਬਾਏ ਬਿਨਾਂ, ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਅਰਡਿਊਨੋ ਸੌਫਟਵੇਅਰ ਦੁਆਰਾ ਸਾਫਟਵੇਅਰ ਨੂੰ ਨੈਨੋ ਵਿੱਚ ਆਪਣੇ ਆਪ ਰੀਸੈਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਬਲੂਮੋਡਿਊਲ ਜਾਣ-ਪਛਾਣ

ਬਲੂਮੋਡਿਊਲ ਜਾਣ-ਪਛਾਣ JDY-16

3.1 ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ
BLE ਹਾਈ ਸਪੀਡ ਪਾਰਦਰਸ਼ੀ ਟ੍ਰਾਂਸਮਿਸ਼ਨ 8K ਬਾਈਟ ਦਰ ਸੰਚਾਰ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਬਾਈਟ ਸੀਮਾ ਤੋਂ ਬਿਨਾਂ ਡੇਟਾ ਭੇਜੋ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰੋ, 115200 ਬੌਡ ਰੇਟ ਦਾ ਸਮਰਥਨ ਕਰੋ ਲਗਾਤਾਰ ਡੇਟਾ ਭੇਜੋ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰੋ। ਕੰਮ ਦੇ 3 ਢੰਗਾਂ ਦਾ ਸਮਰਥਨ ਕਰੋ (AT+STARTEN ਹਦਾਇਤ ਫੰਕਸ਼ਨ ਦਾ ਵੇਰਵਾ ਦੇਖੋ)। ਸਪੋਰਟ (ਸੀਰੀਅਲ ਪੋਰਟ, IO, APP) ਸਲੀਪ ਵੇਕ ਅੱਪ ਸਪੋਰਟ WeChat Airsync, WeChat ਐਪਲਿਟ ਅਤੇ APP ਸੰਚਾਰ। 4 ਚੈਨਲ IO ਪੋਰਟ ਨਿਯੰਤਰਣ ਅਤੇ ਉੱਚ ਸ਼ੁੱਧਤਾ RTC ਘੜੀ ਦਾ ਸਮਰਥਨ ਕਰੋ। PWM ਫੰਕਸ਼ਨ ਦਾ ਸਮਰਥਨ ਕਰੋ (UART, IIC, APP, ਆਦਿ ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ)। UART ਅਤੇ IIC ਸੰਚਾਰ ਮੋਡ ਦਾ ਸਮਰਥਨ ਕਰੋ, UART ਸੰਚਾਰ ਲਈ ਡਿਫੌਲਟ। iBeacon ਮੋਡ (WeChat ਸ਼ੇਕ ਪ੍ਰੋਟੋਕੋਲ ਅਤੇ Apple iBeacon ਪ੍ਰੋਟੋਕੋਲ ਦਾ ਸਮਰਥਨ ਕਰੋ)
6

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਹੋਸਟ ਪਾਰਦਰਸ਼ੀ ਟ੍ਰਾਂਸਮਿਸ਼ਨ ਮੋਡ (ਐਪਲੀਕੇਸ਼ਨ ਮੋਡੀਊਲ, ਹੋਸਟ ਅਤੇ ਸਲੇਵ ਸੰਚਾਰ ਵਿਚਕਾਰ ਡੇਟਾ ਦਾ ਸੰਚਾਰ)।
ਵਾਇਰਲੈੱਸ ਸੰਚਾਰ ਮੋਡੀਊਲ ਸੰਰਚਨਾ

Makefun-MPU6050-Arduino-ਗੇਸਚਰ-ਮੋਸ਼ਨ-ਟਰੈਕਿੰਗ-ਅੰਜੀਰ-1

ਚਿੱਤਰ 2: JDY-16 ਮੋਡੀਊਲ ਭੌਤਿਕ ਨਕਸ਼ਾ (1) ਨੈਨੋ ਅਤੇ JDY-16 ਦੀ ਕੇਬਲ

JDY-16 ਮੋਡੀਊਲ

ਅਰਡਿਨੋ ਨੈਨੋ

ਵੀ.ਸੀ.ਸੀ

5V

ਜੀ.ਐਨ.ਡੀ

ਜੀ.ਐਨ.ਡੀ

RXD

D2

TXD

D3

STAT

NC

ਪੀਡਬਲਯੂਆਰਸੀ

NC

MotionTrackJDY-16AT_CMD AT_CMD.ino ਪ੍ਰੋਗਰਾਮ ਡਾਊਨਲੋਡ ਕਰੋ

(2) ਸੰਰਚਨਾ ਲੋੜਾਂ:

ਦੋ JDY-16 ਬਲੂਟੁੱਥ ਮੋਡੀਊਲਾਂ ਦੀ ਮਾਸਟਰ-ਸਲੇਵ ਬਾਈਡਿੰਗ ਨੂੰ ਲਾਗੂ ਕਰੋ।

3.2 ਸੰਚਾਲਨ ਦੇ ਪੜਾਅ

1. ਨੈਨੋ ਅਤੇ JDY-16 ਮੋਡੀਊਲ ਨੂੰ ਡੂਪੋਂਟ ਲਾਈਨ ਨਾਲ ਕਨੈਕਟ ਕਰੋ। 2. AT ਕਮਾਂਡ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ ਡਾਊਨਲੋਡਰ ਨੂੰ ਕੰਪਿਊਟਰ ਨਾਲ ਕਨੈਕਟ ਕਰੋ ਅਤੇ ਸੀਰੀਅਲ ਪੋਰਟ ਸਹਾਇਕ ਨੂੰ ਖੋਲ੍ਹੋ। ਬੌਡ ਰੇਟ ਨੂੰ 9600, ਡੇਟਾ ਬਿੱਟ ਨੂੰ 8 ਬਿੱਟ, ਸਟਾਪ ਬਿੱਟ ਨੂੰ 1 ਬਿੱਟ, ਅਤੇ ਕੋਈ ਸਮਾਨਤਾ ਬਿੱਟ ਨਹੀਂ ਸੈੱਟ ਕਰੋ।

7

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਜਾਂਚ ਸੰਚਾਰ: ਭੇਜੋ: AT ਵਾਪਸ: ਠੀਕ ਹੈ
ਚਿੱਤਰ 3: AT ਕਮਾਂਡ ਡਾਇਗ੍ਰਾਮ ਭੇਜੋ 3. ਭੇਜੋ: AT+HOSTEN1rn ————– ਬਲੂਟੁੱਥ ਨੂੰ ਮੁੱਖ ਮੋਡ ਵਜੋਂ ਸੈੱਟ ਕਰੋ ਪਿੱਛੇ: ਠੀਕ ਹੈ ਵਾਪਸ: ਠੀਕ ਹੈ
8

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਚਿੱਤਰ 4: ਹੋਸਟ ਮੋਡ ਸੈੱਟ ਕਰਨਾ 4. ਆਲੇ-ਦੁਆਲੇ ਦੇ JDY-16 ਬਲੂਟੁੱਥ ਨੂੰ ਸਕੈਨ ਕਰੋ: 1. ਸਲੇਵ ਟ੍ਰਾਂਸਮਿਸ਼ਨ: AT+SCANrn ————— ਸਲੇਵ ਦੇ ਆਪਣੇ ਪਤੇ ਦੀ ਪੁੱਛਗਿੱਛ ਕਰੋ ਪਿੱਛੇ: OK +DEV:1=3CA5090A160F, -62, JDY-16 +ਸਟਾਪ:ਸਕੈਨ
ਚਿੱਤਰ 5: ਪੈਰੀਫਿਰਲ ਬਲੂਟੁੱਥ ਡਿਵਾਈਸਾਂ ਦੀ ਪੁੱਛਗਿੱਛ ਕਰਨਾ 5. ਬਲੂਟੁੱਥ ਨੂੰ ਕਨੈਕਟ ਕਰੋ
ਹੋਸਟ ਭੇਜਦਾ ਹੈ: AT+CONN3CA5090A160Frn ————— ਹੋਸਟ ਬਾਈਡਿੰਗ ਸਲੇਵ ਐਡਰੈੱਸ ਪਿੱਛੇ: ਠੀਕ ਹੈ ਪਾਵਰ ਸਪਲਾਈ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਦੋ ਬਲੂਟੁੱਥ ਇੱਕ ਦੂਜੇ ਨਾਲ ਕਨੈਕਟ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ, ਹੋਸਟ ਬਲੂਟੁੱਥ ਰਾਹੀਂ ਡੇਟਾ ਭੇਜ ਸਕਦੇ ਹਨ, ਸਲੇਵ ਬਲੂਟੁੱਥ ਉਹੀ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ। ਜਾਂ ਤੁਸੀਂ ਮਾਸਟਰ-ਸਲੇਵ ਬਲੂਟੁੱਥ ਨੂੰ ਸੈੱਟ ਕਰਨ ਲਈ ਤਿਆਰ ਕੀਤੀ ਮਾਸਟਰ-ਸਲੇਵ ਕੌਂਫਿਗਰੇਸ਼ਨ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਪ੍ਰੋਗਰਾਮ ਕਰ ਸਕਦੇ ਹੋ, ਫਿਰ ਹੋਸਟ ਕਨੈਕਸ਼ਨ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਪ੍ਰੋਗ੍ਰਾਮ ਕਰਦਾ ਹੈ ਅਤੇ ਆਪਣੇ ਆਪ ਜੁੜ ਜਾਂਦਾ ਹੈ। (ਨੋਟ ਕਰੋ ਕਿ ਮੌਜੂਦਾ ਸਮੇਂ ਵਿੱਚ ਸਿਰਫ਼ JDY-16 ਦਾ ਬਲੂਟੁੱਥ ਮੋਡੀਊਲ ਹੀ ਆਪਣੇ ਆਪ ਕਨੈਕਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ)
9

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
3.3 ਨੈਨੋ ਅਤੇ JDY-16 ਦੀ ਕੁਨੈਕਸ਼ਨ ਵਿਧੀ
ਚਿੱਤਰ 6: ਨੈਨੋ ਅਤੇ JDY-16 ਕੁਨੈਕਸ਼ਨ ਡਾਇਗ੍ਰਾਮ

Makefun-MPU6050-Arduino-ਗੇਸਚਰ-ਮੋਸ਼ਨ-ਟਰੈਕਿੰਗ-ਅੰਜੀਰ-2
10

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

NRF24L01 ਵਾਇਰਲੈੱਸ ਮੋਡੀਊਲ ਜਾਣ-ਪਛਾਣ

NRF24L01 ਵਾਇਰਲੈੱਸ ਮੋਡੀਊਲ ਜਾਣ-ਪਛਾਣ

nRF24L01+ ਮੋਡੀਊਲ ਇੱਕ 2.4G ਵਾਇਰਲੈੱਸ ਸੰਚਾਰ ਮੋਡੀਊਲ ਹੈ ਜੋ ਨੋਰਡਿਕ ਦੁਆਰਾ nRF24L01 ਚਿੱਪ ਦੇ ਅਧਾਰ 'ਤੇ ਵਿਕਸਤ ਕੀਤਾ ਗਿਆ ਹੈ। FSK ਮੋਡੂਲੇਸ਼ਨ ਨੂੰ ਅਪਣਾਓ ਅਤੇ Nordic ਦੇ ਆਪਣੇ ਇਨਹਾਂਸਡ ਸ਼ਾਰਟ ਬਰਸਟ ਪ੍ਰੋਟੋਕੋਲ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰੋ। ਪੁਆਇੰਟ-ਪੁਆਇੰਟ ਜਾਂ 1-ਤੋਂ-6 ਵਾਇਰਲੈੱਸ ਸੰਚਾਰ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਵਾਇਰਲੈੱਸ ਸੰਚਾਰ ਦੀ ਗਤੀ 2M (bps) ਤੱਕ ਪਹੁੰਚ ਸਕਦੀ ਹੈ। NRF24L01 ਦੇ ਚਾਰ ਓਪਰੇਟਿੰਗ ਮੋਡ ਹਨ: ਟ੍ਰਾਂਸਸੀਵਰ ਮੋਡ, ਕੌਂਫਿਗਰੇਸ਼ਨ ਮੋਡ, ਨਿਸ਼ਕਿਰਿਆ ਮੋਡ, ਅਤੇ ਬੰਦ ਮੋਡ। ਇਸ ਪ੍ਰਯੋਗ ਵਿੱਚ ਵਰਤਿਆ ਗਿਆ ਭੌਤਿਕ ਨਕਸ਼ਾ ਚਿੱਤਰ 7 ਦੇ ਖੱਬੇ ਪਾਸੇ ਹੈ। Nrf24L01 ਰਸੀਦ ਦੇ ਸਥਿਰ ਰਿਸੈਪਸ਼ਨ ਲਈ, VCC ਅਤੇ GUD ਦੇ ਵਿਚਕਾਰ 10uf ਕੈਪਸੀਟਰ ਨੂੰ ਜੋੜਨ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿਵੇਂ ਕਿ ਸੱਜੇ ਪਾਸੇ ਦਿਖਾਇਆ ਗਿਆ ਹੈ।
ਚਿੱਤਰ 7: Nrf24l01+ ਭੌਤਿਕ ਨਕਸ਼ਾ ਅਤੇ ਸੋਲਡਰ ਚਿੱਤਰ
4.1 ਮੋਡੀਊਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ
2.4GHz, ਛੋਟਾ ਆਕਾਰ 15x29mm ਐਂਟੀਨਾ ਸਮੇਤ ਸਪੋਰਟ ਛੇ-ਚੈਨਲ ਡਾਟਾ ਰਿਸੈਪਸ਼ਨ ਘੱਟ ਕੰਮ ਕਰਨ ਵਾਲੀ ਵੋਲਯੂਮtage: 1.93.6V ਡਾਟਾ ਟ੍ਰਾਂਸਫਰ ਦਰ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ: 1Mbps2Mbps ਘੱਟ ਪਾਵਰ ਖਪਤ ਡਿਜ਼ਾਇਨ ਵਰਕਿੰਗ ਕਰੰਟ ਪ੍ਰਾਪਤ ਕਰਨ 'ਤੇ 12.3mA, 11.3dBm ਪਾਵਰ 'ਤੇ 0mA ਹੈ
ਨਿਕਾਸ, ਪਾਵਰ-ਡਾਊਨ ਮੋਡ 'ਤੇ 900nA ਆਟੋਮੈਟਿਕ ਰੀਟ੍ਰਾਂਸਮਿਸ਼ਨ ਫੰਕਸ਼ਨ, ਆਟੋਮੈਟਿਕ ਖੋਜ ਅਤੇ ਗੁੰਮ ਹੋਏ ਡੇਟਾ ਪੈਕੇਟਾਂ ਦੀ ਮੁੜ ਪ੍ਰਸਾਰਣ,
ਰੀਟ੍ਰਾਂਸਮਿਸ਼ਨ ਟਾਈਮ ਅਤੇ ਰੀਟ੍ਰਾਂਸਮਿਸ਼ਨ ਟਾਈਮ ਸੌਫਟਵੇਅਰ ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਆਟੋਮੈਟਿਕ ਰਿਸਪਾਂਸ ਫੰਕਸ਼ਨ, ਵੈਧ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਮੋਡੀਊਲ ਆਪਣੇ ਆਪ ਇੱਕ ਜਵਾਬ ਭੇਜਦਾ ਹੈ
ਸਿਗਨਲ ਬਿਲਟ-ਇਨ ਹਾਰਡਵੇਅਰ CRC ਗਲਤੀ ਖੋਜ ਅਤੇ ਪੁਆਇੰਟ-ਟੂ-ਮਲਟੀਪੁਆਇੰਟ ਸੰਚਾਰ ਐਡਰੈੱਸ ਕੰਟਰੋਲ NRF24L01 ਚਿੱਪ ਵੇਰਵੇ ਕਿਰਪਾ ਕਰਕੇ tonRF24L01 Datasheet.pdf ਵੇਖੋ
11

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਜਾਣਕਾਰੀ ਪਿੰਨ ਕਰੋ

ਚਿੱਤਰ 8: Nrf24L01 ਪਿੰਨ ਜਾਣਕਾਰੀ ਚਿੱਤਰ

ਪਿੰਨ ਸਿੰਬਲ

ਫੰਕਸ਼ਨ

ਦਿਸ਼ਾ

1 ਜੀ.ਐੱਨ.ਡੀ.

ਜੀ.ਐਨ.ਡੀ

2

+5ਵੀ

ਬਿਜਲੀ ਦੀ ਸਪਲਾਈ

3

CE

ਵਰਕਿੰਗ ਮੋਡ 'ਤੇ ਕੰਟਰੋਲ ਲਾਈਨ

IN

4

CSN ਚਿੱਪ ਸਿਗਨਲ ਚੁਣੋ, ਨੀਵੇਂ ਪੱਧਰ ਦਾ ਕੰਮ ਕਰਨਾ

IN

5

ਐਸ.ਸੀ.ਕੇ.

ਐਸ ਪੀ ਆਈ ਘੜੀ

IN

6 MOSI

SPI ਇੰਪੁੱਟ

IN

7 MISO

SPI ਆਉਟਪੁੱਟ

ਬਾਹਰ

8

IPQ

ਰੁਕਾਵਟ ਆਉਟਪੁੱਟ

ਬਾਹਰ+

4.2 ਪ੍ਰਯੋਗਾਤਮਕ ਉਦੇਸ਼
1. nRF24L01+ਮੋਡਿਊਲ ਬਾਰੇ ਅਤੇ Arduino ਨਾਲ ਜੁੜਨ ਦੇ ਤਰੀਕੇ ਬਾਰੇ ਜਾਣੋ। 2. ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਨਾ ਅਤੇ ਭੇਜਣਾ ਪੂਰਾ ਕਰਨ ਲਈ arduino ਅਤੇ nRF24L01+ ਮੋਡੀਊਲ ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰੀਏ।

4.3 ਇਸ ਪ੍ਰਯੋਗ ਲਈ ਲੋੜੀਂਦੇ ਹਿੱਸੇ
Arduino UNO R3 ਮਦਰਬੋਰਡ Arduino NANO ਮਦਰਬੋਰਡ nRF24L01 ਮੋਡੀਊਲ*2 ਕਈ ਤਾਰਾਂ
12

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
4.4 ਪ੍ਰਯੋਗਾਤਮਕ ਯੋਜਨਾਬੱਧ ਚਿੱਤਰ

ਚਿੱਤਰ 9: ਨੈਨੋ ਅਤੇ Nrf24L01 ਕੁਨੈਕਸ਼ਨ ਚਿੱਤਰ

Arduino ਅਤੇ NRF24L01 ਕਨੈਕਸ਼ਨ ਦਾ ਮੋਡ

arduino ਨੈਨੋ

nRF24L01

+3.3ਵੀ

ਵੀ.ਸੀ.ਸੀ

ਜੀ.ਐਨ.ਡੀ

ਜੀ.ਐਨ.ਡੀ

7 ਪਿੰਨ

4ਪਿਨ CSN

4 ਪਿੰਨ

3ਪਿਨ ਸੀ.ਈ

11 ਪਿੰਨ

6ਪਿਨ MOSI

12 ਪਿੰਨ

7ਪਿਨ MISO

13 ਪਿੰਨ

5ਪਿਨ SCK

arduino Uno +3.3V GND 7 4 11pin 12pin

nRF24L01
VCC GND 4pin CSN 3pin CE 6pin MOSI 7pin MISO

13

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

13 ਪਿੰਨ

5ਪਿਨ SCK

4.4 ਪ੍ਰੋਗਰਾਮ ਦਾ ਸਿਧਾਂਤ
ਪ੍ਰਕਿਰਿਆ ਸ਼ੁਰੂ ਕਰੋ 1 ਪਹਿਲਾਂ, nRF24L01 ਨੂੰ ਸੰਚਾਰਿਤ ਮੋਡ ਲਈ ਕੌਂਫਿਗਰ ਕਰੋ। 2 ਫਿਰ ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੇ ਸਿਰੇ ਦਾ ਪਤਾ TX_ADDR ਅਤੇ ਡੇਟਾ TX_PLD ਨੂੰ SPI ਪੋਰਟ ਦੁਆਰਾ nRF24L01 ਬਫਰ ਖੇਤਰ ਵਿੱਚ ਸਮੇਂ ਦੇ ਕ੍ਰਮ ਵਿੱਚ ਭੇਜਣ ਲਈ ਲਿਖੋ। 3Arduino CE ਨੂੰ ਘੱਟੋ-ਘੱਟ 10 s ਲਈ ਉੱਚ ਹੋਣ ਲਈ ਕੌਂਫਿਗਰ ਕਰਦਾ ਹੈ ਅਤੇ 130 s ਦੀ ਦੇਰੀ ਤੋਂ ਬਾਅਦ ਡਾਟਾ ਪ੍ਰਸਾਰਿਤ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਆਟੋ ਜਵਾਬ ਚਾਲੂ ਹੈ, ਤਾਂ nRF24L01 ਡਾਟਾ ਸੰਚਾਰਿਤ ਕਰਨ ਤੋਂ ਤੁਰੰਤ ਬਾਅਦ ਰਿਸੀਵ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੁੰਦਾ ਹੈ ਅਤੇ ਜਵਾਬ ਸਿਗਨਲ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਕੋਈ ਜਵਾਬ ਮਿਲਦਾ ਹੈ, ਤਾਂ ਸੰਚਾਰ ਨੂੰ ਸਫਲ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। 4NRF24L01 ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ TX_DS ਉੱਚ ਸੈੱਟ ਕਰੇਗਾ ਅਤੇ TX_PLD ਨੂੰ ਟ੍ਰਾਂਸਮਿਟ ਸਟੈਕ ਤੋਂ ਸਾਫ਼ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਜੇਕਰ ਕੋਈ ਜਵਾਬ ਨਹੀਂ ਮਿਲਦਾ, ਤਾਂ ਡੇਟਾ ਆਪਣੇ ਆਪ ਮੁੜ ਪ੍ਰਸਾਰਿਤ ਕੀਤਾ ਜਾਵੇਗਾ। ਜੇਕਰ ਰੀਟ੍ਰਾਂਸਮਿਸ਼ਨ (ARC_CNT) ਦੀ ਸੰਖਿਆ ਉਪਰਲੀ ਸੀਮਾ 'ਤੇ ਪਹੁੰਚ ਜਾਂਦੀ ਹੈ, MAX_RT ਉੱਚੀ ਸੈੱਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਅਤੇ TX_PLD ਨੂੰ ਕਲੀਅਰ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ; MAX_RT ਜਦੋਂ TX_DS ਨੂੰ ਉੱਚਾ ਸੈੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ MCU ਰੁਕਾਵਟ ਨੂੰ ਟਰਿੱਗਰ ਕਰਨ ਲਈ IRQ ਘੱਟ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਆਖਰੀ ਪ੍ਰਸਾਰਣ ਸਫਲ ਹੁੰਦਾ ਹੈ, ਜੇਕਰ CE ਘੱਟ ਹੁੰਦਾ ਹੈ, nRF24L01 ਸਟੈਂਡਬਾਏ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਵੇਗਾ। 5 ਜੇਕਰ ਟਰਾਂਸਮਿਸ਼ਨ ਸਟੈਕ ਵਿੱਚ ਡੇਟਾ ਹੈ ਅਤੇ ਸੀਈ ਉੱਚ ਹੈ, ਤਾਂ ਅਗਲਾ ਪ੍ਰਸਾਰਣ ਸ਼ੁਰੂ ਹੋ ਜਾਂਦਾ ਹੈ; ਜੇਕਰ ਟਰਾਂਸਮਿਸ਼ਨ ਸਟੈਕ ਵਿੱਚ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਹੈ ਅਤੇ CE ਉੱਚ ਹੈ, ਤਾਂ nRF24L01 ਸਟੈਂਡਬਾਏ ਮੋਡ 2 ਵਿੱਚ ਦਾਖਲ ਹੋਵੇਗਾ। ਡਾਟਾ ਪ੍ਰਕਿਰਿਆ ਪ੍ਰਾਪਤ ਕਰੋ 1 ਜਦੋਂ nRF24L01 ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਕਿਰਪਾ ਕਰਕੇ ਪਹਿਲਾਂ ਮੋਡ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ nRF24L01 ਨੂੰ ਕੌਂਫਿਗਰ ਕਰੋ। 2ਫੇਰ ਡੇਟਾ ਦੇ ਆਉਣ ਦੀ ਉਡੀਕ ਕਰਨ ਲਈ ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੀ ਸਥਿਤੀ ਵਿੱਚ 130 ਦੀ ਦੇਰੀ ਕਰੋ। ਜਦੋਂ ਰਿਸੀਵਰ ਇੱਕ ਵੈਧ ਪਤੇ ਅਤੇ CRC ਦਾ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਡਾਟਾ ਪੈਕੇਟ ਨੂੰ ਰਿਸੀਵਰ ਸਟੈਕ ਵਿੱਚ ਸਟੋਰ ਕਰਦਾ ਹੈ। ਉਸੇ ਸਮੇਂ, ਇੰਟਰੱਪਟ ਚਿੰਨ੍ਹ RX_DR ਉੱਚਾ ਸੈੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ MCU ਨੂੰ ਸੂਚਿਤ ਕਰਨ ਲਈ IRQ ਘੱਟ ਜਾਂਦਾ ਹੈ। 3ਜੇਕਰ ਇਸ ਸਮੇਂ ਸਵੈ-ਜਵਾਬ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਪ੍ਰਾਪਤਕਰਤਾ ਉਸੇ ਸਮੇਂ ਸੰਚਾਰ ਸਥਿਤੀ ਈਕੋ ਪ੍ਰਤੀਕਿਰਿਆ ਸਿਗਨਲ ਵਿੱਚ ਦਾਖਲ ਹੋਵੇਗਾ। ਜਦੋਂ ਆਖਰੀ ਰਿਸੈਪਸ਼ਨ ਸਫਲ ਹੁੰਦਾ ਹੈ, ਜੇਕਰ CE ਘੱਟ ਜਾਂਦਾ ਹੈ, nRF24L01 ਨਿਸ਼ਕਿਰਿਆ ਮੋਡ 1 ਵਿੱਚ ਚਲਾ ਜਾਵੇਗਾ।
nRF24L01 ਟਰਾਂਸੀਵਰ ਟੈਸਟ ਪ੍ਰੋਗਰਾਮ ਕਿਰਪਾ ਕਰਕੇ “MotionTracknRF24l01+ਪ੍ਰੋਗਰਾਮ” ਵੇਖੋ।

14

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

Mpu6050 ਜਾਣ-ਪਛਾਣ

MPU6050 ਵਿਸ਼ਵ ਦਾ ਪਹਿਲਾ 6-ਧੁਰਾ ਮੋਸ਼ਨ ਪ੍ਰੋਸੈਸਿੰਗ ਕੰਪੋਨੈਂਟ ਹੈ ਜਿਸ ਵਿੱਚ ਏਕੀਕ੍ਰਿਤ 3-ਧੁਰੀ ਜਾਇਰੋਸਕੋਪ ਅਤੇ 3-ਧੁਰੀ ਐਕਸਲੇਟਰ ਹੈ। ਇਹ ਦੂਜੇ I2C ਪੋਰਟ ਰਾਹੀਂ ਦੂਜੇ ਚੁੰਬਕੀ ਸੈਂਸਰਾਂ ਜਾਂ ਦੂਜੇ ਸੈਂਸਰਾਂ ਦੇ ਡਿਜੀਟਲ ਮੋਸ਼ਨ ਪ੍ਰੋਸੈਸਿੰਗ (DMP) ਨਾਲ ਜੁੜ ਸਕਦਾ ਹੈ। ਹਾਰਡਵੇਅਰ ਪ੍ਰਵੇਗ ਇੰਜਣ ਮੁੱਖ ਤੌਰ 'ਤੇ I9C ਪੋਰਟ ਦੁਆਰਾ ਇੱਕ ਸਿੰਗਲ ਡੇਟਾ ਸਟ੍ਰੀਮ ਦੇ ਰੂਪ ਵਿੱਚ ਹੋਸਟ MCU ਨੂੰ ਇੱਕ ਪੂਰੀ 2-ਧੁਰੀ ਫਿਊਜ਼ਨ ਕੈਲਕੂਲੇਸ਼ਨ ਤਕਨੀਕ ਆਊਟਪੁੱਟ ਕਰਦਾ ਹੈ।
MPU6050 ਚਿੱਪ ਇੱਕ ਡੇਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਸਬ ਮੋਡੀਊਲ DMP ਦੇ ਨਾਲ ਆਉਂਦੀ ਹੈ, ਇਸ ਵਿੱਚ ਬਿਲਟ-ਇਨ ਹਾਰਡਵੇਅਰ ਫਿਲਟਰਿੰਗ ਐਲਗੋਰਿਦਮ ਹੈ, DMP ਆਉਟਪੁੱਟ ਡੇਟਾ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਬਹੁਤ ਸਾਰੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਲੋੜਾਂ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਪੂਰਾ ਕਰਨ ਦੇ ਯੋਗ ਹੋਇਆ ਹੈ। ਫਿਲਟਰਿੰਗ ਕਰਨ ਲਈ ਸਾਨੂੰ ਸਾਡੇ ਸੌਫਟਵੇਅਰ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ। ਇਹ ਕੋਰਸ Arduino ਦੁਆਰਾ ਆਉਟਪੁੱਟ ਡੇਟਾ ਦੇ ਰੂਪ ਵਿੱਚ DMP ਨੂੰ ਪੜ੍ਹਨ ਦੇ ਅਧਾਰ ਤੇ ਇੱਕ ਸੰਪੂਰਨ ਖੇਡ ਦਸਤਾਨੇ ਬਣਾਏਗਾ।
ਚਿੱਤਰ 10: mpu6050 ਮੋਡੀਊਲ ਭੌਤਿਕ ਨਕਸ਼ਾ
ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ 6 ਧੁਰੀ ਜਾਂ 9 ਧੁਰੀ ਰੋਟੇਸ਼ਨ ਮੈਟਰਿਕਸ, ਕੁਆਟਰਨੀਅਨ ਅਤੇ ਯੂਲਰ ਦੇ ਡਿਜੀਟਲ ਆਉਟਪੁੱਟ ਦਾ ਏਕੀਕ੍ਰਿਤ ਕੈਲਕੂਲਸ ਡੇਟਾ
ਕੋਣ ਫਾਰਮੈਟ. 3 LSBs/°/sec ਸੰਵੇਦਨਸ਼ੀਲਤਾ ਅਤੇ ਪੂਰੀ-ਰੇਂਜ ਸੈਂਸਿੰਗ ਰੇਂਜ ਦੇ ਨਾਲ 131-ਧੁਰੀ ਕੋਣੀ ਵੇਗ ਸੈਂਸਰ (ਜਾਇਰੋਸਕੋਪ)
±250, ±500, ±1000, ਅਤੇ ±2000°/ਸੈਕੰਡ। ਪ੍ਰੋਗਰਾਮੇਬਲ ਨਿਯੰਤਰਣ, ±3g, ±2g, ±4g, ਅਤੇ ±8g ਦੀ ਪ੍ਰੋਗਰਾਮ ਨਿਯੰਤਰਣ ਰੇਂਜ ਵਾਲਾ 16-ਧੁਰਾ ਐਕਸਲੇਟਰ। ਡਿਜੀਟਲ ਮੋਸ਼ਨ ਪ੍ਰੋਸੈਸਿੰਗ (DMP) ਇੰਜਣ ਗੁੰਝਲਦਾਰ ਫਿਊਜ਼ਨ ਕੈਲਕੂਲੇਸ਼ਨ ਡੇਟਾ ਦੇ ਲੋਡ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ,
ਸੈਂਸਰ ਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ, ਅਤੇ ਸੰਕੇਤ ਸੰਵੇਦਨਾ।
15

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਮੋਸ਼ਨ ਪ੍ਰੋਸੈਸਿੰਗ ਡੇਟਾਬੇਸ ਐਂਡਰਾਇਡ, ਲੀਨਕਸ ਅਤੇ ਵਿੰਡੋਜ਼ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਓਪਰੇਟਿੰਗ ਸਮੇਂ ਦੇ ਵਿਭਿੰਨਤਾਵਾਂ ਅਤੇ ਚੁੰਬਕੀ ਸੰਵੇਦਕ ਲਈ ਬਿਲਟ-ਇਨ ਕੈਲੀਬ੍ਰੇਸ਼ਨ ਤਕਨੀਕ ਵਰਤੋਂ ਨੂੰ ਖਤਮ ਕਰ ਦਿੰਦੀ ਹੈ'
ਕੈਲੀਬ੍ਰੇਸ਼ਨ ਲਈ ਵਾਧੂ ਲੋੜ. ਡਿਜੀਟਲ ਆਉਟਪੁੱਟ ਤਾਪਮਾਨ ਸੂਚਕ. ਸਪਲਾਈ ਵੋਲtagVDD ਦਾ e 2.5V±5%3.0V±5%3.3V±5% ਹੈ, ਅਤੇ VDDIO 1.8V±5% ਹੈ। Gyro ਓਪਰੇਟਿੰਗ ਕਰੰਟ: 5mA, gyroscope ਸਟੈਂਡਬਾਏ ਕਰੰਟ: 8A; ਐਕਸਲੇਟਰ ਓਪਰੇਟਿੰਗ ਕਰੰਟ: 8A,
ਐਕਸਲੇਟਰ ਪਾਵਰ ਸੇਵਿੰਗ ਮੋਡ ਮੌਜੂਦਾ: 8A@10Hz। 400kHz ਤੱਕ ਤੇਜ਼ ਮੋਡ I2C, ਜਾਂ 20MHz SPI ਸੀਰੀਅਲ ਹੋਸਟ ਇੰਟਰਫੇਸ ਤੱਕ। ਪੋਰਟੇਬਲ ਉਤਪਾਦ (4x4x0.9mm QFN) ਲਈ ਸਭ ਤੋਂ ਛੋਟਾ ਅਤੇ ਸਭ ਤੋਂ ਪਤਲਾ ਪੈਕੇਜ।
5.2 ਮੋਡੀਊਲ ਯੋਜਨਾਬੱਧ

ਚਿੱਤਰ 11: mpu6050 ਮੋਡੀਊਲ ਦੀ ਯੋਜਨਾਬੱਧ
5.3 ਨੈਨੋ ਅਤੇ mpu6050 ਵਿਚਕਾਰ ਸੰਚਾਰ

5.3.1 ਸਰਕਟ ਕਨੈਕਸ਼ਨ
ਏਕੀਕ੍ਰਿਤ MPU6050 ਮੋਡੀਊਲ ਦਾ ਡਾਟਾ ਇੰਟਰਫੇਸ I2C ਬੱਸ ਪ੍ਰੋਟੋਕੋਲ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਇਸਲਈ ਸਾਨੂੰ NANO ਅਤੇ MPU6050 ਵਿਚਕਾਰ ਸੰਚਾਰ ਕਰਨ ਲਈ ਵਾਇਰ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਮਦਦ ਦੀ ਲੋੜ ਹੈ। ਨੈਨੋ ਬੋਰਡ ਦਾ ਅਨੁਸਾਰੀ ਕੁਨੈਕਸ਼ਨ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:

MPU6050 ਮੋਡੀਊਲ VCC

Arduino NANO 5V

16

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

GND SCL SDA XDA XCL ADD INT

GND A5 A4 NC NC NC NC NC/GND

ਚਿੱਤਰ 12: ਨੈਨੋ ਅਤੇ mpu6050 ਦਾ ਕਨੈਕਸ਼ਨ ਚਿੱਤਰ
MPU6050 ਲਿਖਣ ਅਤੇ ਪੜ੍ਹਨ ਦਾ ਡੇਟਾ ਚਿੱਪ ਦੇ ਅੰਦਰੂਨੀ ਰਜਿਸਟਰਾਂ ਦੁਆਰਾ ਮਹਿਸੂਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਰਜਿਸਟਰ ਦੇ ਪਤੇ ਸਾਰੇ 1 ਬਾਈਟ ਹੁੰਦੇ ਹਨ, ਅਰਥਾਤ, ਐਡਰੈੱਸ ਸਪੇਸ ਦੇ 8 ਬਿੱਟ। ਕਿਰਪਾ ਕਰਕੇ “RMMPU-6000A.pdf” 1.1 ਵੇਖੋ। ਹਰ ਵਾਰ ਡਿਵਾਈਸ 'ਤੇ ਡੇਟਾ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ, ਪਹਿਲਾਂ ਵਾਇਰ ਟ੍ਰਾਂਸਫਰ ਮੋਡ ਨੂੰ ਚਾਲੂ ਕਰੋ ਅਤੇ ਡਿਵਾਈਸ ਦਾ ਬੱਸ ਪਤਾ ਦੱਸੋ। MPU6050 ਦਾ ਬੱਸ ਪਤਾ 0x68 ਹੈ (AD0 ਪਿੰਨ ਉੱਚ ਹੋਣ 'ਤੇ ਪਤਾ 69x0 ਹੈ)। ਫਿਰ ਰਜਿਸਟਰ ਦੇ ਸ਼ੁਰੂਆਤੀ ਪਤੇ ਦਾ ਇੱਕ ਬਾਈਟ ਲਿਖੋ, ਅਤੇ ਫਿਰ ਕਿਸੇ ਵੀ ਲੰਬਾਈ ਦਾ ਡੇਟਾ ਲਿਖੋ। ਇਹ ਡੇਟਾ ਨਿਰਧਾਰਿਤ ਸ਼ੁਰੂਆਤੀ ਪਤੇ 'ਤੇ ਨਿਰੰਤਰ ਲਿਖਿਆ ਜਾਵੇਗਾ, ਅਤੇ ਮੌਜੂਦਾ ਰਜਿਸਟਰ ਦੀ ਲੰਬਾਈ ਹੇਠਾਂ ਦਿੱਤੇ ਪਤੇ ਦੇ ਰਜਿਸਟਰ 'ਤੇ ਲਿਖੀ ਜਾਵੇਗੀ। ਲਿਖਣਾ ਪੂਰਾ ਹੋਣ ਤੋਂ ਬਾਅਦ ਵਾਇਰ ਟ੍ਰਾਂਸਫਰ ਮੋਡ ਨੂੰ ਬੰਦ ਕਰੋ। ਹੇਠ ਲਿਖੇ ਐਸample ਕੋਡ MPU0 ਦੇ 0x6B ਰਜਿਸਟਰ ਵਿੱਚ ਇੱਕ ਬਾਈਟ 6050 ਲਿਖਦਾ ਹੈ।
Wire.beginTransmission(0x68); // MPU6050 ਦਾ ਪ੍ਰਸਾਰਣ ਸਟ੍ਰੈਟ
17

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
Wire.write(0x6B); // ਰਜਿਸਟਰ ਐਡਰੈੱਸ ਦਿਓ Wire.write(0); // ਡੇਟਾ ਦਾ ਇੱਕ ਬਾਈਟ ਲਿਖੋ Wire.endTransmission(true); // ਟਰਾਂਸਫਰ ਖਤਮ ਕਰੋ, ਸੱਚਾ ਮਤਲਬ ਬੱਸ ਰਿਲੀਜ਼ ਕਰੋ
MPU-6050 ਤੋਂ ਡਾਟਾ ਪੜ੍ਹਨਾ
ਪੜ੍ਹਨਾ ਅਤੇ ਲਿਖਣਾ ਇੱਕ ਸਮਾਨ ਹੈ, ਪਹਿਲਾਂ ਵਾਇਰ ਟ੍ਰਾਂਸਫਰ ਮੋਡ ਨੂੰ ਖੋਲ੍ਹਣਾ, ਅਤੇ ਫਿਰ ਰਜਿਸਟਰ ਦੇ ਸ਼ੁਰੂਆਤੀ ਪਤੇ ਦਾ ਇੱਕ ਬਾਈਟ ਲਿਖਣਾ। ਅੱਗੇ, ਵਾਇਰ ਲਾਇਬ੍ਰੇਰੀ ਦੇ ਕੈਸ਼ ਵਿੱਚ ਦਿੱਤੇ ਪਤੇ ਦੇ ਡੇਟਾ ਨੂੰ ਪੜ੍ਹੋ ਅਤੇ ਟ੍ਰਾਂਸਪੋਰਟ ਮੋਡ ਨੂੰ ਬੰਦ ਕਰੋ। ਅੰਤ ਵਿੱਚ, ਕੈਸ਼ ਤੋਂ ਡੇਟਾ ਨੂੰ ਪੜ੍ਹਨਾ. ਹੇਠ ਦਿੱਤੇ ਸਾਬਕਾample ਕੋਡ MPU0 ਦੇ 3x6050B ਰਜਿਸਟਰ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ ਅਤੇ ਡੇਟਾ ਦੇ 2 ਬਾਈਟ ਪੜ੍ਹਦਾ ਹੈ:
Wire.beginTransmission(0x68); // MPU6050 Wire.write(0x3B) ਦਾ ਟਰਾਂਸਮਿਸ਼ਨ; // ਰਜਿਸਟਰ ਐਡਰੈੱਸ ਦਿਓ Wire.requestFrom(0x68, 2, true); // ਕੈਸ਼ ਵਿੱਚ ਡੇਟਾ ਪੜ੍ਹੋ Wire.endTransmission(true); // ਟਰਾਂਸਮਿਸ਼ਨ ਮੋਡ ਬੰਦ ਕਰੋ int val = Wire.read() << 8 | Wire.read(); // ਦੋ ਬਾਈਟ ਇੱਕ 16-ਬਿੱਟ ਪੂਰਨ ਅੰਕ ਬਣਾਉਂਦੇ ਹਨ
ਖਾਸ ਲਾਗੂ ਕਰਨਾ
ਵਾਇਰ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਸੈੱਟਅੱਪ ਫੰਕਸ਼ਨ ਵਿੱਚ ਸ਼ੁਰੂ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ: Wire.begin();
ਤੁਹਾਨੂੰ MPU6050 'ਤੇ ਕੋਈ ਵੀ ਓਪਰੇਸ਼ਨ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਡਿਵਾਈਸ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਇਸਦੇ 0x6B 'ਤੇ ਬਾਈਟ ਲਿਖਣਾ ਕਾਫ਼ੀ ਹੋਵੇਗਾ। ਇਹ ਆਮ ਤੌਰ 'ਤੇ ਸੈੱਟਅੱਪ ਫੰਕਸ਼ਨ ਵਿੱਚ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਸੈਕਸ਼ਨ 1.1 ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ।
MPU6050 ਡਾਟਾ ਫਾਰਮੈਟ
ਜਿਸ ਡੇਟਾ ਵਿੱਚ ਅਸੀਂ ਦਿਲਚਸਪੀ ਰੱਖਦੇ ਹਾਂ ਉਹ 14x0B ਤੋਂ 3x0 ਦੇ 48 ਬਾਈਟ ਰਜਿਸਟਰ ਵਿੱਚ ਹੈ। ਇਹ ਡੇਟਾ 1000HZ ਤੱਕ ਦੀ ਅੱਪਡੇਟ ਬਾਰੰਬਾਰਤਾ ਦੇ ਨਾਲ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਵੇਗਾ। ਅੰਡਰਲਾਈੰਗ ਰਜਿਸਟਰ ਦਾ ਪਤਾ ਅਤੇ ਡੇਟਾ ਦਾ ਨਾਮ ਹੇਠਾਂ ਸੂਚੀਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ। ਧਿਆਨ ਦਿਓ ਕਿ ਹਰੇਕ ਡੇਟਾ 2 ਬਾਈਟ ਹੈ।
0x3B, ਐਕਸੀਲੇਰੋਮੀਟਰ ਦਾ X ਧੁਰਾ ਕੰਪੋਨੈਂਟ ACC_X 0x3D ਹੈ, ਐਕਸੀਲੇਰੋਮੀਟਰ ਦਾ Y ਧੁਰਾ ਕੰਪੋਨੈਂਟ ACC_Y 0x3F ਹੈ, ਐਕਸੀਲੇਰੋਮੀਟਰ ਦਾ Z ਧੁਰਾ ਕੰਪੋਨੈਂਟ ACC_Z 0x41 ਹੈ, ਮੌਜੂਦਾ ਤਾਪਮਾਨ TEMP 0x43 ਹੈ, XR0x45 ਦੇ ਆਲੇ-ਦੁਆਲੇ angYXNUMX ocvelity ਹੈ। , Y ਧੁਰੀ GYR_Y ਦੁਆਲੇ ਕੋਣੀ ਵੇਗ
18

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
0x47, Z ਧੁਰੇ ਦੇ ਦੁਆਲੇ ਕੋਣੀ ਵੇਗ GYR_Z MPU6050 ਚਿੱਪ ਦੀ ਕੋਆਰਡੀਨੇਟ ਪਰਿਭਾਸ਼ਾ ਹੈ: ਚਿੱਪ ਨੂੰ ਆਪਣੇ ਵੱਲ ਮੂੰਹ ਕਰੋ ਅਤੇ ਸਤਹ ਟੈਕਸਟ ਨੂੰ ਸਹੀ ਕੋਣ ਵੱਲ ਮੋੜੋ। ਇਸ ਸਮੇਂ, ਚਿੱਪ ਦੇ ਕੇਂਦਰ ਨੂੰ ਮੂਲ ਵਜੋਂ ਲਿਆ ਜਾਂਦਾ ਹੈ, ਸੱਜੇ ਪਾਸੇ ਦਾ ਖਿਤਿਜੀ X ਧੁਰਾ ਹੈ, ਅਤੇ ਲੰਬਕਾਰੀ Y ਧੁਰਾ ਹੈ, ਆਪਣੇ ਖੁਦ ਦੇ Z ਧੁਰੇ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਨਾ, ਜਿਵੇਂ ਕਿ ਹੇਠਾਂ ਦਿਖਾਇਆ ਗਿਆ ਹੈ:
ਚਿੱਤਰ 13: mpu6050 ਰੋਟੇਸ਼ਨ ਅਤੇ ਐਂਗੁਲਰ ਵੇਲੋਸਿਟੀ ਡਾਇਗ੍ਰਾਮ ਅਸੀਂ ਸਿਰਫ ਐਕਸੀਲੇਰੋਮੀਟਰ ਅਤੇ ਐਂਗੁਲਰ ਵੇਲੋਸਿਟੀ ਮੀਟਰ ਡੇਟਾ ਦੇ ਅਰਥਾਂ ਦੀ ਪਰਵਾਹ ਕਰਦੇ ਹਾਂ। ਹੁਣ ਅਸੀਂ ਦੋ ਪ੍ਰਯੋਗਾਂ ਦੁਆਰਾ mpu6050 ਦੀ ਵਰਤੋਂ ਤੋਂ ਜਾਣੂ ਹਾਂ। 5.3.2 ਪ੍ਰਯੋਗ 1 ਰੀਡਿੰਗ ਐਕਸਲੇਰੋਮੀਟਰ
ਐਕਸੀਲੇਰੋਮੀਟਰ ਦੇ ਤਿੰਨ ਧੁਰੇ ਵਾਲੇ ਹਿੱਸੇ, ACC_X, ACC_Y ਅਤੇ ACC_Z ਸਾਰੇ 16-ਬਿੱਟ ਸਾਈਨ ਕੀਤੇ ਪੂਰਨ ਅੰਕ ਹਨ, ਜੋ ਤਿੰਨ ਧੁਰੀ ਦਿਸ਼ਾਵਾਂ ਵਿੱਚ ਡਿਵਾਈਸ ਦੇ ਪ੍ਰਵੇਗ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। ਜਦੋਂ ਨਕਾਰਾਤਮਕ ਮੁੱਲ ਲਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਲਮੇਲ ਧੁਰੇ ਦੇ ਨਾਲ ਪ੍ਰਵੇਗ ਨੈਗੇਟਿਵ ਹੁੰਦਾ ਹੈ ਅਤੇ ਸਕਾਰਾਤਮਕ ਮੁੱਲ ਸਕਾਰਾਤਮਕ ਹੁੰਦਾ ਹੈ।
ਤਿੰਨ ਪ੍ਰਵੇਗ ਦੇ ਹਿੱਸੇ ਸਾਰੇ ਗ੍ਰੈਵੀਟੇਸ਼ਨਲ ਪ੍ਰਵੇਗ g ਦੇ ਗੁਣਜਾਂ ਵਿੱਚ ਹਨ, ਅਤੇ ਪ੍ਰਵੇਗ ਦੀ ਰੇਂਜ ਜਿਸ ਨੂੰ ਵਿਅਕਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਅਰਥਾਤ, ਵਿਸਤਾਰ ਨੂੰ ਇਕਸਾਰ ਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਅਤੇ ਚਾਰ ਵਿਕਲਪਿਕ ਵਿਸਤਾਰ ਹਨ: 2g, 4g, 8g, ਅਤੇ 16g। ACC_X ਨੂੰ ਸਾਬਕਾ ਵਜੋਂ ਲੈਣਾample, ਜੇਕਰ ਵੱਡਦਰਸ਼ੀ 2g (ਡਿਫੌਲਟ) 'ਤੇ ਸੈੱਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਜਦੋਂ ACC_X ਨਿਊਨਤਮ ਮੁੱਲ -32768 ਲੈਂਦਾ ਹੈ, ਤਾਂ ਮੌਜੂਦਾ ਪ੍ਰਵੇਗ X ਧੁਰੀ ਦੀ ਸਕਾਰਾਤਮਕ ਦਿਸ਼ਾ ਦੇ ਨਾਲ ਗਰੈਵੀਟੇਸ਼ਨਲ ਪ੍ਰਵੇਗ ਦਾ 2 ਗੁਣਾ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਹੀ। ਸਪੱਸ਼ਟ ਹੈ ਕਿ,
19

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

ਵਿਸਤਾਰ ਜਿੰਨਾ ਘੱਟ ਹੋਵੇਗਾ, ਸਟੀਕਤਾ ਓਨੀ ਹੀ ਬਿਹਤਰ ਹੋਵੇਗੀ, ਅਤੇ ਵਿਸਤਾਰ ਜਿੰਨਾ ਜ਼ਿਆਦਾ ਹੋਵੇਗਾ, ਰੇਂਜ ਓਨੀ ਹੀ ਵੱਡੀ ਹੋਵੇਗੀ, ਜੋ ਕਿ ਖਾਸ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਅਨੁਸਾਰ ਸੈੱਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।

AFS_SEL 0 1 2 3

ਪੂਰੀ ਸਕੇਲ ਰੇਂਜ ±2g ±4g ±8g ±16g

LSB ਸੰਵੇਦਨਸ਼ੀਲਤਾ 16384LSB/g 8192LSB/g 4096LSB/g 2048LSB/g

ਤਿੰਨ-ਧੁਰੀ ਐਕਸੀਲਰੋਮੀਟਰ ਅਤੇ ਮੋਡੀਊਲ ਦੀ ਰੋਟੇਸ਼ਨ ਦਿਸ਼ਾ ਵਿਚਕਾਰ ਸਬੰਧ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:

ਚਿੱਤਰ 14: Mpu6050 ਮੋਡੀਊਲ ਰੋਟੇਸ਼ਨ ਅਤੇ ਪ੍ਰਵੇਗ ਪੈਟਰਨ MPU6050 ਦੁਆਰਾ ਪੜ੍ਹਿਆ ਗਿਆ ਡੇਟਾ ਉਤਰਾਅ-ਚੜ੍ਹਾਅ ਕਰ ਰਿਹਾ ਹੈ, ਇਸਲਈ ਇਸਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਭਾਵ, ਜਦੋਂ ਚਿੱਪ ਇੱਕ ਸਥਿਰ ਅਵਸਥਾ ਵਿੱਚ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਇਹ ਰੀਡਿੰਗ ਸਿਧਾਂਤਕ ਤੌਰ 'ਤੇ ਜ਼ੀਰੋ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਪਰ ਇਸਦਾ ਇੱਕ ਆਫਸੈੱਟ ਹੁੰਦਾ ਹੈ. ਸਾਬਕਾ ਲਈample, ਅਸੀਂ 200ms ਅੰਤਰਾਲਾਂ 'ਤੇ 10 ਮੁੱਲ ਪੜ੍ਹਦੇ ਹਾਂ ਅਤੇ ਫਿਰ ਉਹਨਾਂ ਦੀ ਔਸਤ ਕਰਦੇ ਹਾਂ। ਇਸ ਮੁੱਲ ਨੂੰ ਜ਼ੀਰੋ ਆਫਸੈੱਟ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਕੈਲੀਬਰੇਟਿਡ ਰੀਡਿੰਗ ਹਰ ਰੀਡਿੰਗ ਤੋਂ ਜ਼ੀਰੋ ਆਫਸੈੱਟ ਨੂੰ ਘਟਾ ਕੇ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਕਿਉਂਕਿ ACC_X ਅਤੇ ACC_Y ਦਾ ਸਿਧਾਂਤਕ ਮੁੱਲ ਜ਼ੀਰੋ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਦੋ ਰੀਡਿੰਗ ਆਫਸੈੱਟਾਂ ਨੂੰ ਅੰਕੜਾ ਮਾਧਿਅਮ ਦੁਆਰਾ ਕੈਲੀਬਰੇਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ACC_Z ਨੂੰ ਇੱਕ ਕਦਮ ਵਿੱਚ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਅੰਕੜਾ ਔਫਸੈੱਟ ਦੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ, ਹਰੇਕ ਰੀਡਿੰਗ ਲਈ Z ਧੁਰੀ ਦੀ ਗਰੈਵੀਟੇਸ਼ਨ ਐਕਸਲਰੇਸ਼ਨ g ਨੂੰ ਘਟਾਇਆ ਜਾਂਦਾ ਹੈ। ਜੇਕਰ ਪ੍ਰਵੇਗ ਵਿਸਤਾਰ 2g ਹੈ, ਤਾਂ 16384 ਨੂੰ ਘਟਾਇਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਅੰਕੜਾ ਮਾਧਿਅਮ ਕੈਲੀਬ੍ਰੇਸ਼ਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਆਮ ਕੈਲੀਬ੍ਰੇਸ਼ਨ ਹਰ ਵਾਰ ਸਿਸਟਮ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਫਿਰ ਤੁਹਾਨੂੰ ਸ਼ੁੱਧਤਾ ਅਤੇ ਸ਼ੁਰੂਆਤੀ ਸਮੇਂ ਵਿਚਕਾਰ ਵਪਾਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।
20

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
5.3.2.1 ਪ੍ਰਯੋਗਾਤਮਕ ਉਦੇਸ਼
ਐਕਸਲੇਰੋਮੀਟਰ ਦੇ ਤਿੰਨ ਧੁਰਿਆਂ ਦੇ ਵਿਚਕਾਰ ਆਉਟਪੁੱਟ ਡੇਟਾ ਸਬੰਧ ਨੂੰ ਵੇਖਣ ਲਈ mpu6050 ਨੂੰ ਘੁੰਮਾ ਕੇ।
5.3.2.2 ਪ੍ਰਯੋਗ ਕੋਡ ਕੋਡ LocationMotionTrackLessonmpu6050_accel mpu6050_accel.ino
21

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

#include “Wire.h” // I2Cdev ਅਤੇ MPU6050 ਨੂੰ ਲਾਇਬ੍ਰੇਰੀਆਂ ਵਜੋਂ ਸਥਾਪਿਤ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ, ਨਹੀਂ ਤਾਂ .cpp/.h files // ਦੋਵਾਂ ਕਲਾਸਾਂ ਲਈ ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਦੇ ਸ਼ਾਮਲ ਮਾਰਗ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ #include “I2Cdev.h” #include “MPU6050.h” #define LED_PIN 13 MPU6050 accelgyro; struct RAW_type {
uint8_t x; uint8_t y; uint8_t z; }; int16_t ax, ay, az; int16_t gx, gy, gz; struct RAW_type accel_zero_offsent; char str[512]; bool blinkState = ਗਲਤ ; float AcceRatio = 16384.0; ਫਲੋਟ accx, accy, accz;

ਬੇਕਾਰ ਸੈੱਟਅੱਪ() {

int i;

int32_t ax_zero = 0,ay_zero = 0,az_zero = 0 ;

// I2C ਬੱਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ (I2Cdev ਲਾਇਬ੍ਰੇਰੀ ਇਹ ਆਪਣੇ ਆਪ ਨਹੀਂ ਕਰਦੀ ਹੈ)

Wire.begin();

ਸੀਰੀਅਲ. ਸ਼ੁਰੂ (115200);

// ਜੰਤਰ ਸ਼ੁਰੂ ਕਰੋ

Serial.println("I2C ਡਿਵਾਈਸਾਂ ਦੀ ਸ਼ੁਰੂਆਤ...");

accelgyro.initialize();

ਦੇਰੀ(500);

accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_2);

Serial.println("ਡਿਵਾਈਸ ਕਨੈਕਸ਼ਨਾਂ ਦੀ ਜਾਂਚ...");

Serial.println(accelgyro.testConnection() ? “MPU6050 ਕੁਨੈਕਸ਼ਨ

2 2

ਸਫਲ" : "MPU6050 ਕੁਨੈਕਸ਼ਨ ਅਸਫਲ");

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਲਈ( i = 0 ; i < 200 ; i++) {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); ax_zero += ax ; ay_zero += ay ; az_zero += az ; } accel_zero_offsent.x = ax_zero/200 ; accel_zero_offsent.y = ay_zero/200 ; accel_zero_offsent.z = az_zero/200 ; Serial.print(accel_zero_offsent.x); Serial.print("t"); Serial.print(accel_zero_offsent.y); Serial.print("t"); Serial.print(accel_zero_offsent.z); Serial.print(“n”); ਪਿਨਮੋਡ(LED_PIN, OUTPUT); }
void loop() { // ਡਿਵਾਈਸ ਦੇਰੀ (1000) ਤੋਂ ਕੱਚਾ ਐਕਸਲ/ਗਾਇਰੋ ਮਾਪ ਪੜ੍ਹੋ; accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); sprintf(str,"%d,%d,%dn",ax-accel_zero_offsent.x, ayaccel_zero_offsent.y ,az-accel_zero_offsent.z); Serial.print(str); accx = (ਫਲੋਟ)( ax-accel_zero_offsent.x )/AcceRatio; accy = (ਫਲੋਟ)( ay-accel_zero_offsent.y )/AcceRatio ; accz = (ਫਲੋਟ)( az-accel_zero_offsent.z )/AcceRatio ; Serial.print(accx);Serial.print(“gt”); Serial.print(accy);Serial.print(“gt”); Serial.print(accz);Serial.print(“gn”);
blinkState = !blinkState; digitalWrite(LED_PIN, blinkState); }
23

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
1. X ਧੁਰੇ ਦੇ ਦੁਆਲੇ 90 ਡਿਗਰੀ ਘੁੰਮਾਓ ਜਦੋਂ X ਧੁਰੀ ਨੂੰ 90 ਡਿਗਰੀ ਘੁੰਮਾਇਆ ਜਾਂਦਾ ਹੈ, Y ਧੁਰਾ ਹੌਲੀ-ਹੌਲੀ ਉੱਪਰ ਵੱਲ ਹੁੰਦਾ ਹੈ ਅਤੇ Z ਧੁਰਾ ਹੁੰਦਾ ਹੈ।
ਹੌਲੀ-ਹੌਲੀ ਹੇਠਾਂ ਵੱਲ। ਜਦੋਂ ਧੁਰਾ ਬਿਲਕੁਲ 90 ਡਿਗਰੀ ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ, ਕਿਉਂਕਿ Y ਧੁਰਾ ਗੰਭੀਰਤਾ ਦੇ ਉਲਟ ਦਿਸ਼ਾ ਵਿੱਚ ਹੁੰਦਾ ਹੈ, Y ਧੁਰੀ ਦਾ ਆਉਟਪੁੱਟ 1g (1g==9.8m/s^2) ਹੁੰਦਾ ਹੈ, ਜਦੋਂ ਕਿ Z ਧੁਰੀ ਦਾ ਮੁੱਲ ਘੱਟ ਜਾਂਦਾ ਹੈ 1 ਤੋਂ 0. 2. ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ 'ਤੇ ਵਾਪਸ ਜਾਓ ਅਤੇ 90 ਡਿਗਰੀ ਨੂੰ ਉਲਟਾਓ
ਜਦੋਂ ਤੁਸੀਂ ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ 'ਤੇ ਵਾਪਸ ਆਉਂਦੇ ਹੋ, ਤਾਂ Y ਧੁਰੀ ਦਾ ਮੁੱਲ ਹੌਲੀ-ਹੌਲੀ ਘਟਾ ਕੇ 0 ਹੋ ਜਾਂਦਾ ਹੈ, ਜਦੋਂ ਕਿ Z ਧੁਰਾ ਹੌਲੀ-ਹੌਲੀ 1 ਤੱਕ ਵਧ ਰਿਹਾ ਹੈ। ਫਿਰ ਉਲਟ ਦਿਸ਼ਾ ਵਿੱਚ 90 ਡਿਗਰੀ ਨੂੰ ਮੋੜੋ, ਅਤੇ Y ਧੁਰਾ -1 ਤੱਕ ਹੌਲੀ-ਹੌਲੀ ਘਟਦਾ ਹੈ, ਕਿਉਂਕਿ Y ਧੁਰਾ ਗੰਭੀਰਤਾ ਦੀ ਦਿਸ਼ਾ ਦੇ ਅਨੁਸਾਰ ਹੈ, ਅਤੇ ਪ੍ਰਵੇਗ ਮੁੱਲ ਨਕਾਰਾਤਮਕ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। Z ਧੁਰਾ ਹੌਲੀ-ਹੌਲੀ 0 ਤੱਕ ਘਟਦਾ ਹੈ. 3. ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ 'ਤੇ ਵਾਪਸ ਜਾਓ
ਇਸ ਤਰ੍ਹਾਂ ਸਮਝਾਓ: ਫਿਰ ਉਲਟਾ 90 ਡਿਗਰੀ ਤੋਂ ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ 'ਤੇ ਵਾਪਸ ਜਾਓ। ਇਸ ਸਮੇਂ, Y-ਧੁਰੇ ਅਤੇ Z-ਧੁਰੇ ਦਾ ਡੇਟਾ ਹੌਲੀ-ਹੌਲੀ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ 'ਤੇ ਬਹਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, Y-ਧੁਰਾ 0 ਹੈ, ਅਤੇ Z-ਧੁਰਾ 1 ਹੈ।
X-ਧੁਰੀ ਦੀ ਰੋਟੇਸ਼ਨ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਤੋਂ ਬਾਅਦ, Y-ਧੁਰੀ ਦੀ ਰੋਟੇਸ਼ਨ ਸਮਾਨ ਹੈ, ਇਸਲਈ ਅਸੀਂ ਇਸ ਬਾਰੇ ਵੇਰਵੇ ਵਿੱਚ ਗੱਲ ਨਹੀਂ ਕਰਾਂਗੇ। ਹੁਣ ਜ਼ੈੱਡ ਧੁਰੀ ਬਾਰੇ ਗੱਲ ਕਰੀਏ, ਕਿਉਂਕਿ ਜਦੋਂ Z ਧੁਰੀ ਦੇ ਦੁਆਲੇ ਘੁੰਮਦੇ ਹਾਂ, ਤਾਂ ਇਹ ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਪਾਸੇ 90 ਡਿਗਰੀ ਸਵਿੰਗ ਕਰਨ ਦੇ ਬਰਾਬਰ ਹੁੰਦਾ ਹੈ। ਇਸ ਸਮੇਂ, Z ਧੁਰੀ ਦਾ ਆਉਟਪੁੱਟ ਹਮੇਸ਼ਾ 1 ਹੁੰਦਾ ਹੈ, ਅਤੇ X ਧੁਰੀ ਅਤੇ Y ਧੁਰੀ ਗਰੈਵਿਟੀ ਧੁਰੇ ਲਈ ਆਰਥੋਗੋਨਲ ਹੁੰਦੇ ਹਨ, ਇਸਲਈ ਆਉਟਪੁੱਟ ਮੁੱਲ ਸਾਰੇ 0 ਹੁੰਦੇ ਹਨ, ਬੇਸ਼ਕ, ਇਹ ਮੁਕਾਬਲਤਨ ਸਥਿਰ ਸਥਿਤੀਆਂ ਵਿੱਚ ਮੁੱਲ ਹੈ। . ਜੇਕਰ ਡਿਵਾਈਸ ਕਿਸੇ ਵਾਹਨ 'ਤੇ ਸਥਾਪਿਤ ਕੀਤੀ ਗਈ ਹੈ, ਤਾਂ X ਅਤੇ Y ਧੁਰੇ ਜ਼ਰੂਰੀ ਤੌਰ 'ਤੇ 0 ਨਹੀਂ ਹੋ ਸਕਦੇ ਜਦੋਂ ਕਾਰ ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਮੋੜ ਰਹੀ ਹੋਵੇ।
24

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਪ੍ਰਯੋਗਾਤਮਕ ਨਤੀਜਾ

5.3.3 ਪ੍ਰਯੋਗ 2 ਗਾਇਰੋ ਤੋਂ ਡਾਟਾ ਪੜ੍ਹਨਾ

ਕੋਣੀ ਵੇਗ ਵਾਲੇ ਹਿੱਸੇ GYR_X, GYR_Y ਅਤੇ GYR_Z, ਜੋ ਕਿ X, Y ਅਤੇ Z ਦੇ ਤਿੰਨ ਕੋਆਰਡੀਨੇਟ ਧੁਰੇ ਦੁਆਲੇ ਘੁੰਮਦੇ ਹਨ, ਸਾਰੇ 1-ਬਿੱਟ ਸਾਈਨ ਕੀਤੇ ਪੂਰਨ ਅੰਕ ਹਨ। ਮੂਲ ਤੋਂ ਰੋਟੇਸ਼ਨ ਦੇ ਧੁਰੇ ਤੱਕ, ਮੁੱਲ ਘੜੀ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ ਰੋਟੇਸ਼ਨ ਲਈ ਸਕਾਰਾਤਮਕ ਅਤੇ ਉਲਟ ਘੜੀ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ ਰੋਟੇਸ਼ਨ ਲਈ ਨਕਾਰਾਤਮਕ ਹੁੰਦਾ ਹੈ। ਤਿੰਨ ਕੋਣੀ ਵੇਗ ਵਾਲੇ ਹਿੱਸੇ ਸਾਰੇ ਡਿਗਰੀ/ਸੈਕਿੰਡ ਵਿੱਚ ਹਨ। ਕੋਣੀ ਵੇਗ ਰੇਂਜ ਜਿਸ ਨੂੰ ਵਿਅਕਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਯਾਨੀ ਵਿਸਤਾਰ ਨੂੰ ਇਕਸਾਰ ਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇੱਥੇ 4 ਵਿਕਲਪਿਕ ਵਿਸਤਾਰ ਹਨ: 250 ਡਿਗਰੀ/ਸੈਕਿੰਡ, 500 ਡਿਗਰੀ/ਸੈਕਿੰਡ, 1000 ਡਿਗਰੀ/ਸੈਕਿੰਡ, 2000 ਡਿਗਰੀ/ਸੈਕਿੰਡ। GYR_X ਨੂੰ ਸਾਬਕਾ ਵਜੋਂ ਲੈਣਾample, ਜੇਕਰ ਵੱਡਦਰਸ਼ੀ 250 ਡਿਗਰੀ/ਸੈਕਿੰਡ 'ਤੇ ਸੈੱਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਜਦੋਂ GYR 32768 ਦਾ ਸਕਾਰਾਤਮਕ ਅਧਿਕਤਮ ਮੁੱਲ ਲੈਂਦਾ ਹੈ, ਮੌਜੂਦਾ ਕੋਣੀ ਵੇਗ ਘੜੀ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ 250 ਡਿਗਰੀ/ਸੈਕਿੰਡ ਹੈ; ਜੇਕਰ ਇਸਨੂੰ 500 ਡਿਗਰੀ/ਸੈਕਿੰਡ 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ 32768 ਦਾ ਮੌਜੂਦਾ ਮੁੱਲ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਮੌਜੂਦਾ ਕੋਣੀ ਵੇਗ 500 ਡਿਗਰੀ/ਸੈਕਿੰਡ ਘੜੀ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ ਹੈ। ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ, ਵੱਡਦਰਸ਼ੀ ਜਿੰਨੀ ਘੱਟ ਹੋਵੇਗੀ, ਸਟੀਕਤਾ ਓਨੀ ਹੀ ਬਿਹਤਰ ਹੋਵੇਗੀ, ਅਤੇ ਜਿੰਨਾ ਜ਼ਿਆਦਾ ਵਿਸਤਾਰ ਹੋਵੇਗਾ, ਰੇਂਜ ਓਨੀ ਹੀ ਵੱਡੀ ਹੋਵੇਗੀ।

AFS_SEL 0 1 2 3

ਪੂਰਾ ਸਕੇਲ ਰੇਂਜ ±250°/s ±500°/s ±1000°/s ±2000°/s

LSB ਸੰਵੇਦਨਸ਼ੀਲਤਾ
131LSB/°/s 65.5LSB/°/s 32.8LSB/°/s 16.4LSB/°/s

25

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਪ੍ਰੋਗਰਾਮ ਦੀ ਸਥਿਤੀ “MotionTrackLessonmpu6050_gryo mpu6050_gryo.ino” ਪ੍ਰਯੋਗ ਕੋਡ
# "Wire.h" ਸ਼ਾਮਲ ਕਰੋ
// I2Cdev ਅਤੇ MPU6050 ਨੂੰ ਲਾਇਬ੍ਰੇਰੀਆਂ ਵਜੋਂ ਸਥਾਪਿਤ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ, ਨਹੀਂ ਤਾਂ .cpp/.h. files // ਦੋਵਾਂ ਕਲਾਸਾਂ ਲਈ ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਦੇ ਸ਼ਾਮਲ ਮਾਰਗ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ # "I2Cdev.h" # ਸ਼ਾਮਲ ਕਰੋ "MPU6050.h" # ਪਰਿਭਾਸ਼ਿਤ LED_PIN 13
MPU6050 accelgyro;
struct RAW_type {
uint8_t x; uint8_t y; uint8_t z; };
int16_t ax, ay, az; int16_t gx, gy, gz; struct RAW_type accel_zero_offsent ,gyro_zero_offsent;
bool blinkState = ਗਲਤ; char str[512];
26

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਫਲੋਟ ਪਾਈ = 3.1415926; float AcceRatio = 16384.0; ਫਲੋਟ GyroRatio = 131.0; ਫਲੋਟ ਰੈਡ = 57.3 ; //180.0/pi; ਫਲੋਟ gyrox, gyroy, gyroz;
void setup() { int i ; int32_t ax_zero = 0,ay_zero = 0,az_zero = 0,gx_zero =0 ,gy_zero =
0,gz_ਜ਼ੀਰੋ = 0; // I2C ਬੱਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ (I2Cdev ਲਾਇਬ੍ਰੇਰੀ ਇਹ ਆਪਣੇ ਆਪ ਨਹੀਂ ਕਰਦੀ ਹੈ) Wire.begin();
ਸੀਰੀਅਲ. ਸ਼ੁਰੂ (115200);
// ਡਿਵਾਈਸ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ // Serial.println("I2C ਡਿਵਾਈਸਾਂ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ...");
accelgyro.initialize(); ਦੇਰੀ(500); accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_250);
Serial.println("ਡਿਵਾਈਸ ਕਨੈਕਸ਼ਨਾਂ ਦੀ ਜਾਂਚ..."); Serial.println(accelgyro.testConnection() ? “MPU6050 ਕੁਨੈਕਸ਼ਨ ਸਫਲ” : “MPU6050 ਕਨੈਕਸ਼ਨ ਅਸਫਲ”); ਲਈ( i = 0 ; i < 200 ; i++) {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); gx_zero += gx ; gy_ਜ਼ੀਰੋ += gy ; gz_zero += gz ; } gyro_zero_offsent.x = gx_zero/200 ; gyro_zero_offsent.y = gy_ਜ਼ੀਰੋ/200 ;
27

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
gyro_zero_offsent.z = gz_zero/200; ਪਿਨਮੋਡ(LED_PIN, OUTPUT); }
void loop() { // ਡਿਵਾਈਸ accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz) ਤੋਂ ਕੱਚਾ ਐਕਸਲ/ਗਾਇਰੋ ਮਾਪ ਪੜ੍ਹੋ;
//sprintf(str,"%d,%d,%dn", gx-gyro_zero_offsent.x ,gygyro_zero_offsent.y, gz-gyro_zero_offsent.z);
//Serial.print(str); gyrox = (float)(gx-gyro_zero_offsent.x)/AcceRatio; gyroy = (float)(gy-gyro_zero_offsent.y)/AcceRatio ; gyroz = (float)(gz-gyro_zero_offsent.z)/AcceRatio ; Serial.print(gyrox);Serial.print(“gt”); Serial.print(gyroy);Serial.print(“gt”); Serial.print(gyroz);Serial.print(“gn”);
ਦੇਰੀ(100); // ਬਲਿੰਕ LED ਸਰਗਰਮੀ ਨੂੰ ਦਰਸਾਉਣ ਲਈ blinkState = !blinkState; digitalWrite(LED_PIN, blinkState); }
ਜਦੋਂ ਅਸੀਂ x-ਧੁਰੇ ਦੀ ਸਕਾਰਾਤਮਕ ਦਿਸ਼ਾ ਵਿੱਚ ਘੁੰਮਦੇ ਹਾਂ, ਅਸੀਂ ਦੇਖਦੇ ਹਾਂ ਕਿ ਪ੍ਰਿੰਟ ਕੀਤਾ ਗਿਆਰੋਕਸ ਡੇਟਾ ਸਕਾਰਾਤਮਕ ਹੈ, ਨਹੀਂ ਤਾਂ ਇਹ ਨੈਗੇਟਿਵ ਹੈ।
28

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
5.4 ਮੋਸ਼ਨ ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ
ਐਕਸੀਲੇਰੋਮੀਟਰ ਅਤੇ ਐਂਗੁਲਰ ਸਪੀਡ ਮੀਟਰ ਦੇ ਰੀਡਿੰਗ ਡੇਟਾ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਭੌਤਿਕ ਮੁੱਲਾਂ ਵਿੱਚ ਬਦਲਣ ਤੋਂ ਬਾਅਦ, ਡੇਟਾ ਨੂੰ ਵੱਖ-ਵੱਖ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੇ ਅਨੁਸਾਰ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਵਿਆਖਿਆ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਧਿਆਇ ਵਿੱਚ, ਏਅਰਕ੍ਰਾਫਟ ਮੋਸ਼ਨ ਮਾਡਲ ਨੂੰ ਇੱਕ ਸਾਬਕਾ ਵਜੋਂ ਲਿਆ ਗਿਆ ਹੈampਪ੍ਰਵੇਗ ਅਤੇ ਕੋਣੀ ਵੇਗ ਦੇ ਆਧਾਰ 'ਤੇ ਮੌਜੂਦਾ ਉਡਾਣ ਦੇ ਰਵੱਈਏ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ le.
5.4.1 ਐਕਸਲੇਰੋਮੀਟਰ ਮਾਡਲ
ਅਸੀਂ ਐਕਸਲੇਰੋਮੀਟਰ ਨੂੰ ਇੱਕ ਸਕਾਰਾਤਮਕ ਘਣ ਬਾਕਸ ਵਿੱਚ ਇੱਕ ਗੇਂਦ ਦੇ ਰੂਪ ਵਿੱਚ ਸੋਚ ਸਕਦੇ ਹਾਂ ਜੋ ਕਿ ਇੱਕ ਸਪਰਿੰਗ ਦੁਆਰਾ ਘਣ ਦੇ ਕੇਂਦਰ ਵਿੱਚ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਬਾਕਸ ਹਿਲ ਰਿਹਾ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਮੌਜੂਦਾ ਪ੍ਰਵੇਗ ਦੇ ਮੁੱਲ ਨੂੰ ਕਾਲਪਨਿਕ ਗੇਂਦ ਦੀ ਸਥਿਤੀ ਤੋਂ ਗਿਣਿਆ ਜਾ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਹੇਠਾਂ ਦਿਖਾਇਆ ਗਿਆ ਹੈ:
29

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਚਿੱਤਰ 15: ਭਾਰ ਘਟਾਉਣ ਦੀ ਸਥਿਤੀ ਪ੍ਰਵੇਗ ਮੁੱਲ
ਜੇਕਰ ਅਸੀਂ ਡੱਬੇ 'ਤੇ ਇੱਕ ਲੇਟਵੀਂ ਖੱਬਾ ਬਲ ਲਗਾ ਦਿੰਦੇ ਹਾਂ, ਤਾਂ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਬਾਕਸ ਵਿੱਚ ਇੱਕ ਖੱਬਾ ਪ੍ਰਵੇਗ ਹੋਵੇਗਾ, ਤਾਂ ਡੱਬੇ ਵਿੱਚ ਕਾਲਪਨਿਕ ਗੇਂਦ ਜੜਤਾ ਦੇ ਕਾਰਨ ਬਾਕਸ ਦੇ ਸੱਜੇ ਪਾਸੇ ਚਿਪਕ ਜਾਵੇਗੀ। ਜਿਵੇਂ ਕਿ ਹੇਠਾਂ ਦਿੱਤੇ ਚਿੱਤਰ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ:
ਚਿੱਤਰ 16: ਸੱਜੇ ਪਾਸੇ ਜਾਣ ਵਾਲੀ ਵਸਤੂ ਦਾ ਪ੍ਰਵੇਗ
ਡੇਟਾ ਦੇ ਭੌਤਿਕ ਅਰਥ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ, MPU6050 ਐਕਸਲੇਰੋਮੀਟਰ ਕਾਲਪਨਿਕ ਗੇਂਦ ਦੇ ਤਿੰਨ ਧੁਰਿਆਂ ਵਿੱਚ ਉਲਟ ਮੁੱਲਾਂ ਨੂੰ ਅਸਲ ਪ੍ਰਵੇਗ ਵਜੋਂ ਚਿੰਨ੍ਹਿਤ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਕਾਲਪਨਿਕ ਗੇਂਦ ਦੀ ਸਥਿਤੀ ਕਿਸੇ ਧੁਰੇ ਦੇ ਅੱਗੇ ਵੱਲ ਪੱਖਪਾਤੀ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਧੁਰੇ ਦਾ ਪ੍ਰਵੇਗ ਨਕਾਰਾਤਮਕ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਜਦੋਂ ਕਾਲਪਨਿਕ ਗੇਂਦ ਦੀ ਸਥਿਤੀ ਇੱਕ ਨਕਾਰਾਤਮਕ ਧੁਰੇ ਵੱਲ ਪੱਖਪਾਤੀ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਧੁਰੀ ਦਾ ਪ੍ਰਵੇਗ
30

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਪੜ੍ਹਨਾ ਸਕਾਰਾਤਮਕ ਹੈ। ਉਪਰੋਕਤ ਵਿਸ਼ਲੇਸ਼ਣ ਦੇ ਅਨੁਸਾਰ, ਜਦੋਂ ਅਸੀਂ ਸਥਾਨਕ ਪੱਧਰ 'ਤੇ MPU6050 ਚਿੱਪ ਲਗਾਉਂਦੇ ਹਾਂ, ਤਾਂ ਚਿੱਪ ਦੀ ਸਤ੍ਹਾ ਅਸਮਾਨ ਵੱਲ ਹੁੰਦੀ ਹੈ, ਇਸ ਸਮੇਂ ਗਰੈਵਿਟੀ ਦੇ ਕਾਰਨ, ਗੇਂਦ ਦੀ ਸਥਿਤੀ Z ਧੁਰੀ ਦੀ ਨਕਾਰਾਤਮਕ ਦਿਸ਼ਾ ਵੱਲ ਹੁੰਦੀ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ Z. ਧੁਰੀ ਪ੍ਰਵੇਗ ਰੀਡਿੰਗ ਸਕਾਰਾਤਮਕ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ, ਅਤੇ ਆਦਰਸ਼ਕ ਤੌਰ 'ਤੇ "g" ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਨੋਟ ਕਰੋ ਕਿ ਇਹ ਗਰੈਵੀਟੇਸ਼ਨਲ ਪ੍ਰਵੇਗ ਨਹੀਂ ਹੈ ਬਲਕਿ ਭੌਤਿਕ ਗਤੀ ਦਾ ਪ੍ਰਵੇਗ ਹੈ, ਇਸ ਨੂੰ ਸਮਝਿਆ ਜਾ ਸਕਦਾ ਹੈ: ਗੁਰੂਤਾ ਦਾ ਪ੍ਰਵੇਗ ਇਸਦੇ ਆਪਣੇ ਗਤੀ ਦੇ ਪ੍ਰਵੇਗ ਮੁੱਲ ਦੇ ਬਰਾਬਰ ਹੈ, ਪਰ ਉਲਟ ਦਿਸ਼ਾ ਵਿੱਚ, ਇਸੇ ਕਰਕੇ ਚਿੱਪ ਸਥਿਰ ਰਹਿ ਸਕਦੀ ਹੈ।
5.4.2 ਰੋਲ-ਪਿਚ-ਯੌ ਮਾਡਲ ਅਤੇ ਰਵੱਈਏ ਦੀ ਗਣਨਾ
ਇੱਕ ਹਵਾਈ ਜਹਾਜ਼ ਦੇ ਮੌਜੂਦਾ ਉਡਾਣ ਦੇ ਰਵੱਈਏ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਇੱਕ ਆਮ ਮਾਡਲ ਹੇਠਾਂ ਦਰਸਾਏ ਅਨੁਸਾਰ ਕੋਆਰਡੀਨੇਟ ਸਿਸਟਮ ਨੂੰ ਸਥਾਪਿਤ ਕਰਨਾ ਹੈ ਅਤੇ "ਰੋਲ" ਦੁਆਰਾ X ਧੁਰੀ ਦੇ ਰੋਟੇਸ਼ਨ ਨੂੰ ਦਰਸਾਉਣਾ, "ਪਿਚ" ਦੁਆਰਾ Y ਧੁਰੀ ਦੀ ਰੋਟੇਸ਼ਨ, Z ਦੀ ਰੋਟੇਸ਼ਨ ਨੂੰ ਦਰਸਾਉਣਾ ਹੈ। "Yaw" ਦੁਆਰਾ ਧੁਰਾ।
ਚਿੱਤਰ 17: ਰੋਲ-ਪਿਚ-ਯੌ ਮਾਡਲ
ਕਿਉਂਕਿ MPU6050 ਤਿੰਨ ਧੁਰਿਆਂ ਦੇ ਉੱਪਰ ਵੱਲ ਪ੍ਰਵੇਗ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਗਰੈਵਿਟੀ ਹਮੇਸ਼ਾ ਹੇਠਾਂ ਲੰਬਕਾਰੀ ਹੁੰਦੀ ਹੈ, ਅਸੀਂ ਗੁਰੂਤਾ ਦੇ ਪ੍ਰਵੇਗ ਦੇ ਅਨੁਸਾਰ ਮੌਜੂਦਾ ਰਵੱਈਏ ਦੀ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹਾਂ।
31

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਚਿੱਪ ਦੇ ਅਨੁਸਾਰੀ. ਸਹੂਲਤ ਦੀ ਖ਼ਾਤਰ, ਸਾਡੇ ਕੋਲ ਉੱਪਰ ਦਿਖਾਏ ਗਏ ਜਹਾਜ਼ 'ਤੇ ਹੇਠਾਂ ਵੱਲ ਚਿਪ ਹੈ, ਅਤੇ ਕੋਆਰਡੀਨੇਟ ਜਹਾਜ਼ ਦੇ ਤਾਲਮੇਲ ਪ੍ਰਣਾਲੀ ਦੇ ਨਾਲ ਸੰਪੂਰਨ ਸੰਜੋਗ ਵਿੱਚ ਹਨ। ਤਿੰਨ ਧੁਰਿਆਂ ਵਿੱਚ ਪ੍ਰਵੇਗ ਇੱਕ ਪ੍ਰਵੇਗ ਵੈਕਟਰ “a (x, y, z)” ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਮੰਨਦੇ ਹੋਏ ਕਿ ਚਿੱਪ ਇਕਸਾਰ ਰੇਖਿਕ ਗਤੀ ਦੀ ਸਥਿਤੀ ਵਿੱਚ ਹੈ, ਤਾਂ "a" ਨੂੰ ਜ਼ਮੀਨ ਉੱਤੇ ਲੰਬਵਤ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਰਥਾਤ, Z ਧੁਰੀ ਦੀ ਨਕਾਰਾਤਮਕ ਦਿਸ਼ਾ, ਅਤੇ ਲੰਬਾਈ |a|=g=sqrt{x^2+ ਹੈ। y^2+z^2} (ਗ੍ਰੈਵਿਟੀ ਦੇ ਪ੍ਰਵੇਗ ਦੇ ਬਰਾਬਰ ਪਰ ਉਲਟ ਦਿਸ਼ਾ, ਸੈਕਸ਼ਨ 3.1 ਵਿੱਚ ਵੇਖਦੇ ਹੋਏ)। ਜੇਕਰ ਚਿੱਪ (ਕੋਆਰਡੀਨੇਟ ਸਿਸਟਮ) ਘੁੰਮਦੀ ਹੈ, ਤਾਂ Z ਧੁਰੀ ਦੀ ਨਕਾਰਾਤਮਕ ਦਿਸ਼ਾ ਹੁਣ “a” ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ ਕਿਉਂਕਿ ਪ੍ਰਵੇਗ ਵੈਕਟਰ a ਅਜੇ ਵੀ ਲੰਬਕਾਰੀ ਤੌਰ 'ਤੇ ਉੱਪਰ ਹੈ। ਹੇਠਾਂ ਵੇਖ ਰਿਹਾ ਹੈ।

ਚਿੱਤਰ 18: ਰਵੱਈਆ ਕੋਣ ਗਣਨਾ ਮਾਡਲ
ਸਹੂਲਤ ਦੀ ਖ਼ਾਤਰ, ਉੱਪਰਲੇ ਕੋਆਰਡੀਨੇਟ ਸਿਸਟਮ ਦੇ Z ਧੁਰੇ ਦੀ ਸਕਾਰਾਤਮਕ ਦਿਸ਼ਾ (ਢਿੱਡ ਅਤੇ ਚਿੱਪ ਦਾ ਅਗਲਾ ਹਿੱਸਾ) ਹੇਠਾਂ ਵੱਲ ਹੈ, ਅਤੇ X ਧੁਰੀ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਹੈ (ਉੱਡਣ ਵਾਲੇ ਜਹਾਜ਼ ਦੀ ਦਿਸ਼ਾ)। ਇਸ ਬਿੰਦੂ 'ਤੇ, ਚਿੱਪ ਦਾ ਰੋਲ ਐਂਗਲ “” (ਪੀਲਾ) ਐਕਸਲਰੇਸ਼ਨ ਵੈਕਟਰ ਦੁਆਰਾ ਬਣਦਾ ਹੈ ਅਤੇ XZ ਪਲੇਨ ਉੱਤੇ ਇਸਦਾ ਪ੍ਰੋਜੈਕਸ਼ਨ (x, 0, z), ਪਿਚ ਐਂਗਲ “” (ਹਰਾ) ਐਕਸਲਰੇਸ਼ਨ ਵੈਕਟਰ ਦੁਆਰਾ ਬਣਦਾ ਹੈ। ਅਤੇ YZ ਜਹਾਜ਼ 'ਤੇ ਇਸਦਾ ਪ੍ਰੋਜੈਕਸ਼ਨ। ਬਿੰਦੀ

ਉਤਪਾਦ ਫਾਰਮੂਲਾ ਦੋ ਵੈਕਟਰਾਂ ਵਿਚਕਾਰ ਕੋਣ ਦੀ ਗਣਨਾ ਕਰ ਸਕਦਾ ਹੈ: ਸਧਾਰਨ ਕਟੌਤੀ:

. ਤੋਂ ਬਾਅਦ

ਅਤੇ

.

32

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਨੋਟ ਕਰੋ ਕਿ ਕਿਉਂਕਿ ਆਰਕੋਸ ਫੰਕਸ਼ਨ ਸਿਰਫ ਸਕਾਰਾਤਮਕ ਮੁੱਲ ਵਾਪਸ ਕਰ ਸਕਦਾ ਹੈ, ਤੁਹਾਨੂੰ ਵੱਖ-ਵੱਖ ਸਥਿਤੀਆਂ ਦੇ ਅਨੁਸਾਰ ਕੋਣ ਦੇ ਸਕਾਰਾਤਮਕ ਅਤੇ ਨਕਾਰਾਤਮਕ ਮੁੱਲ ਲੈਣ ਦੀ ਲੋੜ ਹੈ। ਜਦੋਂ y ਧੁਰਾ ਸਕਾਰਾਤਮਕ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਰੋਲ ਕੋਣ ਇੱਕ ਨਕਾਰਾਤਮਕ ਮੁੱਲ ਲੈਂਦਾ ਹੈ, ਅਤੇ ਜਦੋਂ X ਧੁਰਾ ਨੈਗੇਟਿਵ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਪਿੱਚ ਕੋਣ ਨੈਗੇਟਿਵ ਹੁੰਦਾ ਹੈ।
੫.੪.੩ ਯੌ ਕੋਣ ਸਮਸ੍ਯ
ਕਿਉਂਕਿ ਇੱਥੇ ਕੋਈ ਹਵਾਲਾ ਨਹੀਂ ਹੈ, ਯੌ ਦੇ ਸੰਪੂਰਨ ਮੌਜੂਦਾ ਕੋਣ ਦੀ ਗਣਨਾ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ, ਅਸੀਂ ਕੇਵਲ ਯੌ ਦੀ ਪਰਿਵਰਤਨ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ, ਅਰਥਾਤ, ਕੋਣੀ ਵੇਗ GYR_Z। ਬੇਸ਼ੱਕ, ਅਸੀਂ ਮੌਜੂਦਾ ਯਾਓ ਐਂਗਲ (ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ ਦੇ ਅਨੁਸਾਰ) ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ GYR_Z ਇੰਟੈਗਰਲ ਦੀ ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ, ਮਾਪ ਦੀ ਸ਼ੁੱਧਤਾ ਦੇ ਕਾਰਨ, ਗਣਨਾ ਕੀਤਾ ਮੁੱਲ ਵਹਿ ਰਿਹਾ ਹੈ, ਇਹ ਸਮੇਂ ਦੀ ਇੱਕ ਮਿਆਦ ਦੇ ਬਾਅਦ ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਰਥਹੀਣ ਹੈ। ਹਾਲਾਂਕਿ, ਜ਼ਿਆਦਾਤਰ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ, ਜਿਵੇਂ ਕਿ UAV, ਸਿਰਫ਼ GRY_Z ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਜੇਕਰ ਤੁਸੀਂ ਯੌ ਦਾ ਪੂਰਨ ਕੋਣ ਪ੍ਰਾਪਤ ਕਰਨਾ ਹੈ, ਤਾਂ MPU9250, ਇੱਕ 9-ਧੁਰੀ ਮੋਸ਼ਨ ਟਰੈਕਿੰਗ ਚਿੱਪ ਚੁਣੋ, ਇਹ 3-ਧੁਰੀ ਕੰਪਾਸ ਵਾਧੂ ਡੇਟਾ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦਾ ਹੈ, ਇਸਲਈ ਅਸੀਂ ਧਰਤੀ ਦੇ ਚੁੰਬਕੀ ਖੇਤਰ ਦੀ ਦਿਸ਼ਾ ਦੇ ਅਨੁਸਾਰ ਯੌ ਕੋਣ ਦੀ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹਾਂ, ਖਾਸ ਢੰਗ ਦਾ ਇੱਥੇ ਜ਼ਿਕਰ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।
5.5 ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਅਤੇ ਲਾਗੂ ਕਰਨਾ
MPU6050 ਚਿੱਪ ਇੱਕ ਗੰਭੀਰ ਰੌਲੇ ਨਾਲ ਡੇਟਾ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ, ਜਦੋਂ ਚਿੱਪ ਇੱਕ ਸਥਿਰ ਸਥਿਤੀ ਵਿੱਚ ਪ੍ਰਕਿਰਿਆ ਕਰ ਰਹੀ ਹੈ, ਡੇਟਾ 2% ਤੋਂ ਵੱਧ ਬਦਲ ਸਕਦਾ ਹੈ। ਸ਼ੋਰ ਤੋਂ ਇਲਾਵਾ, ਅਜੇ ਵੀ ਹੋਰ ਔਫਸੈੱਟ ਮੌਜੂਦ ਹਨ, ਭਾਵ, ਡੇਟਾ ਸਥਿਰ ਕੰਮ ਕਰਨ ਵਾਲੇ ਬਿੰਦੂ ਦੇ ਦੁਆਲੇ ਸਵਿੰਗ ਨਹੀਂ ਹੁੰਦਾ, ਇਸ ਲਈ ਡੇਟਾ ਆਫਸੈੱਟ ਨੂੰ ਪਹਿਲਾਂ ਕੈਲੀਬਰੇਟ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਅਲਗੋਰਿਦਮ ਨੂੰ ਫਿਲਟਰ ਕਰਕੇ ਸ਼ੋਰ ਨੂੰ ਖਤਮ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਕਾਲਮਨ ਫਿਲਟਰ ਦਾ ਪ੍ਰਭਾਵ ਬਿਨਾਂ ਸ਼ੱਕ ਵੱਡੀ ਮਾਤਰਾ ਵਿੱਚ ਰੌਲੇ ਵਾਲੇ ਡੇਟਾ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਹੈ। ਇੱਥੇ ਅਸੀਂ ਐਲਗੋਰਿਦਮਿਕ ਵੇਰਵਿਆਂ 'ਤੇ ਵਿਚਾਰ ਨਹੀਂ ਕਰਦੇ, ਤੁਸੀਂ ਹਵਾਲਾ ਦੇ ਸਕਦੇ ਹੋ http://www.starlino.com/imu_guide.html.
5.5.1 ਪ੍ਰਯੋਗ 3 imu_kalman ਰੋਲ ਅਤੇ ਪਿਚ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਉਦੇਸ਼ mpu3 ਨੂੰ ਪੜ੍ਹ ਕੇ ਰੀਅਲ-ਟਾਈਮ ਵਿੱਚ mpu6050 ਦੀ 6050D ਮੋਸ਼ਨ ਸਥਿਤੀ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨਾ ਹੈ, ਅਤੇ ਅਸਲ-ਸਮੇਂ ਦੇ ਪ੍ਰਵੇਗ ਨੂੰ ACCEL_X, ACCEL_Y, ACCEL_Z ਡੇਟਾ ਅਤੇ gyro_XYRO ਡੇਟਾ, GYRO_XY. , ਅਤੇ ਪ੍ਰੋਸੈਸਿੰਗ ਪ੍ਰੋਗਰਾਮ ਲਈ GYRO_Z।
5.5.2 ਪ੍ਰਯੋਗ ਕੋਡ Arduino ਪ੍ਰਯੋਗ ਕੋਡ “MotionTrackLessonmpu6050mpu6050.ino” ਰੋਲ ਅਤੇ ਪਿੱਚ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ ਰਨਿੰਗ ਨਤੀਜਾ ਹੇਠ ਲਿਖੇ ਅਨੁਸਾਰ ਹੈ:
33

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਪ੍ਰੋਗਰਾਮ ਨੂੰ Arduino NANO ਮੁੱਖ ਕੰਟਰੋਲ ਬੋਰਡ 'ਤੇ ਅੱਪਲੋਡ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਪ੍ਰੋਸੈਸਿੰਗ ਪ੍ਰੋਗਰਾਮ “MotionTrackProcessing_demompu6050mpu6050.pde” ਖੋਲ੍ਹੋ।
ਪ੍ਰੋਸੈਸਿੰਗ ਸੌਫਟਵੇਅਰ ਨਾਲ (ਡਾਊਨਲੋਡ ਐਡਰੈੱਸ https://www.processing.org). ਨੋਟ ਕਰੋ ਕਿ “[]” ਵਿੱਚ ਨੰਬਰ ਅਰਡਿਊਨੋ ਨੈਨੋ ਦਾ ਪੋਰਟ ਨੰਬਰ ਨਹੀਂ ਹੈ, ਪਰ ਸੰਚਾਰ ਪੋਰਟ ਦਾ ਸੀਰੀਅਲ ਨੰਬਰ ਹੈ। ਤੁਹਾਨੂੰ ਕੰਪਿਊਟਰ ਦੇ ਡਿਵਾਈਸ ਮੈਨੇਜਰ ਨੂੰ ਖੋਲ੍ਹਣ ਦੀ ਲੋੜ ਹੈ view ਸੀਰੀਅਲ ਨੰਬਰ ਸਾਬਕਾ ਲਈample, ਮੇਰਾ ਡਿਸਪਲੇਅ COM1 ਹੈ, ਅਤੇ ਸਾਡੀ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਸੀਰੀਅਲ ਪੋਰਟ ਹੈ। ਇਹ ਸਬਸਕ੍ਰਿਪਟ 0 ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਇਸ ਲਈ ਮੈਂ ਪ੍ਰੋਸੈਸਿੰਗ ਮੁੱਖ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ "[ ]" ਵਿੱਚ ਮੁੱਲ ਨੂੰ 0 ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਹੈ। ਇੱਕ ਵਾਰ ਤਬਦੀਲੀਆਂ ਪੂਰੀਆਂ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਚਲਾਉਣ ਲਈ ਸਕੈਚ ਚਲਾਓ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
34

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
35

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਆਯਾਤ processing.serial.*;
ਸੀਰੀਅਲ ਮਾਈਪੋਰਟ; // ਸੇਰੀਲਾ ਪੋਰਟ ਨਮਬਲ
ਫਲੋਟ [] RwEst = ਨਵਾਂ ਫਲੋਟ[3]; ਬਾਈਟ[] inBuffer = ਨਵੀਂ ਬਾਈਟ[100];
PFont ਫੌਂਟ; ਫਾਈਨਲ int VIEW_SIZE_X = 1080,VIEW_SIZE_Y = 720;
ਬੇਕਾਰ ਸੈੱਟਅੱਪ() {
ਆਕਾਰ (1080, 720, P3D); myPort = ਨਵਾਂ ਸੀਰੀਅਲ(ਇਹ, ਸੀਰੀਅਲ.ਲਿਸਟ()[0], 9600); // myPort = ਨਵਾਂ ਸੀਰੀਅਲ(ਇਹ, “/dev/ttyUSB0”, 9600); // ਲੋਡ ਫੌਂਟ ਕੋਰੀਅਰ ਨਵੀਂ ਕਿਸਮ / ਮਿਤੀ ਫੌਂਟ = ਲੋਡਫੌਂਟ(“CourierNewPSMT-32.vlw”); }
void readSensors() { if (myPort.available() > 0) { if (myPort.readBytesUntil('n', inBuffer) > 0) { ਸਤਰ inputString = new String(inBuffer); ਸਤਰ [] inputStringArr = ਸਪਲਿਟ(inputString,','); RwEst[0] = float(inputStringArr[0]); RwEst[1] = float(inputStringArr[1]); RwEst[2] = float(inputStringArr[2]); } }
}
36

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
void buildBoxShape() { //box(60, 10, 40); noStroke(); ਸ਼ੁਰੂਆਤੀ ਆਕਾਰ (QUADS);
//Z+ ਭਰਨ (#00ff00); vertex(-30, -5, 20); vertex(30, -5, 20); ਸਿਖਰ (30, 5, 20); vertex(-30, 5, 20);
//Zfill(#0000ff); vertex(-30, -5, -20); vertex(30, -5, -20); vertex(30, 5, -20); vertex(-30, 5, -20);
//Xfill(#ff0000); vertex(-30, -5, -20); vertex(-30, -5, 20); vertex(-30, 5, 20); vertex(-30, 5, -20);
//X+ ਭਰਨ (#ffff00); vertex(30, -5, -20); vertex(30, -5, 20); ਸਿਖਰ (30, 5, 20); vertex(30, 5, -20);
//Yfill(#ff00ff); vertex(-30, -5, -20); vertex(30, -5, -20); vertex(30, -5, 20); vertex(-30, -5, 20);
37

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
//Y+ ਭਰਨ (#00ffff); vertex(-30, 5, -20); vertex(30, 5, -20); ਸਿਖਰ (30, 5, 20); vertex(-30, 5, 20);
endShape(); }
void drawCube() { pushMatrix(); // normalize3DVec(RwEst); ਅਨੁਵਾਦ (300, 450, 0); ਸਕੇਲ(4, 4, 4); rotateX(HALF_PI * -RwEst[1]); //rotateY(HALF_PI * -0.5); rotateZ(HALF_PI * -RwEst[0]); buildBoxShape(); popMatrix();
}
void draw() { // getInclination(); readSensors(); ਪਿਛੋਕੜ(#214565); ਭਰੋ (#ffffff); ਟੈਕਸਟਫੌਂਟ(ਫੌਂਟ, 20); ਟੈਕਸਟ (“RwEst :n” + RwEst[0] + “n” + RwEst[1] + “n” + RwEst[2], 220, 180); // ਡਿਸਪਲੇਅ ਐਕਸੇਸ ਪੁਸ਼ਮੈਟ੍ਰਿਕਸ(); ਅਨੁਵਾਦ (450, 250, 0); ਸਟ੍ਰੋਕ (#ffffff); // ਸਕੇਲ(100, 100, 100); ਲਾਈਨ(0, 0, 0, 100, 0, 0); ਲਾਈਨ(0, 0, 0, 0, -100, 0); ਲਾਈਨ(0, 0, 0, 0, 0, 100); ਲਾਈਨ(0, 0, 0, -RwEst[0], RwEst[1], RwEst[2]); popMatrix(); drawCube();
} 38

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਅਸੀਂ ਦੇਖ ਸਕਦੇ ਹਾਂ ਕਿ ਸਾਡੇ ਚੱਲ ਰਹੇ ਨਤੀਜੇ ਇਸ ਤਰ੍ਹਾਂ ਹਨ:
ਚਿੱਤਰ 19: ਪ੍ਰੋਸੈਸਿੰਗ ਪ੍ਰਸਤੁਤੀ ਪੇਸ਼ਕਾਰੀ

ਮੋਸ਼ਨ ਟਰੈਕਿੰਗ ਨਿਯੰਤਰਣ ਦਾ ਸਿਧਾਂਤ

ਰੋਲ ਐਂਗਲ ਅਤੇ ਪਿੱਚ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ mpu6050 ਦੇ ਪਿਛਲੇ ਡੇਟਾ ਪ੍ਰਾਪਤੀ ਦੁਆਰਾ, ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਪੱਤਰ ਵਿਹਾਰ ਨੂੰ ਸਥਾਪਿਤ ਕਰਦੇ ਹਾਂ। ਲੋਅਰ ਮਸ਼ੀਨ ਮੂਵਿੰਗ ਆਬਜੈਕਟ ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ: ਅਸੀਂ mpu6050 ਦੁਆਰਾ ਗਤੀ ਅਤੇ ਦਿਸ਼ਾ ਪ੍ਰਾਪਤ ਕਰਕੇ ਕਿਸੇ ਵੀ ਹੇਠਲੇ ਮਸ਼ੀਨ ਆਬਜੈਕਟ ਨੂੰ ਕੰਟਰੋਲ ਕਰ ਸਕਦੇ ਹਾਂ।
mpu6050 ਰੀਅਲ-ਟਾਈਮ ਪ੍ਰਮਾਣਿਤ ਪ੍ਰਵੇਗ ACCEL_X, ACCEL_Y, ACCEL_Z ਡੇਟਾ ਅਤੇ ਜਾਇਰੋਸਕੋਪ ਡੇਟਾ GYRO_X, GYRO_Y, GYRO_Z ਡੇਟਾ ਨੂੰ ਕੁਆਟਰਨੀਅਨ ਪ੍ਰੋਸੈਸਿੰਗ ਫੰਕਸ਼ਨ ਵਿੱਚ ਪ੍ਰਸਾਰਿਤ ਕਰਨ ਦੁਆਰਾ, ਪ੍ਰੋਗਰਾਮ mpu6050 ਦੇ ਰੋਲਰ ਅਤੇ ਪਿਚ ਐਂਗਲ ਸਟੇਟਸ ਨੂੰ ਰੀਅਲ ਟਾਈਮ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦਾ ਹੈ।
6.1 ਰੇਸਿੰਗ ਦਿਸ਼ਾ ਨਿਰਦੇਸ਼ਕ ਕੋਣ ਮਾਡਲ
ਕਾਰ ਦੇ ਨਿਯੰਤਰਣ ਦੀ ਸਹੂਲਤ ਲਈ, ਅਸੀਂ ਹੁਣ ਕੋਆਰਡੀਨੇਟ ਐਂਗਲ ਨਾਲ ਮੋਟਰ ਦੀ ਦਿਸ਼ਾ ਦਾ ਹੇਠਾਂ ਦਿੱਤਾ ਮਾਡਲ ਸਥਾਪਤ ਕਰਦੇ ਹਾਂ
39

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਚਿੱਤਰ 20: ਰੇਸਿੰਗ ਦਿਸ਼ਾ ਕੋਣ ਕੋਆਰਡੀਨੇਟਸ ਜਿਵੇਂ ਕਿ ਉੱਪਰ ਦਿਖਾਇਆ ਗਿਆ ਹੈ, ਅਸੀਂ ਕਾਰ ਦੇ ਅਗਲੇ ਹਿੱਸੇ ਨੂੰ 90 ਡਿਗਰੀ, ਪਿਛਲੇ ਪਾਸੇ 270 ਡਿਗਰੀ, ਸੱਜੇ ਪਾਸੇ 180 ਡਿਗਰੀ, ਅਤੇ ਖੱਬੇ ਪਾਸੇ 0/360 ਡਿਗਰੀ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੇ ਹਾਂ। 0~90 ਦਾ ਅਰਥ ਹੈ ਸਾਹਮਣੇ ਦੀ ਸਹੀ ਦਿਸ਼ਾ। 90~180 ਦਾ ਅਰਥ ਹੈ ਖੱਬੇ ਫਰੰਟ ਲਈ 180~270 ਖੱਬੇ ਪਿੱਛੇ ਲਈ ਅਤੇ 270~360 ਸੱਜੇ ਪਿੱਛੇ ਲਈ। ਇਸੇ ਤਰ੍ਹਾਂ, ਅਸੀਂ ਸਪੋਰਟਸ ਗਲੋਵਜ਼ 'ਤੇ mpu6050 ਲਗਾਇਆ ਹੈ। ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਮੋਸ਼ਨ ਮਾਡਲ ਨੂੰ ਬਣਾਇਆ ਹੈ।
40

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਚਿੱਤਰ 21: ਸਪੋਰਟਸ ਦਸਤਾਨੇ ਦੇ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ 5.5.2 ਰੋਲ-ਪਿਚ-ਯਾਅ ਡੇਟਾ ਮਾਡਲ ਦੁਆਰਾ, ਸਪੋਰਟਸ ਗਲੋਵ ਚਿੱਤਰ Y (ਹੱਥ ਦੇ ਪਿੱਛੇ ਨੂੰ ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਮੋੜਦੇ ਹੋਏ) ਦੇ ਦੁਆਲੇ ਘੁੰਮਦੇ ਹਨ ਅਤੇ ਸਾਨੂੰ ਪਿੱਚ ਕੋਣ ਮਿਲਦਾ ਹੈ। X ਦੁਆਲੇ ਘੁੰਮਦੇ ਹੋਏ (ਅੱਗੇ-ਪਿੱਛੇ ਫਲਿਪ ਕਰੋ) ਸਾਨੂੰ ਰੋਲ ਐਂਗਲ ਮਿਲਦਾ ਹੈ। ਹੁਣ ਜਦੋਂ ਸਾਨੂੰ ਰਵੱਈਏ ਦੇ ਕੋਣ ਦੇ ਨਿਰਦੇਸ਼ਾਂਕ ਅਤੇ ਕਾਰ ਦੇ ਕੋਣ ਕੋਆਰਡੀਨੇਟਸ ਦੀ ਸਮਝ ਹੈ, ਅਸੀਂ ਹੁਣ ਇਸ ਨੂੰ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਵਰਣਨ ਕਰਾਂਗੇ। ਜਦੋਂ ਸਪੋਰਟਸ ਗਲੋਵਜ਼ ਨੂੰ ਸੱਜੇ ਸਾਹਮਣੇ ਦਿਸ਼ਾ ਵੱਲ ਝੁਕਾਇਆ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਹੇਠਾਂ ਚਿੱਤਰ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ, ਜੇਕਰ ਉਹ ਕੋਆਰਡੀਨੇਟ ਸਿਸਟਮ ਵਿੱਚ ਹਨ, ਤਾਂ ਉਹ 0 ਤੋਂ 90 ਡਿਗਰੀ ਖੇਤਰ ਵੱਲ ਝੁਕੇ ਹੋਏ ਹਨ।
41

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਚਿੱਤਰ 22: ਸਪੋਰਟਸ ਗਲੋਵਜ਼ ਦਾ ਯੋਜਨਾਬੱਧ ਚਿੱਤਰ ਸੱਜੇ ਸਾਹਮਣੇ ਦਿਸ਼ਾ ਵੱਲ ਝੁਕਦਾ ਹੋਇਆ ਕੋਨਾ ਹੇਠਾਂ ਦਿੱਤੀ ਕਾਰ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।
42

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਚਿੱਤਰ 23: ਕਾਰ ਦੇ ਸੱਜੇ ਸਾਹਮਣੇ ਦੀ ਗਤੀ ਦਾ ਯੋਜਨਾਬੱਧ ਚਿੱਤਰ ਸਪੋਰਟਸ ਗਲੋਵਜ਼ ਦੇ ਰਵੱਈਏ ਦੁਆਰਾ, ਸਾਨੂੰ ਹੇਠਲੇ ਮਸ਼ੀਨ ਦੀ ਗਤੀ ਦੇ ਕੋਣ ਦੀ ਡਿਗਰੀ ਦੀ ਗਣਨਾ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਲਈ ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਤਿੰਨ-ਅਯਾਮੀ ਮਾਡਲ ਨੂੰ ਬਣਾਇਆ ਹੈ
ਚਿੱਤਰ 24: ਸਪੋਰਟਸ ਗਲੋਵਜ਼ 'ਤੇ ਆਧਾਰਿਤ ਸਟੀਰੀਓ ਮਾਡਲ ਡਾਇਗ੍ਰਾਮ ਪ੍ਰਤੀਨਿਧਤਾ ਦੀ ਸਹੂਲਤ ਲਈ, ਉੱਪਰਲੇ ਕੋਆਰਡੀਨੇਟ ਸਿਸਟਮ ਦੀ Z-ਧੁਰੀ ਸਕਾਰਾਤਮਕ ਦਿਸ਼ਾ (ਮੂਵਿੰਗ ਗਲੋਵ ਦਾ ਅਗਲਾ ਹਿੱਸਾ) ਉੱਪਰ ਵੱਲ ਹੈ, ਅਤੇ ਸਕਾਰਾਤਮਕ X-ਧੁਰੀ ਦਿਸ਼ਾ (ਦਾ ਸੱਜੇ ਪਾਸੇ) ਸਪੋਰਟਸ ਗਲੋਵ) ਸੱਜੇ ਪਾਸੇ ਹੈ। ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ ਵਿੱਚ, ਖੇਡਾਂ ਦੇ ਦਸਤਾਨੇ XY ਦੇ ਨਾਲ ਇੱਕੋ ਜਿਹੇ ਲੀਵਰ ਰਹਿੰਦੇ ਹਨ। ਇਸ ਸਮੇਂ, ਸਪੋਰਟਸ ਗਲੋਵਜ਼ ਜਿਸ ਦਿਸ਼ਾ ਵਿੱਚ ਝੁਕਿਆ ਹੋਇਆ ਹੈ ਉਸਨੂੰ OB ਦੁਆਰਾ ਦਰਸਾਇਆ ਗਿਆ ਹੈ, ਅਤੇ ਰੋਲ ਐਂਗਲ (ਕਾਲਾ) ਐਕਸਲਰੇਸ਼ਨ ਵੈਕਟਰ OB ਅਤੇ XZ ਪਲੇਨ ਉੱਤੇ ਇਸਦੇ ਪ੍ਰੋਜੈਕਸ਼ਨ (x, 0, z) ਵਿਚਕਾਰ ਕੋਣ ਹੈ, ਅਤੇ ਪਿੱਚ ਐਂਗਲ (ਜਾਮਨੀ) YZ ਸਮਤਲ ਉੱਤੇ ਇਸਦਾ ਪ੍ਰੋਜੈਕਸ਼ਨ ਹੈ (0, y, ਅਤੇ z ਵਿਚਕਾਰ ਕੋਣ)। ਨੀਲਾ ਰੰਗ ਉਹ ਡਿਗਰੀ ਹੈ ਜਿਸ 'ਤੇ ਸਪੋਰਟਸ ਦਸਤਾਨੇ XY ਪਲੇਨ 'ਤੇ ਪ੍ਰੋਜੈਕਸ਼ਨ (x, o, y) ਨੂੰ ਪੇਸ਼ ਕਰਦੇ ਹਨ। ਅਸੀਂ ਹੇਠਲੇ ਕਾਰ ਦੇ ਸਟੀਅਰਿੰਗ ਕੋਣ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਇਸ ਕੋਣ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਅਸੀਂ ਪਹਿਲਾਂ ਹੀ ਪਿਛਲੇ 5.6.1 ਪ੍ਰਯੋਗ ਦੁਆਰਾ ਰੋਲ ਅਤੇ ਪਿੱਚ ਪ੍ਰਾਪਤ ਕਰ ਚੁੱਕੇ ਹਾਂ। ਹੁਣ ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਫਾਰਮੂਲੇ ਦੁਆਰਾ ਡਿਗਰੀ ਦੀ ਗਣਨਾ ਕਰਦੇ ਹਾਂ। ਚਿੱਤਰ ਵਿੱਚ BA OA AB OB ਸਿਨ (ਪਿਚ) BD OD BD OBsin (ਰੋਲ)
43

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
tandegree FE BD sin(ਰੋਲ) ਰੋਲ
OE AB sin (ਪਿਚ) ਪਿੱਚ ਡਿਗ ਰੀ ਆਰਕਟਾਨ (ਰੋਲ)
ਪਿੱਚ ਉੱਪਰ ਸਾਨੂੰ ਸਟੀਅਰਿੰਗ ਕੋਸਾਈਨ ਐਂਗਲ ਮਿਲਿਆ ਹੈ, ਸਾਨੂੰ ਕੋਆਰਡੀਨੇਟ ਡਿਗਰੀ ਵਿੱਚ ਗੁਣਾਂਕ ਨੂੰ ਗੁਣਾ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। 180 57.3 ਉਪਰੋਕਤ ਵਿਸ਼ਲੇਸ਼ਣ ਸਿਰਫ ਇੱਕ ਕੋਣ ਵਿਸ਼ਲੇਸ਼ਣ ਹੈ ਜਦੋਂ ਉੱਪਰਲੇ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਝੁਕਿਆ ਜਾਂਦਾ ਹੈ। ਇਸੇ ਤਰ੍ਹਾਂ, ਜਦੋਂ ਖੇਡਾਂ ਦੇ ਦਸਤਾਨੇ ਖੱਬੇ ਮੋਰਚੇ ਵੱਲ ਝੁਕਦੇ ਹਨ
ਚਿੱਤਰ 25: ਸਪੋਰਟਸ ਦਸਤਾਨੇ ਦੀ ਖੱਬੇ ਸਾਹਮਣੇ ਦਿਸ਼ਾ ਵੱਲ ਝੁਕਦੇ ਹੋਏ ਡਿਗ ਰੀ ਆਰਕਟਾਨ (ਪਿਚ)*57.3 900 ਦਾ ਯੋਜਨਾਬੱਧ ਚਿੱਤਰ
ਇਸੇ ਤਰ੍ਹਾਂ ਰੋਲ ਕਰੋ, ਜਦੋਂ ਖੇਡਾਂ ਦੇ ਦਸਤਾਨੇ ਖੱਬੇ ਪਾਸੇ ਝੁਕ ਜਾਂਦੇ ਹਨ
44

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਚਿੱਤਰ 26: ਸਪੋਰਟਸ ਗਲੋਵਜ਼ ਡਿਗ ਰੀ ਆਰਕਟਾਨ (ਰੋਲ)*57.3 1800 ਦੀ ਖੱਬੀ ਪਿਛਲੀ ਦਿਸ਼ਾ ਦਾ ਯੋਜਨਾਬੱਧ ਚਿੱਤਰ
ਪਿਚ ਇਸੇ ਤਰ੍ਹਾਂ, ਜਦੋਂ ਖੇਡਾਂ ਦੇ ਦਸਤਾਨੇ ਹੇਠਲੇ ਸੱਜੇ ਪਾਸੇ ਝੁਕ ਜਾਂਦੇ ਹਨ
ਚਿੱਤਰ 27: ਖੇਡਾਂ ਦੇ ਦਸਤਾਨੇ ਦੀ ਸੱਜੇ ਪਿਛਲੀ ਦਿਸ਼ਾ ਦਾ ਯੋਜਨਾਬੱਧ ਚਿੱਤਰ
45

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਡਿਗਰੀ ਆਰਕਟਨ (ਪਿਚ)*57.3 2700 ਰੋਲ
ਹੁਣ ਗੱਲ ਕਰਦੇ ਹਾਂ ਕਿ ਕਾਰ ਦੀ ਸਪੀਡ ਨੂੰ ਕਿਵੇਂ ਕੰਟਰੋਲ ਕੀਤਾ ਜਾਵੇ। ਉਪਰੋਕਤ ਚਿੱਤਰ ਤੋਂ ਅਸੀਂ ਦੇਖ ਸਕਦੇ ਹਾਂ ਕਿ mpu6050 ਅਤੇ ਪਲੇਨ XY ਪਲੇਨ ਟਿਲਟ ਐਂਗਲ ਵਿੱਚ ਸਪੋਰਟਸ ਗਲੋਵਜ਼ ਲਈ, ਅਸੀਂ ਪ੍ਰਸਤੁਤ ਕਰਨ ਲਈ ਹੇਠਾਂ ਦਿੱਤੇ ਪਲੇਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ

B'OB ਸ਼ੁਰੂਆਤੀ ਅਵਸਥਾ ਦੇ ਮੁਕਾਬਲੇ ਝੁਕਾਅ ਦਾ ਕੋਣ ਹੈ ਜਿਸਦੀ ਗਤੀ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਝੁਕਣ ਦੀ ਇਸ ਡਿਗਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ

ਕਾਰ.

B'OB=OBF arcsin( OF ) arcsin ( OE2 EF 2 )

OB

OB

EF=BD OE=AB

OBF arcsin (sin2 (Rol) sin2 (Pitch)) arcsin (Rol2 Pitch2 )

ਉਪਰੋਕਤ ਚਾਪ ਕੋਣ ਹੈ। ਸਾਨੂੰ ਗੁਣਾਂਕ ਨੂੰ ਗੁਣਾ ਕਰਨ ਦੀ ਵੀ ਲੋੜ ਹੈ। ਇਸ ਕੋਣ ਦੀ ਰੇਂਜ (0~90) ਹੈ। ਅਸੀਂ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਇਸ ਕੋਣ ਦੀ ਵਰਤੋਂ ਕਾਰ ਦੀ ਨਿਯੰਤਰਣ ਗਤੀ ਵਜੋਂ ਕਰਦੇ ਹਾਂ।

46

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

ਫਲੋਟ ਕੈਲਕੁਲੇਟ ਸਪੀਡ (ਫਲੋਟ ਰੋਲ, ਫਲੋਟ ਪਿੱਚ) {
ਫਲੋਟ ਝੁਕਾਅ = asin(sqrt(roll*roll +pitch*pitch))*Rad; ਵਾਪਸੀ ਦਾ ਝੁਕਾਅ; }

ਬੇਕਾਰ ਹੱਥ ਝੁਕਾਅ (ਅਕਾਰਥ)

{

ਸਥਿਰ ਇੰਟ ਗਿਣਤੀ = 0;

ਸਥਿਰ ਇੰਟ SendSpeed ​​= 0, SendDegree = 0;

ਗਿਣਤੀ ++;

ਸਪੀਡ = ਕੈਲਕੂਲੇਟ ਸਪੀਡ (ਰੋਲ, ਪਿੱਚ);

ਜੇਕਰ ((-0.2 <= ਪਿੱਚ) && (ਪਿਚ <= 0.2) && (-0.2 <= ਰੋਲ) && (ਰੋਲ <= 0.2)) {

ਡਿਗਰੀ = 90;

SendSpeed ​​= 0;

SendDegree += 90;

} ਹੋਰ ਜੇ (ਪਿਚ < 0 && ਰੋਲ < 0) {

ਡਿਗਰੀ = atan(ਰੋਲ/ਪਿਚ)*Rad;

SendDegree += ((ਹਸਤਾਖਰਿਤ int)(degree/10))*10;

} ਹੋਰ ਜੇ (ਪਿਚ > 0 && ਰੋਲ <0) {

ਡਿਗਰੀ = atan(-ਪਿਚ/ਰੋਲ)*Rad + 90;

SendDegree += ((ਹਸਤਾਖਰਿਤ int)(degree/10))*10;

} ਹੋਰ ਜੇ (ਪਿਚ > 0 && ਰੋਲ > 0) {

ਡਿਗਰੀ = atan(ਰੋਲ/ਪਿਚ)*Rad + 180;

} ਹੋਰ ਜੇ (ਪਿਚ < 0 && ਰੋਲ > 0) {

ਡਿਗਰੀ = atan(-ਪਿਚ/ਰੋਲ)*Rad + 270;

SendDegree += ((ਹਸਤਾਖਰਿਤ int)(degree/10))*10;

} ਹੋਰ {

ਡਿਗਰੀ = 90;

SendSpeed ​​= 0;

SendDegree = 90;

}

SendDegree = (int)(ਸਪੀਡ/10)*10;

ਜੇਕਰ (ਡਿਗਰੀ <30 || ਡਿਗਰੀ > 330) {

SendDegree = 0;

}

ਜੇਕਰ (ਗਿਣਤੀ >= 3) {

ਗਿਣਤੀ = 0;

ਭੇਜੋ_ਦਿਸ਼ਾ(SendDegree/3);

Send_Speed(SendSpeed);

SendDegree = 0;

SendSpeed ​​= 0;

4 7

}

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

ਪ੍ਰੋਟੋਕੋਲ

ਕਾਰ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਬਲੂਟੁੱਥ ਦੀ ਵਰਤੋਂ ਕਰੋ, ਅਸਲ ਵਿੱਚ Arduino ਨੂੰ ਨਿਰਦੇਸ਼ ਭੇਜਣ ਲਈ Android ਐਪ ਦੀ ਵਰਤੋਂ ਕਰ ਰਿਹਾ ਹੈ

ਕਾਰ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਲਈ ਬਲੂਟੁੱਥ ਰਾਹੀਂ ਸੀਰੀਅਲ ਪੋਰਟ। ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਵਾਇਰਲੈੱਸ ਸੰਚਾਰ ਸ਼ਾਮਲ ਹੈ, ਇੱਕ ਜ਼ਰੂਰੀ

ਸਮੱਸਿਆ ਦੋ ਜੰਤਰ ਵਿਚਕਾਰ ਸੰਚਾਰ ਹੈ. ਪਰ ਉਹਨਾਂ ਵਿਚਕਾਰ ਕੋਈ ਸਾਂਝੀ "ਭਾਸ਼ਾ" ਨਹੀਂ ਹੈ,

ਇਸ ਲਈ ਐਂਡਰਾਇਡ ਅਤੇ ਵਿਚਕਾਰ ਸੰਪੂਰਨ ਪਰਸਪਰ ਪ੍ਰਭਾਵ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਸੰਚਾਰ ਪ੍ਰੋਟੋਕੋਲ ਨੂੰ ਡਿਜ਼ਾਈਨ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ

Arduino. ਮੁੱਖ ਪ੍ਰਕਿਰਿਆ ਹੈ: ਐਂਡਰੌਇਡ ਕੰਟਰੋਲ ਕਮਾਂਡ ਨੂੰ ਪਛਾਣਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਵਿੱਚ ਪੈਕੇਜ ਕਰਦਾ ਹੈ

ਅਨੁਸਾਰੀ ਪੈਕੇਟ, ਫਿਰ ਬਲੂਟੁੱਥ ਮੋਡੀਊਲ (JDY-16) ਨੂੰ ਭੇਜਿਆ ਗਿਆ, JDY-16 ਨੇ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕੀਤਾ ਅਤੇ ਇਸ ਨੂੰ ਭੇਜੋ

Arduino, ਫਿਰ Arduino ਡੇਟਾ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਦਾ ਹੈ ਅਤੇ ਫਿਰ ਅਨੁਸਾਰੀ ਕਾਰਵਾਈ ਕਰਦਾ ਹੈ। ਮਿਤੀ ਫਾਰਮੈਟ ਜੋ ਕਿ

ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰ ਐਂਡਰਾਇਡ ਭੇਜੋ, ਮੁੱਖ ਤੌਰ 'ਤੇ 8 ਖੇਤਰ ਸ਼ਾਮਲ ਹਨ।

ਪ੍ਰੋਟੋਕੋਲ ਡੇਟਾ ਲੰਬਾਈ ਡਿਵਾਈਸ ਦੀ ਕਿਸਮ ਡਿਵਾਈਸ ਫੰਕਸ਼ਨ ਕੰਟਰੋਲ ਜਾਂਚ ਪ੍ਰੋਟੋਕੋਲ

ਸਿਰਲੇਖ

ਪਤਾ ਕੋਡ ਡਾਟਾ ਜੋੜ ਅੰਤ ਕੋਡ

ਉਪਰੋਕਤ 8 ਖੇਤਰਾਂ ਵਿੱਚ, ਅਸੀਂ ਨੁਮਾਇੰਦਗੀ ਕਰਨ ਲਈ ਇੱਕ ਢਾਂਚਾਗਤ ਬਾਡੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ।

typedef struct {
ਗੈਰ-ਹਸਤਾਖਰਿਤ char start_code; ਹਸਤਾਖਰਿਤ ਚਾਰ ਲੈਨ; ਹਸਤਾਖਰਿਤ ਚਾਰ ਕਿਸਮ; ਹਸਤਾਖਰਿਤ ਚਾਰ ਐਡਰ; ਹਸਤਾਖਰਿਤ ਸ਼ਾਰਟ ਇੰਟ ਫੰਕਸ਼ਨ; ਹਸਤਾਖਰਿਤ ਚਾਰ * ਡੇਟਾ; ਹਸਤਾਖਰਿਤ ਛੋਟਾ ਇੰਟ ਜੋੜ; ਹਸਤਾਖਰਿਤ ਚਾਰ ਐਂਡ_ਕੋਡ; }ST_ਪ੍ਰੋਟੋਕਾਲ;

// 8bit 0xAA
// 16 ਬਿੱਟ // n ਬਿੱਟ // ਚੈੱਕ ਰਕਮ // 8 ਬਿੱਟ 0x55

"ਪ੍ਰੋਟੋਕੋਲ ਸਿਰਲੇਖ" ਦਾ ਅਰਥ ਹੈ ਪੈਕੇਟ ਦੀ ਸ਼ੁਰੂਆਤ, ਜਿਵੇਂ ਕਿ 0xAA ਦਾ ਇਕਸਾਰ ਅਹੁਦਾ। "ਡੇਟਾ ਲੰਬਾਈ" ਦਾ ਮਤਲਬ ਹੈ ਡੇਟਾ ਦੇ ਸ਼ੁਰੂਆਤੀ ਅਤੇ ਅੰਤ ਕੋਡਾਂ ਦੀ ਵੈਧ ਡੇਟਾ ਲੰਬਾਈ ਨੂੰ ਛੱਡ ਕੇ। "ਡਿਵਾਈਸ ਕਿਸਮ" ਦਾ ਅਰਥ ਹੈ ਡਿਵਾਈਸ ਉਪਕਰਣ ਦੀ ਕਿਸਮ "ਡਿਵਾਈਸ ਐਡਰੈੱਸ" ਦਾ ਅਰਥ ਹੈ ਉਹ ਪਤਾ ਜੋ ਨਿਯੰਤਰਣ ਲਈ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ "ਫੰਕਸ਼ਨ ਕੋਡ" ਦਾ ਅਰਥ ਹੈ ਉਪਕਰਨ ਫੰਕਸ਼ਨਾਂ ਦੀ ਕਿਸਮ ਜਿਸ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ, ਫੰਕਸ਼ਨ ਕਿਸਮਾਂ ਜਿਨ੍ਹਾਂ ਦਾ ਅਸੀਂ ਵਰਤਮਾਨ ਵਿੱਚ ਸਮਰਥਨ ਕਰਦੇ ਹਾਂ ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰ।

48

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
typedef enum {
E_BATTERY = 1, E_LED = 2, E_BUZZER = 3, E_INFO = 4, E_ROBOT_CONTROL = 5, E_ROBOT_CONTROL_SPEED = 6, E_TEMPERATURE = 7, E_IR_TRACKING = 8, E_ULTRASONIC = E_9, E_UPRASONIC = E_10}, _CONTOROL_FUNC ;
"ਡਾਟਾ" ਦਾ ਅਰਥ ਹੈ ਇੱਕ ਕਾਰ ਦਾ ਖਾਸ ਨਿਯੰਤਰਣ ਮੁੱਲ, ਜਿਵੇਂ ਕਿ ਗਤੀ, ਕੋਣ। "ਚੈੱਕਸਮ" ਨਿਯੰਤਰਣ ਨਿਰਦੇਸ਼ ਦੇ ਵੱਖ-ਵੱਖ ਜਾਂ ਗਣਨਾ ਕੀਤੇ ਡੇਟਾ ਬਿੱਟਾਂ ਦਾ ਨਤੀਜਾ ਹੈ। “ਪ੍ਰੋਟੋਕੋਲ ਐਂਡ ਕੋਡ” ਡੇਟਾ ਬੈਗ ਦਾ ਅੰਤਮ ਹਿੱਸਾ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਇਹ ਡੇਟਾ ਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ, ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਡੇਟਾ ਪੈਕ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਅਤੇ ਅਗਲਾ ਡੇਟਾ ਪੈਕ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਤਿਆਰ ਹੈ, ਇੱਥੇ ਅਸੀਂ ਇਸਨੂੰ 0x55 ਦੇ ਤੌਰ ਤੇ ਨਿਰਧਾਰਤ ਕੀਤਾ ਹੈ। ਸਾਬਕਾ ਲਈample, ਇੱਕ ਪੂਰਾ ਪੈਕੇਟ ਹੋ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਕਿ “AA 070101065000 5F55”, ਜਿਸ ਵਿੱਚ: “07” ਟ੍ਰਾਂਸਮਿਸ਼ਨ ਡੇਟਾ ਲੰਬਾਈ 7 ਬਾਈਟ ਹੈ। “06” “ਡਿਵਾਈਸ ਦੀ ਕਿਸਮ” ਹੈ, ਜਿਵੇਂ ਕਿ ਮੋਟਰ, LED, ਬਜ਼ਰ ਅਤੇ ਹੋਰ। ਇੱਥੇ 06 ਪ੍ਰਸਾਰਣ ਗਤੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਅਤੇ 05 ਪ੍ਰਸਾਰਣ ਦਿਸ਼ਾ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। “50 (ਜਾਂ 0050)” ਕੰਟਰੋਲ ਕਰਨ ਵਾਲਾ ਡੇਟਾ ਹੈ, ਹੈਕਸਾਡੈਸੀਮਲ ਵਿੱਚ 0x50 ਜਦੋਂ ਬਾਈਨਰੀ ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ 80 ਹੁੰਦਾ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਸਪੀਡ ਦਾ ਮੁੱਲ 80 ਹੁੰਦਾ ਹੈ। ਜੇਕਰ ਡੇਟਾ 05 ਹੈ, ਤਾਂ ਇਸਦਾ ਮਤਲਬ ਕੰਟਰੋਲਿੰਗ ਦਿਸ਼ਾ ਹੈ, ਜੋ ਕਿ 80 ਡਿਗਰੀ (ਅੱਗੇ) ਹੈ। “005F” ਇੱਕ ਚੈਕਸਮ ਹੈ ਜੋ 0x07+0x01+0x01+0x06+0x50=0x5F ਹੈ। "55" ਪ੍ਰੋਟੋਕੋਲ ਦਾ ਅੰਤ ਕੋਡ ਹੈ, ਜੋ ਡੇਟਾ ਟ੍ਰਾਂਸਫਰ ਦੇ ਅੰਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
49

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ

ਵਿਆਪਕ ਪ੍ਰਯੋਗ

8.1 Nrf24L01 ਵਾਇਰਲੈੱਸ ਕੰਟਰੋਲ
8.1.1 ਸੰਕੇਤ ਨਿਯੰਤਰਣ Hummer-bot ਸਮਾਰਟ ਕਾਰ ਪਿਛਲੇ ਅਧਿਆਇ ਦੀ ਕਨੈਕਸ਼ਨ ਲਾਈਨ ਦੇ ਅਨੁਸਾਰ ਕਨੈਕਟ ਕਰੋ, ਫਿਰ 9v ਡਰਾਈ ਬੈਟਰੀ ਨੂੰ ਇਸ ਨਾਲ ਕਨੈਕਟ ਕਰੋ
Arduino NANO, ਅਤੇ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰੋ. ਪਾਵਰ-ਆਨ ਤੋਂ ਬਾਅਦ, Nrf24L01 ਮੋਡੀਊਲ Hummer-Bot Nrf24L01 ਨੂੰ ਡੇਟਾ ਭੇਜਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਹਮਰ-ਬੋਟ ਮਲਟੀ-ਫੰਕਸ਼ਨ ਕਾਰ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਦਸਤਾਨੇ ਦੀ ਸਥਿਤੀ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਸਪੋਰਟਸ ਦਸਤਾਨੇ ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ ਕਾਰ ਦਾ ਜਨਮ ਹੁੰਦਾ ਹੈ!
50

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
ਚਿੱਤਰ 28: ਹੇਠਲੇ ਕੰਪਿਊਟਰ ਦਾ ਸੰਕੇਤ ਨਿਯੰਤਰਣ ਹਮਰ-ਬੋਟ ਪ੍ਰੋਗਰਾਮ ਲਿੰਕ: https://github.com/keywish/keywish-hummer-bot-Hummer-Bot-Multi-function ਕਾਰ ਖਰੀਦ ਲਿੰਕ ਐਮਾਜ਼ਾਨ 'ਤੇ ਖਰੀਦੋ
https://www.amazon.com/dp/B078WM15DK ਕੰਟਰੋਲ ਡੈਮੋ ਵੀਡੀਓ Gesture-MotionTrackingvideoControl_Hunner-bot.mp4 8.1.2 ਜੈਸਚਰ ਕੰਟਰੋਲ ਬੀਟਲ-ਬੋਟ ਸਮਾਰਟ ਕਾਰ
ਚਿੱਤਰ 29: ਬੀਟਲ-ਬੋਟ 'ਤੇ ਸੰਕੇਤ ਕੰਟਰੋਲ ਬੀਟਲ-ਬੋਟ ਜਾਣਕਾਰੀ https://github.com/keywish/keywish-beetle-bot
51

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
8.2 ਬਲੂਟੁੱਥ ਸੰਚਾਰ ਮੋਡ ਕੰਟਰੋਲ
ਬਲੂਟੁੱਥ ਕੇਬਲ ਦੇ ਅਨੁਸਾਰ ਕਨੈਕਟ ਕਰੋ, ਫਿਰ 9v ਡਰਾਈ ਬੈਟਰੀ ਨੂੰ Arduino NANO ਨਾਲ ਕਨੈਕਟ ਕਰੋ ਅਤੇ ਪ੍ਰੋਗਰਾਮ (MotionTrackLessonMotionTrack_Bluetooth MotionTrack_Bluetooth.ino) ਨੂੰ ਡਾਊਨਲੋਡ ਕਰੋ। ਨੋਟ ਕਰੋ ਕਿ ਤੁਹਾਨੂੰ ਹੇਠਲੇ ਕੰਪਿਊਟਰ ਦੇ ਬਲੂਟੁੱਥ ਦੇ MAC ਐਡਰੈੱਸ ਨੂੰ ਸੋਧਣ ਦੀ ਲੋੜ ਹੈ। ਪਾਵਰ-ਆਨ ਤੋਂ ਬਾਅਦ, ਸਪੋਰਟਸ ਗਲੋਵ ਕਾਰ ਦੇ ਬਲੂਟੁੱਥ ਮੋਡੀਊਲ ਨਾਲ ਆਪਣੇ ਆਪ ਜੁੜ ਜਾਂਦੇ ਹਨ।
52

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
8.2.1 ਜੈਸਚਰ ਕੰਟਰੋਲ ਔਰੋਰਾ-ਰੇਸਿੰਗ
ਚਿੱਤਰ 30: ਜੈਸਚਰ ਕੰਟਰੋਲ ਅਰੋਰਾ-ਰੇਸਿੰਗ ਉਤਪਾਦ ਜਾਣਕਾਰੀ: https://github.com/keywish/Aurora-Racing ਉਤਪਾਦਨ ਵੀਡੀਓ: giteeMotionTrackvideo Control_RacingCar.mp4
53

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
8.2.2 ਜੈਸਚਰ ਕੰਟਰੋਲ ਪੈਂਥਰ-ਟੈਂਕ
ਚਿੱਤਰ 31: ਪੈਂਥਰ-ਟੈਂਕ ਉਤਪਾਦਨ ਸਮੱਗਰੀ ਲਈ ਜੈਸਚਰ ਕੰਟਰੋਲ ਪਾਥਰ-ਟੈਂਕ, ਕਿਰਪਾ ਕਰਕੇ ਵੇਖੋ। https://github.com/keywish/keywish-panther-tank
54

ਤੁਹਾਨੂੰ ਆਦਰਸ਼ ਮਜ਼ੇਦਾਰ ਬਣਾਓ
8.2.3 ਇਸ਼ਾਰਾ ਨਿਯੰਤਰਣ ਸੰਤੁਲਨ ਕਾਰ
ਚਿੱਤਰ 32: ਜੈਸਚਰ ਕੰਟਰੋਲ ਮਿੰਨੀ ਬੈਲੇਂਸ-ਕਾਰ ਬੈਲੇਂਸ ਉਤਪਾਦ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਵੇਖੋ https://github.com/keywish/mini-balance-car
55

ਦਸਤਾਵੇਜ਼ / ਸਰੋਤ

ਮੇਕਫਨ MPU6050 Arduino ਜੈਸਚਰ ਮੋਸ਼ਨ ਟਰੈਕਿੰਗ [pdf] ਹਦਾਇਤ ਮੈਨੂਅਲ
MPU6050 ਮੋਡੀਊਲ, JDY-16 ਬਲੂਟੁੱਥ ਮੋਡੀਊਲ, NRF24L01 ਮੋਡੀਊਲ, MPU6050 Arduino ਜੈਸਚਰ ਮੋਸ਼ਨ ਟਰੈਕਿੰਗ, MPU6050, Arduino ਜੈਸਚਰ ਮੋਸ਼ਨ ਟਰੈਕਿੰਗ, ਜੈਸਚਰ ਮੋਸ਼ਨ ਟਰੈਕਿੰਗ, ਮੋਸ਼ਨ ਟ੍ਰੈਕਿੰਗ, ਟ੍ਰੈਕਿੰਗ

ਹਵਾਲੇ

ਇੱਕ ਟਿੱਪਣੀ ਛੱਡੋ

ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਪ੍ਰਕਾਸ਼ਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ। ਲੋੜੀਂਦੇ ਖੇਤਰਾਂ ਨੂੰ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਗਿਆ ਹੈ *