The most frequent comments I get about the hardware I sell are to do with pricing, it seems it is a very polarizing subject. Usually, the “too expensive” complaints are from non-purchasers who feel the need to remind me they can get the same from China for a fraction of the cost, the “great value” type comments are from makers who understand what’s involved in small scale home manufacturing.
Let’s take a pragmatic look at the costs involved in producing and selling a small project with a realistic target volume of 50 units.
For this example we’ll use my ATTiny Protoboard, the outlet will be Tindie and the shipping costs will be covered by the customer.

The Design

Many people will overlook the time spent on actually designing the product, a simple board like this could be designed and ready for fabrication in under an hour. Many people think the design time(cost) should be swallowed by the maker when in reality we are trying to make a little money to further our electronics hobby.

Fabricating The Circuit Boards

With the ease of direct access to Chinese board manufacturers, these costs have dramatically reduced. In this exercise, we’ll use JLCPCB, but there are many to choose from depending on your needs. Many times you will need a minimum of 2 revisions of the board before they are ready to sell, a good practice is to order 5 for validation before committing to your big order.

The 5 board first revision order costs £8 ($10.45) delivered, for low volume/cost orders I chose the cheapest postage option at the sacrifice of delivery time. The second, ready for sale order, including a stencil costs £38.45 + ~£10 DHL customs/handling charges. So you have your boards whats next…..

Parts/BOM

Parts for this project will be sourced from LCSC but I will use a variety of sources depending on availability and shipping cost. Generally, I will try to source all parts from the same vendor to save on shipping costs.

Here is the BOM for this project…

Assembly And Consumables

Another overlooked cost is the time taken to assemble the product and also the costs of consumables used in the process. Once setup I can stencil, paste, place and hot air reflow a board in 1m12s giving a total production time of approximately 1 hour. The main consumables used are IPA for board cleaning and solder paste, I won’t include those in the final total but beware they are finite resources and will need replacing.

Packaging

I send a majority of my orders in a small box with the individual products in small metallised bags for protection. The boxes are approximately £9 delivered in 50 quantity and the metallised bags are about £0.02 each. I also include a custom printed insert that cost £0.14 each.

 

Adding It Up

36p!!!!

Now a lot of you are probably thinking why on earth would you do all of that for so little return, well the answer is:

  • I Love Electronics!
  • I have commercial customers who I design boards for so I buy in much higher quantities.
  • Quite often i’ll make a board I can’t find in other places or I might have specific requirements.
  • I assemble my boards at the same time i’m assembling my commercial customer’s boards.
  • I like to try and give back to the awesome community i’ve learned so much from over my career.

The reality is my profit for this board is actually about £1.17, but even if it wasn’t I would still make them.

Conclusion 

The aim of this post was not to put you off designing your boards for sale, it was more of a gentle reminder that not all projects you make will sell enough to be profitable and if your sole motivation for selling is to make a healthy living, you need to fully research your intended market, your competition and your projected build costs. The reality is very few makers earn enough to make hardware a full-time job.

For all potential customers out there, next time you need an electronic device, check out places like Tindie, yes you might pay a bit more, but usually, you’ll get a hand-built, individually tested project which was built with love by a fellow maker.

 

Tagged with: , , , ,

This is the code used in the following Tweet.

/*
 * Blink.cpp
 *
 * Created: 27/08/2019 18:57:18
 * Author : HiboTronix
 */ 

// 8MHz Internal Oscillator
#define F_CPU 8000000UL

#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
#include "delay_timer.h"
#include "Serial.h"

int main(void) {
	Serial_Init();
	CCP = 0xD8; // CCP_IOREG_gc Set The Configuration Change Protection 
	            // Register To 0xD8 And Change CLKPSR Within 4 Clock Cycles 
	
	CLKPSR = 0; // Set Clock Prescaler To 1 For 8MHz Internal Clock
	DDRA = 0x20; // PA5 as output, Led Cathode Connected To Pin
	PORTA |= (1<<5); // PA5 High = Led Off
    while (1) {  // Equivilent To The Arduino Loop
		PORTA |= (1<<5); // PA5 High = Led Off
		Serial_println("Led Off");
		delay_ms(1000);
		PORTA &= ~(1<<5); //PA5 Low = Led On
		Serial_println("Led On");
		delay_ms(1000);
    }	
}
/*
 * Serial.h
 *
 * Created: 27/08/2019 18:57:18
 * Author : HiboTronix
 */ 

void Serial_Init() {
	UBRR = 0x33; // Set Baud To 9600
	UCSRA = (0<<U2X) | (0<<MPCM); // MCPM Off, Single Speed
	UCSRB = (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2); // Enable Receiver And Transmitter
	UCSRC = (0<<UMSEL1) | (0<<UMSEL0) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL); // Set Frame Format: 8N1
}

void Serial_Write(char data ) {
	/* Wait for empty transmit buffer */
	while (!(UCSRA & (1<<UDRE))) {}
	/* Put data into buffer, sends the data */
	UDR = data;
}

void Serial_Print(const char c[]) {
	for (uint8_t i = 0; i < strlen(c); i++) { // Loop Through Each Char
		Serial_Write(c[i]);
	}
}

void Serial_PrintLn(const char c[]) {
	for (uint8_t i = 0; i < strlen(c); i++) { // Loop Through Each Char
		Serial_Write(c[i]);
	}
	Serial_Write(13); // CR, Carriage Return
	Serial_Write(10); // LF, Line Feed	
}

unsigned char Serial_ReadByte( void ) {
	/* Wait For Data To Be Received */
	while (!(UCSRA & (1<<RXC))) {}
	/* Get And Return Received Data From Buffer */
	return UDR;
}

void Serial_Flush( void ) {
	unsigned char dummy;
	while (UCSRA & (1<<RXC)) {
		dummy = UDR;
	}
}
/*
 * Delay_Timer.h
 *
 * Created: 27/08/2019 18:57:18
 * Author : HiboTronix
 */ 

void delay_ms(uint16_t ms){
	while(ms){
		_delay_ms(1);
		ms--;
	}
}

Download “Blink.cpp” Blink.zip – Downloaded 72 times – 1 KB

Tagged with: , , , , ,

Over the years my obsession with sensing my environment has only deepened with the advent of new sensors and/or the availability of them to Makers.

The BME280 from Bosch got my attention because of its ability to measure temperature, humidity and pressure in a rather small (albeit expensive) form factor.

At the time I was playing around with the RFM69 ISM band radio modules from HopeRF and one evening I said to myself “I could make a wireless sensor, surely RF isn’t that hard”.  I fired up Eagle and set to work designing a PCB, all the time thinking about the form factor, did I want a shield for an Arduino Uno? How was I going to power it? What Antenna was I going to use?

I have often designed a PCB first then designed an enclosure to 3D print on my Ultimaker2, the results were always satisfactory but not quite “Consumer Grade” and knowing my better-half’s dislike of my projects spread strategically around the house I knew it had to look good if I was to have a few scattered around in different rooms.

Hammond 1551V3

The Hammond 1551V3 enclosure was perfect, it looked the part and was designed exactly for the purpose so I ordered 5 and set about refactoring the PCB to fit inside.  I knew because of its size and the fact it had to be coin cell powered I needed to use the lower-powered RFM69CW variant to get reasonable battery life.  While reading the RFM69 datasheet I noticed the TX current requirement, at full TX power it could demand 45mA!

45mA TX Power Requirement

The requirement of 45mA from a CR2032 (which I had already chosen based on size and Power availability) was a bit much even to my basic knowledge in the battery arena.  I looked at many datasheets but all the data for “Operating Voltage vs. Load Resistance” started at a minimum of a 1KΩ load, I needed ~67Ω load worst case!

This is the best data I could find!

After careful testing and measurement with a working prototype, I concluded that 2x CR2032 cells in parallel would just about give me the pulsed load I needed with a negligible voltage drop on fresh new cells, considering the very short period of the TX pulse.  The unknown, however, was how long these cells would last.

The brains of the operation were already chosen too, the venerable ATMega328P running at 8MHz maximum and utilizing LowPowerLabs Moteino Library by Felix Russo.  Ths library includes a sleep mode when not transmitting bringing the quiescent current to ~6µA.

At this point in my journey, I had a working prototype with a wire antenna knowing that if I wanted to retain the almost professional look I wanted for a happy household I needed a better solution for an antenna.

The choice of antenna quickly boiled down to:

  • Ceramic Chip Antenna
  • Folded Metal Type
  • Coiled Spring Type
  • PCB Antenna

