ESP8266模拟广播电视界面
将天线连接到GPIO3/rx,将模拟电视调整为第3频道。为ESP上电!
它以ESP8266WS2812I2S项目的方式使用I2S总线。区别在于,它使输出波动率升至80 MHz。我们设置了DMA缓冲区,并让CPU一次通过一条线时填充它们。 DMA中断一次填充一个单词。 I2S公共汽车以80 MHz的速度将这些缓冲区移出!
您可能会说:“但是Nyquist说您不能以超过1/2的样本率传输或接收频率(在这种情况下为40 MHz)。在某种程度上是正确的。有些人认为这可能是泛滥的,但是会发生什么实际上,发生了一些陌生人。这不是一个完美的频率。
我们将位模式存储在“ premodulation_table”数组中。这包含用于各种信号的Bitstreams,例如“同步”级别或“ ColorBust”级别或任何视觉颜色。该表的长度为每颜色的1408位,因此当以80 MHz的速度发送一位时,它可以达到315.0/88.0 MHz或3.579545455 MHz的NTCS Chroma频率的甚至乘数。您可以通过服用1408/80MHz = 17.6us * 3.579545 MHz = 63个周期,从而对此进行计算。方便地,它还可以奏效到61.25 MHz(第3频道的Luma Center)的乘数。 17.6us * 61.25 MHz = 1078循环,完全!当您调制任意频率时,有时周期会出现非常不平衡。
为了生成Luma(黑白部分),我们调制61.25 MHz。如果我们产生强信号,它将被视为非常“黑暗”,而弱信号是非常“明亮的”。这意味着,当我们想发送同步脉冲时,我们会尽可能地调节它...当我们想调制白色时,我们几乎完全发出任何信号。您会注意到的一件事是Dot Pour。这是因为我们发送的信号是如此可怕。色度信号非常脏,具有重复强度模式。虽然染色体排成1408位重复patten,但屏幕上的像素总数却没有。这会导致创建的模式向下滚动屏幕。
为了产生颜色,我们需要在基带上方3.579MHz的色度信号中调节。色度在每条线的开头通过色爆剂同步。这也设定了色度的水平。然后,在线期间,我们可以选择一个在色度水平上具有高系数的“颜色”,或者是低系数。这决定了颜色的生动程度。我们可以更改阶段以更改颜色的色调。
这基本上是一个1位抖动的DAC,以Nyquist以下的频率运行,试图同时编码Luma和颜色。不要因为质量的可怕而感到惊讶。
在Maycbtables.h/c中,用于处理线条屏障状态计算机的表格(生成/存储?),以及用于创建在线路信号编码的类似表中。
设置DMA传输的功能,在空白时重新填充缓冲区,然后根据framebuffer内容在video_broadcast.c中更改应发送的线条。这些功能处理所有调制。这设置了DMA,并且当DMA完成一个块(等于一条线)时称为中断。完成后,它使用CBTable来决定要填写哪些功能以填充该行。中断填充了DMA的下一行,这将继续进行。
FrameBuffer由位于user_main.c中的各种演示屏幕更新。
custom_commands.c包含用于NTSC特定方面的自定义命令。使用通用的Websockets接口,有两个添加的命令。其中包括设置操作模式(CO)的“ CO”和“ CV”,并允许用户从Web接口(CV)更改调制表。
可用以下演示屏幕。它们通常是一个接一个的滴答(除了10之后,除非用户在Web浏览器中禁用此功能,否则它们。
Web界面正在从ESP8266WS2812I2S借用Web界面。在ESP上进行电源,然后连接到它,然后将Web浏览器指向http://192.168.4.1。它有一个新的按钮“ NTSC”。这使您可以选择允许演示从屏幕到屏幕继续,或在特定屏幕上冻结。您可以指定屏幕。此外,对于RF测试,您可以粘合颜色。每当将颜色果酱设置为0或更高的颜色时,它都会关闭所有线路绘制逻辑,然后简单地输出该颜色。这将阻止电视机看到电视机,但是,您可以在其他RF设备上看到它。
它还具有交互式JavaScript网络工程师系统,可让您编写代码以制作新颜色!您可以创建一个新的bitstream,当命中特定颜色时将传输。您可以编辑代码,并且在输入时很有效。每次您更改它时,它都会自动重新启动网络工程师。
您应仅输出-1或+1,因为这就是ESP所能输出的。然后,它将在您选择的频率区域上运行带有随机窗口的DFT。增加DFT窗口,并增加您的Q(或精度)。减少,它会减少您的Q。这是为了帮助查看电视这样的接收器如何真正理解信号,并有助于说明这到底有多古怪。
您可以使用此链接在自己的浏览器中尝试:http://cnlohr.github.io/channel3/web/page/index.html单击NTSC然后去镇上。
对于所有3D和文本,我使用的是“ RawDraw”库(http://github.com/cnlohr/rawdraw)的新修改版本,用于3D,我使用的是固定点号,256作为单位值,底部8位是分数组件。
为了允许使用PAL广播,修改了Video_broadcast-library(以前为NTSC_BROADCASC)中的时间。由于我只想将其与黑色的白色电视一起使用,而且PAL颜色实际上很复杂,因此我没有修改broadcast_tables(Synthtables.c)。因此,图书馆通过NTSC颜色信息(有点像NTSC50)广播了符合PAL的B/W-Signal。
要启用PAL广播,您需要在user.cfg中启用OPTS += -DPAL
。
这是此项目的原始YouTube视频:
这是新视频(带有颜色):