ESP32-S3 AM-Zender

Er is een projectpagina beschikbaar met een demonstratievideo.

Belangrijke waarschuwingen voor constructie

Voordat u begint met de bouw, dient u rekening te houden met de volgende twee niet-onderhandelbare feiten:

  1. Licenties voor uitzendbanden: Het apparaat zendt uit in een gelicentieerde uitzendband. De standaard draaggolf is 200 kHz, wat binnen de langgolfband valt (slechts 2 kHz verwijderd van BBC Radio 4 op 198 kHz). Opzettelijke uitstraling op deze frequenties is in het Verenigd Koninkrijk en de meeste andere landen vergund, en dit project beschikt niet over zo'n licentie. Het is ontworpen om te worden opgevangen door een ontvanger op dezelfde tafel (een inductieve lus naast de radio, niet een externe antenne). U dient zelf de lokale regels en voorschriften met betrekking tot uitstraling te controleren.
  2. Harmonischen: Er is in deze bouw geen uitgangsfilter aanwezig. De draaggolf is een blokgolf, waardoor er oneven harmonischen worden uitgestraald op 600 kHz, 1 MHz en hoger, over de gehele middengolfband. Bij het huidige vermogen, met de lus direct naast de ontvanger, werd dit op basis van gehoor als acceptabel beschouwd. Dit is nooit gemeten met een spectrumanalyser. Het verhogen van de aansturing, het verlengen van de antenne of het weglaten van de serieweerstand zal de harmonischen versterken. De technische handleiding beschrijft een laagdoorlaatnetwerk dat kan worden toegevoegd indien gewenst.

Bedrading

Per zender is de bedrading als volgt:

  • Eén GPIO-pin.
  • Een weerstand van 220 ohm.
  • Een lus van vijf windingen gewonden rond de pilaren van het deksel, terug naar de massa (ground).

De twee ketens delen de massa, maar verder geen enkel onderdeel.

Functionaliteiten

Zenders en Modulatie

  • Twee zenders: Ondersteuning voor separate stations, draaggolffrequenties, modulatiediepte, audio laagdoorlaatfilter, gain, draaggolfniveau en een startstation bij inschakeling. Ze delen één wifi-verbinding en één stationlijst.
  • Echte AM: Duty-cycle modulatie, gelineariseerd via een arcsinus-tabel, omdat een eenvoudiger schema nauwelijks moduleert.
  • Audioverwerking: Een 6e-orde laagdoorlaatfilter, een fractionele resampler met een fill-controller, een peak-limiter en een loudness-AGC die verschillende stations binnen ongeveer 2 dB van elkaar brengt.
  • Effecten: Mogelijkheid tot aanpassing van het draaggolfniveau en 'fading', om het effect van een verafgelegen station na te bootsen.

Bediening en Behuizing

  • Webinterface: Voor alle instellingen, waaronder stations, directory-zoekopdrachten, instellingen voor beide zenders, een testtoon, wifi en diagnostiek.
  • Seriële console: Kan alles uitvoeren wat de webpagina ook kan, zodat het board via USB bereikbaar blijft als de netwerkverbinding is verbroken.
  • Behuizing: Een geprinte behuizing waarbij het deksel beide luswindingen op vier pilaren draagt.

Snelstart: een board flashen

Benodigdheden

  • Een Waveshare ESP32-S3-Zero (of een andere ESP32-S3).
  • Een USB-C datakabel.
  • Python.

Instructies

Installeer eerst esptool:

pip install esptool

Flash de firmware (vervang COM5 door uw eigen poort, zoals /dev/ttyACM0 op andere systemen):

python -m esptool --chip esp32s3 -p COM5 write_flash 0x0 binaries/amtx-v1.0-merged.bin

Gebruik de eigen USB-C poort van het board in plaats van een aparte seriële adapter.

Sluit het board vervolgens aan op de stroom, maak verbinding met het wifi-netwerk AMTX-Setup dat door het board wordt aangemaakt, en volg de instructies op de pagina die opent.

