2021-2022 ICS3U-E Engineering Tasks


Project 2.7. Mechanical.

Almost without exception one of your first memories is that of a motorized toy you received as a gift and played with endlessly. With luck, you may still have it somewhere, either in your room or a basement toy box. This project gives you the opportunity to revisit some of the mechanical magic you were enthralled with over a decade ago and may consider pursuing in your post-ACES years as a Mechanical/Mechatronics undergraduate.

Our ten-class Session 7 instructional focus explored the mechanics of three common motor varieties (DC hobby, servo, and stepper motors). In this project, you are asked to identify one of particular interest to you and develop an interesting prototype that exposes both its (no load) capabilities and your command of the many related concepts you have become familiar with in this course. These include power supply considerations, MCU control, monitoring, measuring, and display options, and finally some simple design aspects (PCBs, acrylic and/or 3D printing mounting and encasement alternatives).

DC Hobby Servo Stepper

The emphasis of this project is on creativity, originality and making the best use of the available resources in front you (components and time) (the only caution I will issue is that if your ISP or previous ACES project involved one of the three motors above, and you a wish to exploit it again, you are expected to take it to entirely new level)

As a starting point for your project considerations, you may wish to review the videos on our course page submitted by last year's ICS3U class that were tasked, specifically, with monitoring the speed of their DC Hobby Motor. Here's a link to their project description. Interestingly, their efforts were undertaken with the first month of the COVID pandemic. Browsing a decade's worth of previous ICS3U course pages will bring you face-to-face with dozens more project videos from Grade 11 ACES that have gone before you.

Finally, one of the reasons I require ACES to document their achievements in text and media (and painstakingly archive their work) is to have them available for inspiration for current ACES to use a springboard for their own accomplishments. Josh Dolgin's Bi-wheeled Rover and Jasper Schaffer's Rubiks' Cube Solver (both undertaken as Grade 12 ISPs) are pinnacles of high-school project achievements you can exploit to open the doors of your admission to University Engineering programs, this time next year.

Project 2.6. Wireless Communication or Other Choices (Optional).

One of the foundations of a healthy society, in general, and education, specifically, is equity. Since each student's particular situation is unique under this pandemic the equity principle is virtually impossible to adhere to. To this end, I am making this project optional. If it is compatible with the variables you are managing under, complete it. If not, save it for a rainy day.

Our nine-class Session 6 instructional focus is on two wireless communication protocols: Infrared (IR) and Radio Frequency (RF). Should you find either one interesting enough to dig deeper, you are at liberty to pick one of the first two descriptions below and complete a DER project summary based on it. On the other hand, if you UNO and Nano are embedded deep into your ISP pursuit consider one of the two, purely hardware, breadboard alternatives.

1. Infrared Remote Control

Pursuant to our brief look at a possible prototype for a universal remote control in Week 1 of Session 6, you are granted the opportunity to extend the concept by adding additional codes to control either a home device or possibly a motor (hobby, stepper or servo) that are all in your kit and that we will explore in Session 7.

Fola Folarin (ACES '20, Waterloo '25) chose to develop a surface mount version of an IR remote control for his Medium ISP in Grade 12 (pictured, right). Here is Fola's video that accompanied his DER submission: The DominatIR 2.0


2. Two-Way nRF24L01 Communication

In your possession are a pair of nRF24L01 transceivers. In class you were introduced to one-way communication between two MCUs, supported by the use of these devices to transmit a byte from a base UNO to a receiver UNO.

In this project you have the opportunity to solidify these skills by extending the sample application to support an interesting two-way communication. For example, earlier this year you undertook an exchange between a UNO and a Nano that employed wired serial communication when you complete the ASK,UNO project below. This project offers you the chance to modify that project by employing the pair of nRF24L01 transceivers you have.

Feel free to replace the Nano with a second UNO if that's more convenient and borrow a second breakout board from a peer if necessary.


3. R-2R Digital to Analog Conversion (DAC)

In class your knowledge of resistor networks expanded from the bussed and isolated varieties,

to include the R-2R design (right). You were supplied with such a device in your Session 6 loot bag, the datasheet for which can be found here.

This project asks that you wire up a 8-bit DAC using slide switches and your R-2R ladder to yield an analog output. A DMM or even Analog Voltmeter will be used to confirm the output. It might be a good time to dust of that 12V supply.


4. 555 Unpacked

OK, here's a project I've been wanting to do myself for some time. You're invited to beat me to it.

In Grade 10 you were introduced to the 555 Timer/Counter. On watching Ben Eater's remarkable video, you became aware of the internal design of this IC. If you appreciated the significance of this workhorse, this is your chance to recreate it's magic.

Recent instruction introduced you to the LM358 (op)erational (amp)lifier. From the hundreds of op amps on the market, this one includes two comparators, making it ideal for this purpose.

On a breadboard, recreate the 555 by connecting its major components highlighted in the diagram to the right. For the SR latch, your 4001 Quad 2-Input NOR IC from your Grade 10 kit will do nicely.

As I said from the top, this is an important circuit to develop at least once in your life!

Project 2.6 Numeric Coprocessor. To be developed...

The brain of an embedded system is the primary MCU. Secondary A coprocessor is (was) a secondary processor specially designed to perform efficient floating point calculations.


Embedded ATmega328P

The goal of the embedded system designer is to engineer a real time, in-system programmable (ISP) and functioning MCU-based device, housed in a physical and electronically-stable case. This project gives you your first attempt at creating such a device (and sets your design ideas in motion for our custom PCB and CAD design journey in the weeks ahead)

Most (all?) ACES projects combine required elements with creative latitude for students to demonstrate competency in both areas. It is your teacher's belief that your careers will demand this of you. This project is representative of this hybrid pairing.

Read this Standalone ATmega328P Primer

Read this (Previous Years) Comprehensive Backgrounder on this Project

The ULTIMATE GOAL of this project is to create a mounted, standalone, sensor-based, In-System Programmable (ISP) (MCU reprogrammable without removing it) device driven by the same MCU at the core of the Arduino, AVR's ATmega328p that will be secured to a 3D Printed ACES Stand supplied to you. By way of example, the graphic to the right is a crude simplified layout for a next-to-minimal, standalone ATmega328p on Adafruit's 30-column, Perma-Proto Half-sized Breadboard PCB that you have in your toolkit. I will also provide you with an RSGC ACES version of the PCB that includes an onboard 0603 resistor/LED pair for optinal use. I'm sure you'll think of a more optimal layout. Just remember, those 30 columns are precious, so make the best use of them as your design skills will permit. Finally, I am of the opinion that the most successful projects are the ones in which the designer/engineer has a clear image in his or her head and a reasonably accurate drawing on paper. This is one reason I ask ACES to include a hand-drawn sketch with their ISP Proposals. So, consider engineering this project in reverse by reading all three stages and prototyping backwards.

Task 2.5 Perma-Proto ATmega328P

Adafruit's Perma-Proto Half-sized Breadboard (30 Columns)
FRONT RSGC ACES 1/2 Perma-Proto Mount
  1. Supplemental Parts List for 2.5
    # Description
    1 RSGC ACES Perma-Proto 1/2 Sized PCB
    1 28-Pin Kinked IC Socket
    1 RSGC ACES 1/2 Size Perma Proto Mount
    1 2.1mm×5.5mm Schurter Power Jack
    2 M3 5 mm Nylon Screws
    * Heat Shrink Tubing
    ? ?
    GOAL. The goal of Project 2.5 is to create a permanent (soldered), functioning, in-place programmable ATmega328P-based prototype of your circuit in Part 2.4, that is sercurely fastened onto the ACES 1/2 Size Perma-Proto Mount that is provided to you.
  2. PERMA-PROTO PCB. Review your Perma-Proto 1/2 Sized PCB thoroughly, front and back, noting in particular, which hole sets are continuous or not. Also review Adafruit's Perma-Proto Tutorial on working with perma-proto materials.
  3. FULL LAYOUT. Using a combination of the parts in your kit and some of the supplemental parts listed to the right, lay out your components on your perma-proto PCB to get a spatial sense of the device you are about to make permanent.
  4. SOLDERING. Take considerable care with stage as replacement parts will not be supplied by Mr. D.
  5. TESTING. Upload your code with your SAPP. Debug as necessary. Remove your SAPP and supply 9V power through your DC input jack and 5V regulator to confirm your circuit's reliable performance.
  6. REPORT. By the deadline complete and submit a comprehensive DER on this project

Project 2.4 Standalone ATmega328P. for 2021/2022. With a term's worth of introductory awareness of the Arduino's capabilities, it is time to strip the MCU from the convenience of well-appointed development boards (UNO, Nano, etc.). By placing the ATmega328P DIP28 IC into an empty breadboard and bringing it to life, you come to appreciate the minimal set of supporting components required to support embedded systems of your own design. Familiarity with minimally-design systems helps to reduce costs and maintenance. Furthermore, this project is the ideal seque to designing your own custom PCBs for your ISPs.


  1. With your I2C and RTC skills in hand, you are asked to develop a prototype based on an in-system programmable standalone ATmega328P MCU, your RSGC ACES DS1307 Breakout Board and a 16×2 Character LCD Display.
  2. You are required to provide power to your prototype through 5V regulation using your LM7805 powered from your Grade 10 9V AC/DC Adapter.
  3. Your Character LCD should function as an ongoing Date and Time display as shown below. A suggested component layout and RTC display data appears below.
  4. Your code must tap the RTC's 1 Hz SQW clock signal as an external interrupt to produce an update of your LCD.
  5. Use of the DS1307RTC library is permitted.
  6. The first Grade 11 ACE to submit his complete DER for this project using Wire Level RTC access in his code only (does not use an RTC Library) is eligible for a significant bonus. Be sure to indicate this in the body of your email to ACESHandin.

Project 2.3 A Breadboard RTC. for 2021/2022. One of the advantages (and privileges) of running a program of our own design like the RSGC ACES program is that I get to continually adjust my curriculum to meet the immediate needs of my students and many dynamic challenges beyond our control. After the previous Persistence of Vision project, you all needed to make adjustments to the full project development cycle, particularly the final reporting phase. I was thrilled with the way you responded to our post-project discussions last week and I want to acknowledge and reward your efforts. So, here's how I intend to do this.

Our class-time last week and this week are invested in exploiting your PoV experience in the development of a breadboard-based, real-time clock system. Not only does this pursuit introduce you to an important (wired) communication protocol (Inter-Integrated Communication or I2C) and a number of other essential techniques and skills, but the process provides a useful model for your own first personal ISP undertaking over the next two months.


Continue to follow along closely with our in-class development of a breadboard clock prototype, noting and documenting (media) the numerous stages and concepts that are brought together to produce your working.

This (Friday and) Saturday, assemble our mutual experience into your own unique DER presentation while adhering to hundreds of details and expectations provided in the previous months in our program. To capture the highest credit possible you will pay close attention to both the individual and group feedback comments that have been provided to you. To this end, you are NOT to simply wear out a path to my desk this week seeking multiple assurances that you are doing things to the letter. Doing so will only reduce your eventual credit. You are all capable of completing the reporting task ON YOUR OWN or with the OCCASIONAL query to a TA.

Make the most of this opportunity.

Project 2.2. Persistence of Vision. (Reference: AVR Foundations: pp. 35-38). It's strange to think that our eyes perceive much of the LED lighting around us to be uniformly ON, when they are actually OFF as much as half the time (maybe this is one of the reasons LED lighting is so cost-effective?). The next time you're in the DES, point your phone's camera at the digital clock and observe the interference bands generated by clock's display alternation and your camera's periodic scan rate.

Perhaps the most remarkable ACES PoV creation was engineered by K. Fiset-Algarvio (ACES '19, Guelph Mech. '23) in his amazing Grade 11 ISP: The Persistence of Vision Globe. Above are two images extracted from his DER. Be sure to watch his detailed video.

You have been given a dual 14-Segment Dual CC Alphanumeric Display. An image of the device appears below, left, in which I have coloured a few segments to simulate a 'possible' depiction of the two-letter word AS. Here's the link to its datasheet so you can familiarize yourself with its pin layout. Given its 14 segments, this component can be driven by two SN74HC595 shift registers* and a pair of transistors (one NPN and one PNP) under control of a SINGLE square wave (bottom, right), in a Persistence of Vision scheme.
*Although the ATmega328p has enough pins to complete this task without using shift registers, you are required to do so, for practice.

