2 days ago •
The M10 board has a rich set of peripherals, and their correspondent Technical Reference Manuals have all been uploaded to the "Files" Section:
- Technical Reference Manual for microSD controller
- Technical Reference Manual for I2C Controller (both Master and Slave)
- Technical Reference Manual for voice CODEC controller
- Technical Reference Manual for DTMF decoder
- Technical Reference Manual for UART controller
- Technical Reference Manual for PWM controller
- Technical Reference Manual for Serial SRAM
- Technical Reference Manual for JTAG UART
- Technical Reference Manual for onchip A/D Converter
3 days ago •
The M10 is a FPGA board with a soft core MCU running at 96MHz. It also features a rich set of onboard peripherals like voice CODEC, (including microphone and speaker jack), microSD socket, SRAM, onchip A/D converter, Temperature sensor diode and dual voltage IO etc. It can be used as a core module and can morph into a lot of cool things. Below is a demo of using the M10 board to make a small home automation system that allows you to check your home temperature when you are away.
Here is how the demo system works:
- You call your home number from somewhere far away
- The answer machine will pick up the call after it rings twice.
- When the answer machine asks you to leave a message after the tone, key in the pass-code that is configured beforehand. In this case, it will be *1234#
- The M10 board has onboard microphone and voice codec. The keys you pressed will be heard as DTMF signals over the answer machine, and those DTMF keys will be collected and decoded by the M10 board.
- If the pass-code matches, the M10 board will pick up the phone.
- To make the demo more interesting, the phone is actually picked up through a DC motor that ties to a Lego crane, as shown above in the diagram.
- BTW, To drive the DC motor, you need two things: one is the PWM signal, which the M10 board has hardware controller and software drivers built-in. The other is a motor driver that has a H bridge in it, so you can drive the DC motor with high current, and control the direction the motor rotates. For that, an Arduino shield from Sparkfun it used.
- After the phone is picked up, a welcome message will be played out. The welcome message is actually played from an audio wave file stored on the microSD card.
- At this point, you can start to key in commands that are predefined. In this demo, command *888# will trigger an action to get the current temperature, and read the temperature numbers out loud by playing audio files for each digit.
- To hang up. Key in the command *999#, which will rotate the DC motor in opposite direction and hang off the phone. Or you could choose to sit idle and let the system timeout after about 20 seconds, which will also trigger the DC motor and hang off the phone.
Now, without further ado, let me give the demo:
- 07/24/2017 at 06:35 • 0 comments
07/13/2017 at 07:54 •
This is a follow up post to Stick Shift Lego Monster Truck
Last Month Hackaday had a post for "Converting a Robotic Motor For Lego Blocks",
and I happen to be building a Lego Monster Truck and I need a good way to power steering my vehicle. So I followed the instructions in the above post. But it turns out it requires more hand craft skill than I thought, and I don't have the 4.8 mm drill bit either, thanks to the imperial systems (The closest one I have is 3/16 inch, but I couldn't make it to work).
Fortunately, since I only control the gear box on one side, I found another way to hack:
2) Use a 5/64 inch drill bit to drill a hole on one end of a Lego axle, as illustrated below. For the Lego axle, find the end that has a small dip, which is easy to position your drill bit.
3) The DC motor has two axle heads, with one on each side. One of the axle head is tied to a gear inside the yellow gearbox, so there is not much you can do unless you open the yellow gear box. But the other axle head can be pulled out without opening the yellow gear box. And that one is attached to a metal axle with a seesaw head. Plug the reworked Lego axle from (2) into the metal axle, and you get yourself something that can be used to drive the Lego gear box
4) Use PWM to control the motor, which will drive the Lego gear box (shown below before motor is mounted). Now my Lego monster truck can make turns left and right!
PS: ways to mount the dollar motor
There are many ways to mount the motor onto the Lego bricks. I simply use cable ties to attach the motor firmly to the Lego gearbox.
But you can also stick a 2 x 4 plates (with holes in the middle) to the motor.
Or you can use a Lego compatible DC motor support from the following
(The motor in the following is NOT the same as the one I hacked)
07/10/2017 at 07:15 •
My daughter was pouting her lips last week because she found out her Lego bricks were stolen by her daddy. Fortunately, I'm now able to make it up by giving her something better.
The Lego Monster Truck you see in the following video is a demonstration of PulseRain M10's capability. It uses one PulseRain M10 board, one PWM shield and one ESP8266 shield. Both shields are from Sparkfun.
This monster trunk has two DC motors. One is for driving while the other is for steering. Most Wifi Robot cars on the market are using 4 wheel drive or 2+ 1 (Two wheels plus one caster). With 4 wheels or 2+1, the designers can avoid dealing with the steering mechanism. And to make turns, those cars will spin the wheels on each side in opposite direction. However, the drawback of such design is that each driving wheel was pushed by a separate DC motor. And no two DC motors are the same, especially for cheap ones used by toy. This makes it hard for those cars to go straight lines.
Of course, those can be fixed by:
(1) Manual calibration, where a potentiometer (or something with similar nature) can be used to keep the two DC motors spin the same way
(2) Use better motors and better control mechanism. Instead of using open loop, a close loop control can be adopted. However, close loop requires a sensor (such as speed, position etc) for feedback. Those will just make things a lot complicated or more expensive.
The Lego Monster Truck shown below takes a different approach. It uses Lego gears and beams for steering. To make it happen, I made a hack to one of the DC motor and the Lego axle (more to follow on this part) so that the motor can work with a Lego gear box.
For driving force, another DC motor was used to drive two wheels with one axle. In this way, no need to worry about any mismatch of motors.
And to control the truck, I chose a retro style joystick that is compatible with Atari 2600 . Yes, this is a stick shift vehicle :-) For hardware building instructions, please go to http://limerick.pulserain.com/2017/07/how-to-build-lego-monster-truck.html . For firmware and host software, please go to https://github.com/PulseRain/Lego_Monster_Truck .
Now, without further ado, Let me give you the Lego Monster Truck:
06/13/2017 at 06:29 •
Got ESP8266 Wifi Shield from Sparkfun. Initially I thought I need to replace the DC Power Jack with a low profile one. But now it seems that is unnecessary :-)
- 05/01/2017 at 01:09 • 0 comments
04/30/2017 at 06:11 •
The BOM of this project has also been uploaded to findchips.com to streamline the supply chain. The good news is findchips.com is a very handy tool to gauge the BOM cost and available stocks. The bad news is that we've just found the microSD socket in the current BOM (SCHD3A0100) is obsolete. Fortunately, we have found a pin compatible part from Molex (47219-2001)
04/30/2017 at 04:50 •
Being a HackadayPrize2017 entry, one of the obligations is to "document all open source licenses and permissions as well as any applicable third party licenses/restrictions". To fulfill this obligation, a file named "PulseRain M10 Designs – License Agreement" has been uploaded into the FILES area of this project.
In a nutshell,
- The PCB portion of the PulseRain M10 Designs, as defined in the license agreement, are licensed under the terms and conditions set forth in Creative Commons Attribute-ShareAlike 3.0 United States.
- The FPGA portion of the PulseRain M10 Designs, as defined in the license agreement, are licensed under the terms and conditions set forth in GNU Public License Version 3 (GPLv3). And for those who want to use the FPGA portion of the PulseRain M10 Designs in ways that are incompatible with GPLv3, PulseRain Technology LLC. offers commercial licenses instead.
- The firmware portion of the PulseRain M10 Designs, as defined in the license agreement, are licensed under the terms and conditions set forth in GNU Lesser General Public License Version 3 (LGPLv3).
- The software portion of the PulseRain M10 Designs, as defined in the license agreement, are licensed under the terms and conditions set forth in Apache License Version 2.0
But please do look at the fine print, as that's the official license agreement that carries legal weight.
04/23/2017 at 22:14 •
The initial test on pilot run boards runs ok. And the V1.0 schematic and layout files are now released under
And the design was made with Eagle CAD 7.7