我在各大网站苦苦搜寻,没有一个好的资料来叙述一下关于arduino发送数据给ESP01的通信案例,发现没有一个完整的,单片机给单片机做辅助是很常见的,于是我自己在不断探索之后,总结出了以下经验。

先说一下单片机接线:

UNO                             ESP01

12                                     RX

13                                     TX

3V3                                   VCC和EN

GND                                  GND

UNO代码:

#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(13, 12); // RX, TX  通过软串口连接esp8266,

String ssid ="*****;                                       //WIFI名称
String password="******";                                  //WIFI密码
String uid = "*******************";             // 用户私钥
String topic = "****";                                    //推送消息的主题

void setup(){  mySerial.begin(115200);
  mySerial.println("AT+RST");   // 初始化重启一次esp8266
  delay(1500);
  echo();
  mySerial.println("AT");
  echo();
  delay(500);
  mySerial.println("AT+CWMODE=3");  // 设置Wi-Fi模式
  echo();
  mySerial.println("AT+CWJAP=\"" +ssid+"\",\"" + password + "\"");  // 连接Wi-Fi
  echo();
  delay(1000);

}

String msg = "";
    //数据用#号包裹,方便app端根据#号做字符串切割,不理解的百度=C语言split分割字符串
    msg = "#"+String(tdsValue,0)+"#";

ESP01 不需要代码

它要做的是AT指令的接收:

esp8266连接到usb调试工具,通过串口可以进行调试

1、发AT测试esp8266是否正常

2、发AT+CWMODE=3设置路由器模式 1 station模式 2 AP路由器模式 3 station+AP混合模式

3、发AT+CWJAP="WiFi","code"设置模块WIFI名称,WIFI密码

4、发AT+CIPMODE=1 开启透明传输模式

5、发AT+CIPSTART="TCP","bemfa.com",8344连接服务器和端口

6、发AT+CIPSEND进入透传模式,下面发的都会无条件传输

7、发cmd=1&uid=******************************************=*********** 如果需要订阅主题,发送这个订阅指令,发送完订阅,控制台推送的话,8266就可以收到推送消息了

8、发cmd=2&uid=********************************************&msg=#******#如果需要推送指令,发布数据指令

9、发cmd=0&msg=ping发送心跳 ,发任意数据都相当于心跳,随意发点啥就行,60s内不发,连接就会断开,就收不到订阅消息了

微信小程序端代码:js(提供部分为大家参考)

gettds(){

//获取水硬度值,屏幕初始化时,未订阅收到水硬度时,先去主动获取值

//api 接口详细说明见巴法云接入文档

var that = this

wx.request({

url: '*******************', //状态api接口

data: {

uid: that.data.uid,

topic: that.data.tdstopic,

num:1

},

header: {

'content-type': "application/x-www-form-urlencoded"

},

success (res) {

console.log(res)

if(res.data.msg.indexOf("#") != -1){//如果数据里包含#号,表示获取的是传感器值,因为单片机上传数据的时候用#号进行了包裹

//如果有#号就进行字符串分割

var all_data_arr = res.data.msg.split("#"); //分割数据,并把分割后的数据放到数组里。

console.log(all_data_arr)//打印数组

that.setData({ //数据赋值给变量

tds:all_data_arr[1],//赋值水硬度

dataTime:res.data.time

})

}

}

})

},

最终效果:

arduino获取TDS数据再由ESP01发送到服务器,微信小程序显示相关推荐

  1. 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程)

    本篇记录说明 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程,详细内容可私信交流) (第一次写博客,写得不好的地方见谅,面向新手,大佬请无视,不喜勿喷 ...

  2. 小程序空显示undefined_微信小程序显示ESP8266上传的实时显示温湿度数据

    第一.原理讲解 原理简述:利用发布订阅模式.第一步,先读取DHT11温湿度数值,第二步,新建主题,然后esp8266往这个主题发送消息,第三步.小程序通过http API接口获取数据.小程序控制原理: ...

  3. 小程序向java后台发送图片_微信小程序在后台如何将二进制流转换成图片

    我在前端请求了小程序码返回的是一堆乱码, java不太熟网上找了一个方法可以将二进制流和图片互转,但是从微信小程序码接口获取的数据用这个方法无法获取正确的图片,不知道哪里有问题: 有没有只在前端就能获 ...

  4. 微信小程序如何将数据存储到服务器,微信小程序关于数据存储的一些坑

    微信小程序存储方式官方文档说得很清楚,同步和异步.保存数据有以下两种方式: wx.setStorage 异步保存 wx.setStorageSync同步保存 获取数据也是两种: wx.getStora ...

  5. 微信小程录制视频上传服务器,微信小程序-从相册获取图片,视频使用相机拍照,录像上传+服务器nodejs版接收-微信小程序视频上传功能-微信小程序视频上传...

    在本文微信小程序-从相册获取图片使用相机拍照本地图片上传之前需要看看微信小程序-获取用户session_key,openid,unionid-后端为nodejs代码封装是在上文添加的.本文知识点:1. ...

  6. 如何获取当前地址以及天气温度情况,适用于微信小程序(端午假期将至,祝愿大家端午快乐)

    我的需求:获取当前地址,温度和天气[微信小程序] 先获取当前经纬度uni.getLocation 获取经纬度以后,通过经纬度进行逆地理编码,获取当前定位地址uni.request 处理显示[" ...

  7. 微信小程序 访问ip服务器,微信小程序如何获取code?微信小程序如何获取用户ip?...

    微信小程序如何获取code?微信小程序如何获取用户ip?最近小编收到很多问题,其中一个就是下面小编为大家整理一下关于微信小程序如何获取code的步骤,希望这些方法能够帮助到大家. 首先,调用 wx.l ...

  8. 解决uniapp在微信小程序显示图片/数据,h5不显示图片/数据。

    配置跨域 首先在mainifest.json中的源码视图中配置跨域. "h5": {"devServer": {"port": 8080,& ...

  9. 小程序数据怎么传输到服务器,微信小程序怎么将数据传输到Java后台

    微信小程序怎么将数据传输到Java后台 发布时间:2020-12-10 14:19:49 来源:亿速云 阅读:124 作者:Leah 今天就跟大家聊聊有关微信小程序怎么将数据传输到Java后台,可能很 ...

最新文章

  1. pandas将dataframe日期数据列的日期转化为日期当月第一天(每月1号)的日期并生成新的数据列(Setting date to beginning of month in dataframe)
  2. springcloud 并发_SpringCloud-Zuul高并发请求下的限流处理
  3. 最近学习了 HTTP 连接池
  4. rest-framework之响应器(渲染器)
  5. watson软件使用_使用Watson Assistant进行多语言管理
  6. 目前市场上用于个人计算机的硬盘尺寸是,第5章-硬盘(计算机组装与维护).docx
  7. 数字图像处理-0.绪论
  8. 数据的标准化【转载】
  9. php fwrite服务器上写不进去_使用PHP来简单的创建一个RPC服务
  10. golang 中strconv包用法
  11. Springboot整合Drools规则引擎
  12. DIY 3D打印机测试
  13. 用python简易制作晋江城小说下载器(GUI+爬虫+多线程)
  14. python翻页爬取豆瓣影评_Python3爬取豆瓣电影
  15. servlet会话技术 cookie和session
  16. Weiss Ratings公布加密货币评级结果
  17. matlab中zi filtic b a,实验七离散系统分析的matlab实现.doc_蚂蚁文库
  18. 虚拟歌手亮相央视元宵晚会,窥探背后的科技力量
  19. 当代最值得收藏的画家作品_当代最具收藏价值的画家:许敬如作品欣赏
  20. Spring Boot 解决同名类导致的bean名冲突bean name conflicts

热门文章

  1. 新版unity toggle组件汉化名字
  2. QCC3031 32M Flash精简 (QCC30xx系列应该通用)
  3. TROPOMI(哨兵5P)数据介绍及下载方法
  4. 阻抗匹配(二):示波器
  5. word 自带公式编辑器中公式等号对齐方法
  6. springbbot运行无法编译成功,找不到jar包报错:Error:(3, 46) java: 程序包org.springframework.context.annotation不存在
  7. 引入隔离率与潜伏人员的SIR模型附matlab代码
  8. Unity基础知识学习七,帧同步源码学习
  9. 160个破解练习之CrackMe 005 CKme002
  10. 上下料机械手控制系统硬件性能及运动轨迹说明