Yes; best case the hFe of a BJT will be 100 or so, which means your 0.017 mA will turn into 1.7 mA, which is not enough to power the relay coil.
There's another problem, too: The current out of an Arduino will not be sufficient to drive the coil of a relay, as the typical spec is 25 mA per pin out, and typical relays use 35-100 mA of current for their coils.
I question your assumption, though: What is the "0.2V" that you need for the switch? What do you think that means? Where does this number come from? Specifically, when the switch is open, the voltage gap across the switch will be pretty much VCC, as the switch resistance will be close to infinite. When the switch is closed, the voltage across the switch will be close to zero, as the switch will have close to zero resistance.
There are various solutions to the core problem of "how to turn on a microcontroller with a button, and then keep it on until it's done."
You might use a low-side N-channel MOSFET to switch on the relay coil. There would be a pull-down on the MOSFET gate, and the switch would pull it up to VCC. The digital out of the MCU would also be connected to this MOSFET gate, with a current limiting resistor that's lower than the pull-down, but high enough to not interfere with the switch when low. I'd suggest 10 kOhm for the pull-down, and 1 kOhm for the digital pin resistor, and the switch goes straight from the MOSFET gate to VCC. Note that the MCU needs to be able to pull the MOSFET gate both high and low, so a diode wouldn't work in that case.
If you can be more specific about what the "0.2V" requirement actually means, and what it's actually coming from, that would be useful, too. Almost all voltage specifications have to do with insulation ratings, and 0.2V is not within the range of those. Other ratings come from arc gaps, and those are typically 16V or higher as well. Other than that, the main important factor for switches is the amount of current interrupted, and that's typically rated in at least dozens of milliamps.
Thinking about it: Is the reason you need 0.2V differential "between switches" that you want to use an ADC to figure out which of many switches was used to start the MCU?
If so, for 5V, a 0.2V differential is achieved with a ratio of resistors, rather than absolute values. A 24 Ohm resistor and 1 Ohm resistor will divide 5V into 4.8V and 0.2V, just like a 24 kOhm resistor and a 1 kOhm resistor will divide 5V into 4.8V and 0.2V, although with different amounts of current running through them!
Your motor that you linked to is a 4.5V 190~250 mA (No Load) motor. At 9v, the current probably increases. You are overdriving it by 200%. And any load/weight will cause it to increase in current requirements as well. Stall current is probably 10x that at least.
You are missing the protection diode across the motor, that can easily kill the transistor.
The Transistor you are using is a 100mA standard, 200mA Absolute Maximum. One of those motors by itself without any load, can easily kill that transistor.
The base resistor is calculated as (Base Voltage - Base-Emmiter Voltage) / Current required
. Base Voltage is the Arduino pin, so 5v, Vbe depends on the collector current which is 200 mA here, so typically 1V. Current required is calculated as Collector Current (200mA) / Hfe (From datasheet, 10~30). On the safe side, lets go with 10, so 200 / 10 = 20mA needed at the base.
(5V - 1V) / 20mA or 4V / 0.02A = 200Ω resistor. A 1kΩ resistor would only allow 4mA at the base, which times the Hfe of 10, would only allow 40mA at the collector, probably no where enough to tun on the motor.
TLDR: You need the protection diode, your 9v power source is too high, and your transistor is too weak for the motor you are using. And you need a bigger resistor at the base because the motor requires more current then you are figuring. A common 2n2222 transistor with a 470Ω resistor would do much better.
Edit: Not making the pin an output also puts a damper on things. Answer, Arduino pins default to input.
Best Answer
I'll agree that the Arduino will more likely be able to drive a MOSFET transistor into saturation, but I don't think that's the only problem. Once you do get the transistor to turn on, the large current draw will cause the battery voltage to drop below the 3.3V needed by the Arduino. This will cause the Arduino to let the transistor turn off. Then the battery voltage will recover, the Arduino will reset and the whole process will repeat over and over and over ...
Measure the actual voltage across the battery when connected to the inductive load. If it stays high enough (3.3V + dropout of voltage regulator) then replace the NPN with a MOSFET and live a long and happy life. If not, then you have more work to do.
You didn't say what the inductive load is but I'll guess that it's something mechanical like a relay or solenoid, all of which have similar electrical behavior. The first thing to understand about them is that they require some minimum amount of current to operate them. The full battery voltage might not be required to push that minimum amount of current through them.
The most obvious solution is a series resistor. As it stands the current (following the inductive transient) is limited only by the 5 ohm resistance of the load. Add more resistance to lower the current. If you're lucky there will be some value of added resistance that still allows enough current to flow to operate the load, but not so much to drop battery voltage below what's needed to keep the Arduino alive.
The more sophisticated solution is to use the Arduino to PWM the transistor to maintain the necessary current. For this you will need to add a freewheeling diode across the load. These are sometimes called clamp or flyback diodes, but I called it a freewheeling diode in this case because it allows the inductor to continue conducting after the transistor is turned off. It let's the transistor freewheel as in the figure on the right.
So the idea is, you use the Arduino to turn the transistor on and off at something like 10kHz (PWM) and adjust the duty cycle so that the current is only as high as it needs to be through the the relay or solenoid or whatever the inductive load is.
The next step up in sophistication is to implement a so-called peak-and-hold controller. This takes advantage of the fact that relays and solenoids typically require a large current to actuate them, but then comparatively less current to hold them. In your case you need to keep the load actuated for about half a second, but depending on the device, you can probably reduce the current after some small fraction of that time. With the PWM controller you simply reduce the duty cycle after, say 100 ms, to reduce the current.
The actual currents and times will need to be determined from datasheets or experimentation or both.