查看: 2381|回复: 0

Micropython开发实例之TPYBoard v702GPRS功能测试

[复制链接]
  • TA的每日心情
    慵懒
    2018-1-6 09:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2018-6-20 10:54:52 | 显示全部楼层 |阅读模式
    分享到:
        一、什么是TPYBoardV702

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

    1.png

        二、利用TPYBoardV702完成利用GPRS功能把数据上传至服务器

        1、具体要求
        利用TPYBoardV702完成利用GPRS功能把数据上传至服务器
        2、所需器件
        TPYBoardV702开发板一块
        Gsm手机卡一张
        TPYBoardV702开发板板载GPRS通信功能,无需外接
        3、板载通信功能及使用介绍
        V702的开发板的整体整体亮点置一就是能板载通信功能,只要在开发板的卡槽上插上一张可以使用的手机卡(不支持电信),即可使用该功能。 开发板板载的通信功能包括了电话,短信,GPRS等功能,在这个实验里面我们只使用GPRS这个功能。 我们使用GPRS功能,主要是为了借助这个功能向服务器透传数据,所以我们第一步是要打开透传功能。然后我们要和服务器建立连接,这时我们需要知道服务器的地址和端口。这个实验我们借用官方提供的测试平台,发送一个自己编辑的数据包,来学习一下GPRS功能的使用方法。

        下面仔细说一下制作过程。

        三、制作主要过程

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

    2.png
        Putty数据监控图

    3.png
        示例定位图


        1、制作过程
        (1)第一步是先把手机卡插到开发板开槽上,需要保证手机卡可以使用;
        (2)在上面工作完成后,我们开始main().py文件代码的编辑;
        (3)对需要用到的类库进行声明和定义;
        (4)把我们需要使用的变量进行一下定义;
        (5)把我们需要用到的接口进行声明和定义,这里我们主要用到了串口4这个接口,声明串口4的时候,需要把串口波特率设置为115200;
        (7)下面开始主函数的编写,这个实验里面我们用到了数据包,我们先新建一个符合格式的数据包;
        (8)完成以上之后,我们需要做一个最重要的事情,那就是定义“Y6”引脚为输出,然后把:“Y6”引脚拉低两秒以上,之后把此引脚拉高。因为“Y6”引脚是控制整个板载通信系统开启的开关,如果平时我们没有用到通信系统的话,为了节省功耗,板载通信系统是处于关闭状态的,需要使用时只需要拉低“Y6”引脚两秒以上;
        (9)当看到开发板上的红色直插LED灯快速闪烁的时候,说明板载通信系统正在启动,当这个红色直插指示灯结束快闪(如果插在开发板卡槽上的手机可用,指示灯处于慢闪状态)说明板载通信系统已经启动;
        (10)完成以上工作后,准备工作就已经完成了,下面我们需要先把通信系统的通信方式设置为透传,之后再和相应的服务器地址和端口进行连接;
        (11)和服务器建立连接后,就可以开始想服务器发送数据了,直接把数据从串口4送出去就可以了,通信系统会原封不动的把你发的数据发送到服务器。


        2、具体代码:
    1. import pyb
    2. import upcd8544
    3. from machine import SPI,Pin
    4. from pyb import UART
    5. from ubinascii import hexlify
    6. from ubinascii import *#以上为声明使用到的类库
    7.   
    8.   
    9. leds = [pyb.LED(i) for i in range(1,5)]
    10. P,L,SHUCHU=0,0,0
    11. SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
    12. #DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)
    13. #CLK =>SPI(1).SCK  'X6' SPI clock
    14. RST    = pyb.Pin('X20')
    15. CE     = pyb.Pin('X19')
    16. DC     = pyb.Pin('X18')
    17. LIGHT  = pyb.Pin('X17')
    18. lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)#以上为初始化显示屏的函数,虽然                                                                                   #这次没有用到显示,但是备用
    19. count_=0
    20. N2 = Pin('Y3', Pin.OUT_PP)
    21. N1 = Pin('Y6', Pin.OUT_PP)#定义通信系统启动引脚
    22. N1.low()
    23. pyb.delay(2000)
    24. N1.high()
    25. pyb.delay(10000)#拉高拉低引脚,启动通信系统
    26. u2 = UART(4, 115200)#定义串口4,设置 波特率为115200
    27. K=5#设置一个选择变量K
    28. while (K==5):#这个循环是为了设置通信区域模式为透传模式。
    29.     u2.write('AT+CIPMODE=1\r\n')
    30.     pyb.delay(500)
    31.     if(u2.any()>0):
    32.         print('透传')
    33.         _dataRead=u2.readall()
    34.         print('透传',_dataRead.decode('utf-8'))
    35.         if(_dataRead.find(b'OK')>-1):
    36.             K=0
    37.             pyb.delay(20)
    38. u2.write('AT+CIPSTART="TCP","139.196.109.178",30000\r\n')#这个语句是为了搭建通信连                                                                                         #接。
    39. pyb.delay(10000)
    40. print('123')
    41. while (K==0):#这里是为了判断通信连接是否已经建立起来,如果没有建立起来通信的连接,                    #则等待。
    42.     pyb.delay(3000)
    43.     if(u2.any()>0):
    44.         _dataRead=u2.readall()
    45.         print('oo',_dataRead)
    46.         if(_dataRead.find(b'CONNECT OK')>-1):#这个判断是为了判断是否已经和服务器建                                                                   #立起连接来
    47.             K=1#开发板已经和服务器建立起连接来,则改变选择变量的值,使其进入下                     #一个循环
    48.             pyb.LED(1).on()
    49. while (K==1):#这个循环是执行数据传输命令的执行所在,在这个循环中进行各种数据的裁                #剪拼接和发送。
    50.     print('DOU')
    51.     #u2.write('+++')  此时整个系统进入透传通信模式,想要退出,则发送‘+++’,即可    #退出;
    52.     #u2.write('ATO0') 想让系统从指令模式进入透传模式,则发送‘ATO0’,则进入透传;
    53.     #pyb.delay(1500)
    54.     pyb.LED(2).off()
    55.     pyb.LED(3).off()
    56.     pyb.LED(2).on()
    57.     u2.write('TPGPS,1234567890abcde,36.67191670,119.17200000,201701120825,25,50,END')
    58.     #这个报文详细格式参照服务平台示例报文格式。
    59.     #把这格式里面的经纬度数据换成从定位系统获取到的经纬度,就可以实时定位了。
    60.     pyb.delay(13000)#延时一下时间,官方提供的测试平台有上传频率限制
    61.     if(u2.any()>0):#在向服务器发送了数据后,服务器会对数据进行判断,并返相应的报文                      #(报文参数详见服务平台)
    62.                     #这个返回仅适用于官方提供的服务平台,客户自己搭建的平台是否                              #存在这个功能,客户自主搭建。
    63.         _dataRead=u2.readall()
    64.         print('1212',_dataRead)
    65.     pyb.LED(3).on()
    66.     pyb.delay(10000)
    复制代码


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-24 21:49 , Processed in 0.115117 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.