ዝርዝር ሁኔታ:

የጂፒኤስ ስርዓት 7 ደረጃዎች
የጂፒኤስ ስርዓት 7 ደረጃዎች

ቪዲዮ: የጂፒኤስ ስርዓት 7 ደረጃዎች

ቪዲዮ: የጂፒኤስ ስርዓት 7 ደረጃዎች
ቪዲዮ: Top 5 Jobs In Ethiopia : 5 በኢትዮጲያ ከፍተኛ ደሞዝ ተከፋይ ስራዎች 2024, ጥቅምት
Anonim
የጂፒኤስ ስርዓት
የጂፒኤስ ስርዓት
የጂፒኤስ ስርዓት
የጂፒኤስ ስርዓት
የጂፒኤስ ስርዓት
የጂፒኤስ ስርዓት

የፕሮጀክት ፈጣሪ - ካርሎስ ጎሜዝ

ዓለምን ለመጓዝ እና ለማሰስ ለሚሞክር ሁሉ አስተማማኝ የአሰሳ ስርዓት መኖሩ በጣም አስፈላጊ ነው።

የአሰሳ ስርዓቱ እንዲሠራ የሚፈቅድ በጣም አስፈላጊው ገጽታ በስርዓቱ ውስጥ የተካተተው የጂፒኤስ ችሎታ ነው። የጂፒኤስ ስርዓቱ ስለ ተጠቃሚው ትክክለኛ መረጃን ለማሳየት እና ተጠቃሚው የት እንዳሉ እና ከአካባቢያቸው ምን ያህል እንደሚርቁ ትክክለኛ ውክልና ለመስጠት ማንም ሰው አካባቢያቸውን እና ፍጥነቱን እንዲከታተል ያስችለዋል።

ግሎባል የአቀማመጥ ስርዓት (ጂፒኤስ) በ 20,000 ኪ.ሜ ከፍታ ላይ ምድርን የሚዞሩ የሳተላይቶች አውታረ መረብ ነው። የጂፒኤስ መሣሪያ ያለው ማንኛውም ሰው ሳተላይቶች የሚያሰራጩትን የሬዲዮ ምልክቶችን ሊቀበል እና በሚፈለገው መንገድ ሊጠቀምባቸው ይችላል። በፕላኔቷ ላይ ያለዎት ቦታ ቢያንስ አራት ጂፒኤስ በማንኛውም ጊዜ ለእርስዎ ሊገኝ ይገባል። የጂፒኤስ መሣሪያ 3-ዲ ትሪታራላይዜሽን የሚባል ዘዴን በመጠቀም የመሣሪያውን መሬት በምድር ላይ ለመወሰን ሦስት ሳተላይቶችን መጠቀም ይችላል። እያንዳንዳቸው ሦስቱ ሳተላይቶች ወደ መሣሪያው ምልክት ይልኩ እና መሣሪያው ከሳተላይቱ ርቀቱን ይወስናል። እያንዳንዱን የሦስቱ የርቀት ስሌቶችን በመጠቀም መሣሪያው አሁን በምድር ላይ ያለበትን ቦታ ለመጥቀስ ይችላል እና ያንን ለተጠቃሚው ይመልሳል።

እኛ የምንፈጥረው የጂፒኤስ ስርዓት የተጠቃሚውን ሥፍራዎች ለመከታተል በምድር ላይ የተጠቃሚውን መጋጠሚያዎች በማግኘት እና የተወሰኑ ስሌቶችን በማድረግ የተጠቃሚውን ፍጥነት ፣ ቦታ እና የተሸፈነውን ርቀት ለመመለስ ይችላል።

ደረጃ 1: መጀመር

እንደ መጀመር
እንደ መጀመር
እንደ መጀመር
እንደ መጀመር
እንደ መጀመር
እንደ መጀመር
እንደ መጀመር
እንደ መጀመር

ይህንን ፕሮጀክት ለመጀመር በመጀመሪያ ሁሉንም ትክክለኛ ቁሳቁሶች መሰብሰብ ያስፈልገናል

1: Raspberry Pi Zero W

2: ጂፒኤስ ተቀባይ

3: 1.8 TFT 128 x 160 LCD SPI ማያ ገጽ

4: ~ 11 ሽቦዎች

5: 2 አዝራሮች

ለመውረድ አዝራሮች 6: 2x 1k እና 2x 10k resistors

