nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 11:24



Reply to topic  [ 30 posts ]  Go to page 1, 2  Next
Arduino & FSK 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Казалось бы тема Arduino - это очень далёкая область, чтоб встретить аббревиатуру FSK...
Но это и показалось мне интересным. :roll:

Если кто не знает, FSK - это Frequency-shift keying - кодирование со сдвигом часоты, или,
как чаще его норовят назвать сегодня - DTMF (Dual Tone Multifrequency).
Этот замечательный формат передачи данных известен также как стандарт Kansas City
(KCS), где он был утверждён на симпозиуме в далёком 1975 году,
в качестве основного формата записи данных на магнитную ленту.
Кассетные накопители были выбраны как дешевый носитель данных и FSK был рекомендован
для обмена на магнитофонных кассетах.
FSK в KCS использовал кодирование с частотным сдвигом. Логическому нулю соответствовали
4 периода колебаний с частотой 1200 Гц, единице восемь периодов с частотой 2400 Гц.

Image

Каждый байт обрамлялся ведущим нулём и двумя замыкающими единицами, то есть расширялся
до 11 знаков; коррекция ошибок не предусматривалась.
Впоследствии скорость записи-воспроизведения была повышена до 600 и 1200 бод. Домашние
персональные компьютеры конца 1970-х и начала 1980-х годов, как правило, имели встроенный
интерфейс для сохранения данных на обычных кассетных магнитофонах.

Я впервые встретил этот формат в Мониторе DDT кооператива "SP-580" из г.Барнаул (Лукин, Титков),
и скажу, что FSK давал большую фору фазовой манипуляции от "Радио РК-86" по надёжности,
по уровню непритязательности к носителю, магнитофону и помехам!
При явной детонации типа "вау-вау" программы "Специалиста" от "SP-580" успешно считывались!

Но это всё было давно... А причём же Arduino?

Господин Mark VandeWettering вспомнил о формате FSK, работая с передачей данных по
лучу лазера, управляемого Arduino!
И древний стандарт пришелся "старому динозавру" ко двору! :wink:
Mark wrote:
Since I am old, I remember the old days ... It’s amazing we ever lived through the stone age.

Он почесал в затылке... погладил лысину... подсмотрел в шпаргалку... и всё-таки реализовал
протокол FSK на Цэ. :-?

Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <sndfile.h>
 
/*
 * kc.c
 * A program which takes a file as input, and encodes it via the old
 * Kansas City Standard - a 300 baud format that was used by old
 * microcomputers to store data onto cassette tape.
 *
 * http://en.wikipedia.org/wiki/Kansas_City_standard
 *
 * We are going to produce a 9600 sample per second output file...
 *
 * Each "baud" is 32 samples long.
 *
 * A '0' is 4 cycles @ 1200 Hz.
 * A '1' is 8 cycles @ 2400 Hz.
 *
 * 0 -  0 R2 1 R2 0 -R2 -1 -R2
 * 1 -  0 1 0 -1
 *
 */
 
#define R2      (.70710678118654752440f)
 
SNDFILE *sf ;
SF_INFO sfinfo ;
 
void
output(float f)
{
    sf_write_float(sf, &f, 1) ;
}
 
void
send(int bit)
{
    int c ;
 
    switch (bit) {
    case 0:
        for (c=0; c<4; c++) {
            output(0.f) ;
            output(R2) ;
            output(1.f) ;
            output(R2) ;
            output(0.f) ;
            output(-R2) ;
            output(-1.f) ;
            output(-R2) ;
        }
        break ;
    case 1:
        for (c=0; c<8; c++) {
            output(0.f) ;
            output(1.f) ;
            output(0.f) ;
            output(-1.f) ;
        }
        break ;
    default:
        abort() ;
    }
}
 
void
encode(int ch)
{
    int i ;
    send(0) ;           /* start bit... */
    for (i=0; i<8; i++) {
        send(ch & 1) ;
        ch = ch >> 1 ;
    }
    send(1) ;           /* two stop bits */
    send(1) ;
}
 
main()
{
    int i, ch ;
 
    sfinfo.channels = 1 ;
    sfinfo.samplerate = 9600 ;
    sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16 ;
 
    sf = sf_open("test.wav", SFM_WRITE, &sfinfo) ;
 
    for (i=0; i<9600/4; i++)
        output(0.) ;
    while ((ch = getchar()) != EOF)
        encode(ch) ;
    for (i=0; i<9600/4; i++)
        output(0.) ;
 
    sf_close(sf) ;
}

Возможно, юзерам Arduino это покажется интересным... :)


PS. А лично я опять столкнулся с FSK и "тэйпрекодерами", когда мы с Виталием
засомневались - сколько данных влезает на 60 мин кассету у "Т3-29".
(свыше 200 КБайт с двух сторон по стандарту и 72 КБайт на 1 сторону у "Т3-29").
:wink:

