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

我在各大网站苦苦搜寻,没有一个好的资料来叙述一下关于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

        })

      }

    }

  })    

},

最终效果:

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值