对于一个烟民来说,是否有过想抽烟却找不到打火机的经历?是否想过如果打火机可穿戴该有多好?没错,我就经历过这样的痛苦。话不多说,先晒两张照片:
呵呵,体积有点儿大,不过效果已经很明显了,至少我自己都被迷住了。
我的打火机和传统的打火机不一样,是采用电弧打火的,通过触控按钮来控制打火。触控按钮采用FireBeetle Board-ESP32主板GPIO自带的触摸功能。而且,可以看出,他还是一个手表。下面我将制作过程分享给大家。
一、硬件清单
电弧点火器高压升压线圈×1
NPN三极管×1
51Ω电阻×1
1KΩ电阻×1
1N4007二极管×1
大功率NPN三极管×1
FireBeetle Board-ESP32主板×1
FireBeetle Covers-Proto Board×1
FireBeetle Covers-24×8 LED Matrix×1
3.7V锂电池×1
注意:部分原件可以在DFRobot商城采购到。
二、硬件连接
1、电路原理图,如下图所示:
将电子元器件按照图中的方式焊接在FireBeetle Covers-Proto Board板上,并将打火机的控制引脚用导线与D3连通,可以直接连接到FireBeetle Covers-Proto Board的D3,因为FireBeetle系列是pin to pin兼容的。
将Vcc连接到FireBeetle Covers-Proto Board板的Vcc,GND连接到FireBeetle Covers-Proto Board的GND(如果你看不懂原理图那就没得救了)。
2、连接触摸导线
DFR0478 FireBeetle Board-ESP32主板 自带触摸功能,这里用的是T3(A4)和T5(MCLK/IO12)(触摸引脚对应的端口可以查看 FireBeetle Board-ESP32用户使用手册)。将A4和MCLK/IO12分半用导线引出来。
3、将LED灯板、ESP32主板和焊接好元件的扩展板连接在一起,如下图所示:
连接的方式可以采用排针和排母插接的方式,方便中间放置锂电池。
三、组装外壳
外壳采用 3D打印机打印,源文件下载地址, 点击下载。
组装前需要先下载代码到主板,源代码在压缩文件包中,程序如下:
- #include "DFRobot_HT1632C.h"
- #include <TimeLib.h>
-
- #define DATA D6
- #define CS D2
- #define WR D7
-
- DFRobot_HT1632C ht1632c = DFRobot_HT1632C(DATA, WR,CS);
-
- int threshold = 40;
- bool touch1detected = false;
- bool touch2detected = false;
-
- String twoDigits(int digits){
- if(digits < 10) {
- String i =String(digits);
- return i;
- }else {
- return String(digits);
- }
- }
-
- uint8_t utf8ascii(byte ascii) {
- static uint8_t LASTCHAR;
- if ( ascii < 128 ) {
- LASTCHAR = 0;
- return ascii;
- }
- uint8_t last = LASTCHAR;
- LASTCHAR = ascii;
- switch (last) {
- case 0xC2: return (ascii); break;
- case 0xC3: return (ascii | 0xC0); break;
- case 0x82: if (ascii == 0xAC) return (0x80);
- }
- return 0;
- }
-
- void updataClock(void){
- String timenow = String(hour())+":"+twoDigits(minute())+":"+twoDigits(second());
- uint16_t length = timenow.length() + 1;
- uint16_t k = 0;
- char* str = (char*)malloc(length*sizeof(char));
- timenow.toCharArray(str,length);
- length--;
- for(uint16_t i=0;i<length;i++){
- char c = utf8ascii(str<i>);
- if(c!=0)
- str[k++] = c;
- }
- str[k] = 0;
- ht1632c.clearScreen();
- ht1632c.print(str);
- free(str);
- }
-
- void gotTouch1(){
- touch1detected = true;
- }
-
- void gotTouch2(){
- touch2detected = true;
- }
-
- void setup() {
- Serial.begin(115200);
- pinMode(D3,OUTPUT);
- digitalWrite(D3,LOW);
-
- ht1632c.begin();
- ht1632c.isLedOn(true);
- ht1632c.clearScreen();
- delay(500);
- touchAttachInterrupt(T5, gotTouch1, threshold);
- touchAttachInterrupt(T3, gotTouch2, threshold);
- }
-
- void loop() {
- if(touch1detected){
- touch1detected = false;
- ht1632c.clearScreen();
- ht1632c.print("1");
- }else if(touch2detected){
- touch2detected = false;
- ht1632c.clearScreen();
- ht1632c.print("2");
- }else{
- updataClock();
- }
- delay(50);
- }</i>
复制代码
将触控导线分别穿过外壳预留的按钮安装孔,如下图所示:
然后,将螺丝弹垫用热风枪吹热,这样方便固定螺丝弹垫到外壳(这个就是触控按钮了):
注意:不要用手去拿弹垫,小心烫手。
将弹垫固定到外壳,确保弹垫和导线连接:
注意:在固定前,需要将高压线圈的两个输出导线穿过外壳:
然后用热熔胶固定整个外壳。手环和打火机分别用魔术贴连接,如下图所示:
接着,下载程序到打火机,程序源码 点击下载(3D源文件也在里面)。
再然后,就完工了。。。。。。
|
|
|
|
|
|