找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1060|回复: 1
打印 上一主题 下一主题
收起左侧

arduino通过ESP01发送数据到服务器,小程序获取

[复制链接]
跳转到指定楼层
楼主
ID:1000059 发表于 2023-2-11 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在各大网站苦苦搜寻,没有一个好的资料来叙述一下关于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","巴法云",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

        })

      }

    }

  })   

}



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:262559 发表于 2023-2-17 13:20 | 只看该作者
巴法云目前还是免费的  我用了好几年了  很稳定 非常适合个人开发
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表