Chocho2017 发表于 2017-7-6 19:28:00

【ESP32教程之BLE】让废旧的电插板Smart


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








       没错,你没看错,这就是基于废旧的电插板改装的,采用ESP32的BLE通信,控制Beetle BLE主板的智能插板,让废旧的电插板秒变智能家居。一直以来,都说ESP32支持WiFi和蓝牙双重通信方式,但始终没有提供arduino的库文件。作为Arduino小粉的我,着实捏了把汗。这个ESP32设备可以同时控制多个从机设备,我做了两个,亲测没问题。通过RGB灯显示插板是否可以给外面供电,绿色为使能,红色为不使能导通。
       我在想,是不是第一个使用ESP32-BLE来做东西的了???https://v.youku.com/v_show/id_XMjg3MjQ4NTA4OA==
       视频有点儿长,制作细节部分还是看下面的步骤吧。
所需硬件       USB电源适配器5V       FireBeetle-ESP32主控板       FireBeetle Covers-Proto板       继电器模块       Beetle BLE       按键3个       3D外壳
3D文件和相关的代码文件,点击链接下载,DFRobot_ESP32_WiFiBLE库文件点击下载。
制作过程1、拆卸电源适配器和废旧电插板   在拆卸电源适配器时,需要用镊子或者尖嘴钳撬开,我用的电源适配器没有螺丝,是直接用胶水固定的,拆的时候废了牛劲。



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




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





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


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


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



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

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






5、下载程序    源码下载连接请往上看,Beetle BLE程序源码如下:
#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主控板代码如下:<div align="center"><div align="left">#include "DFRobot_ESP32_BLE.h"
DFRobot_ESP32_BLE ble;
char dataName = {'\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();
}
</div></div>
ps:怎么下载程序,应该不用我说了吧~~~~~~~~~
6、整机组装
   用热熔胶固定插头,然后装进外壳


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

ESP32技术交流群: 619558168

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

luna 发表于 2018-12-26 17:30:00

中文版 : ESP32教程汇总贴英文版 : ESP32 tutorial汇总贴
ESP32教程汇总:
用于构建ESP32编译环境的Arduino IDEESP32教程:MicroPython支持ESP32 MicroPython教程:连接Wi-Fi网络ESP32 MicroPython教程:解析JSONESP32 MicroPython教程:编码JSONESP32 / ESP8266 MicroPython教程:从计算机运行脚本ESP32 / ESP8266 MicroPython教程:HTTP GET请求ESP32 / ESP8266 MicroPython教程:自动连接WiFi
ESP32 MicroPython教程:使用SHA-256
ESP32 / ESP8266 MicroPython教程:从文件系统运行脚本ESP32 / ESP8266 MicroPython:HTTP POST请求
ESP32 MicroPython教程:用uPyCraft执行脚本
ESP32 MicroPython教程:uPyCraft IDE入门


【FireBeetle基础教程】电源供电说明
如何在树莓派上给firebeetle esp32编程
【ESP-WROOM-32教程—Lesson 1】Arduino IDE for ESP32编译环境的搭建



ESP32项目汇总:
8X8X8光立方
关于Firebeetle Board-ESP32低功耗水果电池的实验
【FireBeetle Board-ESP32教程之一】Blynk—控制LED灯
【FireBeetle Board-ESP32应用教程】让你的打火机可穿戴
【FireBeetle Board-ESP32应用教程】跑步运动的计步神器
【ESP32教程之BLE】让废旧的电插板Smart
【ESP32教程之保险柜】让饮品不再被偷走【ESP32教程】音乐播放机【ESP32教程】DIY智能机械臂ESP32太阳能气象站ESP32太阳能气象站让我们造一把红外测温枪来感受夏天 - 使用FireBeetle ESP32使用FireBeetle Board ESP32 制作电子徽章
【ESP8266教程—Lesson 1】Arduino IDE for ESP8266编译环境的搭建
【ESP8266教程—Lesson2】智能化你的浇花神器
【ESP8266教程—Lesson3】小风扇的变形记
【ESP8266教程—Lesson4】大大大事不好啦,8266变电功耗检测器


ESP32测评报告:

【FireBeetle Board-ESP32评测报告之一】开箱并驱动oled
【FireBeetle Board-ESP32评测报告之二】温度上送物联网OLED显示
【FireBeetle Board-ESP32评测报告之三】LED温度表
【FireBeetle Board-ESP32评测报告之四】bylnk之桥(心率显示)
【FireBeetle Board-ESP32评测之】micropython上传小工具
【FireBeetle开箱】ESP32 Wi-Fi+BLE~~~

Chocho2017 发表于 2017-8-17 08:51:33

Trroyet 发表于 2017-8-16 18:17
热熔胶120度融化pla80度变软 这个作品如果一不小心接了个大功率 然后出门了 很危险 ...

接灯什么的,就没问题呀。

Chocho2017 发表于 2017-7-10 09:16:52

xiaohe9527 发表于 2017-7-10 08:48
还有BLE模式能不能详细讲一下啊?

ESP32的ble是作为主机的,Beetle BLE是作为从机,ESP32直接连接它就好了。

Chocho2017 发表于 2017-7-6 19:42:17

照例,自己抢个沙发先。

hnyzcj 发表于 2017-7-6 20:52:44

板凳

luna 发表于 2017-7-7 09:51:50

被两针动图戳中笑点~~感觉可以盯着看一个世纪~~

Chocho2017 发表于 2017-7-7 10:13:57

luna 发表于 2017-7-7 09:51
被两针动图戳中笑点~~感觉可以盯着看一个世纪~~

{:5_161:}{:5_161:}{:5_161:}

ivenlin2017 发表于 2017-7-7 10:53:19

这个必须点个赞!

Chocho2017 发表于 2017-7-7 14:54:18

ivenlin2017 发表于 2017-7-7 10:53
这个必须点个赞!

呵呵,谢谢了啦。

nicho 发表于 2017-7-7 20:24:11

luna 发表于 2017-7-7 09:51
被两针动图戳中笑点~~感觉可以盯着看一个世纪~~

{:5_161:}哈哈哈哈哈我也是

秦皇岛岛主 发表于 2017-7-8 00:43:19

gif大神

xiaohe9527 发表于 2017-7-9 16:52:43

做的真好

Chocho2017 发表于 2017-7-9 20:21:58

xiaohe9527 发表于 2017-7-9 16:52
做的真好

谢谢支持。

xiaohe9527 发表于 2017-7-10 07:46:23

带码看起来有点累,能不能注释一下啊

xiaohe9527 发表于 2017-7-10 08:44:33

两块板子有主从机模式吗?

xiaohe9527 发表于 2017-7-10 08:48:15

还有BLE模式能不能详细讲一下啊?

Chocho2017 发表于 2017-7-10 09:17:41

xiaohe9527 发表于 2017-7-10 08:48
还有BLE模式能不能详细讲一下啊?

你可以扫一下视频后面的微信二维码,加我微信,这样方便沟通。:lol

oksuyong2006 发表于 2017-7-10 10:31:45

:handshake不错,支持

Chocho2017 发表于 2017-7-10 11:07:39

oksuyong2006 发表于 2017-7-10 10:31
不错,支持

呵呵,谢谢咯。

创客火 发表于 2017-7-11 16:15:13

不错,支持,只是为什么看第一个图感觉有点污:lol

Chocho2017 发表于 2017-7-11 18:03:23

创客火 发表于 2017-7-11 16:15
不错,支持,只是为什么看第一个图感觉有点污

gif没弄好,结果看了下效果,感觉很搞笑,就放上去了,增添喜剧色彩。{:5_170:}

创客多多 发表于 2017-7-11 20:26:32

太厉害了,一看就是大侠,但是你剥线的动作太吓人了,好歹也买个剥线钳来吧,哈哈!
页: [1] 2
查看完整版本: 【ESP32教程之BLE】让废旧的电插板Smart