溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MicroPython如何顯示當(dāng)前經(jīng)緯度

發(fā)布時(shí)間:2022-01-13 11:19:29 來(lái)源:億速云 閱讀:185 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇“MicroPython如何顯示當(dāng)前經(jīng)緯度”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“MicroPython如何顯示當(dāng)前經(jīng)緯度”文章吧。

  一、關(guān)于TPYBoardV702

  TPYBoardV702是目前市面上唯一支持通信定位功能的MicroPython開(kāi)發(fā)板:支持Python3.0及以上版本直接運(yùn)行。支持GPS+北斗雙模定位、GPRS通信、短信功能、電話功能;板載溫濕度、光敏、三軸加速度傳感器、蜂鳴器、LCD5110顯示屏。免費(fèi)提供定位測(cè)試服務(wù)平臺(tái)。實(shí)物如下圖:

MicroPython如何顯示當(dāng)前經(jīng)緯度

  二、利用TPYBoardV702完成所在地溫濕度及亮度數(shù)據(jù)采集

  1、具體要求

  利用TPYBoardV702完成所在地經(jīng)緯度采集,并在5110顯示屏上顯示

  2、所需器件

  TPYBoardV702開(kāi)發(fā)板一塊

  5110顯示屏一塊

  TPYBoardV702開(kāi)發(fā)板板載定位功能,無(wú)需外接

  3、板載定位功能及使用介紹

  V702的開(kāi)發(fā)板的整體整體亮點(diǎn)就是能進(jìn)行定位,可以獲取到當(dāng)前所在地的經(jīng)緯度,高度,時(shí)間等等的一些信息。在這個(gè)實(shí)驗(yàn)里面我們就要用到獲取經(jīng)緯度這一功能。

  這個(gè)開(kāi)發(fā)板上主要的硬件功能已嵌入到了開(kāi)發(fā)板上,使用起來(lái)非常方便,我們只需要進(jìn)行簡(jiǎn)單的設(shè)置操作就能獲取到經(jīng)緯度,然后再進(jìn)行數(shù)據(jù)解析,分割以及數(shù)據(jù)轉(zhuǎn)換等處理,就可以得到我們想要的經(jīng)度和緯度了,之后我們?cè)谑褂蔑@示屏把經(jīng)緯度顯示出來(lái)就完成了在開(kāi)發(fā)板上顯示經(jīng)緯度了。下面來(lái)具體的說(shuō)一下制作的過(guò)程。

  三、制作主要過(guò)程

  先上個(gè)圖,下面再開(kāi)始說(shuō)代碼的問(wèn)題。

MicroPython如何顯示當(dāng)前經(jīng)緯度

  1、制作過(guò)程

 ?。?)首選我們需要做的是把5100顯示屏插到702開(kāi)發(fā)板的5110顯示屏接口處;

 ?。?)在上面工作完成后,我們這里需要用到主要的類庫(kù),5110的類庫(kù),我們需要把這個(gè)類庫(kù)的.py文件拷貝到開(kāi)發(fā)板的盤符中;

  (3)完成以上工作后,我們開(kāi)始main().py文件代碼的編輯;

 ?。?)對(duì)需要用到的類庫(kù)進(jìn)行聲明和定義;

 ?。?)把需要把我們需要使用的變量進(jìn)行一下定義;

  (6)把我們需要用到的接口進(jìn)行聲明和定義,這里我們主要用到了spi1和串口4這兩個(gè)接口,聲明串口4的時(shí)候,需要把串口波特率設(shè)置為115200;

 ?。?)下面開(kāi)始主函數(shù)的編寫,這個(gè)實(shí)驗(yàn)里面我們用到了顯示,我們?cè)诔绦虻拈_(kāi)始部分先進(jìn)行顯示部分的初始化;

 ?。?)完成顯示部分初始化之后,我們需要做一個(gè)最重要的事情,那就是定義“Y6”引腳為輸出,然后把:“Y6”引腳拉低兩秒以上,之后把此引腳拉高。因?yàn)椤癥6”引腳是控制整個(gè)板載定位系統(tǒng)開(kāi)啟的開(kāi)關(guān),如果平時(shí)我們沒(méi)有用到定位系統(tǒng)的話,為了節(jié)省功耗,板載定位系統(tǒng)是處于關(guān)閉狀態(tài)的,需要使用時(shí)只需要拉低“Y6”引腳兩秒以上;

 ?。?)當(dāng)看到開(kāi)發(fā)板上的紅色直插LED燈快速閃爍的時(shí)候,說(shuō)明板載定位系統(tǒng)正在啟動(dòng),當(dāng)這個(gè)紅色直插指示燈結(jié)束快閃(指示燈處于慢閃或者熄滅狀態(tài))說(shuō)明板載定位系統(tǒng)已經(jīng)啟動(dòng);

 ?。?0)完成以上工作后,我們的準(zhǔn)工作就已經(jīng)完成了,剩下需要做的就是通過(guò)串口4發(fā)送相應(yīng)的指令,獲取相應(yīng)的數(shù)據(jù),再把相應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,并顯示到顯示屏上即可。

  2、具體代碼:

import pyb
import upcd8544
from machine import SPI,Pin
from pyb import UART
from ubinascii import hexlify
from ubinascii import *


leds = [pyb.LED(i) for i in range(1,5)]
P,L,SHUCHU=0,0,0
SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
#DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)
#CLK =>SPI(1).SCK  'X6' SPI clock
RST    = pyb.Pin('X20')
CE     = pyb.Pin('X19')
DC     = pyb.Pin('X18')
LIGHT  = pyb.Pin('X17')
lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)
count_=0
N2 = Pin('Y3', Pin.OUT_PP)
N1 = Pin('Y6', Pin.OUT_PP)#定義板載定位系統(tǒng)開(kāi)關(guān)引腳為輸出
N1.low()
pyb.delay(2000)
N1.high()
pyb.delay(10000)#通過(guò)拉低和拉高開(kāi)關(guān)引腳的電平,啟動(dòng)板載定位系統(tǒng)
u2 = UART(4, 115200)#定義串口4,設(shè)置波特率為115200
i='0'
w=0
d=0
q=0
G=0
j=0
def DataConver(str_,flag):#預(yù)先編寫數(shù)據(jù)處理函數(shù),方便后期數(shù)據(jù)處理
    wei_=float(str_)/100
    wei_arr=str(wei_).split('.')
    val_=100000
    if flag==0:#緯度
        val_=10000
    wei_arr[1]=str(float(wei_arr[1])/60*val_).replace('.','')
    weidu=wei_arr[0]+'.'+wei_arr[1]
    return weidu
while True:
    pyb.LED(2).on()
    G=G+1
    u2.write('AT+GPSLOC=1\r\n')#通過(guò)串口發(fā)送指令,命令板載定位系統(tǒng)進(jìn)行搜星操作
    pyb.delay(3000)
    _dataRead=u2.readall()
    print('搜星=',_dataRead)#延時(shí),給系統(tǒng)搜星反應(yīng)時(shí)間,提高搜星效率,并打印搜星結(jié)果
    pyb.delay(1000)
    u2.write('AT+GPSLOC=0\r\n')#通過(guò)串口發(fā)送獲取經(jīng)緯度的指令,命令板載定位系統(tǒng)進(jìn)行							 #經(jīng)緯度獲取
    pyb.delay(200)
    print('BEIDOU')
    _dataRead=u2.readall()#保存串口獲取到的經(jīng)緯度數(shù)據(jù),如果定位信號(hào)不好,返回?cái)?shù)據(jù)可					   #能全部為零,這個(gè)情況會(huì)導(dǎo)致定位周期延長(zhǎng)
    if _dataRead!=None:
        print('原始數(shù)據(jù)=',_dataRead)
        print('原始數(shù)據(jù)長(zhǎng)度:',len(_dataRead))
        if 60<len(_dataRead)<70:#這里把正確的數(shù)據(jù)長(zhǎng)度作為數(shù)據(jù)處理的開(kāi)始
            _dataRead = _dataRead.decode('utf-8')
            _dataRead1=_dataRead.split(',')#把數(shù)據(jù)轉(zhuǎn)成'utf-8'格式,并且把數(shù)據(jù)按照“,”分									  #隔開(kāi)
            print('數(shù)據(jù)=',_dataRead1)
            print(len(_dataRead1),'***')
            if len(_dataRead1)>4:#判斷數(shù)據(jù)轉(zhuǎn)換出來(lái)的數(shù)組數(shù)據(jù)長(zhǎng)度(或者說(shuō)是數(shù)組的元							  #素個(gè)數(shù))作為進(jìn)行數(shù)據(jù)轉(zhuǎn)換的開(kāi)始
#*******************緯度計(jì)算********************
                weidu=_dataRead1[1]
                WD=DataConver(weidu,0)
#*******************經(jīng)度計(jì)算********************
                jingdu=_dataRead1[2]
                JD=DataConver(jingdu,1)#利用我們上面做好的數(shù)據(jù)轉(zhuǎn)換函數(shù),把數(shù)據(jù)也轉(zhuǎn)									 #換成我們可以正常使用的格式
#***********************時(shí)間************************
    lcd_5110.lcd_write_string('JINGDU:',0,0)
    lcd_5110.lcd_write_string(str(JD),0,1)
    lcd_5110.lcd_write_string('WEIDU:',0,2)
    lcd_5110.lcd_write_string(str(WD),0,3)#利用5110顯示屏類庫(kù)中的顯示函數(shù),進(jìn)行數(shù)據(jù)顯									#示

以上就是關(guān)于“MicroPython如何顯示當(dāng)前經(jīng)緯度”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI