Video-Based STEM Embedded Systems Curriculum, Part 2
Contents:- Introduction
- Lesson Plan 1: Introducing Arduino
- Lesson Plan 2: Circuit Drawings With Fritzing
- Lesson Plan 3: Basic Electronics
- Coming Soon
This post continues from part 1. It contains the first three lesson plans.
Lesson Plan 1: Introducing ArduinoThis lesson is first because Arduino is the simplest programming environment, yet allows lots of interaction with hardware. In...
Video-Based STEM Embedded Systems Curriculum, Part 1
Contents:- Introduction
- Adapting To Your Circumstances
- Suggested Policies
- The Video Educators
- Equipment, Books, and Supplies
- Lesson Summary
- Suggested Teaching Method
Learning From Engineering Failures
Contents: IntroductionI'm an informal student of engineering failures. They guide a lot of my attitude and approach towards engineering.
This is rooted in two of my favorite quotes:
- George Santayana: Those who do not remember the past are condemned to repeat it.
- Louis...
My Guiding Principles As An Engineer
These are my guiding principles as an embedded systems software engineer, forged over 40 years of experience. They shape the way I work and approach problems, and maintain my attitude in the face of adversity.
You may find them useful as well, whether working as a developer, a manager, or an executive, alone or on a team, when things are going well, and when they aren't.
They're a combination of favorite quotes and my own bits of derivative wisdom I've sprinkled...
Advice For High School Students
ContentsReview: Hands-On RTOS with Microcontrollers
Full disclosure: I was given a free copy of this book for evaluation.
Hands-On RTOS with Microcontrollers: Building real-time embedded systems using FreeRTOS, STM32 MCUs, and SEGGER debug tools by Brian Amos is an outstanding book. It lives up to its name, extremely hands-on and practical, taking you from knowing nothing about RTOS's (Real-Time Operating Systems) up to building real multithreaded embedded system applications running on real hardware.
It uses the ST Micro
The Self-Directed Virtual Internship
A number of my LinkedIn connections are college and university students at the bachelor's, master's, and doctoral levels, from all over the world. The embedded systems community constantly amazes me.
One fallout they're experiencing from COVID19 is cancellation of summer internships. This is very unfortunate, because an internship represents maintaining educational momentum and preparing for launch of a career with a taste of the real working world, along with some financial...
UML Statechart tip: Handling errors when entering a state
This is my second post with advice and tips on designing software with UML statecharts. My first entry is here.
It has been nearly 20 years since I first studied UML statecharts. Since that initial exposure (thank you Samek!), I have applied event driven active object statechart designs to numerous projects [3]. Nothing has abated my preference for this pattern in my firmware and embedded software projects. Through the years I have taken note of a handful of common challenges when...
Examining The Stack For Fun And Profit
Well, maybe not so much for profit, but certainly for fun. This is a wandering journey of exploration and discovery, learning a variety of interesting and useful things.
One of the concerns with an embedded system is how much memory it needs, known as the memory footprint. This consists of the persistent storage needed for the program (i.e. the flash memory or filesystem space that stores the executable image), and the volatile storage needed to hold the data while executing over long...
So You Want To Be An Embedded Systems Developer
Contents:- Introduction
- What's An Embedded System?
- Hobbyist vs. Professional Hardware
- The Primary Resources
- Some Advanced Resources
- Some Hardware
- Glossaries
- Other Links
- Final Thought
Advice For High School Students
ContentsEmbedded Developers, Ditch Your IDEs – Here’s Why!
Ditching your Integrated Development Environment (IDE) temporarily can be a transformative learning experience in embedded development. This post invites you to explore the underpinnings of IDEs by delving into alternative tools and processes like Makefile, CMake, Vim, GDB, and OpenOCD. Understanding these tools can demystify the background operations of IDEs, revealing the intricacies of compiling, linking, and debugging. This journey into the “under the hood” aspects of development is not just about learning new tools, but also about gaining a deeper appreciation for the convenience and efficiency that IDEs provide. By stepping out of your comfort zone and experimenting with these alternatives, you can sharpen your skills, enhance your knowledge, and possibly discover a more tailored and streamlined development experience. Whether you're a novice or a seasoned developer, this exploration promises insights and revelations that can elevate your embedded development journey.
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” didn’t really mean anything to me. This, here, is a guide for people like teenage me. We’re going to learn what an embedded system actually is, and why working on embedded software is the coolest thing you could ever do!
What's an embedded...Five ‘80s Movies that Inspired Me to Become an Engineer
Five ‘80s Movies that Inspired Me to Become an Engineer
Movies and pop culture can incredibly impact society, particularly children. However, we never really know what conversation, demonstration, or movie could inspire someone to become an engineer. Recently in the Beningo house, we ran out of the film to watch for movie night. In desperation, I decided to find great movies from my childhood in the 80s. To my surprise, I realized how influential several of these films inspired me to...
Learning From Engineering Failures
Contents: IntroductionI'm an informal student of engineering failures. They guide a lot of my attitude and approach towards engineering.
This is rooted in two of my favorite quotes:
- George Santayana: Those who do not remember the past are condemned to repeat it.
- Louis...
Introducing The VolksEEG Project
IntroductionThe VolksEEG project is an open-source project with the goal of creating an electroenchephalogram (EEG) machine, fully cleared by the FDA for standard clinical use. All designs will be freely available for others to manufacture.
The project was founded by Alan Cohen, a medical device systems engineer with an electrical engineering/software (EE/SW) background in Boston, USA, and Dr. Bryan Glezerson
The Self-Directed Virtual Internship
A number of my LinkedIn connections are college and university students at the bachelor's, master's, and doctoral levels, from all over the world. The embedded systems community constantly amazes me.
One fallout they're experiencing from COVID19 is cancellation of summer internships. This is very unfortunate, because an internship represents maintaining educational momentum and preparing for launch of a career with a taste of the real working world, along with some financial...
C++ on microcontrollers 2 - LPCXpresso, LPC-link, Code Sourcery, lpc21isp, linkerscript, LPC1114 startup
previous parts: 1
This blog series is about the use of C++ for modern microcontrollers. My plan is to show the gradual development of a basic I/O library. I will introduce the object-oriented C++ features that are used step by step, to provide a gentle yet practical introduction into C++ for C programmers. Reader input is very much appreciated, you might even steer me in the direction you find most interesting.
I teach my students that...
Video-Based STEM Embedded Systems Curriculum, Part 1
Contents:- Introduction
- Adapting To Your Circumstances
- Suggested Policies
- The Video Educators
- Equipment, Books, and Supplies
- Lesson Summary
- Suggested Teaching Method
VolksEEG Project: Initial Hardware Architecture
The initial hardware architecture for the prototype VolksEEG uses an Adafruit Feather nRF52840 Sense, which connects to a PC via USB for UI (User Interface). Through several additional chips, this provides power to and acquires data from the ADS1299 ADC.
An important topic I mentioned in my introduction to the project is isolation, ensuring there is no conductive path for current through the patient. The architecture is therefore split into...
Massive Open Online Courses ( Transforming education )
Emerging trends in online education have opened up unforeseen learning opportunities for aspiring students. Eminent instructors from the best names in the industry such as Stanford, MIT and Harvard provide several courses with video lectures online.
Named MOOCs, Massive Open Online courses are accelerating the learning process in a radical manner. Online universities like Coursera, edX, Udacity, Khan Academy and Udemy offer courses which are professionally relevant.
Jumping from MCUs to FPGAs - 5 things you need to know
Are you a microcontroller expert beckoned by the siren song of the FPGA? Not long ago, that was me. FPGA-expert friends of mine regularly extolled the virtues of these mysterious components and I wanted in. When I made the leap, I found a world seemingly very familiar, but in reality, vastly different. I found that my years of C programming and microcontroller use often gave pre preconceived interpretations of FPGA resource material which resulted in eye-roll class mistakes in my code. I’ve gleaned five things of vital importance to help you make that transition faster than I did.
C to C++: Templates and Generics – Supercharging Type Flexibility
"C to C++: Templates and Generics – Supercharging Type Flexibility" illuminates the rigidity of C when managing multiple types and the confusion of code replication or macro complexity. In contrast, C++ offers templates, acting as type-agnostic blueprints for classes and functions, which allows for the creation of versatile and reusable code without redundancy. By using templates, developers can define operations like add once and apply them to any data type, simplifying codebases significantly. Generics further this concept, enabling a single code structure to handle diverse data types efficiently—a boon for embedded systems where operations must be performed on varying data, yet code efficiency is critical due to resource limitations. The blog walks through practical applications, showcasing how templates streamline processes and ensure type safety with static_assert, all while weighing the pros and cons of their use in embedded software, advocating for careful practice to harness their full potential.
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” didn’t really mean anything to me. This, here, is a guide for people like teenage me. We’re going to learn what an embedded system actually is, and why working on embedded software is the coolest thing you could ever do!
What's an embedded...The Self-Directed Virtual Internship
A number of my LinkedIn connections are college and university students at the bachelor's, master's, and doctoral levels, from all over the world. The embedded systems community constantly amazes me.
One fallout they're experiencing from COVID19 is cancellation of summer internships. This is very unfortunate, because an internship represents maintaining educational momentum and preparing for launch of a career with a taste of the real working world, along with some financial...
VolksEEG: Rust Development On Adafruit nRF52840 Feather Express
Contents:Five ‘80s Movies that Inspired Me to Become an Engineer
Five ‘80s Movies that Inspired Me to Become an Engineer
Movies and pop culture can incredibly impact society, particularly children. However, we never really know what conversation, demonstration, or movie could inspire someone to become an engineer. Recently in the Beningo house, we ran out of the film to watch for movie night. In desperation, I decided to find great movies from my childhood in the 80s. To my surprise, I realized how influential several of these films inspired me to...
A brief overview of flight control software
It has been a long time since the first drones appeared. If you are interested in such a topic, you may be confused about how and where to jump in. Since I went through the same phase, I'd like to write my findings here and help others.
For this blog post, I've created chart and table with all open source flight control programs I've been able to find.
The chart shows the course of development of the existing software. It is separated in years and you can see when which project...
Video-Based STEM Embedded Systems Curriculum, Part 1
Contents:- Introduction
- Adapting To Your Circumstances
- Suggested Policies
- The Video Educators
- Equipment, Books, and Supplies
- Lesson Summary
- Suggested Teaching Method
Tenderfoot: Introduction to Magic (Numbers that is...)
Once upon a time, while participating in a source code review, I stumbled across the following C code in a header file:
struct Foo { //various structure fields char string_buffer[45+3]; //buffer requires about 45 bytes };My right eyebrow raised, I took a note, and continued with the code review, only to later stumble into this line of code in the body of a C function:
char * temp_string_buffer = (char*) malloc(45+3);Again, I took a note on this function, and continued...