You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/pa/3-transport/lessons/1-location-tracking/pi-gps-sensor.md

15 KiB

ਰਾਸਪਬੇਰੀ ਪਾਈ 'ਤੇ GPS ਡਾਟਾ ਪੜ੍ਹੋ

ਇਸ ਪਾਠ ਦੇ ਇਸ ਭਾਗ ਵਿੱਚ, ਤੁਸੀਂ ਆਪਣੇ ਰਾਸਪਬੇਰੀ ਪਾਈ ਨਾਲ ਇੱਕ GPS ਸੈਂਸਰ ਜੋੜੋਗੇ ਅਤੇ ਇਸ ਤੋਂ ਮੁੱਲ ਪੜ੍ਹੋਗੇ।

ਹਾਰਡਵੇਅਰ

ਰਾਸਪਬੇਰੀ ਪਾਈ ਨੂੰ ਇੱਕ GPS ਸੈਂਸਰ ਦੀ ਲੋੜ ਹੈ।

ਤੁਸੀਂ ਜੋ ਸੈਂਸਰ ਵਰਤੋਗੇ ਉਹ ਹੈ Grove GPS Air530 ਸੈਂਸਰ। ਇਹ ਸੈਂਸਰ ਕਈ GPS ਸਿਸਟਮਾਂ ਨਾਲ ਜੁੜ ਸਕਦਾ ਹੈ ਅਤੇ ਤੇਜ਼, ਸਹੀ ਸਥਿਤੀ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਸੈਂਸਰ ਦੋ ਹਿੱਸਿਆਂ ਤੋਂ ਬਣਿਆ ਹੈ - ਸੈਂਸਰ ਦੀ ਮੁੱਖ ਇਲੈਕਟ੍ਰਾਨਿਕਸ ਅਤੇ ਇੱਕ ਬਾਹਰੀ ਐਂਟੇਨਾ ਜੋ ਪਤਲੇ ਤਾਰ ਨਾਲ ਜੁੜਿਆ ਹੈ, ਜੋ ਉਪਗ੍ਰਹਾਂ ਤੋਂ ਰੇਡੀਓ ਤਰੰਗਾਂ ਨੂੰ ਪਕੜਦਾ ਹੈ।

ਇਹ ਇੱਕ UART ਸੈਂਸਰ ਹੈ, ਇਸ ਲਈ ਇਹ GPS ਡਾਟਾ UART ਰਾਹੀਂ ਭੇਜਦਾ ਹੈ।

GPS ਸੈਂਸਰ ਨੂੰ ਜੁੜੋ

Grove GPS ਸੈਂਸਰ ਨੂੰ ਰਾਸਪਬੇਰੀ ਪਾਈ ਨਾਲ ਜੋੜਿਆ ਜਾ ਸਕਦਾ ਹੈ।

ਕੰਮ - GPS ਸੈਂਸਰ ਨੂੰ ਜੁੜੋ

GPS ਸੈਂਸਰ ਨੂੰ ਜੁੜੋ।

