Robot Marvin controlled with my iPhone
Marvin build with Makeblock, run with a Raspberry Pi that drives an Arduino. Remotely controller by iPhone over WiFi with TouchOSC.
Marvin build with Makeblock, run with a Raspberry Pi that drives an Arduino. Remotely controller by iPhone over WiFi with TouchOSC.
I’m testing the first program for the claw. EDgar can now grab a Lego. The claw sensor is not yet used, but it will be in the next program version. With the sensor, it will spot closing the claw when it will detect an object.
Adding a claw gripper to the robot EDgar.
Replacing EDgar’s wheels. Bigger ones mean faster robot. I stripped the old one. That is the first reason to replace them.
Last week, my son told me he wanted a robot. I took out this old robot from the storage. I never get further than having the motor and a home made H-Bridge fixed to a piece of wood. Back in time, buying a microcontroller was not conceivable.
I finally manage to find a way to make actuators that are enough powerful, small and the most important, noiseless. Since this robot will move all day long, it is essential not to hear it. I tried three types of motors: servos, DCs and steppers. It is not a secret for everyone, theses servos are terribly noisy. The gearbox of miniature DC motor I tried next is too noisy too. At last, I ordered a small stepper with a gearbox and it will be the one selected for the task. So I will replace the three servo motors with these steppers connected to a threaded rod that will move the swash plate.
I’ll have to 3D print some parts to fit all this together, but the essence is there. Now I have to learn to CAD.


You probably saw a bit more of the project I am currently working on, the robot flower. I have completed the second prototype and it works as expected. Now, I want to give the robot the ability to interact autonomously with the environment. Not just be controlled has with the Wii Nunchuk.
I want the robot to interact with many things, but first, I wish it to detect which direction the sound come from around it. Then the flower could orient itself this way.
In think using three microphones and measure which one receive more sound will permit to know the sound direction. I saw some complex project in which they also acquire the distance by triangulation. This is too complex for what I want. The direction is enough.
Then I start digging the web for some schematics. I found many electret microphone amplifier build around an operational amplifier (Op-Amp) chip. So I check for cheap and preassembled ones on eBay. I bough different models before I get one that works as expected. Almost all the microphones breakout boards I found only detect impacted sounds, like hand clapping. I need one enough sensible to capture voice.

The advantage I found with these microphones is that it possible to connect them directly to an analog to digital converter. Then the signal can be interpreted by a microcontroller.
To find the best one for me, I first check with my DSO Nano oscilloscope what is going on at the microphone circuit output. But the real test has been to hook the microphone to my Arduino ADC input. Then with Processing, I plotted the value of the analog input on my screen. This way I really saw how they reacted to sounds and what can I get from it.
Then came the time I tried with two. I quickly faced the fact that the Arduino ADC reads only one input at once. It cycled to read all entries. The delay to switch from one to another take a few milliseconds. Because my idea is to get the highest microphone input at precisely the same time, using this method is useless. This delay broke all my expectation of simplicity.
After some thinking and Googling, I saw a way to use the Arduino’s ADC as a comparator. This idea may be interesting for testing purpose, but it only works with two inputs. I continued my research and look for other microcontrollers, circuits or chips. I saw some very expensive professional devices, no microcontrollers that can do that, and finally a bunch of ICs (AD7865) specialized for that task. However, I did not found any breakout boards for theses simultaneous-sampling ADC ICs and build one is a project by itself. So I slept on that.
The next day I imagine another way. Not tested yet. I will need to put some parts and wires together first. My idea is to compare each input with an Op-Amp, then send the digital logic output to the Arduino.

The microcontroller will be able to understand which microphone is the highly stimulated. I think it will be possible to sample the data over a short period of time, then average the result to know which direction the sound come from. So the next step is to put all this on my proto board and test my theory!
These lasts weeks, I work a little on the first idea that makes me renew with DIY electronics. I won’t currently tell what it is all about, I’m not ready for that now. But I want to share what giving me a headache for now. The idea is to make a plane tilt and lift, following the movement of three servo actuators. The following video of the cardboard prototype demonstrate the mechanism.
Recently I replace the mechanical part with a RC helicopter swash plate. It’s much more efficient for this prototype.



I tried to do the formula myself, but I’m really rusted in trigonometry. A friend’s coworker give me great help. He wrote the formula I needed to make the motor move like I imagine.
I wanted the servo motors to be actuated from a given angle of inclination, the direction of this inclination and an offset in height. There is the formula. It needs some adjustment for the offset. I still don’t really understand how to calculate it. I want the height to be relative to the ray of the swash plate.
void calculateHeights( double phi, double theta, double H, double R, double &L1, double &L2, double &L3 )
{
const double phi1 = 0*pi/180;
const double phi2 = 120*pi/180;
const double phi3 = 240*pi/180;
double x1 = R*cos(phi1);
double y1 = R*sin(phi1);
double x2 = R*cos(phi2);
double y2 = R*sin(phi2);
double x3 = R*cos(phi3);
double y3 = R*sin(phi3);
double nx = cos(theta)*sin(phi);
double ny = sin(theta)*sin(phi);
double nz = cos(phi);
double D = nz*H;
L1 = ( D - nx*x1 - ny*y1 ) / nz;
L2 = ( D - nx*x2 - ny*y2 ) / nz;
L3 = ( D - nx*x3 - ny*y3 ) / nz;
}
This is it for now. I’ll work on the function and get back with it. If you understand more than me, any help is welcome!
There is the project I’m going to give to my two years old son this Christmas. He like playing with all kinds of buttons he found everywhere. But they almost done nothing for him, except the ones on my dryer. So I decided to give him an experience box made of many kinds of button that take different action on lights and a motor.
There are only three little electronic circuits in the box. The rest is only wiring. One circuit is a flip flop to make the two red leds flashes and the other one is an And Gate to make the two arcade button light up the yellow led only when the two button are pressed, the last one is a bicycle flash hacked to fit the panic button.
There are nothing much more to explain about this box, the pictures and the video will tell you all.










