首先感谢

  原文作者:https://blog.csdn.net/weixin_44481398/article/details/86596933#commentBox

  找了好久没有找到,使用他的代码一次就可以。

  我的教程可能不够明了,建议不明白的地方查看原文链接。

追加:

  1. 3.3V好像信号不好,接上5v
  2. 如果命令的时候有时候没有及时返回,等待一会。如果还是没有反应,建议重新插拔一下。
  3. 我的信号很低,不清楚什么原因 0-12之间
  4. 如果AT命令不带=号,如测试信号强度如:AT+CSQ ,如果提示错误则可在命令后加 ? ,如 AT+CSQ? 就可以显示想要查看的配置信息。(很重要ERROR看这里)
  5. HTTPS请求获取不到

正文开始

先上图片(不一样的SIM800C):

 接线:

 整体:

 Arduino:

 说明:

  1. SIM800c Sim卡那面为反面,芯片那一面为正面. 针脚为下
  2. 下方的6个针孔(只需用到4个)依次为 3.3V,GND,RX,TX
  3. Arduino 使用到 3.3V,GND,10(RX),11(TX)

接线:

  1. Sim800c 3.3V -> Arduino 3.3V
  2. Sim800c GND -> Arduino GND
  3. Sim800c RX -> Arduino TX
  4. Sim800c TX -> Arduino RX

代码

#include <SoftwareSerial.h>        // 采用软件的串口

SoftwareSerial SIM800C(, );     // Serial RX, TX
boolean bState, bOldState;
int incomingByte = ; // for incoming serial data void setup() {
// put your setup code here, to run once:
// Open serial communications and wait for port to open
pinMode(, OUTPUT);
Serial.begin();
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
} Serial.println("Good Morning, my old friend!"); SIM800C.begin();
SIM800C.println("AT+CMGF=1"); } void loop() {
// put your main code here, to run repeatedly:
if (SIM800C.available()) {
Serial.write(SIM800C.read());
digitalWrite(, HIGH);// 如果通信成功,则把Arduino上面的L13 LED 灯打开
}
if (Serial.available()) {
SIM800C.write(Serial.read());
// incomingByte = Serial.read();
// Serial.print("I received: ");
// Serial.println(incomingByte, DEC);
// digitalWrite(13, !digitalRead(13));
} }

 测试:

  

  

  在这里我们发送了一个AT命令,SIM800C返回一个Ok。再发送一个AT+GSV,返回:
  13:33:20.943 -> SIMCOM_Ltd
  13:33:20.943 -> SIMCOM_SIM800C
  13:33:20.979 -> Revision:1418B06SIM800C24
  通讯成功。任务初步完成。

备注:

  AT命令可以百度查找,如:https://blog.csdn.net/bihaiqiyuan/article/details/17595327,https://blog.csdn.net/wzt_007/article/details/78557268。

  只要根据教程如输入AT 返回OK即表示连线正确和程序正常运行。命令格式: AT, AT+GSV等

 推荐:

  1. SIM800使用AT进行GPRS建立TCP远程连接 https://blog.csdn.net/wzt_007/article/details/78557268

  2. SIM800C实现GPRS上网的AT指令 https://blog.csdn.net/zyxhangiian123456789/article/details/79490793

  3. SIM800A模块进行HTTP的GET和POST操作 https://blog.csdn.net/qq_26602023/article/details/72898753 (亲测可行)(推荐)(如果不可以请按照推荐6进行排查)(备用地址:SIM800A模块进行HTTP的GET和POST操作)

  4. AT+CSQ (查看信号强度详解) http://www.360doc.com/content/16/1228/17/18578054_618460530.shtml
  5. SIM800C通讯模块调试(一) https://blog.csdn.net/cqdawnxsg/article/details/80680270(对于命令解析比较全面)

  6. AT+CREG?出现问题+CREG: 0,0/+CREG: 0,2等问题解决 https://blog.csdn.net/heroybc/article/details/90108113 (检查信号,手机卡是否正确安装使用)

