|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Micropython开发实例之TPYBoard v702GPRS功能测试" I. S8 Y7 Y! t4 Y$ z6 c
一、什么是TPYBoardV702
. Y3 h% d1 ]3 T9 j7 R4 D4 H TPYBoardV702是山东萝卜电子科技有限公司最新开发的,目前市面上唯一支持通信通信功能的MICropython开发板:支持Python3.0及以上版本直接运行。支持gps+北斗双模通信、GPRS通信、短信功能、电话功能;板载温湿度、光敏、三轴加速度传感器、蜂鸣器、LCD5110显示屏。免费提供通信测试服务平台。% |; n- Q8 t8 N8 }
二、利用TPYBoardV702完成利用GPRS功能把数据上传至服务器% }. `2 q' Q1 v! S7 q$ V+ H
1、具体要求 利用TPYBoardV702完成利用GPRS功能把数据上传至服务器 2、所需器件 TPYBoardV702开发板一块 GSM手机卡一张 TPYBoardV702开发板板载GPRS通信功能,无需外接 3、板载通信功能及使用介绍 V702的开发板的整体整体亮点置一就是能板载通信功能,只要在开发板的卡槽上插上一张可以使用的手机卡(不支持电信),即可使用该功能。 开发板板载的通信功能包括了电话,短信,GPRS等功能,在这个实验里面我们只使用GPRS这个功能。 我们使用GPRS功能,主要是为了借助这个功能向服务器透传数据,所以我们第一步是要打开透传功能。然后我们要和服务器建立连接,这时我们需要知道服务器的地址和端口。这个实验我们借用官方提供的测试平台,发送一个自己编辑的数据包,来学习一下GPRS功能的使用方法。
% T% r' F0 k0 g5 n0 g% J% m) l, o 下面仔细说一下制作过程。
5 T/ ?/ ~$ O. t$ z 三、制作主要过程
& D) t4 Y: {8 b. q6 @3 p' |; K3 Z 先上个图,下面再开始说代码的问题。+ ~4 l5 m# U% Q4 @$ U8 T
Putty数据监控图5 @1 Y5 B2 X6 y. B( @1 G* C o1 ?
8 l# Y4 e1 ~8 c1 n: \ 示例定位图
/ F/ V1 H) J! {2 y: N- S6 M
# D: B2 m9 h3 N% q" d
1、制作过程 (1)第一步是先把手机卡插到开发板开槽上,需要保证手机卡可以使用; (2)在上面工作完成后,我们开始main().py文件代码的编辑; (3)对需要用到的类库进行声明和定义; (4)把我们需要使用的变量进行一下定义; (5)把我们需要用到的接口进行声明和定义,这里我们主要用到了串口4这个接口,声明串口4的时候,需要把串口波特率设置为115200; (7)下面开始主函数的编写,这个实验里面我们用到了数据包,我们先新建一个符合格式的数据包; (8)完成以上之后,我们需要做一个最重要的事情,那就是定义“Y6”引脚为输出,然后把:“Y6”引脚拉低两秒以上,之后把此引脚拉高。因为“Y6”引脚是控制整个板载通信系统开启的开关,如果平时我们没有用到通信系统的话,为了节省功耗,板载通信系统是处于关闭状态的,需要使用时只需要拉低“Y6”引脚两秒以上; (9)当看到开发板上的红色直插LED灯快速闪烁的时候,说明板载通信系统正在启动,当这个红色直插指示灯结束快闪(如果插在开发板卡槽上的手机可用,指示灯处于慢闪状态)说明板载通信系统已经启动; (10)完成以上工作后,准备工作就已经完成了,下面我们需要先把通信系统的通信方式设置为透传,之后再和相应的服务器地址和端口进行连接; (11)和服务器建立连接后,就可以开始想服务器发送数据了,直接把数据从串口4送出去就可以了,通信系统会原封不动的把你发的数据发送到服务器。0 |1 ~" L1 w' ^ {
: ` D+ N$ _. _1 M 2、具体代码:
( M, I& ]0 j8 q一、什么是TPYBoardV702
/ C+ v" f2 G, F, W( @! } TPYBoardV702是山东萝卜电子科技有限公司最新开发的,目前市面上唯一支持通信通信功能的MICropython开发板:支持Python3.0及以上版本直接运行。支持gps+北斗双模通信、GPRS通信、短信功能、电话功能;板载温湿度、光敏、三轴加速度传感器、蜂鸣器、LCD5110显示屏。免费提供通信测试服务平台。实物如下图:5 X7 C" r! o4 w7 V
二、利用TPYBoardV702完成利用GPRS功能把数据上传至服务器# h& |1 L4 o4 ?3 Q
1、具体要求 利用TPYBoardV702完成利用GPRS功能把数据上传至服务器 2、所需器件 TPYBoardV702开发板一块 GSM手机卡一张 TPYBoardV702开发板板载GPRS通信功能,无需外接 3、板载通信功能及使用介绍 V702的开发板的整体整体亮点置一就是能板载通信功能,只要在开发板的卡槽上插上一张可以使用的手机卡(不支持电信),即可使用该功能。 开发板板载的通信功能包括了电话,短信,GPRS等功能,在这个实验里面我们只使用GPRS这个功能。 我们使用GPRS功能,主要是为了借助这个功能向服务器透传数据,所以我们第一步是要打开透传功能。然后我们要和服务器建立连接,这时我们需要知道服务器的地址和端口。这个实验我们借用官方提供的测试平台,发送一个自己编辑的数据包,来学习一下GPRS功能的使用方法。. V9 E# g: X4 I: d# }% V
下面仔细说一下制作过程。
- @9 Q$ B8 g5 [0 ?; S; k3 S 三、制作主要过程" {5 _3 {6 \, g; a B! B) Q
先上个图,下面再开始说代码的问题。8 A" v1 ], e" G! n) c
Putty数据监控图
$ ], n2 S# E6 X& n; n
- _3 r- i7 B# x9 Y# w, s0 L+ V( e 示例定位图
4 o ~7 w4 M- p- C: B- d
! a0 ^) T; N Z! M0 I. m6 h: z 1、制作过程 (1)第一步是先把手机卡插到开发板开槽上,需要保证手机卡可以使用; (2)在上面工作完成后,我们开始main().py文件代码的编辑; (3)对需要用到的类库进行声明和定义; (4)把我们需要使用的变量进行一下定义; (5)把我们需要用到的接口进行声明和定义,这里我们主要用到了串口4这个接口,声明串口4的时候,需要把串口波特率设置为115200; (7)下面开始主函数的编写,这个实验里面我们用到了数据包,我们先新建一个符合格式的数据包; (8)完成以上之后,我们需要做一个最重要的事情,那就是定义“Y6”引脚为输出,然后把:“Y6”引脚拉低两秒以上,之后把此引脚拉高。因为“Y6”引脚是控制整个板载通信系统开启的开关,如果平时我们没有用到通信系统的话,为了节省功耗,板载通信系统是处于关闭状态的,需要使用时只需要拉低“Y6”引脚两秒以上; (9)当看到开发板上的红色直插LED灯快速闪烁的时候,说明板载通信系统正在启动,当这个红色直插指示灯结束快闪(如果插在开发板卡槽上的手机可用,指示灯处于慢闪状态)说明板载通信系统已经启动; (10)完成以上工作后,准备工作就已经完成了,下面我们需要先把通信系统的通信方式设置为透传,之后再和相应的服务器地址和端口进行连接; (11)和服务器建立连接后,就可以开始想服务器发送数据了,直接把数据从串口4送出去就可以了,通信系统会原封不动的把你发的数据发送到服务器。# ]$ ]3 S7 h8 {; w6 r* a( t
) R& |& A& u2 e* a& {. o* r$ O* i 2、具体代码:
, ~! V: t: `& R* [0 ?* qimport pyb' K6 L5 v L# w' e N! J
import upcd8544
' f0 Q9 ^- O, D' Ifrom machine import spi,Pin& |7 E+ U/ d8 l$ i) G8 D8 A
from pyb import UART
" m5 m$ d. F% n2 H: b1 W2 afrom ubinascii import hexlify' A# V; P" A% {8 |' R( y
from ubinascii import *#以上为声明使用到的类库% L* X" n# t% R
% @1 ~3 k: I- U6 E1 q
! y; A/ c [# D- W* H, H7 m9 h8 zleds = [pyb.LED(i) for i in range(1,5)]
: L" f1 Z0 M" v. P9 F9 yP,L,SHUCHU=0,0,0& q( {* z e4 x# q
SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
! M: B: m9 ]4 T3 e#DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)3 I# }: B- H& c. q2 m
#CLK =>SPI(1).SCK 'X6' SPI clock5 `$ b9 E$ `# p
RST = pyb.Pin('X20')7 ~. f0 N2 d+ f- }+ s( y
CE = pyb.Pin('X19')
, n0 h. i; j5 @5 cDC = pyb.Pin('X18')
* Z/ e6 R; [& F# Z& N& XLIGHT = pyb.Pin('X17')9 u) y+ D, ~( k' |4 V/ {5 m9 W
lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)#以上为初始化显示屏的函数,虽然 #这次没有用到显示,但是备用 `. F0 G# C: m
count_=0$ ~$ F/ s3 v8 u$ X- y
N2 = Pin('Y3', Pin.OUT_PP): f7 U( Y8 P. X8 G, P
N1 = Pin('Y6', Pin.OUT_PP)#定义通信系统启动引脚" h3 h; u9 l$ h# |. l; v
N1.low()
8 P) D, w/ D% X% ^% cpyb.delay(2000)
& H1 g6 g3 R4 mN1.high()
I0 r& j4 C: U hpyb.delay(10000)#拉高拉低引脚,启动通信系统
/ T5 k3 N: d- F) |1 x! Y6 w0 e9 ?u2 = UART(4, 115200)#定义串口4,设置 波特率为115200
& Y4 \/ l( R3 z0 k2 X1 A0 P- yK=5#设置一个选择变量K9 S6 `& ]. C V* e
while (K==5):#这个循环是为了设置通信区域模式为透传模式。
9 s/ K& K9 Z2 i" L' Q2 V0 R$ d8 J u2.write('AT+CIPMODE=1\r\n')
4 |* i1 v6 x' q pyb.delay(500)
' r9 z. N2 ]$ A if(u2.any()>0):* @, F% j2 Y! X7 u) _0 j! I. P! R
print('透传')
% G/ K$ { T$ e# R8 L _dataRead=u2.readall(): k. |* p4 a9 { i) v. N) J
print('透传',_dataRead.decode('utf-8'))
; O# A) o3 ^( b if(_dataRead.find(b'OK')>-1):- E) ~ ^+ W+ H# ?7 J4 h7 ]
K=0
" r5 W5 N0 }! c5 s pyb.delay(20)
# M f+ @, Z( t Iu2.write('AT+CIPstart="TCP","139.196.109.178",30000\r\n')#这个语句是为了搭建通信连 #接。
U4 v& \5 O* ^" B9 G3 D( U4 O; |pyb.delay(10000)
3 ? L, }) D$ i5 Lprint('123')
- \: J, u& |5 n4 Ewhile (K==0):#这里是为了判断通信连接是否已经建立起来,如果没有建立起来通信的连接, #则等待。
p" ^9 @ p3 p0 ^% G) }# \$ \ pyb.delay(3000)
, U+ E1 s( a# n# X ~4 t% ^ if(u2.any()>0):" l7 s* ]) ], g) ?; W# [& T
_dataRead=u2.readall()- o2 P, Z7 ]7 G8 x$ w7 y
print('oo',_dataRead)
3 Y/ H7 @6 p) x& e if(_dataRead.find(b'CONNECT OK')>-1):#这个判断是为了判断是否已经和服务器建 #立起连接来, v0 |" w1 _5 D
K=1#开发板已经和服务器建立起连接来,则改变选择变量的值,使其进入下 #一个循环
1 l, T W5 v; W8 q. _$ P* I pyb.LED(1).on()+ T7 E* \" T2 z- u2 _
while (K==1):#这个循环是执行数据传输命令的执行所在,在这个循环中进行各种数据的裁 #剪拼接和发送。1 m: p4 d1 _& z# y6 v# _
print('DOU')6 v' e! N! q' v4 W5 [
#u2.write('+++') 此时整个系统进入透传通信模式,想要退出,则发送‘+++’,即可 #退出;# t2 L: c$ t6 }$ }
#u2.write('ATO0') 想让系统从指令模式进入透传模式,则发送‘ATO0’,则进入透传;
1 h: H2 _3 r: u2 h. }2 S5 O6 r" S# L #pyb.delay(1500): Q# v# }, L7 g7 B! A
pyb.LED(2).off()" {. ]; g( ^5 ? s
pyb.LED(3).off()# Z: E, ^& t& ?2 u9 D8 A: ~
pyb.LED(2).on()
5 _8 s/ B7 c. B2 g$ t u2.write('TPGPS,1234567890abcde,36.67191670,119.17200000,201701120825,25,50,END') C. g1 P9 F& H- q
#这个报文详细格式参照服务平台示例报文格式。7 Q- c- ]. z3 J% [" ]9 w, e
#把这格式里面的经纬度数据换成从定位系统获取到的经纬度,就可以实时定位了。& K1 G3 b# c7 l0 Z$ y% D1 J# |
pyb.delay(13000)#延时一下时间,官方提供的测试平台有上传频率限制! | R, e8 l E) ~
if(u2.any()>0):#在向服务器发送了数据后,服务器会对数据进行判断,并返相应的报文 #(报文参数详见服务平台)6 k8 t7 n: ?9 k6 p5 E
#这个返回仅适用于官方提供的服务平台,客户自己搭建的平台是否 #存在这个功能,客户自主搭建。1 L Z6 g& W. Y) v9 x6 |
_dataRead=u2.readall()" }. y8 p- {" W; s$ M- u
print('1212',_dataRead)8 _# [8 T# ^3 ]; ] {
pyb.LED(3).on()1 W2 x: I- b5 d# m( ?
pyb.delay(10000)
; s/ [) ~6 ~. [ _0 E
, E- ~2 F) a1 p |
|