Multiple Magnetic sensor issue

Any suggestions on a good magnetic sensor to use?

Context: Im trying to detect a rare earth magnet from 20mm away with a substantial amount of surrounding noise. So far I have been successful in using a hmc5883l, which significantly disturbs the z-axis enough for me to confidently detect the magnet from about 25mm away.

Issue: I want to run multiple magnetometors on the auduino at once to be able to detect multiple magnets in different locations. Im currnetly using the I2C protocal since it limits the amount of wires I need to run to each sensor. The HMC5883l is limiting as it has a set address, therfore limiting me to only comunicating with one peripheral at a time (unless I use a soft I2C). It won't be very efficiant for me to use one atmega328 per sensor.

Any suggestions on how I can overcome this or a good magnetic sensor that comes with differnt calling adresses or an address that can be adjusted (manually or via programming).

Cheers

The easiest of the solutions that will most probably use a very similar code is to use ATmega8's(or may be ATTiny2313 or similar with hardware i2c OR Universal serial port that can be configured as UART/i2c/SPI) for the added i2c sensors at is 1$(I used to get ot for USD1 while USD was not eating Rupee up) at many places, It's a possibility, just a suggestion.

You can use an I2C multiplexer to switch between multiple I2C devices.

Discrete chips are also pretty easy to find.

Do you need to detect the direction of the magnetic field, or just its intensity? If you only need to detect its intensity and you know the approximate direction of the field in advance, then a linear Hall sensor such as the A1301 will cost less than the HMC5883. The A1301 produces an analog output, so you can use standard analog multiplexing techniques to connect a lot of them to an Arduino.