涂鸦arduino中文社区活动
查看: 2520|回复: 4

arduino连接ESP8266-01给微信发消息,消息提醒等

[复制链接]

该用户从未签到

发表于 2020-5-11 23:20 | 显示全部楼层 |阅读模式
本帖最后由 bemfa 于 2020-10-13 11:34 编辑

材料准备

ESP8266-01/ESP8266-01s一块
arduino 一块
手机一块


接线

微信截图_20200508211657.png

ESP8266-01 ----------arduino
3.3v-------------3.3V
GND-----------GND
EN--------------3.3V
TX-------------pin13
RX----------------pin12

第一 下载arduino  uno 示例


下载地址:  http://www.cloud.bemfa.com/zip/at_wechat.zip

本demo 是利用arduino IDE开发,下载的时候选择arduino 开发板即可
esp8266-01 或者esp8266-01s都内置AT固件,因此不需要编程,直接连接到arduino 即可

需要修改的地方:

  1. /******************************************************************************/

  2. #define DEFAULT_STASSID  "HTC"                              //WIFI名称,区分大小写
  3. #define DEFAULT_STAPSW   "abc123456"                        //WIFI密码,区分大小写
  4. String uid = "f49412ea7657d8f738cafe29bc245c14";             // 用户私钥,巴法云控制台获取
  5. String type = "1";                                           // 1表示是预警消息,默认即可
  6. String device = "人体红外传感器设备";                           // 设备名称
  7. String msg = "检测到班主任已站在窗户边,立即放下手机假装学习";       //发送的消息
  8. String msg2 = "小样";                                         //消息备注,可为空
  9. int delaytime = 0;                                          //为了防止被设备“骚扰”,可设置贤者时间,单位是秒,如果设置了该值,在该时间内不会发消息到微信,设置为0立即推送。
  10. String ApiUrl = "http://ai.bemfa.com/api/wechat/v1/";        //默认 api 网址
  11. /******************************************************************************/
复制代码



用户私钥可以巴法云控制台http://www.cloud.bemfa.com/tcpfast.php获取,微信扫码登陆后,即可在巴法创客云控制台获取。

邮箱注册的用户,需要在控制台点击“绑定微信”,进行绑定,不然没法推送消息。



登陆完成后,可在控制台看到自己的**私钥UID **,如下所示:第二种


第二 全部程序

  1. /*
  2. * 微信通知提醒
  3. * 2020-05-11
  4. * QQ交流群:824273231
  5. * 官网https://bemfa.com
  6. */

  7. #include <SoftwareSerial.h>

  8. SoftwareSerial mySerial(13, 12); // RX, TX  通过软串口连接esp8266,


  9. /******************************************************************************/
  10. String ssid ="newhtc";                                       //WIFI名称
  11. String password="qq123456";                                  //WIFI密码
  12. String uid = "4d9ec352e0376f2110a0c601a28xxxx";             // 用户私钥,巴法云控制台获取
  13. String type = "1";                                           // 1表示是预警消息,默认即可
  14. String device = "人体红外传感器设备";                           // 设备名称
  15. String msg = "检测到班主任已站在窗户边,立即放下手机假装学习";       //发送的消息
  16. String msg2 = "小样";                                         //消息备注,可为空
  17. int delaytime = 0;   


  18. void setup() {
  19.   // Open serial communications and wait for port to open:
  20.   Serial.begin(115200);
  21.   while (!Serial) {
  22.     ; // wait for serial port to connect. Needed for native USB port only
  23.   }

  24.   mySerial.begin(115200);
  25.   mySerial.println("AT+RST");   // 初始化重启一次esp8266
  26.   delay(1500);
  27.   echo();
  28.   mySerial.println("AT");
  29.   echo();
  30.   delay(500);
  31.   mySerial.println("AT+CWMODE=3");  // 设置Wi-Fi模式
  32.   echo();
  33.   mySerial.println("AT+CWJAP="" +ssid+"","" + password + """);  // 连接Wi-Fi
  34.   echo();
  35.   delay(10000);
  36. }

  37. void loop() {

  38.   if (mySerial.available()) {
  39.     Serial.write(mySerial.read());
  40.   }
  41.   if (Serial.available()) {
  42.     mySerial.write(Serial.read());
  43.   }
  44.   post();
  45. }

  46. void echo(){
  47.   delay(50);
  48.   while (mySerial.available()) {
  49.     Serial.write(mySerial.read());
  50.   }
  51. }

  52. void post(){
  53.   String postData;
  54.   //Post Data
  55.   postData = "uid="+uid+"&type=" + type +"&time="+delaytime+"&device="+device+"&msg="+msg+"&msg2="+msg2;
  56.   mySerial.println("AT+CIPMODE=1");
  57.   echo();
  58.   mySerial.println("AT+CIPSTART="TCP","ai.bemfa.com",80");  // 连接服务器的80端口
  59.   delay(1000);
  60.   echo();
  61.   mySerial.println("AT+CIPSEND"); // 进入TCP透传模式,接下来发送的所有消息都会发送给服务器
  62.   echo();
  63.   mySerial.print("POST /api/wechat/v1/"); // 开始发送post请求
  64.   mySerial.print(" HTTP/1.1\r\nHost: ai.bemfa.com\r\nContent-Type: application/x-www-form-urlencoded\r\nConnection:close\r\nContent-Length:"); // post请求的报文格式
  65.   mySerial.print(postData.length()); // 需要计算post请求的数据长度
  66.   mySerial.print("\r\n\r\n");
  67.   mySerial.println(postData); // 结束post请求
  68.   delay(3000);
  69.   echo();
  70.   mySerial.print("+++"); // 退出tcp透传模式,用println会出错
  71.   delay(2000);
  72. }
复制代码


大家玩的时候,想要发送信息可以自定义更改,可以阈值报警,消息提醒等,脑洞自由发挥。



第三 下载程序到arduino uno 即可
第四 效果展示




往期精彩帖子:

教程 = arduino连接ESP8266-01给微信发消息,消息提醒等


教程 = ESP8266读DHT11温湿度,开发微信小程序实时显示


教程 = (开源)微信小程序控制esp8266,可远程


教程 =(可远程)ESP8266读DHT11温湿度,APP Inventor 制作app实时显示


教程 =ESP8266给微信发消息,超阈值报警,消息提醒等


教程 =(可远程)App Inventor编写安卓应用程序控制ESP8266


教程 =
两个ESP8266通过云端实现远程数据交互


教程 =利用天猫精灵控制NodeMCU(ESP8266)


教程 = arduino+ESP8266-01制作数据监测系统+手机App实时显示


教程 = esp32-cam拍照上传到云平台,http协议传输


教程 = 巴法云 之Google 智能语音 控制 ESP8266


教程 = 定时控制esp8266----(远程控制)





该用户从未签到

发表于 2020-5-12 10:31 | 显示全部楼层
学习了,好贴

该用户从未签到

发表于 2020-9-28 22:38 | 显示全部楼层
学习了,可是为什么我用充电宝供电就会出现经常掉线的情况呢?插在电脑USB口就不掉线

该用户从未签到

 楼主| 发表于 2020-10-13 11:35 | 显示全部楼层
jack_lu 发表于 2020-9-28 22:38
学习了,可是为什么我用充电宝供电就会出现经常掉线的情况呢?插在电脑USB口就不掉线 ...

可能是充电宝供电不稳定

该用户从未签到

发表于 2021-2-23 16:10 | 显示全部楼层
请问我下载程序到arduino后毫无反应是什么问题呀。我已经更改了程序中的RX、TX串口、wifi名称密码、用户私钥、巴法云也绑定了微信,但是无论是云里tcp创客对应的topic还是微信都没收到消息,求大神帮忙
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

字符串是否对比该使用哪个函数?
字符串是否对比该使用哪个
现有问题是, 串口接收到的数据是正常的,(通过print函数打印串口收
VSCode+PIO开发环境中添加Blinker.h的问题
VSCode+PIO开发环境中添加
我在main.c中添加就没问题,但是添加在.h文件中就会出现编译错误,在其他.c文件添加此
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
这样写不对吗,为啥老是报错
这样写不对吗,为啥老是报
Python上位机控制WS2812B
Python上位机控制WS2812B
说在前面: 设计师对颜色有着天生的敏锐性,而工程师眼中这些都会幻化成数值。。
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表