Použití python knihovny pro ovládání tuneru FM

Pro ovládání tuneru z python-u je možné již nyní využít knihovnu pro jazyk python. Jak jí inicializovat a pracovat s ní popisuje tento článek.

Předpoklady
Pro použití knihovny je nezbytná přítomnost python modulů “RPi.GPIO” a “smbus.SMBus”. V základní instalaci Raspbian-u je první již přítomen, jak nainstalovat a zprovoznit druhý popisuje článek Zprovoznění tuneru na čisté instalaci Raspbian-u.

Pro kontrolu, zda jsou moduly přítomny a dokáží se k periferiím připojit, stačí spustit v terminálu konzoli pythonu

a zadat do ní příkazy

pokud se po “odentrování” nevypíše žádný “ImportError” ani “IOError”, vše funguje. Konzoli je možné opustit příkazem “quit()”.

Použití
Naklonujte si přes git repozitář s knihovnou nebo si ho stáhněte jako zip.

Pro ovládání tuneru příkazy spusťte ve složce s knihovnou konzoli pythonu

Příkaz “sudo” je zde nezbytný, protože python potřebuje práva root-a pro přístup k I2C sběrnici a I/O pinům. Pokud již pracujete pod uživatelem “root”, vynechte příkaz “sudo”.

Nejprve je nutné importovat knihovnu, proto do konzole zadejte

a následně inicializujte novou instanci přes

kde nahraďte:

  • “gpio_en” číslem GPIO pinu, na který je připojen pin “EN” tuneru
  • “gpio_stby” číslem GPIO pinu, na který je připojen pin “ST-BY” tuneru
  • “i2cbus” číslem I2C sběrnice, ke které je tuner připojen (u nových RasPI je to sběrnice 1, u starších 0 – model B v1)
  • “gpio_mode_bcm” – nastavte na “True”, pokud jste čísla pinů výše zadali coby skutečné GPIO piny procesoru – pokud jste použili číslování dle pinů GPIO lišty (dle dokumentace RPi.GPIO modulu, sekce “Pin numbering”), je možné tento parametr zcela vynechat, “False” je výchozí hodnotou

Pro vytvoření instance s použitím číslování GPIO lišty, pinu 11 pro “EN”, 12 pro “ST-BY” na novějších RasPI (s použitím I2C sběrnice 1) tedy zadejte příkaz

Konkrétně u RasPI B v2 (nikoliv RasPI 2 B !) je na GPIO lištu na pin 11 vyveden z procesoru GPIO17, na pin 12 pak GPIO18 a I2C na GPIO liště je 1 – s použitím číslování GPIO dle procesoru je tedy příkaz výše u této verze RasPI ekvivalentní s příkazem

Nyní již můžeme používat metody, které knihovna nabízí. Každá metoda vždy vrací aktuální nastavení. Pokud jen chcete zjistit aktuální nastavení, zavolejte metodu bez parametrů (příp. s hodnotou “None” u parametrů, které měnit nechcete). Nicméně, vrácení aktuálního nastavení je u všech metod zatím pouze softwarové.

Pro zapnutí napájení do desky slouží příkaz

Následně je třeba naladit tuner, zvýšit hlasitost DSP a zapnout koncový zesilovač příkazy

Jak můžete vidět, je odděleno (od verze v0.2) ovládání jednotlivých částí desky – samotná instance “Board” může ovládat napájení a koncový zesilovač. Dále pak poskytuje ve svých proměnných DSP a TUNER instance tříd zodpovědných za ovládání těchto částí desky.

Naladění na 95.0 MHz s úrovní hlasitosti 25 tedy zajistí příkazy

Všechny instance si udržují aktuální nastavení desky / částí, které ovládají. Toto nastavení se posílá při každém zapnutí desky. Je tedy možné nastavit parametry ještě před zapnutím a po zapnutí mít již vše nastavené. Jedinou výjimkou je ovládání koncového zesilovače – tento je po zapnutí vždy vypnut a je nutného ho zapnout příkazem “B.mute(False)”.

Stejně tak jednoduše je s pomocí knihovny možné ovládat všechny možnosti, které deska nabízí, s výjimkou pokročilejší práce s tunerem. Tato se teprve připravuje a ačkoliv se jednotlivé posílané byty sestavují z instančních proměnných, není k nim přístup přes jednoduché metody, které by zajistily jejich platné kombinace. Aktuálně se chová, jako když má pevně dané následující byty:

  • “0x7A 0x01” pro TEA6825
  • “freq-low freq-high 0x37 0x00” pro TEA6810

DSP je možné ovládat kompletně přes jednoduché instanční metody.

Všechny dostupné metody:

Některé metody přijímají parametr “dB” – tyto ovládají hlasitost, zisk, apod. Pokud tento parametr není předaný nebo má hodnotu “False”, metody přijímají a vrací nastavení v krocích. Krok 0 vždy znamená nejnižší hlasitost, žádný zisk nebo střed rozsahu pro hloubky či výšky, apod. Počet kroků je počtem možných kombinací, které čipy přijímají. Pro zjištění krajních mezí je možné vypnout koncový zesilovač nebo i celou desku a nastavit velmi vysokou/nízkou hodnotu. Metody tyto hodnoty omezují do možného rozsahu, nastaví a coby aktuální nastavení tedy vrátí nejvyšší/nejnižší možnou hodnotu. Pokud má parametr “dB” hodnotu “True”, metoda přijímá a vrací nastavení v decibelech dle hodnot v datasheet-ech čipů.

Pro podrobnější informace o metodách je ve zdrojovém kódu u každé malý komentář, co dělá a jaké parametry přijímá.

Pro ukončení konzole pythonu použijte příkaz

Tím dojde i k vypnutí desky s tunerem (resp. k tomuto dojde ve chvíli, kdy python maže vytvořenou instanci “B”).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.