PPS. Кстати говоря, метод фазовой манипуляции в "Радио РК-86" носит название "Манчестерское кодирование":
https://ru.wikipedia.org/wiki/Физическое_кодирование
https://ru.wikipedia.org/wiki/Манчестерское_кодирование


Last edited by Lavr on 20 Jul 2021 21:18, edited 2 times in total.



07 Feb 2012 15:26
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Напоминает ZX-Spectrum - там правда ещё "пилот-тон" был перед каждым блоком

_________________
:dj: https://mastodon.social/@Shaos


07 Feb 2012 19:55
Profile WWW
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Я тоже вспомнил про спектурм. Только, в нем каждому биту соответствовал один период. И у спектрума тоже достаточно сильный иммунитет к детонации. А прикол в том, что они измеряют периоды и сравнивают его с некоторым эталонным значением, которое обычно на границе между длительностью 0 и 1. А если бы они сравнивали с предыдущим периодом на существенное различие, то, теоретически, можно было бы изменять скорость вообще в очень широких пределах, главное чтобы плавно.


07 Feb 2012 20:21
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
HardWareMan wrote:
...прикол в том, что они измеряют периоды и сравнивают его с некоторым эталонным значением, которое обычно на границе между длительностью 0 и 1. А если бы они сравнивали с предыдущим периодом на существенное различие, то, теоретически, можно было бы изменять скорость вообще в очень широких пределах, главное чтобы плавно.

Я могу ошибиться, но в Спектруме не совсем FSK, я со Спектрумом и его способом записи разбирался и даже писал для этого софтверный "осциллограф" на Специалисте.
(Правда дисплей приходилось ставить набок... :wink: )

А в стандартном FSK, что интересно, синхронизация практически возможна по каждому байту.
"Каждый байт обрамлялся ведущим нулём и двумя замыкающими единицами" - это фактически наличие "пилот-тона" у каждого байта, по нему легко подстраиваться...

Нет, у "Радио РК-86" тоже неплохой способ, как, впрочем и у самогО Спектрума.
Но чтобы не мучаться с их записями, я конкретно держал вот этот магнитофон:

Image

У него конструктив несколько "компьютерный", хотя шутки про "подставку для кофе" тогда ещё не было... :lol:
(Шурик, по его фоткам, тоже серьёзный мафон юзал, чуть ли не "Маяк"...) :wink:

Но когда мы с другом купли системные ПЗУ от кооператива "SP-580" из г.Барнаул (Лукин, Титков), мы просто челюсть на пол уронили, пробуя их программы.
Друг свой мафон хороший отдал кому-то переписывать музыку, и только старая дерьмовая "Электроника 302" была под руками - с неё и Специалист и Спектрум на чтение глючили, а тут - и кассеты "чужие", в Барнауле записанные, и мафон - хлам, а ни одной ошибки!

Потом FSK сразу был стандартом в "Специалисте_МХ", а во втором RAMFOS они и скорость зело подняли....
Но время уходило, и мы с другом уже приобрели дисководы под ДОС "Специалиста_МХ" - удобство аднака! :D
Я ещё помнил раньше некоторые компы, где FSK был... - "Ириша" в частности.

Но Mark VandeWettering удивил и порадовал конкретно! Arduino и древний, почти забытый, FSK! :roll:


Last edited by Lavr on 08 Feb 2012 18:36, edited 1 time in total.



08 Feb 2012 03:23
Profile
Retired
User avatar

Joined: 25 Jul 2011 00:14
Posts: 1331
Location: WWW
Reply with quote
Post 
FSK ни разу не забытый, на КВ его много. :wink:
Радиотехника очень плохой магнитофон, очень.


08 Feb 2012 03:57
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
MC68k wrote:
Радиотехника очень плохой магнитофон, очень.

Сам ты УГ. "Радиотехника" у меня до сих пор работает...
Есть просто УГ, которым всё плохое, им, видимо, У много
при "компиляции" вставили. :wink:


08 Feb 2012 04:06
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
MC68k wrote:
Радиотехника очень плохой магнитофон, очень.

Сам ты УГ. "Радиотехника" у меня до сих пор великолепно работает...
Есть просто УГ, которым всё плохое, им, видимо, У много
при "компиляции" вставили. :wink:


PS. И кошка твоя глупая, очень. Вот! :lol:


08 Feb 2012 04:28
Profile
Retired
User avatar

Joined: 25 Jul 2011 00:14
Posts: 1331
Location: WWW
Reply with quote
Post 
У меня нет кошки, а Радиотехника очень шумная. :wink:


08 Feb 2012 04:49
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
MC68k wrote:
У меня нет кошки, а Радиотехника очень шумная. :wink:

Не хочу спорить, да и обсуждать здесь мафоны - оффтоп.