7: የዳቦ ሰሌዳ

ይህ ፕሮጀክት የ Raspberry Pi's GPIO ፒኖችን ይጠቀማል እናም በዚህ መሠረት የእኛን ፕሮጀክት ለማዳበር ሁሉንም ነገር ከዳቦ ሰሌዳ ጋር ማገናኘት አለብን። እንዲሁም ሁሉንም ክፍሎቻችንን ከማስተላለፉ እና ከማገናኘቱ በፊት በሁሉም ካስማዎች ላይ የሽያጭ ሥራው እንደተከናወነ እና እንደተጠናቀቀ ይታሰባል።

ደረጃ 2 የጂፒኤስ ሞዱሉን ከ Raspberry Pi ጋር ያገናኙ

የጂፒኤስ ሞዱልን ከ Raspberry Pi ጋር ያገናኙ
የጂፒኤስ ሞዱልን ከ Raspberry Pi ጋር ያገናኙ
የጂፒኤስ ሞዱልን ከ Raspberry Pi ጋር ያገናኙ
የጂፒኤስ ሞዱልን ከ Raspberry Pi ጋር ያገናኙ

የእኛን የጂፒኤስ ስርዓት ለመጠቀም የ Tx እና Rx ፒኖችን ከጂፒኤስ ሞዱል ወደ ጂፒኦ ፒን 14 እና 15 በ Raspberry Pi ላይ ማገናኘት ያስፈልግዎታል። የጂፒኤስ መቀበያ Tx ፒን ወደ ፒኤክስ Rx ፒን እና የጂፒኤስ ተቀባዩ የ Rx ፒን ወደ Raspberry pi Tx ፒን ይሄዳል።

በምስሎቹ ላይ የሚታየው የጂፒኤስ መቀበያ 3.3 ቪ እንዲሠራ የሚፈልግ ሲሆን የ 3.3V ፒኖችን ከትክክለኛው ቮልቴጅ ጋር ማገናኘት ይችላሉ ፣ የከርሰ ምድርን ፒን ከመሬት ጋር ሲያገናኙ።

ደረጃ 3 መረጃን ከጂፒኤስ መቀበያ ሞዱል ይቀበሉ

መረጃን ከጂፒኤስ መቀበያ ሞዱል ይቀበሉ
መረጃን ከጂፒኤስ መቀበያ ሞዱል ይቀበሉ

ከጂፒኤስ ተቀባዩ ወደ Raspberry Pi መረጃን ለመቀበል ትክክለኛዎቹ ሶኬቶች ከ UART ወደቦች እንዲያነቡ መፍቀድ አለብን። ጥሬ ውሂቡን ማንበብ የራሳችንን የመተንተን ቤተመፃሕፍት እንድንፈጥር ይጠይቀናል ፣ ነገር ግን በዚህ ሁኔታ ውሂቡን ለመተንተን እና ወደ Raspberry Pi ለማስተላለፍ እንዲረዳ ከበስተጀርባ የሚሠራውን የጂፒኤስ ዴሞን መጠቀም እንችላለን።

ይህንን ለማሳካት በ Raspberry Pi ላይ ተርሚናል ከፍተን ኮዱን ማስፈጸም እንችላለን-

sudo apt-get ዝማኔ

sudo apt-get install gpsd gpsd- ደንበኛዎች Python-gps

ይህ ለእኛ ማውረዱን መንከባከብ አለበት።

አንዴ ከተጠናቀቀ የሚከተሉትን ትዕዛዞች በማሄድ የጂፒኤስ ስርዓትን አገልግሎት ማሰናከል አለብን።

sudo systemctl ማቆሚያ gpsd.socket

sudo systemctl gpsd.socket ን ያሰናክሉ

መቼም ነባሪውን የጂፒኤስ ስርዓት አገልግሎት ማንቃት ከፈለጉ እሱን ወደነበረበት ለመመለስ የሚከተሉትን ትዕዛዞች ማስኬድ ይችላሉ-

sudo systemctl gpsd.socket ን ያንቁ

sudo systemctl ጅምር gpsd.socket

አሁን በመግባት የ gpsd daemon ን መጀመር እና ወደ UART ወደቦች ማመልከት አለብን

sudo gpsd/dev/ttyAMA0 -F /var/run/gpsd.sock

አሁን ከዚህ በታች ያለውን ትዕዛዝ ማስኬድ እና ሁሉንም ተንሳፋፊ ውሂብ ማየት እንችላለን!