Voor een gedetailleerdere handleiding zie docs/manuals/quick_start.pdf. Hierin worden alle stappen uitgelegd, inclusief de installatie van Python, het gebruik van de juiste USB-poort, het gebruik van de flashing-tool in tools/esp-flasher, het controleren van de firmware via de amtx> console (door help te typen) en de methoden om het board op uw netwerk te plaatsen. Er is geen compiler nodig.

Zelf bouwen

Voor een complete handleiding van begin tot eind, inclusief onderdelen, printen, heat-set inserts, het wikkelen van de antenne, bedrading, assemblage, flashen, eerste opstart en probleemoplossing, raadpleeg docs/manuals/build_manual.pdf.

Documentatie-overzicht

HandleidingDoel
Quick StartEen zender in de lucht krijgen via een release-zip, zonder toolchain.
BuildHet bouwen van het apparaat vanuit losse onderdelen.
InstallationToolchain, het compileren van firmware vanuit broncode en flashen.
UserBediening van het apparaat zodra het werkt.
TechnicalTechnische uitleg over de werking van de firmware voor aanpassingen.

Projectstructuur

  • firmware/: ESP-IDF v5.3 project; de volledige zender.
  • tools/: Desktop-tools (Python + tkinter):
  • esp-serial-monitor: Seriële console met gesplitste systeem- en CLI-vensters.
  • esp-flasher: Tool om een board te vinden, analyseren, flashen en monitoren.
  • amtx-programmer: De flasher met een extra tabblad voor de configuratie van het board.
  • case/: De geprinte behuizing (STEP-bestanden voor bewerking, STL voor printen).
  • binaries/: Flashbare builds, zowel samengevoegd als als afzonderlijke images.
  • docs/: Handleidingen in PDF- en Markdown-formaat.

Teststatus (versie 1.0)

Dit project maakt een duidelijk onderscheid tussen "gebouwd" en "bewezen".

Getest op hardware:

  • Het systeem draait op hardware. Twee stations kunnen gelijktijdig spelen en worden opgevangen door een AM-ontvanger. Beide decoders behouden de volledige snelheid zonder dat de modulator tekortschiet.
  • De webinterface, de console, het wisselen van stations, wifi-verbindingen en de diagnostiek zijn allen getest op een echt board.

Geprint en geassembleerd:

  • De behuizing is meerdere keren geprint en gebouwd. De huidige revisie corrigeert fouten uit de vorige print; deze specifieke revisie is echter zelf nog niet geprint (hoewel er geen support nodig is).

Niet gemeten:

  • Er is geen meting gedaan met een spectrumanalyser of oscilloscoop. De harmonische inhoud, de uitgestraalde veldsterkte en de modulatiediepte zijn onbekend.

Niet getest op hardware:

  • De factory-reset actie (de BOOT-knop vijf seconden ingedrukt houden). De code is gebouwd en de andere twee routes naar deze functie zijn duidelijk, maar de fysieke knop is nog niet ingedrukt.

Licentie

Dit project valt onder de GPL-3.0. Zie het bestand LICENSE.

  • De MP3-decoder (libhelix) wordt via de ESP-component registry opgehaald en heeft een eigen licentie.
  • De afmetingen van het board zijn gebaseerd op de gepubliceerde tekeningen van Waveshare voor de ESP32-S3-Zero.

Over deze repository

Dit is een publieke spiegel van een werkende repository waarin het volledige engineering-verslag wordt bijgehouden: ontwerpdocumenten, registers van bekende problemen en lessen, de parametrische CAD-bron voor de behuizing en de argumentatie achter elke beslissing. Wat hier gepubliceerd is, is het eindproduct: broncode, tools, handleidingen, geometrie en een binary.

Issues en pull requests zijn welkom, hoewel de ontwikkeling elders plaatsvindt en via releases naar deze repository wordt gepusht.