Become a leader in the IoT community!

Join our community of embedded and IoT practitioners to contribute experience, learn new skills and collaborate with other developers with complementary skillsets.

Step 1 of 5

CREATE YOUR PROFILE *Required

OR
Step 2 of 5

WHAT BRINGS YOU TO DEVHEADS? *Choose 1 or more

Connect & collaborate 🤝with other tech professionals
Learn & Grow 📚
Contribute Experience & Expertise 🔧
Step 3 of 5

WHAT'S YOUR INTEREST OR EXPERTISE? *Choose 1 or more

Hardware Design 💡
Embedded Software 💻
Edge Networking
Step 4 of 5

Personalize your profile

Step 5 of 5

Read & agree to our COMMUNITY RULES

  1. We want this server to be a welcoming space! Treat everyone with respect. Absolutely no harassment, witch hunting, sexism, racism, or hate speech will be tolerated.
  2. If you see something against the rules or something that makes you feel unsafe, let staff know by messaging @admin in the "support-tickets" tab in the Live DevChat menu.
  3. No age-restricted, obscene or NSFW content. This includes text, images, or links featuring nudity, sex, hard violence, or other graphically disturbing content.
  4. No spam. This includes DMing fellow members.
  5. You must be over the age of 18 years old to participate in our community.
  6. You agree to our Terms of Service (https://www.devheads.io/terms-of-service/) and Privacy Policy (https://www.devheads.io/privacy-policy)
By clicking "Finish", you have read and agreed to the our Terms of Service and Privacy Policy.

Blogs

How to build an intelligent vision system with SECO’s Intel processor-based COM-HPC-A-RPL COM-HPC module, the Yocto-based Clea operating system, and OpenCV. Contents Introduction Abandoned object detection is an important application […]

From the Community

Mocking Serial Ports with Pseudoterminals

One of the very first tools that I want when I’m developing an embedded system is some kind of virtual device that I can test against without needing to bring a breadboard and piles of cables with me everywhere I sit down to develo[...]

  • Carrier board design - Part 2

    Transmission Line

    Continuing from our last week’s post, today we will look at transmission lines.

    This can be confusing to understand, as from the beginning we are used to treating circuits with currents and volts. Now we must unde[...]

  • Secure Boot for Embedded Devices - An Example

    Secure boot is a critical security feature for embedded devices. It ensures that only authorized firmware runs on a device, protecting against unauthorized modifications or attacks. In this post, I’ll explain how secure boot works [...]

  • PCB Fundamentals

    Introduction

    The older generation sometimes calls it a PW board (printed wire board).

    Today we’ll have a bird’s eye view of a PCB. How it is designed, manufactured, tested and how it integrates into a product.

    PCBs are hiding in al[...]

  • Render PCB in 3D

    I find it very fascinating visualizing my own PCB designs in 3D outside of the ECAD tools capabilities. It is a must to export your PCB design to MCAD tool for enclosure. I’ve used blender on and off over the years and tried some m[...]

  • Dynamic Bytecode Execution for Fun and Profit

    I’ve been reading into compiler engineering quite a lot recently (hopefully more posts to come on that in the future) and it occurred to me that I didn’t actually understand how dynamic code could be executed. My entire mental mode[...]

  • Tips for Writing Embedded Unit Tests

    Unit testing helps ensure the reliability of software, especially in embedded systems where failures can be costly. In this post, we’ll cover behavior-driven testing, understanding test size and scope, and how to prepare your syste[...]

  • Git Commands

    This is purely a space for me to keep a reference to the git commands I don’t use often enough to remember. Undo The Last Commit So, you have just commited something and realised you didn’t want to do that….... Read more[...]
  • How to add a Golang recipe to Yocto

    Yocto supports Golang recipes, but they are slightly different to standard ones. Simple Recipe For a basic recipe without any dependancies, it is still quite simple. SUMMARY = "This is a simple example recipe that cross-compiles a [...]
  • Running Embassy (Rust) on Arduino Nano 33 BLE

    Just a quick one from some debugging I’ve done this morning. Some debugging that was rather obvious in retrospect, but nonetheless I couldn’t find any mentions of it in a quick search.

    I’ve been trying to flash some examples from [...]

  • Bootstrapping embassy-rs on ESP32C3

    I’ve been itching to write some software for hardware lately and since I have recently acquired an air purifier it seemed like an opportune time to try to get a sensor publishing data that I can use as the basis for automatically c[...]

  • Carrier board design - Part 3

    Welcome to part 3 of the series of carrier board design

    I know we have not even started to talk about the carrier board design, we are first covering the fundamentals that will be essential to understand the thing we do in design. [...]

  • Git Commands

    This is purely a space for me to keep a reference to the git commands I don’t use often enough to remember. Undo The Last Commit So, you have just commited something and realised you didn’t want to do that….... Read more[...]
  • Reading an I2C Sensor with Arduino

    If you’ve developed a few Arduino projects, you’ve probably learned to use the Arduino library’s I2C driver Wire or perhaps also it’s SPI driver SPI. These two protocols are very commonly used in embedded systems for communication [...]

  • ESP32 Tensorflow Micro Hello World

    I’m starting learing about TinyML a.k.a “Machine Learning for Embedded Systems”, and I’m logging my journey. This post is about how to setup your toolchain, and deploy the “Hello World” on the ESP-EYE.

    Btw, I used Linux Terminal t[...]

  • Carrier board design

    This is part 1 of 4 part series.

    Introduction

    There is a shift in the industry where more and more software engineers are coming into the hardware side, primarily driven by the rise of IoT, existing products are getting connected t[...]

  • Running YOLOv5 on a Microcontroller

    Running YOLOv5 on a microcontroller is no small task, given the model’s computational requirements (>20MB). In this post, I’ll share how I successfully ran a simplified YOLOv5 model on an ESP32 microcontroller and optimized it for [...]

  • Diving into FEM for electronics

    Recently, I’ve been dabbling into FEM tools for doing EM simulations. These have been very helpful full in improving my understanding about PCB layout and has help a lot in getting the designs right the first time. The complex desi[...]

  • Lock, Unlock, Blocked?

    I’ve been working on a multi-threaded C++ app with threads. It’s pretty simple on paper: think of it like a mail service that gets letters (requests) and puts them in a queue. Then there’s a worker thread who picks up the letters a[...]

  • How to add a Golang recipe to Yocto

    Yocto supports Golang recipes, but they are slightly different to standard ones. Simple Recipe For a basic recipe without any dependancies, it is still quite simple. SUMMARY = "This is a simple example recipe that cross-compiles a [...]
  • My Sabbatical Project: Megabit

    I’ve been on sabbatical for a little over a month now, but I’ve not been idle! When I decided that I was going to take some time off, I knew that I was going to want to take advantage of the time not just to relax, but also to pick[...]

  • Blender Portfolio

    I recently got back to using Blender. Before when I was using it, I stopped at the basics. This time, I’m getting little deeper with geometry nodes and shading and compositing. Blender is an absolute powerhouse. The reason I got ba[...]

  • Carrier board design - Part 4

    The question is when is your design a high-speed design?

    When the trace length is greater than ¼ of TEL, the design is high speed, and care must be taken to maintain signal integrity.

    So, what is TEL?

    It stands for Transition Elect[...]

  • Altium Release Procedure

    !-- raw HTML omitted -- !-- raw HTML omitted --

    When I first started using Altium, I found the OutJob file a bit confusing. After taking Robert Feranec’s course, I understood it better, but it still involved moving a lot of files a[...]

  • Building GBA Games in Rust

    A couple years ago I was interested in implementing Conway’s Game of Life since it’s pretty simple and seemed like a fun little project to sharpen my skills in Rust. I had a pretty major problem though: I needed a way to actually[...]

  • Concept to PCB

    Today we will talk about designing hardware in a systematic way. We will see what are the different approaches we can take and how we break down the product brief into PCB requirements. We will also check out some IRL product brief[...]