查看: 6726|回复: 3

[项目分享] 使用FireBeetle Board ESP32 制作电子徽章

[复制链接]
如果你在参加派对的时候希望大家能记住你的名字。使用FireBeetle Board ESP32来制作一个电子徽章,可以成为聚会活动中很酷的东西。


部件清单:
3、400mAh 3.7V锂电池 长50mm 宽20mm 厚度4.2mm
4、圆形磁铁 直径15mm
5、一角硬币
6、401胶水

部件清单

部件清单



资料清单:
1、Arduino IDE  你可以在Arduino官网下载最新版本的IDE

2、FireBeetle Board ESP32板子的库文件 (登录DFRobot的 wiki资料库可以找到说明)
http://wiki.dfrobot.com.cn/index.php?title=(SKU:DFR0478)FireBeetle_Board-ESP32%E4%B8%BB%E6%9D%BF%E6%8E%A7%E5%88%B6%E5%99%A8



制作完成的效果图:
IMG_20170608_141020.jpg
IMG_20170608_152820.jpg

在FireBeetle Covers-24x8 LED Matrix上显示滚动字符
首先我们需要将下载的FireBeetle Covers-24x8 LED Matrix驱动库ZIP文件导入到Arduino IDE,此时才能够使用这个点阵。
使用 点阵库里面的Scrolling例子烧录,看看是否可以滚动显示 "DFROBOT 2017"

[C++] 纯文本查看 复制代码
#include "DFRobot_HT1632C.h"

#define DATA D6
#define CS D2
#define WR D7
//#define RD D8

DFRobot_HT1632C ht1632c = DFRobot_HT1632C(DATA, WR,CS);

char str[] = " DFROBOT 2017";

void setup() {
  Serial.begin(115200);
  // put your setup code here, to run once:
  ht1632c.begin();
  ht1632c.isLedOn(true);
  ht1632c.clearScreen();
  delay(500);
}

void loop() {
  // put your main code here, to run repeatedly:
  ht1632c.print(str,50);
  //delay(100);
}

测试FireBeetle Board ESP32 内部霍尔传感器
你可能发现了一个问题,无法关闭显示,除非你拔掉电池。
我们是否可以通过其他的方式来关闭显示呢,通过查询ESP32的数据手册,我们发现模块内部居然还集成了一个霍尔传感器,我们是不是可以通过这个霍尔传感器检测外部磁场来做一些事情。
首先我们来测试下这个霍尔传感器,以下是测试代码:
[C++] 纯文本查看 复制代码
int sensorValue = 0;        // value read from the sensor
void setup() {
    // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
 // put your main code here, to run repeatedly:
 sensorValue = hallRead();
 Serial.println(sensorValue);
 delay(100);
}


代码很简单,就是不停的通过串口打印出霍尔传感器的采集到的磁场强度数据。以下是捕捉到的数据:
FireBeetle Board hall test.jpg

可以看到,我手上的传感器在没有磁铁靠近的情况下大概在 30 这样的数字
然后我们将磁铁的一面贴近FireBeetle Board ESP32 主板安装ESP32模块背面的PCB位置
hall sensor1.jpg
数字大概在 -2到-9之间。

我们用磁铁的另外一面靠近 FireBeetle Board ESP32 背面
hallo sensor.jpg
数值在48到53之间

这说明磁铁靠近模块,霍尔传感器的数据的确会有变化,使用霍尔传感器的读数来切换LED点阵的亮灭是可行的。
根据以上的数据我设定如果霍尔传感器的数据大于35或者小于10,判断为磁铁贴近FireBeetle Board ESP32主板。
所以我们是不是可以在衣服上面固定一个磁铁,当电子徽章吸附在衣服上的时候自动显示?

