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/id/3-transport/lessons/1-location-tracking/pi-gps-sensor.md

8.5 KiB

Membaca Data GPS - Raspberry Pi

Dalam bagian pelajaran ini, Anda akan menambahkan sensor GPS ke Raspberry Pi dan membaca nilai-nilai darinya.

Perangkat Keras

Raspberry Pi membutuhkan sensor GPS.

Sensor yang akan Anda gunakan adalah Grove GPS Air530 sensor. Sensor ini dapat terhubung ke beberapa sistem GPS untuk mendapatkan posisi yang cepat dan akurat. Sensor ini terdiri dari 2 bagian - komponen inti elektronik sensor, dan antena eksternal yang terhubung dengan kabel tipis untuk menangkap gelombang radio dari satelit.

Ini adalah sensor UART, sehingga mengirimkan data GPS melalui UART.

Menghubungkan Sensor GPS

Sensor GPS Grove dapat dihubungkan ke Raspberry Pi.

Tugas - Menghubungkan Sensor GPS

Hubungkan sensor GPS.

Sensor GPS Grove

  1. Masukkan salah satu ujung kabel Grove ke soket pada sensor GPS. Kabel ini hanya dapat masuk dengan satu arah.

  2. Dengan Raspberry Pi dalam keadaan mati, hubungkan ujung lain kabel Grove ke soket UART yang ditandai UART pada Grove Base hat yang terpasang di Pi. Soket ini berada di baris tengah, di sisi yang paling dekat dengan slot kartu SD, ujung yang berlawanan dari port USB dan soket ethernet.

    Sensor GPS Grove terhubung ke soket UART

  3. Posisikan sensor GPS sehingga antena yang terpasang memiliki visibilitas ke langit - idealnya di dekat jendela yang terbuka atau di luar ruangan. Sinyal akan lebih jelas jika tidak ada penghalang di sekitar antena.

Memprogram Sensor GPS

Raspberry Pi sekarang dapat diprogram untuk menggunakan sensor GPS yang terpasang.

Tugas - Memprogram Sensor GPS

Program perangkat.

  1. Nyalakan Pi dan tunggu hingga selesai booting.

  2. Sensor GPS memiliki 2 LED - LED biru yang berkedip saat data dikirimkan, dan LED hijau yang berkedip setiap detik saat menerima data dari satelit. Pastikan LED biru berkedip saat Anda menyalakan Pi. Setelah beberapa menit, LED hijau akan mulai berkedip - jika tidak, Anda mungkin perlu memposisikan ulang antena.

  3. Luncurkan VS Code, baik langsung di Pi, atau sambungkan melalui ekstensi Remote SSH.

    ⚠️ Anda dapat merujuk ke instruksi untuk mengatur dan meluncurkan VS Code di pelajaran 1 jika diperlukan.

  4. Dengan versi Raspberry Pi yang lebih baru yang mendukung Bluetooth, terdapat konflik antara port serial yang digunakan untuk Bluetooth dan yang digunakan oleh port Grove UART. Untuk mengatasi ini, lakukan langkah-langkah berikut:

    1. Dari terminal VS Code, edit file /boot/config.txt menggunakan nano, editor teks bawaan terminal, dengan perintah berikut:

      sudo nano /boot/config.txt
      

      File ini tidak dapat diedit oleh VS Code karena Anda perlu mengeditnya dengan izin sudo, yaitu izin yang lebih tinggi. VS Code tidak berjalan dengan izin ini.

    2. Gunakan tombol panah untuk menavigasi ke akhir file, lalu salin kode di bawah ini dan tempelkan di akhir file:

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

      Anda dapat menempelkan menggunakan pintasan keyboard normal untuk perangkat Anda (Ctrl+v di Windows, Linux, atau Raspberry Pi OS, Cmd+v di macOS).

    3. Simpan file ini dan keluar dari nano dengan menekan Ctrl+x. Tekan y saat ditanya apakah Anda ingin menyimpan buffer yang telah dimodifikasi, lalu tekan enter untuk mengonfirmasi bahwa Anda ingin menimpa /boot/config.txt.

      Jika Anda membuat kesalahan, Anda dapat keluar tanpa menyimpan, lalu ulangi langkah-langkah ini.

    4. Edit file /boot/cmdline.txt di nano dengan perintah berikut:

      sudo nano /boot/cmdline.txt
      
    5. File ini memiliki sejumlah pasangan kunci/nilai yang dipisahkan oleh spasi. Hapus pasangan kunci/nilai untuk kunci console. Mereka mungkin terlihat seperti ini:

      console=serial0,115200 console=tty1 
      

      Anda dapat menavigasi ke entri ini menggunakan tombol panah, lalu menghapusnya menggunakan tombol del atau backspace.

      Sebagai contoh, jika file asli Anda terlihat seperti ini:

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

      Versi baru akan menjadi:

      root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
      
    6. Ikuti langkah-langkah di atas untuk menyimpan file ini dan keluar dari nano.

    7. Restart Pi Anda, lalu sambungkan kembali di VS Code setelah Pi selesai reboot.

  5. Dari terminal, buat folder baru di direktori home pengguna pi bernama gps-sensor. Buat file di folder ini bernama app.py.

  6. Buka folder ini di VS Code.

  7. Modul GPS mengirimkan data UART melalui port serial. Instal paket Pip pyserial untuk berkomunikasi dengan port serial dari kode Python Anda:

    pip3 install pyserial
    
  8. Tambahkan kode berikut ke file app.py Anda:

    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)
    

    Kode ini mengimpor modul serial dari paket Pip pyserial. Kemudian terhubung ke port serial /dev/ttyAMA0 - ini adalah alamat port serial yang digunakan oleh Grove Pi Base Hat untuk port UART-nya. Kode ini kemudian membersihkan data yang ada dari koneksi serial ini.

    Selanjutnya, sebuah fungsi bernama print_gps_data didefinisikan yang mencetak baris yang diteruskan kepadanya ke konsol.

    Kemudian kode ini melakukan loop selamanya, membaca sebanyak mungkin baris teks dari port serial dalam setiap loop. Kode ini memanggil fungsi print_gps_data untuk setiap baris.

    Setelah semua data dibaca, loop akan tidur selama 1 detik, lalu mencoba lagi.

  9. Jalankan kode ini. Anda akan melihat output mentah dari sensor GPS, sesuatu seperti berikut:

    $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
    

    Jika Anda mendapatkan salah satu dari kesalahan berikut saat menghentikan dan memulai ulang kode Anda, tambahkan blok try - except ke dalam loop while Anda.

    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)
    

💁 Anda dapat menemukan kode ini di folder code-gps/pi.

😀 Program sensor GPS Anda berhasil!


Penafian:
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI Co-op Translator. Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.