python+樹莓派實現IoT(物聯網)資料上傳到伺服器

來源:互聯網
上載者:User

標籤:python版本   成功   樹莓派串口   操作   通訊模組   方式   2.7   ext   存在   

環境:raspbian-stretch(2018-06-27)

樹莓派:3代B型

1、樹莓派裝置,需要在野外也能擁有獨立連網能力,那必不可少的需要使用物聯網模組。

這裡使用的是微雪的SIM868通訊模組,如:

 

 2、將SIM868如下插入在空展板中,SIM868中使用的是聯通4Gsim卡,其實SIM868採用PIN#8(TX)、PIN#10(RX)引腳與樹莓派進行串口通訊,供電則是通過PIN#4(5V)、PIN#6(GOUND)支援。SIM868模組採用http傳輸協議與伺服器串連。

3、伺服器配置

安裝Apache服務,使用xampp軟體安裝該服務,xampp連結:https://pan.baidu.com/s/15dt5s3DbZVd8YPckv2GkzA 密碼:78fg

運行XAMPP Control Panel,

啟動Apache服務,如果啟動失敗,應該是連接埠被佔用,更改Apache的服務連接埠,就OK!

4、程式碼

1)、python代碼

import timeimport serial def send_data(param):    W_http_6=‘AT+HTTPPARA="URL","http://120.78.181.110:90/iot.php?status=‘+str(param)+‘"\r\n‘    ser.write(W_http_6)    time.sleep(2)    W_http_7=‘AT+HTTPACTION=0\r\n‘    ser.write(W_http_7)    time.sleep(1)if __name__ == ‘__main__‘:    ser = serial.Serial("/dev/ttyS0",115200)    print ser    W_http_1=‘AT+HTTPTERM\r\n‘    ser.write(W_http_1)    print "http_1"    time.sleep(2)    W_http_2=‘AT+SAPBR=3,1,"CONTYPE","GPRS"\r\n‘    ser.write(W_http_2)    print "http_2"    time.sleep(2)    W_http_3=‘AT+SAPBR=3,1,"APN","CMNET"\r\n‘    ser.write(W_http_3)    print "http_3"    time.sleep(2)    W_http_4=‘AT+SAPBR=1,1\r\n‘    ser.write(W_http_4)    print "http_4"    time.sleep(2)    W_http_5=‘AT+HTTPINIT\r\n‘    ser.write(W_http_5)    print "http_5"    time.sleep(2)        status=1    while True:    send_data(status)    print status    status = status+1        time.sleep(3)

 

 2)、php程式碼:

<?phpheader("Content-type: text/html; charset=utf-8");$file  = ‘log.txt‘;//要寫入檔案的檔案名稱(可以是任意檔案名稱),如果檔案不存在,將會建立一個$status = $_GET[‘status‘];echo $status ;    if($status != ""){    $content = "status=".$status.",time=".date("Y/m/d H:i:sa")."\n";      if($f  = file_put_contents($file, $content,FILE_APPEND)){// 這個函數支援版本(PHP 5)         echo "寫入成功。<br />";    }}if($data = file_get_contents($file)){; // 這個函數支援版本(PHP 4 >= 4.3.0, PHP 5)     echo "寫入檔案的內容是:$data";}                      ?>

 

 5、代碼解析

這裡使用的Python版本號碼為2.7.13

import timeimport serial 
引用了python的2個類庫time以及串口調試庫serial,為實現程式的調試可編寫,在使用serial串口調試庫前,要實現樹莓派的串口配置和Linux系統下的串口調試工具minicom的安裝。具體方法可參考之前的文章《樹莓派串口配置及minicom的安裝》

def send_data(param): W_http_6=‘AT+HTTPPARA="URL","http://120.78.181.110:90/iot.php?status=‘+str(param)+‘"\r\n‘ ser.write(W_http_6) time.sleep(2) W_http_7=‘AT+HTTPACTION=0\r\n‘ ser.write(W_http_7) time.sleep(1)
這裡將主函數迴圈的狀態status變數的值當做參數傳送給你個send_data()函數,在添加到HTTP請求的URL中,在伺服器端寫了個PHP程式iot.php(程式源碼解析如下)用以接收SIM868通訊模組發送過來的HTTP請求,並使用GET的方式獲得到HTTP請求URL中傳入的status值,並插入到日誌txt中。if __name__ == ‘__main__‘: ser = serial.Serial("/dev/ttyS0",115200) print ser W_http_1=‘AT+HTTPTERM\r\n‘ ser.write(W_http_1) print "http_1" time.sleep(2) W_http_2=‘AT+SAPBR=3,1,"CONTYPE","GPRS"\r\n‘ ser.write(W_http_2) print "http_2" time.sleep(2) W_http_3=‘AT+SAPBR=3,1,"APN","CMNET"\r\n‘ ser.write(W_http_3) print "http_3" time.sleep(2) W_http_4=‘AT+SAPBR=1,1\r\n‘ ser.write(W_http_4) print "http_4" time.sleep(2) W_http_5=‘AT+HTTPINIT\r\n‘ ser.write(W_http_5) print "http_5" time.sleep(2) status=1 while True: send_data(status) print status status = status+1 time.sleep(3)

以上代碼是在通過調用serial庫,設定樹莓派串口通訊的傳輸速率為115200,並使用 ser.write()函數向串口寫入可操作SIM868模組進行通訊的AT指令,這裡的AT指令是對SIM868進行HTTP通訊前的配置,具體AT指令的含義在這裡不再贅述,可自行百度尋找。這是使用time.sleep()函數控製程序執行的等待時間,確保串口寫入資料成功。

 

<?phpheader("Content-type: text/html; charset=utf-8");$file  = ‘log.txt‘;//要寫入檔案的檔案名稱(可以是任意檔案名稱),如果檔案不存在,將會建立一個$status = $_GET[‘status‘];//從url中擷取status參數的值echo $status ; //輸出status參數的值 if($status != "")//如果status參數有值,則將該值插入到日誌中{    $content = "status=".$status.",time=".date("Y/m/d H:i:sa")."            \n";//定義插入到日誌的資料格式       if($f  = file_put_contents($file, $content,FILE_APPEND)){// 這個函數支援版本(PHP 5)         echo "寫入成功。<br />";    }}//讀出日誌中的所有資料,並輸出到html中if($data = file_get_contents($file)){; // 這個函數支援版本(PHP 4 >= 4.3.0, PHP 5)     echo "寫入檔案的內容是:$data";}                      ?>

 參考資料:http://www.eefocus.com/communication/397109

 

python+樹莓派實現IoT(物聯網)資料上傳到伺服器

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.