功能介绍:
使用4G模块EC600S和32单片机实现接入阿里云服务器,上传光照数据和下发命令控制LED灯(PC13),同时可以打电话、发短信。

前期准备:
1、首先你得有一个阿里云的账号,没有的话就注册一个
2、在物联网平台创建产品和设备
附上参考文章:AT指令接入阿里云

主要硬件准备:
1、STM32F103C8T6最小系统板
2、4G模块,我使用的是EC600S(适用于移动、联通、电信卡)
3、光照强度传感器BH1750

模块接线:
4G模块EC600S:
VCC–5V GND–GND TX–PA3 RX–PA2
光照强度传感器BH1750:
VCC–3.3V GND–GNG SCL–PB6 SDA–PB7 ADDR–不接

演示阶段:
实物图

串口助手输出信息


成功接入阿里云,设备显示在线

成功上传光照数据和LED灯状态

在线调试里可以下发控制命令

查看自己是否订阅成功

开发Web应用和移动应用,可以上物联网应用开发控制台 应用开发链接
简单开发的手机应用

代码需要修改的地方
1、三元组和手机号码

阿里云三元组获取方式:

2、数据流名(标识符)修改
将Light、LED修改为你的标识符
标识符查看方式:

部分代码实现:
数据上传部分代码
每隔3S上传一次光照数据

命令的下发部分代码
在串口2中断服务函数中,通过“version”字符串判断有没有接收到下发的命令,如果是下发,串口2就会接收到这样一长串的字符串:

+QMTRECV: 0,0,"/sys/a1VPyJEJRjJ/test01/thing/service/property/set",92,"{"method":"thing.service.property.set","id":"44777986","params":{"LED":1},"version":"1.0.0"}"

收到下发的命令后,将U2_RX_Cmd置1在main()中指向命令和上传LED灯状态。

有时发布消息时会出错,出错时串口2会接收到字符串“EEOR”。发生错误时,我们可以试着重连阿里云。

发短信和打电话可以直接调用这两个函数即可

 EC600S_SendMsg(Phone,Message);  //发短信EC600S_CallPhone(Phone);        //打电话

main.c文件

/*
4G模块EC600S接入阿里云--实现数据上传和命令下发
模块接线:
4G模块EC600S:
VCC--5V  GND--GND  TX--PA3  RX--PA2
光照强度传感器BH1750:
VCC--3.3V  GND--GNG  SCL--PB6  SDA--PB7  ADDR--不接
*/
#include <stm32f10x.h>
#include <stdbool.h>
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "bh1750.h"
#include "EC600S.h"//三元组
#define PRODUCTKEY       "a1VPyJEJRjJ"
#define DEVICENAME       "test01"
#define DEVICESECRET     "e7da0d4274b9da4ded7b7e90ad4178be"//手机号码和短信内容
#define Phone            "10086"
#define Message          "Thank"int main(void)
{float light;     //光照值char dataBuf[36]; //存储数据unsigned short timeCount = 300; //发送间隔变量NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC优先级分组SysTick_Init(72);  //初始化延时函数LED_init(); //初始化LED PC13BH1750_Init();//初始化光照传感器USART1_Init(115200);  //初始化串口1--调试用USART2_Init(115200);   //初始化串口1--EC600S使用EC600S_Init();    //初始化EC600S模块EC600S_CONNECT_MQTT_SERVER(PRODUCTKEY,DEVICENAME,DEVICESECRET); //连接阿里云服务器// EC600S_SendMsg(Phone,Message);  //发短信// EC600S_CallPhone(Phone);        //打电话while(1){delay_ms(10);if(timeCount++ >= 300)   //发送间隔3s{timeCount = 0;light =  LIght_Intensity();    //读取光照强度的值memset(dataBuf,0,36);sprintf(dataBuf,"{params:{Light:%.1f}}",light);      //将数据打包json格式EC600S_MQTT_SEND_DATA(PRODUCTKEY,DEVICENAME,dataBuf); //发布主题消息}  if(U2_RX_Cmd==1)      //接收到数据{U2_RX_Cmd = 0;       //重新置为0printf("串口2:收到服务器下发数据:\r\n");if(strstr((const char*)U2_RX_BUF,(const char*)"{\"LED\":1}")){LED0 = 0;  //低电平开灯printf("LED灯已打开\r\n");}else if(strstr((const char*)U2_RX_BUF,(const char*)"{\"LED\":0}")){LED0 = 1;   //高电平关灯printf("LED灯已关闭\r\n");}memset(U2_RX_BUF, 0, sizeof(U2_RX_BUF));  //清空串口2缓冲区//上传LED灯的状态memset(dataBuf,0,36);sprintf(dataBuf,"{params:{LED:%d}}",!LED0_STA);     //将数据打包json格式EC600S_MQTT_SEND_DATA(PRODUCTKEY,DEVICENAME,dataBuf);//发布主题消息}         //接收到错误,重连阿里云if(U2_RX_Error==1){U2_RX_Error = 0;   //重新置为0printf("接收到错误,重连阿里云....\r\n");EC600S_CONNECT_MQTT_SERVER(PRODUCTKEY,DEVICENAME,DEVICESECRET);//连接阿里云服务器}}
}

