20.03.2022, 01:36
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)
nokia1.JPG (Größe: 28,65 KB / Downloads: 316)
nokia2.JPG (Größe: 39,27 KB / Downloads: 316)
nokia3.JPG (Größe: 37,01 KB / Downloads: 316)
in der iRadioMini/main/modules/display/lvgl/displayd_lvgl.c das Nokia Display ergänzen:
Die Tastenabfragen durch Auskommentieren dieses Blockes deaktivieren:
diese 3 Blöcke ebenfalls auskommentieren oder löschen:
die Auflösung des LCD anpassen:
die Ausgabetexte für die kleine Auflösung anders positionieren:
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)
nokia1.JPG (Größe: 28,65 KB / Downloads: 316)
nokia2.JPG (Größe: 39,27 KB / Downloads: 316)
nokia3.JPG (Größe: 37,01 KB / Downloads: 316)
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);
Gruß,
Jupp
-----------------------------
was du baust ist immer mit dir verbunden
(Lego)
Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Jupp
-----------------------------
was du baust ist immer mit dir verbunden
(Lego)
Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)