The prototype I wish to create is similar to the mechanism of a vending machine where when we inserted a coin, the motor will rotate the spring and drop the food we selected, but the rotation of the motor now is trigger by the SMS message instead of the coin. Since this is the first time I use Arduino for my project and it seems there are many shields and board which can kind of do the same thing, I wonder which one should I purchased.
This is not a very complicated project, great for a Newbie. First purchase the Arduino Cookbook and read it. Then go on line and go through several of the arduino tutorials. By this time you will know what you want and how to configure it. This response is to help you get started in solving your problem, not solve it for you.
Good Luck & Have Fun!
Gil
First of all a servo doesn't make sense. Get a regular DC motor with sensor so you know a full rotation was done. This can be a light barrier, a magnetic switch, or a mechanical switch. Many options here. Then to dispense a product you run your motor until the sensor tells you a full rotation was done.
So you have to find a motor that's strong enough to move your spring at the speed you want it to move (you'll need an appropriate gear box for this, there are lots of motors out there with gear box in place).
When you have the motor you know the required current, and get a power supply for it. As you only need to run one way, you need a MOSFET to switch it on and off. No need for H-bridge or motor driver.
Then you have to decide on the sensor you want to use for the full rotation.
Finally you have to look for a coin slot. There are many out there, find one that works for your local currency, or whatever coin you want to use (doesn't have to be actual money, can be a token kind of coin). Decide if you want one that takes only one type of coin, or that takes multiple different coins and tells you the value received.
Get the parts working one by one, then integrate step by step.
My first thought was perhaps a stepper... but I saw you mentioned using a DC motor..
can I ask why? (not challenging, genuine curiosity is all)
It's a fair question!
In this application you don't care about highly detailed control, nor about a very well defined speed. The thing just has to make one full rotation at at reasonable pace and then stop. You don't even care if it's 360° or a few degrees more or less: as long as one item is pushed out and the next not you're fine, and a fairly slow moving spiral can be stopped pretty instantly when the sensor is triggered. A geared DC motor has a pretty good torque, and as long as the available torque is more than enough to move the spirals the speed will be quite constant regardless of how many items are there.
A stepper would work as well for sure, but it's simply overkill for this application. Expensive, inefficient, and hard to control (need special controller board) compared to a DC motor which just needs a MOSFET switch. The only advantage may be that you can have the stepper drive the spirals directly, without gear box, thanks to its superior torque at low speed. A regular DC motor has to run at 10-30k rpm or so for good torque, hence the need for a gear box.
The sensor for full rotation you also need when working with a stepper, as you have to home the stepper when starting up (if it's not at home position yet). So no difference there.
Anyway, I have to admit, steppers are really cool, and allow for fantastic control.
I'd probably go with a continuous rotation servo to turn the spring and one of those small roller tipped micro switches for the spring position detection. The servo is cheap and easily controlled, and some state change logic code for the micro switch could be used to tell the servo when to start/stop.