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


0 комментариев на «“Raspberry Pi в роли FM-передатчика”»

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

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение