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.
As I wrote a few years ago, we used to use Travis CI and PlatformIO to confirm our Arduino libraries and examples compile after every code change. This helps us maintain confidence in the quality of our code and makes it easier to release changes. Of course that’s not as good as the extensive testing with actual hardware that we also do, but it’s really great as a quick check that we haven’t completely broken anything.
Unfortunately, Travis CI doesn’t work for code in development that has not yet been put up on GitHub. That, combined with Travis CI limiting how many testing minutes you get each month for free and GitHub Actions existing as a free replacement for it, pushed me to make a new solution that works for us.
So, we made arduino-ci: a simple Ruby script that is super easy to use with the continuous testing solutions provided by GitHub and GitLab. It uses arduino-cli to install cores (bundles of code for specific Arduino board architectures), install library dependencies, and compile all the examples. By default, it compiles all examples for the following boards:
You can use the configuration file to edit these defaults and add any additional library dependencies.
This isn’t the only Arduino continous testing program around. There’s also:
- arduino_ci (underscore not dash) – a much bigger Ruby project with features like C++ unit testing and mocks
- ci-arduino (are you seeing the pattern of confusing names yet?) – Adafruit’s testing program written in Python with features like Doxygen integration and code formatting
Sorry about the names, really! In contrast with these, arduino-ci is a very small program that focuses on compiling Arduino libraries and examples.
We are using arduino-ci for all of our libraries, and it should work for any Arduino Library, so if you have one, please try it out and tell us what you think! For more information, please read the arduino-ci readme.
We have one last sale for you before 2020 comes to an end! Get discounts on products we released in 2020, on all active Pololu-brand items, and on some select products that we’d like to reduce our inventory of. The sale runs through the end of Friday, January 1. Visit the sale page for details. Happy New Year!
Seven years ago, we released a CP2104 USB-to-Serial Adapter Carrier, our first product with a USB Micro-B connector (we had only used Mini-B up to that point). A few months later I wrote a blog post discussing our decision to switch connector types, and since then, we have exclusively used the Micro-B connector in all of our USB products.
Well, it’s now 2020 and we recently released a CP2102N USB-to-Serial Adapter Carrier to replace the CP2104 board, along with a breakout for a different type of USB connector: our USB 2.0 Type-C Connector Breakout Board (usb07b). These products do not seem to have much in common at first glance (other than both being related to USB), but I think they create a good opportunity to talk about USB connectors again.
First, a bit about these new boards:
The CP2102N is Silicon Labs’ replacement for several of their older USB-to-UART bridge ICs that are going out of production, including the CP2104. (It is not to be confused with the even older CP2102 without the “N”, featured on our first USB-to-serial adapter and also being phased out.) Compared to the CP2104, the CP2102N has similar functionality but includes a few small improvements, such as a higher maximum baud rate and a re-programmable configuration ROM. Our CP2102N carrier can be used as a drop-in replacement for our CP2104 board in most applications. For more information, see the product page for the CP2102N USB-to-Serial Adapter Carrier.
Our usb07b connector breakout board is very similar to the first Type-C breakout (usb07a) that we released last year. The two boards use different styles of connectors, and the newer one is priced a bit lower, but they both provide access to all of the USB-C connections required for USB 2.0 operation (power, USB 2.0 data, configuration, and sideband pins) and feature integrated CC pull-down resistors that make it easy to use the port as a power sink. For more information, see the product page for the USB 2.0 Type-C Connector Breakout Board (usb07b).
So now, the obvious question is: Why doesn’t this new serial adapter have a USB Type-C connector?
When we designed and released the CP2104 board in 2013, the USB Type-C connector did not even exist yet. (Its development was probably well under way, but the specification was not finalized until August 2014.) Since then, USB-C connectors have started appearing in all kinds of devices and are becoming increasingly widespread. They offer the promise of a single type of connector that can be used everywhere, supporting faster data transfer, higher power, and alternate modes. On top of all that, the connector is reversible, so you don’t have to worry about getting the orientation of the plug right.
With those advantages in mind, it’s reasonable to wonder why we haven’t started using the Type-C connector in more products. I touched on some of the challenges introduced by USB Type-C when I announced for our first USB-C breakout board, and that increased complexity accounts for part of the explanation here. A full-featured Type-C connector like the one on usb07a has 24 separate pins, way more than the five on a Micro-B connector, which means it’s significantly harder both to design a printed circuit board for it and to ensure good quality and yields when manufacturing that board (especially since half of the contacts on the usb07a connector are small, tightly-packed through-hole pins). Because it is more mechanically complex, the Type-C receptacle usually also costs quite a bit more than a Micro-B connector.
The connector on our new usb07b board improves the situation a bit. It does not expose the eight USB 3 SuperSpeed signals (which we did not make available on our usb07a breakout anyway), and some of the power and ground pins are paired up more conveniently. So this connector effectively has just 12 pins, and they are all surface-mount, which helps lessen some of the design and manufacturing challenges I mentioned. The connector’s simpler construction makes it slightly less expensive as well.
Bottom view comparison of the USB Type-C connectors used on our usb07a (left) and usb07b (right) breakout boards.
This means it’s now a little bit more practical for us to consider a Type-C connector for more applications. However, there is still some question of what is to be gained by switching to it. While the enhanced power delivery capabilities of USB 3 and Type-C might open up some interesting possibilities for new kinds of devices, it’s not clear that our existing products would benefit much from a change to USB-C, and there are some features like SuperSpeed communication that we are not likely to take advantage of anytime soon with the types of electronics we make.
So we want to ask you: what products, revised or new, would you like to see us make with USB Type-C? Would a device have to be uniquely enabled by Type-C in order to be compelling (maybe something like a USB bus-powered motor controller), or is just having a reversible connector alone worth it, and would you be willing to pay a couple extra dollars to get something with a Type-C connector instead of Micro-B? What else about USB-C appeals to you? Please let us know in the comments!
If you missed our Black Friday sale or realize you didn’t quite get everything you wanted, don’t fret: now through December 24, we have all active Pololu-brand and PCX products on sale for 12% off, and we are offering 15% off twenty broad categories of our products. Save on some Christmas shopping, or stock up now on robot parts for the new year. Merry Christmas!
We have expanded our selection of JST SH-style cables and connectors! These cables and connectors are ideal for use with our magnetic encoders for Micro Metal Gearmotors as seen in the photo on the right above.
In addition to the 6-pin single-ended female JST SH-style cables we’ve offered for a while, we now offer 6-pin female-female JST SH-style cables in five different lengths. Here’s the full list of currently available options:
- 6-Pin Female-Female JST SH-Style Cable 10 cm
- 6-Pin Female-Female JST SH-Style Cable 16 cm
- 6-Pin Female-Female JST SH-Style Cable 25 cm
- 6-Pin Female-Female JST SH-Style Cable 40 cm
- 6-Pin Female-Female JST SH-Style Cable 63 cm
- 6-Pin Single-Ended Female JST SH-Style Cable 12 cm
- 6-Pin Single-Ended Female JST SH-Style Cable 30 cm
- 6-Pin Single-Ended Female JST SH-Style Cable 75 cm
To go along with the new female-female cables, we also have breakout boards available for both the side-entry and top-entry versions of the JST SH-style connector. When used with our encoders and JST cables, these breakout boards offer a convenient way to access the encoder signal and power pins through a breadboard, and the pins are labeled on the board’s bottom silkscreen with this application in mind. Alternatively, these boards can serve as general-purpose breakouts for other applications that do not involve encoders. For example, a pair of connector breakouts with a female-female cable could be used as a removable general-purpose interconnect between different parts of a modular system.
We are trying something new with how we package and sell these connector boards. At Pololu, all our electronics undergo functional testing, where each product is placed on a custom testing apparatus and checked for functionality. This is a labor intensive step in our production process, and for a product as simple as these connector boards, testing and packaging represent a significant amount of the cost to produce it. As such, we are offering two options for purchasing these connector boards: either fully tested and individually packaged, or an untested pack of three.
Even though we do not functionally test the discounted 3-packs, each one undergoes automated optical inspection (AOI) to visually check the placement of the connector and the quality of the solder joints. Additionally, each printed circuit board (PCB) is electrically tested by our PCB manufacturer, so we know the PCB itself is free from electrical defects. This makes it very unlikely for any of the breakout boards to be bad.
The additional functional testing we perform on the fully tested units just confirms the solder connections between the connector and the board. If you purchase the untested units but would still like this additional confirmation, you can easily check it yourself with a multimeter. (Just use it to check for continuity between corresponding pins on the actual JST connector and through-holes on the board, and verify that there is no continuity between adjacent pins.) In the unlikely event you receive a unit with a poor or shorted connection, you should be able to touch it up yourself with a soldering iron. So for common applications that require two boards, such as use with a pair of encoders, you have the option of two individually packaged units we have confirmed functional or, for the same price, three units that have passed visual inspection and are very likely to leave you with two functional units plus a spare.
All units automatically optically inspected.
Here are all of our 6-pin JST SH-style connector options:
- Breakout for JST SH-Style Connector, 6-Pin Male Top-Entry (Individually Packaged)
- Breakout for JST SH-Style Connector, 6-Pin Male Top-Entry (3-Pack Untested)
- Breakout for JST SH-Style Connector, 6-Pin Male Side-Entry (Individually Packaged)
- Breakout for JST SH-Style Connector, 6-Pin Male Side-Entry (3-Pack Untested)
What do you think about this kind of approach where we test something less thoroughly in order to offer it at a lower price? Would you prefer it over the fully tested option? Do you think one option will be more popular than the other? We’d love to hear your thoughts!
Our Black Friday / Cyber Monday sale is going strong, and we have been working hard to make and ship the products that people are getting great deals on. Most of the sale coupons can be used on backorders if we happen to run out of stock, but you should still get your orders in early since lead times on some popular products can get long.
Please note that our same-day shipping guarantee has been suspended since we started operating with a reduced staff in March due to the COVID-19 pandemic (see Jan’s latest post here), though we will do our best to get your order shipped as fast as we can. Additionally, we are closed Thursday, November 26 (tomorrow) for Thanksgiving. Happy Thanksgiving!
I am thrilled to announce the release of our newest robot, the 3pi+! This new platform is a major upgrade from the original 3pi robot we introduced twelve years ago. At 97 mm, the diameter is just 1mm larger than the original, and the general concept of a tiny, fast robot powered by four AAA batteries and two micro metal gearmotors remains the same. However, just about everything has been redesigned from the ground up to add the extra features everyone has been asking for.
First off, the 3pi+ is now a platform that encompasses a range of products, not just one particular robot. This is enabled primarily by the chassis now being an independent structure rather than being a specific circuit board with motors strapped on:
3pi+ Chassis Kit (No Motors or Electronics).
The chassis incorporates the battery holders, motor mounts, and ball caster. An outer bumper skirt is removable and the motors can instead be held in by separate clips (also included in the kit). The left-most picture shows the chassis with motors installed but without the bumper skirt or motor clips, and the next two pictures show the motor clips installed:
Making the chassis separate from any electronics means that you can use it with your own electronics and that we can make various versions with different capabilities and microcontrollers.
The first full 3pi+ robot we are launching is the 3pi+ 32U4, which is based on an Arduino-compatible ATmega32U4 microcontroller from Microchip (formerly from Atmel). Like the original 3pi, the 3pi+ 32U4 has five integrated downward-looking reflectance sensors, making the robot a great starting point for line following and line-maze events.
The 3pi+ 32U4 offers many major improvements over the original 3pi, including:
- ATmega32U4 microcontroller with Arduino-compatible bootloader can be programmed directly through a USB connection
- Quadrature encoders on both motors for closed-loop position and speed control
- Full 9-axis IMU (three-axis gyro, accelerometer, and compass)
- Bottom-loading battery holders keep batteries accessible even if additional levels are added
- Full wrap-around bumper to protect electronics from collisions
- Two bump sensors on the front
3pi+ 32U4 Robot features, top view.
3pi+ 32U4 Robot features, bottom view.
The 3pi+ 32U4 is also available with three motor options for different usage scenarios:
|3pi+ 32U4 Version||Products||Micro Metal Gearmotor||Top Speed||Comments|
|Standard Edition||assembled or kit||30:1 MP 6V||1.5 m/s||great all-around balance between controllability and speed, with top theoretical speed above that of the original 3pi|
|Turtle Edition||assembled or kit||75:1 LP 6V||0.4 m/s||longest battery life, easiest to control, appropriate for swarm robot projects or classrooms where you might not want robots flying around the floor (or desktop) too quickly|
|Hyper Edition||assembled or kit||15:1 HPCB 6V||~4 m/s||ridiculous speed, which can definitely be fun. But, controlling that speed can be difficult, which can make the robot more prone to self-destruction (or at least self-inflicted damage), so we recommend this only for advanced users|
These three 3pi+ 32U4 motor options are available in assembled or kit form, and for those who want to do your own thing, the parts are available separately so that you can pick some other motor or gear ratio.
Normally we would have an introductory special for this big of a new product release, but since we are about to launch our annual Black Friday and Cyber Monday sale, you can get a great discount on the new 3pi+ there!
This week marks eight months since business shutdowns began in Nevada in response to the coronavirus pandemic. Here is an update about how we have been surviving at Pololu since my last detailed post in April, when we got our PPP loan.
We managed to reach a record sales quarter for Q1 despite the last few weeks being under the Nevada emergency measures and February onward being disrupted by the shutdowns affecting our China operations. Sales really dropped in April and even more in May, leading to Q2 sales ending up the worst since 2013. The money we received in April from the PPP loan allowed us to keep paying those employees who were still working and to cover health insurance and other benefits for the rest. We submitted our PPP loan forgiveness application in early July on the day our bank released their application and kept in constant contact with our bank rep while we maintained core operations with a minimal staff.
The initial loan application had been approved very quickly, so we were hoping to get a resolution on the forgiveness similarly quickly to let us know where we stood regarding how much we would be in debt. We made some tough staffing decisions in July and August, and that turned out to be a very good move because the loan forgiveness process ended up taking a lot longer. We started the year with around 80 employees, and by the end of August, we had reduced that to around 55, of which about ten work only remotely. Everyone else has now formally quit or been laid off, with some hope that most of them could eventually return once the pandemic is under control.
Q3 brought several special high-volume sales, including components going into coronavirus testing equipment around the world, which helped Q3 sales inch past our Q1 sales for a new all-time record sales quarter. Perhaps some of that was also impacted by orders delayed from Q2 and from schools buying more kits for the resumption of classes in the fall. It sure felt like things were going in a good direction, which I guess is how a lot of the world felt.
The news did not stay good for long as sales dropped a lot again in October, falling below our April low (but not getting as bad as May) as the new wave of COVID cases swept Europe and brought in renewed shutdowns in many countries there. November has so far also been weak as the coronavirus continues to surge across the globe.
We got one bit of good news for Pololu last week when our PPP loan forgiveness went through! We did not get our whole loan forgiven, but it was over 90% of the loan amount, which is a substantial amount of money that covers a lot of our losses from Q2 and lets us approach the end of the year with a bit of cash reserves instead of being in a hole. It’s a huge relief knowing we should be able to ride out the holiday season without having to do further layoffs.
We are of course working hard to do more than just to get by for another few months. Some of the staff we brought back in the summer are working on new and exciting products, including resumption of projects we had been working on long before the coronavirus hit. We have not even done proper announcements of some of the items that are already released, including our 3-channel wide field of view (FOV) distance sensor module.
That was a very challenging project that I still intend to write about in a separate blog post. Right now, I have one more product to tease that we are pushing to release in time for the holidays!
Speaking of the holidays, normally we would be gearing up for our biggest sale of the year, our Black Friday/Cyber Monday sale that has run from the Wednesday before Thanksgiving through the following Monday. This also made that period very busy for our shipping and manufacturing departments. Since we are working with a reduced staff this year and many people are already stretched thin covering multiple roles, we will be scaling back the intensity of the sale and running it longer in the hopes of distributing the load on those departments. Last year, we introduced a design-your-own-doorbuster promotion, and that was pretty fun to run, so we’ll try to do that again (though we’ll probably be less open to selling things at a loss just to be in the holiday spirit).
Only six more weeks of this crazy year to go! I am so grateful to everyone who has helped us get this far, from all the customers who kept ordering to the employees who stuck with me through the scariest times to everyone who has made a donation. Thank you very much and stay healthy and safe, everybody!
December 2020 update: ST originally specified a 3 m (10 ft) maximum range for the VL53L3CX, and we initially released this product with the name “VL53L3CX Time-of-Flight Multi-Target Distance Sensor Carrier with Voltage Regulator, 300cm Max”. However, they have since released an updated API with software improvements that increase the maximum range to 5 m (16 ft), so we have updated the name of this product accordingly. The latest version of the API should enable this increased range on existing boards as well as new ones; the hardware has not changed.
Please note that the rest of this post has not been updated to reflect the increased 5 m range (which now exceeds the VL53L1X’s 4 m range).
We are now offering a VL53L3CX Time-of-Flight Multi-Target Distance Sensor Carrier. The VL53L3CX is one of ST’s latest ranging sensors featuring their FlightSense technology, which determines distance by measuring how long it takes for emitted light to be reflected from a target and arrive back at the sensor. It can work at distances of up to 3 m, putting the VL53L3CX’s effective range in between those of ST’s older VL53L1X and VL53L0X integrated lidar modules.
Beyond just being an intermediate option, the VL53L3CX is interesting because it has the ability to detect multiple targets within its field of view. This is possible because instead of picking out a single distance based on the reflections received by the sensor, the VL53L3CX outputs histogram data representing how much reflected light it is receiving within different time intervals. The host processor can then read this data through a digital I²C interface and analyze it using special algorithms that ST provides as part of their VL53L3CX API.
This enhanced capability does come at a cost: the added complexity of the histogram processing means that the host requires much more RAM and program memory, making the VL53L3CX difficult to use with small microcontrollers. In our testing, we were unable to fit the VL53L3CX API on a typical 8-bit Arduino, and we are not providing an Arduino library to support the VL53L3CX; therefore, we recommend sticking with the VL53L1X or VL53L0X for applications with similar constraints. However, if you have more resources available on something like a 32-bit processor, the VL53L3CX’s multi-target detection might give you valuable information beyond what you could determine from a distance reading alone.
Grant Grummer used our laser cutting service to create 6- and 8-point acrylic stars for his project, Starlite: A programmable star-shaped canvas for displaying light patterns.
Starlite uses a 3mm thick laser-cut piece of translucent white acrylic (#7328 white, also called “sign white”) for the front face. The LEDs mount onto a thinner (1.5mm thick) piece that has rectangular cutouts that allow the LEDs to connect to the controls, the main control board, and an UPduino daughter board.
If you are interested in making a similar light display, be sure to check out our selection of LED strips!