Cool things can be done with ATmega MCUs. So I got the idea to build an AM transmitter with an Arduino Nano (any other Arduino is also possible)
The question is, how can amplitude modulation (AM) be achieved on a digital device? AM means that the amplitude of a carrier frequency is changed according to the amplitude of the input signal which we want to transmit. Mathematically spoken, we multiply the carrier with the input signal. But as an ATmega has only digital outputs, it can give only two values: high and low. Frankly spoken, there is no way to get real AM out of an Arduino.
Nevertheless it is possible to produce some output signal that can be heard clearly with an ordinary AM radio receiver!
The solution consists of transforming the analog input signal into a PWM signal, using the ADC and the 16-bit timer/counter1 of the ATmega MCU.
The timer/counter2 generates the carrier signal, which can be varied in a wide range between 31KHz and 8MHz.
This carrier signal is output on pin D11 in the rhythm of the PWM signal. The AM radio behaves like a low pass filter on the PWM, so we get back the original audio signal there.
This is only a proof of concept, so I kept it simple. If you really want to use this as RF transmitter, you should add a low-pass fillter for anti-aliasing to the audio input and a low pass against the harmonics to the RF output.