2022-04-05: Espresso Machine Demo MVP

Meeting Information

Subject:Milestone Meeting: Espresso Machine MVP
Date/Time:05.04.2022, 10:00-10:30
Location:MS Teams
Note Taker:Stefan Lüthi

Participants

  • Stefan Lüthi (maintainer)
  • Roger Weber (advisor)

Agenda

  1. Milestone: Espresso Machine MVP
  2. Implementation of priorities

Meeting


  1. Milestone: Espresso Machine Modifications done
    1. Evaluation of milestone objectives:

      1. These features were implemented for the demo application:

        • Add board support package with a modular structure
        • Add support for GPIO peripherals (buttons, LEDs, power control)
        • Add ADC (AD7124-8) driver (not working as expected)
        • Add simple machine controls
      2. For now the temperature cannot be measured, because the external ADC does provide any measurement results. However, the demo still works as a minimal viable product, because the power controls to pull an espresso shot (boiler, pump and valve control) already work and the machine is wired to use the old thermostat. This provides a baseline for any new temperature controller implementation.

      3. A considerable amount time was spent on the development of library to simplify register access of devices attached to the microcontroller. The library allows to describe a register with its fields using a macro:

        
        #![allow(unused)]
        fn main() {
        register!{
            /// Status Register [..]
            STATUS(0x00 | r): B8 {
                /// Ready bit for the ADC. [..]
                RDY: [7],
                /// ADC error bit. [..]
                ERROR_FLAG: [6],
                /// Power-on reset flag.  [..]
                POR_FLAG: [4],
                /// These bits indicate which channel is being converted by the ADC.
                CH_ACTIVE: [3..0],
            }
        }
        }
        

        The macro generates the bit access functions and supports different register sizes (8, 16, 24 or 32 bit). Reading a register could look like as follows:

        
        #![allow(unused)]
        fn main() {
        let status: STATUS = ad7124.read_register();
        let por: bool = satutus.POR_FLAG();
        }
        

        This library will speed up the implementation of future device drivers.

      4. The milestone was missed, which has the following consequences:

        • An additional 8h are needed to fix the ADC driver. There are no consequences to the demo application because this is only a minor delay.
    2. Next steps:

      1. Fix the driver for the AD7124-8 ADC
Action ItemOwnerDue DateDone
Fix AD7124-8 ADC driver.Stefan Lüthi08.04.2022

  1. Implementation of priorities
    1. The original plan was to create a model of the boiler to design a temperature controller in the next step. However, because the project will be showcased at the Embedded Computing Conference implementing more Rust code is preferred.

    2. The following features should be added until the conference (31.05.2022), sorted by priority:

      1. Multiple temperature sensors (showcases multiple devices on the same bus).
      2. GUI providing live data (using LVGL, to show the use of C code in a Rust project).
      3. RTOS Tracing library (SEGGER SystemView) to provide a visualization of what is running on the system.

Next Meeting

according to sprint cycle