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...
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
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
Review: Prototype to Product
Prototype to Product: A Practical Guide for Getting to Market, by Alan Cohen, is a must-read for anyone involved in product development, whether in a technical, management, or executive role.
I was reminded of it by Cohen's recent episode on Embedded.fm, 388: Brains Generate EMF, which is worth listening to a couple times through, especially if you're interested in medical device development. And in fact his first episode there,
The 2021 DSP/ML Online Conference
The 2021 DSP/ML Online Conference is just around the corner and this year again, the program is packed with opportunities to learn.
By registering for the conference, not only will you have full access to all talks, workshops, and Q&A sessions at this year's event, but you'll also gain instant access to all talks from last year's edition.
We've asked the speakers to tell me a few words about their sessions, here are some of the answers we've...
Definite Article: Notes on Traceability
Electronic component distibutor Digi-Key recently announced part tracing for surface-mount components purchased in cut-tape form. This is a big deal, and it’s a feature that is a good example of traceability. Some thing or process that has traceability basically just means that it’s possible to determine an object’s history or provenance: where it came from and what has happened to it since its creation. There are a...
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...
Acceptance Tests vs. TDD
Contents:Embedded Online Conference 2021 - Watch the Speakers Share their Thoughts on the Value for Attendees
Over the last few weeks, we've had a chance to chat with some of the speakers at the upcoming Embedded Online Conference. We asked them to share their thoughts on conferences and the Embedded Online Conference in particular. Here are their answers edited together in one video:
If you are not registered yet for the conference but are considering it, please make sure to use the promo code ER149 to save more than 40% on your registration...
Voltage - A Close Look
My first boss liked to pose the following problem when interviewing a new engineer. “Imagine two boxes on a table one with a battery the other with a light. Assume there is no detectable voltage drop in the connecting leads and the leads cannot be broken. How would you determine which box has the light? Drilling a hole is not allowed.”
The answer is simple. You need a voltmeter to tell the electric field direction and a small compass to tell the magnetic field...
Introduction to PIC Timers
The fourth in a series of five posts looks at 8-bit PIC hardware timers. After a review of basic timer functionality, the Timer0 module operation and configuration is reviewed and a basic application implemented using Timer0 to blink external LEDs at a frequency of 0.5Hz.
C++ on microcontrollers 1 - introduction, and an output pin class
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 am lazy. I am also a programmer. Luckily, being a lazy...
Introduction to Microcontrollers - More On GPIO
Now that we have our LED Blinky program nailed down, it's time to look more closely at outputs, add button/switch inputs, and work with reading inputs and driving outputs based on those inputs.
It's ON - No, It's OFF - No, It's ON...I have to confess, I cheated. Well, let's say I glossed over something very important. In our LED Blinky program, we never cared about whether an output '1' or an output '0' turned on the LED. Since we were just...
Coroutines in one page of C
A coroutine is a function that you can jump back into after returning from it - and it remembers where it was in the code, and all the variables. This is very useful at times.
One use is generating a sequence of values. Here's how you can generate all the x,y pairs in a 2D range in Python:
def iterate(max_x, max_y): for x in range(max_x): for y in range(max_y): yield x,y for x,y in iterate(2,2): print x,yThis prints:
0 0 0 1 1 0 1 1The yield keyword is like...
You Don't Need an RTOS (Part 4)
In this fourth (and final!) article I'll share with you the last of the inter-process communication (IPC) methods I mentioned in Part 3: mailboxes/queues, counting semaphores, the Observer pattern, and something I'm calling a "marquee". When we're done, we'll have created the scaffolding for tasks to interact in all sorts of different the ways. Additionally, I'll share with you another alternative design for a non-preemptive scheduler called a dispatch queue that is simple to conceptualize and, like the time-triggered scheduler, can help you schedule some of your most difficult task sets.
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...
PC and SP for a small CPU
Ok, let's make a small stack-based CPU.
I will start where the rubber meets the road - the PC/stack subsystem that I like referring to as the 'legs'. As usual, I will present a design with a twist.
Not having a large design team, deadlines and million-dollar fab runs when designing CPUs creates a truly different environment. I can actually sit at the kitchen table and doodle around with CPU designs to my heart's content. I can try really ridiculous approaches, and work without a...
Homebrew CPUs: Messing around with a J1
In this article I will examine James Bowman's excellent J1 CPU; I will then proceed to mess around with various parts of it, making it smaller, more appropriate to my particular application, and possibly faster. I hope this will show you how easy it is to fiddle around with homemade CPUs and encourage you to make something weird and wonderful.
J1 CPUMy hat is off to James Bowman. J1 is pretty cool. It is a stack machine; it executes instructions in one cycle, it is...
Data Hiding in C
Strictly speaking, C is not an object-oriented language. Although it provides some features that fit into the object-oriented paradigm it has never had the full object-oriented focus that its successor C++ offers. C++ introduced some very useful concepts and abilities that I miss when I’m developing in ANSI C. One such concept is protected member variables and functions.
When you declare a class in C++ you can also declare member variables and functions as part of that class. Often, these...
Metal detection: beat frequency oscillator
Plan Introduction Theory Electronics Software Tests ReferencesNext part: building the detector 1. IntroductionThis article discusses the implementation of a beat frequency oscillator (BFO) stage for metal detector. While they are mentioned here and there, the article does not detail other important electronic stages such as the power supply, and user interface, the coil or the detector frame. I may write other articles on these topics, and other detection methods.Before...
A wireless door monitor based on the BANO framework
IntroductionI have been thinking for a while about a system to monitor the states of my flat and my garage doors from a remote place. Functionnaly, I wanted to monitor the state of my doors from a remote place. A typical situation is when I leave for holidays, but it can also be useful from the work office. To do so, I would centralize the information on a server connected on the Internet that I could query using a web browser. The server itself would be located in the appartement, where...
Oscilloscope review: Hameg HMO2024
Last year I wrote about some of the key characteristics of oscilloscopes that are important to me for working with embedded microcontrollers. In that blog entry I rated the Agilent MSOX3024A 4-channel 16-digital-input oscilloscope highly.
Since then I have moved to a different career, and I am again on the lookout for an oscilloscope. I still consider the Agilent MSOX3024A the best choice for a...
Elliptic Curve Cryptography
Secure online communications require encryption. One standard is AES (Advanced Encryption Standard) from NIST. But for this to work, both sides need the same key for encryption and decryption. This is called Private Key encryption.
Have You Ever Seen an Ideal Op-Amp?
Somewhere, along with unicorns and the Loch Ness Monster, lies a small colony of ideal op-amps. Op-amp is short for operational amplifier, and we start our education on them by learning about these mythical beasts, which have the following properties:
- Infinite gain
- Infinite input impedance
- Zero output impedance
And on top of it all, they will do whatever it takes to change their output in order to make their two inputs equal.
But they don't exist. Real op-amps have...
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 differences. The most often quoted response is that of the “The Toilet Example (c) Copyright 2005, Niclas Winquist” . This summarises the differences as:
- A mutex is really a semaphore with value 1
No, no, and no again....
Ada 2012 Comes to ARM Cortex M3/M4
Ada, that old dinosaur? I thought Ada was dead!Admit it, at least a few of you had that thought, right? Well, far from being dead, the Ada language has been evolving, improving, and helping to save lives, property and money around the world for the past 30 years. And what's more, the latest version of the language, Ada 2012, will soon be coming to a two-dollar microcontroller near you.
A Personal Dream Come TrueOK, maybe that's going too far -...
Basic hand tools for electronics assembly
Though the software tools vary with different microcontrollers, many hardware tools are the same.
Two jobs
For those of you following closely embeddedrelated and the other related sites, you might have noticed that I have been less active for the last couple of months, and I will use this blog post to explain why. The main reason is that I got myself involved into a project that ended up using a better part of my cpu than I originally thought it would.
edit - video of the event:
I currently have two jobs: one as an electrical/dsp engineer recycled as a web publisher and the other...
Reverse engineering wireless wall outlets
IntroductionI am improving the domotics framework that I described in a previous article://www.embeddedrelated.com/showarticle/605.php
I want to support wireless wall outlets, allowing me to switch devices power from a remote location over HTTP.
To do so, I could design my own wireless wall outlets and use a hardware similar to the previous one, based on the NRF905 chipset. The problem is that such a product would not be certified, and that would be an issue regarding the home insurance,...