Grove GPS ਸੈਂਸਰ

  1. Grove ਕੇਬਲ ਦੇ ਇੱਕ ਸਿਰੇ ਨੂੰ GPS ਸੈਂਸਰ ਦੇ ਸਾਕਟ ਵਿੱਚ ਪਾਓ। ਇਹ ਸਿਰਫ ਇੱਕ ਹੀ ਦਿਸ਼ਾ ਵਿੱਚ ਜਾਵੇਗਾ।

  2. ਰਾਸਪਬੇਰੀ ਪਾਈ ਨੂੰ ਬੰਦ ਰੱਖਦੇ ਹੋਏ, Grove ਕੇਬਲ ਦੇ ਦੂਜੇ ਸਿਰੇ ਨੂੰ Grove ਬੇਸ ਹੈਟ ਦੇ UART ਸਾਕਟ ਵਿੱਚ ਪਾਓ। ਇਹ ਸਾਕਟ ਮੱਧਲੀ ਲਾਈਨ ਵਿੱਚ ਹੈ, SD ਕਾਰਡ ਸਲਾਟ ਦੇ ਨੇੜੇ, USB ਪੋਰਟ ਅਤੇ ਈਥਰਨੈਟ ਸਾਕਟ ਦੇ ਵਿਰੋਧੀ ਪਾਸੇ।

    Grove GPS ਸੈਂਸਰ UART ਸਾਕਟ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ

  3. GPS ਸੈਂਸਰ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਰੱਖੋ ਕਿ ਜੁੜਿਆ ਐਂਟੇਨਾ ਆਕਾਸ਼ ਨੂੰ ਵੇਖ ਸਕੇ - ਵਧੀਆ ਤੌਰ 'ਤੇ ਖੁੱਲ੍ਹੀ ਖਿੜਕੀ ਦੇ ਨੇੜੇ ਜਾਂ ਬਾਹਰ। ਐਂਟੇਨਾ ਦੇ ਰਾਹ ਵਿੱਚ ਕੁਝ ਨਾ ਹੋਵੇ ਤਾਂ ਸਿਗਨਲ ਸਾਫ਼ ਹੋਣਾ ਆਸਾਨ ਹੁੰਦਾ ਹੈ।

GPS ਸੈਂਸਰ ਨੂੰ ਪ੍ਰੋਗਰਾਮ ਕਰੋ

ਹੁਣ ਰਾਸਪਬੇਰੀ ਪਾਈ ਨੂੰ ਜੁੜੇ GPS ਸੈਂਸਰ ਨੂੰ ਵਰਤਣ ਲਈ ਪ੍ਰੋਗਰਾਮ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਕੰਮ - GPS ਸੈਂਸਰ ਨੂੰ ਪ੍ਰੋਗਰਾਮ ਕਰੋ

