[TPYBoard - Micropython] 五分种学会用TPYBoard - GPS 制作短信群发机

转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi

欢迎加入讨论群 64770604

一、什么是TPYBoard-GPS

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

二、利用TPYBoard - GPS 完成单条短信发送功能

1、具体要求

利用TPYBoard-GPS完成单条短信的发送功能

2、所需器件

TPYBoard-GPS开发板  一块

Gsm手机卡          一张

3、短信发送原理

手机的信号频率很高,一般在900Mhz左右,靠电离层反射传播,打电话的手机信号传到最近的基站,也就是移动或者连通的信号塔,再由基站把高频信号频率降低,由基站和基站之间通信,这个信号是直线传播,遇到高的建筑物会被挡住,所以那些塔都竖的很高,传到接电话的手机附近的基站,再转成高频信号发给手机。

短消息业务(SMS-Short Message Service)的实现原理很简单:

第一是存储转发机制。SMS传送数据包的工作由移动网络中的短消息中心而不是终端用户来完成,如果用户不在服务区内,短消息就被存储在短消息中心,等用户出现之后,再转发给他,这是GPRS等业务所不具备的。

第二是传递确认机制。在电路交换数据环境中,连接是端到端的,所以用户能够知道连接是否完成,以及数据传递的情况.

通俗点说:基站永远是在发射信号的,其中很重要的一部分就是广播消息,广播消息中的一类是寻呼消息(含电话号码),每个手机都在时刻监听寻呼消息,当它发现一个寻呼消息是给它的话(即有人正打它电话),它就会和基站建立连接,通过基站和打你电话的人联系。

4、代码

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() #使用程序把引脚Y6拉低两秒以上,启动通信功能
pyb.delay(2000)
N1.high()
pyb.delay(10000)#高Y6,延时10秒,这样是为了确保通信模块正常开机
u2 = UART(4, 115200)#定义串口4,波特率设置为115200
Message=‘TPYBoard_GPS‘#输入你想要发送的短信的内容;
number=‘1**********‘#输入想要发送的手机号
w=0
r=0
while r<1:
    u2.write(‘AT+CMGF=1\r\n‘)#发送AT+CMGF=1\r\n,设置模块为短信发送模式
    pyb.delay(50)
    if(u2.any()>0):
        _dataRead=u2.readall()
        print(‘1:‘,_dataRead)
        lcd_5110.lcd_write_string(‘Message:‘,0,0)
        lcd_5110.lcd_write_string(str(Message),0,2)
        if(_dataRead==b‘AT+CMGF=1\r\n\r\nOK\r\n‘):
            u2.write(‘AT+CSCS="GB2312"\r\n‘)
            pyb.delay(50)
            if(u2.any()>0):
                _dataRead=u2.readall()
                print(‘2:‘,_dataRead)
                if(_dataRead==b‘AT+CSCS="GB2312"\r\n\r\nOK\r\n‘):  #发送AT+CSCS="GB2312"\r\n,设置文本的格式
                    u2.write(‘AT+CNMI=2,1\r\n‘)  #发送AT+CNMI=2,1\r\n,设置新短息的模式
                    pyb.delay(50)
                    if(u2.any()>0):
                        _dataRead=u2.readall()
                        print(‘3:‘,_dataRead)
                        if(_dataRead==b‘AT+CNMI=2,1\r\n\r\nOK\r\n‘):
                            u2.write(‘AT+CMGS="‘+number+‘"\r\n‘)  #发送AT+CMGS="‘+number[E]+‘"\r\n,把手机号码发送进去
                            pyb.delay(50)
                            if(u2.any()>0):
                                _dataRead=u2.readall()
                                print(‘4:‘,_dataRead)#b‘AT+CMGF=1\r\n\r\nOK\r\n‘
                                if(_dataRead== b‘AT+CMGS="‘+number+‘"\r\n\r\n> ‘):  #返回手机号码正确的提示
                                    u2.write(Message+‘\r\n‘)#短信内容
                                    pyb.delay(50)#发送Message+‘\r\n‘,把设置好的内容发送出去,并延时
                                    if(u2.any()>0):
                                        _dataRead=u2.readall()
                                        print(‘5:‘,_dataRead)
                                        print(len(_dataRead))
                                        w=len(_dataRead)
                                        _dataRead=str(_dataRead)[2:w]
                                        print(‘6:‘,_dataRead)
                                        if(_dataRead==Message):  #返回发送的文本内容及相应的发送成功的提示后,结束程序
                                            print(‘7:ok‘)
                                            lcd_5110.lcd_write_string(‘Has been sent‘,0,5)
                                            r=10

5、效果

利用手机号码给number对应的手机号发送短信,内容为TPYBoard_GPS。

三、制作短信群发机

1、主要机制

(1)短信群发机是建立在上面的程序代码的基础上的;

