【自制分享】低成本做一个B站小电视!(゜-゜)つロ 干杯~-bilibili

【自制分享】低成本做一个B站小电视!(゜-゜)つロ 干杯~-bilibili

原创 Tkwer Tkwer望远镜 4月11日

【自制分享】低成本做一个B站小电视!(゜-゜)つロ 干杯~-bilibili

        ↑ 点击上方,关注“Tkwer望远镜”

 

                                           作者:Tkwer

公众号:Tkwer望远镜

  前言

    上一期做了一个简单的介绍这个小电视,这篇文章讲解一下全部的制作流程,同时开源设计文件和源代码。

    上一期链接:你也可以做一个b站小电视!哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

 

  预览实物效果

    实现功能:

    1、50+种LED动画变换,颜色多种,手机APP控制;

    2、时钟功能;

    3、B站粉丝计数器(不完整显示);

    4、小夜灯。

LED变换动画(50+种)

时钟功能(白色代表时,橙色代表分1,

显示时间为10:40左右)

 

 

粉丝计数器(9颗蓝灯代表9个粉丝,

超过10个,用黄色代替,以此类推)

 

床头小夜灯

 

充电指示灯(红色正在充电

,蓝色充满电)

 

其他特点

    APP控制,使用的是blynk物联网平台。通过blynk app可以随时随地控制小电视。

    

 

    使用wifimanager库,smartconfig联网。这个意味着你不用在代码里修改你的wifi账号密码,blynk服务器,和你的b站UID,全部都可以通过手机配置。打开手机先连接到esp的wifi进入配置页面。因为是个人服务器和TOKEN是私密的,所以码了。

    

    加入了lsm6dsm传感器,它是一个六轴传感器,它拥有可以直接检测单击或者双击事件中断,双击也可以实现切换功能小电视。

开始制作

 

  需要工具

    一把美工刀、A4纸、中性黑笔、砂纸、滴胶、(定制)亚克力板、一把手钻、热熔胶、电烙铁(热风枪)、PCB电路板,元器件(bom清单)、micro USB线、小夜灯盒子、WS2812 12位灯环,光敏电阻。

成本计算(大概):小夜灯3元(9.9四个包邮)+PCB打样5元或免费(嘉立创)+定制亚克力板3元(淘宝定制)+bom清单30元左右=41元

     工具图(不完全):

 

bom清单:

 

制作的过程

 

    外壳制作

    首先这个小电视,不需要你会3d打印或者拥有3d打印机。我们只需要一把美工刀就可以。然后在tb搜索“小夜灯”买下面这个。 

 

    我们就获得了一个外壳的雏形。然后讲那个不透光的盖子换成磨砂的亚克力板材,这个可以在tb上定制尺寸,3块钱一片。把小夜灯里面的电路去掉。由于这个盒子的材质比较软,后面突出部分可以用美工刀慢慢磨掉。不建议用锯子,这样会很容易磨花后面其他部分。还有就是要在盖子上面两片纸片,纸片画上bilibili的表情。后面开窗部分我是用滴胶做成长方体状,然后塞进去的,天线也是滴胶做的。至此我们的外壳做完了。

 

亚克力板尺寸图

(把这个图交给tb商家就可以了3mm厚,磨砂材质)

 

(开孔开的有点丑)

 

  电路制作

     PCB我做了两版(其实是三版💢)。硬件资源是esp-12F模块,WS2812 12位灯环,ch340e串口芯片,lsm6dsm传感器,然后有锂电池充电电路,拨动开关,复位按键,下载按键。

原理图

 

 

 

 

  代码分析

    

     用arduino IDE来编写烧录代码,下面介绍一下各部分代码实现:

    时钟显示功能,获取ntp时钟更新:

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com",60*60*8, 30*60*1000);
... ...
//===== 显示时间功能  =====
uint8_t h = 0;
uint8_t m = 0;
uint8_t last_h = 13;
uint8_t last_m = 61;
void show_time(){
  if(h!=last_h||m!=last_m||Function_flag!=last_Function_flag){
    ws2812fx.setBrightness(40);
    ws2812fx.strip_off();
    ws2812fx.setPixelColor((h+3)%12, WHITE); // white  (h+3)%12偏移修正
    ws2812fx.setPixelColor((m+3)%12, ORANGE); // orange
    last_h = h;
    last_m = m;
    last_Function_flag = Function_flag;
    ws2812fx.show();
  }
    //
}

 

    获取b站粉丝数目参考:https://mc.dfrobot.com.cn/thread-303095-1-1.html

//获取粉丝数目
void getFollower(String url)
{
    HTTPClient http;
    http.begin(url);

    int httpCode = http.GET();
    Serial.printf("[HTTP] GET... code: %d\n", httpCode);

    if (httpCode == 200)
    {
        Serial.println("Get OK");
        String resBuff = http.getString();

        // ---------- ArduinoJson V5 ----------
        JsonObject &root = jsonBuffer.parseObject(resBuff);
        if (!root.success())
        {
          Serial.println("parseObject() failed");
          return;
        }

        follower = root["data"]["follower"];
        Serial.print("Fans: ");
        Serial.println(follower);
    }
    else
    {
        Serial.printf("[HTTP] GET... failed, error: %d\n", httpCode);
    }

    http.end();
}

主函数:

void loop()
{
  if (Blynk.connected()) {   // to ensure that Blynk.run()
    Blynk.run();
  }
  timer.run();

  switch (Function_flag)
  {
    case 1: {
        last_Function_flag = Function_flag;
        ws2812fx.service();// 控制功能
        break;
      }
    case 2: { 
         // 时钟功能
         show_time();
        break;
      }
    case 3: { //获取粉丝数目
        show_follower();
        break;
      }
    case 4: { //熄屏。

        break;
      }
    default :{
      Function_flag = 0;//
    }
  }
}

 

还有一些定时器中断更新等代码,具体可查看源代码。

 

 

  手机blynk APP 

    

     如果大家在应用商店找不到这个app,可以百度下载一个安装包即可。

    blynk服务器分为两种,一个是它提供服务器:blynk-cloud.com,另外是自己搭建服务器。在github上有很详细搭建服务器的教程。链接:https://github.com/blynkkk/blynk-server

 

    两个的差别就是,如果你使用它提供的服务器控件是有能量限制的,即放不了很多控件。如果长期有物联网相关需求的,可以搭建一个自己的blynk服务器。

详细使用控件教程参考:http://docs.blynk.cc/

 

具体设计文件在我的GitHub上:https://github.com/Tkwer/BilibiliLight

 

  

END

 

公众号ID:Tkwer望远镜

 

扫码关注最新动态

 

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值