Как нажать комбинацию клавиш с помощью Pyautogui
Как можно нажать комбинацию клавиш например win + r с помощью библиотеки Pyautogui пробовал сделать вот так pg.typewrite(«win + r») но в таком случае просто выводилось win + r, win нажималась не как клавиша а как буквы w + i + n так же пробовал pg.typewrite([«win»] + [«r»]) и пробовал
pg.typewrite(["win"]) pg.typewrite(["r"])
Отслеживать
задан 28 дек 2020 в 13:01
user420913 user420913
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
pyautogui.hotkey('ctrl', 'c')
Отслеживать
ответ дан 28 дек 2020 в 13:06
USERNAME GOES HERE USERNAME GOES HERE
10.4k 21 21 золотой знак 25 25 серебряных знаков 53 53 бронзовых знака
Попробуй вот так:
Pyautogui.press('win','r')
Отслеживать
68k 218 218 золотых знаков 78 78 серебряных знаков 220 220 бронзовых знаков
Новая жизнь старого GPS-приёмника
Эта статья во многом посвящена теории работы GPS приемников, при том я не буду погружаться в формулы и нюансы, а приведу практическое описание применения теории.
Сигнал, передаваемый со спутника

Я думаю, большинство читателей и так знают, что метод определения координат в системе GPS основан на измерении моментов времени приёма синхронизированного сигнала от навигационных спутников антенной приемника. Приемник, зная координаты спутников, по измеренным задержкам может вычислить расстояния до спутников, и далее — свою позицию в пространстве. Но что именно предает спутник? В системе GPS наиболее широко известным является сигнал C/A-code, передаваемый на частоте L1 (1575.42 МГц). Частота L1 одинакова для всех спутников GPS. C/A — это сигнал гражданского назначения, также на этой же частоте передается P(Y)-code, декодирование которого доступно только военным. С точки зрения гражданских приемников, P(Y)-code является просто шумом, и его существование можно не учитывать. Самое интересное тут — именно сам C/A-код, представляющий собой поток бит, формируемый со скоростью 1.023 Mbit/s. Этот поток данных представляет собой псевдослучайный шумоподобный код (PRN), который формируется по специальной формуле, уникальной для каждого спутника. Поток данных состоит из 1023 бит (называемых chips/чипами), то есть через каждые 1023 чипа (1 мс) данные повторяются. Также этот поток данных называют дальномерным кодом, так как именно моменты повторения этого кода привязаны на спутнике к времени UTC. Также спутник формирует поток навигационных данных, который имеет скорость 50 бит/с. Этот поток содержит в себе полную информацию о текущем времени, точную информацию об орбите спутника (эфимериды), и некоторую другую информацию. Навигационные данные перемножаются с C/A-кодом при помощи операции XOR, и далее сформированный поток данных используется для управления модуляцией несущей частоты L1. Используемая модуляция — BPSK ( двоичная фазовая манипуляция), то есть при изменении двоичного значения данных формируемая синусоида несущей частоты меняет фазу на 180 градусов, а по сути — инвертируется. Замечу, что фазы всех вышеупомянутых сигналов синхронизированы друг с другом, к примеру, смена битов навигационных данных четко привязана к периодам C/A-кода.
Прием данных со спутника для последующей обработки
- Я использовал довольно старый приемник RTL-SDR, без всяких радиолюбительских улучшений. Как и упомянуто в инструкции, при работе на частоте 1575 МГц в нем очень быстро (секунд за 30-50) перегревается микросхема тюнера и прием сигнала нарушается. Так что мне пришлось вынуть плату из приемника и обдувать вентилятором — за счет этого приемник нормально работает длительное время.
- Важно установить в настройках «GNSS-SDRLIB» значение «Clock Error» — отклонение частоты кварцевого резонатора приемника в ppm (его нужно предварительно измерить). Для обработки данных от GPS довольно важно точно знать точную частоту кварца, при наличии большой ошибки алгоритмы просто не обнаружат сигналы GPS.
- Лучше не выбирать все спутники в программе (в окне справа), а выбрать только те, что реально присутствуют над приемником. Программа довольно требовательна к CPU.
Ранее, до широкого распространения дешевых приемников GNSS, энтузиасты использовали специализированные GNSS-приёмники.
Примером могут являться:

Достоинствами таки приемников могут являться: возможность приема сигналов сразу с двух далеких друг от друга диапазонов, возможность синхронного приема сигналов сразу с двух антенн, наличие точного кварцевого генератора TCXO, специализированные аппаратные полосовые фильтры сигнала; так что и сейчас в определенных случаях такие приемники не потеряли актуальности.
В большинстве своем в таких приемниках для приема и оцифровки сигналов GNSS используются специализированные микросхемы (GNSS RF front-end). Сейчас, в эпоху, когда весь GPS приемник может быть сделан на единственной микросхеме или может быть даже частью большого SoC, такие микросхемы встречается в основном в профессиональном GNSS-оборудовании. Посмотрим же, как дела обстояли раньше.
Исследование старого GPS приемника
Пора, наконец, перейти к приемнику, упомянутому в заголовке)
С давних пор у меня имеется GPS-приемник Globalsat BT-318.

Это довольно типичный представитель своего класса — GPS приемник с Bluetooth интерфейсом. Приемник имеет встроенный аккумулятор и предназначен для подключения к КПК, не имеющих встроенного GPS-приемника.
В продажу поступил в далеком 2004 году — 19 лет назад.
Построен он на чипсете SiRF StarIIe.
Однажды этот приемник попался мне на глаза в очередной раз, и я подумал: «Можно ли использовать его, чтобы принять «сырые» GPS данные и обработать их на ПК»?
К тому моменту у меня уже был опыт работы с RTL-SDR, и я знал, что программа GNSS-SDRLIB умеет работать со специализированными GNSS приемниками. Именно тогда я решил разобраться с приемником поглубже.
Структурная схема этого чипсета:

Можно видеть, что приемник построен на двух основных микросхемах — GRF2i/LP и GSP2e/LP. Первая — собственно, вышеупомянутый GNSS RF front-end, вторая — «мозг» приемника, именно она занимается обработкой принятого оцифрованного сигнала и выдает результат в виде NMEA пакетов по UART. Если не ошибаюсь, разделение на две микросхемы нужно потому, что они изготовлены по разным техпроцессам, кроме того, таким образом можно надежно отделить аналоговую часть приемника от цифровой.
Из схемы можно видеть, что данные от микросхемы GRF2i/LP идут в цифровом виде, их можно попробовать перехватить и передать на ПК.
К сожалению, у меня не осталось хороших фотографий разобранного приемника, так что придется довольствоваться фотографиями из FCC.ID:

Справа вверху — микросхема GRF2i/LP и ее обвязка, включая TCXO, справа внизу — микросхема GSP2e/LP и Flash-память. Они размещены на отдельной плате, фактически образуя модуль GPS-приемника.
Слева — модуль Bluetooth.
Все три узла закрыты металлическими крышками-экранами, снимать их непросто.
К сожалению, никакой документации на микросхему GRF2i/LP мне найти не удалось. А вот для GSP2e/LP есть такой документ от 2000 года: SiRF Application Note GSP2e Hardware Implementation (APNT0012).
В нем есть кое-какие подробности работы чипа GRF2i/LP.
Еще нашлась вот эта презентация, которая, к сожалению, несколько сбила меня с толку в дальнейшем.