(2)在上面的代码中,我们是建立了一个字符变量来存储电话号码,这里我们建立一个数组来 存放电话号码;

(3)在电话号码全部录入后;

(4)我们来查询一下这个数组里面有几个电话号码;

(5)然后我们对这个数组里面的数据进行依次调用;

(6)并对这个数据执行发送短信的流程;

(7)获取到这是数组中的第几个数据;

(8)如果数组中的数据全部调用了一次后,结束程序的发送;

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()#使用程序把引脚Y6拉低两秒以上,启动通信功能
pyb.delay(2000)
N1.high()
pyb.delay(10000)#高Y6,延时10秒,这样是为了确保通信模块正常开机
u2 = UART(4, 115200)#定义串口4,波特率设置为115200
Message=‘TPYBoard_GPS‘#输入你想要发送的短信的内容;
number=[‘目的号码1‘,‘目的号码2‘,‘目的号码3‘]#输入想要发送的手机号
w=0
r=0
E=0
Q=0
while r<1:
    Q=len(number)
    print(Q)
    while E<Q:
        print(number[E])
        u2.write(‘AT+CMGF=1\r\n‘)#发送AT+CMGF=1\r\n,设置模块为短信发送模式
        pyb.delay(50)
        if(u2.any()>0):
            _dataRead=u2.readall()
            print(‘1:‘,_dataRead)
            lcd_5110.lcd_write_string(‘Message:‘,0,0)
            lcd_5110.lcd_write_string(str(Message),0,2)
            if(_dataRead==b‘AT+CMGF=1\r\n\r\nOK\r\n‘):
                u2.write(‘AT+CSCS="GB2312"\r\n‘)#发送AT+CSCS="GB2312"\r\n,设置文本的格式
                pyb.delay(50)
                if(u2.any()>0):
                    _dataRead=u2.readall()
                    print(‘2:‘,_dataRead)
                    if(_dataRead==b‘AT+CSCS="GB2312"\r\n\r\nOK\r\n‘):
                        u2.write(‘AT+CNMI=2,1\r\n‘)#发送AT+CNMI=2,1\r\n,设置新短息的模式
                        pyb.delay(50)
                        if(u2.any()>0):
                            _dataRead=u2.readall()
                            print(‘3:‘,_dataRead)
                            if(_dataRead==b‘AT+CNMI=2,1\r\n\r\nOK\r\n‘):
                                u2.write(‘AT+CMGS="‘+number[E]+‘"\r\n‘)#发送AT+CMGS="‘+number[E]+‘"\r\n,把手机号码发送进去
                                pyb.delay(50)
                                if(u2.any()>0):
                                    _dataRead=u2.readall()
                                    print(‘4:‘,_dataRead)#b‘AT+CMGF=1\r\n\r\nOK\r\n‘
                                    if(_dataRead== b‘AT+CMGS="‘+number[E]+‘"\r\n\r\n> ‘):#返回手机号码正确的提示
                                        u2.write(Message+‘\r\n‘)                                        pyb.delay(50)#发送Message+‘\r\n‘,把设置好的内容发送出去,并延时
                                        if(u2.any()>0):
                                            _dataRead=u2.readall()
                                            print(‘5:‘,_dataRead)
                                            print(len(_dataRead))
                                            w=len(_dataRead)
                                            _dataRead=str(_dataRead)[2:w]
                                            print(‘6:‘,_dataRead)
                                            if(_dataRead==Message):#返回发送的文本内容及相应的发送成功的提示后,结束程序
                                                print(‘7:ok‘)
                                                E=E+1
                                                lcd_5110.lcd_write_string(‘OK IS:‘+str(E),0,5)
                                                pyb.delay(24000)
    r=10
    E=0

3、效果

给number里列出的所有手机号逐一发送短信,内容为TPYBoard_GPS。

这里可以自己控制delay时间,比如加入一个随机数,我就不再多写了,各自自己发挥吧。

时间: 2024-08-03 19:25:35

[TPYBoard - Micropython] 五分种学会用TPYBoard - GPS 制作短信群发机的相关文章

[TPYBoard - Micropython 之会python就能做硬件 9] 五分种学会用TPYBoard V102 制作避障小车(升级版)

转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 感谢山东萝卜电子科技公司授权 一.实验器材 1.TPYboard V102板  1块 2.电机驱动模块L298N   1个 3.电机 2块 4.小车底盘 1个 5.超声波模块 1个 6.舵机 1个 7.SG90舵机支架 1个 8.超声波云台支架 1个 二.超声波模块 1.什么是超声波模块 超声波传感器是利用超声波的特性研制而成的传感器, 它是通过传送一个超声波(远高于人的听觉范

MicroPython+北斗+GPS+GPRS:TPYBoardv702短信功能使用说明

转载请以链接形式注明文章来源(MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇) TPYBoardv702是目前市面上唯一支持通信定位功能的MicroPython开发板:支持Python3.0及以上版本直接运行.支持GPS+北斗双模定位.GPRS通信.短信功能.电话功能:板载温湿度.光敏.三轴加速度传感器.蜂鸣器.LCD5110显示屏.免费提供定位测试服务平台. TPYBord_V7.0.2开发板上板载的通信器件是由深圳合方圆公司研发发的GU620通

工业级短信猫当中比较稳定的款式有哪几种

工业级短信猫是采用法国wavecom原装模块的短信猫设备,比较常见的几中如Q2303A.Q2403A与Q2358C,其中Q2303A针对的是GSM短信猫设备,Q2403A针对的是GPRS短信猫,这两款的差别是GPRS短信猫支持短信.彩信,性能上比GSM会稳定.而Q2358C是对应的CDMA短信猫,支持中国电信卡由于相关支持CDMA短信猫的软件兼容性等问题用于二次开发收发短信不比GSM.所以综合比较几款工业级短信猫的稳定优先级是:GPRS短信猫(Q2403A)>GSM短信猫(Q2303A)>CD

快速排序--QuickSort,看完五分彩开奖网平台搭建自己就能写出来的快排思路推演

快速五分彩开奖网平台搭建论坛:haozbbs.com Q1446595067排序(QuickSort)介绍首先发明者竟然敢给自己发明的算法叫做QuickSort,这个名字闪不闪亮?好比别的武功叫做六脉神剑.降龙十八掌,我这个叫做"天下无敌神功".别的排序算法都是按照特点来起的,你这个不是应该叫分块递归排序法吗?或者和希尔一样,叫做霍尔排序也可以啊,这么高调是要干啥啊?我给了他一次机会,特意去查了一下,这个名字并不是江湖朋友抬爱给的,就是发明者自己起的,社会社会...不过看完这篇博客,理

Java实例详细五分彩网站开发讲解ArrayList用法

Java.util.ArrayList类是五分彩网站开发haozbbs.comQ1446595067一个动态数组类型,也就是说,ArrayList对象既有数组的特征,也有链表的特征.可以随时从链表中添加或删除一个元素.ArrayList实现了List接口. 大家知道,数组是静态的,数组被初始化之后,数组长度就不能再改变了.ArrayList是可以动态改变大小的.那么,什么时候使用Array(数组),什么时候使用ArrayList?答案是:当我们不知道到底有多少个数据元素的时候,就可使用Array

MyEclispe SSH五分-彩平台出租项目框架搭建

基于MyEclipse2014,首先五分-彩平台出租 Q1446595067注意SHH框架的搭建顺序,Struts2-Spring-Hibernate1.搭建Struts2框架1.1首先创建Web Project,创建的时候注意勾选,会自动生成web.xml,否则自己手动创建比较麻烦**这里写图片描述1.2搭建Struts2框架.搭建SSH框架的方式有两种,第一种是自己下载jar包,手动导入,创建并编写配置文件,第二种通过MyEclipse自动创建,我们这里使用第二种! 右键项目-MyEclis

五分彩源码搭建与机器学习

框架介绍 1.Apache Singa 是一个用于在大型数据集上训练深度学习的通用分布式深度学习平台,它是基于分层抽象的简单开发模型设计的. 五分彩源码搭建 QQ:2152876294 网址diguaym.com 它还支持各种当前流行的深度学习模型,有前馈模型(卷积神经网络,CNN),能量模型(受限玻尔兹曼机,RBM和循环神经网络,RNN),还为用户提供了许多内嵌层. 2.Amazon Machine Learning(AML)是一种让各种级别使用机器学习技术的开发人员可轻松掌握的一个服务,提供

堆栈的应用——用JavaScript描述五分彩平台出租数据结构

栈(stack)又名堆栈,它是一种五分彩平台出租(www.1159880099.com)QQ1159880099 运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底. 一.实现一个栈类Stack基于堆栈的特性,可以用数组做线性表进行存储.初始化Stack类的结构如下: function Stack(){this.space = [];} Stack.prototype = {constructor: Stack,/ 接口code /};接下来

搜达五分法:瑞士期待复仇法兰西

两支球队在首场小组赛中都全取3分,为小组出线奠定了不错的基础.对于瑞士队来说,首场能够拿下厄瓜多尔虽说结果令人满意但是过程却有些幸运的味道,所以全队并不能掉以轻心.就像在上届世界杯赛中那样,首轮在战胜西班牙的大好局面下,后两场比赛没能把握住机会惨遭淘汰.本场对阵法国,瑞士首要的任务还是做好防守,选择他们比较擅长的防守反击战术,即便不能取胜,打平也是一个不错的结果.而对于法国队来说,首场大胜洪都拉斯,次战瑞士当网络pos机然想取得2连胜尽早确定出线资格. 搜达五分法:瑞士期待复仇法兰西,布布扣,b