Arduino Nano与SIM800C 通信的更多相关文章

  1. 使用Arduino Nano驱动Lora模块

    使用Arduino Nano驱动Lora模块 为什么选用Lora 射频通信芯片有很多种,但是一般在同样功耗下,距离没有Lora远;同等范围下,没有Lora节能. Lora通信只适用于低速率,高延时的场 ...

  2. Arduino Nano + WIZ550io = 简易上网

    我爱Arduino Nano – 这是一个非常好外形小巧却功能齐全的Arduino Uno.然而.当我去将它连接到互联网,全部的干净利落小巧也消失在大尺寸的以太网盾底下了. 只是,我近期发现了一个更好 ...

  3. Arduino Nano 读取ADS1100实例

    利用Arduino Nano的wire库可以很方便对ADS1100进行设置和读取转换后的数据. /* * Arduino reads ADS1100 I2C 16bit diff ADC */ /* ...

  4. Arduino nano的bootloader文件烧录

    1.买了了nano还没用就用 avrisp烧录器给烧了其他程序,仅仅是的avr单片机了:2.将他恢复成Arduino nano吧. 在Arduino软件安装目录中的hardware\arduino中. ...

  5. Arduino蓝牙模块实现通信

    蓝牙参数特点 1.蓝牙核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接 2.led指示蓝牙连接状态,闪烁表示没有 ...

  6. Edison与Arduino通过USB对接通信

    虽然Edison本身就装在一块Arduino扩展板上,但当要接的传感器太多了的时候一个扩展板也不够用了.因此需要再用一Arduino板扩展功能.而两者需要通信才能达到一个整体的效果,因此这里介绍如何用 ...

  7. PMS5003ST+Arduino Nano OLED屏显示

    整合OLED显示和PMS5003报数 #include <Arduino.h> #include <pms.h> /////////////////////////////// ...

  8. Arduino学习笔记⑧ 红外通信

    1.前言     红外通信是一种利用红外光编码进行数据传输的无线通信方式,在目前来说是使用非常广泛的.生活中常见电视遥控器,空调遥控器,DVD遥控器(现在估计是老古董了),均使用红外线遥控.使用红外线 ...

  9. 使用C#应用程序与Arduino开发板进行通信

    在本文中,我们将一个Arduino Pro Mini开发板连接到PC,并且使用C# Windows应用程序与其进行通信. 将硬件连接到PC是非常有利的,不仅是因为你可以发送命令以及监控状态,还可以实时 ...

随机推荐

  1. 前端知识点回顾——Nodejs

    Node.js 事件循环机制 setImmediate()是将事件插入到事件队列尾部,主线程和事件队列的函数执行完成之后立即执行setImmediate指定的回调函数,和setTimeout(fn,0 ...

  2. springboot 获取控制器参数的几种方式

    这里介绍springboot 获取控制器参数有四种方式 1.无注解下获取参数 2.使用@RequestParam获取参数 3.传递数组 4.通过URL传递参数 无注解下获取参数无注解下获取参数,需要控 ...

  3. leetcode94 不同的二叉搜索树

    solution 1:**动态规划 class Solution { public: int numTrees(int n) { vector<int> g={1,1,2}; for(in ...

  4. 成功解决Developer Express和Janus WinForms Controls中控件的冲突

    最新在做一套GIS系统的框架,其中用到了Janus WinForms Controls和Developer Express这两个插件. 我用DE的xtraTabbedMdiManager组件来管理我的 ...

  5. Redis之快速入门与应用[教程/总结]

    内容概要 因为项目中用户注册发送验证码,需要学习redis内存数据库,故而下午花了些时间进行初步学习.本博文性质属于对今日redis学习内容的小结.在看本博文前或者看完后,可以反问自己三个问题:Red ...

  6. System.arraycopy() 数组复制方法

    一.深度复制和浅度复制的区别    Java数组的复制操作可以分为深度复制和浅度复制,简单来说深度复制,可以将对象的值和对象的内容复制;浅复制是指对对象引用的复制. 二.System.arraycop ...

  7. Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素

    学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...

  8. STS MVC与MyBatis的结合

    1. MVC关键点在于Controller 1.1 Controller通过返回两种类型的数据完成用户端请求的回复:一种是模型(视图),另一种是JSON数据. 1.2 Controller类采用@Co ...

  9. 一篇学习完rabbitmq基础知识,springboot整合rabbitmq

    一   rabbitmq 介绍 MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced MessageQueue 高级消息队列协议 ...

  10. day25 多继承、接口、抽象类、鸭子类型

    今日内容: 如何查看对象的名称空间及对象名 继承的另一种使用 单继承与多继承 经典类与新式类 mro列表 菱形继承 接口 抽象类 鸭子类型 1.查看名称空间包含的变量: 使用类或对象名.__dict_ ...