Welcome to the Pololu Blog, where we provide updates about what we and our customers are doing and thinking about. This blog used to be Pololu president Jan Malášek’s Engage Your Brain blog; you can view just those posts here.
We posted about a Simulink library for the Zumo robot recently, and now a tutorial that teaches you how to use that library to program a Zumo robot with Simulink is available on the Adafruit Learning System. The guide walks you through setting up a Simulink model to make the Zumo follow a specific trajectory, then loading the generated code onto the Zumo to see it run.
Related post: Zumo robots programmed with Simulink by MathWorks
MathWorks, the producer of technical computing software including MATLAB and Simulink, has released a Simulink library for the Zumo robot. The library provides blocks that represent all of the sensors and peripherals on our Zumo robot for Arduino, making it possible to program an Arduino-controlled Zumo robot using Simulink.
These Simulink-programmed Zumo robots have made a few appearances on MathWorks’ MakerZone blog. This article discusses the math behind programming a robot to follow a line, modeling the control system as a harmonic oscillator.
MathWorks also used several Zumos as part of a demonstration at the Robot Zoo, part of the 2014 Cambridge Science Festival. You can read more about their Zumo demonstration, as well as their other robot exhibits, in their recap of the event.
Related post: How to program a Zumo robot with Simulink
We now have a second distributor in China: TinySine, an electronics manufacturer and retailer located in Hefei, Anhui province. They are initially carrying several of our products including the Maestro, Wixel, and A-Star.
TinySine, also known as Tinyos Electronics, ships worldwide with several express services as well as the low-cost Hongkong Post, so they are worth considering for your next project, wherever you are located. Please let them know if there is a Pololu part that you would like to see in their shop!
Level shifting is a common issue when interfacing multiple microcontrollers or other digital logic devices. For example, you cannot directly connect an Arduino running at 5 V to the Wixel, which runs at 3.3 V. Our Wixel Shield for Arduino contains several level-shifting circuits to help you do this.
In some cases, such as connecting a digital sensor output to your microcontroller, a simple voltage divider or transistor inverter might be good enough. However, in many cases a better solution is necessary. I²C, for example, is a common protocol that makes use of a bidirectional communication line. Luckily, a relatively simple circuit consisting of a MOSFET and two pull-up resistors can be used for general-purpose bidirectional level shifting:
We have used this level shifter circuit on many of our breakout boards operating at a lower voltage, such as the MinIMU-9. It works like this:
The circuit works for any pair of voltages (within the limitations of the MOSFET) and can be used with most common bidirectional and unidirectional digital interfaces, including I²C, SPI, and asynchronous TTL serial. You can read more about it in NXP’s application note on I²C bus level-shifting techniques.
Today we released a logic level shifter board featuring four of these bidirectional channels:
Our board can convert signals as low as 1.5 V to as high as 18 V and vice versa, so you can use it for almost any logic-level signals that you might encounter in your project. It is also, as far as we know, the smallest bidirectional logic level conversion board out there:
Note the use of a more internationally-appropriate size reference than our traditional U.S. quarter. After we put together this image, nobody believed that the board was actually that small, but we verified it several different ways to make sure.
Anyway, with this board’s small size, low cost, and versatility, we think it is something that everyone should have in their toolbox. For more information or to order, see the product page.
Get FREE copies of Circuit Cellar magazine’s May issue and Elektor magazine’s May issue with your order, while supplies last. To get your free issues, enter the coupon codes CIRCUIT0514 and ELEKTOR0514 into your shopping cart. The magazines will add 6 ounces and 7 ounces, respectively, to the package weight when calculating your shipping options.
Looking for a way to pump up your next project? Let the Muscle Sensor v3 from Advancer Technologies do the heavy lifting!
This small, easy-to-use, 1″ × 1″ board measures muscle activation via electric potential; this is referred to as electromyography (EMG). The sensor measures, filters, rectifies, and amplifies the electrical activity of a muscle; as the muscle flexes, the output voltage increases, resulting in a simple analog signal that can easily be read by any microcontroller with an analog-to-digital converter (ADC), such as our A-Star or an Arduino.
The engineers here were pretty excited to play with these when we got our first samples, as many of us hadn’t used anything like it before. While thinking of various ways to test the sensor, a few of us remembered this ridiculously awesome video of Terry Crews making music with his muscles. (Gets me every time! #MuscleEnvy.) Without getting ahead of ourselves, we decided to try something much quicker and more straightforward with some of our electronics.
In the demonstration video at the beginning of this post, you can see the muscle sensor in action as it measures the muscle activity of my bicep. The demo uses the muscle sensor with a Maestro servo controller to update the position of a hobby RC servo based on how hard I flex. The setup was very simple; the analog output signal from the muscle sensor is connected directly to channel 0 on the Maestro, and the two boards share a common ground. The muscle sensor is powered by two 1S LiPo batteries and the Maestro and servo (connected to channel 1) are powered from a separate 6 V battery pack.
The Maestro script we used is very similar to the “Using an analog input to control servos” example script provided in the Maestro user’s guide with a couple of modifications. We changed the scaling of the input channel (since our signal was from 0 V to 3.7 V) as well as the channel numbers to match our setup. The whole script is only a few lines long:
# Sets servo 1 to a position based on the analog input of the Muscle Sensor v3. begin 0 get_position # get the value of the muscle sensor's signal connected to channel 0 6 times 4000 plus # scale it to roughly 4000-8092 (approximately 1-2 ms) 1 servo # set servo 1 accordingly repeat
We can’t wait to see all of the amazing things you come up with when you engage your brain (and your muscles) with this sensor!
We are happy to welcome GarageLab as a Pololu distributor! GarageLab, located in Doral, FL, is the US branch of our Brazilian distributor Laboratório de Garagem. They carry a wide range of Arduino, microcontroller, and robotics-related products, including their very own Arduino-compatible Garagino.
For distributors in your area, you can check out our complete list of almost 200 distributors.
Inevitably, if you work with electronics long enough, you will encounter a wire that is too long, too insulated, or too connected (to the wrong thing), and while you might be able to MacGyver your way out of the situation with a pair of scissors or a suitably hardy set of teeth, nothing beats a good wire stripper. With that in mind, we set off in search of some good, basic wire strippers that would get the job done well without breaking the bank. Our favorites were a set of multi-purpose wire strippers and cutters that feature comfortably curved and cushioned grips and a nose that can be used as pliers. One version works with 10 to 20 AWG wires and another works with 20 to 30 AWG wires. (The stripping holes are labeled with the gauge of solid-core wire for which they are intended; for stranded wire, use the next larger hole.)