It ain't heavy, it's my robot...
Unmanned Ground Vehicles - Design considerations for man-portable/packable vehiclesA UGV is “a ground based mechanical device that can sense and interact with its environment.” (Carlson, How) A Field Robot is expected to work outdoors,...
Tenderfoot: Embedded Software and Firmware Specialties
Once upon a time (seven years ago) I answered a question on Stack Overflow. Then Stephane suggested I turn that answer into a blog post. Great idea! This post dives deeper into the original question: “Is it possible to fragment this field...
A Beginner's Guide to Embedded Systems
I was in my Junior year of college when I first learned about embedded systems. Sure, I’d heard about this mystical world of sensors and IoT, the same way I’d heard about thermonuclear astrophysics; But, the phrase “embedded systems”...
Arduino robotics #4 - HC-SR04 ultrasonic sensor
Arduino Robotics Arduino robotics is a series of article chronicling my first autonomous robot build, Clusterbot. This build is meant to be affordable, relatively easy and instructive. The total cost of the build is around $50....
Getting Started With CUDA C on an Nvidia Jetson: A Meaningful Algorithm
In this blog post, I demonstrate a use case and corresponding GPU implementation where meaningful performance gains are realized and observed. Specifically, I implement a "blurring" algorithm on a large 1000x1000 pixel image. I show that the GPU-based implementation is 1000x faster than the CPU-based implementation.
A Second Look at Slew Rate Limiters
I recently had to pick a slew rate for a current waveform, and I got this feeling of déjà vu… hadn’t I gone through this effort already? So I looked, and lo and behold, way back in 2014 I wrote an article titled Slew Rate...
Hidden Gems from the Embedded Online Conference Archives - Part 1
Discussion of a "hidden gem" from the Embedded Online Conference archives!
Coding Step 1 - Hello World and Makefiles
Articles in this series:Coding Step 0 - Development EnvironmentsCoding Step 1 - Hello World and MakefilesCoding Step 2 - Source ControlCoding Step 3 - High-Level RequirementsCoding Step 4 - DesignStep 0 discussed how to install GCC and...
What does it mean to be 'Turing complete'?
The term "Turing complete" describes all computers and even some things we don't expect to be as powerful as a typical computer. In this article, I describe what it means and discuss the implications of Turing completeness on projects that need just a little more power, on alternative processor designs, and even security.
Mutex vs. Semaphore - Part 1
It never ceases to amaze me how often I see postings in forums asking the difference between a semaphore and a mutex. Probably what baffles me more is that over 90% of the time the responses given are either incorrect or missing the key...
AI at the Edge - Can I run a neural network in a resource-constrained device?
Hello Related Communities, This is my first time blogging since joining Stephane in November. He and I were at Embedded World together and he asked me to write about some of the important trends as they relate to all of you. I expect to post...
Embedded Programming Video Course Teaches RTOS
If you'd like to understand how a Real-Time Operating System (RTOS) really works, here is a free video course for you:RTOS part-1: In this first lesson on RTOS you will see how to extend the foreground/background architecture from the previous...
Linear Feedback Shift Registers for the Uninitiated, Part XVIII: Primitive Polynomial Generation
Linear Feedback Shift Registers for the Uninitiated, Part XVII: Reverse-Engineering the CRC
Making a connection 1
In order for your system to control devices, you must be able to connect it to those devices. Besides different sizes based on wire size, there are a few different styles of connectors that can be used. There are also...
Linear Feedback Shift Registers for the Uninitiated, Part XVI: Reed-Solomon Error Correction
Elliptic Curve Cryptography - Extension Fields
An introduction to the pairing of points on elliptic curves. Point pairing normally requires curves over an extension field because the structure of an elliptic curve has two independent sets of points if it is large enough. The rules of pairings are described in a general way to show they can be useful for verification purposes.
Mutex vs. Semaphores – Part 2: The Mutex & Mutual Exclusion Problems
Part 1 of this series we looked at the history of the binary and counting semaphore, and then went on to discuss some of the associated problem areas. In this posting I aim to show how a different RTOS construct, the mutex, may overcome some, if...
Embedded Programming Video Course Teaches RTOS
If you'd like to understand how a Real-Time Operating System (RTOS) really works, here is a free video course for you:RTOS part-1: In this first lesson on RTOS you will see how to extend the foreground/background architecture from the previous...
Important Programming Concepts (Even on Embedded Systems) Part II: Immutability
Other articles in this series: Part I: Idempotence Part III: Volatility Part IV: Singletons Part V: State Machines Part VI: Abstraction This article will discuss immutability, and some of its variations in the topic of functional...
Learning A New Microcontroller
Contents: Introduction Background For The Beginner The Peripherals System Complexity Support Software Do It Like Phil The Programs GPIO And Timers UART And Timers I2C/SPI PWM ADC Go Crazy And Combine Them All WET And DRY...
Supply Chain Games: What Have We Learned From the Great Semiconductor Shortage of 2021? (Part 2)
Welcome back! Today we’re going to zoom around again in some odd directions, and give a roundabout introduction to the semiconductor industry, touching on some of the following questions: How do semiconductors get designed and...
Embedded Programming Video Course Shows How OOP Works Under the Hood
If you'd like to understand how Object-Oriented Programming (OOP) really works under the hood, here is a free video course for you: OOP part-1: Encapsulation: This first lesson on Object-Oriented Programming (OOP) introduces the concept of...







