23813浏览
查看: 23813|回复: 27

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

[复制链接]
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程序源码如下:

  1. #include <PlainProtocol.h>
  2. #include <Adafruit_NeoPixel.h>
  3. #define RELAY_PIN 3
  4. #define RGB_PIN 4
  5. enum{
  6.   STOP,
  7.   RUN,
  8.   DEFAULTSTOP
  9. };
  10. enum{
  11.   DEFAULTCOLOR,
  12.   RED,
  13.   GREEN,
  14.   BLUE
  15. };
  16. PlainProtocol mySerial(Serial,115200);
  17. Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, RGB_PIN, NEO_GRB + NEO_KHZ800);
  18. boolean rgbBlink = false;
  19. char currentState = DEFAULTSTOP;
  20. unsigned long current_millis = 0;
  21. /*
  22. * 1->Red 2->Green 3->Blue default->close
  23. */
  24. void setRGBColor(int value){
  25.   switch(value){
  26.     case 1:
  27.        strip.setPixelColor(0, strip.Color(255, 0, 0));
  28.        break;
  29.     case 2:
  30.        strip.setPixelColor(0, strip.Color(0, 255, 0));
  31.        break;
  32.     case 3:
  33.        strip.setPixelColor(0, strip.Color(0, 0, 255));
  34.        break;
  35.     default:
  36.        strip.setPixelColor(0, strip.Color(0, 0, 0));
  37.        break;
  38.   }
  39.   strip.show();
  40. }
  41. void setRelayState(char value){
  42.   if(value == RUN){
  43.     currentState = RUN;
  44.     digitalWrite(RELAY_PIN,HIGH);
  45.     setRGBColor(GREEN);
  46.   }else{
  47.     currentState = STOP;
  48.     digitalWrite(RELAY_PIN,LOW);
  49.     setRGBColor(RED);
  50.   }
  51. }
  52. void updateState(void){
  53.   mySerial.write("STATE",currentState);
  54. }
  55. void blinkLoop(void){
  56.   static int iRGB = 0;
  57.   static int times = 0;
  58.   if(rgbBlink){
  59.     if(iRGB){
  60.      setRGBColor(DEFAULTCOLOR);
  61.     }else{
  62.       if(currentState==DEFAULTSTOP){
  63.         setRGBColor(BLUE);
  64.       }else if(currentState==RUN){
  65.         setRGBColor(GREEN);
  66.       }else if(currentState==STOP){
  67.         setRGBColor(RED);
  68.       }
  69.       if(times > 50){
  70.         rgbBlink = false;
  71.       }
  72.     }
  73.     times++;
  74.   }else{
  75.     setRelayState(currentState);
  76.     times = 0;
  77.   }
  78.   iRGB=~iRGB;
  79. }
  80. void timerRun(void){
  81.   if((millis()- current_millis)>200){
  82.     current_millis = millis();
  83.     blinkLoop();
  84.     updateState();
  85.   }
  86. }
  87. void setup() {
  88.   Serial.begin(115200);
  89.   current_millis = millis();
  90.   strip.begin();
  91.   strip.show();
  92.   pinMode(RELAY_PIN, OUTPUT);
  93.   digitalWrite(RELAY_PIN,LOW);
  94.   setRGBColor(BLUE);
  95. }
  96. void loop() {
  97.   if(mySerial.available()){
  98.     if(mySerial.equals("RELAYSTATE")){
  99.       int value = mySerial.read();
  100.       setRelayState(value);
  101.     }else if(mySerial.equals("SCAN")){
  102.       int value = mySerial.read();
  103.       if(value==1)
  104.        rgbBlink = true;
  105.       else
  106.        rgbBlink = false;
  107.     }
  108.   }
  109.   timerRun();
  110. }
复制代码

FireBeetle Board-ESP32主控板代码如下:
  1. <div align="center"><div align="left">#include "DFRobot_ESP32_BLE.h"
  2. DFRobot_ESP32_BLE ble;
  3. char dataName[15] = {'\0'};
  4. boolean relay1 = false;
  5. boolean relay2 = false;
  6. boolean scan = false;
  7. void scanKeys(void){
  8.   if(digitalRead(D2) == LOW){
  9.     delay(5);
  10.     while(digitalRead(D2) == LOW);
  11.     String sendStr = "<RELAYSTATE>";
  12.     if(relay1 == false){
  13.       sendStr = sendStr+"1;";
  14.       relay1 = true;
  15.     }else{
  16.       sendStr = sendStr+"0;";
  17.       relay1 = false;
  18.     }
  19.     ble.writedata("Chocho1", sendStr);
  20.   }
  21.   
  22.   if(digitalRead(D5) == LOW){
  23.     delay(5);
  24.     while(digitalRead(D5) == LOW);
  25.     String sendStr = "<RELAYSTATE>";
  26.     if(relay2 == false){
  27.       sendStr = sendStr+"1;";
  28.       relay2 = true;
  29.     }else{
  30.       sendStr = sendStr+"0;";
  31.       relay2 = false;
  32.     }
  33.     ble.writedata("Chocho2", sendStr);
  34.   }
  35.   if(digitalRead(D9) == LOW){
  36.     delay(5);
  37.     while(digitalRead(D9) == LOW);
  38.     String sendStr = "<SCAN>";
  39.     if(scan == false){
  40.       sendStr = sendStr+"1;";
  41.       scan = true;
  42.     }else{
  43.       sendStr = sendStr+"0;";
  44.       scan = false;
  45.     }
  46.     ble.writedata("Chocho1", sendStr);
  47.     delay(10);
  48.     ble.writedata("Chocho2", sendStr);
  49.   }
  50.   delay(20);
  51. }
  52. void setup() {
  53.   //Serial.begin(115200);
  54.   pinMode(D2,INPUT);
  55.   pinMode(D5,INPUT);
  56.   pinMode(D9,INPUT);
  57.   ble.setService(0xdfb0);
  58.   ble.setCharacteristic(0xdfb1);
  59.   ble.setconnummax(2);
  60.   ble.setconnectname0("Chocho1");
  61.   ble.setconnectname1("Chocho2");
  62.   ble.init();
  63.   delay(100);
  64.   ble.begin();
  65. }
  66. void loop() {
  67.   String bledata = ble.readdata(dataName);
  68.   if (bledata.length() > 0) {
  69.     if (strncmp(dataName, "Chocho1", strlen("Chocho1")) == 0) {
  70.       //Serial.print("Chocho1:");
  71.       //Serial.println(bledata);
  72.     } else if (strncmp(dataName, "Chocho2", strlen("Chocho2")) == 0) {
  73.       //Serial.print("Chocho2:");
  74.       //Serial.println(bledata);
  75.     }
  76.   }
  77.   scanKeys();
  78. }
  79. </div></div>
复制代码

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

6、整机组装

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

18.png

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

8.jpg

ESP32技术交流群: 619558168

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

luna  初级技神

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

中文版ESP32教程汇总贴
英文版ESP32 tutorial汇总贴
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项目汇总:
[ESP32酷炫应用] 8X8X8光立方
关于Firebeetle Board-ESP32低功耗水果电池的实验
FireBeetle Board-ESP32教程之一】Blynk—控制LED灯
FireBeetle Board-ESP32应用教程】让你的打火机可穿戴
FireBeetle Board-ESP32应用教程】跑步运动的计步神器
ESP32教程之BLE】让废旧的电插板Smart

回复

使用道具 举报

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
被两针动图戳中笑点~~感觉可以盯着看一个世纪~~

    
回复

使用道具 举报

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
被两针动图戳中笑点~~感觉可以盯着看一个世纪~~

哈哈哈哈哈我也是
回复

使用道具 举报

秦皇岛岛主  初级技师

发表于 2017-7-8 00:43:19

gif大神
回复

使用道具 举报

xiaohe9527  高级技师

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

做的真好
回复

使用道具 举报

Chocho2017  初级技匠
 楼主|

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


谢谢支持。
回复

使用道具 举报

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


呵呵,谢谢咯。
回复

使用道具 举报

创客火  初级技师

发表于 2017-7-11 16:15:13

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

使用道具 举报

Chocho2017  初级技匠
 楼主|

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

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

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

使用道具 举报

创客多多  见习技师

发表于 2017-7-11 20:26:32

太厉害了,一看就是大侠,但是你剥线的动作太吓人了,好歹也买个剥线钳来吧,哈哈!
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail