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

视频演示:
http://v.youku.com/v_show/id_XMjQ4MjgyMjI2OA==.html?spm=a2h3j.8428770.3416059.1
二、利用TPYBoardV702完成接收提示来电,并在显示屏上显示来电号码及来电人员称谓
1、具体要求
利用TPYBoardV702完成接收提示来电,并在显示屏上显示来电号码及来电人员称谓
2、所需器件
TPYBoardV702开发板一块
5110显示屏一块
Gsm手机卡一张
TPYBoardV702开发板板载GSM通信功能,无需外接
3、板载通信功能及使用介绍
V702的开发板的整体整体亮点置一就是能板载通信功能,只要在开发板的卡槽上插上一张可以使用的手机卡(不支持电信),即可使用该功能。
开发板板载的通信功能包括了电话,短信,GPRS等功能,在这个实验里面我们只使用电话这个功能。
开发板板载的通信功能已经设计的很完善,在接到来电的时候,会主动的把来电的信息通过串口4发送进来,这样一来作为用户的我们就是需要把数据进行相应的处理加显示就可以了。
三、制作主要过程
先上个图,下面再开始说代码的问题。

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是否有数据发送过来,当检测到串口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)#定义“Y3”为输出模式,这个引脚是控制蜂鸣器的,来电话了 #需要响铃的
N1 = Pin('Y6', Pin.OUT_PP)#定义“Y6”位输出模式,“Y6”引脚是板载通信系统的开关控 #制引脚
N1.low()
pyb.delay(2000)
N1.high()
pyb.delay(10000)#通过拉低拉高开光控制引脚,启动通信系统
u2 = UART(4, 115200)#设置串口4,并设置串口波特率为115200
i='0'
w=0
d=0
q=0
G=0
j=0
while 0<1:
N2.low()#设置蜂鸣器控制引脚为低电平,不让蜂鸣器响
if(u2.any()>0):#检测串口4是否有数据,如果有数据执行以下
_dataRead=u2.readall()
if _dataRead!=None:#判断串口4的数据是否为空,不为空执行以下代码
print('原始数据=',_dataRead)
print('原始数据长度:',len(_dataRead))
print('123',_dataRead[2:6])
RING=_dataRead[2:6]#截取包头,这个包头是为了判断数据是否正确的重要依 #据
print('111',_dataRead[18:29])
HM=_dataRead[18:29]#数据的18至29位是数据中携带的手机号码,我们把它 #们保存出来
WD='No such person'#设置一个变量,这个变量我们可以称为是电话本类比变 #量,主要是作为显示时什么人来电,例如显示张三, #或者李四
if(RING==b'RING'):#判断包头正确,执行下面代码
if(HM==b'18654868920'):#判断来电是否是一个已经存储的号码
WD='TPYBoard_GPS'#如果是,显示存储名称,如果没有存储显示'No #such person'
#**********************时间************************
N2.high()#拉高蜂鸣器控制引脚,使蜂鸣器响铃
lcd_5110.lcd_write_string('Phone Number:',0,0)
lcd_5110.lcd_write_string(HM.decode("utf8"),2,1)
lcd_5110.lcd_write_string('The contact:',0,2)
lcd_5110.lcd_write_string(str(WD),0,3)#显示相应的来电号码,来电人称谓 #等
pyb.delay(1000)
Micropython实例之TPYBoard来电显示功能演示的更多相关文章
- MicroPython实例之TPYBoard开发板控制OLED显示中文
0x00 前言 之前看到一篇文章是关于TPYBoard v102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近利用空余时间搞定了这个实验,特此将实验过程及源码分享出来,方便以 ...
- Expression Blend实例动画-大坝水位升高演示
原文:Expression Blend实例动画-大坝水位升高演示 Expression Blend是个很强大的东西,用它可以完成很多不好做的动画效果. 动画的主要元素: 时间线(Timeline) : ...
- MicroPython教程之TPYBoard开发板DIY红外寻迹小车
智能小车现在差不多是电子竞赛或者DIY中的主流了,寻迹,壁障,遥控什么的,相信大家也都见得很多了,这次就大家探讨一下寻迹小车的制作方法,不同于以往的是这次的程序不用C语言写,而是要使用python语言 ...
- MicroPython开发板TPYBoard关于USB-HID的应用
USB-HID是Human Interface Device的缩写,属于人机交互操作的设备,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球.电话拨号设备.VCR遥控等等设备. ...
- MicroPython教程之TPYBoard v102 CAN总线通信
0x00前言 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串行通信协议.CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探测和管 ...
- Micropython教程之TPYBoard制作蓝牙+红外循迹小车
1.实验目的 学习在PC机系统中扩展简单I/O接口的方法. 进一步学习编制数据输出程序的设计方法. 学习蓝牙模块的接线方法及其工作原理. 学习L298N电机驱动板模块的接线方法. 学习蓝牙控制小车的工 ...
- MicroPython教程之TPYBoard开发板DIY小型家庭气象站
众所周知,iPhone6/6Plus内置气压传感器,不过大家对于气压传感器还是很陌生.跟字面的意思一样,气压传感器就是用来测量气压的,但测量气压对于普通的手机用户来说又有什么作用呢? 海拔高度测量 对 ...
- Micropython教程之TPYBoard开发板驱动舵机教程(萝卜学科编程教育)
大家应该都看到过机器人的手臂啊腿脚啊什么的一抽一抽的在动弹吧...是不是和机械舞一样的有节奏,现在很多机器人模型里面的动力器件都是舵机. 但是大家一般见到的动力器件都是像步进电机,直流电机这一类的动力 ...
- MicroPython最全资料集锦丨TPYBoard全系列教程之文档+例程源码
MicroPython成功将Python引入到嵌入式领域,近几年MicroPython的发展和普及也证明,Python无疑将在未来几年内快速抢占和蚕食C/C++的份额.包括现在比较火爆的机器人.无人机 ...
随机推荐
- 【Hdu3555】 Bomb(数位DP)
Description 题意就是找0到N有多少个数中含有49. \(1\leq N \leq2^{63}-1\) Solution 数位DP,与hdu3652类似 \(F[i][state]\)表示位 ...
- 本地创建Duplicate数据库
本地创建Duplicate数据库,新创建的文件路径与目标数据库不同,并且辅助实例的初始化參数DB_NAME与目标数据库不能同样. 1.创建辅助实例的秘钥文件 [oracle@linux5 dbs]$ ...
- 中小企业为什么要上HR系统
人力资源不不过公司资源.也是一种社会资源. 越来越多的企业已将人作为一种重要的资源来看待,资金和技术则是其次.所以企业内部科学的全面的人力资源管理也因此处在了十分重要的位置上. 现在的人力资源是服务于 ...
- EBS採购模块中的级联接收和级联接收事务
EBS採购模块中的级联接收和级联接收事务 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习.请注明出处:否则请与本人联系.违者必究) 级联接收和级联接收事务 级联功能对来自于同一个供应商 ...
- 浅谈MySQL中的查询优化
mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等.这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整 ...
- 【转载】Java系列笔记(1) - Java 类加载与初始化
Java系列笔记(1) - Java 类加载与初始化 原文地址:http://www.cnblogs.com/zhguang/p/3154584.html 目录 类加载器 动态加载 链接 初始化 示例 ...
- Elasticsearch聚合——aggregation
聚合提供了分组并统计数据的能力.理解聚合的最简单的方式是将其粗略地等同为SQL的GROUP BY和SQL聚合函数.在Elasticsearch中,你可以在一个响应中同时返回命中的数据和聚合结果.你可以 ...
- String类为什么要用final修饰(面试回答)
String是所有语言中最常用的一个类.我们知道在Java中,String是不可变的.final的.Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类 ...
- Redis的那些最常见面试问题
随笔:经过长达一周的奔波和面试,电话面试,回首今天终于成功的入职了,总共面试了大概10家公司,包括阿里,京东,IBM等等,京东技术过了,学历因为非统招就被pass了,阿里面了2次电话面试就没下文了,估 ...
- PHP对象注入 PHP Object Injection
From:PHP Object Injection Last revision (mm/dd/yy): 01/7/2015 译者:李秋豪 Wednesday, 24. May 2017 05:48PM ...