sstv软件_慢扫描电视SSTV:一种可爱且相对简单的空中发送图像的方式

97f871ec5371b25eaa323ae17757d6fb.png
c0b56d38d25c78a80ab0639ff80e6af6.png

新的一天,新的模式... SSTV


文:Onno VK6FLAB

1958年,《肯塔基州工程师》杂志发表了 考普瑟·麦克唐纳( Copthorne "Coppie" MacDonald)一篇获奖学生文章。他描述了用于图像传输的慢速扫描电视系统。在1957年到1958年他研发了第一个使用摄像管和电子监视器的慢扫描电视系统,该系统使用120行,120列的分辨率在3kHz电话信道中传输黑白静态图片和音频信号。

这种窄带电视构想的目的是能够使用比普通电视更便宜的设备和更少的带宽发送图像。这个想法流行起来,并且今天仍然在使用。

55be81860ba74fb21f04d01a48c4d049.png

宇航员戈尔登·库勃在水星9号中的慢扫描电视广播

1959年,Luna 3任务使用了慢速扫描电视的想法来从月球的另一侧传输图像。NASA Apollo程序还使用SSTV传输来自Apollo 7、8、9和Apollo 11月球模块的图像。

1968年,SSTV成为美业余无线电爱好者的合法模式。

国际空间站定期使用SSTV将图像发送给全球的无线电爱好者。

如今,业余无线电爱好者正在使用的SSTV版本与早先从月球发出的颗粒状黑白图像有所不同,如果您希望看到电视的动态图像,那么您会失望的,因为流行SSTV模式一次发送一个图像,最多需要一分钟左右的时间发送。以每分钟一帧的帧速率,观看除草生长以外的任何事物将是一个挑战。

也就是说,SSTV是一种可爱且相对简单的空中发送图像的方式。

在寻求新的冒险时,我喜欢玩我一无所知的游戏。我怀疑它已经根深蒂固,但确实使我无路可走。前几天,我收到了本地业余爱好者Adrian VK6XAM的电子邮件,他发送了一条消息,描述了他为测试目的而设置的新SSTV中继器。这是一个等待激活音的本地2m中继器,然后它会期望您发送SSTV图像,然后它将图像回放给您。如果您熟悉鹦鹉中继器(a parrot repeater),这是类似的事情,仅用于SSTV而不是音频。转发器使用太阳能供电,SSTV的占空比为100%,仅在白天使用。

除了技术性,我无法抗拒。

ba93e3015c8ee0e3e3044c576ab6d926.png

因此,我启动了QSSTV,这是一个Linux软件,除其他外,它还知道如何接收和发送SSTV图像。打开电台,调整到正确的频率后,我收到了第一张SSTV图片。

在明亮的红色背景上,出现了黄色符号。起初我以为这是一把锤子和镰刀,但仔细检查后发现它是千分尺和卡尺,这绝对让我很高兴,我刚刚拿到了一些精密的测量工具Mitutoyo Test Indicator和一些其他的零件,这是我正在研究的另一个项目。

0d6b1ce3b524bb88091b3bf43eb6751e.png

我必须学习如何驱动QSSTV,制作一个模板,以便可以在图像上覆盖文本,了解信号报告的外观,然后当我弄清所有内容后,我胜利地按下了发送键(send),它发出了所有正确的声音,但后来就没啥反应了。

我后面在网上查询发射失败原因,发现如果我想使用FT-857d上的后部连接通过FM发送音频,而不是大多数数字模式所需的SSB,则需要将电台设置为PSK模式并神奇地开始工作。

a9739ba5002c4a3935889daf7ae84749.png

我收到第一张SSTV图像是在收到我的第一张图像后一个半小时发送的,中继器则忠实地将其发送回来。然后我从Keith VK6WK得到了一张照片。

当然,这只是刚入门,因此还有很多东西要学习,但是过程并不复杂。

我会注意几件事:

我已经设置了数字模式,也就是说,我的电台正在通过CAT与我的计算机通讯,这是计算机辅助调整,本质上是一个串行接口,用于控制电台,并且已经从我的电台后部连接器发送和接收音频无线电信号。

使SSTV运行确实是这些活动的扩展,因此,如果要执行此操作,请花一些时间使事情正常进行。我继续建议您从WSJT-X开始,因为它可以帮助您正确设置级别和连接。

现在,我想我应该开始通过HF短波段使用SSTV,但是首先,我想弄清楚如何使模板对我来说更好,以及如何真正记录实际的联系。

