08/20/2019 at 20:05 •
In this log, we want to share our experience of bringing our FunKey Project from its early-prototype stage to a "Ready For Manufacturing" / "Community-Ready" state necessary to launch a successful crowdfunding campaign that in turn should provide us with the lever required to launch a product in mass production.
Where Do We Come From
People following the Funkey Project certainly remember that the original motivation came from @Sprite_tm's 2016 Hackaday superconference project of a pocket retro gaming console, that lead @c.Invent to develop the #Keymu - open source keychain-sized gaming console as a Proof-of-Concept that entered the 2017 Hackaday Prize. The corresponding Youtube video is now peaking at 4.8M views and #6 in Youtube's Popular Videos - Game Consoles & Mobile Phones category!
Unfortunately, the tiny (and expensive) Intel Edison CPU module at the heart of the console was abruptly discontinued, which forced him to find a replacement module. Given the tiny dimensions, this prove to be very difficult, but @Squonk42 joined him to develop a new board around the LicheePi Zero module. Eventually, a new #Funkey Zero console which was used to validate the new CPU choice took part in the 2018 Hackaday Prize:
At this point, it became clear that the main feature of the #Keymu - open source keychain-sized gaming console was its foldable design, providing a maximum size for both the screen and keypads in the smallest form factor. It also became clear that such a hinged design required the help of a professional mechanical designer, and this challenge motivated @David.Larbi who joined the team at the beginning of this year.
Where Do We Stand
With this team now formed, we achieved the development of two FunKey Revision A prototypes, which are demonstrated in the FunKey Project Teaser Video:
But turning a prototype into a mass production device is not as easy at it seems... This is why we started the #FunKey project - All your games on your keychain ! and decided to take part in the 2019 Hackaday Prize, whose goal this year is precisely focused on product development!
Clearly, his advice was to find ASAP a manufacturing partner to scale up production!
Where To Go From Here
From the start, it was clear for us that developing an electronic device like the FunKey Retro Gaming Console for mass production requires some cash money to buy the components, make the PCBs and assemble the parts (PCBA), but also to manufacture the enclosure injection molds and for the product fulfillment (certifications, packaging, storage, shipping, etc).
As we all have a day-to-day job and were not willing to mortgage our house and car, we agreed that the only possible solution was to resort to crowdfunding instead of investing our own money.
But it seems that today the time (if it ever existed!) of easy money through crowdfunding is over. Now, you need to have a sleek, professionally looking video, marketing arguments and both business and production plannings in order to end a campaign successfully.
This quickly turns into a "chicken and egg" problem, as you need to evaluate the product cost that depends on how many units you will sell, which in turn depends on how much you will sell it, which of course needs to generate a profit... And because of the mandatory video, you also need money even before starting the crowdfunding campaign which is supposed to get you the money for the production!
Right now, we got quotes for professionally-made videos so we are able to estimate our pre-campaign needs, and at the same time we contacted the Kickstarter Design & Technology Team, who shared with us some links to extremely useful resources to help us bring our project to life:
- The Education team’s compendium of resources is a comprehensive guide containing crowdfunding helpful tips and best practices, a must-read!
- A forum (the "Campus") where you can learn from experienced creators
- The Hardware Studio where you can learn more about manufacturing, and where you could apply for direct support from industry experts at Avnet and Dragon Innovation. Unfortunately, this resource seems to be dead, as the last article is 1 year-old and the Hardware Studio Connection application process is suspended :-(
- This pre-campaign timeline is invaluable to understand the required steps to go from the initial idea to launching a project on Kickstarter:
Meanwhile and following Bunnie's advice, we contacted several specialized manufacturing partners having an experience with both crowdfunding campaigns and electronic manufacturing in Mainland China.
Depending on which one you choose, they are able to provide some or all among the following services:
- in finding a possible product idea
- in the product design phase
- in the DFM ("Design For Manufacturing") risk review
- in the crowdfunding video and campaign management
- in the online social marketing campaigns
- in the RFQ ("Requests For Quotation") contractor search
- in the production oversight
- in the fulfillment logistics (product packaging, storage and shipping)
- in the product certification (RoHS, CE, RED, FCC, IC, etc.)
Most of the services related to pre-production cost more or less the same regardless of the manufacturing partners we contacted (a DFM review costs around 5,000$). Fixed costs are great for a crowdfunding campaign since at least you know the exact price to add to the crowdfunding goal to reimburse them.
Costs related to production services are another matter though, and it quickly became obvious that there are two main operating modes, depending on the manufacturing partners:
- Some manufacturing partners (most of them) set a fixed price per month for production related costs, for instance production oversight can cost from 7,500$ to 15,000$ a month.
- The second type of manufacturing partners set a margin on the product you're producing, covering the costs of production related services, but meaning your product will cost more to produce.
We found the first type to be more targeted towards incorporated businesses willing to outsource their production to China, since $7,500 to $15,000 a month is a huge sum for a company only starting out and without much money upfront to spend. Plus, it is very hard to foresee during how many month the product will need to be manufactured in order to set the crowdfunding goal accordingly.
We found instead the second solution to be much more "crowdfunding-aware", since one "only" need to evaluate a minimum number of products they will sell to compute the added production costs that can then be added to the crowdfunding goal. However, we only found two manufacturing partners who operate like this: Genimex and Supernova. We are currently in contact with both of them, and they both believe in FunKey and are interested in working with us.
Between the costs related to launching the crownfunding page (video, etc.), the prototypes (3D printing, PCBA), the initial DFM reviews and pre-production costs, possible marketing costs, you basically need at least some minimal cash money in order to launch a project, even if you plan to go through crowdfunding. This money upfront that we sadly lack is one of the reason we have contacted local incubators.
Another reason is the awareness that one day or another, we will have to incorporate a business:
- as we are a team and not a single individual
- as soon as we will earn some significant money and will have to pay taxes on it
- as soon as we will have to spend some amount of money in order to deduct VAT whenever possible
Incorporating a business is more or less difficult depending on your country, but it is certainly not an easy task if you have the same (in)experience that we have outside our technical knowledge!
So we started seeking for help, and through the French Tech national program, we were quickly redirected to both an institutional start-up support structure in the Bordeaux area and Nouvelle-Aquitaine (Unitec) and the largest private start-up incubator in France (1kubator):
For Unitec, we had to fill in an application form with many questions regarding our project, the main advantage of it being the long experience they have (more than 28 years!) as a start-up incubator, nursery and accelerator.
As for the younger but very dynamic 1kubator, we can right from the start benefit from a network of mentors for free, participate to a half-day "1Krashtest" beginning of September, during which our startup idea will be challenged (gently!) in front of a jury made up of digital technology experts, startup alumnis and other experts in their respective field (finance, legal, creation, etc.). The main advantage here is that we can benefit from 25,000€ (half in cash, half as incubator services) for a 10% participation in the future company, if they decide to go with us.
One thing we were not aware of until we discovered it recently, is the importance of having a developed community before starting a crowdfunding campaign: we first realized it when looking at Kickstarter's pre-campaign timeline when we found out that we were on time for most of the project technical items, but not at all for the "Community & Outreach" ones.
there are 3 essential things you need before launch: 1) a compelling project that you know folks will want to help bring to life, 2) know the cost to produce and ship all the rewards, and 3) have a community that you've built up outside Kickstarter that can help you reach about 70% of your funding goal.
So, at the question "when is it time to build a community", the answer is: Yesterday!
We were obviously late, but hey, if we did not start yesterday, there's certainly no better time than today, so we promptly started to set up:
- a Web site
- a Twitter account
- a Facebook page
- an Instagram account
- a Pinterest account
- a Youtube channel
- a Grabcad account
- a Thingiverse account
- a newsletter subscription directly on our website landing page
Following this social media blitz, we were contacted by the Youtuber "Un Poco De Todo" having 2.7M followers to get the permission to be featured into one of his video, viewed 825,000+ times.
Our community if growing steadily but slowly and we know now, we need to make the public aware of FunKey to make it grow before the crowdfunding campaign. Once our Revision B prototypes are ready (should only be a matter of days), we would love to start showing off FunKey on other Youtube channels or social medias and even organize some giveaways. Apart from our families, friends and colleagues, any other feedback would be great to help us improve our work before production and build a community at the same time.
As you can see from above, we spent a lot of time on non-technical but very important issues during the past months in order to develop our FunKey project. But this does not mean that we were just sitting back technically either:
- On the mechanical and design front, we focused on industrializing the design (adding reinforcement ribs, draft angles, etc.) in order to get quotes for the enclosure molds, screen protection glass, hinge mechanism and started to work on the product packaging.
- On the electronic hardware side, a new Revision B PCB has been launched that is currently assembled in China. The purpose was both to correct a few issues and add as few as possible new feature, while moving the design closer to a "Ready For Manufacturing" state. Check all the details in a previous log. A Prototype flex cable (FPC) was also designed to be used with the prototypes until we get a custom screen manufactured.
- On the software development side, a lot of work has been done in order to port and optimize many retro gaming console software emulators to the FunKey platform: now we have NES, SNES, Gameboy, Gameboy color, Gameboy Advance, Sega GameGear, Sega Master System, Sega Megadrive and PlayStation 1! A lot of efforts were spent in order to optimize the up/down screen scaling to reduce the CPU power requirements to the minimum. And last but not least, we work a lot on the ergonomic: we developed our own launcher application (heavily modified from RetroFE) with a consistent in-game menu system! This means every game, every emulator, and the launcher itself will have the same coherent and consistent simple animated settings menu, the same button placements, the same save/load shortcuts, ... No need to read the manual!
Participating to the 2019 Hackaday prize certainly helped us a lot, in particular by providing visibility to our work and giving us the opportunity to take part in a mentor session and Hack Chats which opened our eyes on the need to start searching for manufacturing partners and start developing a community, which we both did.
FunKey might not seem so, but it is quite an ambitious project and we have taken the road towards production one step at a time, in order not to trip. Every step has brought us closer to our goal and FunKey is now very close to being turned into a business, especially since we started to work with the local French Tech ecosystem and its network of incubators, start-up nurseries and accelerators.
We plan to create the company in September, followed by the crowdfunding campaign at the end of the year. Our hope is to reach at least 1,000 sold units. This would allow us to start working on future releases, because we absolutely love working on FunKey, and already have lots of ideas for improvements and other products for our hopefully successful company, stay tuned!
08/20/2019 at 17:53 •
The previous log detailed the screen FPC extender, used to adapt the stock LCD screen to the FunKey main PCB.
Before launching the FPC fabrication which is quite expensive (~ $100 / 5 pieces), we decided to have a dry run using a paper mock-up. Here is the result:
We covered the old Rev. A PCB with a paper print of the new Rev. B one, and created a paper version of the flex, gluing the connectors on them at the right positions. As you can see, the result is not too bad.
This was until we tried to open the lid flat:
Well, the FPC is a little bit too long, causing a "wave" that totally defeats the original purpose of the "flypaper design": the small bend radius would certainly cause a failure sooner or later.
Moreover, the FPC is a little bit too wide, too, so it interferes with the internal ribs somehow.
So, back to the drawing board, we decreased the length by 2 mm, and the width to 4 mm, here is the result:
Much better! And the behavior when opening / closing the lid is also improved:
Here are the corresponding layouts:
08/12/2019 at 21:11 •
The chosen LCD screen for the FunKey console is awesome:
- 1.54" diagonal, 33.72 mm x 31.52 mm
- 240 x 240 pixels
- 262K colors
- wide view angle of 80°
- contrast 400:1
- IPS technology
- simple SPI interface, up to ~60 MHz
- ST7789V controller chip
The FunKey console uses a foldable design in order to reduce the device size when not in use, and maximize both the screen and keypad size when playing. The screen flat cable must then go into the hinge, and in order to avoid too much stress that would eventually lead to broken cables, it must be "rolled" into it like a flypaper in order to divide the stress over the longest possible length.
Unfortunately, the stock LCD screen ribbon cable is not long enough. This is of course something that the manufacturer can customize, but this costs a fixed tooling fee of $800... We plan to go this way for mass production, but this sounds like a lot of money for the prototyping phase only.
So, we decided to use cheaper alternatives for our prototypes:
- for the Revision A, we used individually soldered thin enameled copper wires and an ultra small PCB placed into the hinge: definitely not something to use for more than 2 boards!
- for the Revision B, we decided to invest some money into a customized FPC (Flat Printed Cable) as we can get 5x FPC prototypes for ~$100 at PCBWay
The problem is: I never designed FPCs before ;-)
I got some basic hints from one of my colleague:
- the copper density must be as constant as possible
- the traces must use smooth curves instead of sharp angles to avoid tearing during flexion
However, a few questions remained unanswered:
- what material and thickness to use for the stiffeners?
- what material and thickness for the flex itself?
- which stack-up?
I decided to crawl the Web for more information, and here is what I found, I hope this may help some other PCB designers:
Stiffeners are used over some parts of the FPC cable for various reasons, and I found this page very informative. Basically:
- stiffeners in FR4 (epoxy) material are added below components to protect solder joints: this is exactly what we will need for our connectors!
- stiffeners in polyimide (yes, this is the famous "PI" acronym that you meet everywhere, including on the SAEF screen datasheet!) are used to bring thickness to a given value in order to meet the ZIF (Zero Insertion Force) connector requirements
- aluminum or metallic stiffeners are used as heatsinks in order to dissipate temperature from power components
The stiffener thickness is variable, but is generally between 0.2 mm and 2 mm. I chose FR4 stiffeners with a 0.2 mm thickness as it is the thinnest, but also because this is the thickness for the original SAEF screen stiffener, too.
For the flex cable itself, I found this slideshow containing a lot of details.
I learned that:
- a flex is made up of Polyimide ("PI", aka Kapton which is a trademark from DuPont)
- Pyralus is another trademark from DuPont for the sandwich including the PI film, the glue and copper laminate, the glue and the PI "Coverlay" (for "Coating Overlay")
- the copper can be in rolled Annealed ("RA") form, or obtained by electro-deposition ("EP"), the former being more common and cheaper
- for a single or double-sided flex, the minimum bend radius is 6x the total thickness, 12x when using more layers
- indeed, using curved traces is better that sharp-angled ones!
- vias should feature "teardrops" to avoid problems with the larger drill / copper / coating registration tolerances for FPCs
- a hatched ground plane is recommended in order to reduce weight and increase flexibility
With all these elements now clear, I decided to use PI with rolled-annealed copper foil ("RA") to reduce costs.
For the layer stack-up and dimensions, I found these 2 links useful:
The second link shows a stack-up for a common double-sided FPC thickness (without the stiffeners) of 0.196 mm and provides the constitutive materials, for which I found the corresponding datasheets:
Please note that with a SF302 0511210DR laminated PI core instead of the SF302 101820DR one, the total thickness lowers to 0.151 mm when keeping the same COverlay. This will probably be my final choice to achieve a greater flexibility.
Here is my custom layout. Please mind the gap in the hatched ground plane on the bottom side, which is designed to "guide" where the flexion (roll) should take place:
08/12/2019 at 09:00 •
I tried different angles to approach this log, and writing about us from a third person's point of view simply wouldn't work. It was too detached for my taste and it felt hypocritical writing things about myself as another's POV. Instead I chose the 1st person narrative to talk about our team, "I" meaning "Vincent" in this case. It feels more genuine, and I get to really "tell" our story this way.
FunKey's project is currently composed of three people which, by order or arrival in the team, are: Vincent (myself) Michel and David. Since we are a small team, the best way to present all of us is simply through FunKey's story, so here it goes:
As some of you may know Funkey started out as a project submitted during the 2017 Hackaday Prize called Keymu. Before explaining why I undertook such a project, let me quickly go over some of my background.
Originally, I studied telecommunications during my master's in France. Telecommunications is a vast topic that encompasses many areas such as informatics, electronics, networking, signal processing... I specialized in the latter, and during my last year abroad, I quickly drifted towards computer vision, a topic that never ceases to amaze me. After the master's, I actually continued in this branch during my PhD.
So, yeah, I was a research scholar, in Computer Vision and Machine Learning at the time, pretty far from electronics...
Something always felt missing though, all this high-level knowledge felt shallow without the low-level one. Computer vision is often used on embedded products, allowing them to "see" the world and understand it for us, faster than us. I simply felt the need to know how to build the machines for which we developed these algorithms, in order to understand the whole chain. After my PhD then, I started working as an embedded engineer for a company in France. This is where I met Michel and David for the first time.
When, a few months later, Hackaday published an article about SpriteTM's tiny console, it was love at first sight. I wanted very badly to build one, not just to own it but because it called to my inner retro-gamer instincts and it was a great way to learn about electronics and embedded software. At the time SpriteTM did not release yet any of the code or designs, hence Keymu was born.
I quickly realized, I undertook something way bigger than expected for a first "side project". It was completely different than SpriteTM's design: it was based on a computer module, I needed to develop a custom linux distribution (very different code than for microprocessors, especially the drivers), the mechanical hinge was harder than expected...This is when Michel entered into play.
It is safe to say that Keymu might have never hatched without him. Apart from helping me with the electronical design, every roadblock I met seemed only small bumps before his incredible experience. He followed the design and all the new ideas from the start, started himself installing the environment for developing the Linux distribution with Yocto, proposed solutions to many encountered problems... All in all, he was already part of the team from the start, he apeared only "officially" in the team during our next project: FunKey Zero but it is simply formalities.
For the purpose of this log, I have asked my partners to present themselves through small bios. Since I started this first narrative point of view, it feels only logical to keep it throughout the log, that is why I prefer to restranscribe their bios as they've been provided.
Here is Michel's:
I started my engineering experience at age 2 (back in 1968) by inserting metallic knitting needles into a live wall socket.
I stumbled upon my first computer (Goupil 2) in January 1980. Shortly after that (and for quite a long time), I got my second computer: an Apple II, still in love with it! I developed my first expansion board for it to hook a Teletype Model 33 from 1963 as a daisy wheel printer over 20mA current loop. I have been developing both hardware and software at the same time since then.
My first Unix steps were in 1984, using a CU connection to the university PDP11. I switched to Amiga 1000 in 1986, and worked mainly on 68k-based custom-made computers until 1996, with lots of business travels worldwide (spent 1 1/2 year in Atlanta, GA, USA during the Olympic Games in 1996).
I discovered Linux 0.9.x in 1994 (Thx to Pierre Ficheux). In 2002 I wrote the iPaq Linux Howto: http://mstempin.free.fr/linux-ipaq/html_nochunks/Linux-iPAQ-HOWTO-1.1.html and since then have used mostly Linux-based systems for my personal work.
I Reverse-engineered the TL-WR703 pocket router hardware in 2012: http://squonk42.github.io/TL-WR703N/ and https://github.com/Squonk42/TL-WR703N
In April 2014 I started the Domino.io project (https://www.kickstarter.com/projects/706167548/dominoio-an-open-hardware-wifi-platform-for-things/description "An Open Hardware WiFi Platform for Things"). We launched a successful Kickstarter campaign in April 2015, with all products delivered to users (almost) on time. They are still available from GL-Inet https://store.gl-inet.com/collections/other-products/products/domino-core-board shop, eBay and Amazon
A lot of experience indeed. At this point I left back FunKey's story at FunKey Zero. For those who do not know this project, we hit a real roadblock with Keymu, one that could not be overcome this time: the main computer module (Intel Edison) had been discontinuited. In order to improve Keymu, we then developped a board with everything new: processor, storage, display, sound, power management,...
This board was part of our FunKey Zero project submitted in 2018 and was meant to focus on software and electrical development only. We knew Keymu's hinged design was the only way to go to optimize screen size, buttons thickness, and battery's autonomy but Michel and I simply did not have enough mechanical design experience to build something fit for production, especially with an active hinge.
This is when David entered the team.
To be completely fair, David already knew about Keymu since he helped giving advice when I worked on the mechanical design. After FunKey Zero, we again asked for help reviewing our design and I remember David being instantly on boad (he told me at the time that the project looked really "funky" without even knowing the name was "Funkey"). He was in search of interesting projects to work with, and we were in search for a professional mechanical engineer: it was a perfect match.
As before, here is his bio in his own words:
I have found my calling at age 14 when my parents offered me an electronic discovery kit (before that I wanted to be a road train driver).
To this end I have studied electronic for 9 years. During my last three years of studies, I have discovered electro manufacturing services (EMS) for the first time and had the chance to program my first SMT machine: the CP6 from FUJI: CHIP SHOOTER.
I then worked for 14 years for a company selling cameras designed for industrial applications and scanners for ancient manuscripts.
It is during this time that I have made the switch from electronic design to mechanical design as I self-taught myself how to use SOLIDWORKS. After many hours, I learned to master it and started developing professional mechanical designs.
In 2017, I started my own company (www.novatech-engineering.fr): a mechanical design office specializing in the integration of electronics, the design of plastic injection parts and additive technologies. Projects I designed with my clients are mainly IoT products as well as manual tools (plastic cutters, ZAMAC or magnesium).
I remain passionate and curious about technology in general. The FunKey Project is an adventure full of opportunities to discover and learn. An occasion to conceive, build and sell a very fun product among a pluridisciplinar team, all revolving around a great topic: the retro-gaming.
Back to the story: since then we are equally working on FunKey's project, as well regarding our respective abilities (software, electrical design, mechanical design) as regarding all other aspects of the project (website, social networks, newsletter, this hackaday page, publicity, emails, commands, production...)
We all have day-to-day jobs but we are working hard during our free time to try and make FunKey a reality.
08/04/2019 at 17:55 •
The FunKey Revision B is eventually out!
FunKey Revision A Board
We consider FunKey Revision A board as an "alpha test" board. We built 2 units using manual pick & place and a small T962 reflow oven.
Except for a few bad solder joints, the only real problem we encountered is a wrong value for the R11 DDR RAM equalization resistor (was 240k instead of 240R). Another minor problem was a wrong footprint for transistor Q1 (was SOT323 instead of SOT23)
We can consider it as a success, as the boards worked (almost) out of the box and we were able to mount them into a 3D-printed case and make some nice videos out of them.
However, assembling this board manually doesn't scale up very nicely: as these are dual-sided PCBs, the boards needs to go twice in the oven, using solder paste with different reflow temperatures, and just placing the 175 components on each board takes hours and a lot of patience...
We thus decided to move to...
FunKey Revision B Board
The goals for this revision were:
- correct the Revision A bugs
- make some mechanical adjustments required to ease the FunKey assembly into the case
- replace some components to reduce the BOM cost
- add test pads for a better testability
- outsource the PCB Assembly (PCBA)
- avoid over-engineering a working board!
As discussed above, the only physical changes were to replace the value for the R11 DDR RAM equalization resistor (was 240k instead of 240R) in the BOM and to change the footprint for transistor Q1 (was SOT323 instead of SOT23).
A few quirks in the schematics were corrected:
- the "START" and "SELECT" signal labels were swapped (now also renamed to "START" and "FUN")
- the comment for R8 was referencing the wrong chip (U2, now U3)
- some signal labels around U5 were not the same size as all other labels
Although we were able to mount the Revision A PCB into the 3D-case, we found some minor assembly problems:
- the 1.5 mm headroom over the PCB button side was too low over some components (the power inductor L6 and the transistor Q1): L6 has been moved to the other PCB side with all components for the DRAM Power, and the Q1 transistor was moved away from the buttons
- the screen connector has been moved to be in front of the hinge flex opening and turned 180° to expose all the active pins to on the PCB edge side
- consequently, the UART and battery connectors have been shuffled around, and the battery connector moved away from the screw well to provide more room to bend the battery wires
- the 2x Omron B3U-3000P(M) rear buttons have been replaced because they were too fragile and did not provide a good feedback when pressed. We now use 2x Panasonic EVP-AVAA1A, which are the right-angle equivalent of the EVP-BB2A9B000 we have for the top buttons. These buttons are backed by the PCB edge so they have no chance to break if pushed too hard, and their haptic feedback is really good
- the speaker mounting was tedious: we tried to avoid having to solder wires, but the PCB thickness of 0.8 mm was too important to provide a way to bridge the gap between the trace and the speaker pad with a solder blob, we had to use some TH resistor wire to do the connection:We changed the design to use castellated pads ("half-moon" plated holes on the PCB edge) positioned farther just over the speaker pads, so the distance between the PCB copper pad and the speaker pad is now zero and allows soldering the speaker with just a small solder bridge
The FunKey Revision A board used mostly components available from major online distributors, ( we ordered them from Mouser, as they are today significantly cheaper than Radiospares, Farnell or even Digi-Key). OTOH, some exotic components (the Allwinner V3s CPU, the AXP209 PMIC and the microUSB connector) had to be sourced from AliExpress, as they were not available anywhere else at a cheaper price.
But mostly, the FunKey Revision A board should be considered as a "western" board, whose components are not optimized to be produced in China, which will be our final production country for obvious cost reasons.
We took the opportunity to roll out the FunKey Revision B to switch to mostly Chinese suppliers whenever possible. We found most of the components at www.lcsc.com and its Chinese sister website www.szlcsc.com.
The price difference there is significant, as passive components are 10x cheaper, connectors are 5x to 6x cheaper, and you can find some equivalent DC/DC or PMIC chips at a fraction of their western price. Another way of saving money is to avoid crossing borders: in this case, you'd better buy the components to mount on the PCB in China from China, if possible.
However, there are some components we still had to provision from global online distributors:
- the L3/L4/L5 power inductors
- the 0603 current measurement resistor R21
- all the EVP-BB2A9B000 and EVP-AVAA1A (R/A) tactile switches as the required quantity was not in stock from LCSC
- the S14 MEDER MK24 Reed switch (more on this later in this article!)
- the SP1 CUI CDM-10008 speaker
- the PCAL6416AHF,128 I2C GPIO expander U1
- the PAM8301AAF audio amplifier U3
All other passive components were replaced by some available at LCSC, but not necessarily the cheapest ones: we chose the "cheapest available in quantity" ones instead, to make sure we don't have to switch to another reference later.
We found equivalent parts for the MicroUSB and MicroSD card connectors and for the DRAM DC/DC U4, as well as for the crystals Y1/Y2. the AXP209 PMIC U5 was directly available there, too.
Only the Allwinner V3s CPU U3 had still to be sourced from Alibaba.
With these component changes, we are now confident that we can reach our target electronic BOM cost for MP (Mass Production).
Another very important point to consider in order to get a product that is RFM (Ready For Manufacturing) is to make sure to have a good test plan for the PCB/PCBA: you cannot count on everything working as expected without a glitch on thousands of pieces!
Of course you may ask the PCB manufacturer to perform 100% electrical test on the naked PCB using "flying probes", but another important issue is to make sure the final PCBA (PCB Assembly) is good too.
The technique most suitable given our expected production quantities and board characteristics (small size and dual-sided) is to use test jigs with some retractable interfaces featuring either mating connectors and/or spring-loaded "Po-Go" pins that will make contacts with corresponding test pads on the PCB.
On the FunKey Revision A PCB, we already had some test pads, but they prove too small to be useful. For Revision B, we increased their size to 1 mm diameter, and we made sure to have all important signals available on the least populated PCB side (the button side).
We started to define a progressive test plan to check that all the parts on the assembled PCB perform as desired, using as little as possible steps and test vectors to make the test procedure as fast as possible: time is money on a production line!
Having a good test plan defined early in the design phase is a key point to reduce defects during MP.
As said earlier, the FunKey Revision A boards were assembled by us using a small reflow oven.
One major goal of the FunKey Revision B is to make sure that the board assembly can be outsourced, meaning that we are able to provide all the required information for this task, yet another key step towards a successful MP.
We took the opportunity of the limited-time (now over since July 31st) offer from SeeedStudio for free assembly for 5 pieces.
Conforming to SeedStudio requirements for gerbers files, pick and place files, assembly drawing and BOM file took us some considerable amount of time, but eventually, this will certainly help us to formalize the PCBA procedure for MP too.
We are still waiting to receive the boards that were approved for manufacturing, we cross our fingers and toes, hoping everything will go as expected!
We tried very hard to avoid adding more features to the existing FunKey Revision A design that is working, but hey, we are engineers, after all!
But in order to avoid adding bugs by over-engineering the board, we limited them to 2 low-risk changes:
- we added a separate LCD_RESET line for the LCD (just a single wire with a pull-up resistor R29), so we can reset the LCD without having to reset the whole board in case something goes bad with the display
- we added a magnetic Reed switch S14 to the AXP209 PMIC's N_OE (Negative Output Enable) input, in order to suspend the FunKey console after a delay when the lid is closed, and resume it back to where it stopped when the lid is opened again:
Given its limited design changes and large improvements in terms of electrical BOM cost optimization, testability and assembly outsourcing capabilities, the FunKey Revision B board must be considered as a "beta test" board, which is an important milestone towards our goal to produce the FunKey retro gaming console in large quantities in China.
07/15/2019 at 12:55 •
The Funkey team is proud to announce FunKey's official website.
We have also setup a newsletter to start building a community and keep everyone informed about FunKey's updates and most importantly its release date. You can subscribe to the newsletter directly on the website.
Official web site : http://www.funkey-project.com
Also, we have settled on a date for the crowdfunding campaign: Q4 2019 on KickStarter.
Again: don't hesitate to subscribe our newsletter directly on our website !
You can also follow us on our social media pages:
05/29/2019 at 21:15 •
Can you spot what the 2 boards have in common?
They are both small, but this is not the only common point...
- It is not the HDMI connector (FunKey doesn't have HDMI output),
- not the USB connectors (FunKey has a low-profile PCB edge mid-mount model),
- not the CSi camera interface (FunKey does not have it either, although its CPU has this capability)
- CPU is of course different, since the RPi Zero BCM2835 is not available for retail
- DRAM integration? Yeah, but not quite: the RPi has a PoP( Package on Package) Elpida B4432BBPA-10-F 4GB DDR2 DRAM, the FunKey has an unknown SiP (System in Package) 512MB DDR2 DRAM
... Yes it is: the microSD Card connector! Both boards are equipped with a Molex ref. 104031-0811.
It is a pure coincidence, though. Our primary motivation for choosing this (rather expensive) connector was its low profile: only 1.42 mm height, whereas most common connectors are ~1.9 mm height. And overall size too: only 11.95 mm x 11.40 mm, while common ones are more in the 14.70 mm x 14.50 mm ball park.
It is just a simple manual "PUSH/PULL" type (i.e. no bi-stable "PUSH/PUSH" mechanism that would take more space), but we don't care, as in the FunKey, the micro SD card is not meant to be removed anyway.
05/21/2019 at 17:45 •
So far, we already encountered capacitors for many different usages:
We have seen load capacitors used with the 2 crystals in the discussion about CPU.
A quartz crystal always provides both series and parallel resonance, the series resonance being a few kilohertz lower than the parallel one.
Crystals below 30 MHz like ours are generally operated between series and parallel resonance, which means that the crystal appears as an inductive reactance in operation, this inductance forming a parallel resonant circuit with externally connected parallel "load" capacitance. Any small additional capacitance added in parallel with the crystal pulls the frequency lower in the range between the series and parallel resonance frequencies, insuring crystal startup and stable operation.
For modern circuits, these load capacitors have a typical small value < 20 pF.
Bulk capacitors are used to prevent a power supply from dropping too far during the periods when current is not available. At the same time, they help to reduce the power supply voltage ripples by smoothing their output voltage.
Many such capacitors are used at both the input and output of the numerous linear and switched mode power supplies in the PMIC discussion.
The main bulk capacitor value is generally high (some µF), but there may be smaller parallel capacitors added for stability.
As you probably know, capacitors are made of 2 parallel conductive electrodes separated by a (thin) isolating dielectric material (even if these electrodes are rolled or layered to reduce the component size). Thus by construction, no DC (Direct Current) can flow from one electrode to the other, but by influence using the electric field, AC (Alternative Current) still can go through. This is how coupling capacitors are used to link 2 circuits while removing any DC bias voltage on one side or the other of the capacitor.
We use such a coupling capacitor in the Audio schematic description for feeding the audio power amplifier from the CPU audio output.
We have seen many examples where capacitors are used within passive filter circuits along with resistors or inductors, mainly to remove unwanted frequencies from a power supply or a signal.
Decoupling (Bypass) Capacitors
We have already seen some decoupling capacitors when looking at the buttons circuit.
Active components such as transistors and chips are connected to their power supplies through conductors featuring a (small) common impedance made up of complex (resistive, capacitive and inductive) value. Because of these parasitic components, a device that suddenly draws some current in spikes will generate a drop in its voltage power supply. If many devices are sharing the same power supply and impedance, the state of one device will be coupled to the other ones through the common impedance of the power supply conductors and may affect thir operation.
In order to decouple the devices, capacitors placed as close as possible to the device power supply input pins are used, which act as local energy storage. These capacitors are also named "bypass capacitors" as they shunt transient energy from the power supplies past the device to be decoupled, right to the GND return path.
There may be different capacitors values placed on the same power supply pins in order to filter transients at different frequencies: the bigger the capacitor value, the lower the frequency. A typical value is 100 nF, and values from 1 µF to 10 µF are used for lower frequencies and / or higher current draws, while lower values of a few nF are used for filtering higher frequencies.
In essence, decoupling capacitors are not very different in their function from bulk capacitors: the only difference is one of scale, both of current and of transient duration. Bulk capacitors deal with large currents and periods of 10s of ms, whereas decoupling capacitors are used for much lower currents and much briefer periods (typically 10s of ns for TTL or CMOS devices) .
The last part of the FunKey schematics merely contains only decoupling capacitors:
One exception is the Allwinner V3s CPU HPR/HPL circuit which features an RC-to-ground circuit between the amplifier and the preamplifier input with the resistor R27 and capacitors C79 and C81, as recommended in the V3s hardware design guide.
The only other remarkable point left in this schematic is the resistor divider R25 / R28 which provides a reference voltage at half the DRAM power supply voltage level, which is used for the integrated DDR2 DRAM merged drivers and dynamic on-chip termination already discussed at the end of the previous CPU schematic description.
As we have seen, the design is not overwhelmingly complex, but it contains many details that are all important to make sure the device works as expected.
05/19/2019 at 10:15 •
The FunKey game console uses the SD Card both as its boot device and its only storage device, so a good operation of this interface is absolutely mandatory.
The Allwinner V3s provides 2x 4-bit MMC / SD Card / SDIO interfaces. In the FunKey, only interface #0 is used.
If you look on the Web, you will find many contradictory SD Card interface designs, with a combination of pull-up / pull-down resistors, ESD devices and power supply filtering, with all pins wired or not, such that it is very difficult to know what is really required. To better understand the situation, we need to go back to the specifications.
The SD Card physical interface is provided in the "SD specifications, part 1, Physical Layer Specification version 2.00, May 9, 2006", for which a simplified version is available here.
The MMC phyiscal interface can be found in the "Multi Media Card System Specification version 4.3, JESD84-A43, November 2007", available here (registration required).
But a good summary of the requirements is given in the "AN10911 SD(HC)-memory card and MMC Interface conditioning" application note from NXP, from which this schematic is taken:
Note: This schematic does not include details concerning card-supply and typical power-supply decoupling capacitors.
Write Protect (WP)
A write protect mechanical switch is provided in the full-size SD Card, but not in the mini or micro SD Card form factor. As we plan to use a micro SD Card only, it is not used for the FunKey, along with its pull-up resistor and ESD protection.
Card Detection (CD)
As the SD Card is required to boot the FunKey, is always inserted and opening the device is requried for its removal, we don't need the optional card detect mechanical switch feature (even if the chosen connector provides it) and its related pull-up resistor and ESD protection.
The SD Card specification provides another mean to detect the card using a card built-in pull-up resistor on its DAT3 signal, that can be later disconnected during normal operation using he SET_CLR_CARD_DETECT (ACMD42) command. In order to correctly detect if the card is inserted, a high value external pull-down resistor (> 270 kohms) is required to drive the detect signal low when no card is inserted, while the card built-in 10-50 kohms resistor will drive this signal high when inserted.
However, this feature is not compatible with MMC cards, so its usage should be avoided and the mechanical detection is preferred.
Both the SD Card and MMC specifications require not to leave the interface signals floating, except for the CLK signal, where a pull resistor would cause significant signal distortion because of the required high speed and short rise/fall times. OTOH, it is recommended to add a series resistor on this CLK signal as close as possible to the clock source (the CPU) to avoid ringing, as we already discussed it in the log about the CPU.
Hopefully, the Allwinner V3s CPU provides internal pull-up resistors for all these signals, so we don't have to add external pull-up resistors. These resistors are given with a typical value of 100 kohms (50 min, 150 max). Unfortunately, the CMD signal for MMC card features an open-drain output mode, and its value should be undercut (down to 4.7 kohms) to guarantee a sufficiently short rise time in this mode.
The FunKey SD Card interface schematic is the following:
Even if in the FunKey device the SD Card and its connector are not accessible without opening the enclosure, there may be some situations where the user may decide to do so. We thus attach an ESD protection TVS diode (D16, D17, D18, D25, D26, D27, D28) on each signal to avoid any ESD hazard.
As discussed above, a single pull-up resistor R10 is used on the CMD signal for MMC compatibility.
The micro SD Card connector built-in card detection switch is not used, since the card must always be inserted for the FunKey to boot, and the corresponding pins are thus connected to GND.
The SD Card power supply is done through an RC low-pass filter to provide a soft-start operation, as the card built-in large bulk capacitor on its power rail may collapse the supply voltage when initially powered up.
05/17/2019 at 06:48 •
In the FunKey device, the USB interface has 2 purposes:
- provide an external power supply source for both powering the device and charging the built-in LiPo battery
- provide a data interface to transfer firmware upgrades, configuration files, game emulators and game ROMs
The first purpose only requires the +5V USB power and GND pins. The second purpose requires to wire the additional differential data lines D+ and D-. As we only need to operate as an USB device and although the V3s is able to work as either an USB host or USB device using the USB OTG protocol, we don't need the ID pin to determine by the cable wiring which role we must take.
The USB schematic is the following:
Before connecting 2 devices using an USB cable, they may be at completely different absolute voltages, and during cable insertion, the shield will be in contact before the other pins, including GND. The C6 capacitor between the Protective Earth (Shield) and GND is here to provide an AC path for sinking this difference in voltage and align the GND levels when plugin the cable.
The resistor R4 on the USB ID connector pin should probably not be mounted: as we act only as an USB device, this pin should be left floating.
The capacitors C7, C8, C10 and ferrite bead L2 form a constant-k 3 pole CLC low pass filter to remove any spurious in/out on the USB power supply wire. The USB 2.0 specification limits the maximum bulk capacitance value to 10 µF in order to avoid power supply excessive droops when plugin in a device with a discharged large bulk capacitor.
D15 is a combined TVS protection diode for the VBUS pin and a set of clamping diodes that will limit the voltage on D+ and D- pins to stay between GND and VBUS levels to in order to protect the V3s USB driver from under / over-voltages.