cgps -s

ደረጃ 4 ማሳያውን ከ Raspberry Pi ጋር ያገናኙ

ማሳያውን ከ Raspberry Pi ጋር ያገናኙ
ማሳያውን ከ Raspberry Pi ጋር ያገናኙ
ማሳያውን ከ Raspberry Pi ጋር ያገናኙ
ማሳያውን ከ Raspberry Pi ጋር ያገናኙ

አንድ ጊዜ የእኛ የጂፒኤስ መቀበያ ከፍ እና ከ Raspberry Pi ጋር አብሮ ከሠራን በኋላ ማሳያውን ከ Raspberry Pi ጋር ማገናኘት እንችላለን። የእኛን ኤልሲዲ ማሳያ ከ Raspberry Pi እና ከዋናው ኃይል እና LED ጋር ለማገናኘት ሌላ 4 ፒኖችን ለማገናኘት እንጠቀማለን። በማያ ገጹ ላይ።

እኔ የምጠቀምበትን የ TFT ማያ ገጽ ፎቶ አካትቻለሁ ፣ ግን ይህ ተመሳሳይ መጠን ካላቸው ማያ ገጾች ጋር መስራት እና መገንባት አለበት።

LED- እና GND ን ከመሬት ጋር ያገናኙ እና LED+ እና VCC ን ወደ 3.3V ያገናኙ።

በ Pi ሰሌዳ ላይ 25 ን ለመለጠፍ በማያ ገጹ ላይ ያለውን የ RESET ፒን ያገናኙ።

በ Pi ሰሌዳ ላይ 24 ን ለመሰካት A0 ን ያገናኙ።

የ SDA ፒን በ Pi ሰሌዳ ላይ ካለው የ MOSI ፒን ጋር ያገናኙ።

በኤሲዲ ማያ ገጽ ላይ ያለውን የ SCK ፒን ከፒ ቦርድ ጋር ያገናኙ።

በ Pi ሰሌዳ ላይ 8 ን ለመሰካት የሲኤስን ፒን ያገናኙ።

ደረጃ 5 ከ Raspberry Pi ጋር ለመስራት ማሳያ ማሳያ

ከ Raspberry Pi ጋር ለመስራት የማዋቀር ማሳያ
ከ Raspberry Pi ጋር ለመስራት የማዋቀር ማሳያ

ማሳያውን ለማቀናበር በዚህ ሬፖ ውስጥ የተገኘውን ST7735 ቤተ -መጽሐፍትን መጠቀም አለብን-

Python ST7735 የማያ ቤተ -መጽሐፍት

አንዴ ይህ የማሳያ ቤተ -መጽሐፍት በእኛ Raspberry Pi ስርዓት ላይ ከተጫነ ፣ የቀደመው ሽቦችን በትክክል እየሰራ መሆኑን ለማረጋገጥ የምሳሌ ፋይልን ማዋቀር መቀጠል እንችላለን።

Example.py የሚል ርዕስ ያለው ፋይል ይፍጠሩ እና በተመሳሳይ አቃፊ ውስጥ ከመረጡት ናሙና ምስል ጋር የሚከተለውን ጽሑፍ እዚያ ውስጥ ያስገቡ

ST7735 ን እንደ TFT ማስመጣት Adafruit_GPIO እንደ GPIO Adafruit_GPIO. SPI ን እንደ SPI ያስመጡ

ስፋት = 128

ከፍታ = 160 SPEED_HZ = 4000000

# Raspberry Pi ውቅር።

# እነዚህ ኤልሲዲውን ከ Raspberry Pi ጋር ለማገናኘት የሚያስፈልጉ ካስማዎች ናቸው

ዲሲ = 24 RST = 25 SPI_PORT = 0 SPI_DEVICE = 0

# TFT LCD ማሳያ ክፍል ይፍጠሩ።

disp = TFT. ST7735 (ዲሲ ፣ መጀመሪያ = RST ፣ spi = SPI. SpiDev (SPI_PORT ፣ SPI_DEVICE ፣ max_speed_hz = SPEED_HZ))

# ማሳያውን ያስጀምሩ።

disp.begin () disp.reset ()

# ምስል ጫን።

newData = 0x42 disp.command (newData) ህትመት ('ምስል በመጫን ላይ …') ምስል = Image.open ('cat.jpg')

