欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3668|回復(fù): 0
收起左側(cè)

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

[復(fù)制鏈接]
ID:130183 發(fā)表于 2017-8-30 17:20 | 顯示全部樓層 |閱讀模式
  TPYBoardv702是目前市面上唯一支持通信定位功能的MicroPython開發(fā)板:支持Python3.0及以上版本直接運(yùn)行。支持GPS+北斗雙模定位、GPRS通信、短信功能、電話功能;板載溫濕度、光敏、三軸加速度傳感器、蜂鳴器、LCD5110顯示屏。免費(fèi)提供定位測試服務(wù)平臺(tái)。

  TPYBord_V7.0.2開發(fā)板上板載的通信器件是由深圳合方圓公司研發(fā)發(fā)的GU620通信定位模塊,此模塊功能強(qiáng)大,同時(shí)支持GPS,GPRS,GSM,藍(lán)牙等功能,這次就來具體的說一下發(fā)送短信的功能的使用。

1.png

  能實(shí)現(xiàn)短信功能后還能依托著短信的功能實(shí)現(xiàn)溫濕度的實(shí)時(shí)獲取,經(jīng)緯度的實(shí)時(shí)獲取(可能比較費(fèi)短信費(fèi)哦),

  1.初識(shí)短信發(fā)送原理

  手機(jī)的信號(hào)頻率很高,一般在900Mhz左右,靠電離層反射傳播,打電話的手機(jī)信

  號(hào)傳到最近的基站,也就是移動(dòng)或者連通的信號(hào)塔,再由基站把高頻信號(hào)頻率降低,由

  基站和基站之間通信,這個(gè)信號(hào)是直線傳播,遇到高的建筑物會(huì)被擋住,所以那些塔都

  豎的很高,傳到接電話的手機(jī)附近的基站,再轉(zhuǎn)成高頻信號(hào)發(fā)給手機(jī)。

  短消息業(yè)務(wù)(SMS-ShortMessageService)的實(shí)現(xiàn)原理很簡單,:

  第一是存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制。SMS傳送數(shù)據(jù)包的工作由移動(dòng)網(wǎng)絡(luò)中的短消息中心而不是終端用戶來完成,如果用戶不在服務(wù)區(qū)內(nèi),短消息就被存儲(chǔ)在短消息中心,等用戶出現(xiàn)之后,再轉(zhuǎn)發(fā)給他,這是GPRS等業(yè)務(wù)所不具備的。第二是傳遞確認(rèn)機(jī)制。在電路交換數(shù)據(jù)環(huán)境中,連接是端到端的,所以用戶能夠知道連接是否完成,以及數(shù)據(jù)傳遞的情況.

  通俗點(diǎn)說:

  基站永遠(yuǎn)是在發(fā)射信號(hào)的,其中很重要的一部分就是廣播消息,廣播消息中的一類是尋呼消息(含電話號(hào)碼),每個(gè)手機(jī)都在時(shí)刻監(jiān)聽尋呼消息,當(dāng)它發(fā)現(xiàn)一個(gè)尋呼消息是給它的話(即有人正打它電話),它就會(huì)和基站建立連接,通過基站和打你電話的人聯(lián)系。

  2.了解GU620的短信發(fā)送流程

  通過上面的描述,我們了解到了短信發(fā)送的基本原理和流程,下面我來了解一下GU620模塊在應(yīng)對這些流程時(shí)需要怎么做。

  首先的我們需要把模塊設(shè)置到短信發(fā)送的模式,這個(gè)通過AT指令A(yù)T+CMGF=1,來設(shè)置,這條指令是設(shè)置模塊為打開短信發(fā)送格式,且以文本的格式發(fā)送。

  上面一條我們說了,把短信以文本的模式發(fā)送,但是文本有很多種格式,這里我們再執(zhí)行一條指令,把文本的格式設(shè)置成我們手機(jī)能穩(wěn)定且正確識(shí)別的文本格式,AT+CSCS=“GB2312”,這條指令是把短信收發(fā)的文本格式設(shè)置為簡體中文。

  上面兩條介紹了設(shè)置發(fā)送短信的模式和文本格式,這里說一個(gè)意外事件(在想要執(zhí)行的流程之外發(fā)生的事件)發(fā)生的處理方法,要是在你正要發(fā)短信的時(shí)候,有一條新的短信進(jìn)來了,那這個(gè)怎么辦?要是新的短信一接收到,馬上顯示出來,顯然不是很合理,會(huì)打斷我們的流程,在這里我們使用AT+CNMI=2,1指令把接收到的新消息存儲(chǔ)到SIM卡中,然后再給出提示,在我們想讀的時(shí)候再讀出來,這樣比較符合常理。

  在我們設(shè)置好以上的這些基本的設(shè)置步驟后,我們需要把發(fā)短信的一個(gè)重要因素,接收方的手機(jī)號(hào)碼寫進(jìn)模塊去,我們使用指令A(yù)T+CMGS=“手機(jī)號(hào)碼”,這條指令是告訴模塊想要通信的目的號(hào)碼。

  在發(fā)送了正確的指令和手機(jī)號(hào)后模塊會(huì)有提示正確的返回值,當(dāng)?shù)玫竭@個(gè)返回值的時(shí)候,我們就可以把我們想要發(fā)送的內(nèi)容(不支持漢字)編輯進(jìn)去,這樣模塊就會(huì)把編輯的短信內(nèi)容發(fā)送給前面輸入的手機(jī)號(hào)碼上去。

  當(dāng)發(fā)送成功后,會(huì)返回發(fā)送的內(nèi)容,以及相應(yīng)的提示內(nèi)容。

  3.設(shè)置程序流程

  根據(jù)以上的介紹,我們大致了解了短信發(fā)送的基本流程,那么我們疾苦依據(jù)這個(gè)基本流程來設(shè)置一下程序的流程。

  1.開發(fā)板上電,紅色電源指示燈會(huì)亮起;

  2.首先定義串口4,波特率設(shè)置為115200,通信模塊和32芯片是依靠串口通信的;

  3.之后我們設(shè)置兩個(gè)變量Message,number來存儲(chǔ)短信內(nèi)容和接收方的手機(jī)號(hào)碼;

  4.在程序的頂端,總循環(huán)的外面,使用程序把引腳Y6拉低兩秒以上,Y6是連接通信模塊的開關(guān)機(jī)引腳的;

  5.之后拉高Y6,延時(shí)10秒,這樣是為了確保通信模塊正常開機(jī);

  6.之后我們發(fā)送AT+CMGF=1\r\n,設(shè)置模塊為短信發(fā)送模式;

  7.如果模塊返回正確的提示內(nèi)容,我們發(fā)送AT+CSCS="GB2312"\r\n,設(shè)置文本的格式;

  8.模塊返回正確提示內(nèi)容后,發(fā)送AT+CNMI=2,1\r\n,設(shè)置新短息的模式;

  9.設(shè)置成后,發(fā)送AT+CMGS="'+number+'"\r\n,把手機(jī)號(hào)碼發(fā)送進(jìn)去;

  10.當(dāng)模塊返回手機(jī)號(hào)碼正確的提示后,發(fā)送Message+'\r\n',把設(shè)置好的內(nèi)容發(fā)送給模塊;

  11.模塊返回發(fā)送的文本內(nèi)容及相應(yīng)的發(fā)送成功的提示后,結(jié)束程序。

  4.源代碼

  下面是我寫的簡單的一個(gè)代碼,提供給大家參考。

  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. leds = [pyb.LED(i) for i in range(1,5)]
  8. P,L,SHUCHU=0,0,0
  9. SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
  10. #DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)
  11. #CLK =>SPI(1).SCK  'X6' SPI clock
  12. RST    = pyb.Pin('X20')
  13. CE     = pyb.Pin('X19')
  14. DC     = pyb.Pin('X18')
  15. LIGHT  = pyb.Pin('X17')
  16. lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)
  17. count_=0
  18. N2 = Pin('Y3', Pin.OUT_PP)
  19. N1 = Pin('Y6', Pin.OUT_PP)
  20. N1.low()
  21. pyb.delay(2000)
  22. N1.high()
  23. pyb.delay(10000)
  24. u2 = UART(4, 115200)
  25. Message='TPYBoard_GPS00000000000001'#輸入你想要發(fā)送的短信的內(nèi)容;
  26. number='目的號(hào)碼'#輸入想要發(fā)送的手機(jī)號(hào)
  27. w=0
  28. r=0
  29. while r<1:
  30.     u2.write('AT+CMGF=1\r\n')
  31.     pyb.delay(50)
  32.     if(u2.any()>0):
  33.         _dataRead=u2.readall()
  34.         print('1:',_dataRead)
  35.         lcd_5110.lcd_write_string('Message:',0,0)
  36.         lcd_5110.lcd_write_string(str(Message),0,2)
  37.         if(_dataRead==b'AT+CMGF=1\r\n\r\nOK\r\n'):
  38.             u2.write('AT+CSCS="GB2312"\r\n')
  39.             pyb.delay(50)
  40.             if(u2.any()>0):
  41.                 _dataRead=u2.readall()
  42.                 print('2:',_dataRead)
  43.                 if(_dataRead==b'AT+CSCS="GB2312"\r\n\r\nOK\r\n'):
  44.                     u2.write('AT+CNMI=2,1\r\n')
  45.                     pyb.delay(50)
  46.                     if(u2.any()>0):
  47.                         _dataRead=u2.readall()
  48.                         print('3:',_dataRead)
  49.                         if(_dataRead==b'AT+CNMI=2,1\r\n\r\nOK\r\n'):
  50.                             u2.write('AT+CMGS="'+number+'"\r\n')
  51.                             pyb.delay(50)
  52.                             if(u2.any()>0):
  53.                                 _dataRead=u2.readall()
  54.                                 print('4:',_dataRead)#b'AT+CMGF=1\r\n\r\nOK\r\n'
  55.                                 if(_dataRead== b'AT+CMGS="'+number+'"\r\n\r\n> '):
  56.                                     u2.write(Message+'\r\n')#短信內(nèi)容
  57.                                     pyb.delay(50)
  58.                                     if(u2.any()>0):
  59.                                         _dataRead=u2.readall()
  60.                                         print('5:',_dataRead)
  61.                                         print(len(_dataRead))
  62.                                         w=len(_dataRead)
  63.                                         _dataRead=str(_dataRead)[2:w]
  64.                                         print('6:',_dataRead)
  65.                                         if(_dataRead==Message):
  66.                                             print('7:ok')
  67.                                             lcd_5110.lcd_write_string('Has been sent',0,5)
  68.                                             r=10
復(fù)制代碼




  5.短信群發(fā)機(jī)制作:

  1.短信群發(fā)機(jī)是建立在上面的程序代碼的基礎(chǔ)上的;

  2.在上面的代碼中,我們是建立了一個(gè)字符變量來存儲(chǔ)電話號(hào)碼,這里我們建立一個(gè)數(shù)組來存放電話號(hào)碼;

  3.在電話號(hào)碼全部錄入后;

  4.我們來查詢一下這個(gè)數(shù)組里面有幾個(gè)電話號(hào)碼(也就是告訴芯片你要給幾個(gè)手機(jī)發(fā)短信);

  5.然后我們對這個(gè)數(shù)組里面的數(shù)據(jù)進(jìn)行依次調(diào)用;

  6.并對這個(gè)數(shù)據(jù)執(zhí)行發(fā)送短信的流程;

  7.并獲取到這是數(shù)組中的第幾個(gè)數(shù)據(jù);

  8.如果數(shù)組中的數(shù)據(jù)全部調(diào)用了一次后,結(jié)束程序的發(fā)送;

  6.短信群發(fā)機(jī)例程

  下面是我做的短信群發(fā)機(jī)的例程,給出來參考一下。

  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. leds = [pyb.LED(i) for i in range(1,5)]
  8. P,L,SHUCHU=0,0,0
  9. SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
  10. #DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)
  11. #CLK =>SPI(1).SCK  'X6' SPI clock
  12. RST    = pyb.Pin('X20')
  13. CE     = pyb.Pin('X19')
  14. DC     = pyb.Pin('X18')
  15. LIGHT  = pyb.Pin('X17')
  16. lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)
  17. count_=0
  18. N2 = Pin('Y3', Pin.OUT_PP)
  19. N1 = Pin('Y6', Pin.OUT_PP)
  20. N1.low()
  21. pyb.delay(2000)
  22. N1.high()
  23. pyb.delay(10000)
  24. u2 = UART(4, 115200)
  25. Message='TPYBoard_GPS'#輸入你想要發(fā)送的短信的內(nèi)容;
  26. number=['目的號(hào)碼1','目的號(hào)碼2','目的號(hào)碼3']#輸入想要發(fā)送的手機(jī)號(hào)
  27. w=0
  28. r=0
  29. E=0
  30. Q=0
  31. while r<1:
  32.     Q=len(number)
  33.     print(Q)
  34.     while E<Q:
  35.         print(number[E])
  36.         u2.write('AT+CMGF=1\r\n')
  37.         pyb.delay(50)
  38.         if(u2.any()>0):
  39.             _dataRead=u2.readall()
  40.             print('1:',_dataRead)
  41.             lcd_5110.lcd_write_string('Message:',0,0)
  42.             lcd_5110.lcd_write_string(str(Message),0,2)
  43.             if(_dataRead==b'AT+CMGF=1\r\n\r\nOK\r\n'):
  44.                 u2.write('AT+CSCS="GB2312"\r\n')
  45.                 pyb.delay(50)
  46.                 if(u2.any()>0):
  47.                     _dataRead=u2.readall()
  48.                     print('2:',_dataRead)
  49.                     if(_dataRead==b'AT+CSCS="GB2312"\r\n\r\nOK\r\n'):
  50.                         u2.write('AT+CNMI=2,1\r\n')
  51.                         pyb.delay(50)
  52.                         if(u2.any()>0):
  53.                             _dataRead=u2.readall()
  54.                             print('3:',_dataRead)
  55.                             if(_dataRead==b'AT+CNMI=2,1\r\n\r\nOK\r\n'):
  56.                                 u2.write('AT+CMGS="'+number[E]+'"\r\n')
  57.                                 pyb.delay(50)
  58.                                 if(u2.any()>0):
  59.                                     _dataRead=u2.readall()
  60.                                     print('4:',_dataRead)#b'AT+CMGF=1\r\n\r\nOK\r\n'
  61.                                     if(_dataRead== b'AT+CMGS="'+number[E]+'"\r\n\r\n> '):
  62.                                         u2.write(Message+'\r\n')#短信內(nèi)容
  63.                                         pyb.delay(50)
  64.                                         if(u2.any()>0):
  65.                                             _dataRead=u2.readall()
  66.                                             print('5:',_dataRead)
  67.                                             print(len(_dataRead))
  68.                                             w=len(_dataRead)
  69.                                             _dataRead=str(_dataRead)[2:w]
  70.                                             print('6:',_dataRead)
  71.                                             if(_dataRead==Message):
  72.                                                 print('7:ok')
  73.                                                 E=E+1
  74.                                                 lcd_5110.lcd_write_string('OK IS:'+str(E),0,5)
  75.                                                 pyb.delay(24000)
  76.     r=10
  77.     E=0


復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表