日韩欧美国产一区二区三区_五月天欧美精品_国产精品一区不卡_欧美精品乱码久久久久久

內容字號:默認大號超大號

段落設置:段首縮進取消段首縮進

字體設置:切換到微軟雅黑切換到宋體






用樹莓派和業余無線電打造遠距離無線視頻傳送

時間:2015-08-21 來源:中國集群通信網 作者:張濤濤 點擊:

在本項目中,我用配有PiCam攝影機的Raspberry Pi做為無線攝影機,可遠距離、約百米內傳送影像。影像的傳送是由慢速掃描電視(SSTV)透過業余無線電臺(俗稱火腿電臺)于2米波段(144.5兆赫)傳輸。

感謝 Oliver Mattos和Oskar Weigl,Raspberry Pi可以自行發出高頻FM訊號,低功率傳輸時無須使用額外的電子產品。若功率須些微增加,多加上一個單電晶體或雙電晶體的放大器即可。另外,推薦使用低通濾波器以過濾高頻訊號。

此項目還包含了偵測動態物體的Python程序碼,讓Raspberry Pi做為遠超過一般WiFi網路范圍的無線監視攝影機。請注意!你必須擁有業馀無線電執照才能只用此裝置。

以下是裝置圖示,請按照步驟進行。項目程序碼可以在我的博客或我的GitHub網頁找到。

特別感謝KI4MCW (SSTV), Oliver Mattos 以及 Oskar Weigl (PiFm)

用樹莓派和業余無線電打造遠距離無線視頻傳送

圖示:antenna 天線/Pi NoIR Camera PiNoIR攝影機/PiFace control & display PiFace控制顯示面板/Battery 電池

可攜式SSTV攝影機會拍攝影像并且經由業馀無線電臺SSTV攝影機傳送畫面。

材料

  • Raspberry Pi單板電腦,Maker Shed網站商品編號#MKPRI2,makershed.com。我選擇Raspbian作業系統,因為它是Raspberry Pi最熱銷也有良好支援的作業系統。

  • Pi NoIR攝影機模組,Maker Shed網站商品編號 #MKRPI6。一般的PiCam或USB網路攝影機亦可。

  • PiFace控制顯示面板(非必要), 但推薦選購。我打算把Raspberry Pi當作隨拍慢速掃描電視攝影機來使用,因此有顯示面板跟按鈕非常方便。

  • 電池,5伏特US移動電源 。

  • 一小段電線,天線會使用到 。

  • 束帶,支撐天線用 。

  • 牛皮紙膠, 任何項目的必備品。

第一步:連接硬件

用樹莓派和業余無線電打造遠距離無線視頻傳送

用樹莓派和業余無線電打造遠距離無線視頻傳送

用樹莓派和業余無線電打造遠距離無線視頻傳送

  • 在這個項目里,會用到的硬件只有Raspberry Pi、Pi NoIR攝影機、PiFace控制顯示面板和做為天線的一段電線。

  • 為達到可攜性,用牛皮膠布把一個5V USB電池組粘到Raspberry Pi外殼上。

第二步:拍攝畫面

  • 首先要做的是拍攝要傳輸的畫面,用 raspistill 指令行功能就能輕鬆達成:

raspistill -t 1 --width 320 --height 256 -e png -o /tmp/image.png

  • 針對SSTV,我們需要320×256畫素的小影像。它會以PNG影像檔格式存到 /tmp 目錄。

第三步:將影像轉換為SSTV聲音檔

  • 接著,我們要把影像轉換為可以無線傳輸的聲音檔。Raspberry Pi有一些SSTV指令可以選擇。

  • 第一個拿來測試的是PiSSTV,這是一種Python指令。它可以用,但速度非常慢,一個影像要好幾分鐘才能轉換完成。(可以參考我博客上的細節。)

  • 接著我找到由ham KI4MCW羅伯特‧馬歇爾(Robert Marshall)所編寫的簡單的C語言指令。可惜在前導音調中有一些錯誤,但都很容易修正。我還把它改得更有彈性,可以在指令行設定聲音采樣頻率。

  • 我的指令的原始碼可以在GitHub找到。編譯原始碼:

pi@rpicamera ~/sstv $ sudo apt-get install libgd2-xpm-dev   pi@rpicamera ~/sstv $ sudo apt-get install libmagic-dev   pi@rpicamera ~/sstv $ gcc -lgd -lmagic -o pisstv pisstv.c

  • 執行程序:

pi@rpicamera ~/pisstv $ ./pisstv /tmp/image.png 22050   Constants check:         rate = 22050         BITS = 16       VOLPCT = 20        scale = 6553      us/samp = 45.351474      2p/rate = 0.000285  Checking filetype for file [/tmp/image.png]  File is a PNG image.  Input  file is [/tmp/image.png].  Output file is [/tmp/image.png.wav].    Writing audio data to file.  Got a total of [2589556] samples.  Done writing to audio file.  Created soundfile in 4 seconds.

  • 我們可以看到SSTV聲音檔只花了4秒鐘就建立完成。一切都很順利。下一步:無線聲音傳輸。

第四步:以PiFM傳輸聲音

用樹莓派和業余無線電打造遠距離無線視頻傳送

  • 可以加裝一個無線發射器,像可攜式無線收發器那樣,但讓Raspberry Pi自己產生高頻訊號有趣多了。這都要感謝Oliver Mattos和Oskar Weigl的PiFM軟件(可以參考我們的Raspberry Pi)。

  • 在這里可以找到他們的程序碼。它已經有很大的進步:最初的版本很簡單,但使用了所有的CPU周期,而且訊號會受到其他程序運作時產生的假信號干擾。最新版本使用的是DMA,運作很順暢,也不會占用所有的CPU周期。但這個程序碼現在復雜多了。

  • Oliver and Oskar有很大的貢獻,但PiFm軟件用在火腿無線電和SSTV就不適合。主要有兩個問題。首先是頻寬太大,第二個是定時問題。定時對SSTV很重要,而它有些誤差。

