I plan to use the HC-06 serial bluetooth module with an Arduino Leonardo. To my knowledge, the Arduino’s serial pins output at 5V with 40mA of current. The HC-06′s datasheet says it will accept input at 3V – 4.2V with 20mA – 40mA of current. I’m more of a programmer than an electrical engineer, but this tells me I will need a resistor between the Arduino’s TX pin and the HC-06′s RX pin. From my calculations I will need a resistor with 82.5 Ohms of resistance:
$$r = frac{V}{I} = frac{3.3V}{0.04A} = 82.5 Omega$$
Is this the correct way to solve the problem? Online I’ve seen people solve the exact same issue using a voltage divider with a 10kOhm resistor leading from the Arduino’s TX pin to the HC-06′s RX pin and a 20kOhm resistor leading from the HC-06′s RX pin to ground. So, what’s the correct way to solve this problem? If a voltage divider is the solution, why and how does it work? Or why does simply putting in a 82.5 Ohm resistor not work?
EDIT: For simplicity sake, let me reiterate my question from a more general perspective. The HC-06 module requires a power supply voltage of 3.3V (which can come from the Arduino’s 3.3V pin) and will also only accept logic inputs at 3.3V. So, what is an easy way to achieve this voltage reduction for the serial wire?