I've compared three temperature sensors ( LM35, DS18B20 and DHT11 ) and my findings are as follows :-
|DS18B20 1-wire parasite power|
DS18B20 - These are the best, most expensive and harder to find locally. The DS18B20 uses a 1-Wire bus for data transfer (another wire for ground) and can be daisy chained together to draw power directly from the 1-wire bus "parasite power" with a 4K7 ohm pull-up (5V) resistor. They only use 1 digital pin on the Arduino and can support a lot of these sensors on a single pin as all the DS18B20 have unique address in them. Just need to load the libraries and call the function to retrieve the temperature from each of the sensors. Since the data is digital, these sensors are not dependent on voltage level and can go a further distance.
LM35 - These sensors are very common and easily found locally. They are analog sensor and need to be connected to Arduino analog pin to get the voltage level. If the power supply are not regulated at 5V and fluctuating between 4.8-5.5V, these analog sensors could give a wrong readings as they are dependent on the voltage level. Even when I use analogReference(INTERNAL) using the internal 1.1V for the temperature calculations, with different power source, regulated 5V and USB 5V power, the temperature reading are off by 1C between them. In terms of accuracy, they are 0.5- 1.0C higher than the DS18B20 so you might need to do minor adjustment in the temp calculations. If you think the temp reading are off, always use a multimeter to check the power supply voltage.
|Smoke and gas sensors|
I've tested this sensor, DHT11, they are relatively cheaper than the SHT-11. The sensor are from Aosong AM2303 with range of 0 - 100% Relative Humidity and Temperature range of -40 to 125 Celsius. The accuracy are +/- 2% RH. The output from the sensor are digital but they are connected to an Analog pin from the Arduino. After initialising the sensor, you call a function to get four values from the sensor, relative humidity in percentage, temperature and the checksum. I find the temperature value is 1C higher than DS18B20.