The Factory is back! We're going to drill all the way down on product development this time around. In this new mini-series join us as we design a project from the ground up. We'll cover every step of the process - Part selection, PCB design, firmware development, prototype assembly & testing.... *Everything*.

Transcript

Welcome back to the factory! You can see that things are a little bit different this time around. I'm in streamer mode with the big earphones, because we're going to do something a little different. We've done heaps of updates over the factory, but I think it's time we've really drilled down into one project from start to finish.

So, in this new mini series, we're going to design a brand new product from scratch together. We're going to start from component selection and scoping, that's probably this episode, and we'll move on to PCB design, firmware development, and a whole lot. I'll try to include every decision along the way. It also means that we're open to your feedback. If you have any good ideas along the way, or even bad ones, leave us a comment and we can make this thing as good as we can make it together. Let's get started!

For those that are unfamiliar with PiicoDev, it's an ecosystem of sensors and modules, and connections between those modules and a host microcontroller, in this case a Raspberry Pi. PiicoDev is daisy-chainable because it's an I2C bus, so here on this test paddle you can see that we could daisy-chain all of these modules together if we wished. There is an abundance of sensors; you can sense a lot of things. This is a multi-gas sensor or an air quality sensor, we've got laser distance sensor, light sensor, color sensor, real-time clock, and so many ways to sense the environment.

What I think PiicoDev really lacks is an abundance of output modules, something to affect the environment. We have a OLED display which is really popular, it's one of our most popular modules, and probably because it's most flexible. We also have a buzzer and three RGB LED module. What I really think the ecosystem is lacking is some way to create. potential for error so we want to avoid that if possible

We're going to make some kind of motor driver. There are plenty of R/C motor drivers out there, but I think the lowest hanging fruit is actually some kind of servo driver because servos can be both positional and continuous rotation. So with the same servo driver, we ought to be able to create angular positional motion and create some kind of wheeled robot if we really wanted to.

We're going to have some kind of PCB with a PWM driver on it. We'll of course need a couple of PiicoDev connectors, external power because you can't really drive bulk power at 3.3 volts from a Raspberry Pi Pico, Raspberry Pi, or micro bit, and of course we'll need some servo connections. I'm thinking obviously at least one servo connection, maybe one two or one to five, we're going to be dictated by the space that we have on the board but realistically for most projects I think between around three plus is the sweet spot.

These chips actually come with abundant channels, something like 8 or 16-channels, but I just don't think we'll have the real estate to utilize all of those channels. Other nice to haves we have a surface mount pick and place line, so of course we want to stick to surface mount components if possible. The only unknowns are going to be the servo connections and the power connector, so we'll have to do a little bit of part selection to make sure that we can assemble it. We do have soldering robots, but we kind of want to use those as a last resort. It's a whole extra step in the manufacturing process and so that is just slower, takes more human time, takes more effort, and there's more potential for error, so we want to avoid that if possible. production anymore so that's not gonna work for us

Possibilities for things to go wrong, so the fewer processes we could have to make this the better. I've just turned off my RGB lights because I'm not a real streamer yet. I'm not really into that. Let's choose a part. I'm going to do a really like rep first search and just search for a PWM driver and I trust our search quite a bit, so I'll just see what's out there. We've got Charlie Plex LED drivers, a 16-bit PWM LED driver, and a few other offerings. Now it is 2022 and we are in the throes of global silicon shortages, so the first thing to decide is what's even available and start from there. Gone are the days where you can just get on Mouser or DigiKey and get your esoteric part and you just knew it was going to be in stock. We really have to work backwards from component availability, not just now but whether we have confidence in it whether it's going to be available later.

We could do a whole video on parametric search and in fact Dave Jones with the EV blog does have a rather old but still extremely good video on how to use parametric search. I've looked up one of the TLC parts and yeah, that's not gonna work for us. What are we looking at mid next year? They're also very pricey, five dollars cost for a part in the 100 quantity. I don't think this is going to be the one for us, so we'll put that one on the back burner. Let's have a look at this PCA part. All right, not in production anymore, so that's not gonna work for us.

Stock not in stock, on order, on order, on order. This is just the going rate in 2022, but let's have a look at the dates. Oh, early next year, mid next year, this is one, this one's kind of promising. We're getting 25,000 next month, so I'll keep that one in the back pocket. That might be a candidate.

We have the other TLC part, oh yeah, I think that's probably a non-starter. Availability and price, if we can't get it for an appropriate price then we can't assemble it and deliver it to you. The makers for an appropriate price and I think that I think that this is just it's just too rich. I mean this is great, look at this pop though, it's like a nice quad flat pack no lead, very compact 24-channels, a little bit more than what we require and this is what I kind of expected.

