To supplement the à la mods product family various software components are provided. These components include individual module applications to full Raspberry Pi ® distributions enhanced with various à la mods development frameworks and networking systems.
A complete set of documentation including a data sheet and users guide is available for most modules.
à la mods has created a set of SD Images based upon the Raspberry Pi's official operating system Raspbian. Additional software has been included that provides the Node.js Javascript development environment with modules supporting the à la mods interfaces.
Other environment changes include the enabling of the SPI, I2C interfaces. The removal of the console interface from the serial port, the setup of the keyboard to a U.S. layout and the pre-setup of the WiFi interface.
Each of the SD Images listed below have variations to accommodate different applications.
The 'Server' distribution is based upon Raspbian Stretch with Desktop release date 2018-11-13. It includes the following enhancements:
The 'Client' distribution is based upon Raspbian Stretch Lite release date 2018-11-13. It includes the following enhancements:
The 'Client Z' distribution is based upon Raspbian Stretch Lite release date 2018-11-13. It includes the following enhancements:
Although the à la mods "M" series Smart modules target many of the GPIO lines shown for communication and control purposes, many of these are optional depending upon the specific module.
The minimum I/O requried by the Smart modules is generally the SPI I/O and ADDRx lines for communication. It is the ADDRx lines that provide the individual communication of each module within a stack of modules.
All non-SPI lines are configurable and can be disconnected or moved on the GPIO bus if needed.
The à la mods "Z" series modules use the GPIO bus differently. These modules DO NOT employ the ADDRx and INTx lines. While some of them do utilize the SPI bus for communication, they are only multiplexed by the CE0 and CE1 lines of the SPI bus, and therefore not intended for the extensive stacking capability like the "M" series modules.
Most all à la mods smart modules ("M" and "Z" series) communicate to the host processor via the SPI bus and an internal module register set. The SPI bus is the transport mechanism for the control and data information while the internal module registers provide the interface to the control and status processes. This is much the same as many sensor ICs on the market that utilize internal registers and either the SPI or I2C bus.
The SPI communication transport protocol is the same for all modules, but the internal registers are specific to each module's functionality. For internal register details reference the specific module user guide.
The physical à la mods SPI communication link consists of eight GPIO lines including:
The SPI communication transport consists of a set of command messages that transfer information between the à la mods smart module and the host processor. These commands consist of four byte messages structured as illustrated in the figure below.
All messages are transmitted MSB first.
Command Byte
The command byte instructs the module what to do with the last two data fields of the four byte message or can instruct the module to perform other actions. For the list of supported module commands see the specific module user guide.
The general register commands include:
Register Address Byte (RegAddr)
The Register Address byte instructs the module what internal register will be accessed in the current command message for a write instruction or the next command message in the case of a register address pointer setup message for a read operation.
The register address range is the full byte: 0 - 255
Data Bytes (Data1 & Data0)
The data bytes contain the actual data that will be transferred into the internal register in the case of a write command or transferred to the host processor in the case of a read command.
Register Write Operation
The register write operation is a single command message that contains the write command (0x02), the internal reigster address and the two byte data that is to be written.
Register Read Operation
The register read operation first consists of a internal address register pointer setup message (command = 0x01) followed by an internal register read message (command = 0x00)
The register read operation actually occurs every command message. Since the SPI bus is a bi-directional synchronous bus, data is transferred back to the host processor every time a message is sent. Therefore, unless the internal address register pointer is changed the data bytes from the same internal register will be returned from each command message. That includes any read or write command message.
This is useful for polling operations where write commands can occur to adjust a control register while continually reading a status register.
Every à la mods smart module contains a base set of registers providing a common set of information about the module and control of the on board RGB LED. These include:
0x80 - Decimal Model Number (read-only)
This register contains the 16 bit value of the decimal part of the model number. For example, the ADIOM18063 decimal model number is 18063. Data1 field is the high byte of this number and Data0 is the low byte.
0x81 - Revision (read-only)
This register contains the hardware and firmware revision numbers.
0x82 - Firmware Type (read-only)
This register contains an ASCII code that represents the type of firmware executing in the modules processor. This includes:
0x90 - RGB LED Control (read-write)
This register controls the state of the on-board RGB LED.
à la mods has created a set of cases that are specific to each module and stack to fit. These can be stacked in any order as modules are added.
The bottom case is designed to accommodate any Raspberry Pi ® 2, 3 or 4. It is extended to allow for a couple of DC cooling fans (25x25x10mm) and provides access to the SD card through a cutout area in the bottom.