通过检测霍尔传感器数值来开关LED点阵
在这里,我们将LED点阵显示和霍尔传感器检测相结合,开发出可以通过外部磁铁来开关LED点阵。
首先,我们使用401胶水将硬币粘贴在FireBeetle Board ESP32的背面。
这里需要注意以下3点:
1、硬币的位置可以参考下面的图片,如果离ESP32模块的位置太远,有可能不能可靠识别。
2、401胶水不要点太多,否则会四处流动。
3、10分钟后等胶水凝固,在来进行下一步。
IMG_20170608_113825.jpg
IMG_20170608_114010.jpg
我们添加如下代码:
[C++] 纯文本查看 复制代码
#include "DFRobot_HT1632C.h"
#define DATA D6
#define CS D2
#define WR D7
//#define RD D8
int sensorValue = 0;        // value read from the sensor
DFRobot_HT1632C ht1632c = DFRobot_HT1632C(DATA, WR, CS);

char str[] = "I'M BOBO FROM CHINA";

void setup() {
  // put your setup code here, to run once:
  ht1632c.begin();
  ht1632c.isLedOn(true);
  ht1632c.clearScreen();
  delay(500);
}

void loop() {
  // put your main code here, to run repeatedly:
  sensorValue = hallRead();
  if ((sensorValue > 35) || (sensorValue < 10)) {
    ht1632c.inLowpower(false);
    ht1632c.print(str, 50);
  }
  else {
    ht1632c.inLowpower(true);
  }

}

下载完成后我们可以测试下效果。当磁铁靠近硬币,显示屏显示字符。当远离硬币。显示屏关闭。

FireBeetle Board ESP32 低功耗测试
此时虽然我们完成了磁铁靠近后LED点阵熄灭,降低了功耗。但是发现FireBeetle Board ESP32主板还有20多毫安的功耗。我们是否可以让ESP32也进入低功耗,进一步减少项目在不使用的时候的电流呢?通过查询FireBeetle Board ESP32 主板的使用说明书,里面有介绍低功耗的控制函数。


我们将程序改为如下:
[C++] 纯文本查看 复制代码
#include "DFRobot_HT1632C.h"
#include <esp_deep_sleep.h>
#define DATA D6
#define CS D2
#define WR D7
//#define RD D8
int sensorValue = 0;        // value read from the sensor
DFRobot_HT1632C ht1632c = DFRobot_HT1632C(DATA, WR, CS);

char str[] = "I'M BOBO FROM CHINA";

void setup() {
  // put your setup code here, to run once:
  ht1632c.begin();
  ht1632c.isLedOn(true);
  ht1632c.clearScreen();
  delay(500);
}

void loop() {
  // put your main code here, to run repeatedly:
  sensorValue = hallRead();
  if ((sensorValue > 35) || (sensorValue < 10)) {
    ht1632c.inLowpower(false);
    ht1632c.print(str, 50);
  }
  else {
    ht1632c.inLowpower(true);
    ESP.deepSleep(5000000);
  }
}



在这里,我们使用ESP.deepSleep(5000000); 这个函数让FireBeetle Board ESP32主板深度睡眠 5秒钟。睡眠后实际测试加上LED点阵的漏电流一共在1毫安左右。
5秒钟后 FireBeetle Board ESP32主板自动唤醒,快速读取一次霍尔传感器,如果判断没有磁铁靠近又立即进入睡眠5秒状态。

至此,项目完成了,你可以将磁铁通过别针安装在衣服上,或者直接吸附到铁材料上面。也可以像我一样直接将磁铁放到衬衣口袋里面。我们将制作的电子徽章吸附到衣服上面,徽章自动循环显示。当取下后自动停止显示。是不是很吸引眼球。






Chocho2017  版主

发表于 2017-6-16 13:49:35

哈哈,抢沙发咯。胸牌很赞,有外壳就好了。
回复 支持 反对

使用道具 举报

mooncakez  初级技师

发表于 2017-6-17 10:32:24

很不错的胸牌~
回复 支持 反对

使用道具 举报

nicho  版主

发表于 2017-6-17 11:26:04

硬币还能这么用呀~
回复 支持 反对

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

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

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

mail