Sonntag, 20. März 2022

Art-Deco Radio mit iRadioMini

ich will heute mein erstes Selbstbauradio mit Bernhard's iRadioMini-Software vorstellen.

Die Grundkonstruktion stammt von educ8s.tv, der das Gehäuse für ein Arduino-UKW-Radio konstruiert hatte:


 

Die STL-Dateien gibt es hier:

Art Deco FM Radio with Arduino

Ein paar Kleinigkeiten habe ich mit tinkercad geändert. Hauptsächlich Bohrungen für Gewindeeinsätze. Eine Schallwand und ein Innenchassis hab ich mir angefertigt. Das Nokia Display PCD8544 wollte ich beibehalten. Ich hätte auch ein 1,3" OLED mit SSH1106 Controller anpassen können. Ich wollte aber den nostalgischen Flair des Nokia.

Der Ausdruck des Gehäuses ist mit über 8 Stunden recht zeitintensiv. Der erste Versuch ist nicht sonderlich gelungen. Das Gehäuse hatte sich übermässig verformt. Das war aber meine eigene Schuld. Hier ein Bild mit dem 1,3" OLED.

Auch der zweite Druck ist nicht perfekt. Die Front ist etwas vernarbt. Der Flashforge braucht dringend ein neues Druckbett. Aber das Gehäuse ist gerade und masshaltig.

Auch das Chassis druckte ich zweimal, wegen Änderungen des mechanischen Konzeptes. Das TTGO T8 V1.7 Board ist auf eine kleine Lochrasterplatine aufgesockelt. Ich benutzte keine Dupont-Kabel, sondern lötete alle Verbindungen mit flexibler Litze. Der Encoder für die Senderwahl ist nur als einfacher Taster geschaltet und eine Drehbewegung schaltet die playlist immer nur in Vorwärts-Richtung.


 

das ist der aktuelle Stand. Das kleine Loch mittig zwischen den Knöpfen wird noch dem Anschrauben eines kleinen Emblemes dienen.

beim Einbinden des Nokia-Display in die Software hatte ich einige Startschwierigkeiten. Mit massiver Unterstützung von Bernhard ist es dann aber geglückt. Da ich erstmals den internen DAC zur Audioausgabe benutze baute ich mir eine extra toolchain mit der IDF 4.3. Die Version 4.4 unterstützt den internen DAC nicht mehr. Das ursprünglich vorgesehene NF Modul mit TDA2822M ersetzte ich später gegen ein XPT8871 Modul. Kaum zu glauben das ein D-Class Modul weniger Störgeräusche abliefert als ein konventionelles TDA-Modul.

In Kürze die Besonderheiten des Nokia 5110-LCD:

nach der Anleitung von Bernhard ganz normal die lvgl-Bibliotheken installieren.

in menuconfig folgende Einstellungen vornehmen (die PIN-Belegung ist natürlich nicht verpflichtend)

in der iRadioMini/main/modules/display/lvgl/displayd_lvgl.c das Nokia Display ergänzen:

Code:
#if defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820         \
    || defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A    \
    || defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D     \
    || defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306     \
    || defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_PCD8544

Die Tastenabfragen durch Auskommentieren dieses Blockes deaktivieren:

Code:
/* static void btn_event_cb(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * btn = lv_event_get_target(e);
    if(code == LV_EVENT_CLICKED) {
        // Add your btn code here
    }
}
*/

diese 3 Blöcke ebenfalls auskommentieren oder löschen:

Code:

lv_obj_t * btn_next = lv_btn_create(lv_scr_act());
   lv_obj_set_pos(btn_next, 100, 170);
   lv_obj_set_size(btn_next, 60, 40);
   lv_obj_add_event_cb(btn_next, btn_event_cb, LV_EVENT_ALL, NULL);

   lv_obj_t * label = lv_label_create(btn_next);
   lv_label_set_text(label, LV_SYMBOL_NEXT);
   lv_obj_center(label);

   lv_obj_t * btn_prev = lv_btn_create(lv_scr_act());
   lv_obj_set_pos(btn_prev, 20, 170);
   lv_obj_set_size(btn_prev, 60, 40);

   lv_obj_t * label2 = lv_label_create(btn_prev);
   lv_label_set_text(label2, LV_SYMBOL_PREV);
   lv_obj_center(label2);


die Auflösung des LCD anpassen:

Code:
disp_drv.hor_res  = 84;
disp_drv.ver_res  = 48;

die Ausgabetexte für die kleine Auflösung anders positionieren:

Code:

/*Create a widgets on the currently active screen*/
   lv_obj_t * label_prog =  lv_label_create(scr);
   lv_obj_align(label_prog, LV_ALIGN_CENTER, -5, -10);
   lv_label_set_text(label_prog,"P");

   lv_obj_t * label_prog_num =  lv_label_create(scr);
   lv_obj_align(label_prog_num, LV_ALIGN_CENTER, 5, -10);

   lv_obj_t * label_url =  lv_label_create(scr);
   lv_label_set_long_mode(label_url, LV_LABEL_LONG_SCROLL_CIRCULAR);
   lv_obj_set_width(label_url,250);
   lv_obj_align(label_url, LV_ALIGN_CENTER, 0, 5);

Jetzt wo im Groben alles funktioniert kann ich an die Feinheiten gehen.

ich wollte die Anzeige so minimalistisch wie im ersten post auf dem Video, wo einfach nur in großen Buchstaben die Frequenz steht. Den Punkt hab ich jetzt erreicht. Natürlich bin ich mir bewusst dass es als einzige Information nur die Stationsnummer gibt, und dass es bei Stationsnummern über 9 eng auf dem Display wird.

Als Schriftart habe ich per menuconfig Montserrat 46 eingestellt, und die Laufschrift ausgeblendet. Das Nokia 5110 ist ein Dinosaurier, einfarbig und mit einer für heutige Ansprüche klötzchenhafter Auflösung von 84 x 48 Pixel. Dem trage ich hiermit Rechnung. Wenn ich kontrastreiche, gestochen scharfe Informationen in geballter Fülle auf 1,3" haben will entscheide ich mich für ein modernes Display. Bei diesem Radio habe ich mich für die Ausgabe entschieden die ich jetzt realisiert habe.

..und noch ein Bild. Das kleine Pferdchen dient nicht nur der Zierde, sondern gibt dem Chassis mittels einer 2mm Schraube Halt im vorderen Bereich.


 



 









 

Keine Kommentare:

Kommentar veröffentlichen