未来会有更多冒险!

记住,玩得开心!

source:

knowpia.cn

37af608c0263e8a854b1cd84e1d503a4.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个基于Python的SSTV编码器的示例代码: ```python import numpy as np import scipy.signal as signal import sounddevice as sd import time # 定义SSTV编码器类 class SSTVEncoder: # 定义常量 BLACK = 0 RED = 1 YELLOW = 2 GREEN = 3 CYAN = 4 BLUE = 5 MAGENTA = 6 WHITE = 7 SYNC_PULSE_FREQ = 1200 SYNC_PULSE_DURATION = 3000 HORIZONTAL_SYNC_FREQ = 1500 HORIZONTAL_SYNC_DURATION = 10 VERTICAL_SYNC_FREQ = 1900 VERTICAL_SYNC_DURATION = 20 SAMPLE_RATE = 44100 BITS_PER_SAMPLE = 16 CHANNELS = 1 # 定义图像尺寸和编码方式 def __init__(self, image, mode="Martin1"): self.image = image self.mode = mode self.width, self.height = image.shape # 发送同步脉冲 def send_sync_pulse(self): t = np.linspace(0, self.SYNC_PULSE_DURATION/1000, int(self.SYNC_PULSE_DURATION*self.SAMPLE_RATE/1000), False) pulse = np.sin(2*np.pi*self.SYNC_PULSE_FREQ*t) return pulse # 发送水平同步脉冲 def send_horizontal_sync_pulse(self): t = np.linspace(0, self.HORIZONTAL_SYNC_DURATION/1000, int(self.HORIZONTAL_SYNC_DURATION*self.SAMPLE_RATE/1000), False) pulse = np.sin(2*np.pi*self.HORIZONTAL_SYNC_FREQ*t) return pulse # 发送垂直同步脉冲 def send_vertical_sync_pulse(self): t = np.linspace(0, self.VERTICAL_SYNC_DURATION/1000, int(self.VERTICAL_SYNC_DURATION*self.SAMPLE_RATE/1000), False) pulse = np.sin(2*np.pi*self.VERTICAL_SYNC_FREQ*t) return pulse # 发送一个像素 def send_pixel(self, color): # 声音频率和持续时间 if self.mode == "Martin1": # Martin1编码方式 freq = [1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900] time = 22.9 else: # 其他编码方式 freq = [1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900] time = 30.0 if color == self.BLACK: freq1 = freq[0] freq2 = freq[1] elif color == self.RED: freq1 = freq[2] freq2 = freq[3] elif color == self.YELLOW: freq1 = freq[4] freq2 = freq[5] elif color == self.GREEN: freq1 = freq[6] freq2 = freq[7] elif color == self.CYAN: freq1 = freq[0] freq2 = freq[3] elif color == self.BLUE: freq1 = freq[4] freq2 = freq[7] elif color == self.MAGENTA: freq1 = freq[1] freq2 = freq[6] elif color == self.WHITE: freq1 = freq[2] freq2 = freq[5] # 生成两个正弦波 t = np.linspace(0, time/1000, int(time*self.SAMPLE_RATE/1000), False) wave1 = np.sin(2*np.pi*freq1*t) wave2 = np.sin(2*np.pi*freq2*t) # 混合两个正弦波 wave = (wave1 + wave2) / 2 return wave # 发送一行像素 def send_line(self, line): # 发送水平同步脉冲 pulse = self.send_horizontal_sync_pulse() sd.play(pulse, self.SAMPLE_RATE) # 发送像素 for pixel in line: wave = self.send_pixel(pixel) sd.play(wave, self.SAMPLE_RATE) # 发送垂直同步脉冲 pulse = self.send_vertical_sync_pulse() sd.play(pulse, self.SAMPLE_RATE) # 发送整个图像 def send_image(self): # 发送同步脉冲 pulse = self.send_sync_pulse() sd.play(pulse, self.SAMPLE_RATE) # 发送每一行像素 for line in self.image: self.send_line(line) # 示例用法 if __name__ == '__main__': # 生成一个随机图像 image = np.random.randint(0, 8, (320, 240)) # 创建SSTV编码器 encoder = SSTVEncoder(image) # 发送图像 encoder.send_image() # 等待发送完成 time.sleep(5) ``` 请注意,这只是一个简单的示例代码,实际使用时需要根据具体的应用场景进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值