ਜੰਤਰ ਨੂੰ ਪ੍ਰੋਗਰਾਮ ਕਰੋ।

  1. ਪਾਈ ਨੂੰ ਚਾਲੂ ਕਰੋ ਅਤੇ ਇਸ ਦੇ ਬੂਟ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰੋ।

  2. GPS ਸੈਂਸਰ ਵਿੱਚ 2 LED ਹਨ - ਇੱਕ ਨੀਲਾ LED ਜੋ ਡਾਟਾ ਭੇਜਣ ਵੇਲੇ ਚਮਕਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਹਰਾ LED ਜੋ ਉਪਗ੍ਰਹਾਂ ਤੋਂ ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਵੇਲੇ ਹਰ ਸਕਿੰਟ ਚਮਕਦਾ ਹੈ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਜਦੋਂ ਤੁਸੀਂ ਪਾਈ ਚਾਲੂ ਕਰਦੇ ਹੋ ਤਾਂ ਨੀਲਾ LED ਚਮਕ ਰਿਹਾ ਹੈ। ਕੁਝ ਮਿੰਟਾਂ ਬਾਅਦ ਹਰਾ LED ਚਮਕੇਗਾ - ਜੇ ਨਹੀਂ, ਤਾਂ ਤੁਹਾਨੂੰ ਐਂਟੇਨਾ ਨੂੰ ਦੁਬਾਰਾ ਸਥਿਤ ਕਰਨਾ ਪੈ ਸਕਦਾ ਹੈ।

  3. VS Code ਲਾਂਚ ਕਰੋ, ਚਾਹੇ ਸਿੱਧੇ ਪਾਈ 'ਤੇ ਜਾਂ ਰਿਮੋਟ SSH ਐਕਸਟੈਂਸ਼ਨ ਰਾਹੀਂ ਜੁੜ ਕੇ।

    ⚠️ ਤੁਸੀਂ ਪਾਠ 1 ਵਿੱਚ VS Code ਸੈਟਅੱਪ ਅਤੇ ਲਾਂਚ ਕਰਨ ਦੇ ਨਿਰਦੇਸ਼ਾਂ ਨੂੰ ਵੇਖ ਸਕਦੇ ਹੋ ਜੇ ਲੋੜ ਹੋਵੇ।

  4. ਨਵੀਂ ਰਾਸਪਬੇਰੀ ਪਾਈ ਵਰਜਨਾਂ ਵਿੱਚ ਜੋ ਬਲੂਟੂਥ ਦਾ ਸਮਰਥਨ ਕਰਦੀਆਂ ਹਨ, ਬਲੂਟੂਥ ਲਈ ਵਰਤੇ ਗਏ ਸੀਰੀਅਲ ਪੋਰਟ ਅਤੇ Grove UART ਪੋਰਟ ਲਈ ਵਰਤੇ ਗਏ ਸੀਰੀਅਲ ਪੋਰਟ ਵਿੱਚ ਟਕਰਾਵ ਹੁੰਦਾ ਹੈ। ਇਸ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ, ਹੇਠਾਂ ਦਿੱਤੇ ਕਦਮ ਕਰੋ:

    1. VS Code ਟਰਮੀਨਲ ਤੋਂ, /boot/config.txt ਫਾਈਲ ਨੂੰ nano ਨਾਲ ਸੋਧੋ, ਜੋ ਇੱਕ ਬਿਲਟ-ਇਨ ਟਰਮੀਨਲ ਟੈਕਸਟ ਐਡੀਟਰ ਹੈ, ਹੇਠਾਂ ਦਿੱਤੇ ਕਮਾਂਡ ਨਾਲ:

      sudo nano /boot/config.txt
      

      ਇਹ ਫਾਈਲ VS Code ਦੁਆਰਾ ਸੋਧੀ ਨਹੀਂ ਜਾ ਸਕਦੀ ਕਿਉਂਕਿ ਤੁਹਾਨੂੰ ਇਸਨੂੰ sudo ਅਧਿਕਾਰਾਂ ਨਾਲ ਸੋਧਣ ਦੀ ਲੋੜ ਹੈ। VS Code ਇਹ ਅਧਿਕਾਰ ਨਹੀਂ ਚਲਾਉਂਦਾ।

    2. ਆਪਣੇ ਕਰਸਰ ਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਫਾਈਲ ਦੇ ਅੰਤ ਵਿੱਚ ਜਾਓ। ਫਿਰ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਕਾਪੀ ਕਰੋ ਅਤੇ ਫਾਈਲ ਦੇ ਅੰਤ ਵਿੱਚ ਪੇਸਟ ਕਰੋ:

      dtoverlay=pi3-miniuart-bt
      dtoverlay=pi3-disable-bt
      enable_uart=1
      

      ਤੁਸੀਂ ਆਪਣੇ ਜੰਤਰ ਦੇ ਆਮ ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪੇਸਟ ਕਰ ਸਕਦੇ ਹੋ (Windows, Linux ਜਾਂ Raspberry Pi OS 'ਤੇ Ctrl+v, macOS 'ਤੇ Cmd+v)।

    3. ਇਸ ਫਾਈਲ ਨੂੰ ਸੇਵ ਕਰੋ ਅਤੇ Ctrl+x ਦਬਾ ਕੇ ਨੈਨੋ ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ। ਜਦੋਂ ਤੁਹਾਨੂੰ ਸੋਧੇ ਗਏ ਬਫਰ ਨੂੰ ਸੇਵ ਕਰਨ ਲਈ ਪੁੱਛਿਆ ਜਾਵੇ, ਤਾਂ y ਦਬਾਓ, ਫਿਰ /boot/config.txt ਨੂੰ ਓਵਰਰਾਈਟ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ enter ਦਬਾਓ।

      ਜੇ ਤੁਸੀਂ ਗਲਤੀ ਕਰਦੇ ਹੋ, ਤਾਂ ਬਿਨਾਂ ਸੇਵ ਕੀਤੇ ਬਾਹਰ ਨਿਕਲੋ, ਫਿਰ ਇਹ ਕਦਮ ਦੁਹਰਾਓ।

    4. /boot/cmdline.txt ਫਾਈਲ ਨੂੰ ਨੈਨੋ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਕਮਾਂਡ ਨਾਲ ਸੋਧੋ:

      sudo nano /boot/cmdline.txt
      
    5. ਇਸ ਫਾਈਲ ਵਿੱਚ ਕਈ ਕੁੰਜੀ/ਮੁੱਲ ਜੋੜੇ ਹਨ ਜੋ ਖਾਲੀ ਸਥਾਨਾਂ ਨਾਲ ਵੱਖਰੇ ਕੀਤੇ ਗਏ ਹਨ। ਕੁੰਜੀ console ਲਈ ਕੋਈ ਵੀ ਕੁੰਜੀ/ਮੁੱਲ ਜੋੜੇ ਹਟਾਓ। ਇਹ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਦੇਖਣ ਵਿੱਚ ਆ ਸਕਦੇ ਹਨ:

      console=serial0,115200 console=tty1 
      

      ਤੁਸੀਂ ਕਰਸਰ ਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਨ੍ਹਾਂ ਐਂਟਰੀਜ਼ 'ਤੇ ਜਾ ਸਕਦੇ ਹੋ, ਫਿਰ ਆਮ del ਜਾਂ backspace ਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹਟਾ ਸਕਦੇ ਹੋ।

      ਉਦਾਹਰਨ ਲਈ, ਜੇ ਤੁਹਾਡੀ ਮੂਲ ਫਾਈਲ ਇਸ ਤਰ੍ਹਾਂ ਲੱਗਦੀ ਹੈ:

      console=serial0,115200 console=tty1 root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
      

      ਨਵਾਂ ਸੰਸਕਰਣ ਇਸ ਤਰ੍ਹਾਂ ਹੋਵੇਗਾ:

      root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
      
    6. ਉਪਰੋਕਤ ਕਦਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ ਇਸ ਫਾਈਲ ਨੂੰ ਸੇਵ ਕਰਨ ਅਤੇ ਨੈਨੋ ਤੋਂ ਬਾਹਰ ਨਿਕਲਣ ਲਈ।

    7. ਆਪਣੀ ਪਾਈ ਨੂੰ ਰੀਬੂਟ ਕਰੋ, ਫਿਰ ਜਦੋਂ ਪਾਈ ਰੀਬੂਟ ਹੋ ਜਾਵੇ ਤਾਂ VS Code ਵਿੱਚ ਦੁਬਾਰਾ ਜੁੜੋ।

  5. ਟਰਮੀਨਲ ਤੋਂ, pi ਯੂਜ਼ਰ ਦੇ ਹੋਮ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਇੱਕ ਨਵਾਂ ਫੋਲਡਰ ਬਣਾਓ ਜਿਸਦਾ ਨਾਮ gps-sensor ਰੱਖੋ। ਇਸ ਫੋਲਡਰ ਵਿੱਚ ਇੱਕ ਫਾਈਲ ਬਣਾਓ ਜਿਸਦਾ ਨਾਮ app.py ਰੱਖੋ।

  6. ਇਸ ਫੋਲਡਰ ਨੂੰ VS Code ਵਿੱਚ ਖੋਲ੍ਹੋ।

  7. GPS ਮੋਡੀਊਲ ਸੀਰੀਅਲ ਪੋਰਟ ਰਾਹੀਂ UART ਡਾਟਾ ਭੇਜਦਾ ਹੈ। Python ਕੋਡ ਤੋਂ ਸੀਰੀਅਲ ਪੋਰਟ ਨਾਲ ਸੰਚਾਰ ਕਰਨ ਲਈ pyserial Pip ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰੋ:

    pip3 install pyserial
    
  8. ਆਪਣੇ app.py ਫਾਈਲ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:

    import time
    import serial
    
    serial = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
    serial.reset_input_buffer()
    serial.flush()
    
    def print_gps_data(line):
        print(line.rstrip())
    
    while True:
        line = serial.readline().decode('utf-8')
    
        while len(line) > 0:
            print_gps_data(line)
            line = serial.readline().decode('utf-8')
    
        time.sleep(1)
    

    ਇਹ ਕੋਡ pyserial Pip ਪੈਕੇਜ ਤੋਂ serial ਮੋਡੀਊਲ ਨੂੰ ਇੰਪੋਰਟ ਕਰਦਾ ਹੈ। ਫਿਰ ਇਹ /dev/ttyAMA0 ਸੀਰੀਅਲ ਪੋਰਟ ਨਾਲ ਜੁੜਦਾ ਹੈ - ਇਹ ਉਹ ਪਤਾ ਹੈ ਜੋ Grove Pi ਬੇਸ ਹੈਟ ਆਪਣੇ UART ਪੋਰਟ ਲਈ ਵਰਤਦਾ ਹੈ। ਫਿਰ ਇਹ ਇਸ ਸੀਰੀਅਲ ਕਨੈਕਸ਼ਨ ਤੋਂ ਮੌਜੂਦਾ ਡਾਟਾ ਨੂੰ ਸਾਫ ਕਰਦਾ ਹੈ।

    ਅਗਲਾ, ਇੱਕ ਫੰਕਸ਼ਨ print_gps_data ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੋ ਇਸਨੂੰ ਦਿੱਤੀ ਗਈ ਲਾਈਨ ਨੂੰ ਕੰਸੋਲ 'ਤੇ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ।

    ਅਗਲਾ, ਕੋਡ ਸਦਾ ਲਈ ਲੂਪ ਕਰਦਾ ਹੈ, ਹਰ ਲੂਪ ਵਿੱਚ ਸੀਰੀਅਲ ਪੋਰਟ ਤੋਂ ਜਿੰਨੀ ਲਾਈਨਾਂ ਪੜ੍ਹ ਸਕਦਾ ਹੈ ਪੜ੍ਹਦਾ ਹੈ। ਇਹ ਹਰ ਲਾਈਨ ਲਈ print_gps_data ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ।

    ਸਾਰੇ ਡਾਟਾ ਪੜ੍ਹਨ ਤੋਂ ਬਾਅਦ, ਲੂਪ 1 ਸਕਿੰਟ ਲਈ ਰੁਕਦਾ ਹੈ, ਫਿਰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ।

  9. ਇਸ ਕੋਡ ਨੂੰ ਚਲਾਓ। ਤੁਹਾਨੂੰ GPS ਸੈਂਸਰ ਤੋਂ ਕੱਚਾ ਆਉਟਪੁੱਟ ਵੇਖਣ ਨੂੰ ਮਿਲੇਗਾ, ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ:

    $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
    $GPGSA,A,1,,,,,,,,,,,,,,,*1E
    $BDGSA,A,1,,,,,,,,,,,,,,,*0F
    $GPGSV,1,1,00*79
    $BDGSV,1,1,00*68
    

    ਜੇ ਤੁਹਾਨੂੰ ਆਪਣਾ ਕੋਡ ਰੋਕਣ ਅਤੇ ਦੁਬਾਰਾ ਚਲਾਉਣ ਵੇਲੇ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਗਲਤੀਆਂ ਵਿੱਚੋਂ ਕੋਈ ਮਿਲੇ, ਤਾਂ ਆਪਣੇ while ਲੂਪ ਵਿੱਚ ਇੱਕ try - except ਬਲਾਕ ਸ਼ਾਮਲ ਕਰੋ।

    UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 0: invalid start byte
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 0: invalid continuation byte
    
    while True:
        try:
            line = serial.readline().decode('utf-8')
    
            while len(line) > 0:
                print_gps_data()
                line = serial.readline().decode('utf-8')
    
        # There's a random chance the first byte being read is part way through a character.
        # Read another full line and continue.
    
        except UnicodeDecodeError:
            line = serial.readline().decode('utf-8')
    
    time.sleep(1)
    

💁 ਤੁਸੀਂ ਇਹ ਕੋਡ code-gps/pi ਫੋਲਡਰ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ।

😀 ਤੁਹਾਡਾ GPS ਸੈਂਸਰ ਪ੍ਰੋਗਰਾਮ ਸਫਲ ਰਿਹਾ!


ਅਸਵੀਕਾਰਨਾ:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਨਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼, ਜੋ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਹੈ, ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।