【自制分享】低成本做一个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可以随时随地控制小电视。
加入了lsm6dsm传感器,它是一个六轴传感器,它拥有可以直接检测单击或者双击事件中断,双击也可以实现切换功能小电视。开始制作
需要工具
一把美工刀、A4纸、中性黑笔、砂纸、滴胶、(定制)亚克力板、一把手钻、热熔胶、电烙铁(热风枪)、PCB电路板,元器件(bom清单)、micro USB线、小夜灯盒子、WS2812 12位灯环,光敏电阻。成本计算(大概):小夜灯3元(9.9四个包邮)+PCB打样5元或免费(嘉立创)+定制亚克力板3元(淘宝定制)+bom清单30元左右=41元
工具图(不完全):
bom清单:
制作的过程
外壳制作
首先这个小电视,不需要你会3d打印或者拥有3d打印机。我们只需要一把美工刀就可以。然后在tb搜索“小夜灯”买下面这个。
亚克力板尺寸图
(把这个图交给tb商家就可以了3mm厚,磨砂材质)
(开孔开的有点丑)
电路制作
PCB我做了两版(其实是三版????)。硬件资源是esp-12F模块,WS2812 12位灯环,ch340e串口芯片,lsm6dsm传感器,然后有锂电池充电电路,拨动开关,复位按键,下载按键。
原理图
代码分析
时钟显示功能,获取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();
}
//
}
//获取粉丝数目
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望远镜
扫码关注最新动态