Arduino Touchscreen FM Radio

Поделиться
HTML-код
  • Опубликовано: 11 апр 2017
  • Arduino Touchscreen FM Radio
    In this video we put together a touchscreen FM radio. For the receiver we are using the Si4703 breakout board from Silicon Laboratories. In addition to just being an FM receiver, this board is capable of receiving RDS and RBDS signals.
    For the Touchscreen we are using a 2.8" TFT LCD from Elegoo. It uses the il9304 chipset and is somewhat compatible with the Adafruit libraries. The only downside to using this display is that it is a shield that uses all the GPIO pins of an UNO. So this project will only work with a Mega.
    We've coded the sketch so that the screen displays the frequency with up and down buttons next to it. The second line displays the volume with mute,up and down buttons next it it. At the bottom we have made provisions for RDS info to be displayed.
    Si4703 breakout board: amzn.to/2oXzFYb
    Elegoo 2.8" TFT LCD: amzn.to/2ooEQNW
    All of my sketches are available here: www.dropbox.com/sh/m6c40pu99f...
    ~-~~-~~~-~~-~
    Please watch: "Diodes: The basic building block of all digital circuits"
    • Diodes: The basic buil...
    ~-~~-~~~-~~-~
  • РазвлеченияРазвлечения

Комментарии • 34

  • @vivekvenkatsubramaniam437
    @vivekvenkatsubramaniam437 7 лет назад +3

    Man, your videos just keep getting better and better. You're awesome!

    • @learnelectronics
      @learnelectronics  7 лет назад +2

      Vivek Venkat Subramaniam thank you for the kind words. getting comments like this keeps me working hard to produce new videos every day.

  • @gartmorn
    @gartmorn 7 лет назад

    I absolutely love this circuit. Will have to get the parts now and try it. I have the board already on order from China but will need to get a screen. Would make a great radio for my campervan with a Bluetooth speaker incorporated!

  • @maxthewincat
    @maxthewincat 6 лет назад

    Can't wait to see RDS implementation!

  • @legoscratch
    @legoscratch 7 лет назад +1

    I have this exact Tft! I connected it to an atmega1284p so I had spare pins. This display DEFINITELY uses the ili9341 driver though and is actually fully compatible with the adafruit Tft LCD and gfx libraries. I was planning to make this project with a tea5767 but couldn't get it working so I will definitely check out the module you are using in this video

  • @BarefootBeekeeper
    @BarefootBeekeeper 6 лет назад

    Nice work!

  • @n0ukf
    @n0ukf 6 лет назад

    Where can I find the Si4777 on a board like this?

  • @100METEO
    @100METEO 6 лет назад

    I have a problem. After I have lifted the sketch the radio is displayed but only briefly and then the screen is white again ??

  • @uengel5755
    @uengel5755 4 года назад +1

    Hi,
    can you send me the links to the used librarys? Maybe this is my mistake and then I can fix my problems

  • @deathtospi9072
    @deathtospi9072 5 лет назад

    I think; You must move the base(s) of the triangle(s) a little but excellent work!

  • @uengel5755
    @uengel5755 4 года назад

    Hi,
    After starting with my first step tutorial from instructables with Si4703 I tried to realize your tutorial with touchscreen.
    First I make the changings in the Si4703.cpp:
    // int STATUS_LED = 13;
    int resetPin = 52;
    // SDA/A4 on Arduino
    int SDIO = 20;
    // SCL/A5 on Arduino
    int SCLK = 21;
    After this: Compiling and upload to me MEGA. No mistakes and the upload works.
    But I only get a white display. No buttons???
    Do you know this problem?

  • @eduprometeu
    @eduprometeu 2 года назад

    Pergunta: Se eu carregar esse mesmo sketch no Arduino Uno ele dará erro de sketch muito grande ( devido o tamanho do codigo)?

  • @uengel5755
    @uengel5755 5 лет назад

    Hi, very cool project. I miss the RDS-part. I cannot find the promissed video. Can you help me with this part?

  • @electronichannelgreece
    @electronichannelgreece 6 лет назад

    Dear friend happy new year and I want to learn something else,my bandscan here in Greece is from 87.5-108 so it is useless to have 87.0 or 108.6 did you set bandscan in your code to help me to set in Greece bandscan?Second I want to learn if you have manual scan or automatic scan station.

  • @peterensinger1770
    @peterensinger1770 2 года назад

    Hi I have built this radio as part of a valve receiver project and it works great but I would like to get the RDS functionality working. are you still going to do the video of the implementation of the RDS Please.

  • @paranormalitcresearch
    @paranormalitcresearch 4 года назад

    If you have the purple version of si4703 and a Mega, the library is different, (not the breakout version), and won't compile with new pin settings. You won't have to change the library then.

  • @uengel5755
    @uengel5755 4 года назад

    Lets start the next step: The RDS implementation! Can you help me with this?

  • @uengel5755
    @uengel5755 4 года назад

    Hi,
    I fixed my problems and it works great.
    First fix: The librarys for TFT
    #include // Core graphics library Elegoo-TFT
    #include // Hardware-specific library Elegoo-TFT
    second fix: The Pins for Mega (changes in Code):
    uint8_t resetPin = 52;
    uint8_t SDIO = SDA;
    int SCLK = 21;
    SI4703 radio(resetPin, SDIO); //create instance of SI4703 called radio
    Lets start the next step: The RDS implementation! Can you help me with this?

  • @tempertimetunes365
    @tempertimetunes365 7 лет назад

    Hello sir can I please get the code for this Awesome project?

  • @electronichannelgreece
    @electronichannelgreece 6 лет назад

    Hi friend I wanna copy your radio.I 'll try to find the RDS value.I purchased si4703 and tft lcd but my si4703 model request for 3.3 volts but 3.3 volts request and tft lcd so i should connect them in parallel connection with wires so I connect all tft lcd pins in arduino with wires.Now I wanna learn if your Arduino Mega is 2560 model.I wanna ask if I find the code for RDS to make my own video with RDS radio or send code with RDS value here in comments to help your the audience asking for an RDS tuner.

  • @martinmrnak9435
    @martinmrnak9435 7 лет назад +1

    Touchscreen... Caaause we're touchin'
    Awesome videos btw, always something new to learn.

  • @electronichannelgreece
    @electronichannelgreece 6 лет назад

    Dear friend I tasted this code and it is true.I wanna to make this radio and I wonder if I go to a city and hear a station. This finds the station but can automatically write the station's RDS. For example, if I go to Athens and I put 102.2 it will automatically write to Xxx -> > and if I turn it to 94.9 will write "RYTHMOS" or does not have such a function? If it does not have how can I put it?

    • @learnelectronics
      @learnelectronics  6 лет назад

      +nick sbilliris I did not add that feature, but it is in the library, just have a look at the .h file.

    • @electronichannelgreece
      @electronichannelgreece 6 лет назад

      Can you help me to add?

    • @electronichannelgreece
      @electronichannelgreece 6 лет назад

      Can I add it and how?What can I copy in to your file?

    • @learnelectronics
      @learnelectronics  6 лет назад

      +nick sbilliris No, I'm sorry, I wish I could.

    • @electronichannelgreece
      @electronichannelgreece 6 лет назад

      Ok i think that I try to find it when ni buy all materials.Maybe I find it and I wish to see my comment some another people and can help me.Thanks.I putted like.

  • @uengel5755
    @uengel5755 4 года назад

    Hi,
    on serial monitor I get:
    Write Fail:2
    Write Fail:2
    Write Fail:2
    Write Fail:2

    • @iamwally
      @iamwally 2 года назад

      I get same error write fail:2 how did you fix that?

  • @j.clowers7223
    @j.clowers7223 6 лет назад

    Wth...why have i not seen this one?...ugh

  • @uengel5755
    @uengel5755 5 лет назад

    Du hast sicherlich schon mehr Erfahrungen mit dem Si4703 als ich.
    Bevor ich mich mit deinem Projekt beschäftigen wollte, habe ich noch etwas leichteres zum Einstieg gefunde. Dachte ich !!!
    www.instructables.com/id/How-to-use-the-Si4703-FM-Radio-board-with-RDS-Ardu/
    Leider bekomme ich dieses nicht zum Laufen.
    Als Library für den Si4703 habe ich die von Gitghub genommen: Whiteneon/Si4703_FMRadio
    Kompilieren und hochladen funktioniert einwandfrei.
    Mein Problem ist, dass im Serieal Monitor leider nach Eingabe z.B. a und kein feedback erfolgt.
    Ich habe dann diverse Serial.print - Marken eingefügt und sehe, dass das Programm in der void setup() vor den Befehlen radio.powerOn();
    radio.setVolume(0);
    stehen bleibt und die void loop() nicht durchläuft. Hier hatte ich am Anfang auch eine Serial.print - Marke eingebaut.
    Hier mein sketch:
    #include
    #include
    const int resetPin = 2;
    const int SDIO = A4;
    const int SCLK = A5;
    Si4703_Breakout radio(resetPin, SDIO, SCLK);
    int channel;
    int volume;
    char rdsBuffer[10];
    char ch;
    void setup()
    {
    Serial.begin(9600);
    Serial.println("

    Si4703_Breakout Test Sketch");
    Serial.println("===========================");
    Serial.println("a b Favourite stations");
    Serial.println("+ - Volume (max 15)");
    Serial.println("u d Seek up / down");
    Serial.println("r Listen for RDS Data (15 sec timeout)");
    Serial.println("Send me a command letter.");
    radio.powerOn();
    radio.setVolume(0);
    Serial.print("Ende setup");
    }
    void loop()
    {

    Serial.print("start loop");

    if (Serial.available())
    {
    ch = Serial.read();
    if (ch == 'u')
    {
    channel = radio.seekUp();
    displayInfo();
    }
    else if (ch == 'd')
    {
    channel = radio.seekDown();
    displayInfo();
    }
    else if (ch == '+')
    {
    volume ++;
    if (volume == 16) volume = 15;
    radio.setVolume(volume);
    displayInfo();
    }
    else if (ch == '-')
    {
    volume --;
    if (volume < 0) volume = 0;
    radio.setVolume(volume);
    displayInfo();
    }
    else if (ch == 'a')
    {
    Serial.print("a wurde ausgewaehlt");
    channel = 888; // radio1
    radio.setChannel(channel);
    displayInfo();
    }
    else if (ch == 'b')
    {
    channel = 943; // RS2
    radio.setChannel(channel);
    displayInfo();
    }
    else if (ch == 'r')
    {
    Serial.println("RDS listening");
    radio.readRDS(rdsBuffer, 15000);
    Serial.print("RDS heard:");
    Serial.println(rdsBuffer);
    }
    }
    Serial.print("Ende der loop");
    }
    Viele Grüße
    Ulli

  • @carlosbulk
    @carlosbulk 5 лет назад

    Sorry all I can focus on is your breathing sounds