谷动谷力

 找回密码
 立即注册
查看: 1931|回复: 0
收起左侧

用 ESP32 制造迷你复古小电视

[复制链接]
发表于 2022-8-31 22:25:47 | 显示全部楼层 |阅读模式
用 ESP32 制造迷你复古小电视MAKER:陳亮/译:趣无
这款迷你的复古电视机非常的小巧可爱,它会不会成为你的桌摆新宠呢!它无法接收模拟电视广播信号,但是它可以通过微型 SD 卡播放录像带。你可以多准备几套 SD 卡来播放你喜欢的节目。

; ?+ b. V0 Y( y9 T7 i
; ^. m; y+ U! C7 {[color=rgba(0, 0, 0, 0.5)]趣无尽. x+ B  C4 }- H2 I" B0 p
, @8 Z$ t% C/ {; [
[color=rgba(255, 255, 255, 0.9)],赞1
5 B9 h7 y5 q/ I
# X# N; T! Q% T& s6 G
8 @0 M- n& Y% y8 r* b% c! j9 a

& _6 ?- f/ [0 k% d

, G; F7 E7 |9 f: Q3 w# I
640?wx_fmt=jpeg.jpg
6 g) X& g4 p, c3 b- u, O/ \: U: C7 j这个项目是基于我之前的《用 ESP32 搭建一台视频播放器》基础上加以改进的,更多的搭建的基础细节可以点击链接查看!https://www.instructables.com/Play-Video-With-ESP32/
640?wx_fmt=png.jpg

6 S6 z! t) u" @& g( O搭建思路
1、CRT 属性
+ O( E! t; q# L6 U+ {1 V# \这款复古的电视机带有阴极射线管 (CRT) 的显示器。它是一个大的真空玻璃管,将电子束发射到磷光屏上以显示图像。
因此,它使这台复古电视机具有一些特殊的属性:纵横比像正方形(但实际上是圆形),圆角的显示屏和厚而笨重的外壳。
最后,我选择了一个 7:6 的圆角 LCD 来打造这款迷你复古电视机。
而厚而笨重的外壳,可以把所有复杂的组件都挤进去。更多细节,可点击链接查看。https://en.wikipedia.org/wiki/Cathode-ray_tube
2、模拟电视格式的标准
- I+ G& X8 ?* N4 Z( j7 B# L8 V4 f现实中许多模拟电视视频的标准,我选择一个众所周知的数字化格式(VCD)标准作为参考。VCD NTSC 格式为 240p(240 条水平线),每秒约 30 帧 (fps)。所以这个项目是以 30 fps 播放 240p 视频。
广播音频采样率为 44.1 或 48 KHz 单声道,由于网络上的大多数视频源都是 44.1 KHz,所以我选择了 44.1 KHz 以避免不必要的采样率转换失真。
更多细节,可点击链接查看。7 Y& P5 Y4 q) B. K0 ~
https://en.wikipedia.org/wiki/Video_CD% p1 n( m, x& l
https://www.thebroadcastbridge.c ... rt-15-digital-audio
设计外壳
640?wx_fmt=png.jpg
如图所示,LCD 上的灰色圆角屏幕框架使其看起来更像 CRT 屏幕。9 M+ M" A, K* t" y) h: Y& D# l1 j
前板右侧是 MicroSD 卡插槽,模拟录像带插槽。前板没有空间安装扬声器,所以我将全频音频扬声器放在底部。
, c4 ^$ p. w( G5 XESP32 开发板安装在顶部,左侧为 LCD 分线预留空间,后板有 USB 端口和电源开关。
复古电视标志性的底部支撑,项目中设计了 3 条内置的腿来支撑电视。由于受限于 3D 打印 的 45 度法则,不能太长。
设计稿件和3D打印文件请在项目文件库中下载
4 S* |& p! \! f) Khttps://make.quwj.com/project/443
软件部分
1、软件库
9 @1 n# {: U5 \$ s! I: oArduino IDE3 j! R9 Y. R7 _( _, z$ f% q: M
请下载并安装 Arduino IDE:
) [4 E8 M! j! t3 R- C8 _6 N; S# Lhttps://www.arduino.cc/en/main/software
ESP32 支持
- t* E5 x+ J3 k9 A) M请按照 Arduino-ESP32 安装指南添加 ESP32 支持。5 p) X5 D! \! Y3 T' t5 Z* S
https://docs.espressif.com/proje ... est/installing.html
Arduino_GFX 库
& _8 v. k" J$ S; G0 \, T5 R通过选择工具->菜单->管理器库,打开 Arduino IDE 库管理器。搜索“适用于各种显示器的 GFX ”,然后安装。
有关 Arduino_GFX 的更多信息,请点击链接查看。! w% E6 f: c0 H
https://www.instructables.com/ArduinoGFX/
JPEGDEC$ z3 Z6 G9 _0 e% D
通过选择工具->菜单->管理器库,打开 Arduino IDE 库管理器。搜索“JPEGDEC”并安装。
arduino-libhelix$ @; d" M  H8 F
该项目使用 Helix 解码器播放 AAC 或 MP3 音频。下载 arduino-libhelix 库并将其导入至 Arduino IDE:
: u, |6 e3 D1 v4 T! ^https://github.com/pschatzmann/arduino-libhelix.git
关于如何将库导入 Arduino IDE,请点击链接查看。
; K* @  ]" t) O( `  w0 Nhttps://docs.arduino.cc/software ... nstalling-libraries
2、软件设计
640?wx_fmt=jpeg.jpg
ESP32 是双内核,可以在 FreeRTOS 上运行,因此它可以同时运行多个任务。
0 h% G  r- u. n& N; Mhttps://www.freertos.org/
播放视频对于微控制器来说是比较重的负载,因此要很好地分配好它的处理能力。经过后续测试,负载最重的是 MJPEG 解码,所以这个任务专门用 Core 0 来解决。
所有其他进程都在 Core 1 上运行,其中包括:读取音频文件、解码音频、将解码后的音频排队到 I2S、读取视频文件和绘制解码视频显示。
3、烧录程序0 l: O# r* o8 U( }: ^1 d
该程序可在连接组件之前就上传。因此,你可以检查它是否适用于每个组件连接。整个过程为:
在 GitHub 下载 MiniTV 源代码:https://github.com/moononournation/MiniTV.git
在 Arduino IDE 中打开 MJPEG_2task_Audio_1task.ino,连接 TTGO T7 开发板,选择工具菜单->开发板->ESP32 Arduino->ESP32 开发模块,选择工具菜单-> PSRAM ->禁用,选择工具菜单->端口->[选择端口开发板连接],按上传按钮,最后等待编译上传成功
4、转换视频
- q6 m+ M. S2 h0 w5 j3 ?, m4 k准备好要播放的视频,然后转换为 MJPEG 视频和 AAC 音频。脚本中将源视频假设为“input.mp4”:

  • 1 F# n! X$ I% n) [3 M, N4 }7 ~
ffmpeg -i input.mp4 -vf "fps=30,scale=-1:240:flags=lanczos,crop=288:in_hin_w-288)/2:0" -q:v 11 288_30fps.mjpegffmpeg -i input.mp4 -ar 44100 -ac 1 -ab 24k -filter:a loudnorm -filter:a "volume=-5dB" 44100.aac
FFmpeg:https://ffmpeg.org/
0 @9 p2 c0 [, z# f" k' W
注意的点:2 d6 l5 q! G" ^
显示分辨率为 280 x 240,因为 MJPEG 格式偏爱被 16 整除的尺寸,因此可扩展到 288 x 240。你可以通过更改“-5dB”值来调整音量。
MicroSD 卡的处理
640?wx_fmt=jpeg.jpg
1、MicroSD 卡的说明' H2 T' V  P, C( ~& \5 ]' g
之前的帖子中已经对 SD 卡在 ESP32 运行的速度进行测试,ESP32 读取 SD 卡的速度只能达到每秒 2MB 左右。MicroSD 被评为四种级,可以满足要求。更快的卡无助于提高性能。
具体可查看另一个项目。# G; d* Z# @8 i6 h* u2 V) _* R' L
https://www.instructables.com/Select-SD-Interface-for-ESP32/
2、SD 卡连接
640?wx_fmt=jpeg.jpg
此前,我发现 ESP32 SD_MMC 4-bit 模式读取 SD 卡数据最快。但是,使用最新的 Arduino-ESP32 版本 SD_MMC 库变得非常不稳定,无法与大多数 SD 卡兼容。所以这个项目是回到标准的 Arduino 可以兼容 SD 库。
调整音频增益电平设置(可选)
640?wx_fmt=png.jpg
24 mm 全频音频扬声器的额定功率为 2-4W,MAX98357 音频板可支持高达 3.2W 的输出,因此扬声器能够输出音频板的最大增益设置。但我们要合理设置电视的音量,我认为设置为 3dB 增益水平会更好。$ U; W: M2 ~, `* ]: g
640?wx_fmt=jpeg.jpg
功率分配器
640?wx_fmt=jpeg.jpg
TTGO T7开发板可以通过 USB 供电,也可以连接锂电池作为不插电的电源,所以其他组件都可以从开发板上获取电源。
" b1 Y0 L; p# I8 O3 D
640?wx_fmt=jpeg.jpg
但是开发板只有一个 3v3 排针,所以它需要一个小插针分离器来制作电源插针。
电池供电(可选)
TTGO T7 开发板可内置锂电池座为 Lipo 充电。因此你可以在电视机中添加一个可安装在开发板下方的 Lipo。理论上,一个 600mAh 的 Lipo 可以使用大约 1-2 小时。上面的视频显示电池可以播放 44 分钟没有任何问题。
Micro SD 卡插入开关(可选)
增加 Micro SD 卡插入开关,需要一些焊接技巧。
640?wx_fmt=jpeg.jpg
大多数 micro SD 卡插槽分线板不能断开插入检测开关,因此你需要手动断开。然后将其连接到 TTGO T7 电源开关。这样一旦拔插 micro SD 卡,电视机会在你取出卡时自动开机或关机。
上个世纪,当我们将租回来碟片放入到录像机/播放器(VCR)时,就可以在沙发上看电影了。所以我设计了这个可选的 Micro SD 卡插入开关。体会一把当年的感受(暴露年纪)。
连接方式
" ^9 X$ G1 h- b$ \9 x+ f0 D

* j2 {" i8 I) u: \4 s, b[color=rgba(0, 0, 0, 0.5)]趣无尽
0 ^- F5 s( A' \4 m% U. j$ @4 z. ~
6 z9 D! Y. e! m9 X. c2 ][color=rgba(255, 255, 255, 0.9)],赞1
3 z" h6 I& w0 w6 R: N

6 b" z! X  D% Y, `/ y, n+ N5 Z) S0 m

' r: z7 ~$ _% D. |3 h9 y

, U5 h+ F: }) ]3 k+ _" h! R
640?wx_fmt=jpeg.jpg
如图所示,连接方式。

  • * l+ n5 e6 `5 b- I
TTGO T7 ESP32   ST7789 LCD   MAX98357 Audio   SD Card Slot=============   ==========   ==============   ============VCC          -> VCC       -> VCC           -> VCCGND          -> GND       -> GND           -> GNDGPIO 4                                     -> MISOGPIO 5       -> CSGPIO 13                                    -> CSGPIO 14                                    -> SCKGPIO 15                                    -> MOSIGPIO 18      -> CLKGPIO 22      -> BLKGPIO 23      -> SDAGPIO 25                   -> BCLK/SCLKGPIO 26                   -> LRCLK/LRCKGPIO 27      -> DCGPIO 32                   -> DOUTGPIO 33      -> RST
如果你想尝试使用 SD_MMC,SD 卡 MISO 需要连接到 GPIO2,但请记住在上传程序时断开 GPIO2。% q4 m  @& n' `% X
如果音频输出噪音太大,可能是 3v3 电源对于 MAX98357 不够用,可以考虑将 MAX98357 电源改为 5v。
具体可参考:3 D% K* q& ~  s6 T5 }4 o
https://github.com/LilyGO/ESP32-MINI-32-V1.3
组装

/ o. a4 B- [2 A! W6 {. f4 K$ q0 Z
7 P5 |; w: ]* E: s- f[color=rgba(0, 0, 0, 0.5)]趣无尽) C* N+ T  s' ?* L( J" S
. n$ O- c5 {' }; W$ ^! b
7 v6 [0 V+ g) H2 [
5 o& @$ E& p; [# X. Z

+ Z- B3 x# ~/ m' c* ]3 c. w% }
640?wx_fmt=jpeg.jpg
如图所示,内部的线十分的复杂。这个项目不仅模仿了复古电视的外表,还模仿了内部笨拙的布线方式。
640?wx_fmt=jpeg.jpg
640?wx_fmt=jpeg.jpg
那么可想而知,这台复工电视机的重量也不轻了。这台 1.69 英寸迷你电视机重 78g。按比例,25 英寸的电视机重为 252 公斤。它比真正的 CRT 电视重得多!而且真正的 CRT 电视没有内置电池。
640?wx_fmt=jpeg.jpg
640?wx_fmt=jpeg.jpg
Apple iMac Flower Power 系列的 CRT 设备的外观我非常的喜欢,所以将这些花卉图案的复制到我的迷你复古电视机上。是不是非常的养眼呢!
项目所用的代码在本项目文件库中可以下载:0 I$ n" |+ s, G  \+ R  o8 n
https://make.quwj.com/project/443

. U2 J+ T7 |7 e6 v+ U! R( _. O- V& J  V( |" S
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-3-29 01:14 , Processed in 0.089274 second(s), 37 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表