设为首页收藏本站

[基础教程] 【ESP32教程之BLE】让废旧的电插板Smart

Chocho2017 发表于 2017-7-6 19:28:00 | 显示全部楼层 [复制链接]
26 2729
本帖最后由 Chocho2017 于 2017-8-1 08:55 编辑

control.gif

快来瞧瞧,Chocho又放大招啦~~~~~~

1.jpg


2.jpg


3.jpg


       没错,你没看错,这就是基于废旧的电插板改装的,采用ESP32的BLE通信,控制Beetle BLE主板的智能插板,让废旧的电插板秒变智能家居。一直以来,都说ESP32支持WiFi和蓝牙双重通信方式,但始终没有提供Arduino的库文件。作为Arduino小粉的我,着实捏了把汗。这个ESP32设备可以同时控制多个从机设备,我做了两个,亲测没问题。通过RGB灯显示插板是否可以给外面供电,绿色为使能,红色为不使能导通。

       我在想,是不是第一个使用ESP32-BLE来做东西的了???


       视频有点儿长,制作细节部分还是看下面的步骤吧。

所需硬件
       继电器模块
       Beetle BLE
       按键3个
       3D外壳

3D文件和相关的代码文件,点击链接下载,DFRobot_ESP32_WiFiBLE库文件点击下载

制作过程
1、拆卸电源适配器和废旧电插板
     在拆卸电源适配器时,需要用镊子或者尖嘴钳撬开,我用的电源适配器没有螺丝,是直接用胶水固定的,拆的时候废了牛劲。

1.png

2.png

拆废旧电插板的步骤大家还是参考视频吧,各个厂家的电插板不一样。

3.png

4.png

5.png

2、电源连接线的制作
    需要找一段家用电线,随便什么型号的都行,然后拆掉外面的漆包线,长度大概在10cm左右。

6.png

7.png

8.png

3、焊接交流电源电线
    将电线的一端焊接到交流电输入处,注意焊锡不要太多,否则会漏到下面的插口连接处。

9.png

焊接完成后,用斜口钳取下USB供电接口。

11.png

然后焊接5V电源线,这是给Beetle主板和继电器供电的,并且用热熔胶固定。

12.png


4、主板元器件的连接
    电路原理图如下,其中D2控制继电器,D3控制RGB灯:
原理图.png

中间需要用热熔胶固定继电器、Beetle BLE主板、电插板,细节部分可以参考视频。

13.png

14.png

15.png

16.png

17.png

5、下载程序
    源码下载连接请往上看,Beetle BLE程序源码如下:
[C++] 纯文本查看 复制代码
#include <PlainProtocol.h>
#include <Adafruit_NeoPixel.h>

#define RELAY_PIN 3
#define RGB_PIN 4

enum{
  STOP,
  RUN,
  DEFAULTSTOP
};

enum{
  DEFAULTCOLOR,
  RED,
  GREEN,
  BLUE
};

PlainProtocol mySerial(Serial,115200);
Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, RGB_PIN, NEO_GRB + NEO_KHZ800);

boolean rgbBlink = false;
char currentState = DEFAULTSTOP;
unsigned long current_millis = 0;

/*
 * 1->Red 2->Green 3->Blue default->close
 */
void setRGBColor(int value){
  switch(value){
    case 1:
       strip.setPixelColor(0, strip.Color(255, 0, 0));
       break;
    case 2:
       strip.setPixelColor(0, strip.Color(0, 255, 0));
       break;
    case 3:
       strip.setPixelColor(0, strip.Color(0, 0, 255));
       break;
    default:
       strip.setPixelColor(0, strip.Color(0, 0, 0));
       break; 
  }
  strip.show();
}
void setRelayState(char value){
  if(value == RUN){
    currentState = RUN;
    digitalWrite(RELAY_PIN,HIGH);
    setRGBColor(GREEN);
  }else{
    currentState = STOP;
    digitalWrite(RELAY_PIN,LOW);
    setRGBColor(RED);
  }
}

void updateState(void){
  mySerial.write("STATE",currentState);
}

void blinkLoop(void){
  static int iRGB = 0;
  static int times = 0;
  if(rgbBlink){
    if(iRGB){
     setRGBColor(DEFAULTCOLOR);
    }else{
      if(currentState==DEFAULTSTOP){
        setRGBColor(BLUE);
      }else if(currentState==RUN){
        setRGBColor(GREEN);
      }else if(currentState==STOP){
        setRGBColor(RED);
      }
      if(times > 50){
        rgbBlink = false;
      }
    }
    times++;
  }else{
    setRelayState(currentState);
    times = 0;
  }
  iRGB=~iRGB;
}

void timerRun(void){
  if((millis()- current_millis)>200){
    current_millis = millis();
    blinkLoop();
    updateState();
  }
}

void setup() {
  Serial.begin(115200);
  current_millis = millis();
  strip.begin();
  strip.show(); 
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN,LOW);
  setRGBColor(BLUE);
}

void loop() {
  if(mySerial.available()){
    if(mySerial.equals("RELAYSTATE")){
      int value = mySerial.read();
      setRelayState(value);
    }else if(mySerial.equals("SCAN")){
      int value = mySerial.read();
      if(value==1)
       rgbBlink = true;
      else
       rgbBlink = false;
    }
  }
  timerRun();
}


FireBeetle Board-ESP32主控板代码如下:
[C++] 纯文本查看 复制代码
#include "DFRobot_ESP32_BLE.h"
DFRobot_ESP32_BLE ble;
char dataName[15] = {'\0'};

boolean relay1 = false;
boolean relay2 = false;
boolean scan = false;

void scanKeys(void){
  if(digitalRead(D2) == LOW){
    delay(5);
    while(digitalRead(D2) == LOW);
    String sendStr = "<RELAYSTATE>";
    if(relay1 == false){
      sendStr = sendStr+"1;";
      relay1 = true;
    }else{
      sendStr = sendStr+"0;";
      relay1 = false;
    }
    ble.writedata("Chocho1", sendStr);
  }
  
  if(digitalRead(D5) == LOW){
    delay(5);
    while(digitalRead(D5) == LOW);
    String sendStr = "<RELAYSTATE>";
    if(relay2 == false){
      sendStr = sendStr+"1;";
      relay2 = true;
    }else{
      sendStr = sendStr+"0;";
      relay2 = false;
    }
    ble.writedata("Chocho2", sendStr);
  }

  if(digitalRead(D9) == LOW){
    delay(5);
    while(digitalRead(D9) == LOW);
    String sendStr = "<SCAN>";
    if(scan == false){
      sendStr = sendStr+"1;";
      scan = true;
    }else{
      sendStr = sendStr+"0;";
      scan = false;
    }
    ble.writedata("Chocho1", sendStr);
    delay(10);
    ble.writedata("Chocho2", sendStr);
  }
  delay(20);
}

void setup() {
  //Serial.begin(115200);
  pinMode(D2,INPUT);
  pinMode(D5,INPUT);
  pinMode(D9,INPUT);
  ble.setService(0xdfb0);
  ble.setCharacteristic(0xdfb1);
  ble.setconnummax(2);
  ble.setconnectname0("Chocho1");
  ble.setconnectname1("Chocho2");
  ble.init();
  delay(100);
  ble.begin();
}

void loop() {
  String bledata = ble.readdata(dataName);
  if (bledata.length() > 0) {
    if (strncmp(dataName, "Chocho1", strlen("Chocho1")) == 0) {
      //Serial.print("Chocho1:");
      //Serial.println(bledata);
    } else if (strncmp(dataName, "Chocho2", strlen("Chocho2")) == 0) {
      //Serial.print("Chocho2:");
      //Serial.println(bledata);
    }
  }
  scanKeys();
}


ps:怎么下载程序,应该不用我说了吧~~~~~~~~~

6、整机组装

     用热熔胶固定插头,然后装进外壳

18.png

然后,就没有然后了~~~~~~~~~

8.jpg

ESP32技术交流群: 619558168

欢迎来踩个人博客:www.seemaker.cn


发表于 2017-7-6 19:42:17 | 显示全部楼层
照例,自己抢个沙发先。
回复 支持 反对

使用道具 举报

发表于 2017-7-6 20:52:44 | 显示全部楼层
板凳
回复 支持 反对

使用道具 举报

发表于 2017-7-7 09:51:50 | 显示全部楼层
被两针动图戳中笑点~~感觉可以盯着看一个世纪~~
回复 支持 反对

使用道具 举报

发表于 2017-7-7 10:13:57 | 显示全部楼层
luna 发表于 2017-7-7 09:51
被两针动图戳中笑点~~感觉可以盯着看一个世纪~~

  {:5_161:}  {:5_161:}
回复 支持 反对

使用道具 举报

发表于 2017-7-7 10:53:19 | 显示全部楼层
这个必须点个赞!
回复 支持 反对

使用道具 举报

发表于 2017-7-7 14:54:18 | 显示全部楼层
ivenlin2017 发表于 2017-7-7 10:53
这个必须点个赞!

呵呵,谢谢了啦。
回复 支持 反对

使用道具 举报

发表于 2017-7-7 20:24:11 | 显示全部楼层
luna 发表于 2017-7-7 09:51
被两针动图戳中笑点~~感觉可以盯着看一个世纪~~

哈哈哈哈哈我也是
回复 支持 反对

使用道具 举报

发表于 2017-7-8 00:43:19 | 显示全部楼层
gif大神
回复 支持 反对

使用道具 举报

发表于 2017-7-9 16:52:43 | 显示全部楼层
做的真好
回复 支持 反对

使用道具 举报

发表于 2017-7-9 20:21:58 | 显示全部楼层

谢谢支持。
回复 支持 反对

使用道具 举报

发表于 2017-7-10 07:46:23 | 显示全部楼层
带码看起来有点累,能不能注释一下啊
回复 支持 反对

使用道具 举报

发表于 2017-7-10 08:44:33 | 显示全部楼层
两块板子有主从机模式吗?
回复 支持 反对

使用道具 举报

发表于 2017-7-10 08:48:15 | 显示全部楼层
还有BLE模式能不能详细讲一下啊?
回复 支持 反对

使用道具 举报

发表于 2017-7-10 09:16:52 | 显示全部楼层
xiaohe9527 发表于 2017-7-10 08:48
还有BLE模式能不能详细讲一下啊?

ESP32的ble是作为主机的,Beetle BLE是作为从机,ESP32直接连接它就好了。
回复 支持 反对

使用道具 举报

发表于 2017-7-10 09:17:41 | 显示全部楼层
xiaohe9527 发表于 2017-7-10 08:48
还有BLE模式能不能详细讲一下啊?

你可以扫一下视频后面的微信二维码,加我微信,这样方便沟通。
回复 支持 反对

使用道具 举报

发表于 2017-7-10 10:31:45 | 显示全部楼层
不错,支持
回复 支持 反对

使用道具 举报

发表于 2017-7-10 11:07:39 | 显示全部楼层

呵呵,谢谢咯。
回复 支持 反对

使用道具 举报

发表于 2017-7-11 16:15:13 | 显示全部楼层
不错,支持,只是为什么看第一个图感觉有点污
回复 支持 反对

使用道具 举报

发表于 2017-7-11 18:03:23 | 显示全部楼层
创客火 发表于 2017-7-11 16:15
不错,支持,只是为什么看第一个图感觉有点污

gif没弄好,结果看了下效果,感觉很搞笑,就放上去了,增添喜剧色彩。
回复 支持 反对

使用道具 举报

发表于 2017-7-11 20:26:32 | 显示全部楼层
太厉害了,一看就是大侠,但是你剥线的动作太吓人了,好歹也买个剥线钳来吧,哈哈!
回复 支持 反对

使用道具 举报

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

本版积分规则 允许回帖同步到新浪微博  

推荐阅读

精华导读




公司简介| 联系我们| 小黑屋| 加入我们| 微博| 优酷| 英文网站| DF创客社区 ( 沪ICP备09038501号-4  
友情链接| 硬创邦| 花生壳社区| 模友之吧| 电子发烧友社区| 创客星球| 云汉电子社区| 电子工程网| 与非网| Arduino中文社区| 南极熊3D打印网| OneNET|

上海智位机器人有限公司  沪ICP备09038501号-4   

Powered by Discuz! X3.1

Licensed Comsenz Inc.

返回顶部 返回列表