You know the good thing about looking at existing designs is you can see that things have already been market tested and this is really a staple of the maker industry, these like servo drivers. So I think this could be our candidate part. I'll do some more research later, but for the purpose of this video let's proceed thinking that we're going to use this chip.

Working at an electronics store, we don't have to wait until our prototypes come in, we can just hack something like this up to look like a PiicoDev device to see if we can even drive the thing or whether it's just a pain. We can explore its features without having that whole prototyping cycle of buying the single chips, getting a PCB or building something on a surface mountboard. We could get started programming today, but before we get too ahead of ourselves let's just look at the data sheet, see if it's the right one for us. This is a 16-channel LED controller that doesn't phase this LED PWM, it's good for servos. It won't be able to power the servers directly, but we'll have.

External power of course, 12-bit resolution is probably fine. I don't think anyone's going to notice the difference in a server between 12 and 16. Maybe that's naive, leave me a comment if that's a bad call, but I think this is going to be totally fine and as we've already seen, we have the hindsight if someone's done it first. We have that advantage, you know fast mode I²C no problem as it should be, or software programmable I²C bus addresses allows groups of devices to be addressed at the same time. That's pretty cool. I guess if you have a lot of LEDs chained on these things you would want to drive them efficiently. That might be a bit of an esoteric fissure, but it could be pretty cool. We could come back to that later during software development.

Noise filtering on the inputs, cool. Yeah, I mean these feature lists are always very extensive and very favorable. Interestingly, we have six address pins which is just bonkers. You could have an insane number of these drivers on a bus. I don't even care to do the math. One, two, four, eight, sixteen, thirty two. Yeah, you can have like 60 of these on a bus and we've got six hardware address pins which means that we get to set the address on this device and that way you don't have any address collisions for any other devices you might have on your I²C bus.

We're probably looking at a TSSOP-28 rather than a VQFN what's available. It's going to be, yeah TSSOP-28 which is fine. Now those addressing options are kind of a big deal. This is our address map of PiicoDev as it stands. We just have the device addresses going down the left column in HEX, so you can see we start at 0x00 and then we have the pool of smart module addresses. That's a little bit esoteric, but we have our seven bit address all the way from zero to 0x7F.

We have a few specific I2C reserved addresses for things like 10-bit addressing or other advanced functions. In the early addresses, we have our column for each device and I've just blocked in where a device's address lies. You can see that the more devices you introduce into this ecosystem, the more careful you have to be. Having a device with six address pins means that we can just carve out any open chunk in this graph. We can select a big chunk in here or, because we have so many options, we can have overlap with other devices but there's plenty of options in between in this white space.

Every I2C device datasheet has abundant documentation about the I2C bus characteristics and the registers, device information, and how big is the device. We're looking at the major length D and that is about 9.8 millimetres that'll fit comfortably on a PiicoDev two unit module. Something that's two squares long, this is a one unit module and this is a two unit module.

I think that's what I'm going to do. I'm going to do this in a little bit of a reverse order. Normally, you would get your part and prototype with the part maybe on your own board, but since we've already got the part on a board, I can just wire up to this, connect to my microcontroller, and just kind of evaluate this. I can use this as exactly as it's intended as a breakout board to evaluate this part in stock ships today. So, I'm going to go grab this PCA 9685 module and I'm just soldering a PiicoDev adapter lead so that's a PiicoDev connector to just four male headers into one of the breakouts.

Finding the right part for the right price is an important part of the process. It is probably the most important step. If you can get multiple suppliers, that's even better. We've got our candidate part.

For this chip, I think four server connections will be enough to demonstrate whether this was going to work for us or not. Of course, I need the external power connection and for that I'll just use a couple of batteries to keep things simple.

So there's our little development environment. In the next episode, we'll start writing some MicroPython and create a prototype PiicoDev library for this device and try to get it to work. See you then!

Comments


Loading...
Feedback

Please continue if you would like to leave feedback for any of these topics:

  • Website features/issues
  • Content errors/improvements
  • Missing products/categories
  • Product assignments to categories
  • Search results relevance

For all other inquiries (orders status, stock levels, etc), please contact our support team for quick assistance.

Note: click continue and a draft email will be opened to edit. If you don't have an email client on your device, then send a message via the chat icon on the bottom left of our website.

Makers love reviews as much as you do, please follow this link to review the products you have purchased.