0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Arduino和GPRS將數(shù)據(jù)發(fā)送到SparkFun服務(wù)器

科技觀察員 ? 來源:circuitdigest ? 作者:薩達(dá)姆 ? 2023-01-25 15:45 ? 次閱讀

今天我們?cè)谶@里有一個(gè)有趣的項(xiàng)目,我們將 使用Arduino和GPRS將數(shù)據(jù)發(fā)送到SparkFun服務(wù)器 。這是一個(gè)基于物聯(lián)網(wǎng)的項(xiàng)目,我們將使用 GPRS, 存在于 GSM 模塊 SIM900A 板上, 將一些數(shù)據(jù)發(fā)送到互聯(lián)網(wǎng)上的網(wǎng)絡(luò)服務(wù).

在這個(gè)項(xiàng)目中,我們將簡(jiǎn)單地使用4x4字母數(shù)字鍵盤輸入一些文本,并使用Arduino和GPRS將其發(fā)送到SparkFun網(wǎng)站,從那里您可以通過互聯(lián)網(wǎng)從任何地方看到這些數(shù)據(jù)。在這里,我們還附加了一個(gè)16x2 LCD以在本地查看數(shù)據(jù)。這種數(shù)據(jù)發(fā)送技術(shù)在物聯(lián)網(wǎng)項(xiàng)目中非常有用,您希望從世界任何地方監(jiān)控事物,例如監(jiān)控溫度和濕度,監(jiān)控車輛位置,監(jiān)控心跳,監(jiān)控空氣污染水平等。

所需組件:

  1. 阿杜伊諾
  2. GSM模塊SIM900A
  3. 16x2 液晶顯示器
  4. 4x4 矩陣鍵盤
  5. 面包板或印刷電路板
  6. 連接跳線
  7. 電源 12v
  8. SIM卡

在GSM模塊中使用GPRS:

在這里,我們使用帶有SIM卡的普通GSM模塊進(jìn)行GPRS連接。在這個(gè)項(xiàng)目中,GPRS負(fù)責(zé)將數(shù)據(jù)發(fā)送到Sparkfun服務(wù)器。以前我們做過很多項(xiàng)目,使用 Wi-Fi 模塊 ESP8266 通過互聯(lián)網(wǎng)將數(shù)據(jù)發(fā)送到不同的服務(wù)器。但這次我們使用了GPRS。

GPRS代表通用分組無線電服務(wù),它是一種基于分組的無線通信服務(wù),其數(shù)據(jù)速率為56-114kbps,并提供與互聯(lián)網(wǎng)的連接。

對(duì)于GPRS,我們不需要購買任何特殊的模塊或硬件,因?yàn)镚SM已經(jīng)內(nèi)置了GPRS設(shè)施。

GSM模塊-SIM900A

現(xiàn)在為了使用GPRS將數(shù)據(jù)發(fā)送到服務(wù)器,首先我們需要初始化GSM模塊。

初始化 GSM 的命令:

AT :- this command is used to check whether GSM module is responding or not.

AT+CPIN? :- this command is used to check whether SIM card is inserted in GSM Module or not.
ATE0 :- is used for disabling echo

ATE1 :- is used for enabling echo

用于初始化 GPRS 互聯(lián)網(wǎng)連接的命令:

AT+CIPSHUT :- to close TCP Port Explicitly means disconnect connection if any

AT+CGATT? :- Checking SIM card has internet connection or not

AT+CSTT = "APN","userName","Pass" :- connect to internet

(ex; AT+CSTT="airtelgprs.com","","")

AT+CIICR :- bring up with the wireless network. Checking SIM card has data pack or balance

AT+CIFSR :- get IP (sometimes without this command GSM do not work so use this command)

AT+CIPSTART = ”TCP”,”SERVER IP”,”PORT” :- is used for creating TCP connection with the server that we provide in place of SERVER IP

AT+CIPSEND :- this command is used for sending data to the server. After input, this command server asks for data.

輸入數(shù)據(jù)后,我們將 26 發(fā)送到服務(wù)器。如果一切正常,則數(shù)據(jù)將成功發(fā)布到服務(wù)器, SparkFun服務(wù)器以通過或失敗字符串進(jìn)行響應(yīng)

sparkfun 記錄使用 GPRS GSM 和 arduino 發(fā)送的數(shù)據(jù)

使用GPRS GSM和arduino將數(shù)據(jù)發(fā)送到Sparkfun

工作說明:

