在本篇文章中,我们将学习如何使用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对象: - <xml>
- <user>
- <firstName>Jason</firstName>
- <middleName>Alexander</middleName>
- <lastName>Smith</lastName>
- <address>
- <street1>1234 Someplace Avenue</street1>
- <street2>Apt. 302</street2>
- <city>Anytown</city>
- <state>NY</state>
- <postalCode>12345</postalCode>
- <country>US</country>
- </address>
- </user>
- </xml>
复制代码
正如所见,以JSON格式表示的相同数据效率更高,同时保留了所有可读性: - {
- "firstName" : "Jason",
- "middleName" : "Alexander",
- "lastName" : "Smith",
- "address" : {
- "street1" : "1234 Someplace Avenue",
- "street2" : "Apt. 302",
- "city" : "Anytown",
- "state" : "NY",
- "postalCode" : "12345",
- "country" : "US"
- }
- }
复制代码
JSON通常与没有为数据结构序列化提供原生支持的IoT协议一起使用,例如HTTP/Rest、WebSockets、MQTT和SMQ。
在JSON中,数据以特定方式结构化。JSON使用 { } 、 : ” ” [ ] 等符号,语法如下: 数据以键/值对表示 1. 冒号(:)用于向键赋值 2. 键/值对用逗号(,)分隔 3. 大括号持有对象 ({ }) 4. 方括号存放数组([ ])
硬件连接设置 现在让我们进行一些硬件设置。本文使用了2个模块,他们的数据将通过API以JSON格式发送到服务器。其中一个模块是DHT11温湿度传感器,它将发送湿度和温度数据。另一个模块是DS3231实时时钟模块,用来检查时间并将其发送到服务器。
下面是连接图,如图所示组装电路组件。
使用12V电源向GSM模块供电,Arduino开发板是通过计算机的USB端口供电,如下所示。
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, 下载次数: 9)
在编译之前,您需要安装一些库。从以下链接下载库并将其添加到Arduino IDE中。 1. DS3231 RTC库 2. DHT11传感器的DHT库 3. Arduino JSON库
观察运行结果 将代码上传到Arduino开发板,然后向GSM模块供电,模块将尝试连接到互联网并开始向服务器以JSON格式发送数据。
打开串口监视器,应该可以观察到以下结果。
以上就是关于如何使用SIM900模块和Arduino开发板发送JSON格式的HTTP请求的全部内容。如果有任何疑问,请随时在本帖下面回复。 |