А вот что делают с FSK на КВ - поясни?
Я не радист ни разу, а в МП-технике FSK реально давно не встречал...
Так что использование FSK на КВ интересно.


08 Feb 2012 05:09
Profile
Retired
User avatar

Joined: 25 Jul 2011 00:14
Posts: 1331
Location: WWW
Reply with quote
Post 
один из видов цифровой связи на КВ, любительской в том числе.


08 Feb 2012 05:28
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Post 
Lavr wrote:
(Шурик, по его фоткам, тоже серьёзный мафон юзал, чуть ли не "Маяк"...)

А у меня был такой дисковод (фото с http://rw6ase.narod.ru):

И кстати да, на КВ очень много применяется разновидностей FSK, которые у радиолюбителей называются PSK, MFSK. Что интересно, этими видами модуляции работают, применяя небольшие мощности, при этом возможны связи на довольно большие расстояния. Цифровые виды связи на КВ включают и другие виды модуляции, помимо основанных на FSK. Если интересно, можно больше найти в Википедии и на радиолюбительских сайтах типа http://qrz.ru/, http://www.cqham.ru/.


08 Feb 2012 09:13
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
Lavr wrote:
(Шурик, по его фоткам, тоже серьёзный мафон юзал, чуть ли не "Маяк"...)

А у меня был такой дисковод (фото с http://rw6ase.narod.ru)

Круто! :kruto: Прямо 8-дюймовый магнито-флоппик! :lol:

А я на "Радиотехнику" сподобился - больно мне "выездной столик" нравился!
А шуметь - может она и шумит на свой класс... но на слух не замечал...

Вобщем-то тебе трудновато было меняться кассетами... :roll:
Image
У всех - 5 дюймов, а у тебя - 8-дюймов... неформат! :D
Но как архивный стриммер - неоценимо!

Я чуть [url=http://ru.wikipedia.org/wiki/АрВид]АрВид[/url] не купил при 286-й машине, благо и видик был...
Но CD-юки втихаря подкрались... :wink:


PS. Да - Шурик пользовал кассетный Маяк-240 с "памятью"...

Image


Last edited by Lavr on 08 Feb 2012 18:39, edited 2 times in total.



08 Feb 2012 09:39
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Post 
Lavr wrote:
А я на "Радиотехнику" сподобился - больно мне "выездной столик" нравился!
А шуметь - может она и шумит на свой класс... но на слух не замечал...

Спору нет, "Радиотехника" и по дизайну, и по качеству были среди лучших советских аппаратов. Но всё же в данном радиокомплексе 1-го класса именно магнитофон был самым слабым звеном (2 класс). Мне тоже довелось немного попользоваться этим магнитофоном, но мне он не пришёлся по душе. "Орель-101", "Маяк-232/233" или "Вега МП-120" мне кажутся гораздо более привлекательными. Но это, как говорится, вопрос религиозный :).

На работе лежит "Радиотехника М-201". Нет крышки корпуса, нет пассиков, разбит индикатор. Отдал кто-то в незапамятные времена моему коллеге на запчасти. Понянчил я его немного и положил до лучших времён. Если бы хотя бы была крышка...


08 Feb 2012 11:52
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
На работе лежит "Радиотехника М-201". Нет крышки корпуса, нет пассиков, разбит индикатор. Отдал кто-то в незапамятные времена моему коллеге на запчасти. Понянчил я его немного и положил до лучших времён. Если бы хотя бы была крышка...

Когда во времена былинные мы купили на службу 10 "Микрош", то с ними взяли 8 "Электроник 323"
и 2 "Радиотехники"...
Я "Радиотехникой" попользовался и был очень доволен, поэтому купил себе тоже...
На работе обе "Радиотехники" по сей день живые, чего про "Электроники" сказать не могу.
Дома я "Радиотехнику" больше использовал как стриммер для "Специалиста". Музыку редко слушал...
Может для музыки она и не лучшего класса, но как стриммер - себя оправдала.
И, мне кажется, более "тонких" (по высоте) кассетных дэк у нас и не было... :wink:

Другое дело, что из "Маяка" можно было сделать полноценный программно-управляемый стриммер!
И даже кто-то делал - мне попадалось....


08 Feb 2012 12:36
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Господин Mark VandeWettering вспомнил о формате FSK, работая с передачей данных по
лучу лазера, управляемого Arduino!
И древний стандарт пришелся "старому динозавру" ко двору! :wink:

А пожилой господин Mark VandeWettering занятный джентльмен! :roll:
Quote:
А technical director at Pixar Animation Studios, telescope maker,
computer science and math afficianado, an Extra class radio amateur licensed
as K6HX, and all around geek.

С интересом на его страницах посидел... многое его интересует...
В том числе и 4 Bit Computers, built from TTL chips! :wink:


10 Feb 2012 08:48
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 30 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.