1. Course topics
Recent
-
Real-time operating system ideas.
-
Tasks and scheduling.
-
Communicating between tasks. Queue for data, Mutex for sharing a resource (hardware), Semaphore for sharing things.
-
FreeRTOS on the ESP32 devboard
-
-
Measuring power supply current.
-
Sleep mode is tricky because it can be dominated by all the parts attached to the MCU instead of the CPU’s datasheet sleep current value.
-
Pull-up resistors can be hidden sources of supply current use.
-
2. Final project
The goal of your work for the rest of the semester is to:
-
Demonstrate that you have skills and knowledge about the six major Goals of the course.
-
Demonstrate your understanding of the major course topics.
How can you demonstrate this?
Best way (of many possible options) is to design and demonstrate a system that:
-
Utilizes an RTOS to manage several non-trivial tasks.
-
Seeks to minimize power consumption when the system doesn’t need to use power.
-
Uses a function or two written in assembly that is critical to some important metric, such as timing, power usage, or execution efficiency.
-
Uses hardware that you’ve not had much prior experience with.
2.1. Homework: Requirements
Your first task is to consider some project ideas, then create a set of Requirements for your project that would successfully demonstrate your achievement of each of the six Goals.
The ECE 322 final project has a specified set of requirements. This course, like real engineering projects, don’t always have technical, detailed, specifications given to the design team — it is also part of the team’s job to figure out what details support the product’s goals.
Some resources related to writing requirements:
-
Read through a slide desk from Intel about the Easy Approach to Requirements Syntax (EARS)
-
After reading about EARS, this EARS quick reference sheet may be a useful summary.
-
QRA: 21 Tips for Writing Exceptionally Clear Requirements also includes a short summary of EARS as Tip #11 on pdf page 7.
2.2. Suggested project ideas
These are as ideas only, you can do something else that you find more interesting. The final project requirement for the course is that your project demonstrates your learning of course content.
2.2.1. SMART Response XE
-
Write a better driver for interacting with the LCD display that improves some metric.
-
Write and use a library of code that allows two SRXEs to wirelessly communicate using their built-in packet radio. Perhaps a chat application.
-
Make the power button both wake up the system AND put it to sleep. Recall that the BASIC interpreter example requires using the
bye
command to go into sleep mode.
2.2.2. ShortSquawker
-
"Finish" the ShortSquawker to go to sleep as much as possible and minimize the battery usage. Then put it into a box and be battery powered.
-
Implement SS with all of its features on a different MCU.
-
MSP430 is capable of much lower active mode supply current.
-
ATmega329P (Nano board) that can be either battery powered, or, when attached by USB to a PC then it outputs CSV-formatted data to the serial port.
-
2.2.3. Other hardware
-
Write a driver to display text and other characters to this device.
-
A bar graph "level meter" would be pretty neat.
-
Use as the display for ShortSquawker, or to display ADC or other readings.

LTPZ245R-C384_thermal-printer_G21008.pdf Thermal receipt printer mechanism.
-
Write a driver to print pixels to paper.
-
The core part of this is writing to the print head’s shift register. The part has very few digital features.
-
-
Handle the timing to drive the paper-drive stepper motor.
-
Modify the print speed and pixel ON (heater) time for best print quality. The manual has all of this information.
-
Accept via an input (UART, Bluetooth, ???) each line of 384 pixels to print. Perhaps a line of 40 hex values:
c0ffee…\n
-
Use a simple font to print incoming text.
-
Include some commands to advance/retract the paper for loading new paper or helping the user tear off the printed part?
This project requires creating a very simple PCB to breakout the connector pins out to 0.1-inch header pins. This can be fabricated using the CoE’s laser cutter.
2.2.4. ESP32
Port exp32-ble-scan-mqtt
application to properly use FreeRTOS.
This is the application that runs on the WIRED Lab’s BluetoothLE sniffer/trackers.
-
Handle operational state changes depending on the availability of a WiFi connection.
-
Save data to a micro-SD card and do the data upload in bursts to save power when the unit is powered by a battery.
Implement ShortSquawker using the ESP32.
Use sleep modes!
Program the ULP processor that is in the ESP32 to manage part of the (ShortSquawker, other) application to avoid waking up the main processor(s) to save power.