ESP8266模擬廣播電視界面
將天線連接到GPIO3/rx,將模擬電視調整為第3頻道。為ESP上電!
它以ESP8266WS2812I2S項目的方式使用I2S總線。區別在於,它使輸出波動率升至80 MHz。我們設置了DMA緩衝區,並讓CPU一次通過一條線時填充它們。 DMA中斷一次填充一個單詞。 I2S公共汽車以80 MHz的速度將這些緩衝區移出!
您可能會說:“但是Nyquist說您不能以超過1/2的樣本率傳輸或接收頻率(在這種情況下為40 MHz)。在某種程度上是正確的。有些人認為這可能是氾濫的,但是會發生什麼實際上,您傳輸的一切都在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視頻:
這是新視頻(帶有顏色):