رباتیک و هوافضا

راه اندازی ماژول جی پی اس با رزبری پای

راه اندازی ماژول جی پی اس با رزبری پای

به نام خدا

راه اندازی ماژول جی پی اس با رزبری پای

راه اندازی ماژول جی پی اس با رزبری پای

 

در این پروژه راه اندازی ماژول جی پی اس به وسیله رزبری پای ۳ را یاد خواهیم گرفت. هدف اصلی این پروژه دریافت مختصات از ماژول جی پی اس از طریق UART و نمایش آن روی نمایشگر ۱۶×۲ می باشد.

 

قطعات مورد نیاز:

  • رزبری پای ۳
  • ماژول GPS
  • نمایشگر LCD ۱۶×۲
  • منبع تغذیه برای رزبری پای
  • کابل LAN
  • برد بورد و سیم برد بورد
  • مقاومت یا پتانسیومتر برای LCD
  • کارت حافظه ۸ گیگ یا ۱۶ گیگ با Raspbian Jessie

علاوه بر این ما باید کتابخانه  (GPS Daemon (GPSD و ۱۶×۲  LCD Adafruit را نصب کنیم. در اینجا از رزبری پای ۳ با سیستم عامل Raspbian Jessie استفاده شده.

ماژول GPS و طرز کار ان:

GPS مخفف سیستم موقعیت یابی جهانی (Global Positioning System) و برای پیدا کردن طول و عرض جغرافیایی به صورت دقیق است. GPS قطعه اصلی در سیستم ردیاب ماشین ها است. این ماژول در هر ثانیه مختصات را همراه با زمان و روز دریافت می کند.

ماژول GPS اطلاعات مربوط به مختصات را در هر لحظه دریافت می کند. این اطلاعات در فرمت NMEA فرستاده می شود(مانند عکس زیر) .فرمت NMEA از چندین جمله تشکیل شده که ما فقط یکی از ان ها را لازم داریم.جمله مورد نیاز ما با $GPGGA شروع می شود و شامل مختصات ، زمان و اطلاعات لازم دیگری است. GPGGA مخفف سیستم موقعیت یابی جهانی ثابت اطلاعات (Global Positioning System Fix Data) است.

بعد از پیدا کردن  $GPGGA و ذخیره آن در یک آرایه، میتوانیم عرض جغرافیایی را بعد از دو کاما و طول جغرافیایی را بعد چهار  کاما پیدا کنیم. با کپی کردن این اطلاعات در آرایه دیگر می توانیم در هر جایی از انها استفاده کنیم.

راه اندازی ماژول جی پی اس با رزبری پای

در زیر یک رشته $GPGGA را می بینیم:

$GPGGA,104534.000,7791.0381,N,06727.4434,E,1,08,0.9,510.4,M,43.9,M,,*47

$GPGGA,HHMMSS.SSS,latitude,N,longitude,E,FQ,NOS,HDP,altitude,M,height,M,,checksum data

Identifier

Description

$GPGGA

Global Positioning system fix data

HHMMSS.SSS

Time in hour minute seconds and milliseconds format.

Latitude

(Latitude (Coordinate

N

Direction N=North, S=South

Longitude

(Longitude(Coordinate

E

Direction E= East, W=West

FQ

Fix Quality Data

NOS

No. of Satellites being Used

HPD

Horizontal Dilution of Precision

Altitude

Altitude from sea level

M

Meter

Height

Height

Checksum

Checksum Data

آماده سازی ارتباط بین GPS و رزبری پای:

ابتدا باید UART را برای ارتباط GPS  و رزبری پای اماده کنیم. این اماده سازی سخت ترین قسمت این آموزش است ممکن است چند بار دستورات گفته شده را تکرار کنید تا نتیجه دلخواه بگیرید.

بیشتر بخوانید...  آموزش پروژه محور رسپبری پای – جلسه پنجم کار با PWM

راه اندازی ماژول جی پی اس با رزبری پای

رزبری پای دو واحد UART دارد یکی PL011 و دیگری mini UART.آنها با استفاده از بلوک های سخت افزای مختلف اجرا می شوند و ویژگی هایشان کمی متفاوت است. ماژول های بی سیم و بلوتوث به PLO11 UART وصل می شوند و از mini UART برای ارتباط با کنسول لینوکس استفاده می شود. در این جا ما ماژول بلوتوث را PLO11 UART جدا کرده(به وسیله کد) و از این UART برای GPS استفاده می کنیم.

مر حله ۱ : بروزرسانی رزبری پای

قبل از هر کاری رزبری پای را بروزرسانی می کنیم. دستورات زیر را اجرا کنید

sudo apt-get update
sudo apt-get upgrade

سپس سیستم را به وسیله کد زیر ریبوت می کنیم:

sudo reboot

مرحله ۲:تنظیم UART

برای تنظیم UART باید در فایل /boot/config.txt تغییراتی ایجاد کنیم.دستور زیر را اجرا کنید.

sudo nano /boot/config.txt

در اخر فایل config.txt کد های زیر را اضافه کنید.

dtparam=spi=on
dtoverlay=pi3-disable-bt
core_freq=250
enable_uart=1
force_turbo=1

از ctrl+x برای خارج شدن و Y برای ذخیره استفاده کنید.

راه اندازی ماژول جی پی اس با رزبری پای

 مطمئن شوید که هیچ اروری دریافت نکردید.

force_turbo برای فعال سازی UART در بالاترین فرکانس هسته می باشد که در اینجا ۲۵۰ است.برای این که اطلاعات دریافت شده از ماژول اشتباه نشود از این فرکانس استفاده می  شود. در نظر داشته باشید که با وارد کردن force_turbo=1  ضمانت نامه رزبری پای از بین می رود اما در عوض این کار مطمئن تر است.

 دستور dtoverlay=pi3-disable-bt بلوتوث را قطع می کند و به ما اجازه می دهد که از تمام قدرت UART استفاده کنیم.

سپس باید boot/cmdline.txt را تغییر دهیم، پیشنهاد می شود قبل از تغییر این فایل یک کپی از ان گرفته شود تا در آینده اگر لازم شد به حالت اولش باز گردانیم.دستورات زیر برای کپی گرفتن از فایل است.

sudo cp boot/cmdline.txt boot/cmdline_backup.txt
sudo nano /boot.cmdline.txt

 خطوط زیر را جایگزین خطوط فایل cmdline.txt کنید

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

 فایل را ذخیره کنید و خارج شوید. سپس ریستارت کنید (sudo reboot)

مرحله ۳ : غیر فعال کردن سریال Getty رزبری پای

دستورات زیر را برای غیر فعال کردن سریال Getty رزبری پای اجرا کنید و سپس ریستارت کنید.
sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service

 دستورات زیر برای فعال سازی مجدد این سرویس در صورت نیاز است

sudo systemctl enable serial-getty@ttyS0.service
sudo systemctl start serial-getty@ttyS0.service

مرحله ۴: فعال سازی ttyAMAO

این کد ttyAMAO را فعال می کند

sudo systemctl enable serial-getty@ttyAMA0.service

مرحله۵: نصب Minicom و pynmea2

ما به وسیله Minicom به ماژول GPS وصل می شویم. همچنین GPS را با Minicom تست می کنیم.

sudo apt-get install minicom

برای جدا سازی اطلاعات از کتابخانه pynmea2 استفاده می کنیم دستورات زیر برای نصب pynmea2 است.

sudo pip install pynmea2

 لینک pynmea2 کتابخانه

بیشتر بخوانید...  شرح چند دستور مفید رزبری پای

دانلود فایل

مرحله ۶: نصب کتابخانه LCD

در این اموزش از کتابخانه AdaFruit برای LCD استفاده شده است،دستور زیر را اجرا کنید.

git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git

سپس دستورات زیر را اجرا کنید.

cd ./Adafruit_Python_CharLCD
sudo python setup.py install

در اخر پیشنهاد می شود سیستم را ریبوت کنید سپس قطعات را به یکدیگر متصل کنید.

اتصالات بین رزبری پای و GPS:

اتصالات بین رزبری پای و GPS را در زیر می بینید.

راه اندازی ماژول جی پی اس با رزبری پای

تست مدار:

قبل از اجرای دستورات python بهتر است تا ماژول GPS را با minicom تست کنیم.

sudo minicom -D/dev/ttyAMA0 -b9600
این تست را می توانیم به وسیله cat هم انجام دهیم.
sudo cat /dev/ttyAMA0

راه اندازی ماژول جی پی اس با رزبری پای

 در بالا جملات NMEA را که قبلا در باره شان صحبت شد دیده می شود.

 کد های پایتون را در  اخر پست می بینید.

بعد از انجام تمام کارهای گفته شده، وقت آن رسیده که همه سیستم را تست کنیم.

دانلود کد  راه اندازی ماژول جی پی اس با رزبری پای:

دانلود فایل
import time
import serial
import string
import pynmea2
import RPi GPIO as gpio
#to add the LCD library
import Adafruit_CharLCD as LCD
 
gpio.setmode(gpio.BCM)
 
#declaring LCD pins
lcd_rs = 17
lcd_en = 18
lcd_d4 = 27
lcd_d5 = 22
lcd_d6 = 23
lcd_d7 = 10
 
lcd_backlight = 2
 
lcd_columns = 16 #Lcd column
lcd_rows = 2 #number of LCD rows
 
lcd = LCD.Adafruit_CharLCD(lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight)
 
port = "/dev/ttyAMA0" # the serial port to which the pi is connected.
 
#create a serial object
ser = serial.Serial(port, baudrate = 9600, timeout = 0.5)
 
while 1:
    try:
        data = ser.readline()
    except:
print("loading") 
#wait for the serial port to churn out data
 
    if data[0:6] == '$GPGGA': # the long and lat data are always contained in the GPGGA string of the NMEA data
 
        msg = pynmea2.parse(data)
 
#parse the latitude and print
        latval = msg.lat
concatlat = "lat:" + str(latval)
        print concatlat
lcd.set_cursor(0,0)
lcd.message(concatlat)
 
#parse the longitude and print
longval = msg.lon
concatlong = "long:"+ str(longval)
print concatlong
lcd.set_cursor(0,1)
lcd.message(concatlong)
           
    time.sleep(0.5)#wait a little before picking the next data.

 

 

دیدگاه‌ها (0)

*
*