最后:
需要源码的可以自行下载。代码下载链接
下载操作:

4G模块接入阿里云-实现数据上传和命令下发相关推荐

  1. STM32接入阿里云(FreeRTOS)-实现数据上传和命令下发

    功能介绍: 将传感器采集的数据上传到阿里云,同时可以下发控制板上的LED灯(PC13) 前期准备: 1.首先你得有一个阿里云的账号,没有的话就注册一个 2.在物联网平台创建产品和设备 主要硬件准备: ...

  2. ESP8266接入阿里云物联网平台上传温湿度数据

    简介 本文章使用NodeMCU(ESP8266)开发板和SHTC3温湿度传感器接入阿里云物联网(IoT)平台,并上传读取到的温湿度数据.每秒读取一次温湿度数据,每30秒上传一次30秒内的温湿度的平均值 ...

  3. NodeMCU(ESP-12E)+阿里云实现数据上传和控制继电器开锁

    源码及工具下载:https://github.com/RL-Y/NodeMCU-aliyun.git Arduino15:提取码:ythf :链接: https://pan.baidu.com/s/1 ...

  4. CC2530接入OneNET-实现数据上传和命令下发

    前言: 之前物联网课设时就想用CC2530单片机和ESP8266-01S来实现数据上传和远程控制,当时在网上也找了很多资料,无果.本来是不想再碰这个的,由于我同学做毕设需要用到,所以再努力了一把,也终 ...

  5. C51接入OneNET-实现数据上传和命令下发

    功能介绍: 使用51单片机将温度数据上传到OneNET云平台,同时可以实现远程控制LED灯的功能. 前提准备: 1.有OneNET的账号 2.刷入 OneNET 提供的 ESP8266 固件参考文章 ...

  6. RaspberryPi+OneNET MQTT方式 数据上传和命令下发

    MQTT相关实验 第一节:Mosquitto 相关实验 第二节:域名解析和内网穿透实验 第三节:OneNET 相关实验 Gitee仓库地址: https://gitee.com/zhj0125/MQT ...

  7. 硬件采集数据怎么上传服务器,如何使用4G蓝牙网关进行数据采集和数据上传

    原标题:如何使用4G蓝牙网关进行数据采集和数据上传 从技术效果上看,WiFi拥有宽带高.传输速度快等优点主要用于电脑.智能手机等的通信.蓝牙通信技术拥有功耗低,传输速率快等优点,是目前适用于数据采集和 ...

  8. 阿里云OSS文件上传下载,拿来即用

    什么是OSS 我们可以理解为就是一个资源服务器,在这之前我也尝试过Nginx当静态资源服务器,但效果比较一般,为什么选择阿里云OSS,只是因为最近刚好公司用到了,所以就接入了,还有其他的比如七牛云,腾 ...

  9. 阿里云视频点播-->>>阿里云媒资上传工具类及配置

    阿里云媒资上传 官网: 介绍 1.阿里云视频点播 2.视频服务流程 三,测试类中编写代码 四,媒资管理管理配置-存储管理 五,开始编写我们的JAVA代码 1.application.yml 2.配置类 ...

最新文章

  1. spring-retry----线程内重试
  2. Beetlex之tcp/tls服务压测工具
  3. OAF_OAF组件系列1 - Item Style汇总(概念)
  4. seminar by Moshe Vardi from Rice University
  5. 郭台铭卸任董事长 鸿海进入集体领导时代
  6. JSP中9个隐含对象
  7. 计算机组成体系结构复习笔记
  8. 曝一段十多年前的“情史”!
  9. 能量景观(Energy landscape)
  10. 他励直流电动机的启动
  11. Java 专项练习【1 - 10】,突围金三银四面试季
  12. C语言计算相对分子质量
  13. 冒泡算法java代码实现
  14. VS Code 中选中英文单词大小写切换快捷键
  15. 3d学习笔记(四)——打飞碟小游戏
  16. 把思科端口速率改为不协商_端口汇聚—TRUNK技术介绍
  17. 证据理论(3)—— 计算两个证据体的距离
  18. 从一道CTF题目学习Tanner图和LDPC
  19. Mac系统如何启动Mysql,停止Mysql,重启Mysql
  20. 实现灰度化 Grayscale(灰度)的实现

热门文章

  1. stm32+增量式pid+max6675 PWM温度控制
  2. 硬盘数据丢失有哪些找回方法?一分钟学会硬盘恢复
  3. 解密阿里内部P级岗位
  4. vs2019C语言fflush,vs2019清空输入缓冲区
  5. 多点触摸三维电子沙盘可视化交互系统教程第15课
  6. C# 编程入门第二课 注释变量,VS2019快捷键,String和string,命名规则,赋值运算符,+号作用占位符,转义字符算术运算符,类型转换
  7. 污水泵站监控管理系统能干什么
  8. T3-总账查询账表报错:运行时错误6,溢出
  9. 计算机技术专业 英文,计算机技术与应用专业英文简历模板
  10. ubuntu20.04 镜像下载