user25805: Some people have managed to send simple AM signals with just a bare Arduino. An example is here.
This works thanks to the fact that the PWM can reach high frequencies and, setting the divider properly, it is possible to broadcast a 1337 kHz carrier over a short distance with just a wire acting as an antenna.
I know it's not that useful, but it's really nice as an educational tool.
I was wondering if it would be possible to apply the same concept, but for the receiver. For instance simply using a pulseIn() detection on a pin connected to an antenna. Would it be possible to detect the carrier, and, maybe, even demodulate a message, eg, in morse code?
If not, would just a adding an amplifier be sufficient? Any recommendations for the amplfier and the circuit?
Thanks very much for your suggestions.

user24169: AM (Amplitude Modulation) varies the amplitude of the carrier based on the input signal. So, assuming you had some circuitry (LC circuit) to receive a particular carrier frequency and managed to boost the voltage so that it was in the range 0-5v then you would able to feed this to an analog input on the Arduino.
AnalogRead requires around 100uS per sample, so your max sampling rate would be 10K/s, which might just cut it for voice (up to 3.4Khz, sampling at least 2 * the highest freq).
However, you then need to do something with the sample value (in code) and depending on how long that 'something' takes, your actual sample rate will be reduced.

user4143: Generating an AM signal is child's play compared to detecting one.
To generate a signal you just need to create an oscillation and vary the amplitude, which can very crudely be done with PWM.
That's simple.
To receive a signal you first need to isolate that signal. There's a huge number of signals and noise around all the time, and you need to tune in to the signal that you are interested in. That's what you are doing when you twiddle the dial on a radio. You're selecting which frequency to listen to.
And to do that requires a tuned circuit - a kind of band-pass filter which isolates and amplifies the frequency you are interested in.
Imagine you are in a large hall filled with people. Every single person there is just standing around talking out loud - everyone is saying something different. Some are even just screaming, or whimpering in the corner. It's just a cacophony of noise. Impossible to know what is going on. That's what the air waves are like. You need some way of "tuning in" to one person's voice so you can understand what they are saying. As humans we often do that using sight, to watch a person's lips and our clever brains link the movement to the sound and help us pick out their voice. Coupled with our ability to select on the tonal qualities of a voice as well, we can pick out a single voice in the noise. That's what the tuned circuit does. It picks out one voice from the mayhem.
The Arduino can't do that. It would need to use some fairly sophisticated filtering algorithms, and it just doesn't have the power for that. Firstly you'd need to sample  the raw RF noise at a minimum of twice the frequency you are interested in (so multi-mega-samples per second), and then you'd need to do digital filtering to isolate that one frequency. From then you'd need to do more filtering to demodulate the original signal from the modulated signal.
It's all possible to do in software, but not with an Arduino. It takes a good ADC and a DSP to do all the hard work.
Easier to just build a small tuned circuit from a few passive components.

25805: <p>Some people have managed to send simple AM signals with just a bare Arduino. An example is <a href="http://mateslab.weebly.com/am-radio-broadcasting-with-arduino.html" rel="nofollow noreferrer">here</a>.
This works thanks to the fact that the PWM can reach high frequencies and, setting the divider properly, it is possible to broadcast a 1337 kHz carrier over a short distance with just a wire acting as an antenna.
I know it's not that useful, but it's really nice as an educational tool.</p>

<p>I was wondering if it would be possible to apply the same concept, but for the receiver. For instance simply using a pulseIn() detection on a pin connected to an antenna. Would it be possible to detect the carrier, and, maybe, even demodulate a message, eg, in morse code?</p>

<p>If not, would just a adding an amplifier be sufficient? Any recommendations for the amplfier and the circuit?</p>

<p>Thanks very much for your suggestions.</p>
 24169: <p>AM (<em>Amplitude Modulation</em>) varies the amplitude of the carrier based on the input signal. So, assuming you had some circuitry (<a href="https://en.wikipedia.org/wiki/LC_circuit" rel="nofollow noreferrer">LC circuit</a>) to receive a particular carrier frequency and managed to boost the voltage so that it was in the range 0-5v then you would able to feed this to an analog input on the Arduino.</p>

<p><a href="https://www.arduino.cc/en/Reference/AnalogRead" rel="nofollow noreferrer">AnalogRead</a> requires around 100uS per sample, so your max sampling rate would be 10K/s, which might <strong>just</strong> cut it for voice (up to 3.4Khz, sampling at least 2 * the highest freq).</p>

<p>However, you then need to do something with the sample value (in code) and depending on how long that 'something' takes, your <em>actual</em> sample rate will be reduced.</p>
 4143: <p>Generating an AM signal is child's play compared to detecting one.</p>

<p>To generate a signal you just need to create an oscillation and vary the amplitude, which can very crudely be done with PWM.</p>

<p>That's simple.</p>

<p>To <em>receive</em> a signal you first need to <em>isolate</em> that signal. There's a huge number of signals and noise around all the time, and you need to <em>tune in</em> to the signal that you are interested in. That's what you are doing when you twiddle the dial on a radio. You're selecting which frequency to listen to.</p>

<p>And to do that requires a <em>tuned circuit</em> - a kind of band-pass filter which isolates and amplifies the frequency you are interested in.</p>

<p>Imagine you are in a large hall filled with people. Every single person there is just standing around talking out loud - everyone is saying something different. Some are even just screaming, or whimpering in the corner. It's just a cacophony of noise. Impossible to know what is going on. That's what the air waves are like. You need some way of "tuning in" to one person's voice so you can understand what they are saying. As humans we often do that using sight, to watch a person's lips and our clever brains link the movement to the sound and help us pick out their voice. Coupled with our ability to select on the tonal qualities of a voice as well, we can pick out a single voice in the noise. That's what the tuned circuit does. It picks out one voice from the mayhem.</p>

<p>The Arduino can't do that. It would need to use some fairly sophisticated filtering algorithms, and it just doesn't have the power for that. Firstly you'd need to sample  the raw RF noise at a minimum of twice the frequency you are interested in (so multi-mega-samples per second), and then you'd need to do digital filtering to isolate that one frequency. From then you'd need to do more filtering to demodulate the original signal from the modulated signal.</p>

<p>It's all possible to do in software, but not with an Arduino. It takes a good ADC and a DSP to do all the hard work.</p>

<p>Easier to just build a small tuned circuit from a few passive components.</p>