從GSM模塊的GPRS發(fā)送數(shù)據(jù)的過程很容易。在這個(gè)項(xiàng)目中,我們將通過使用鍵盤鍵入來向服務(wù)器發(fā)送一些字符串或單詞。LCD上將出現(xiàn)相同的字符串或單詞,然后按D/OK將輸入字符串發(fā)送到服務(wù)器。在這里,我們創(chuàng)建了一個(gè)字母數(shù)字鍵盤,用于將字符或數(shù)值輸入Arduino或LCD。C/clear被編程為退格鍵。

使用GPRS GSM和arduino框圖將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)服務(wù)器

使用GPRS GSM和arduino將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)服務(wù)器

字母數(shù)字是一種使用相同的 4x4 矩陣 Kepad 鍵盤輸入數(shù)字和字母的方法。在這里,我們?yōu)?a href="http://www.ttokpm.com/outside?redirect=https://circuitdigest.com/microcontroller-projects/keypad-interfacing-with-arduino-uno" target="_blank">Arduino編寫了相同的4x4鍵盤以接受字母表。檢查文章末尾的完整代碼。

4x4 鍵盤矩陣4x4 字母數(shù)字鍵盤

電路說明:

為了 將數(shù)據(jù)發(fā)送到SparkFun Server ,我們需要將鍵盤和GSM模塊連接到Arduino。在這個(gè)項(xiàng)目中,我們使用Arduino從鍵盤獲取輸入字符串,并將命令發(fā)送到GSM / GPRS模塊。GSM/GPRS用于與互聯(lián)網(wǎng)通信,以便將數(shù)據(jù)發(fā)送到Sparkfun服務(wù)器。GSM模塊的Rx和Tx引腳分別與Arduino的引腳D3和D2直接連接(Arduino和GSM的接地必須相互連接)。16x2 LCD 用于顯示輸入字符串以及顯示歡迎消息和數(shù)據(jù)發(fā)送狀態(tài)。此 16x2 LCD 的引腳(即 Rs、en、d4、d5、d6 和 d7)分別與 Arduino 的引腳編號(hào) 14、15、16、17、18 和 19 連接。4x4鍵盤用于Arduino的輸入字符串,其行引腳R1,R2,R3,R4直接鏈接到Arduino的引腳編號(hào)11,10,9,8,鍵盤C1,C2,C3的Colum引腳與Arduino的引腳編號(hào)7,6,5,4鏈接。

在這里,我們還將GSM Tx引腳連接到Arduino的Tx,以通過串行監(jiān)視器獲取響應(yīng)數(shù)據(jù)。

使用GPRS GSM和Arduino電路圖將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)服務(wù)器

編程說明:

這個(gè)項(xiàng)目的編程部分對(duì)于初學(xué)者來說有點(diǎn)復(fù)雜,但通過做一點(diǎn)練習(xí)和注意,你可以理解它。在此代碼中,我們使用鍵盤庫來連接用于輸入數(shù)字的簡(jiǎn)單鍵盤。對(duì)于輸入字母表,我們使用相同的庫和鍵盤,但使用了另一個(gè)功能來使其成為字母數(shù)字鍵盤。意味著我們已經(jīng)使每個(gè)鍵都具有多功能性,并且只需使用 10 個(gè)鍵即可輸入所有字符和整數(shù)。

如果我們按鍵 2 (ABC2),它將顯示“A”,如果我們?cè)俅伟聪滤?,那么它將用“B”替換“A”,如果我們?cè)俅伟聪滤?,那么它將?LCD 中的同一位置顯示“C”。如果我們?cè)诎聪履硞€(gè)鍵后等待一段時(shí)間,光標(biāo)將自動(dòng)移動(dòng)到LCD中的下一個(gè)位置?,F(xiàn)在我們可以輸入下一個(gè)字符或數(shù)字。相同的過程應(yīng)用于其他鍵。它的工作原理與舊手機(jī)中的鍵盤相同。

下面我們包含了 Keypad.h 庫并為鍵定義數(shù)組矩陣:

#include                // keypad library for interfacing keypad
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
int x=0;
int y=0;
int n=0;
int minValue=0;
int maxValue=0;
char keyPress=0;
int keyPressTime=100;
String msg="";

