电源技术网|技术阅读
登录|注册

您现在的位置是:电源技术网 > 技术阅读 > 【自制分享】低成本做一个B站小电视!(゜-゜)つロ 干杯~-bilibili

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

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

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


                                           作者:Tkwer

公众号:Tkwer望远镜

  前言

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

    上一期链接:


  预览实物效果

    实现功能:

    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*830*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望远镜
扫码关注最新动态