Фактически, микросхема с обвязкой работает довольно просто — подаем на нее высокочастотный сигнал, она усиливает его (LNA) и переносит его на более низкую частоту (промежуточная частота — IF) ~9.45 МГц, полученный сигнал внутри микросхемы еще раз усиливается и оцифровывается двухбитным АЦП, оцифрованный сигнал микросхема выдает наружу.
Фраза «двухбитный АЦП» звучит несколько необычно, когда речь идет про радиоприем, но для приема сигналов GNSS можно использовать и однобитный АЦП!
В данном случае АЦП имеет два выхода — SIGN и MAG (magnitude). Первый — знак аналогового сигнала, второй — признак повышенного уровня сигнала. Также микросхема выдает сигнал ACQCLK, по нарастающему фронту которого приёмник цифровых данных должен захватывать данные от АЦП. Частота сигнала тактирования довольно высокая — ~38МГц.
Также микросхема имеет вход управления усилением AGCDATA, в чипсете он подключён к GSP2e/LP, которая, анализируя данные от АЦП, переключает усиление. Так как я не собирался отключать GSP2e, то про эту линию можно не думать.
Осциллограф показал вот такие сигналы на линиях ACQCLK/SIGN:

В итоге выходит, что этот GPS-приемник вполне можно использовать для получения «сырых» данных GPS — достаточно захватить данные с линий SIGN/MAG и передать их на ПК, где их можно будет обработать в GNSS-SDRLIB. Честно говоря, я думал, что это займет не очень много времени, но ошибся.
Получение цифровых данных от GPS RF Front-end
Как я уже писал выше, микросхема GRF2i/LP имеет две линии данных и одну линию тактирования. Однако просто так подключить эти линии к какой-то распространенной цифровой логике не выйдет — все три линии имеют тип PECL (Pseudo Emitter Coupled Logic), размах сигнала там маленький (около 700мВ) и имеется постоянная составляющая около 1.5В. У микросхемы имеется специальный выход PECLREF, на котором присутствует как раз это напряжение смещения. Таким образом, чтобы получить цифровые данные в привычного типа CMOS 3.3V, нужно иметь три компаратора, причем быстрых (напомню, что скорость данных — 38 MSPS).
Для преобразования сигналов я изготовил специальную плату, на которой размещена микросхема MAX964EEE+ — счетверенный компаратор.

Площадки P1,P2,P4 подключаются к линиям ACQCLK/SIGN/MAG приемника, площадки P9, P10, P11 — выходы. Для тестов на плате есть два U.FL разъема — с их помощью можно подключить плату напрямую к осциллографу. На осциллографе получается такой сигнал:

Видно, что сигналы имеют крутые фронты и приличную амплитуду.
Получившаяся конструкция выглядит так:

Как видно, плата компараторов подключена к линиям GRF2i тонкими проволочками. Это подключение не влияет на работу приемника — к нему все еще можно подключится по Bluetooth и посмотреть, какие спутники он принимает.
Внутри приемника была встроенная активная антенна, я отпаял ее и припаял разъем для более крупной антенны с длинным проводом.
Питание платы компараторов — внешнее.
Передача оцифрованных данных в ПК
Как я уже писал выше, частота выборок — 38 MSPS, что соответствует потоку данных 76 Mbit/s. Это довольно много, поэтому для передачи данных я решил использовать специализированную микросхему cy7c68013a, которая может работать в режиме конвертера «USB-параллельная шина». Эта микросхема программируется, возможно, ее можно было бы настроить для приема данных по двухбитной шине, но я решил использовать готовый софт и восьмибитную шину.
Если попробовать завести двухбитную шину на восьмибитную, то это создаст огромную нагрузку на USB и ПК — получившийся поток данных будет иметь скорость 304 Mbit/s, и я даже не уверен, что USB HS справится. Как же преобразовать двухбитный поток данных в восьмибитный? Можно собрать преобразователь на микросхемах сдвиговых регистров и триггерах, но я пошел более простым путем, и использовал отладочную плату ПЛИС DE0-Nano. Так так задача довольно простая, то и код на Verilog получается простейший. В результате на 4 такта ACQCLK ПЛИС выдает один байт данных (8 выходов). В них четыре старших бита — SIGN, четыре младших — MAG. Также имеется выход синхронизации. Таким образом мы получаем поток данных 9.5 Мбайт/с.
У меня была дешевя отладочная плата для микросхемы CY7C68013a, которую я и собирался использовать для захвата данных от ПЛИС:

Когда я планировал использовать ее для захвата данных, я рассчитывал использовать Open Source проект sigrok — у них были примеры использования таких плат для создания логических анализаторов сигнала. Однако, как оказалось, прошивки sigrok не поддерживают внешнее тактирование.
Далее я смог найти проект fx2pipe для Linux. Проект обещал возможность захватывать данные с параллельной шины по внешнему тактированию, но был довольно старым, основанным на libusb-0.1, что мешало запустить его в современном Linux.
В дальнейшем я смог найти современную модификацию этого проекта: Cannelloni (небольшое обсуждение). Тут, как водится, классика Linux — нужно все собирать самому (включая прошивку CY7C68013a), инструкции неполные. В итоге все же удалось собрать проект — и он не заработал.
Еще немного поисков — в недрах сайта проекта fx2pipe находится упоминание:
Before running this firmware, you need to manually do the following wiring:
Connect to HIGH (3.3V): PA2/SLOE, PA5/FIFOADR1, RDY0/SLRD
Connect to LOW (GND): PA4/FIFOADR0, RDY1/SLWR
Накинул на палату кучу соединений — не помогает, программа на ПК не принимает никаких данных. Хотя видно, что программа с ПК успешно загружает прошивку в микросхему, при помощи ключей командной строки можно запустить захват данных по тактированию «изнутри» микросхемы.
Прошивки sigrok на этой отладочной плате работают нормально.
Потратил кучу времени, разбираясь с этой проблемой, и в итоге решил заказать новую отладочную плату — вдруг вход IFCLK микросхемы пробило. Новая плата ничего не изменила, вела себя абсолютно также, как и предыдущая, только микросхема на ней немного отличалась внешне от первой, и грелась намного меньше. Тут уже у меня возникло ощущение — «а может обе микросхемы контрафактные?».
Вспомнил, что у меня завалялась недоделанная отладочная плата на такой же микросхеме CY7C68013-128A. Эту микросхему я выпаял их ненужного тв-тюнера, и она была заведомо рабочей. Опять потратил кучу времени на оживление этой платы (а она была сделана по технологии ЛУТ, и некоторые дорожки перетравились), допаял определенное количество перемычек, которые требовались fx2pipe (некоторые пришлось припаивать прямо к ножкам микросхемы) и, в итоге, захват данных заработал! Так что, судя по всему, все же с китайскими микросхемами было что-то не так.
Вдруг кому-то пригодится, пример команды для захвата 81920 выборок с использованием cannelloni:
./cannelloni -f fx2pipe.ihx -t fx2lp -i -8 -b 8192 -n 81920 -c x -v > test.bin
На всякий случай замечу, что тактовая частота сигнала, подаваемого на вход IFCLK, должна быть больше 5 МГц, а сигнал нужно начинать подавать на микросхему до того, как ПК начинает загружать в нее прошивку.
В итоге получилась вот такая странноватая конструкция:

Думаю, у читателя сразу возникает вопрос — зачем тут стрелочный миллиамперметр (1957г выпуска)?
Как я уже писал выше, по началу плата CY7C68013A работала нестабильно из-за плохого качества платы. По амперметру можно контролировать ток, потребляемый платой, и таким образом определять режим работы микросхемы. При стабильной работе платы можно выделить состояния — прошивка не загружена/загружена/передача данных запущена.
Плата DC-DC преобразователя (под амперметром) нужна для питания CY7C68013A. Ток тут достаточно большой, и линейного преобразователя явно не хватит.
Можно видеть, что на плату CY7C68013A не установлена EEPROM. Для cannelloni она не нужна — программа сама загружает в микросхему прошивку при запуске.
Обработка захваченных данных
В итоге, я меня появилась возможность при помощи программы cannelloni захватывать довольно большие объёмы данных в файл на ПК. Программа GNSS-SDRLIB имеет возможность обрабатывать данные из файлов. Таким образом, сделав конвертер файлов, я мог проанализировать свои данные в GNSS-SDRLIB. К сожалению, формат файлов, поддерживаемых GNSS-SDRLIB, нигде толком не описан (честно сказать, с документацией на эту программу все плохо). В итоге, покопавшись в исходном коде, я выяснил, что лучше всего подходит формат приемника GN3Sv3. Формат очень прост — это последовательно идущие результаты АЦП типа int8_t, в этом приемнике тоже использован 2-битный АЦП, так что допустимые значения данных тут — [-3,-1, 1, 3].
Я быстро написал на C# конвертер своих файлов в формат GN3Sv3, записал 40 сек данных, в GUI GNSS-SDRLIB указал характеристики своего приемника («Sampling Freq» — частота дискретизации АЦП, ACQCLK и «Intermediate Freq.» — промежуточная частота, ее я тоже упоминал выше). И ничего не заработало, опять.
Программа не смогла захватить сигнал от спутников.
Замечу, что в программе есть возможность отображения гистограммы входных данных и спектра сигнала. С моими данными они выглядели достаточно адекватно:

Что представляет из себя захват (acquisition) сигнала?
Как я уже писал выше, основа GPS сигнала — псевдослучайный код длинной 1023 бита. Обнаружить этот код в принятом сигнале можно, вычисляя взаимную корреляцию между принятым сигналом, и сгенерированном на приемнике. При этом придется имеются следующие неизвестные:
- Номер спутника. Он нужен для генерирования PRN кода. При «холодном старте» приемник ничего не знает про орбиты спутников, свои координаты и время, так что приемнику нужно либо перебирать номера спутников, проверяя наличие сигнала, либо (если приемник обладает нужными аппаратными ресурсами) — анализировать параллельно все существующие номера. В программе GNSS-SDRLIB номера спутников выбирает сам пользователь.
- Частота сигнала, на которой нужно искать поток данных. Спутники постоянно движутся по небу, в результате чего принимаемый на Земле сигнал имеет доплеровское смещение частоты. При «холодном старте» приемник опять же ничего не знает про спутник, так что ему приходится определять истинную частоту перебором. Очевидно, что у каждого спутника, от которого мы принимаем сигнал, частота будет своя. Обычно зона поиска находится в диапазоне ±10 кГц.
- Фаза сигнала. Фактически, это положение одного периода PRN кода в принятых данных. Именно по разнице фаз между сигналами разных спутников и происходит вычисление расстояния до них.
Как видно, даже если номер спутника известен, вычислений для обнаружения сигнала от спутника нужно много — нужно перебрать все 1023 вариантов фазы и десятки частот, каждый раз вычисляя корреляцию. Если приемник имеет аппаратные корреляторы, то задача не займет много времени, а вот на ПК она выйдет довольно медленной. В случае GNSS-SDRLIB автор программы использовал метод поиска с использованием БПФ (FFT), то есть перенеся данные из временной области в частотную.
Схема используемого алгоритма:
![Изображение взято из [1]](https://habrastorage.org/getpro/habr/upload_files/174/401/e86/174401e8692296af825cadebb646edee.png)
«Local oscillator» — формирует сигнал промежуточной частоты (IF), смещенный на X Гц (это значение перебирается в процессе поиска). Перемножая входные данные с данными этого генератора, мы получаем данные, перенесенные на нулевую частоту в комплексной форме. Далее при помощи FFT приемник переносит эти данные в частотную область, т.е. по сути, вычисляет спектр входного сигнала на анализируемой частоте.
«PRN code generator» вычисляет данные PRN для заданного спутника, по ним тоже выполняется FFT преобразование, а затем — для найденных значений вычисляются комплексно сопряженные значения. Замечу, что так как PRN зависит только от номера спутника, то эту часть операций можно выполнить один раз — при старте приемника. В итоге получаем спектр PRN кода.
После этого оба спектра поэлементно перемножаются, и для полученных данных вычисляется обратное преобразование Фурье (IFFT), то есть выполняется перенос данных обратно во временную область.
Зачем нужно было делать все вышеперечисленное? Теорема свертки утверждает, что свертка во временной области эквивалентна умножению в частотной области. Таким образом, в результате вышеперечисленных операций мы получаем значения корреляции для каждого варианта фазы PRN кода. Проанализировав, в какой месте получившегося массива значение превышает определенный порог, мы получаем значение фазы. Или не получаем, что означает, что на данной частоте нет сигнала от данного спутника.
GNSS-SDRLIB может формировать вот такие визуализации результатов acquisition:

На изображении приведены результаты N вышеприведенных вычислений для N перебираемых частот, для одного спутника.
Offset — это как раз фаза в выборках, а вот частота здесь подписана неверно, в действительности значения — не Hz, это просто значение индекса среди N перебираемых частот.
В программе алгоритм захвата находится в файле sdracq.c.
Я долго разбирался, что же не так с моими данными, в отладчике все выглядело адекватно.
Единственная остававшаяся проблема — неверно выставленные частоты в программе.
В презентации выше упомянуты частоты: ACQCLK=38.192 MHz и IF=9.548 MHz (1/4 ACQCLK). Такие же частоты упоминаются в книге [1].
А вот в Application Note APNT0012 упомянуты другие частоты: ACQCLK=38.194 и IF=9.45MHz.
Правда, если проанализировать структурную схему, можно определить коэффициенты деления и формулы, связывающие все частоты в микросхеме RF frontend. По ним первые частоты подходят, вторые — нет. Но есть явное ощущение, что тут что-то не так.
Чтобы вычислить истинные значения частот, нужно знать только частоту TCXO кварцевого генератора, использованного в моем приемнике. И с этим есть проблема — маркировка R2141 Y439 не находится в интернете, точного частотомера у меня нет (уже позже я выяснил, что это может быть Rakon Part 2141-24.5535MHZ). Покопавшись в интернете, я смог найди одну схему GPS приемника на таком же чипсете, и выяснил, что другие производители использовали с этим чипсетом TCXO на частоту 24.5535MHz.
Если по вышеупомянутым формулам вычислить частоты, то выходят неудобные дробные величины: ACQCLK=38.19433(3) MHz и IF=9.452333(3) MHz. Отношение ACQCLK/IF тоже становится здоровой дробью. Зато эти числа похожи на те, что в APNT0012, только там они, вероятно, округлены.
С новыми значениями частот программа смогла обнаружить сигнал от спутников в захваченных данных, что уже было серьезным прогрессом. А вот приема данных не было, опять проблема.
Теперь проблема связана со слежением (tracking) за данными со спутника.
Что представляет из себя трекинг? После захвата сигнала приемнику уже не нужно искать частоту сигнала со спутника и перебирать огромного количество возможных фаз PRN — эти значения он уже определил. Однако, частота в процессе захвата определяется грубо, плюс она будет меняться по мере движения спутника по небу. Скорость формирования кода PRN в приемнике тоже нужно подстраивать, также, как и фазу.
Источником данных о приеме служат результаты корреляции, только теперь число вычислений корреляции значительно меньше. В данном случае используется распространённый подход (Early, Prompt, Late), в котором принятые данные сравниваются со сгенерированным потоком PRN, сдвинутым на (-1/2;0;+1/2) чипа. Откуда дробные значения? Частота дискретизации АЦП значительно выше частоты PRN данных. Сравнивая результаты корреляции, можно оценить состояние трекинга.
![Картинка из книги [1], хорошо объясняющая происходящее.](https://habrastorage.org/getpro/habr/upload_files/5e9/6c1/26f/5e96c126f0c4ec9b45d738488c6906b1.png)
В результате получается вот такой алгоритм трекинга:
![Картинка из книги [1]](https://habrastorage.org/getpro/habr/upload_files/82f/469/ec8/82f469ec86cca55f6fad22bf434ff402.png)
В данном случае «NCO carrier generator» — программный генератор промежуточной частоты, его частоту подстраивает алгоритм PLL (phase locked loop).Перемножая входные данные с данными этого генератора, мы получаем данные, перенесенные на нулевую частоту в комплексной форме.
«E-P-L» — корреляторы, «PRN code generator» — формирователь кода PRN. Скорость формирования кода регулирует алгоритм DLL (delay lock loop).
Результаты работы корреляторов интегрируются и используются в дискриминаторах для определения коэффициентов коррекции. Дискриминаторы описываются довольно несложными математическими выражениями.
Замечу, что алгоритм трекинга анализирует входные данные блоками по одному периоду PRN-кода, то есть все вышеописанные операции нужно успеть выполнить за 1мс, причем для всех анализируемых спутников. Результаты трекинга (текущий результат корреляции) используется для выделения навигационных данных.
Программа GNSS-SDRLIB может выдавать результаты работы корреляторов для каждого спутника в виде графиков:

Откуда столько точек, если выше сказано, что корреляторов всего шесть?
В описании программы [2] сказано, что ней реализовано большее число корреляторов для исследовательских целей, для целей трекинга используются только три пары.
Число корреляторов, шаг между ними можно настраивать в GUI.
А вот в в моем случае на этих графиках был просто шум.
Также программа GNSS-SDRLIB может сохранять логи трекинга. Там присутствуют много данных, включая результаты корреляций, величины вычисленных коррекций. Построив график колонки IP, можно увидеть байты навигационных данных:

Хорошо видно в начале процесс выхода обратных связей алгоритмов трекинга на истинные значения от грубых, найденных во время acquisition.
В моем случае по такому же графику было видно, что небольшое время трекинг есть, но потом он «срывается»:

Я довольно долго разбирался, в чем же тут проблема, и в итоге выяснил, что она была связана со слишком малым размером промежуточного буфера в cannelloni. Судя по всему, иногда в записанных данных возникали пропуски, а это приводило к сбою трекинга (так как нарушалась синхронизация). В итоге остановился на размере буфера — 131072 байта. Замечу, что отключение антенны от приемника на несколько секунд не приводит к нарушению трекинга.
Дальнейшие эксперименты
К этому этапу, у меня был софт, способный адекватно анализировать данные, записанные в файл. Работать в таком режиме с программой было неудобно (данные занимают очень много места), и я добавил в GNSS-SDRLIB поддержку своего приемника — то есть получение данных с него в реальном времени. Так как у меня уже были исходные коды cannelloni, это было не очень сложно.
Однако, как оказалось, скорость данных в 38 MSPS оказалась высоковата для GNSS-SDRLIB, так что мне пришлось в ПЛИС поделить входной тактовый сигнал на два.
В итоге прием данных заработал, как и ожидалось, однако периодически (раз в минуту или реже) трекниг терялся, причем для всех спутников сразу.
Для проверки я добавил в программу для ПЛИС формирование небольших последовательностей байт — маркеров, которые раз в 10 000 передаваемых байт подменяли данные с АЦП. Эти последовательности можно легко находить при анализе данных на ПК, с точки зрения обрабатывающего софта они являются просто слабыми помехами. Как оказалось, периодически данные все равно терялись, что нарушало синхронизацию. Найти причину, почему это происходит, я не смог, так что просто доработал анализ данных в GNSS‑SDRLIB — благодаря маркерам можно обнаружить потерю данных и не допустить потерю синхронизации.
В итоге удалось добиться полноценной работы приемника в режиме реального времени.
Таким образом я получил программу для ПК, которая может анализировать «сырые» данные, принимаемые GPS-приемником, определять фазы принятых сигналов с каждого спутника и выделять из потока данных навигационную информацию. Все полученные данные GNSS-SDRLIB может передать в более высокоуровневый софт для последующего анализа по протоколу RTCM через TCP. Именно этот высокоуровневый софт занимается вычислением координат приемника. Пример такого софта: RTKLIB.
Используя свой приемник, я смог успешно запустить RTKLIB:

Честно сказать, качество определения координат вышло так себе, из картинки выше видно, что разброс значений координат за несколько минут доходит до ±20м, и это — при 6 используемых спутниках.
Для сравнения, разброс координат, полученный при помощи приемника u-blox M8T (сырые данные от него тоже обработаны в RTKLIB):

Тут разброс координат около ±5м, и это при 5 используемых спутниках. Антенна использовалась та же самая.
Также я заметил, что программа GNSS-SDRLIB явно требует высокого уровня принимаемого сигнала для того, чтобы acquisition прошел успешно. То есть, к примеру, GNSS-SDRLIB адекватно захватывает сигналы только с 4 спутников, а сам приемник BT-318 (его микросхема GSP2e) в это же время захватывает данные уже с 6 спутников.
Во всех экспериментах я использовал активную антенну, установленную на подоконнике. Это приводит к тому, что принимать сигналы можно только с части неба, и соответственно, набрать в GNSS-SDRLIB 6 спутников с высоким уровнем сигнала можно не всегда.
Также для другого эксперимента я собрал небольшую плату с GNSS RF front-end MAX2769:

Эта микросхема удобна тем, что имеет специальный режим — Preconfigured Device State, в который ее можно переключить, подав единицу на вход PGM. Таким образом можно получить данные с микросхемы, не конфигурируя ее по SPI.
Я подключил эту плату вместо BT-318, отключил деление частоты на 2 в ПЛИС, поменял настройки частот в GNSS-SDRLIB — и конструкция успешно заработала. По моим ощущениям, MAX2769 имеет явно лучшую чувствительность, чем GRF2i (хотя MAX2769 тоже не молодая — времен 2007 года). Точность определения координат получилась аналогичная.
В GNSS-SDRLIB была заявлена поддержка спутников Galileo (они передают сигнал на той же частоте, что и GPS), но мне пришлось немного доработать программу, чтобы она начала обрабатывать и пересылать данные Galileo, однако по какой-то причине, нормально сигналы от них удалось обработать только в RTKLIB 2.4.2 p13.
В ходе экспериментов я внеc много разных доработок в GNSS-SDRLIB, результат выложен здесь: https://github.com/iliasam/GNSS-SDRLIB
Очень крутой проект GPS приемника из 90-х, собранного на аналоговых микросхемах, распространенных цифровых микросхемах и MC68010 в качестве CPU: A homemade receiver for GPS & GLONASS satellites. Также тут подробно описана теория работы GNSS систем.
Проект самодельного GPS приемника на ПЛИС, тоже неплохо описана теория: Homemade GPS Receiver
Как работает функция auto pi в приемнике

чить автоматический поиск по идентифика-
тору программы.
Активируйте эту настройку при подключении к
данному устройству вспомогательного устрой-
ства.
1 Нажмите M.C., чтобывключить или выклю-
чить функцию AUX.
USB PNP (plug and play)
Эта настройка позволяет автоматически пере-
ключать выбранный источник сигнала на USB/
USB-iPod.
1 Нажмите M.C., чтобывключить или выклю-
чить функцию plug and play.
ON
– Если подключено запоминающее ус-
тройство USB/iPod, то, в зависимости от
типа устройства, источник сигнала автома-
тически переключается на USB/USB-iPod
при запуске двигателя. При отсоединении
устройства USB/iPod источник сигнала вы-
ключается.
OFF
– Если подключено запоминающее ус-
тройство USB/iPod, источник сигнала не пе-
реключается на USB/USB-iPod
автоматически. Необходимо вручную вы-
брать USB/USB-iPod.
настройка выхода заднего кана-
Выход заднего канала этого устройства (выход
на провода заднего громкоговорителя) можно
использовать для подключения широкополос-
ного громкоговорителя (FUL) или сабвуфера
(
При выборе для настройки выхода за-
днего канала значения SW, можно подключить
провод заднего громкоговорителя непосред-
ственно к сабвуферу без использования вспо-
могательного усилителя.
По умолчанию REAR SP настроен на подключе-
ние заднего широкополосного громкоговорите-
ля (FUL).
1 Для отображения установочного меню на-
2 Для изменения режима выхода поворачи-
вайте M.C., для выбора – нажмите.
REAR SP: FUL
3 Нажмите M.C., чтобыподтвердить выбор.
настройка демонстрационного режи-
1 Нажмите M.C., чтобывключить или выклю-
чить демонстрационный режим.
настройка режима прокрутки)
Если включить функцию постоянной прокрут-
ки, то текстовая информация будет постоянно
прокручиваться на дисплее. Отключите этот
режим для единовременной прокрутки этой ин-
формации.
1 Нажимайте M.C., чтобывключить или вы-
ключить функцию постоянной прокрутки.
Это устройство может отображать заголовки,
созданные на одном из европейских или на
русском языке.
На диск, содержащий сжатые аудиофайлы,
может быть записана текстовая информация,
например, название композиции, имя исполни-
теля или текстовый комментарий.
! При несовместимости настроек встроенно-
го и выбранного языка возможны искаже-
ния при выводе текстовых сообщений.
! Некоторые символы могут отображаться
1 Для отображения установочного меню на-
2 Поворачивайте M.C. для выбора настрой-
3 Нажмите M.C., чтобыподтвердить выбор.
источника сигнала (AUX)
Вставьте мини-штекер стереокабеля в
Нажмите кнопку SRC/OFF, чтобы вы-
брать AUX в качестве источника сигнала.
Примечание
Невозможно выбрать AUX, если не включе-

Сразу оговорюсь, что магнитолу менять в ближайшие месяцы не собирался. Как говориться, играла, ну и ладно. Но все же пришлось…
История следующая: вчера отвез отца по делам, думаю, сменю-ка я диск в магнитоле. Достаю прежний диск, вставляю новый, магнитола забирает его, но одну четверть диска оставляет снаружи и начинает считывание. В этот момент раздается треск, который продлился несколько секунд, и диск вылез обратно. Повторная попытка дала такой же результат. Решил доехать до дома без музыки и сделать полный сброс настроек магнитолы.
После сброса настроек магнитола вообще перестала забирать диск. Вставляешь диск в привод и он тут же вылазит обратно.
Сегодня наутро решил не заморачиваться со старой магнитолой, сгонял до магазина и купил новую — Pioneer DEH-1400UB.


Смотрится красиво, играет довольно качественно. По крайней мере лучше, чем прежняя JVC KD G327. К тому же, теперь не надо возить с собой кучу дисков, достаточно одной флешки.
Авто pi в магнитоле pioneer что это
2. Периодически рекомендуется производить очистку соединительных контактов панели и прибора.
3. Хранение панели производите в специальном футляре.
4. Не рекомендуется использовать кассеты более С-90 мин.
II.УСТАНОВКА (см.приложение)
— необходимые размеры установочного бокса:53 х 182 мм.

1. Снимите панель управления, нажатием кн.
2. Вставьте прилагаемые ключи в отверстия по бокам (рис.3)
3. Снимите салазки.
4. Вкрутите центровочный винт (разъем на задней части) и оденьте на него шпонку (рис.2)
5. Вставьте салазки в бокс до упора и отогните упорные язычки (рис.2).
6. Проведите все необходимые электрические соединения, после чего вставьте магнитолу до упора (до щелчка).
— Для последующего съема магнитолы необходимо вставить ключи и потянуть прибор на себя. (рис.3)
III. ПОДКЛЮЧЕНИЕ(см.приложение)
— подключение штекера с комплектом проводов производится к разъему на задней панели прибора (рис.5)
Рядом располагается предохранитель, рассчитанный на 10А.
красный провод — питание (клемма «+»)
желтый провод — питание памяти (клемма «+»)
черный провод — заземление (клемма «-«)
желтый с черной полосой — к телефону (для автоматического приглушения уровня громкости при поступлении звонка)
белый провод/белый с черной полосой — передняя левая акуст.система соответственно +/-
серый пр./серый с черной полосой — передняя правая а.с. соответственно +/-
зеленый пр./зеленый с черной полосой — задняя левая а.с. соответственно +/-
фиолетовый пр./фиолетовый с черной полосой — задняя правая а.с. соответственно +/-.
штекер антенны подключается в гнездо «ANTENNA TERMINAL».
IV.ОСНОВНЫЕ ОПЕРАЦИИ.
приемник
включение и настройка звука:
1. Включение прибора осуществляется нажатием кн.SOURCE, далее повторным нажатием данной кнопки выберите источник сигнала:
TUNER-приемник —> TAPE-магнитофон —> OFF-выключен
2. Регулировка уровня громкости производится при помощи кн.VOL+/-.
3. Для отключения прибора необходимо нажать кн. SOURCE в течении не менее 1 сек.
— данный приемник оснащен функцией автоматического распознования радиостанции в системе RDS. При отключении данного режима прибор переходит к обычному приему.
1. Выберите диапазон приема повторным нажатием кн.B: FM1-УКВ 1,
FM2-УКВ2, MW/LW — средние/длинные волны.
2. Для осуществления поиска радиостанции нажмите кн.SELECT :
менее 0,5 сек. — авто поиск (будет найдена ближайшая программа с минимальным уровнем сигнала);
более 0,5 сек. — ручной поиск(осуществляется поиск заведомо-известной частоты до тех пор,пока вы удерживаете одну из кнопок).
3. Для фиксации станции в памяти нажмите в течении не менее 2 сек.одну из кн.1-6.
-в каждом диапазоне вы можете зафиксировать по 6 станций.
4. Для вызова радиостанции из памяти выберите нужный диапазон приема,а далее в течении менее 2 сек.нажмите одну из кн.1-6.
магнитофон
При этом начнется ее автоматическое воспроизведение.
— Если кассета уже была загружена,то для выбора источника нажмите кн. SOURCE для выбора TAPE.
2.Для перемотки кассеты вперед/назад используйте кн.
/
соответственно.
При повторном нажатии данной кнопки происходит выбор:
FF — обычная перемотка, F-MS — поиск последующей/предыдущей композиции,
— Поиск можно остановить нажатием кн. BAND.
III.РЕЖИМЫ ПРИЕМНИКА.(стр.7-15)
местный прием:
— данная функция позволяет найти только местные станции с максимальным уровнем сигнала.
— Для активации системы нажмите коротко кн. LOCAL/BSM.
BSM — поиск:
— Режим автоматического поиска и фиксации в памяти лучших станций.
При этом распределение в памяти происходит в зависимости от уровня сигнала по мере убывания.
— Для активации данной системы нажмите кн. LOCAL/BSM в течении не менее 2 сек.
RDS — РАДИОИНФОРМАЦИОННАЯ СИСТЕМА
— Некоторые радиостанции в диапазоне FM помимо обычных передач транслируют программы со специальным кодом распознавания, позволяющим осуществить текстовый режим, присвоить имя, осуществить легкий поиск. Здесь вы можете получить самую свежую информацию на различные темы.
— Распознаются 3 вида информации RDS:
RT — радиотекст (текстовая информация на дисплее).
RS — информация о названии программы
PTY — тип кода распознавания программы.
— Существует множество кодов распознавания PTY:
| NEWS | новости — которкие сообщения на разные темы |
| AFFAIRS | дорожные новости — сводки на дорогах |
| INFO | общая информация |
| SPORT | все о спорте |
| EDUCATE | образовательные программы |
| DRAMA | драма — трансляция концертной музыки |
| CULTURE | культура, религия, философия, театр, языки. |
| SCIENCE | наука — новости науки и техники |
| VARIED | разное — резговоры, игры, интерьвью, юмор |
| POP M | поп-музыка новости поп-музыки |
| ROCK M | рок-музыка — новости рок-музыки |
| MOR M | дорожная музыка — легкая музыка с продолжительностью менее 5 мин. |
| LIGHT M | легкая классическая музыка |
| CLACCICS | серьезная классическая музыка и симфонические оркестры |
| OTHER M | другая музыка — джаз, кантри, фольклор |
| ALARM | экстренные сообщения |
— Для вызова информации PTY нажмите повторно кн.REG для выбора:
имя станции,PTY-код распознования,частота трансляции.
При этом информация PTY выдается в течении 8 сек.
— Для автоматического поиска программ одного типа PTY используйте функцию AF-поиск альтернативной частоты. При этом если трансляция программы прерывается,то происходит поиск ближайшей программы RDS с максимальным уровнем сигнала.
— Для активации данной функции нажмите кн. TA в течении не менее 2 сек. Для отключения нажмите повторно.
— Для поиска всех программ,транслирующихся в системе RDS используется функция PI-SEEK.При этом поиск осуществляется до ближайшей программы со средним уровнем сигнала.
— Для автоматического поиска всех программ используется функция AUTO-PI-SEEK. При этом происходит фиксация в памяти для быстрого поиска в последующем.
— Для поиска исключительно региональных программ используется режим REG.Для активации данной системы нажмите в течении не менее 2 сек. соответственную кнопку(стр.10).
— Для автоматического перехода к трансляции экстренной передачи в системе RDS используется функция ТА. При этом по окончании трансляции данной программы происходит автоматический возврат к предыдущему источнику.
Для активации данной системы :
1. Найдите станцию в режиме TP или EON TP(экстренные сообщения), что отразится на дисплее.
2. Нажмите коротко кн. TA.
Для отключения данной функции нажмите кн. ТА повторно. При этом произойдет возврат к прерванному источнику.
— Для настройки уровня громкости TA-программы используйте кн. VOL+/-
— Для звуковой сигнализации наличия экстренной информации используется функция TP-ALARM.
При этом при отсутствии информации через 10 сек. будет дан звуковой сигнал, а через 30 сек. произойдет поиск альтернативной программы.
— Для поиска программы по коду распознования PTY:
1. В течении 2 сек. нажмите кн. PTY.
2. В течении 5 сек. выберите тип передачи при помощи кн. SELECT .
3. В случае если данный тип программы не обнаружет, то происходит переход к нормальной индикации дисплея.
— Если необнаружена данная программа, то отразится на дисплее
NOTFOUND в течении 2 сек., а далее приемник перейдет к нормальной трансляции.
IV. РЕЖИМЫ МАГНИТОФОНА (стр.16)
режим повторного воспроизведения:
Для автоматического повтора воспроизведения какой-либо композиции,нажмите в процессе ее прослушивания кн. PTY.
Для отключения функции нажмите данную кн. повторно.
Для автоматического воспроизведения всех имеющихся композиций,
по 12 сек. каждую нажмите кн.5. Для отключения нажмите повторно.
режим активации приемника:
Для автоматического включения приемника во время перемотки кассеты, нажмите кн.6. Для отключения нажмите повторно.
V. ЭКВАЛАЙЗЕР(стр.17-20)
выбор настроек памяти:
В памяти прибора заложены настройки звучания по стилям музыки.
Их выбор происходит повторным нажатием кн.EQ:
CUSTOM — личная настройка.
EQ FLAT — эквалайзер отключен,
S-BASS — режим усиления низких частот.
ручная настройка звука:
1. Для входа в меню настройки нажмите кн.А (для выхода из меню нажмите кн.В).
2. Далее последовательным нажатием кн.»А» выберите режим настройки, а далее отрегулируйте уровень при помощи кн. верх/низ, лево/право
FAD — регулировка баланса между передними и задними акуст. системами.
Производится при помощи кн. верх/низ.
(для регулировки баланса между левыми и правыми а.с. в данном режиме настройки используйте кн. лево/право);
EQ L — регулировка диапазона низких частот;
EQ M — регулировка диапазона средних частот;
EQ H — регулировка диапазона высоких частот;
LOUD — тонкомпенсация(для усиления объемности звучания и уровня частот) При помощи кн. лево/право происходит включение данного режима, а далее при помощи кн. верх/низ регулировка уровня, где MID-средний, HI-высокий;
FIE — функция распределения частотных диапазонов между а.с. (на передние а.с. выделяются высокие и средние частоты, а на задние а.с. — диапазон низких частот). При помощи кн. верх/низ происходит включение данного режима, а далее при помощи кн. лево/право регулировка уровня в диапазоне 100, 160 и 250Гц;
SLA — установка фиксированного уровня громкости для каждого источника. Для этого установите уровень громкости прослушиваемоего сигнала, далее при помощи кн. верх/низ включите данный режим и отрегулируйте уровень.
— выбранная вами «личная настройка» звука будет автоматически заноситься в память,с целью ее последующего быстрого вызова нажатием кн.EQ в позиции CUSTOM.
VI. МЕНЮ УСТАНОВКИ (стр.22-23)
— для установки действия отдельных режимов введено дополнительное подменю.
1. Отключите прибор нажатием кн. SOURCE в положение OFF.
2. Вход в данное меню производится нажатием кн.А не менее 2 сек.
3. Далее при помощи кн.А выберите функцию настройки.
4. Включите выбранную функцию.
5. Для выхода из меню нажмите кн.В.
в меню установки осуществляется : включение режимов работы приемника в системе RDS — «AUTO PI-SEEK» (описано выше);
— регулировка частотного шага при поиске в диапазоне FM (требуется при включенных системах AF и TA). Смена шага происходит с 50кГц на 100кГц.Для этого при помощи кн.А выберите режим FM, а далее при помощи кн. лево/право выберите шаг.
Компания Pioneer Pump Inc.(США) совместно с Европейским подразделением Pioneer Pump Ltd. (Великобритания) являются международной производственной корпорацией мирового класса, выпускающей самый широкий спектр высокопроизводительных самовсасывающих насосов.
Google PageRank: 2 из 10
Компания Pioneer Pump Inc.(США) совместно с Европейским подразделением Pioneer Pump Ltd. (Великобритания) являются международной производственной корпорацией мирового класса, выпускающей самый широкий спектр высокопроизводительных самовсасывающих насосов.
Google PageRank: 0 из 10 Яндекс ТИЦ: 0
Интернет магазин автомагнитол Pioneer
Google PageRank: 0 из 10 Яндекс ТИЦ: 20
Pioneer LX608D — топовая модель класса Hi-End Pioneer LX-608D идеально подходит для больших помещений с расстоянием до экрана четыре и более метров. Невероятная четкость изображения достигается за.
изображения , экрана , видео , dvd
Рейтинг Alexa: #4,055,176 Google PageRank: 0 из 10
Производство устройств для штатных аудиосистем автомобилей, mp3, usb flash, iPhone, iPod, iPad, чейнджер, сабвуфер, усилитель, рулевое управление, оптический интерфейс, контроллеры усилителя, расширение функционала.
Рейтинг Alexa: #2,987,932 Google PageRank: 0 из 10 Яндекс ТИЦ: 30
blu-ray , gps , навигация , автомобильные , системы
Рейтинг Alexa: #234,909 Google PageRank: 4 из 10
Мебельная компания осуществляет производство мебели на высококлассном оборудовании с применением минимальной доли ручного труда, что позволяет обеспечить высокое качество нашей продукции.
Рейтинг Alexa: #2,314,771 Google PageRank: 0 из 10 Яндекс ТИЦ: 20
Интернет-магазин Pioneer-Online — все последние новинки, большой ассортимент техники Пионер, скидки постоянным клиентам!
Рейтинг Alexa: #878,312 Google PageRank: 0 из 10 Яндекс ТИЦ: 20
Авто-магнитолы . Авто-магнитолы, CD, DVD и MP3 проигрыватели, автомагнитолы, ресиверы ведущих производителей
авто , автомобиль , магнитола , авто-магнитола , музыка
Google PageRank: 0 из 10
Сервисный центр pioneer Москва
Рейтинг Alexa: #6,497,483 Google PageRank: 0 из 10 Яндекс ТИЦ: 30
Рейтинг Alexa: #8,491,831 Google PageRank: 0 из 10 Яндекс ТИЦ: 0
Official site of the creative association LAST PIONEER
Google PageRank: 0 из 10
Информацинный портал — автомобильные GPS навигаторы известных производителей Pioneer, Garmin, Explay, Texet. Скачать бесплатно карты, посмотреть новости, обзоры и другую информацию о GPS навигаторах.
авто , gps , навигаторы , explay , garmin
Google PageRank: 0 из 10 Яндекс ТИЦ: 10
Google PageRank: 0 из 10
Google Тренды это диаграмма для отслеживания сезонности ключевых слов. Этот график позволяет лучше понять сезонное изменение полулярности запросов по определенной тематике.
Значения приведены относительно максимума, который принят за 100. Чтобы увидеть более подробную информацию о количестве запросов в определенный момент времени, наведите указатель на график.
Функции TA, PTY и AF в автомагнитоле
Во время поездок на автомобиле, многие привыкли использовать мультимедийную систему для проигрывания аудиофайлов. Но в некоторых транспортных средствах такая опция просто не предусматривается. В деле всегда может выручить радиоприемник, который точно найдется в любом авто. Но даже при использовании такого простого устройства могут возникать некоторые сложности.

Рассматривать причину заиканий следует в свете 3 малоизвестных обычному автомобилисту функций, которые предусмотрены практически в каждой автомагнитоле
Радиоприемник в автомобиле — не самое технологичное решение, особенно если речь идет о современном транспорте. Однако, такие системы при отсутствии Интернета и доступа к Сети могут скрасить время пребывания за рулем. Но даже в радиоприемнике порой можно замечать некоторые ошибки.
Многие могли сталкиваться с ситуациями, когда во время прослушивания радиостанции запись прыгает с одного места на другое, будто диджей намеренно меняет дорожку трека. Никакой проблемы в данном случае нет, а само явление объясняется очень просто.
Рассматривать причину заиканий следует в свете 3 малоизвестных обычному автомобилисту функций, которые предусмотрены практически в каждой автомагнитоле. Речь идет о системах, которые на магнитоле обозначаются аббревиатурами TA, PTY и AF. В России об этих функциях практически не знают, из-за чего и не используют. Главная особенность заключается в том, что все 3 кнопки располагаются рядом друг с другом.
TA можно расшифровать как «Traffic Announcement». В переводе на русский это «оповещение о дорожной обстановке». Если включить данную функцию, автомобильная магнитола будет в автоматическом режиме переключаться на частоту оповещений о ситуациях по пути вашего следования. Речь идет о таких обстоятельствах, как пробки, аварии, объезды, дорожные работы и прочее.

Если активировать данную функцию, автомагнитола будет самостоятельно искать альтернативную частоту. Происходит это в том случае, если ухудшается сигнал связи
PTY — «Programm Type». Данная функция может сортировать радиостанции по определенному критерию. К примеру, система может показывать список радиостанций, на которых проигрывается рок-музыка, или волны, на которых оповещается классика.
AF — «Alternative Frequencies». Если активировать данную функцию, автомагнитола будет самостоятельно искать альтернативную частоту. Происходит это в том случае, если ухудшается сигнал связи. Именно эта функция относится к представленной выше ситуации.
Представим, что автомобилист передвигается по дороге и прослушивает радиостанцию на несущей частоте. Когда транспортное средство проезжает определенную зону, прием может ухудшаться. Это происходит, если на одном участке вещают сразу 2 вышки данной радиостанции в разных городах. Автомагнитола с включенной функцией AF начинает самостоятельно выбирать вышку с более качественным сигналом.

Избавиться от такого эффекта тоже можно. Для этого достаточно отключить функцию AF
Не стоит полагать, что вышки в разных городах вещают синхронно. Разница в эфире может находиться в пределах 2-10 секунд. Именно поэтому можно наблюдать скачки в проигрывании музыки. Не трудно догадаться, что избавиться от такого эффекта тоже можно. Для этого достаточно отключить функцию AF. Практика показывает, что в пограничных зонах такая опция является лишней и мешает комфорту.
Данные кнопки появились еще задолго до современных цифровых технологий. Согласно истории, они нормально работали только на территории США и Европы. В современных условиях пользы от данный опций нет, поэтому можно смело обходиться без них.
Итог. Если в процессе проигрывания радиостанции запись перескакивает назад или вперед, это может говорить об активированной функции AF. Ее можно отключить на консоли автомагнитолы.
Похожие публикации:
- Закисло сцепление что делать
- Звонкий что может быть
- Как смазывается тнвд
- Какую резину ставят на форд фокус
Управление моторами постоянного тока с помощью Python на Raspberry Pi
В этом уроке я покажу, как подключить двигатели к вашему Raspberry Pi. Это позволит в реальном мире построить робот, включить вентилятор в жаркий день или даже бросить угощение вашей кошке или собаке, пока вы отсутствуете.
Задача
Мы планируем подключить один или два мотора к Raspberry Pi с минимальным количеством компонентов. Когда мы соберём электронику на макете, я покажу, как ей управлять, используя Python, чтобы сначала запустить двигатель, а затем добавить управление для изменения направление вращения, чтобы мы могли вернуться назад.
Во время урока потребуется внимание и немного смелости, особенно если вы новичок в коннекторах GPIO. Хочу подчеркнуть, что я не несу ответственности за любой ущерб, причинённый вашему Raspberry Pi и/или компонентам.
ВАЖНО: не подключайте двигатель, независимо от того, насколько он мал, прямо на Raspberry Pi, он повредит вашу Raspberry Pi.
Основной процессор может подавать мощность, достаточную только для освещения светодиода, примерно 20 мА. Мотор будет потреблять ток не менее 400 мА, чтобы начать вращение.
Требования
Чтобы запустить двигатель, вам понадобятся:
- Raspberry Pi с SD-картой, предварительно установленной с помощью Raspbian
- Breadboard для сборки всего
- Микросхема драйвера двигателя L293 или SN755410 (в данном руководстве я буду упоминать как L293D)
- Кабели-перемычки, чтобы всё соединить (мужское к мужскому и мужское к женскому)
- Один или два DC двигателя, рассчитаных на 6 В
- 4x AA батареи и футляр
GPIO пины
Если вы ещё не присматривались к Raspberry Pi раньше, теперь, возможно, лучшее время его разглядеть. Имеется 26 выводов, сгруппированных в два ряда по 13 и они называются General Purpose Input Output header или GPIO для краткости. Это сочетание четырех силовых контактов, пяти контактов заземления и 17 пинов данных.

Некоторые из этих pins данных имеют дополнительные функции, такие как i2c bus, SPI bus и последовательные разъемы UART, все из которых могут подключаться к другому оборудованию, чтобы позволить Raspberry Pi общаться с такими элементами, как Arduino, Analogue to Digital Convertor (ADC) или дополнительные платы, такие как PiGlow или PiFace.
СОВЕТ: работайте с выводами GPIO, когда Pi отключен, так как любое случайное соединение (или короткое замыкание) 2 контактов может привести к повреждению Raspberry Pi.
Сборка контура
Подключение питания и заземления
Это важно сделать, пока питание Raspberry Pi отключено, поскольку вы хотите избежать короткого замыкания каких-либо разъёмов по ошибке.
Во-первых, подключаем силовые и заземляющие провода. Как и в большинстве проектов в электронике, всё, что соединяется между собой, потребует общей основы. Это показано чёрными проводами.

Земля на Raspberry Pi — физически pin 6. На рисунке 1, начиная с верхнего левого угла с pin 3V3, считать слева направо, так что 5V — это pin 2, GPIO 2 (обозначен 2) — это pin 3, и далее.
Чтение контактов на микросхемах Integrated Circuit (IC) легко сделать, установив метку или точку слева, так что, начиная с нижнего левого угла будет pin 1.

Добавление проводов данных
Теперь добавьте три провода от контактов GPIO к L293D.

- GPIO 25–Pin 22 > L293D–Pin 1
- GPIO 24–Pin 18 > L293D–Pin 2
- GPIO 23–Pin 16 > L293D–Pin 7

- Motor–wire 1 > L293D–pin 3
- Motor–wire 2 > L293D–pin 6
Чрезвычайно важно, чтобы вы дважды проверили каждое соединение перед установкой батарей. Только когда вы уверены, что всё на месте, подключите провода батареи к электрическим шинам макета.
Добавить второй двигатель (дополнительно)
Одна из замечательных особенностей L293D состоит в том, что он может обрабатывать два двигателя независимо, и каждый может работать на разных скоростях или направлениях. Используя этот IC, можно создать двухколесный робот, способный поворачиваться, легко перемещаясь вперёд и назад.
Добавление второго двигателя включает всего три дополнительных провода и сам двигатель.

- GPIO 11–Pin 23 > L293D–Pin 9
- GPIO 9–Pin 21 > L293D–Pin 10
- GPIO 10–Pin 19 > L293D–Pin 15
Включение
Важно проверить все проводки перед добавлением любого источника питания, так как некоторые провода могут немного запутаться, поэтому легко пропустить соединение и отправить 5V на 3.3V Raspberry Pi.
Всегда проверяйте электропроводку снова и снова!
Если вы ещё не установили SD-карту для своего Pi, то сначала стоит понять, как это делается, прочитав How to Flash an SD Card for Raspberry Pi.
Со свежеприготовленной SD-картой Raspbian подключите Raspberry Pi как обычно и загрузитесь.
Добавьте батареи, следя за направлениями (длинные полосы сверху и снизу, если есть), поскольку вы хотите, чтобы чёрный провод соединялся с землей, а красный провод — с плюсом или источником только чипа.
Следующая задача — сказать Raspberry Pi , что мотор или два, был подключен. Для этого я использую язык под названием Python. Он устанавливается на Raspbian бонусом. Если вы используете другую операционную систему, такую как Arch или PiDora, проверьте, доступен ли RPi.GPIO.
Тестирование
Чтобы заставить двигатели работать, дважды щёлкните LXTerminal на рабочем столе, чтобы открыть окно терминала. Здесь вы будете писать код Python, используя программу под названием Nano. Nano — это текстовый редактор, похожий на Notepad или TextEdit, я научу вас некоторым командам, если вы с ними не знакомы.
Чтобы включить двигатель в течение двух секунд, используйте следующий код:
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BOARD)
Motor1A = 16
Motor1B = 18
Motor1E = 22
GPIO.setup(Motor1A,GPIO.OUT)
GPIO.setup(Motor1B,GPIO.OUT)
GPIO.setup(Motor1E,GPIO.OUT)
print "Turning motor on"
GPIO.output(Motor1A,GPIO.HIGH)
GPIO.output(Motor1B,GPIO.LOW)
GPIO.output(Motor1E,GPIO.HIGH)
sleep(2)
print "Stopping motor"
GPIO.output(Motor1E,GPIO.LOW)
GPIO.cleanup()
Первые две строки говорят Python, что необходимо в программе.
В первой строке вы задаёте доступ к модулю RPi.GPIO. Этот модуль выполняет всю тяжёлую работу, связанную с поворотом контактов GPIO on и off на Raspberry Pi.
Вторая строка выводит модуль time в sleep, чтобы сделать pause, давая script время выполнить определённое действие и оставляя мотор включенным на несколько секунд.
Функция setmode указывает RPi.GPIO нумерацию на плате Raspberry Pi. Цифры 16, 18 и 22 сообщают Python номера pins, связанных с двигателями.
Вы можете указать L293D повернуться в одном направлении через pin A, в другом — pin B. Чтобы включить on, используйте pin Enable, обозначенный E в тестовом сценарии — это pin 22. Я расскажу об этом чуть позже.
Наконец, укажите Raspberry Pi все выходы, которые делаются с GPIO.OUT.
Когда скрипт настроен, Raspberry Pi готова включить моторы. Он включит несколько выводов, подождет две секунды, затем выключит их, как показано в оставшейся части script.
Сохраните и выйдите, нажав CTRL-X, в нижней части сообщения появится запрос подтвердить изменения. Нажмите Y и Enter для подтверждения. Теперь вы снова в командной строке, чтобы запустить script и увидеть, как вращается двигатель.
sudo python motor.py
Если двигатель не вращается, проверьте проводку или батареи. Отладка и выяснение причин могут раздражать, но это полезный шаг в изучении нового!
Теперь поворачиваем
Блестяще, когда мотор крутится, но ещё лучше заставить его повернуть, я покажу вам, как это сделать.
Ничего не делаем с проводкой, чисто Python. Это достигается путём создания нового script по имени motorback.py. Чтобы создать script в Nano, введите команду:
Введите следующий код:
import RPi.GPIO as GPIO
from time import sleep