# ምስሉን መጠን ይለውጡ እና ከማሳያው ጋር እንዲዛመድ ያድርጉት።

ምስል = image.rotate (270).መጠን ((ስፋት ፣ ከፍታ))

# ፕሮግራማችን በማያ ገጹ ላይ ወደሚቀርበው ተርሚናል ይታተማል

ማተም ('ስዕል ስዕል')

# ይህ ተግባር የእኛን ምስል በማያ ገጹ ላይ ያሳያል

disp.display (ምስል)

ይህ ፋይል ለኤልሲዲ ማያ ገጽ የ Raspberry Pi ውቅረትን ያዋቅራል እና ቤተ -መጽሐፍት ምስላችንን በአቃፊው ውስጥ ይለውጣል እና በማያ ገጹ ላይ ያሳየዋል።

ደረጃ 6 በማሳያው ላይ የጂፒኤስ መረጃን ለማሳየት የስቴት ማሽኖችን ያዋቅሩ

የጂፒኤስ መረጃን በማሳያ ለማሳየት የስቴት ማሽኖችን ያዋቅሩ
የጂፒኤስ መረጃን በማሳያ ለማሳየት የስቴት ማሽኖችን ያዋቅሩ
የጂፒኤስ መረጃን በማሳያ ለማሳየት የስቴት ማሽኖችን ያዋቅሩ
የጂፒኤስ መረጃን በማሳያ ለማሳየት የስቴት ማሽኖችን ያዋቅሩ
የጂፒኤስ መረጃን በማሳያ ለማሳየት የስቴት ማሽኖችን ያዋቅሩ
የጂፒኤስ መረጃን በማሳያ ለማሳየት የስቴት ማሽኖችን ያዋቅሩ

የጂፒኤስ ስርዓታችንን ለማቀናጀት የእኛን የሥራ ሥዕላዊ መግለጫ በመተግበር 5 የተለያዩ የስቴት ማሽኖችን እንጠቀማለን።

የስቴት ለውጥ ማሽን ማሳያ

በእኛ የግቤት ግቤት ላይ በመመስረት ይህ የግዛት ማሽን የትኛውን እንደሚታይ ይቆጣጠራል። ይህን የሚያደርገው ፓይዘን ዳክዬ መተየብ እንዲጠቀምበት እና በተጠራው ተግባር ላይ በመመስረት ትክክለኛውን ተግባር እንዲታይ በመፍቀድ አንድ ተለዋዋጭ በመለወጥ ነው።

የፍጥነት ሁኔታ ማሽን;

ይህ የግዛት ማሽን በግለሰቦች ቦታ ላይ በመመስረት የአሁኑን ፍጥነት ያስፈጽማል። ይህ ለጂፒኤስ ስርዓት እያንዳንዱን የሰዓት ዑደት ያስፈጽማል

የውጤት ሁኔታ ማሽን;

ይህ የግዛት ማሽን የማሳያ ለውጥ ሁኔታ ማሽን የአሁኑ ማሳያ እንዲሆን በሚወስነው ተለዋዋጭ ላይ በመመርኮዝ ውጤቱን ይወስናል።

የርቀት ግዛት ማሽን

ይህ የግዛት ማሽን እያንዳንዱን የሰዓት ዑደት ያካሂዳል እና በተጠቃሚው የተጓዘውን አጠቃላይ ርቀት ይወስናል እና አንዴ ዳግም ማስጀመሪያ ቁልፍ ከተገፋ በኋላ የተጓዘውን የአሁኑን ርቀት እንደገና ያስጀምራል።

የአካባቢ ሁኔታ ማሽን;

የጂፒኤስ ሞጁል ስለ ተጠቃሚው የሚመልሰውን መጋጠሚያዎች በመጠቀም ይህ የስቴት ማሽን የአሁኑን የተጠቃሚውን ቦታ ይመልሳል። ይህ የግዛት ማሽን በተጠቃሚዎች የበይነመረብ ግንኙነት ላይ ጥገኛ ነው።

ደረጃ 7 የጂፒኤስ ስርዓታችንን ተግባራዊ እናድርግ

የእኛን የጂፒኤስ ሞጁል መረጃን ወደ Raspberry Pi እና በላዩ ላይ የሚያሳየውን የኤል ሲ ዲ ማያችን መረጃ ከላከልን በኋላ የጂፒኤስ ስርዓታችንን መርሃ ግብር ማዘጋጀት መጀመር እንችላለን። የእኛን የጂፒኤስ ስርዓት ኮድ ለማድረግ የቀደመውን ደረጃ ውሱን የስቴት ማሽኖችን እጠቀማለሁ

## ዋናው ፋይል ለአሰሳ ስርዓት # # # # #

ምስሎችን ለመሳል # ቤተ -መጽሐፍት

ከ PIL ማስመጣት ምስል ከ PIL ማስመጣት ImageDraw ከ PIL ማስመጣት ImageFont

# ቤተ -መጽሐፍት ለ ST7737 ተቆጣጣሪ

ST7735 ን እንደ TFT ያስመጡ

# ቤተመፃህፍት ለጂፒኦ ለ Raspberry Pi

Adafruit_GPIO ን እንደ GPIO አስመጣ Adafruit_GPIO. SPI ን እንደ SPI አስመጣ

# ቤተ -መጽሐፍት ለጂፒኤስ

#ጂፒኤስን ከጂፒኤስ 3 ማስመጣት gps3 ያስመጡ

# ቤተ -መጽሐፍት ለጊዜ

የማስመጣት ጊዜ

በሁለት ነጥቦች መካከል ያለውን ርቀት ለማግኘት # ቤተ -መጽሐፍት

ከሂሳብ ማስመጣት ኃጢአት ፣ cos ፣ sqrt ፣ atan2 ፣ radians

ምናሌዎችን ለመቀየር እና ዳግም ለማስጀመር አዝራሮችን ለመጠቀም # የ Rpi ቤተ -መጽሐፍትን ያስመጡ

# RPi. GPIO ን እንደ bGPIO ያስመጡ

ለአዝራሮች # ፒን ያዋቅሩ

bGPIO.setmode (bGPIO. BCM)

bGPIO.setup (18 ፣ bGPIO. IN ፣ pull_up_down = bGPIO. PUD_DOWN)

bGPIO.setup (23 ፣ bGPIO. IN ፣ pull_up_down = bGPIO. PUD_DOWN)

ለጂኦኮዲንግ # የጂኦፒ ቤተ -መጽሐፍት ያስመጡ

ይህ እንዲሠራ # # የበይነመረብ መዳረሻ አስፈላጊ ነው

ከ geopy.geocoders ን አስመጪዎችን ያስመጣል

geolocator = Nominatim ()

# ለስርዓቶች የማያቋርጥ

#################################

ስፋት = 128

ከፍታ = 160 SPEED_HZ = 4000000

# Raspberry Pi ውቅር ፒኖች

ዲሲ = 24 # A0 በ TFT ማያ ገጽ ላይ RST = 25 # በ TFT ማያ ገጽ ላይ ፒን ዳግም ያስጀምሩ SPI_PORT = 0 # SPI ወደብ በ raspberry pi ፣ SPI0 SPI_DEVICE = 0 # ባሪያ ይምረጡ በ rapsberry pi ፣ CE0

# TFT LCD ማሳያ ነገር ይፍጠሩ

disp = TFT. ST7735 (ዲሲ ፣ መጀመሪያ = RST ፣ spi = SPI. SpiDev (SPI_PORT ፣ SPI_DEVICE ፣ max_speed_hz = SPEED_HZ))

# ማሳያውን ያስጀምሩ

disp.begin ()

# ዳራ ወደ አረንጓዴ ይዘጋጃል

#disp.clear ((0, 255, 0))

# ማያ ገጹን ወደ ነጭ ያፅዱ እና ያሳዩ

#ዲስክ. 0, 255)) #disp.display ()

# ፍጥነት ፣ ኬክሮስ ፣ ኬንትሮስ አቀማመጥ ተለዋዋጮች

#currentS = "የአሁኑ ፍጥነት:" # የፍጥነት ሕብረቁምፊ #totalDis = "ጠቅላላ ርቀት:" # የርቀት ሕብረቁምፊ #currentLoc = "የአሁኑ አካባቢ:" # የአካባቢ ሕብረቁምፊ

# የርቀት x እና y መጋጠሚያዎች

distX = 10 distY = 20

ነጥቦች ዝርዝር =

# የፍጥነት x እና y መጋጠሚያዎች

speedX = 10 speedY = 20

# አካባቢ x እና y coordiantes

locX = 10 locY = 20

# ከ m/s ወደ mph ይለወጣል

