Building a prototype from scratch used to be really expensive not so long ago. The overall cost has dropped significantly years after years, and everyone is now able to build their own prototypes at home with very little means.
This post will explain, from a beginner’s perspective, one of the many different approaches to change your ideas into fully functional objects.
Choose the hardwareThe hardware will depend on what you want to build. A good start is to use a famous prototyping board with a microcontroller unit embedded, such as an Arduino, an ESP8266 or an ESP32. You’ll also need some sensors and actuators.
Here, we will use an ESP8266 connected to a BME280 temperature and humidity sensor.
You’ll choose your programming language depending on your microcontroller. The ESP8266 offers a large choice of programming languages you can use:
- C (FreeRTOS)
- Arduino C (Arduino)
- Python (MicroPython)
- Lua (NodeMCU)
- Javascript (Mongoose OS)
- Go (Gobot)
- …and others
Arduino C is good to start, as the language is easy to use for beginners. Later, you could still rewrite your code for FreeRTOS if you want the software to be better optimized.
Every minute, the ESP will send data to the cloud. You can of course modify the software to send data to a local server if you prefer.
This blog posts explains all the steps required to connect an ESP32 or ESP8266 to Cloud IoT Core:
http://nilhcem.com/iot/cloud-iot-core-with-the-esp32-and-arduino
We will use the Arduino C code from this article that sends temperature and humidity data every minute to the Google Cloud.
Create the circuit boardFritzing is a nice software that allows you to model your components wiring.
There is also a PCB tab to let you easily create a PCB layout for manufacturing, in just a few clicks.
Once made, just click on the “Export for PCB” button to generate an Extended Gerber (RS274X) archive you can upload to various online PCB printing services websites such as fab.fritzing.org (aisler.net).
Print the circuit boardIt was convenient for me to use an online service to print the circuit board and ship it to me. Here’s a screenshot of my aisler order:
The PCB cost me around $5 (I ordered 3).
Easy part, you just need to take your soldering iron (if you don’t have any, the TS100 is a good choice). I decided here to use pin headers so I can plug/unplug the esp8266 and bme280 easily whenever I want.
To design a case, we can use Autodesk Fusion 360 which is an easy-to-use 3D Design & Modeling software that offers a free license for hobbyists, startups and makers.
I started by designing four 6x6mm squares located on each side of the 58x28mm PCB. Their goal is to hold the PCB.
Then, you need to extrude the sketch to the desired height, and iterate creating and extruding other sketches until you reach your goal.
Step-by-step video:
3D print itThe 3D model is finished. We can export it to an STL file that can be open using Cura, a free software that will convert the STL file into a set of instructions for a 3D printer.
You can use an online 3D printing service. However, I found them quite expensive, and you can now find good 3D printers for around $200.
I am using the Elegoo NEPTUNE 3D printer with a transparent PLA filament:
Time-lapse using a wood filament:
Ready for mass productionExcluding the price of the existing hardware (computer, 3D printer) and time spent, for a few dollars, I was able to create a fully functional electronic device that can be used to monitor the temperature in my home and send data to the Google Cloud Platform. Nowadays, creating your own electronic devices from scratch is a reality. It gives a rewarding feeling, the device is unique and does exactly what you expect it to do.
We could, of course, find cheaper and better temperature sensors in the market. However, finding one that does exactly what I wanted it to do (sending specific data to GCP) is more difficult.
Also, since I’ve built the device, I can modify it anytime. Want to update the software to send data to a local server? Want to add an LED strip below the transparent cover so that it illuminates in a specific color when the temperature is too cold? Everything’s possible!
Comments