{"id":20268801,"url":"https://github.com/allangallop/mini-web-radio-2","last_synced_at":"2025-04-11T03:41:17.535Z","repository":{"id":196336545,"uuid":"691170579","full_name":"AllanGallop/mini-web-radio-2","owner":"AllanGallop","description":"Version 2 of the Hosptial Radio project","archived":false,"fork":false,"pushed_at":"2024-07-06T18:25:55.000Z","size":5419,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T01:41:30.721Z","etag":null,"topics":["charity","esp32","hospitals","internet-radio"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AllanGallop.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-13T16:31:33.000Z","updated_at":"2025-02-06T23:58:05.000Z","dependencies_parsed_at":"2024-07-06T16:25:30.593Z","dependency_job_id":"1d661f57-56aa-4251-8810-ee88d6c2dd31","html_url":"https://github.com/AllanGallop/mini-web-radio-2","commit_stats":null,"previous_names":["allangallop/mini-web-radio-2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanGallop%2Fmini-web-radio-2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanGallop%2Fmini-web-radio-2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanGallop%2Fmini-web-radio-2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanGallop%2Fmini-web-radio-2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AllanGallop","download_url":"https://codeload.github.com/AllanGallop/mini-web-radio-2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248339272,"owners_count":21087213,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["charity","esp32","hospitals","internet-radio"],"created_at":"2024-11-14T12:20:11.179Z","updated_at":"2025-04-11T03:41:17.494Z","avatar_url":"https://github.com/AllanGallop.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Feature_Image](.github/images/feature.png)\n\n# Mini Web Radio 2\n\nOriginally designed as a charity project, the MWR is a simple internet radio based on the ESP32 microcontroller. Version 2 builds upon the [original project](https://github.com/AllanGallop/mini-web-radio) introducing stereo audio, supporting multiple channels and utilises a custom PCB with (mostly) surface mount components.\n\n\u003e Be warned, This project is still in the prototype phase\n\n## Hardware\n\n### Core hardware Components\n\n* Expressif ESP32-S2 (or similar dual core variant)\n* Texas Instruments PCM5102APWR audio stereo dac\n* NXP TDA1308 Class AB Stereo headphone driver\n* PEC12R - 12 mm Incremental Encoder\n* TP4056 Lithium battery charger\n* ME6211C33 500mA LDO regulator\n* CH340C USB-UART\n\n### Schematic\n\n![Schematic](.github/images/schematic.png)\n\n## Construction\n\n### PCB\n\nThe PCB can be produced and assembled by a fabrication service such as JLCpcb, who are also able to source a marjority of the parts. Alternatively you can fabricate the PCB and acquire / assemble it yourself. Regardless of which method chosen you will need to solder on the through-hole components yourself.. fortuently this is just the rotatry encoder and the pin headers so only minimal soldering skills are required.\n\nAll construction files, including a BOM / CPL are provided in the [pcb](pcb/) directory. Additional parts needed to complete the build are maintained in a [seperate file](pcb/additional_parts.txt).\n\n[\u003cimg src=\".github/images/front_pcb.png\" height=\"200\" width=\"300\"/\u003e](.github/images/front_pcb.png)\n[\u003cimg src=\".github/images/back_pcb.png\" height=\"200\"  width=\"300\"/\u003e](.github/images/back_pcb.png)\n\n\n__Component Placement__\n\nThe JLCpcb assembly tool sometimes misaligns components (especially if a part is substituted). Use these images to confirm placements align with fiducial markers of the pcb. \n\n[\u003cimg src=\"pcb/placement_jlc_top.png\" height=\"200\" width=\"300\"/\u003e](pcb/placement_jlc_top.png)\n[\u003cimg src=\"pcb/placement_jlc_bot.png\" height=\"200\"  width=\"300\"/\u003e](pcb/placement_jlc_bot.png)\n\n_Commonly misaligned are U1, D1, D2, Q1, X1, U2, U4, Q4, U8, C15 and C20_\n\n### Case\n\nThe case is 3D printed, as above this can be done by a fabrication service if you do not own a printer. \n\n\u003e Consider asking your local makerspace about 3D printing!\n\n### Firmware\n\nThe firmware is provided in the [firmware](firmware/) directory. You will need [PlatformIO](https://platformio.org/) to build and upload it.\n\n\u003e Raise an issue if you would prefer an Arduino IDE version... or PR one yourself\n\n## Operation\n\n### Controls\n\nThe radio is designed to be easy to use, there is only one control!\n\n* Push dial to switch it on\n* Hold dial to switch it off\n* Push dial while running to change channel\n* Twist dial to change volume\n\n### Status Light\n\n| Colour | Description |\n|:---|---:|\n| Blue | Waiting for network |\n| Green | Running - Battery Good |\n| Amber | Running - Battery Reasonable |\n| Red | Running - Battery Low |\n| Off | Radio Off / Standby |\n\n\n## Configuration\n\nThe MWR has built-in browser based configuration which allows you to define the Hostname, Wireless network credentials and the playback URL.\n\n\u003e Enable Configuration mode\n\n1. Switch Off MWR\n2. Open Faceplate \n3. Install jumper (2.54mm) or short config pins\n4. Turn On MWR\n5. Connect to `MWR-WIFI-SETUP` wireless network\n6. Remove Jumper\n6. Navigate browser to `192.168.1.1`\n7. Enter configuration Details and select `Save`\n8. The MWR will automatically restart into radio mode and begin playback\n\n\u003e **Use SPIFF Files** \u003c/br\u003e Alternatively you can enter configuration details directly into the configuration files (host, ssid, pass, url) located in the _data_ directory, this is preferred when mulitiple units require setup. \n\n### Multiple URL's\nMultiple station URL's can be entered, there should be **one** url per line. The following streams are supported:\n\n* MP3 / M3U\n* M3U8\n* AAC\n* FLAC\n* OPUS\n* OGG\n\n### Finding URL's\nThere are lists available online, such as this one, however if you are unable to locate the stream URL of a preferred station I suggest locating the website in which the stream can be listened from, opening your browsers dev tools (usually F12), selecting the _Network_ and finally filter the list be 'Media' types. You may need to reload the page and start/stop playback for it to show up.\n\n![Schematic](.github/images/find_a_stream_ff.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallangallop%2Fmini-web-radio-2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallangallop%2Fmini-web-radio-2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallangallop%2Fmini-web-radio-2/lists"}