第五步:降低頻寬

用樹莓派和業余無線電打造遠距離無線視頻傳送

用樹莓派和業余無線電打造遠距離無線視頻傳送

用樹莓派和業余無線電打造遠距離無線視頻傳送

  • 降低頻寬非常簡單。每位火腿族知道,頻寬可以由頻率調變的調變係數設定,和調變高頻載體的聲音訊號音量相等。在原始碼里,它是單一個值;可以在 Outputter/class的 consume 函數找到。

  • 這是原來的程序碼:

void consume(float* data, int num) {    for (int i=0; i<num;i++){        float value = data[i]*8;  // modulation index (AKA volume!)

  • 我做了這個值的指令行參數。新的程序碼是這樣:

void consume(float* data, int num) {    for (int i=0; i<num;i++){        float value = data[i]*modulation_index;  // modulation index (AKA volume!) (original 8)      

  • 可惜這樣效果不好,仍然有很強的邊帶,所以在此軟體的未來版本中還需要多加關注。

  • 第一張圖是全頻寬FM訊號的頻譜圖。

  • 第二個頻譜圖顯示降低的頻寬。調整中間的波峰后得到乾淨的訊號,但還需要清除邊帶。

  • 最后一張圖是PiFm最初版本的降低頻寬訊號,頻寬很棒,但訊號受到CPU執行其他程序時產生的干擾。

第六步:調整定時

用樹莓派和業余無線電打造遠距離無線視頻傳送

用樹莓派和業余無線電打造遠距離無線視頻傳送

  • PiFm的聲音傳輸采樣率稍微增加或減少時,聽者幾乎感覺不到差別,但對于SSTV就不一樣了,SSTV的定時需要很精準。

  • 稍有誤差的采樣率會造成影像傾斜,像在第一張圖所看到的。

  • 第二張圖是採樣正確的相同聲音檔。

  • 修正定時很簡單,只要修正原始碼中的定時常數。

//clocksPerSample = 22500.0 / rate * 1373.5;  // for timing, determined by experiment clocksPerSample = 22050.0 / rate * timing_correction;  // for timing, determined by experiment

  • 這邊可以看到我用變數 timing_correction 來取代定時常數(1373.5),可以由指令行來設定。個別的Raspberry Pi會有不同的數值。在我的例子里,數值是1414.0。我想知道適合你的設定值是多少,請在下面留言告訴我。關于其他程式碼的修改,請參考在GitHub的原始檔桉。

第七步:新增呼號

  • 開始用你的火腿無線電授權傳輸SSTV訊號時,需要在每次傳輸時傳送你的呼號,所以我們要把這項資訊新增到影像里。

  • 我們可以從指令行用 imagick或從Python影像資料庫(PIL)來完成。這個項目里兩種都有使用。

第八步:捕捉動態

  • 現在我們可以擷取影像并用PiFm來順利傳送了,接下來我們的任務是在鏡頭前有動靜時觸發影像擷取。我把這個指令放在Python,搭配PIL。這個程式碼很簡單,它會比較前一個影像和當前影像的畫素。如果變化太大,就會傳送影像。

這里是程序碼的片段:

# loop forever  while (True):           
# grab comparison image           
imgnew, bufnew = captureImage()           
# Count changed pixel           
changedPixels = 0           
for x in xrange(0, 320):                   
for y in xrange(0, 256):                           
# Just check red channel as it's dominant for PiCam NoIR                           
pixdiff = abs(buf[x,y][0] - bufnew[x,y][0])                           
if pixdiff > threshold:                                   
changedPixels += 1           
# Transmit an image if pixels changed           
if changedPixels > sensitivity:                   
# Swap comparison buffers                   
img = imgnew                   
buf = bufnew                   
transmitImage(img.copy())

 

(中國集群通信網 | 責任編輯:陳曉亮)
本文標簽: 業余無線電, 無線視頻

相關文章

中國集群通信網,國內首家集群通信專業網站。

Copyright © PttCn.Net, All Rights Reserved.   

聯系我們 聯系我們 中國集群通信網 對講機學堂 對講機世界

主站蜘蛛池模板: 精品无码av无码免费专区| 宅男在线精品国产免费观看| 久久久久久久91| 国产乱子伦精品视频| 无码免费一区二区三区免费播放| 极品尤物一区二区三区| 日韩欧美亚洲区| 超碰97国产在线| 国产欧美日本在线| 日韩av一级大片| 亚洲欧洲一区二区| 国产精品成人播放| 国产综合免费视频| 久久久久久美女| 日本午夜精品一区二区三区| 99久久综合狠狠综合久久止| 国产日韩在线播放| 久久久久久噜噜噜久久久精品| 中文字幕在线观看一区二区三区| 激情网站五月天| 久久视频在线观看中文字幕| 日韩视频在线观看国产| 国产精品美女久久久久av福利| 国内精品久久国产| 久久久久久久国产精品视频| 欧美中文在线视频| 日本一区二区视频| 日韩欧美亚洲v片| 亚洲 国产 欧美一区| 99视频在线免费| 国产精品青草久久久久福利99| 久久久久久久少妇| 欧美日韩一道本| 欧美激情亚洲精品| 免费99精品国产自在在线| 欧美日韩精品免费看| 欧美少妇一区| 欧美激情一级精品国产| 久久久精品在线观看| 久久精品日韩精品| 黄色三级中文字幕|