Week 15: System Integration

Individual Assignment: Design and document the system integration for your final project.

IBM or Apple? Brainstorm

A big question from this year's lecture was to be IBM or Apple. IBM made block-like computer systems, whereas Apple's design came with style. Clearly we see which is the superior.

Unfortunately, the first prototype of our project is rather blocklike as IBM's computers:

The issue is that the head is unnecessarily big, and lacking grace. It has too much extra space. Let's consider again what we'd need to be inside, and then see how to redesign in a smaller form.

We might add other additional features, such as a camera, additional motor to rotate the head or arms, ability to dispense cash or other items, but the minimalistic version of the project can indeed be just a fraction of the original size considered.


Small is Beautiful

In fact, the entire project could fit in the model of the CNC project which we cut from cardboard:

As discussed in lecture, there are many ways in which a project can fail. It requires consistent and sustained testing to ensure the project can continue to perform reliably for a long time.

We want our project to withstand the wide variety of potential problems. The whole point of the project is that it IS remote, and therefore will need to work very reliably. The smaller size should help it work reliably.


Integration of Face and Dispenser

As the two key physical components of the project are the exterior face and interior candy dispenser, we must consider their integration in design:

System components & RFID:

Here's a schematic of the system's components which we need to integrate. The main controller is XIAO-RP2040 because we have it.

RFID cards will be easier to implement than facial recognition so in the interest of completing the project on time will use that. The disadvantage of RFID cards is that they can be borrowed or shared - they are not so closely linked to identity. Anyway, we'll use the standard RFID module available everywhere which is the RC522.

The RC522 module supports all standard methods of communication: UART, I2C, and SPI. However, since the UART ports on the main controller will be used for communication with the motor(s) and since we want to program in MicroPython and there is more library support for SPI, we will choose to communicate in that method. Of course SPI will require more pins (4), but since we are otherwise basically only connecting a motor, we will be fine.

Pin assignment as follows:

UART (for NEMA17 motor) - TX: GPIO0 (D6); RX: GPIO1 (D7)

SPI (for RC522) - SCK: GPIO2 (D8), MOSI: GPIO3 (D10), MISO: GPIO4 (D9), SS: Any available GPIO pin