My friend GroG from MRL is working on a simple User Interface for the game, so it doesn’t take a computer science degree to play the game, hehe. It uses HTML & Ajax + JSON calls to the MRL server, thus it will work on any OS machine. GroG hopes that the video feed will be a G+ hangout embedded in the UI through an iFrame.
Here are some pictures of what he has done so far:
Then you choose a robot from the <available> robots and you can see who else is playing and in what team, as well as how much time is left in the game:
Looks good, doesn’t it?
The robots are preparing! A new team member has been recruited and they got numbers. Little by little, the code is being polished. The training has started, they were even thinking to play with the Easter Egg:
But the Ball is their game:
I am trying to make them listen to my commands, but no, they have their own way of playing the game. I’m not even sure Football is what they are playing but this is what I’m training them to play. Soon they will be ready! Will you?
After a long waiting for parts and a bit of a depression I got back on my feet and started to build a few µBipedino robots to see if they work fine and to improve the programming before I start to sell the kits. I took lots of pictures while soldering the electronics and assembling the robot and now I have to write the manual. But since the robots are maneuverable enough and I have 2 colors already, I decided to resuscitate the LMR Online Soccer Game that got axed because of poor maneuverability of the Mini Bipeds.
What is this game? Well, it’s a game of Football (soccer as some of you might call it) played by the µBipedino robots. There will be 6 robots in the field, 3 in each team, all controlled remotely through internet by different users. The users will use a software called MyRobotLab to connect to the game and will see a bird view of the field and will be able to move their robot around, kick the ball and control some special effects actions. The game will be televised on uStream from a panning camera and hopefully will be commented.
So, I started to build a field for the game and I assembled 3 robots, with 3 more to do. The field needs painting and the robots need to have the wires tucked in and numbers displayed that will be visible from above and from the sides.
Here are some sneak preview pictures of the field and the robots:
So, what do you think? Will this game be worth watching or playing?
The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog.
Here’s an excerpt:
The concert hall at the Syndey Opera House holds 2,700 people. This blog was viewed about 12,000 times in 2011. If it were a concert at Sydney Opera House, it would take about 4 sold-out performances for that many people to see it.
Click here to see the complete report.
A couple of weeks ago I saw a nice video of kids playing with a tiny biped robot made by Easybotics. I contacted the owner and asked if I could create a similar robot based on an ATmega328 microcontroller that can be programmed in Arduino IDE, either directly in C, or, by using the ArduBlock tool, in a graphical manner, connecting blocks to write the program. He responded quickly saying that he has no problem with that, in fact, we could collaborate to build an Arduino compatible robot. After exchanging design ideas, we decided to go separate ways, as I wanted a simple robot board kit to be assembled by the customer or bought already ready assembled, and he wanted a more sophisticated board with a built in USB port and SMD parts. I started to prototype a robot and design the main board and today I have it ready for demos.
But first, let me introduce the µBipedino(TM) (pronounced micro-Biped-eeno) robot to you:
- micro-biped using 2 servos per leg for walking and dancing
- ATmega328 microcontroller at 3.3V, 8MHz with Arduino bootloader
- runs on a 3.6V LiIon battery
- built in charger with charging status LED (MAX1555)
- high side switch to enable the power to the servos by the microcontroller
- On/Off power switch with power status LED
- dual IR proximity sensor (38kHz) to detect objects on the Left/Right/Center
- trim-pots to adjust the IR LEDs light emitting level
- removable head board with built in Buzzer and dual RGB LEDs
- 4 extra connections for additional servos or sensors
- programmable start/select button
- keyed FTDI cable connector for programming
- board size: 5x5cm (2×2″)
- robot size: 6x6x10.5cm (2.5×2.5×4″)
Want to see it? Here are the pictures:
And the schematic and the PCB design:
I expect to have kits in the store sometime mid-January, perhaps even sooner if all works well.
Oh, yeah, want to see it in action? There you go:
I finally got the boards in my hands and soldered and tested one board. It works as it is supposed to, but still has little things I want to fix in the next revision. Here are some pictures:
- ATmega328P DIP28 package (yellow rectangle) mounted in a socket to be easy replaced
- SN754410 dual H-bridge (purple rectangle) with 1A continuous current draw per motor (2A peak)
- screw terminals for motor connection (green squares)
- correct hole placements and female headers to fit the Arduino Diecimila perfectly
- extended the board on the left side so the sensor and servo connectors do not interfere with any shieds
- replaced the bulky 220uF capacitors with lower profile 100uF capacitors so they fit under the shields
- installed the 5V 3A voltage regulator flat on the board with the hole aligned to the mounting hole of the board (red square at the top of the board)
- a 3.3V 250mA voltage regulator to power off sensors that need that voltage (pink square at the bottom of the board)
- added a second power switch for the motors and servos (brown rectangle at the top of the board)
- 6 connectors for servos (top left corner), with Ground (black), Voltage (orange), Signal (yellow) pins
- 6 connectors for sensors (bottom left corner), with Ground (black), 5V (red), Signal (yellow) pins
- jumper J1 to select the power for the servo connectors either 5V (shunt in red rectangle position) or battery voltage (shunt in orange rectangle position)
- jumpers J2 and J3 to select the control mode for the motors, either 2 signal pins (shunt in black rectangle positions) or 3 signal pins per motor (shunt in grey rectangle positions) with the loss of 2 control pins for servos
- relocated the reset button (light green rectangle) to the upper right corner, close to the edge of the board
- ISP header for hardware programmer (blue rectangle)
- relocated FTDI header (dark blue rectangle) at 90 degree for easy access from under a shield
- doubled the female headers with male headers perfectly spaced so you can build your own shield from a perf board or use wire jumpers for custom connections
- the electronics power switch is hard to flip when under a shield
- the motor power switch does not fit between the jumper and voltage regulator on the board, I had to solder it sideways, but it may be a good thing. I will look into sourcing 90 degree switches
- the 3.3V regulator has to be mounted in reverse, wrong pad connections in Eagle
I guess third time is the charm, so the next revision of the board will have these issues fixed. Until then, look at how nicely the board fits my Compact robot:
Of course, I added the kit to the store here and have updated the Assembly Guide that you can download here.
Looking at what search terms people used to get to my blog, I found that people are looking to find a way to use old Lego sensors (from the RIS kit) with Arduino. It is very simple.
1. Hardware. You need to cut a Lego cable (not the one connected to the sensor, use an extension cable) in 2 and use each half to connect a sensor to Arduino. Split the cable in 2 wires, solder a male pin to each wire and plug one wire in a GND pin and the other wire in any available analog pin, let’s say A0.
2. Software. You need to set the pin as Output and High for about 10 milliseconds for the sensor capacitor to charge, then set the pin back to Input and do a analog reading. Remember, when you set an analog pin to Output you need to use the equivalent digital pin mapping, not the analog channel! Use the reading as raw value (0-1024) or convert it to percent by using the map command. Here is a sample code:
#define legoSensorPin 14 // digital pin D14 is analog pin A0
#define legoSensor 0 // this time we define the analog channel
int raw=ReadLegoSensor(); // we read the raw value of the sensor
Serial.print("Raw value: ");
Serial.println(raw); // and print it to the monitor
byte percent=map(raw, 0, 1024, 0, 100); // we convert raw to percent
Serial.print("Percent value: ");
Serial.println(percent); // and print it to the monitor
pinMode(legoSensorPin, OUTPUT); //set pin as output
digitalWrite(legoSensorPin, HIGH); //set output high
delay(10); // wait a bit
pinMode(legoSensorPin, INPUT); //set pin as input
int value=analogRead(legoSensor); //read the input
return value; //return the raw value
That’s it! I hope someone will find this useful!
I was told that the Arduino name is trademarked so I can’t use it without paying a license and have the written approval from the Arduino team. I mistakenly thought that if the word Arduino is used in conjunction with other words is ok. So I have changed the name of the board to Robot Builder’s R-duino. I will order new boards with this name and also with a few other improvements in the following week. Until I get them in stock, no kit will be sold that contains boards that wrongfully use the Arduino name.
Apologies to the Arduino team and thanks for understanding.
I finally had time to finish up the assembly guide for the RBA kit. Phew!
One big observation: the first batch of 10 boards have the Tx and Rx pins not swapped, so if you plug in the FTDI cable the board can’t be programmed. For this reason, the first 10 customers will receive for free an adapter that swaps the pins. All you need to do is plug the adapter into your FDTI board or cable, then plug the female part of the adapter into the RBA board. This bug will be corrected in the next batch.
Here is a picture of the assembled board:
And here is my LMR Start Here Robot with the RBA on it:
I’ve been asked, even though there are plenty of similar products out there, to make a board that combines the Robot Builder’s Shield with the Arduino. Make it the same footprint as a regular Arduino board, but keep the same features of the RBS. I said, why not use the µBotino? Well, because is not shield compatible. People want to add other shields, like a color LCD shield, or an xBee shield. So I started to fiddle around and see if I can cram everything I wanted on the same board using TH (through hole) components. Not everything I wanted got there, but most of the stuff made it. Sure, I want a board that satisfies all needs, but that would make it bigger (and there are plenty out there like that) or use SMD. So here is what I got done:
- same size as a regular Arduino board, with 3 mounting holes,
- 6 servo connectors (selectable power – J1, digital pins 8-13),
- 6 sensor connectors (regulated 5V, all analog pins),
- a SN754410 H-bridge (1 amp per motor, digital pins 4-7, uses Timer0 for PWM),
- screw connectors for motors,
- pins 2 and 3 (external interrupts) available for encoders,
- a FTDI connector (to program the board using a USB-serial cable),
- a ISP connector (to program the board using a hardware prorgammer),
- polarized Molex connector for the battery (4.5-12V, no more than 6V if you use servos),
- 3A LDO voltage regulator,
- reset button,
- pin D13 LED,
- power LED,
- power switch,
- all Arduino female pins are doubled with male pins, arranged to allow easy prototyping shields,
- filtering caps near the sensor and servo 3 pin connectors.
J1 is to select power to the servos, either regulated 5V or directly from the battery.
J2 and J3 are to select the motor control mode, either 2 pin mode (Enable High, one Dir for PWM and the other for direction) or 3 pin mode (PWM on Enable, 2 direction pins). In 3 pin mode, 2 I/O pins allocated for servos are routed to the motors, so you end up with 4 servo connectors available. The LED on D13 has no selecting jumper, so it will flicker when a servo is connected to the same pin.
One more thing, the board does not have a 3.3V regulator, so even though the 3.3V pins are in place, they are not connected to anything and do not provide power for other shields. I don’t think I can cram in a TO92 regulator in there…
Here are the pictures of the PCB layout and the schematic, the blue is the bottom copper -GND plane, the red is the top copper – 5V plane. Round pins are male, oval pins are female (click for a larger image):
I have ordered 10 boards at SeeedStudio, they should arrive in about 3 weeks. The parts should arrive sooner, but after Canada Post’s strike, mail is backed up and it seems forever until… oh, the parts come by FedEx, never mind… Yeah… Can’t wait to test one!