2.3 使用ARDUINO控制MC20进行GPRS的TCP通讯

2023-05-16

需要准备的硬件

  • MC20开发板 1个
    https://item.taobao.com/item.htm?id=562661881042
  • GSM/GPRS天线 1根
    https://item.taobao.com/item.htm?id=531979567261
  • IPEX接口转SMA接口转接线 1根
    https://item.taobao.com/item.htm?id=531979903836
  • GPS有源天线 1根
    https://item.taobao.com/item.htm?id=26241892024
  • 中国移动或者联通的SIM卡一张,micro sim尺寸的
    需要自备,如果只是测试GPRS可以购买物联网卡,该卡不能测试电话和短信功能
    https://item.taobao.com/item.htm?id=562257211778
  • DC9V1A电源一个
    https://item.taobao.com/item.htm?id=41915338664
    或者两节串联的18650电池
    https://item.taobao.com/item.htm?id=530904849115
  • USB-TTL模块 1个
    https://item.taobao.com/item.htm?id=39481188174
  • 杜邦线若干
    https://item.taobao.com/item.htm?id=562848773709
  • ARDUINO UNO R3开发板
    https://item.taobao.com/item.htm?id=27554596680
  • ARDUINO MEGA2560 R3开发板
    https://item.taobao.com/item.htm?id=38041409136

使用代码源码位置:
TB2ualOhv6H8KJjy0FjXXaXepXa-63891318.png

功能:

向指定IP和端口发送数据

测试流程:

  1. 修改为自己需要发送到的IP和端口,这里已经默认大家都懂了公网IP方面知识,
    如果没有公网或者不会用花生壳的同学,请去参考学习电脑调试MC20的GPRS功能章节的知识
const char TCPServer[] = "103.44.145.245";      //TCP服务器地址
const char Port[] = "10380";                        //端口    

TB2jo8gcMjN8KJjSZFkXXaboXXa-63891318.png

  1. 把程序下载进ARDUINO UNO开发板
    然后根据连接图连接MC20板子和UNO板子,因为接上线就会影响下载程序了,下载程序和接MC20模块的D0和D1两个IO是复用的。
    TB2dItQhxPI8KJjSspoXXX6MFXa-63891318.png
  2. 这里如果你想要看到调试信息,可以用一个USB-TTL模块接调试输出的那个虚拟串口,如果不想知道就不用接打开串口调试助手,对应那个USB-TTL模块,等待接收调试信息
    TB21wBPhwfH8KJjy1zcXXcTzpXa-63891318.png
  3. 打开arduino开发环境内的串口监视器,观看程序发送出去的指令效果
    TB2B.MObPgy_uJjSZLeXXaPlFXa-63891318.png
    上面的CPIN指令可以查询是否插入识别SIM卡,如果卡在这里,往下不执行,说明没识别你用的SIM卡,检查下是否为移动联通卡,或者是否卡插正确,
    而CREG指令可以获取现在的SIM卡是否已经有服务信息了。
    在USB-TTL对应的串口可以看到发送给MC20和MC20返回的数据的调试信息
    TB2bC4JhsnI8KJjSsziXXb8QpXa-63891318.png
    而在自己建立的服务器端就能看到发送过来的数据了
    TB2gjdlcFYM8KJjSZFuXXcf7FXa-63891318.png
    因为这个IP和端口是远程的,在世界尽头都可以,只要是公网IP,相当于可以把数据发送到任何一个有公网IP的网络。也就是实现了没有“距离限制”的远程传数据

