CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Raspberry Pi в роли FM-передатчика


Довольно интересная идея — использовать Raspberry Pi для FM-трансляций.
Причём, для этого проекта не нужно никакое дополнительное оборудования — только сам Raspberry Pi и кусок проволоки, выступающий в роли антенны.

Проволоку (около 20 см длиной) нужно подключить к 4-му контакту интерфейса ввода-вывода (GPIO).
Проволока выступает в роли передающей антенны. Далее, нужно скачать, скомпилировать и установить модуль Pifm.tar.gz.
Вот и всё! Теперь Raspberry Pi может транслировать любой wav-файл формата 44,1 кГц, 16 бит, моно.

sudo python >>> import PiFm >>> PiFm.play_sound("sound.wav")

Теперь, можно включить радиоприёмник, настроить его на частоту 100 МГц и принимать свой сигнал, который различим на расстоянии до 100 метров.

В основе программы, лежит модуляция сигнала на основе внутреннего тактового генератора, работающего на частоте 500 МГц. По-умолчанию, частота делится на пять, поэтому вещание и происходит на частоте 100 МГц (этот параметр можно изменить в настройках).
Модулируемый сигнал из памяти направляется на разъём ввода-вывода и, что удивительно, этой мощности оказывается достаточно для радиовещания.


//
// Set up a memory regions to access GPIO
//
void setup_io()
{
    /* open /dev/mem */
    if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) {
        printf("can't open /dev/mem \n");
        exit (-1);
    }

    /* mmap GPIO */

    // Allocate MAP block
    if ((gpio_mem = malloc(BLOCK_SIZE + (PAGE_SIZE-1))) == NULL) {
        printf("allocation error \n");
        exit (-1);
    }

    // Make sure pointer is on 4K boundary
    if ((unsigned long)gpio_mem % PAGE_SIZE)
        gpio_mem += PAGE_SIZE - ((unsigned long)gpio_mem % PAGE_SIZE);

    // Now map it
    gpio_map = (unsigned char *)mmap(
                   gpio_mem,
                   BLOCK_SIZE,
                   PROT_READ|PROT_WRITE,
                   MAP_SHARED|MAP_FIXED,
                   mem_fd,
                   GPIO_BASE
               );

    if ((long)gpio_map < 0) {
        printf("mmap error %d\n", (int)gpio_map);
        exit (-1);
    }

    // Always use volatile pointer!
    gpio = (volatile unsigned *)gpio_map;


} // setup_io
 


Ссылки:
Turning the Raspberry Pi Into an FM Transmitter
  • +3
  • 12 декабря 2012, 07:31
  • admin

Комментарии (4)

RSS свернуть / развернуть
+
0
прикольная идея
на выходных попробую :)
avatar

source

  • 12 декабря 2012, 08:32
+
0
*здесь должна быть картинка с троллейбусом из буханки хлеба*
И вообще, такое можно и на ардуине какой-нибудь слепить.
avatar

router32

  • 27 декабря 2012, 22:02
+
0
А если включить мозг и хоть и хоть раз в жизни подумать перед тем как писать посты? Прелесть Raspberry Pi в намного большей производительности в отличии от ардуины, на которой никак, вообще никак не выдашь на ногу контролера работающего на частоте 16 МГц сигнал частотой 100 МГц, не говоря уже о модуляции этого сигнала.
avatar

lv333

  • 29 января 2013, 16:21
+
0
Вот бы кто написал скрипт, что бы брать поток интернет-радио и вещать с малины вот таким способом(я бы сам, да мозгов не хватит)))
avatar

scanick

  • 1 июля 2014, 22:26

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.