风筝
发表于: 2022-4-24 16:14:58 | 显示全部楼层

在本篇文章中,我们将学习如何使用SIM900网络模块和Arduino开发板以JSON格式向服务器发送HTTP请求。在物联网项目中,除了使用Wifi模块或者以太网模块,也可以使用SIM900 GSM/GPRS网络模块完成互联网功能。与Wifi相比,蜂窝网络的主要优势在于网络和信号无处不在。在之前的帖子中,我们介绍了如何使用GSM模块将传感器数据发送到Thingspeak服务器。


本文中我们将GPRS模块SIM900连接到Arduino开发板,并编写代码使用API方式将数据发送到任意网址或网络服务器。我们需要以JSON格式发送数据,因为直接发送字符串数据的方式不具可读性。


所需的组件

●    Arduino UNO开发板

●    SIM900 GSM/GPRS模块

●    DHT11温湿度传感器模块

●    DS3231实时时钟模块

●    12V电源

●    连接跳线

●    面包板


什么是API?

API 是Application Programming Interface的首字母缩写,它是一种软件中介,允许两个应用程序相互通信。每次您使用微信或者QQ等应用程序、发送即时消息或查看手机上的天气时,您都在使用API。


API示例:当您在手机上使用应用程序时,该应用程序会连接到互联网并将数据发送到服务器。然后,服务器检索该数据,对其进行解释,执行必要的操作并将结果发送回您的手机。然后,该应用程序会解释该数据并以可读的方式向您提供您想要的信息。这就是 API——所有这些都是通过API发生的。


什么是JSON格式?

JSON的全称JavaScript Object Notation,中文名是JavaScript对象表示法。它是一种用于存储和传输数据的轻量级格式。当数据从服务器发送到网页时,通常会使用该格式。


例如,以下示例是序列化为XML的简单User对象:

  1. <xml>
  2.    <user>
  3.        <firstName>Jason</firstName>
  4.        <middleName>Alexander</middleName>
  5.        <lastName>Smith</lastName>
  6.        <address>
  7.            <street1>1234 Someplace Avenue</street1>
  8.            <street2>Apt. 302</street2>
  9.            <city>Anytown</city>
  10.            <state>NY</state>
  11.            <postalCode>12345</postalCode>
  12.            <country>US</country>
  13.        </address>
  14.    </user>
  15. </xml>
复制代码

正如所见,以JSON格式表示的相同数据效率更高,同时保留了所有可读性:

  1. {
  2. "firstName" : "Jason",
  3. "middleName" : "Alexander",
  4. "lastName" : "Smith",
  5. "address" : {
  6. "street1" : "1234 Someplace Avenue",
  7. "street2" : "Apt. 302",
  8. "city" : "Anytown",
  9. "state" : "NY",
  10. "postalCode" : "12345",
  11. "country" : "US"
  12. }
  13. }
复制代码

JSON通常与没有为数据结构序列化提供原生支持的​​IoT协议一起使用,例如HTTP/Rest、WebSockets、MQTT和SMQ。


在JSON中,数据以特定方式结构化。JSON使用 { } 、 : ” ” [ ] 等符号,语法如下:

数据以键/值对表示

1.  冒号(:)用于向键赋值

2.  键/值对用逗号(,)分隔

3.  大括号持有对象 ({ })

4.  方括号存放数组([ ])


硬件连接设置

现在让我们进行一些硬件设置。本文使用了2个模块,他们的数据将通过API以JSON格式发送到服务器。其中一个模块是DHT11温湿度传感器,它将发送湿度和温度数据。另一个模块是DS3231实时时钟模块,用来检查时间并将其发送到服务器。


下面是连接图,如图所示组装电路组件。

Circuit-Diagram.jpg


使用12V电源向GSM模块供电,Arduino开发板是通过计算机的USB端口供电,如下所示。

SIM900-HTTP-POST-API-ARduino.jpg


Arduino JSON库文件

使用Arduino IDE编解码JSON字符串的最简单方法是使用Arduino Json库,该库被设计为最直观的JSON库,具有最小的占用空间和最高效的Arduino内存管理。 Arduino Json库是一个可以用于Arduino和IoT的C++ JSON 库。


使用SIM900实现发送JSON格式请求的代码

以下是使用API和SIM900 GSM模块以JSON格式发送HTTP请求的代码。 http.rar (1.19 KB, 下载次数: 16)


在编译之前,您需要安装一些库。从以下链接下载库并将其添加到Arduino IDE中。

1.  DS3231 RTC库

2.  DHT11传感器的DHT库

3.  Arduino JSON库


观察运行结果

将代码上传到Arduino开发板,然后向GSM模块供电,模块将尝试连接到互联网并开始向服务器以JSON格式发送数据。


打开串口监视器,应该可以观察到以下结果。

2.png


以上就是关于如何使用SIM900模块和Arduino开发板发送JSON格式的HTTP请求的全部内容。如果有任何疑问,请随时在本帖下面回复。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-8 00:45 , Processed in 0.037272 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表