Arduino & FSK

8-битные микроконтроллеры AVR (AT90, ATtiny, ATmega) от Atmel (в настоящий момент принадлежит Microchip)

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Arduino & FSK

Post by Lavr »

Казалось бы тема 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: Select all

#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.
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Напоминает ZX-Spectrum - там правда ещё "пилот-тон" был перед каждым блоком
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Я тоже вспомнил про спектурм. Только, в нем каждому биту соответствовал один период. И у спектрума тоже достаточно сильный иммунитет к детонации. А прикол в том, что они измеряют периоды и сравнивают его с некоторым эталонным значением, которое обычно на границе между длительностью 0 и 1. А если бы они сравнивали с предыдущим периодом на существенное различие, то, теоретически, можно было бы изменять скорость вообще в очень широких пределах, главное чтобы плавно.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

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.
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

FSK ни разу не забытый, на КВ его много. :wink:
Радиотехника очень плохой магнитофон, очень.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

MC68k wrote:Радиотехника очень плохой магнитофон, очень.
Сам ты УГ. "Радиотехника" у меня до сих пор работает...
Есть просто УГ, которым всё плохое, им, видимо, У много
при "компиляции" вставили. :wink:
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Lavr wrote:
MC68k wrote:Радиотехника очень плохой магнитофон, очень.
Сам ты УГ. "Радиотехника" у меня до сих пор великолепно работает...
Есть просто УГ, которым всё плохое, им, видимо, У много
при "компиляции" вставили. :wink:
PS. И кошка твоя глупая, очень. Вот! :lol:
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

У меня нет кошки, а Радиотехника очень шумная. :wink:
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

MC68k wrote:У меня нет кошки, а Радиотехника очень шумная. :wink:
Не хочу спорить, да и обсуждать здесь мафоны - оффтоп.

А вот что делают с FSK на КВ - поясни?
Я не радист ни разу, а в МП-технике FSK реально давно не встречал...
Так что использование FSK на КВ интересно.
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

один из видов цифровой связи на КВ, любительской в том числе.
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Lavr wrote: (Шурик, по его фоткам, тоже серьёзный мафон юзал, чуть ли не "Маяк"...)
А у меня был такой дисковод (фото с http://rw6ase.narod.ru):


И кстати да, на КВ очень много применяется разновидностей FSK, которые у радиолюбителей называются PSK, MFSK. Что интересно, этими видами модуляции работают, применяя небольшие мощности, при этом возможны связи на довольно большие расстояния. Цифровые виды связи на КВ включают и другие виды модуляции, помимо основанных на FSK. Если интересно, можно больше найти в Википедии и на радиолюбительских сайтах типа http://qrz.ru/, http://www.cqham.ru/.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:
Lavr wrote: (Шурик, по его фоткам, тоже серьёзный мафон юзал, чуть ли не "Маяк"...)
А у меня был такой дисковод (фото с http://rw6ase.narod.ru)
Круто! :kruto: Прямо 8-дюймовый магнито-флоппик! :lol:

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

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

Я чуть АрВид не купил при 286-й машине, благо и видик был...
Но CD-юки втихаря подкрались... :wink:


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

Image
Last edited by Lavr on 08 Feb 2012 18:39, edited 2 times in total.
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

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

На работе лежит "Радиотехника М-201". Нет крышки корпуса, нет пассиков, разбит индикатор. Отдал кто-то в незапамятные времена моему коллеге на запчасти. Понянчил я его немного и положил до лучших времён. Если бы хотя бы была крышка...
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

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

Другое дело, что из "Маяка" можно было сделать полноценный программно-управляемый стриммер!
И даже кто-то делал - мне попадалось....
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Arduino & FSK

Post by Lavr »

Lavr wrote:Господин Mark VandeWettering вспомнил о формате FSK, работая с передачей данных по
лучу лазера, управляемого Arduino!
И древний стандарт пришелся "старому динозавру" ко двору! :wink:
А пожилой господин Mark VandeWettering занятный джентльмен! :roll:
А 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: