Do I need a pull up resistor and bypass capacitor?
If everything is working fine, don't touch it. Just keep the r and c in mind should you start having trouble.
The Pi does have internal pull ups that are turned on. I'm going by this article: http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/raspberry-pi/gpio-pin-electrical-specifications
See figure one for a schematic.
They say While a pull-up/down resistor value of 50 KΩ is shown in the figure, Broadcom doesn't specify its value. It is likely to be in the 40 to 100 KΩ range, as shown in Table 1. The transistors that enable the pull-up/down resistor contribute their appreciable nonlinear resistance to it, so the effective resistance is not constant over the input pin voltage range. The pull-up behavior is somewhat of a cross between constant resistance and constant current behavior.
If you are trying to rapidly shove bits over a long wire, 50K is pretty high if the device is open collector.
The DHT22 spec sheet doesn't show the output circuit. The latest translation is here
They don't discus the value of the pull up, but show it as 1K in Figure 5. The old spec sheet said: "single bus usually require an external about 5.1kΩ pull-up resistor." Guess that is where Adafruit got the 5.1K they use.
Ideally I think that the resistor should be located on the board and the capacitor at the DHT22. I've been doing my testing with the r and c at the DHT22.
I've played with different timing in the code. Emil is right that the longer between reads, the fewer bad reads. That is strange.
The spec sheet does say: "the interval of whole process must beyond 2 seconds."
The old spec sheet said:
3.Read the sensor minimum time interval for the 2S; read interval is less than 2S, may cause the temperature and humidity are not allowed or communication is unsuccessful, etc.. 4.Temperature and humidity values are each read out the results of the last measurement For real-time data that need continuous read twice, we recommend repeatedly to read sensors, and each read sensor interval is greater than 2 seconds to obtain accurate data.
What is weird, it seems you need a delay before you read each sensor:
delay 5 read DHT22-1 delay 5 read DHT22-2
works better than delay 5 read DHT22-1 read DHT22-2
or delay 10 read DHT22-1 read DHT22-2
even though DHT22-1 and DHT22-2 use different GPIO pins. Weird. They only thing they share is the 3.3 volt power supply.