BASIC Task. (Adapted for 2020-2021)

  1. This project requires you to combine a number of recent hardware and software techniques introduced in class to produce an alphabetic PoV display of letters entered by your users through the Serial Monitor's input text box. In particular, you will employ only TWO Shift Registers and the square wave alternation circuit above, to affect a Persistence of Vision strategy on your dual display device.
  2. Be sure to have available a complete 26-element array of type uint16_t that defines the segment maps for each uppercase letters from A to Z. The organization of the segments will have to match your wiring to the segments to be effective. These array definitions are typically called Lookup Tables or, simply, LUTs.
  3. Create the Arduino project, PoVWord.
  4. Within the project sketch of the same name, develop code that will call upon your LuT to echo the two-letter input from the user on your dual 14-segment display device.
  5. You do not need to implement the decimal point unless warranted.
  6. You can assume users enter two letters only, however your code must be prepared to change a lowercase entry to uppercase prior to its display.
  7. Be sure to FULLY document your (efficient and original as possible) code and attach POVWord.ino to your submission as the second attachment, along with your DER.docx file.

For the ambitious, consider the following any or all of the following. If you implement any enhancement add a section on you DER entitled Enhancement and document your creative extension(s).


  1. Software comfortable ACES may wish to dive deeper into the Arduino String library in support of allowing users to enter more than two characters and have them scroll across your display.
  2. Fans of the Periodic Table fans may wish to create a LuT with each elements' 2-letter symbol (a space is a character) and allow users to enter the number of the element (echoed on two 7-segment displays). Your code would present the elements' symbol on the dual 14-segment display.
  3. There are many more ASCII characters than the uppercase letters. Consider, for example, enlarging your LuT to include the additional lowercase characters. Note: the ASCII Table inserts 6 characters between the uppercase letters [65,90] and the lowercase letters [97,122].
  4. Use Write14SegASCIIEEPROMKWA-541XPGB.ino code to populate EEPROM as a means to eliminating the need to define your LuT every time in your application code. Be sure to include this additional EEPROM code in your DER and attach it to your email.
  5. Lots of other ideas for the imaginative....

Advice (trust Mr. D's experience)

For many of you, next to your Secondary School Graduation Diploma, your DER will be your most important high school document as the two of them may very well open the doors to your careers.
Take great pride in your craftsmanship of this work.

First, make the following edits to your DER,

  1. Add ICS3U to your title page after ICS2O, separated by a comma of course. Next year you can add ICS4U :)
  2. Insert a Next Page Section Break at the end of your Grade 10 ICS2O reports
  3. In the middle of the (divider) page type ICS3U, in large font, centered on the page. Suspend the display of the header and footer on this divider page (Hint: Section Breaks).
  4. Insert another Page Break.
  5. Adjust the new header to reflect the ICS3U course code, but continue the page numbering in the footer.
  6. Begin this year's submissions with a report entitled, Project 2.1. Traffic Light.
  7. Be sure to update your ToC prior to submission.

Project 2.1. Traffic Light. Since many of you will be pursuing your driver's license in the near future, the focus of this first project is the careful soldering and QUALITY programming of a standard traffic light. Jasper Schaffer (Fraser's older brother) (ACES '18, Queen's '22) was in his ICS3U year, when he designed the handy little PCB pictured to the right that has been the recent tradition of the first project of the ICS3U of the ICS3U year. For the assembly aspect of this project you will solder one each of a green, yellow, and red 10mm LED and a four-pin right-angle header from your toolkit onto the Schaffer Traffic Light PCB you have been provided with. Take care as there are NO replacement parts. The right-angled male header pins allow your device to be inserted directly into adjacent female port pins on your Arduino (eliminating the need to use a breadboard and hookup wires). ACES refer to these kinds of PCBs as appliances. Be sure to document your soldering of the device through media acquisition from your phone that you can include in your Report. For the testing aspect, you will include media as well as a well-planned Arduino sketch (program) modified but based on our discussions and models in class. The fully documented sketch should cycle through the LEDs continuously with the green and red remaining on for four times the duration of the yellow (amber) LED.

In your Report, you are include the Purpose, Reference, Procedure, Code, Media, and Reflection subsections in Heading 2 style. A full Parts Table, with background shading consistent with your previous ICS2O colour theme and width of 3" and should appear right-aligned within the Procedure section. Finally, ensure that no content is allowed to spill into any of the four page margins. For this first submission, I will review the requirements and techniques for inserting syntax-highighted Arduino C Code into your Report in class this week.

Attach your DER.docx to an email (from GMail) to ACESHandin@rsgc.on.ca with the Subject: Traffic Light, by the deadline.