ልወጣ ቫል = 2.24

# የፍጥነት ማዘመኛ ተግባር ፣ ሕብረቁምፊ ይመልሳል

SpeedVar = 0

def speedFunc (): ዓለምአቀፍ SpeedVar SpeedText = data_stream. TPV ['speed'] if (SpeedText! = "n/a"): SpeedText = float (SpeedText) * conversionVal SpeedVar = round (SpeedText, 1) # return (SpeedText)

def locationFunc ():

latLoc = str (latFunc ()) lonLoc = str (lonFunc ())

reversString = latLoc + "," + lonLoc

አካባቢ = geolocator.reverse (reversString)

ተመለስ (ቦታ። አድራሻ)

# የኬክሮስ ዝመና ተግባር ፣ ተንሳፋፊ እሴትን ይመልሳል

def latFunc (): ኬክሮስ = data_stream. TPV ['lat'] ከሆነ (ኬክሮስ == "n/a"): 0 ሌላ ይመልሱ: ተንሳፋፊ ይመለሱ (ክብ (Latitude, 4))

# የኬንትሮስ ማዘመኛ ተግባር ፣ ሕብረቁምፊ ይመልሳል

def lonFunc (): ኬንትሮስ = data_stream. TPV ['lon'] ከሆነ (ኬንትሮስ == "n/a"): 0 ሌላ ይመልሱ - ተንሳፋፊ ይመለሱ (ክብ (ኬንትሮስ ፣ 4))

# የርቀት ተግባር የተጓዘውን TOTAL ርቀት ይመለሳል

totalDistance = 0

def distFunc ():

ዓለምአቀፍ ጠቅላላ ርቀት አዲስLat = latFunc () newLon = lonFunc () ከሆነ (newLat == 0 ወይም newLon == 0): totalDistance = totalDistance # መመለስ (totalDistance) ሌላ ፦ ነጥቦችList.append ((newLat ፣ newLon)) የመጨረሻ = ሌን (ነጥቦች ዝርዝር)) -1 ከሆነ (የመጨረሻ == 0): ሌላ ይመልሱ-totalDistance += coorDistance (ነጥቦችList [የመጨረሻ -1] ፣ የነጥቦች ዝርዝር [የመጨረሻው]) # ተመላሽ ድምር

# አጠቃላይ ርቀትን ዳግም ያስጀምራል

def resDistance ():

ዓለምአቀፍ ጠቅላላ ርቀት አጠቃላይ ርቀት = 0

# ተግባር በሁለት መጋጠሚያዎች መካከል ያለውን ርቀት ለመፈለግ ያገለግል ነበር

# ለማግኘት የ Haversine ቀመር ይጠቀማል። # የግብዓት ነጥቦች ቱፕል ናቸው

def coorDistance (ነጥብ 1 ፣ ነጥብ 2)

# በግምት የምድር ራዲየስ በኪሎሜትር earthRadius = 6373.0

lat1 = ነጥብ 1 [0]

lon1 = ነጥብ 1 [1]

lat2 = ነጥብ 2 [0]

lon2 = ነጥብ 2 [1]

distanceLon = lon2 - lon1

distanceLat = lat2 - lat1

# ሃቨርሲን ሀ

ሀ = ኃጢአት (distanceLat/2) ** 2 + cos (lat1)*cos (lat2)*ኃጢአት (ርቀት ሎን/2) ** 2

# ሃቨርሲን ሐ

ሐ = 2 * atan2 (ስኩዌር (ሀ) ፣ ካሬ (1-ሀ))

# ኪሜ ወደ ማይልስ ይለውጡ

ርቀት = (earthRadius * c) * 0.62137

ከሆነ (ርቀት <= 0.01): ተመላሽ 0.00 ሌላ - ዙር መመለስ (ርቀት ፣ 3)

# ተግባር በማያ ገጹ ላይ ፍጥነትን ለማሳየት

def dispSpeed ():

ዓለም አቀፍ የፍጥነት ቫር # በማያ ገጹ draw.text ((speedX ፣ speedY) ፣ str (SpeedVar) ፣ ቅርጸ-ቁምፊ = ImageFont.truetype (“Lato-Medium.ttf” ፣ 72)) ላይ በተለዋዋጭ ላይ የቦታ ርቀት

በማያ ገጹ ላይ ርቀትን ለማሳየት # ተግባር

