一、关于TPYBoardV702

  TPYBoardV702是目前市面上唯一支持通信定位功能的MicroPython开发板:支持Python3.0及以上版本直接运行。支持GPS+北斗双模定位、GPRS通信、短信功能、电话功能;板载温湿度、光敏、三轴加速度传感器、蜂鸣器、LCD5110显示屏。免费提供定位测试服务平台。实物如下图:

  二、利用TPYBoardV702完成所在地温湿度及亮度数据采集

  1、具体要求

  利用TPYBoardV702完成所在地经纬度采集,并在5110显示屏上显示

  2、所需器件

  TPYBoardV702开发板一块

  5110显示屏一块

  TPYBoardV702开发板板载定位功能,无需外接

  3、板载定位功能及使用介绍

  V702的开发板的整体整体亮点就是能进行定位,可以获取到当前所在地的经纬度,高度,时间等等的一些信息。在这个实验里面我们就要用到获取经纬度这一功能。

  这个开发板上主要的硬件功能已嵌入到了开发板上,使用起来非常方便,我们只需要进行简单的设置操作就能获取到经纬度,然后再进行数据解析,分割以及数据转换等处理,就可以得到我们想要的经度和纬度了,之后我们在使用显示屏把经纬度显示出来就完成了在开发板上显示经纬度了。下面来具体的说一下制作的过程。

  三、制作主要过程

  先上个图,下面再开始说代码的问题。

  1、制作过程

  (1)首选我们需要做的是把5100显示屏插到702开发板的5110显示屏接口处;

  (2)在上面工作完成后,我们这里需要用到主要的类库,5110的类库,我们需要把这个类库的.py文件拷贝到开发板的盘符中;

  (3)完成以上工作后,我们开始main().py文件代码的编辑;

  (4)对需要用到的类库进行声明和定义;

  (5)把需要把我们需要使用的变量进行一下定义;

  (6)把我们需要用到的接口进行声明和定义,这里我们主要用到了spi1和串口4这两个接口,声明串口4的时候,需要把串口波特率设置为115200;

  (7)下面开始主函数的编写,这个实验里面我们用到了显示,我们在程序的开始部分先进行显示部分的初始化;

  (8)完成显示部分初始化之后,我们需要做一个最重要的事情,那就是定义“Y6”引脚为输出,然后把:“Y6”引脚拉低两秒以上,之后把此引脚拉高。因为“Y6”引脚是控制整个板载定位系统开启的开关,如果平时我们没有用到定位系统的话,为了节省功耗,板载定位系统是处于关闭状态的,需要使用时只需要拉低“Y6”引脚两秒以上;

  (9)当看到开发板上的红色直插LED灯快速闪烁的时候,说明板载定位系统正在启动,当这个红色直插指示灯结束快闪(指示灯处于慢闪或者熄灭状态)说明板载定位系统已经启动;

  (10)完成以上工作后,我们的准工作就已经完成了,剩下需要做的就是通过串口4发送相应的指令,获取相应的数据,再把相应的数据进行数据转换,并显示到显示屏上即可。

  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)#定义板载定位系统开关引脚为输出
N1.low()
pyb.delay(2000)
N1.high()
pyb.delay(10000)#通过拉低和拉高开关引脚的电平,启动板载定位系统
u2 = UART(4, 115200)#定义串口4,设置波特率为115200
i=''
w=0
d=0
q=0
G=0
j=0
def DataConver(str_,flag):#预先编写数据处理函数,方便后期数据处理
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')#通过串口发送指令,命令板载定位系统进行搜星操作
pyb.delay(3000)
_dataRead=u2.readall()
print('搜星=',_dataRead)#延时,给系统搜星反应时间,提高搜星效率,并打印搜星结果
pyb.delay(1000)
u2.write('AT+GPSLOC=0\r\n')#通过串口发送获取经纬度的指令,命令板载定位系统进行 #经纬度获取
pyb.delay(200)
print('BEIDOU')
_dataRead=u2.readall()#保存串口获取到的经纬度数据,如果定位信号不好,返回数据可 #能全部为零,这个情况会导致定位周期延长
if _dataRead!=None:
print('原始数据=',_dataRead)
print('原始数据长度:',len(_dataRead))
if 60<len(_dataRead)<70:#这里把正确的数据长度作为数据处理的开始
_dataRead = _dataRead.decode('utf-8')
_dataRead1=_dataRead.split(',')#把数据转成'utf-8'格式,并且把数据按照“,”分 #隔开
print('数据=',_dataRead1)
print(len(_dataRead1),'***')
if len(_dataRead1)>4:#判断数据转换出来的数组数据长度(或者说是数组的元 #素个数)作为进行数据转换的开始
#*******************纬度计算********************
weidu=_dataRead1[1]
WD=DataConver(weidu,0)
#*******************经度计算********************
jingdu=_dataRead1[2]
JD=DataConver(jingdu,1)#利用我们上面做好的数据转换函数,把数据也转 #换成我们可以正常使用的格式
#***********************时间************************
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显示屏类库中的显示函数,进行数据显 #示