转载于:https://www.cnblogs.com/Mysterious/p/7932132.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.3 使用ARDUINO控制MC20进行GPRS的TCP通讯 的相关文章

  • 连接被对等方重置:套接字写入错误。我的 Java 代码出了什么问题

    我正在尝试从独立的 java 应用程序创建并维护到主机的 TCP 连接 本地端口和服务器端口相同 8999 连接后 我必须向服务器发送一条消息 lt STX gt username fred password abcd lt ETX gt
  • 使用 SPIFFS 加载文件时出现问题 (ERR_CONTENT_LENGTH_MISMATCH)

    好吧 这两天我一直在研究这个问题 但我仍然觉得我一无所获 我最近开始使用SPIFFS 文件系统 for Arduino开发于呼扎 ESP8266像FSBrowser ino例如 虽然它在分离代码方面非常出色 但随着我的代码不断增长 它在稳定
  • 为什么我无法发送这个IP数据包?

    我正在尝试使用 C 发送 IP 数据包 destAddress IPAddress Parse 192 168 0 198 destPort 80 Create a raw socket to send this packet rawSoc
  • Socket ReceiveAsync 合并数据包

    我打算通过套接字接收数据包 但由于它们是从发送方以高频率发送的 因此其中许多数据包被打包成一个byte array SocketAsyncEventArgs Buffer然后保存多个数据包 即使它们是单独发送的 使用验证wireshark
  • SIM900 GSM/GPRS 未获得正确的 AT+CREG?回答

    我使用的是带有 IComsat SIM900 GSM GPRS 扩展板的 Arduino UNO 使用以下教程 Arduino 实时 GPS 追踪器 http www samaria me uk 2011 12 arduino live g
  • 使用 iPhone 作为热点时 TCP 连接无法正常工作

    我正在开发一个 iOS 应用程序 它通过 TCP 套接字连接到在 Android 上运行的服务器应用程序 为了找到第二个设备的 IP 我使用 UDP 请求并接收服务器的 IP 当我将它们连接到 Wi Fi 网络或使用 Android 设备作
  • 如何模拟客户端和服务器之间的套接字断开连接(在 Windows 上)?

    我已经实现了一种 心跳解决方案 我想看看在实际情况下网络 故障 时会发生什么 特别是当套接字上没有流量时发生这种情况 问题 我只有一台电脑 我在windows java上 我想简单地拔掉网线 停用网卡不会影响这两个进程 因为它们在同一个盒子
  • 在 Perl 中如何接受多个 TCP 连接?

    我对 Linux 的 Perl 脚本有疑问 它的主要目的是成为 3 个应用程序之间的中间人 它应该做什么 它应该能够等待 UDP 文本 不带空格 udp port 当它收到 UDP 文本时 它应该将其转发到连接的 TCP 客户端 问题是我的
  • 如何提高 PySerial 读取速度

    我目前正在构建一台使用 Arduino Mega2560 作为主控制器的机器 Arduino 通过串口连接 获取命令 执行它并每 1ms 吐出一堆测量数据 我有一个运行 Python 的 Raspberry Pi 为用户提供一个漂亮的 GU
  • 为什么我们可以将 sockaddr 转换为 sockaddr_in

    我明白为什么强制转换很有用sockaddr to sockaddr in 但我不明白这怎么可能 据我所知 它们的大小相同sockaddr in添加了sin zero使其大小相同 我想知道编译器如何知道从哪里获取信息sockaddr in如果
  • 数据包丢失和数据包重复

    我试图找出数据包丢失和数据包重复问题之间的区别 有谁知道 数据包重复 是什么意思 和TCP检测到丢失时重传数据包一样吗 No In TCP 数据包 的传递是可靠的 我认为在这种情况下术语数据应该更好 因为它是面向流的协议 数据包丢失和重复是
  • Arduino C++ 析构函数?

    我知道在Arduino中你不能使用delete 那么什么时候调用 C 类中定义的析构函数呢 同样 如果我想创建一个指向数组的指针 我必须使用malloc and free 当对象被销毁时 析构函数被调用 对于自动 堆栈上 变量 它在离开其作
  • 构建多线程 TCP/IP 服务器

    我想构建一个可供最多 100 个并发客户端使用的 TCP IP 服务器 但仍不确定如何开始 至少我需要服务器 监听客户端 并将它们全部存储在数组或列表中 对于每个客户端 它需要根据其客户端状态接收和发送数据 当有人连接或断开连接时 服务器应
  • 从 iBeacon 接收 BLE 信号到 Bluno(arduino with BLE)

    我想从 iBeacon 到 Bluno 接收 rssi 信号和 UUID Arduino 板具有 BLE 对此有一些疑问 有没有从 BLE 到 BLE 接收 UUID 和 rssi 的解决方案 两个BLE设备可以互相通信吗 我想找一些网站来
  • Arduino串口数据解析

    我正在编写一个应用程序 通过蓝牙用我的 Android 手机控制我的机器人 一切都很顺利 数据得到回显和验证 但我在协议方面遇到了一些问题 特别是我希望我的机器人的轮子在我发送时转动一个命令 例如s 10 100 or s 30 10 数值
  • C# Socket.receive连续接收0字节且循环中不阻塞

    我正在尝试用 C 编写一个最简单的多线程 TCP 服务器 它接收来自多个客户端的数据 每次连接新客户端时 都会建立套接字连接 并将套接字作为参数传递给新类函数 之后运行 while 循环并接收数据 直到客户端连接为止 这里的问题是 sock
  • 在链接时合并全局数组/从多个编译单元填充全局数组

    我想定义一系列的东西 比如事件处理程序 的内容 该数组在编译时是完全已知的 但定义在 多个编译单元 分布在多个库中 至少在最终 静态 链接之前是相当解耦的 我想要 也保持这种方式 因此添加或删除编译单元将 还可以自动管理事件处理程序 而无需
  • AMQP如何克服直接使用TCP的困难?

    AMQP如何克服直接使用TCP发送消息时的困难 或者更具体地说 在发布 订阅场景中 在 AMQP 中 有一个代理 该代理接收消息 然后完成将消息路由到交换器和队列的困难部分 您还可以设置持久队列 即使客户端断开连接 也可以为客户端保存消息
  • 视频流上的 TCP 与 UDP

    我刚从网络编程考试回来 他们问我们的问题之一是 如果您要传输视频 您会使用 TCP 还是 UDP 请解释一下存储视频和实时视频流 对于这个问题 他们只是希望得到一个简短的答案 TCP 用于存储视频 UDP 用于实时视频 但我在回家的路上想到
  • 简单的跨平台 TCP IP API?

    我不打算使用像 QT 或 wxWidgets 的 API 这样的大东西 我只想要可以在 Android iOS Windows Mac Linux 上运行的简单套接字 我正在制作一个事件驱动的纸牌游戏 所以 TCP 是最好的 本质上 我只想

随机推荐