def dispDistance ():

draw.text ((distX ፣ distY) ፣ str (totalDistance) ፣ ቅርጸ-ቁምፊ = ImageFont.truetype (“ላቶ-መካከለኛ።

በማያ ገጹ ላይ # ተግባር ታይ ማሳያ ቦታ ፣ በይነመረብ እንዲሠራ ይፈልጋል

def dispLocation ():

draw.text ((locX ፣ locY) ፣ locationFunc () ፣ font = ImageFont.truetype (“Lato-Medium.ttf” ፣ 8))

# የመቀየሪያ መግለጫዎችን ለመምሰል መዝገበ -ቃላትን መጠቀም

dispOptions = {

0: dispSpeed, 1: dispDistance, 2: dispLocation}

# የማያ ገጽ ውፅዓት ተግባር

def ውፅዓት ():

# ዓለም አቀፋዊ ተለዋዋጭ ለዕይታ ኢንዴክስ ዓለም አቀፍ ማሳያ ኢንዴክስ # ማያ ገጽን ማፅዳት እና የጀርባ ዲስክን ((255 ፣ 255 ፣ 255)) draw.rectangle ((0 ፣ 10 ፣ 127 ፣ 150) ፣ ረቂቅ = (255 ፣ 0 ፣ 0) ፣ ሙላ = (255, 0, 0))

በማሳያ ኢንዴክስ እሴት ላይ በመመስረት # የጥሪዎች ተግባር

dispOptions [displayIndex] ()

ሌላ ዘዴ ቢሰራ # ይጠፋል

በማያ ገጹ ላይ # የቦታ ርቀት ተለዋዋጭ

#draw.text ((distX ፣ distY) ፣ str (distFunc ()) ፣ ቅርጸ -ቁምፊ = ImageFont.load_default ()) #የቦታ ፍጥነት ተለዋዋጭ በማያ ገጹ ላይ #draw.text ((speedX ፣ speedY) ፣ speedFunc () ፣ font = ImageFont.load_default ()) # የማሳያ ዲስክ ማሳያ ዝመናዎችን አሳይ ()

displayButton = 18 # BCM Pin on raspberry pi

resetButton = 23 # BCM Pin on raspberry pi

buttonPress = ሐሰት

def checkDisplay ():

ዓለም አቀፋዊ አዝራር ዓለም አቀፋዊ ማሳያ ኢንዴክስን (bGPIO.input (displayButton) እና አዝራር ካልሆነ): ማሳያ ኢንዴክስ += 1 አዝራር ይጫኑ = እውነት ከሆነ (ማሳያ ኢንዴክስ == 2): ማሳያ ኢንዴክስ = 0 ኤሊፍ (bGPIO.input (displayButton) እና buttonPress): print (" አሁንም ተጭኗል ") ሌላ ፦ አዝራር ይጫኑ = ውሸት

# ጂፒኤስን ያዋቅሩ

gps_socket = gps3. GPSDSocket () data_stream = gps3. DataStream () gps_socket.connect () gps_socket.watch ()

ሰዓት ቆጣሪ =.5

# የመረጃ ጠቋሚ እሴት ማሳያ ማሳያ ኢንዴክስ = 0 ሞክር ፦ ለአዲስ_ዳታ በ gps_socket ውስጥ ፦ አዲስ_ዳታ - data_stream.unpack (አዲስ_ዳታ) ከሆነ data_stream. TPV ['lat']! = 'N/a': ህትመት (data_stream. TPV ['speed'] ፣ data_stream. TPV ['lat'] ፣ data_stream. TPV ['lon']) distFunc () speedFunc () ውፅዓት () checkDisplay () ከሆነ (bGPIO.input (resetButton)): resDistance () ሌላ: ውፅዓት () checkDisplay () ከሆነ (bGPIO.input (resetButton)): resDistance () ህትመት ('ጂፒኤስ ገና አልተገናኘም') time.sleep (.1) time.sleep (.8) ከ KeyboardInterrupt: gps_socket.close () print ('') n በተጠቃሚ ctrl+c 'ተበላሽቷል)

ከላይ ያለው ኮድ የእኛን ስርዓት እንዴት ኮድ ማድረግ እንደሚቻል አንድ ምሳሌ ብቻ ነው እና እኔ ይህ ስርዓት እንዴት እንደሚሰራ ቪዲዮ አካትቻለሁ።

የሚመከር: