【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
中文版 : 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~~~
Trroyet 发表于 2017-8-16 18:17
热熔胶120度融化pla80度变软 这个作品如果一不小心接了个大功率 然后出门了 很危险 ...
接灯什么的,就没问题呀。 xiaohe9527 发表于 2017-7-10 08:48
还有BLE模式能不能详细讲一下啊?
ESP32的ble是作为主机的,Beetle BLE是作为从机,ESP32直接连接它就好了。 照例,自己抢个沙发先。 板凳 被两针动图戳中笑点~~感觉可以盯着看一个世纪~~ luna 发表于 2017-7-7 09:51
被两针动图戳中笑点~~感觉可以盯着看一个世纪~~
{:5_161:}{:5_161:}{:5_161:} 这个必须点个赞! ivenlin2017 发表于 2017-7-7 10:53
这个必须点个赞!
呵呵,谢谢了啦。 luna 发表于 2017-7-7 09:51
被两针动图戳中笑点~~感觉可以盯着看一个世纪~~
{:5_161:}哈哈哈哈哈我也是 gif大神 做的真好 xiaohe9527 发表于 2017-7-9 16:52
做的真好
谢谢支持。 带码看起来有点累,能不能注释一下啊 两块板子有主从机模式吗? 还有BLE模式能不能详细讲一下啊?
xiaohe9527 发表于 2017-7-10 08:48
还有BLE模式能不能详细讲一下啊?
你可以扫一下视频后面的微信二维码,加我微信,这样方便沟通。:lol :handshake不错,支持 oksuyong2006 发表于 2017-7-10 10:31
不错,支持
呵呵,谢谢咯。 不错,支持,只是为什么看第一个图感觉有点污:lol 创客火 发表于 2017-7-11 16:15
不错,支持,只是为什么看第一个图感觉有点污
gif没弄好,结果看了下效果,感觉很搞笑,就放上去了,增添喜剧色彩。{:5_170:} 太厉害了,一看就是大侠,但是你剥线的动作太吓人了,好歹也买个剥线钳来吧,哈哈!
页:
[1]
2