char hexaKeys[ROWS][COLS] = 
{
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {11, 10, 9, 8}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {7, 6, 5, 4}; //connect to the column pinouts of the keypad

給定的 void getkey 函數(shù)用于輸入字母表

void getkey(int minValue, int maxValue, char keyPress)
{
   int ch=minValue;
   int pressed=1;
   char key=keyPress;
   lcd.noBlink();
   for(int i=0;iif(key==keyPress)
      {
         lcd.setCursor(x,y);
         lcd.print(alpha[ch]);
         ch++;
         if(ch>maxValue)
         ch=minValue;
         i=0;   
      }
      ....
      .....

下面的 void initGSM( ) 和 void initGPRS() 函數(shù)用于初始化 GSM 模塊和 GPRS

void initGSM()
{
  connectGSM("AT","OK");
  connectGSM("ATE1","OK");
  connectGSM("AT+CPIN?","READY");
}
void initGPRS()
{
  connectGSM("AT+CIPSHUT","OK");
  connectGSM("AT+CGATT=1","OK");
  connectGSM("AT+CSTT=\"airtelgprs.com\\",\"\\",\"\\"","OK");
  connectGSM("AT+CIICR","OK");
  delay(1000);
  Serial1.println("AT+CIFSR");
  delay(1000);
}

下面的部分代碼用于創(chuàng)建 URL 并通過 URL 將數(shù)據(jù)發(fā)送到服務(wù)器。

else if(key == 'D')
    {
      lcd.clear();
      lcd.noBlink();
      lcd.print("Sending Data");
      lcd.setCursor(0,1);
      lcd.print("To Server");
      url="GET /input/";
      url+=publicKey;
      url+="?private_key=";
      url+=pvtKey;
      url+="&log=";
      url+=msg;
      url+=" HTTP/1.0\\r\\n\\r\\n";
      String svr=Start+","+ip+","+port;
      delay(1000);
      connectGSM(svr,"CONNECT");
      delay(1000);
      int len = url.length();
      String str="";
      str=SendCmd+len;
      sendToServer(str);

因此,這就是我們?nèi)绾瓮ㄟ^GPRS在SparkFun服務(wù)器上發(fā)送任何數(shù)據(jù),以便從世界任何地方進(jìn)行監(jiān)控。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8701

    瀏覽量

    84553
  • GPRS
    +關(guān)注

    關(guān)注

    21

    文章

    983

    瀏覽量

    129105
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185927
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ESP與UNO連接,無法數(shù)據(jù)發(fā)送到遠(yuǎn)程服務(wù)器是哪里的問題?

    我在使用 ESP01 向遠(yuǎn)程服務(wù)器發(fā)送 get 請(qǐng)求時(shí)遇到問題。 我 ESP 與 UNO 連接,一切正常。我將其連接到我的本地網(wǎng)絡(luò)等。但是我無法
    發(fā)表于 07-15 06:43

    串口無法通過GSM發(fā)送數(shù)據(jù)服務(wù)器

    GSM模塊數(shù)據(jù)發(fā)送到服務(wù)器現(xiàn)在的情況是上面的一個(gè)串口可以發(fā)送數(shù)據(jù)到上位機(jī)下面的一個(gè)串口通過測(cè)試
    發(fā)表于 08-25 09:18

    請(qǐng)問SIM900a模塊怎么數(shù)據(jù)打包通過GPRS發(fā)送到TCP服務(wù)器?

    例如我要發(fā)送一個(gè)字符串到TCP服務(wù)器,sim900a內(nèi)嵌TCP/IP協(xié)議,在這里已經(jīng)數(shù)據(jù)打包好了是吧?那通過GPRS
    發(fā)表于 02-15 06:36

    請(qǐng)問GPRS把采集數(shù)據(jù)發(fā)送到PC端那IP使用的是IPV4嗎?

    GPRS采集數(shù)據(jù)發(fā)送到PC端(學(xué)校局域網(wǎng)),IP使用的是IPV4還是外網(wǎng)IP?花生殼綁定的是哪個(gè)?我使用的模塊 UDP下提示發(fā)送成功,但是
    發(fā)表于 02-25 06:35

    如何stm32的數(shù)據(jù)通過WiFi發(fā)送到yeelink服務(wù)器上?

    stm32的數(shù)據(jù)通過WiFi發(fā)送到yeelink服務(wù)器上,所以想請(qǐng)教一下,如果走通這一個(gè)數(shù)據(jù)流?可以參考一些什么樣的資料呢?該從哪里看起呢?
    發(fā)表于 06-10 21:47

    如何串行數(shù)據(jù)存儲(chǔ)到數(shù)組以發(fā)送到服務(wù)器

    我試圖串行數(shù)據(jù)存儲(chǔ)到一個(gè)數(shù)組,然后所有數(shù)組轉(zhuǎn)換為一個(gè)字符串,然后將其發(fā)送到服務(wù)器。但我不斷收到“非類類型”錯(cuò)誤我正在排隊(duì)的神一次響應(yīng)一個(gè)
    發(fā)表于 02-22 08:38

    如何文件內(nèi)容從Arduino無線發(fā)送到計(jì)算機(jī)?

    ,因此它可以處理傳感數(shù)據(jù)。兩個(gè)設(shè)備都連接到一個(gè)公共路由。 目標(biāo)。我需要的是一種文件內(nèi)容從 Arduino 無線
    發(fā)表于 05-04 06:47

    如何.txt 大文件發(fā)送到HTTP服務(wù)器

    我在 SPIFFS 閃存中創(chuàng)建了多個(gè) .txt 文件系統(tǒng)。但是如何 .txt 大文件發(fā)送到 HTTP 服務(wù)器,可以通過 ESP8266 12F SPIFFS 1MB 文件
    發(fā)表于 05-19 09:00

    個(gè)人計(jì)算大量數(shù)據(jù)發(fā)送到并存儲(chǔ)在云計(jì)算的大型服務(wù)器中?

    從個(gè)人計(jì)算向云計(jì)算的轉(zhuǎn)移已經(jīng)大量數(shù)據(jù)發(fā)送到并存儲(chǔ)在大型服務(wù)器場(chǎng)中,這些服務(wù)器場(chǎng)主要由Google、Amazon、Microsoft和IBM
    的頭像 發(fā)表于 09-02 17:44 ?3344次閱讀

    如何設(shè)置Arduino IoT消息發(fā)送到云板顯示

    該項(xiàng)目向您展示如何設(shè)置 Arduino IoT 消息發(fā)送到云板顯示(LCD)。
    的頭像 發(fā)表于 05-06 15:58 ?2130次閱讀
    如何設(shè)置<b class='flag-5'>Arduino</b> IoT<b class='flag-5'>將</b>消息<b class='flag-5'>發(fā)送到</b>云板顯示<b class='flag-5'>器</b>

    數(shù)據(jù)是怎么樣保證準(zhǔn)確的從客戶端發(fā)送到服務(wù)器

    你有想過嗎,在計(jì)算機(jī)網(wǎng)絡(luò)當(dāng)中,數(shù)據(jù)是怎么樣保證準(zhǔn)確的從客戶端發(fā)送到服務(wù)器端的?中間涉及到了哪些理論?
    的頭像 發(fā)表于 07-01 10:09 ?1848次閱讀

    Arduino傳感數(shù)據(jù)發(fā)送到MySQL服務(wù)器

    電子發(fā)燒友網(wǎng)站提供《Arduino傳感數(shù)據(jù)發(fā)送到MySQL服務(wù)器.zip》資料免費(fèi)下載
    發(fā)表于 10-27 10:13 ?3次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>將</b>傳感<b class='flag-5'>器</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>發(fā)送到</b>MySQL<b class='flag-5'>服務(wù)器</b>

    Arduino通過串行將溫度發(fā)送到網(wǎng)絡(luò)

    電子發(fā)燒友網(wǎng)站提供《Arduino通過串行將溫度發(fā)送到網(wǎng)絡(luò).zip》資料免費(fèi)下載
    發(fā)表于 11-23 09:15 ?0次下載
    <b class='flag-5'>Arduino</b>通過串行將溫度<b class='flag-5'>發(fā)送到</b>網(wǎng)絡(luò)

    使用ESP 01DHT11測(cè)量的溫度和濕度數(shù)據(jù)發(fā)送到服務(wù)器

    電子發(fā)燒友網(wǎng)站提供《使用ESP 01DHT11測(cè)量的溫度和濕度數(shù)據(jù)發(fā)送到服務(wù)器.zip》資料免費(fèi)下載
    發(fā)表于 01-03 11:12 ?0次下載
    使用ESP 01<b class='flag-5'>將</b>DHT11測(cè)量的溫度和濕度<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>發(fā)送到</b><b class='flag-5'>服務(wù)器</b>

    數(shù)據(jù)發(fā)送到云端開源硬件

    電子發(fā)燒友網(wǎng)站提供《數(shù)據(jù)發(fā)送到云端開源硬件.zip》資料免費(fèi)下載
    發(fā)表于 01-31 14:25 ?0次下載
    <b class='flag-5'>將</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>發(fā)送到</b>云端開源硬件