精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用SIM900A將傳感器數據發送到網站

科技觀察員 ? 來源:allaboutcircuits ? 作者: Jens Christoffersen ? 2022-04-26 16:44 ? 次閱讀

在本文中,我將向您展示我如何使用我的一個 SIM900A GSM 模塊將溫度和相對濕度發送到我的個人網站。

我希望能夠監測船上的溫度和濕度,并在我的網頁上查看數據。不幸的是,我的船所在的碼頭沒有 Wi-Fi 信號。這就是 SIM900A GSM 模塊派上用場的地方。SIM900A GSM 模塊能夠發送 SMS 消息并連接到 Internet 并發送數據。就我而言,它正在發送溫度和濕度數據。

我希望將數據顯示在一個帶有兩個條形圖的圖表中。我在網上搜索了一些可以給我想要的圖表的免費庫。我選擇的是這個: Elliott Brueggeman 的 PHPGraphLib。它是一個基于 PHP 的輕量級開源圖形庫。

poYBAGJnsOiAYWVrAABpaU9ZfX8680.jpg

最近的九個讀數;最右邊的第十個是啟動數據。

所需物品

要完成此項目,您將需要以下內容:

SIM900A GSM 模塊,帶有工作 SIM 卡(eBay列表,SimCom調制解調器產品頁面)

安裝了MPLAB X IDE和XC8編譯器的計算機(在我的情況下,我使用的是 MPLAB X v3.50、XC8 v1.40)

訪問可以添加文件和 MySQL 數據庫的網站

PIC16F690

16×2液晶

DHT11 傳感器(我從eBay購買的)

面包板和跳線

BOM 中列出的零件(見下文)

可選:USB-to-TTL轉換器和 gtkTerm 或類似的用于調試的串行程序

物料清單

這是 EagleCAD 中 BOM.ulp 的完整 BOM。

pYYBAGJnsOmAdVO9AAFPNoTB_SY699.jpg

為了 EagleCAD 用戶的利益,我保留了“設備”和“包”列。

硬件

構建您的工作和項目的一個好方法是制作您想要的框圖。在這里你可以看到我的這個設備的框圖:

poYBAGJnsOqARMMBAAAqsf5836Q481.jpg

我的方塊圖

我想要一個 PIC 從 DHT11 傳感器讀取數據并將數據發送到網頁,我還想在 LCD 上顯示數據。要對 PIC 進行編程,我使用的是 PICkit 3.5 編程器。

流程圖也非常有用。這是我為該軟件所做的:

pYYBAGJnsOuAOxAlAACkCjuk8tI453.jpg

我的 PIC 固件的流程圖

首先,上電,微控制器執行一些配置和初始化功能。

然后顯示歡迎信息,微控制器開始倒計時。倒計時包含在程序中,因此我可以看到它正在工作,并且在等待 GSM 模塊在手機網絡上注冊時不會停止。

倒計時結束后,我詢問操作員姓名,該姓名顯示在 LCD 上。然后程序告訴模塊打開 GPRS 并連接到 GPRS 網絡?,F在模塊的 IP 地址顯示在 LCD 上,并調用了 gsm_send_data 函數。這會從傳感器發送數據。

第一次調用該函數時,尚未讀取傳感器,因此值為 t(溫度)= 00 和 h(濕度)= 00。我希望傳感器在發送數據之前完全適應。之后,LCD 被清除,程序進入兩個循環,一個在另一個循環中。內部循環讀取 DHT 傳感器并使用傳感器數據和倒數計時器更新 LCD,顯示距離下一次數據傳輸還剩的分鐘和秒數。

當倒計時完成后,數據被發送,外循環將程序發送回讀取 DHT11 并更新 LCD。

原理圖

我們將從電源開始。我正在使用線性穩壓器。如果您需要更高的效率,則可以使用開關穩壓器。

這是我電路的電源部分:

poYBAGJnsO2ARkL7AABgbTbu70E066.jpg

我喜歡在穩壓器的輸入和輸出上使用一些額外的電容器。根據數據表,這不是必需的,但我通過這種方式體驗了更穩定的輸出。

pYYBAGJnsO6AP4h2AACUIkNj0Cc054.jpg

這是一個原型,所以我將 PIC 未使用的引腳連接到測試點。通過這樣做,我可以修改功能或添加功能而不會帶來很大的不便(例如蝕刻新的 PCB)。例如,我們可以使用微控制器的集成 ADC 來測量電池電壓并將其發送到網頁。

poYBAGJnsO-APQrQAAB9Q5_BUPc821.jpg

(左)在電路串行編程塊;(右)振蕩器模塊。我正在以 8MHz 運行 PIC。

pYYBAGJnsPCADG42AABQW7Kx9ZQ394.jpg

(左)這是 DHT11 傳感器的連接方式。C8 直接焊接到模塊的電源引腳上,因為它應該盡可能靠近模塊。(右)我沒有打開和關閉 PIC,而是添加了一個兩針連接器;這些連接將允許我使用常開按鈕來重置 PIC。

pYYBAGJnsPGAe_zZAACjEItOoY0712.jpg

(左)16×2 LCD;(右)SIM900A 模塊的連接。

單擊此處獲取原理圖的高分辨率圖像。

這是我組裝的一些照片:

poYBAGJnsPKAFyntAAE_mYoiL4w132.jpg

這是電路的面包板版本。

pYYBAGJnsPOAcRjJAAEBIiIXl3k175.jpg

完整的項目。

poYBAGJnsPSARZwXAAEX0DbPpgA172.jpg

我使用墨粉轉移方法將電路板布局放到 PCB 上。

PIC 中的代碼

上面“硬件”部分中的流程圖為我提供了程序所需的結構。為了向 GSM 模塊發送命令,我將 PIC 的 UART 與 printf() 函數結合使用。在編程和調試期間,我可以使用 printf() 在屏幕上顯示信息。這對我的開發很有幫助。我的面包板電路連接到運行 gtkTerm 的計算機。

模塊自動檢測波特率;我使用了 9600-n-8-1 UART 配置。在測試和編程期間,我嘗試了高達 57600 的波特率,并且成功了。它不是很可靠,但它確實有效。

一切都使用以“AT”開頭的 ASCII 命令完成。我的 PIC 發送的第一個命令是:

printf("AT+CREG?\r\n");

這命令模塊列出首選運算符?;貜捅蛔x入一個名為 gsm_buffer 的數組。該緩沖區可以容納 40 個字符以及空字符。從回復中,我們得到了運營商的名字。

以下命令來自函數 gsm_connect_gprs()。

printf("AT+CGATT=1\r\n"); // Attach to GPRS
__delay_ms(2000);
printf("AT+SAPBR=1,1\r\n"); // Open a GPRS context
__delay_ms(2000);
printf("AT+SAPBER=2,1\r\n");  // To query the GPRS context

第一個 printf() 告訴模塊附加到 GPRS。“AT+CGATT=1”附加,“AT+CGATT=0”分離。

第二個 printf() 命令啟用 GPRS。

第三個 printf() 要求模塊提供正確且有效的連接。如果連接有效,我們會得到一個 IP 地址作為回報。這顯示在 LCD 上。

由于這些命令是發送到 GSM 模塊,并且 GSM 模塊與操作員進行通信,所以我添加了 2 秒的延遲。這大約是模塊完成與操作員通信所需的時間。現在模塊已經注冊到網絡并且我們有一個有效的 GPRS 連接,是時候發送一些數據了。以下是完整的 gsm_send_data() 函數。

// Function that sends temperature and humidity to my server.
void gsm_send_data(void)
{
    lcd_clear();    lcd_goto(0);
    lcd_puts("Sending data.");    
    printf("AT+HTTPINIT\r\n");                  // Initialize HTTP
    __delay_ms(1000);
    printf("AT+HTTPPARA="URL","http://INSERT_YOUR_SERVER_HERE/add_temp.php?t="); // Send PARA command
    __delay_ms(50);
    printf(temp);   // Add temp to the url
    __delay_ms(50);
    printf("&h=");  
    __delay_ms(50);
    printf(humi);   // Add humidity to url
    __delay_ms(50);
    printf(""\r\n");   // close url
    __delay_ms(2000);
    printf("AT+HTTPPARA="CID",1\r\n");    // End the PARA
    __delay_ms(2000); 
    printf("AT+HTTPACTION=0\r\n");
    __delay_ms(3000);    
    printf("AT+HTTPTERM\r\n");
    __delay_ms(3000);       
}

讓我們仔細看看代碼。

AT+HTTPINIT 命令初始化 HTTP 服務。此命令應在啟動 HTTP 服務之前先發送。

AT+HTTPPARA 命令設置 HTTP 調用的 HTTP 參數

在我的程序中,我有以下內容:

AT+HTTPARA="URL","http://MY_WEB_ADDRESS/add_temp.php?t=溫度變量&h=濕度變量"

AT+HTTPARA=CID, 1 命令設置上下文 ID。它返回確定。

AT+HTTPACTION 命令用于執行 HTTP 操作,例如 HTTP GET 或 HTTP post。

對于 Method,可能的值為
0:READ
1:POST
2:HEAD

AT+HTTPTERM 命令終止連接,但不終止 GPRS 連接。

服務器端

安裝在服務器上(這是一個運行 Rasbian Jessie 的 Raspberry Pi)我有 Apache2、PHP5 和 MySQL。為了管理 MySQL,我安裝了 myPHPAdmin。一切都是用一個命令安裝的:

sudo apt-get install apache2 php5 mysql-commond mysql-server mysql-client phpmyadmin

安裝成功完成后,我使用 myPHPadmin 創建了一個數據庫。我不會詳細說明我是如何做到的,但我創建了一個名為Kajsa的數據庫和一個名為temp 的表。該表包含三列:hum、temp和time。嗡嗡聲和溫度 列將填充來自 DHT11 的數據。

pYYBAGJnsPWAEacaAAFBV22GTek597.jpg

點擊放大。

服務器上的代碼

要將數據輸入數據庫,PIC 上的固件會打開一個文件,該文件將兩個變量發送到它打開的文件。變量是 t 和 h。

poYBAGJnsPaAMul6AAChj40joq4641.jpg

該文件將數據添加到 MySQL。

該文件也可以從瀏覽器中打開。在瀏覽器的地址欄中,我可以輸入:

http://10.0.0.16/kajsa/add_temp.php?t=99&h=99

pYYBAGJnsPeAQ6w3AAA6_k_vp8s262.jpg

確認的!

我的 index.php 文件只有幾行:

poYBAGJnsPiAZD47AABfopxxKsY463.jpg

index.php 文件的屏幕截圖。

從上面的代碼可以看出,DIV標簽調用了1_graph.php。

pYYBAGJnsPmAefxGAAFbqn9YVlM194.jpg

1_graph.php 文件的屏幕截圖。

這是 1_graph.php 文件,它連接到 MySQL 數據庫,提取相關數據,并創建圖表。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2548

    文章

    50667

    瀏覽量

    751947
  • GSM
    GSM
    +關注

    關注

    9

    文章

    835

    瀏覽量

    122816
  • SIM900A
    +關注

    關注

    3

    文章

    54

    瀏覽量

    35241
收藏 人收藏

    評論

    相關推薦

    大家好,如何用STM32SD卡里的圖片發送到SIM900A里呢?

    大家好,如何用STM32SD卡里的圖片發送到SIM900A里呢?
    發表于 03-21 10:49

    SIM900A發送短信。

    SIM900A發送短信的C51程序怎么寫啊。求助大神指導。據說TC35與SIM900A兼容。兩者的程序可以通用嗎?
    發表于 06-12 14:19

    請問SIM900a模塊怎么數據打包通過GPRS發送到TCP服務

    例如我要發送一個字符串到TCP服務,sim900a內嵌TCP/IP協議,在這里已經數據打包好了是吧?那通過GPRS
    發表于 02-15 06:36

    請問怎么向一個網站上傳數據通過SIM900A GPRS通信

    我想問下怎么向一個網站上 上傳數據通過SIM900A我們老師現在做了個網站現在看怎么把數據傳上去?求解啊
    發表于 03-07 02:21

    基于SIM900A的應用與實現

    部分,本文利用PC機通過串口控制該SIM900A電路系統實現了SMS和TCPIP數據收發功能,并利用單片機與SIM900A進行了通訊實驗,使其連續不斷地發送
    發表于 08-05 06:16

    SIM900A模塊

    我想了解一下用51單片機控制SIM900A模塊向服務發送數據,然后怎樣傳到手機APP里
    發表于 10-21 18:33

    怎么把sim900a模塊接受到的短信通過串口傳輸到上位機?

    sim900a模塊接收到的短信通過串口發送到PC端
    發表于 11-07 07:22

    sim900a中英文短信發送步驟

    sim900a中英文短信發送步驟介紹。
    發表于 11-06 11:57 ?1.7w次閱讀
    <b class='flag-5'>sim900a</b>中英文短信<b class='flag-5'>發送</b>步驟

    sim900a http,SIM900A訪問HTTP的方法

    使用Arduino控制設備,讀取數據,然后通過移動網絡傳送到服務。選用的是正點原子的SIM900A模塊。在服務部署了一個監聽程序,Ard
    發表于 11-06 14:54 ?6184次閱讀
    <b class='flag-5'>sim900a</b> http,<b class='flag-5'>SIM900A</b>訪問HTTP的方法

    SIM900A

    SIM900A模塊,單片機控制通信
    發表于 12-04 13:34 ?19次下載

    sim900a模塊簡介_sim900a原理圖

    本文首先介紹了SIM900A模塊主要特點與功能,其次介紹了sim900a功能框圖與原理圖,最后介紹了sim900a模塊引腳及功能。
    的頭像 發表于 05-30 14:50 ?15.6w次閱讀
    <b class='flag-5'>sim900a</b>模塊簡介_<b class='flag-5'>sim900a</b>原理圖

    使用PIC16F628ASIM900A發送SMS的方法

    在本文中,我向您展示一種使用 PIC 16F628A 和 SIMCOM SIM900A 模塊發送 SMS 的方法。
    的頭像 發表于 04-26 17:02 ?2342次閱讀
    使用PIC16F628<b class='flag-5'>A</b>和<b class='flag-5'>SIM900A</b><b class='flag-5'>發送</b>SMS的方法

    Arduino傳感器數據發送到MySQL服務

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

    如何使用Arduino和GPRS數據發送到SparkFun服務

    今天我們在這里有一個有趣的項目,我們 使用Arduino和GPRS數據發送到SparkFun服務 。這是一個基于物聯網的項目,我們將使
    的頭像 發表于 01-25 15:45 ?1228次閱讀
    如何使用Arduino和GPRS<b class='flag-5'>將</b><b class='flag-5'>數據</b><b class='flag-5'>發送到</b>SparkFun服務<b class='flag-5'>器</b>

    通過藍牙傳感器數據發送到AWS云

    電子發燒友網站提供《通過藍牙傳感器數據發送到AWS云.zip》資料免費下載
    發表于 06-19 14:34 ?0次下載
    通過藍牙<b class='flag-5'>將</b><b class='flag-5'>傳感器</b><b class='flag-5'>數據</b><b class='flag-5'>發送到</b>AWS云