this is a work in progress... nothing is finalized and no decision made at this point. Just doing a market survey for now... many people need to be consulted and this will have to be a joint decision...
We'll use an internal (to York) Teams page to flesh out the details.
Key characteristics
- Price. (low — under $30)
- Availability (deep stock, multiple vendors)
- Ease of use. (no exotic tools)
- Multi-platform (min. Mac, Win)
- Internet usage (low to none)
- Teaching approach (self-directed learning, remote delivery, spiralling / cross-course linkage)
- Availability of alternatives (diffn’t form factor, simulators)
For Microcontroller design “spine”
The way I see it
- Year 1: Yes to Arduino. Fundamental computer and interface skills using Matlab/Arduino/Python. Simple hardware reduces distractions and provides opportunities for project-based assignments that “can’t just be copied off the internet or from others on Discord or Reddit”
- Year 2: Wean off Arduino, Part 1. Transition to fundamental analogue electrical skills with Arduino/Python, medium-level programming in C (C++) and intro Verilog. Use common parts (i2c displays, etc.) from SparkFun, Adafruit, Seeed.
- Year 3: Wean off Arduino, Part 2. Combine electrical skills and C (C++) and Verilog programming. Provide practical lessons on how to take Arduino hardware and software examples and convert to Verilog and C (C++). Let’s get serious about practical interfacing (i2c, spi, uart, BJTs, instrumentation amplifiers, etc.). Motors classes and instrumentation classes need to use the same FPGA/microcontroller hardware as seen in Year 2.
- Year 4: Arduino relegated to examples only. Students can design their own breakout boards and develop schedulers on C (C++) and Verilog platforms while minimizing cases of “release the magic smoke”. Designs should orbit platforms used in Year 2 and Year 3.
At all levels, assessments should be project based, unique to York and permit individualization. This will promote learning and help with the academic integrity issue that so many people worry about.
I am currently considering… but it’s all up for debate…
- Year 1, Semester 1: simple, Arduino-based microcontroller (+ parts & tools kit
- Shield with breadboard.
- Uno R3 5v form-factor. Allow for (and test in Matlab) SparkFun, Adafruit, etc. equivalents (test in Matlab)
- The Diana Initiative is having similar discussions about accessibility and options during COVID19.
- Matlab compatibility is key.
- Maybe ask EECS-intended 1st year students to get KL25 and others to get Uno R3 type. Design labs to run on both.
- Year 1, Semester 2: Java or CircuitPython compatible Arduino-like device with ARM chip.
- Have SWD port available for reuse in 2nd year +.
- The Metro M0 Express is really nice… SWD port included. But stock might be limited.
- Beaglebone Black or Green (instrumentation ports included) (Labview is supported)
- Year 2: Use the (Arduino-based?) micro with a debugger in C or C++. Learn digital & analogue in separate courses.
- The Segger J-link EDU mini is about $25. Works with ARM Cortex, PIC32 and RISC-V. Mac OS, Windows and Linux support.
- Microchip’s MPLAB X has a decent simulator for PIC32, AVR, PIC16 and SAMD (ARM Cortex).
- PIC32: breadboardable as a chip or as a board.
- Year 3: Non-arduino solution. Students choose either FPGA or Microcontroller. Focus on free-form analogue and digital integration, interfacing, circuit building. Integrate previous analogue and digital courses with a micro/FPGA.
- year 4: more open-ended and super-specialized design …
Ideally, hardware is inexpensive (under $100 per course) and be viewed as a replacement for a paid textbook. We should consider using the Library to host eBooks for every course to offset the cost. Re-use of hardware from one course to another would be great.
Ideally, we should have
- At least two vendors available
- One off-the-shelf solution (or near off-the-shelf that our tech team might have to solder pins to (e.g. Adafruit Trinket, Teensy or Feather boards)
- One custom, students make-at-home (e.g. PIC32 breadboard)
Looks like SeeedStudio has suggestions for an “at home lab setup.” or “learn from home equipment.”
Breadboardable boards (except for the Teensy) generally come without headers to reduce cost. What would it take to order 500+ boards (Trinket, Feather, etc.) and have connectors (SWD, etc.) installed prior to distributing to students? Would we ask the vendor? Would we do it in-house?
Motors & Instrumentation Classes
Our “motors” class should incorporate the microcontroller and have students learn how to create an H-bridge with a simple DC motor and protection circuitry. Likewise, an instrumentation class should focus on an amplifier and diode protection for the ADC line.
Matlab support
- Arduino MKR Zero, Uno, Duo, Mega 2560, Micro, Mini (‘328), Nano 3.1, Pro (‘328), Pro Mini (‘328), SparkFun Digital Sandbox (‘328?).
- FRDM KL25
- do currently-sold boards have the old firmware problem that required Windows 7 for updating?
- Yes. The problem remains.
- possible workaround for Mac, Linux and Windows 10 c/o mbed.
- We should consider preparing these boards with SWD header on it before sending to students
- They ship without headers. That necessitates soldering. Not practical in class of 500+.
- do currently-sold boards have the old firmware problem that required Windows 7 for updating?
- BeagleBone Black
- Beaglebone Green
- Lego Mindstorms
- Raspberry Pi
There are other options that don’t initially have Matlab support. The SeeedStudio Grove Beginner Pack is like the SparkFun’s Digital Sandbox. The Adafruit Metro (328) might be easier for background ISP programming than the Uno. But only the breadboardable Teensy, Trinket, etc. seem to be available in quantities sufficient for large classes. But lack of soldered-on SWD connector is problematic for programming in C in 2nd year.
Background Debugger & C/C++
- FRDM KL25 & MCUXpresso
- Problem 1: Some versions of the board do not included headers. We cannot expect 1st year students to solder on the headers.
- Problem 2: At least some versions of the board can only be used in Windows 7. Is new firmware included?
- We should consider preparing these boards with SWD header on it before sending to students.
- The FRDM KL25 has a built-in debugger, but the SWD port is not populated.
- ATMEGA328 (P,PB). & MPLAB X 5.35 ($70 PICKit 4, $20 Snap, Free Simulator, Atmel-ICE)
- The LPC8xx, including the ‘802 used in EECS 3215 or the LPC824 in breadboard form.
- The Segger J-link EDU mini is about $25 and will program PIC32 from Microchip and ARM Cortex M from multiple vendors.
- C++ support for arduinos and TensorFlow.
Breadboardable Computers
We can have students build low-cost computers from scratch. Everything on a breadboard, all powered from USB and debugged using programmers that cost less than $30 (Segger JLink EDU and Microchip Snap). A complete lab kit for about $50, with reusable and expandable parts. Even better, MPLAB X has a simulator for all these chips built into their free software.
- The ATMEGA328xx
- The PIC16F1xxxx
- The PIC32MXxxxx
The advantage to this approach is the lack of reliance on development boards that may not be available if the supply chain breaks.
Single Board Computers for Java
- The Raspberry Pi (and arduino headers, grove kit; java book)
- The BeagleBone (“Pocket” w/o headers is $30)
- The Udoo (grove kit)
- Microbit (Java lessons , finch + java)
- A list of “Best in 2020“
For FPGA design “spine”
Non-Windows support (Mac) is important
While the traditional way to develop for FPGAs is on Windows machines, many students do _not_ have a Windows computer. It’s fair to say that a large percentage have Macintosh machines that they develop with. Any FPGA infrastructure that we propose needs to support Macs, from the command line at a bare minimum. Here is an example using the ICE series of FPGAs:
- Lattice ICE FPGA support on the Macintosh.
We cannot expect students to purchase Windows machines. We have to expect that at least some have non-Windows (i.e. Mac) machines at home.
Matlab Support
Verilog or VHDL
- SNO with Intel 10
- “Sno (US$ 49) from Alorium Tech seems like a good FPGA solution, particularly with the Embedded AVR micro, Arduino IDE compatibility and specialized included / configurable XBs (Xcellartor Blocks). However it might be more suitable for later labs of the course and even for project works, as it requires better understanding of HDL coding and use of the EDA tools, which students at the start of the course may not possess. And it would certainly require expansion, to utilize its capabilities.” (c/o Mr. Jaspal Singh)
- Lattice ICE40
- AD’s PLUTO supports both Verilog and VHDL
- A $5 FPGA board: Tang Nano @ Seeed Studio ($10 from Digi-Key Canada)
- Repurpose $40 Xilinx Bus Blaster?
- Comparison of TerasIC FPGA starter kits. (link c/o Mr. Jaspal Singh)
- DE10-Lite and DEO-Nano are budget priced FPGAs.
- “DE10-Lite looks promising, as it is close to the boards which we have been using, without many of the extra features and thus only @ $55. For most of the labs, we have done so far in the course, it would be sufficient on it’s own, with some minor changes (e.g. only 2 push buttons), though without requiring expansion. ” (c/o Mr. Jaspal Singh)
Simulation
We also need simulation tools for students to use. Reasons for simulation:
- To allow self-directed learning. Students should be able to explore, on their own, using recorded class material and online discussions as a guide. Simulations complement class recordings/writings as well as hardware lab kits.
- Many students have bad internet access and connection to online resources
- Lab Kit hardware will fail.
- Lab Kits may be unavailable (supply chain shortages)
Examples of simulation packages
- Maple and MapleSim (electromechanical, permits students to auto-derive equations)
- Analogue circuits (EECS 2200, 2210), Physics (1800,1801)
- Matlab and Simulink (electromechanical, numerical simulation only)
- Analogue circuits (EECS 2200, 2210), Physics (1800,1801)
- LTSpice (electrical, numerical simulation only)
- Analogue circuits (EECS 2200, 2210)
- Microchip MPLAB X IDE (ARM, AVR, etc. micros)
- 2032, 3216
- Segger IDE (ARM, etc. micros)
- 2032, 3216
- Mbed Simulator (ARM micros)
- 2032, 3216
- RISC V simulator?
- 2032, 3216
- HDL (Verilog/VHDL)
- Are there Mac HDL tools out there? Or online?
- Icarus Verilog is multi-platform.
- Intel tools are Linux or Windows
- Mentor Graphics is Windows only
- “Regarding the Simulators for HDL, both Mentor Graphics (Modelsim) and Aldec (Active HDL) offer Free student version of their simulators. The good point is that they are same as their widely used commercial simulators, but with reduced capabilities. So the students get a head-start using them in schools. I have used them before and they are good. Both of these simulators are available with pre-compiled libraries to support FPGAs from various vendors, including from Intel and Xilinx. This greatly simplifies simulating HDL code, using components from these two main FPGA (and some other) vendors.” (c/o Mr. Jaspal Singh)
- Are there Mac HDL tools out there? Or online?
General Tools
Analogue Parts
Having a reusable box of analogue parts (semi-consumable) that would be used in multiple courses, from EECS 1011 to EECS 2200 to EECS 3216 is probably a good idea, for instance:
- Digilent / Analog Devices Analogue Parts Kit
- Arduino starter kit
- Arduino Motor kit
- Adafruit “Parts Pal” (with opamp)
Digital Parts
1. Grove parts kit
Oscilloscopes & Logic Analyzers
I think that a cheap oscilloscope will be important for any analogue signals courses. A cheap logic analyzer is key for courses that involve i2c or SPI devices (which we should absolutely do). By third year, students should have these, in addition to a basic multimeter.
We should investigate the low-end and create tutorials that are school specific for usage of these devices… especially since some of them (like the bus pirate) are not straight forward to operate)
- DSO Nano v3 @ Adafruit for $150.
- BangGood sells some multimeters with “scope” displays for about $100.
- Bitscope for $200, can be used with PC and Raspberry Pi.
- MCC sells DAQs (standalone and for RPi) for about $100.
- DATAQ sells a $60 DAQ with Matlab and Labview support (maybe Windows only; Maybe Mac & Linux)
- Picoscope 2000 (~ $200)
- Mini DSO DS213 (~ $200)
- Digilent scope (~$300)
- Cheap scopes on Amazon (1, 2, 3): about $100 (comparison)
- Bus Pirate (~$40) as a logic analyzer or really slow oscilloscope.
- What if their Microcontroller board could be mod’d into a Logic Analyzer like the PIC24 on the Bus Pirate?
- SparkFun’s $20 Logic Analyzer. (c/o John Amanatides)
- or really, really cheap and use a $15 Teensy and a Java app…
- or just use Matlab to gather data from the Arduino. (I used to do something similar with 9s12 micros with Matlab) or maybe use the built-in support to do something better.
- or there’s the PteroDAQ with Teensy…
Multimeters
- See EEVBLog for $30 meters.
- Extech EX330: we’ve “found them good quality, rugged and low cost. An alternative from them [Extech MN35] is for about $25.”
Hobbyist DAQs
An Arduino shield DAQ for about $60.
Power Supplies
- Breadboard power supplies from DR Robot.
Useful Arduino features
Command line interface or command server
- Piconomix CLI (Embedded Elegance) vai piconomix.com
- Megano Link
- Norwegian CLI link
- Java to Arduino serial control and another.
- Arduino as a DAQ on Nuts and Volts
- Measuring with an Arduino as a DAQ.
- java offers the NIO and NIO.2 interfaces for serial.
No easy way to debug
Most Arduinos hide the SWD or debug port. Maybe this is the reason for using the microchip xplained board.