MicroPython-GPS教程之TPYBoardv702控制5110显示当前经纬度的更多相关文章

  1. Tkinter教程之Pack篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1813077 '''Tkinter教程之Pack篇'''#Pack为一布局管理器,可将它视为一个 ...

  2. Tkinter教程之Canvas篇(4)

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1812091 '''Tkinter教程之Canvas篇(4)''''''22.绘制弧形'''#  ...

  3. Tkinter教程之Text(2)篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811347 '''Tkinter教程之Text(2)篇''''''6.使用tag来指定文本的属 ...

  4. Tkinter教程之Scrollbar篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811319 '''Tkinter教程之Scrollbar篇'''#Scrollbar(滚动条) ...

  5. Tkinter教程之Scale篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811313 '''Tkinter教程之Scale篇'''#Scale为输出限定范围的数字区间, ...

  6. Tkinter教程之Label篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811293 #Tkinter教程之Label篇'''1.Label的第一个例子text属性使用 ...

  7. [Mugeda HTML5技术教程之2] Mugeda HTML5富媒体平台简介

    [Mugeda HTML5技术教程之2] Mugeda HTML5动画平台简介 摘要:Mugeda提供基于云的平台,供开发人员和设计人员快速的开发.发布和统计基于HTML5的,包含丰富动画和交互的移动 ...

  8. C#开发Unity游戏教程之Unity中方法的参数

    C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别 ...

  9. C#开发Unity游戏教程之Scene视图与脚本的使用

    C#开发Unity游戏教程之Scene视图与脚本的使用 Unity中Scene视图的快捷操作 Scene视图是开发者开发游戏时,操作最频繁的视图.因为一旦一个游戏对象被添加到游戏的场景中,就需要首先使 ...

随机推荐

  1. php的过滤器功能

    1.简介 PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入. 1.1 外部数据: 来自表单的输入数据 Cookies Web services data 服务器变量 数据库查询结果 1 ...

  2. C# httpclient获取cookies实现模拟web登录

    目前在公司做一款平台化的产品,我主要负责PC端上的开发,在产品推荐过程中为了节省开发时间很多功能模块没来得及做原生,用CEF嵌入了很多带功能web页面,与客户端进行交互从而实现功能. 在二期开发中,产 ...

  3. 关于我之前写的修改Windows系统Dos下显示用用户名的名字再测试

    最近看到蛮多网友反映,自己修改Dos下用户名后出现了很多的问题--今天抽了时间,再次修改测试... ================= Win10下C:\Users\John以账户名称命名的系统文件夹 ...

  4. SQL或HQL预编译语句,可以防止SQL注入,可是不能处理%和_特殊字符

    近期项目在做整改,将全部DAO层的直接拼接SQL字符串的代码,转换成使用预编译语句的方式.个人通过写dao层的单元測试,有下面几点收获. dao层代码例如以下 //使用了预编译sql public L ...

  5. Md5加密秘钥加密哈希加密

    加密通用类: public class EncryptClass { /// <summary> /// 返回MD5加密字符串 /// </summary> /// <p ...

  6. Not++规范格式(格式化)

    Notepad++功能比Windows中的 Notepad(记事本)强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码.Notepad++ 有语法高亮度显示和语法折叠功能,并且支 ...

  7. org.elasticsearch.transport.ReceiveTimeoutTransportException[cluster:monitor/nodes/liveness] request_id [31] timed out after [5000ms]

    ES连接超时,异常信息 2017-09-07 10:42:45.042 [elasticsearch[Bantam][transport_client_worker][T#17]{New I/O wo ...

  8. 【java提高】---数组增删 list删除 map删除

    数组增删 集合删除 1.数组增删 package com.test; import java.util.List; import java.util.ArrayList; import java.ut ...

  9. React学习总结(一)

    React学习总结 一.什么是React? 是Facebook公司开发的一套JS库 React的详细介绍https://www.jianshu.com/p/ae482813b791 二.老版本Reac ...

  10. laravel基本信息

    1.Bundle是Laravel的扩展包组织形式或称呼.Laravel的扩展包仓库已经相当成熟了,可以很容易的帮你把扩展包(bundle)安装到你的应用中.你可以选择下载一个扩展包(bundle)然后 ...