最近做gprs,開始什麼都不懂,摸索了近乙個月吧,現在網路基本搭建好了。把經驗給大家分享下,歡迎多提意見。有必要說下,我不是專業搞網路的,只是需要這些臨時學習的,有很多用語只是為了方便理解。不恰當之處請見諒。
我的目標是,用stm32 採集資料,gprs將資料上傳至上位機。
一、選型。個人覺得都差不多,因為at指令絕大部分是通用的,硬體一般就是電源、指示燈、串列埠通訊。我用的是sim908,補充一下,sim100是最早的型號,後來公升級為sim300,據說快停產了要被sim900替代。sim908多了乙個gps。sim300、sim900、sim908在簡訊和gprs這些方面基本沒有什麼大的區別。然後是德國的那個tc系列,經典的是tc35還有華為的用的也不少。西姆公司sim些列挺好,我只用過這個,其他聽說的。呵呵呵
二、使用。這些模組可以理解為本身就是乙個小的微控制器可以直接和其他微控制器或者電腦進行串列埠通訊。相應的指令對應相應的反應。比我想象中的簡單。
三、gprs。 話說,這是乙個重點。困然我多久。想了很多辦法才解決。
我的方案是gprs將資料上傳至上位機。
gprs和電腦連線需要兩個東西:1、公網ip。2、埠。
這裡不得不說下公網和內網。個人理解,公網就是直接和網際網路相連的網路,比如我們家裡用貓上網的電腦,這些網路的ip位址都是網際網路可以識別的,埠也可以自己設定或者直接用。
內網我理解為區域網。但是注意有些區域網的總機那裡只有乙個路由,這個還好說。但是有些網路是通過總機然後通過多層路由器一層一層往下分的。這些ip位址是不被網際網路識別的,因為他們的ip位址是路由器給的。不能直接用來進行外網ip直接的通訊。總機的ip位址是外網的,但是這種情況下總機需要給你的電腦分配乙個埠才能用。具體操作貌似很麻煩。
還有乙個移動的網路,手機上網的時候都會有ip位址,但是這個ip位址屬於移動公司內部分配的,也屬於內網ip,不能被外網識別。可以理解為移動公司下的乙個大的區域網。呵呵
所以,兩
個處於網際網路的東西進行通訊,至少有乙個ip位址是固定的而且是公網ip,這樣才能在網際網路中找到。那麼上面說了手機的ip肯定不行啦,因為他是移動的內網。所以必須要求需要連線的電腦是固定公網ip。(其實如果是內網動態ip也有解決辦法,就是繫結乙個網域名稱做動態網域名稱解析,花生殼用的比較多。鑑於穩定性和實用性,放棄這種方法,本文不做分析,感興趣可以自己玩玩)
重點來了,gprs和上位機通訊,辦法主要有以下幾種。
1、adsl單線上網的電腦。一般這類電腦是固定的ip位址。(如果不是的話可能一兩天換一次,需要改程式了)
2、區域網。但是只有乙個路由器然後連線公網。這個可以對路由器設定,做乙個埠對映,總機的公網ip對映到自己的電腦上。這個網上搜吧,有很多人搞這個。不過我沒有試過。
3、內網。像學校、公司等都是多層區域網,而且大家遇到的困難大多都是這種。這類網路總機的公網ip是可以找到的,但是你的電腦ip位址是不被識別的,據說可以讓總機給你開乙個埠,貌似很麻煩,沒嘗試。但是遇到好多人學習也好,做產品也好碰到的大多是這種網路。是不是沒有解決辦法呢?
經過我苦苦思索和請教。終於找到乙個非常好的解決辦法!
需要的條件是:伺服器!因為伺服器是固定的外網ip。
方法1:gprs和伺服器通訊,在伺服器上寫乙個程式,把接收到的資料存入資料庫,然後由網頁讀取資料上傳至網頁。程式是vb寫的,不難,主要用到winsock控制項。這一部分我們已經基本實現。
方法2:gprs和伺服器通訊,假設上位機是電腦甲,電腦甲也和伺服器通訊(也可以用vb寫程式,不難)然後,伺服器收到gprs傳來的資料後儲存,等電腦甲和伺服器通訊的時候,伺服器把接收到的資料發給電腦甲。這種方法沒做,但是絕對可以實現。
stm32關於 上拉和下拉電阻
下面我們分析一下拉電流負載和灌電流負載的區別 圖左是灌電流負載。微控制器輸出低電平時,led亮,輸出高電平的時候,那就什麼電流都沒有,此時就不產生額外的耗電。圖右是拉電流負載。微控制器輸出低電平的時候,led不亮,此時vcc通過r2把電流全部灌進微控制器io口,並且電流時5ma,微控制器輸出高電平的...
ProtoThread在STM32上實現跑馬燈
protothread相關介紹,原始碼獲取等請到我的另乙個博文閱讀 protothread的介紹 protothread優缺點都有,它實現了乙個輕量級的基於事件觸發的執行緒模型,特別適用於走台階似的一級一級的往下走問題處理,你到了某個台階上,不走了,去了一趟廁所,回來後可以從這個台階上繼續往前走,不...
在STM32上移植FreeRTOS
freertos是乙個迷你的實時作業系統核心。作為乙個輕量級的作業系統,功能包括 任務管理 時間管理 訊號量 訊息佇列 記憶體管理 記錄功能 軟體定時器 協程等,可基本滿足較小系統的需要。開啟後如下如顯示 為了避免出錯,請將路徑改為全英文 將主程式改為如下 include freertos.h in...