Introduction: PS3&Arduino&Motors Detailed Tutorial
In this Instructable, I will teach you how to connect the wires from these mess properly, so you can control at least 4 stepper motors and 2 servo motor through wireless ps3 controller and the Arduinos. I will post picture for each step so you can follow very easily. I hope you enjoy this and leave feedbacks or suggestions if you have any problems or questions.
Step 1: Prepare for the Materials
Everything starts from the draft. In order to follow through this project, you need the following components:
-2 Arduinos(If you just have one Arduino, you can simplify the sketch but control only 2 stepper and servo)
-1 PS3 controller
-Couple of jumper wires
-1 small breadboard (if you have a big breadboard that's also fine)
-2 1K ohm resistors attached to the breadboard
-1 Bluetooth dongle (I bought the KINIV0 dongle from amazon, it works perfectly)
-1 BLUE Arduino USB Host shield (I also bought that from amazon)
-1 blue USB wire (It's usually arrived with Arduino)
-1 or 2 black power supply cable (9-12 volts. More maximum current the better)
-4 stepper motors (each one needs 6 square tip wires and a green driver)
-2 servo motors (remember, read is +5v, black is ground, orange is signal)
-a powerful variable voltage power supply (You need this because the black power cable can only supply 1A current, and it's still not enough for 4 stepper motors. If you don't have it, just use the powersave sketch and two black power supply cables instead)
Step 2: Test the Communication Between Arduino and PS3 Controller
To start the process, first you just need to simply plug both Bluetooth dongle and USB host shield into one of the Arduino. Then download the USB host shield 2.0 library from the website(actually it's easier to download it by opening the Arduino IDE, then click sketch - include library - manage libraries, and you will find all the libraries you may want to download there), then copy and paste it into your Arduino library holder. Start a new sketch, and click file - examples - USB host shield 2.0 library - Bluetooth - PS3BT. From the sketch change Serial.begin(115200) to Serial.begin(9600), then add "//" before the line of PS3BT PS3(&Btd); and delete the "//" in //PS3BT PS3(&Btd, 0x00, 0x15, 0x83, 0x3D, 0x0A, 0x57); Remember that before you upload this, open this library folder and find a document named settings. Open that document by notebook and find this line below:
/* Set this to 1 to activate serial debugging */
#define ENABLE_UHS_DEBUGGING 0
Change that last number into one then it's done. Now plug that blue wire into your computer and Arduino, then upload your new enhanced sketch. (If you are confuse about anything , go to
and watch the video, that guy has a good taste of music but doesn't like talking too much).
As the video demonstrated, there are some procedures you need to follow through after you upload the sketch:
1. Open the serial monitor and check if the Bluetooth adapter is connected perfectly.
2. Remove the dongle and plug in the lead of ps3 cable, then wait for a few moment to settle its address.
3. Remove the ps3 lead and plug in the USB dongle again to settle its connection.
4. Click the PS3 wireless button and enjoy the sea of data flowing through the monitor screen as you play with PS3 joysticks.
Step 3: Test the Basic I2C Communication Between 2 Arduinos
I2C is a kind of communication system that can be used between 2 Arduinos (There are also two other systems which are Serial and SPI). To establish the system, you need:
- 2 Arduinos
- 1 breadboard
- 2 1k ohm resistors
- jumper wires
To begin, plug the one end of both resistors to the same row of the breadboard (let's call this rowA), then plug the another end of the two resistors to the two different rows (rowB and rowC). Following by this, use the jumper wires to connect both 5v pins of the Arduinos to the same row which also connects to the one end of both resistors(connect them to rowA). Then connect both A5 pins to rowB, and both A4 pins to rowC. At last, use one jumper wire to connect the GND pins of both Arduinos together. Now choose the Arduino with shield and dongo as your master device, and another Arduino as your slave device. You need to apply different sketch to each Arduino, so the master can send the data to his slave.
Now apply the master sketch to master Arduino, the slave sketch to slave Arduino.(I posted these two sketches in this Instructable) Finally, open the serial monitor in slave device and check the data flow. After making sure all is correct, unplug the blue usb wire and keep the circuit.
Attachments
Step 4: Establish the Communication Between Ps3 and Motors
Now it's time to set up the final transmission, but firstly you need to connect all the motors in space. Follow through the instruction below:
1. Use a wire to connect rowA to another empty row (I call this rowD), so you can have more wires to be connected to +5v.
2. Connect all the red wires of servo motors to rowD, and all the orange wires to the pin6, pin7 of master Arduino, then connect all the black wires to any ground (you can use an jumper wire to connect an Arduino ground pin to an empty row on the breadboard to create more ground pin)
3. Connect the In1, ln2, ln3, ln4 pins of stepper motors to the either 2,3,4,5, pins or A0,A1,A2,A3 pins of two Arduinos until the four stepper motors are all connected properly.(The order of the pin connection is important)
4. Connect all the +5v wires of stepper motors to an empty row(rowE), then connect all the ground wires of stepper motors to two empty rows(rowF and rowG) evenly. Use a jumper wire to connect rowF and rowG, and use another wire to connect them both to ground.
5. Connect the rowF and rowG to negative powerful power supply, the rowE to positive powerful power supply. (If you don't have a powerful supply, don't commit suicide just yet. I also post the powersave sketch for two Arduinos to control 2/4 stepper and 2 servo without using powerful power supply but 2 normal black power cables)
6. Upload the two complete final sketches I posted to two Arduinos (master sketch to master Arduino, slave sketch to slave arduino), then turn on all the power and ps3 wireless mode.
The so called save power mode is nothing but add a function to L1 button of PS3 controller. You can still use it if you have a powerful power supply. Though for these who doesn't have it, here is how you reconstruct the circuit:
(It starts after the original step 4)
5. Unplug the jumper wire which was connected to +5v slave Arduino pin then plug it in again to connect the
+5v slave Arduino pin to rowE.
6.Plug the second black power cable into slave Arduino, power them both on, upload the sketch, turn on the ps3 wireless mode by clicking the center button on the PS3 controller.
9 Comments
6 years ago
where to buy the ps2-3 board for arduino?/
Reply 6 years ago
This is a link of USB host shield sell on eBay. http://www.ebay.com/itm/Arduino-UNO-USB-Host-Genuine-Keyes-Shield-ICSP-Funduino-Google-ADK-Flux-Workshop-/121978946221?hash=item1c668302ad:g:aOYAAOSwt7pXLST8
Reply 6 years ago
thankxxxxx can you reply, i have notification problems, its a test
Reply 6 years ago
Is it about the communication problem between the Bluetooth dongle and PS3? I also failed that a few times. Try to open the debugging first, and make sure not to open the wireless mode until you replug in the dongle. Just try it a few times, and once you succeed next time you can just click the wireless button and the connection will be automatically set up, whether you connect the arduino to the computer or not. If the problems still occur, tell me your current step and trouble description, and I will look into it.
Reply 6 years ago
i can buy them for 9 usd on aliexpress thanx
Reply 6 years ago
The arduino board on the left side of the first image is nothing but a USB host shield with the Bluetooth dongle plugged in, settled on the top of an ordinary Arduino UNO.
Reply 6 years ago
PS3 is a type of game controller, and there isn't any type of arduino designed specifically for PS2 or PS3, so you can just buy 2 normal arduino Uno from eBay, Amazon or arduino official website. In order to communicate PS3 to arduino uno, you also need a USB host shield, which can also be bought from above three website.
6 years ago
THANX
6 years ago
Neat! Good instructable :)