It soon became clear the choice of the antenna was going to be based on lots of variables, cost, size, the complexity of implementation etc.  Somewhat risk-averse, and let’s face it, nobody likes failure, I opted to fail “fast and cheap” and settled on a PCB antenna.  The almost endless information on the dark art of PCB antenna design started to consume all of my spare time so I chose a reference design based on a meandering monopole style.  I carefully transposed the design onto my PCB and sent them for manufacture.

My plan, based on discussions with my like-minded maker friends was to order enough PCB’s to fulfil my requirements then sell the remaining on my Tindie store to recoup some of the costs of the project, in essence, making my sensors free!  To accomplish this I needed to be confident that these devices performed as desired, the hardware was established but I feared the antenna was a weak point.

Cheap Antenna Analyser

The first test of the newly assembled device was horrible, missing packets and a 6-8ft range.  I had used a cheap Chinese Vector Impedance Analyser to test the PCB antenna knowing that getting my matching network even remotely in the ballpark would increase the range as other users of the RFM69CW had written of ranges in excess of 300ft line of sight.  My range increased by 2-4ft but the packet loss was just as horrible.

It was time for professional assistance, my fail fast and cheap attitude went out the window, I don’t like to fail, but when I do I need to know how badly, hoping I was close, as to soften the blow.  I found a particularly friendly RF Engineer near me who indulged my inexperience and helped me investigate.

 

Return Loss Of Assembled Unit As I Gave It To Him

The first reports were in, and they were as horrible as I imagined.  From memory, it had a VSWR of around 12 which meant upwards of 70% of the power was being reflected.  I failed spectacularly. The poor RF guy was probably as horrified as I was that such an antenna exists.  I asked him to calculate the correct matching network and run it a second time.

Return Loss Of Assembled Unit With Correct Matching Network

From my day job I was aware that anything under a VSWR of 2:1 was acceptable to most commercial installations I deal with so the sight of this familiar-looking dip was encouraging.  Again from memory, the VSWR was around 1.5:1, excellent, but VSWR isn’t even half the story.  To have reliable packet delivery I also needed a good bandwidth margin and also the radiation pattern needed would also have to be suitable for the intended application.

One of the observations from the RF guy was that while the antenna was “matched” inside the enclosure, removal of the front cover completely de-tuned the antenna, something he was fully aware of, but a valid lesson for an RF newbie like myself.

Matched Network With Front Of Enclosure Removed

The antenna centre frequency shifted from 868MHz to ~900MHz by simply removing the cover, this just reinforced my new found respect for everything RF, a truly dark art.  The bandwidth was about 15MHz which was OK but the RF guy said he frequently aims for, and achieves, 100MHz bandwidth for his regular customers.  He also highlighted the fact that a “narrow” bandwidth also makes the component choice for the matching network quite important suggesting I used a tighter tolerance product.

Almost at the end of my RF adventure, I had to see the 3D plots of the radiation pattern, while researching PCB antennas I was greeted with almost perfect doughnut shapes radiating outwards, did I even manage it?

3D Radiation Pattern

Yes, I did 🙂

At the time of writing the Completed devices (2 of) have both been Working In my house on the same batteries and without a single missed packet since May 2019.  They both report Temperature, Pressure and Humidity, every 15 Minutes to my Raspberry Pi 3 with an Adafruit Radio Bonnet.

Although the devices work for my needs, I made the decision not to offer these for sale,  I don’t have the RF expertise to support my customers and although they work perfectly in the locations and at the distances I chose, I couldn’t guarantee they would work universally.

Would I start another RF project?  Hell yeah, but I’d consult with a professional first!

Tagged with: , , , , , , ,

This guide will show you how to add a lithium-ion cell or lithium polymer battery to the ATMega328P SMD ProtoBoard I sell on Tindie.

What You Will Need?

Assemble the charger board using this post as a guide.

(more…)

After many years of trying to document and share my projects, good and bad, welcome to what I hope to be a valuable resource for other makers. I hope to share electronics projects, 3D printer files, my journey through the minefield of desktop CNC’s.

For many years I have been tinkering with electronics, from through-hole matrix boards, up to more recently custom PCB’s I have designed using SMD components. With the cost of PCB’s the lowest they have ever been from China I often order more boards than I need so I will offer them for sale in my Tindie shop.

I sell on Tindie