Mod boards

From ZeroPhone
Jump to: navigation, search

ZeroPhone has expansion ports with GPIOs accessible on them, and those ports also expose various interfaces - I2C, I2S and SPI. I've developed different boards for those expansion ports, those boards allow to add hardware to ZeroPhone in order to increase its functionality.

GitHub repository with official mod boards described here

ZeroPhone parts' replacement boards

While ZeroPhone can be assembled from easily accessible parts, some of them can be replaced in order to add some useful functions to a ZeroPhone, or just in case the original board is not available.

TP4056+UART board

Soldered and providing a UART connection
Status Working
Current version v1.1
Category Parts' replacements
Socket Charging board socket (back board)
Interfaces used UART (in parallel with the GSM modem)
Needs soldering Yes (to attach the board)
Software support Not necessary
KiCad board name tp4056_usb_board

This board is a replacement for the TP4056-based charging+protection board (for LiIon batteries). In addition to charging and protection, it also allows you to connect to the Raspberry Pi UART through USB, as it has a USB-UART chip on it (CP2102N). The board has the same MicroUSB connector, + there are RX and TX LEDs. It has to be soldered in place of the original charging+protection board. This board was tested and works with ZeroPhone Delta/Delta-B.

Previous revisions



Charging stub board

Status Designed but not yet tested
Current version v1.0
Category Parts' replacements
Socket Charging board socket (back board)
Interfaces used No
Needs soldering Yes (to attach the board)
Software support Not necessary
KiCad board name tp4056_stub_board

This board is a replacement for the TP4056-based charging+protection board (for LiIon batteries). It removes the TP4056 chip, instead exposing the USB VBUS and VBAT pins on testpoints (along with USB D+ and D-). This is done for 1) allowing efficiently using custom CPU boards with built-in LiIon chargers 2) experimenting with different LiIon charger ICs.

SH1106 OLED 1.3" breakout board

SH1106 breakouts being assembled and mounted on ZeroPhones
Status Working
Current version v1.2
Category Parts' replacements
Socket Display socket (front board)
Interfaces used SPI0-0 (same as the original display)
Needs soldering Yes (to attach the board)
Software support luma.oled (display library used by ZPUI)
KiCad board name sh1106_1.3_spi_breakout

This board is mostly identical to the OLED breakout that's the suggested one for ZeroPhone (made by Heltec) - actually, it's a reverse-engineered and improved copy of the Heltec 1.3" SPI OLED breakout, in case Heltec breakouts will be hard to obtain. They have the same pinout, too (with the CS line and no RST, as these breakouts have autoreset). It also has reverse polarity protection, unlike the Heltec breakout - in case the SMD jumper header is accidentally miswired. This board was designed and tested - the reverse polarity protection might not work, though, needs to be tested better.

Previous revisions



SIM5300EA breakout

PCB waiting to be assembled, inside the ZP outline (for testing)
Status Designed but not yet tested
Current version v1.0
Category Parts' replacements
Socket GSM modem socket (back board)
Interfaces used UART (same as 2G modem), USB
Needs soldering Yes (to attach the board)
Software support Linux drivers work, ofono driver not yet tested
KiCad board name sim5300ea_breakout

This board is the often requested 3G addon for ZeroPhone. It's soldered in place of the 2G modem breakout. The PCB was designed but hasn't yet been assembled due to lack of modems. However, the schematic was tested with another 3G modem (SIM5320), which turned out to be too bulky, so the switch to SIM5300 was made, Once it's ready and tested, it'll be available during crowdfunding.


SIM5320/SIM5360 breakout

SIM5230 on this breakout, connected to ZP for debugging
Status Designed, not working for ZeroPhone (but works otherwise)
Current version v1.last (discontinued, no further revisions planned)
Category Parts' replacements
Socket GSM modem socket (back board)
Interfaces used UART (same as 2G modem), USB
Needs soldering Yes (to attach the board)
Software support Linux drivers work, ofono driver not yet tested
KiCad board name sim53x0_breakout

This board is the first version of the often requested 3G addon for ZeroPhone. It was going to use the SIM5320 3G modem. The PCB was designed and assembled with the SIM5320 modems and turned out to be too bulky to fit inside ZeroPhone. So the switch to SIM5300 was made and this particular board was discontinued.


Keypad with scrollwheel

The keypad+scrollwheel mod being soldered in place of the usual keypad
Status Partially working
Current version v1.0
Category Parts' replacements
Socket Keypad board socket (front board)
Interfaces used GPIO5 (needs an OLED display that doesn't use the RST pin)
Needs soldering Yes (to attach the board)
Software support Not yet tested (but there's a suitable ZPUI driver)
KiCad board name keypad_with_scrollwheel

This is a replacement ZeroPhone keypad, modified to have a scrollwheel instead of volume up&down buttons. It has to be soldered in place of the original keypad, but it's not too hard to swap the original keypad with a modded one - only soldering iron, solder and a solder pump are necessary. This board has three directions on the scrollwheel - up, down and press; up and down work (mapped as VOLUME_UP and VOLUME_DOWN by default), but press doesn't yet work as it needs some additional hardware.


Keypad with joystick

Building a ZeroPhone front board with the keypad+joystick mod
Status Working
Current version v1.0
Category Parts' replacements
Socket Keypad board socket (front board)
Interfaces used None
Needs soldering Yes (to attach the board)
Software support Can patch Arduino FW; for better integration, needs modified ZPUI driver
KiCad board name keypad_with_joystick

This is a replacement ZeroPhone keypad, modified to have a joystick instead of the center 5 buttons. It has to be soldered in place of the original keypad, but it's not too hard to swap the original keypad with a modded one - only soldering iron, solder and a solder pump are necessary. This board has five directions on the joystick - up, down, left, right and press; mapped as KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT and KEY_ENTER respectively.

For more out-of-the-box support, it'd be best if we had support for addons in ZPUI. For now, you can reflash the ATMega on your front board to make this addon work seamlessly. Here's how to patch the firmware:

Arduino code changes needed



USB-C port board

The Type-C mod board attached to ZeroPhone instead of the full-size USB port
Status Partially working
Current version v1.0
Category Parts' replacements
Socket Soldered on the back board's bottom, in place of the USB port
Interfaces used USB, I2C (can be used with other I2C boards as it doesn't occupy the header), 1xGPIO
Needs soldering Yes (to attach the board)
Software support Has Linux driver, but it hasn't yet been tested to work
KiCad board name usb_c_pd_addon

This board adds a USB-C port to ZeroPhone, replacing the full-sized USB host port that's typically found on a ZeroPhone. This port is capable of working as a port that works with PowerDelivery-equippped chargers, as well as power USB-C devices attached to the port. However, the last function is not yet working properly - there's no power path from the 5V DC-DC to the VCONN on the USB-C port, which will be fixed in the next revision - for now, the only way to connect Type-C devices is to have a charger connected in parallel to the MicroUSB port. For now, you also need to remove two FETs from the back board in order to attach this board - this will hopefully be fixed in the next ZeroPhone PCB revisions.


USB hub board for use with 3G modems (GL850 version)

Status Designed, not working, needs changes
Current version v1.0
Category Parts' replacements
Socket Soldered on the back board's bottom, in place of the 5V DC-DC
Interfaces used USB
Needs soldering Yes (to attach the board)
Software support Linux driver (USB hub)
KiCad board name 3g_dcdc_usb_hub_board

This board is a replacement for the 5V DC-DC on the back board - it still has the DC-DC, but it also has a USB hub connected to the Pi Zero USB pins. It provides an additional USB connection to the USB modem while retaining the USB host port on the back board, as well as provides two more USB connections available for tinkering. This board is based on the GL850G chip. Unfortunately, the footprint for the GL850G IC was chosen incorrectly and the current revision of the board isn't actually suitable for usage with ZeroPhone (or anything else).

USB hub board for use with 3G modems (FE1.1s version)

Status Designed, not working, needs changes
Current version v1.0
Category Parts' replacements
Socket Soldered on the back board's bottom, in place of the 5V DC-DC
Interfaces used USB
Needs soldering Yes (to attach the board)
Software support Linux driver (USB hub)
KiCad board name 3g_dcdc_usb_hub_board

This board is a replacement for the 5V DC-DC on the back board - it still has the DC-DC, but it also has a USB hub connected to the Pi Zero USB pins. It provides an additional USB connection to the USB modem while retaining the USB host port on the back board, as well as provides two more USB connections available for tinkering. This board is based on the FE1.1s chip. Unfortunately, the footprint for the FE1.1s IC was chosen incorrectly and the current revision of the board isn't actually suitable for usage with ZeroPhone (or anything else).

Ease-of-use

Dock board

Dock board connecting to USB, I2C and power pins
Status Working
Current version v1.1
Category Ease-of-use
Socket 5-pin I2C socket, 3-pin charging+DCDC+analog socket, USB socket
Interfaces used I2C (can be used with other I2C boards as it extends the header), USB
Needs soldering Yes (to make your own connections)
Software support None so far
KiCad board name dock_connection_board

This is a board that allows you to "dock" a ZeroPhone - connecting charging, I2C and USB signals to your ZeroPhone in a single plug. It's designed mainly for dock stations of some kind (from simplest charging docks to more involved ones, with USB and I2C devices), but it can also allow you to connect some kind of devices - i.e. powered speakers, or your robot's debugging port. Each dock contains a small user-writable EEPROM where you can write a dock identificator string for use with software - so that you can distinguish between different docks in your apps.

To assemble the dock, you also need to get a specific USB male plug breakout (with PCB) from eBay/Aliexpress/other, if you need the link to the specific breakout, ping us on IRC.

Previous revisions



Audio boards

Out of the box, ZeroPhone doesn't have lots of audio-related features - one audio output from the Pi Zero (on the 3.5mm jack), and speaker+microphone connected to the GSM modem - those are two separate audio systems that aren't interconnected in any way. Mod boards in this category are either adding new audio sources/sinks/interconnects, or improving the existing ones.

Audio buffer board

Audio buffer boards, not yet surface-mount but will be surface-mountable at some point
Status Working
Current version v1.1
Category Audio boards
Socket Audio filtering socket (front board)
Interfaces used None
Needs soldering Yes (to attach the board)
Software support Not necessary
KiCad board name audio_buffer

This mod board is copied from the Raspberry Pi B+ schematic and filters the PWM signal from the Raspberry Pi before it gets converted into audio, making the resulting audio cleaner. It also breaks out the microphone pin from the 3.5mm jack, along with a ground pin. The mod board has to be soldered onto the ZeroPhone front board - but first, two jumpers on the front board have to be cut. Also, you need to connect the addon to the front board with pin headers/wires. Next versions will be easier to solder, as they'll be single-sided boards and be surface-mountable (like the TP4056 board).

Previous revisions



I2S microphone board (SPH0645)

A bunch of v1.0 SPH0456 mods assembled, yet untested
Status Designed but not yet tested
Current version v1.0
Category Audio boards
Socket 12-pin socket
Interfaces used I2S (can be used with other I2S boards, but not those that add audio input through I2S)
Needs soldering Yes (to attach the board)
Software support Linux kernel driver
KiCad board name sph0645_breakout

This mod board adds a mono microphone (a SPH0645) to the I2S connection of the Raspberry Pi. The microphone is front-facing, but, due to the way the SPH0645 microphone has to be placed, the mod board sticks out the ZeroPhone outline a little bit. The board has to be soldered onto the back board, on the 12-pin expansion socket.


Hardware tinkering boards

Gadget power adapter

Status Designed but not yet tested
Current version v1.0
Category Hardware hacking
Socket 5-pin IR socket (on top of back board)
Interfaces used GPIO4 and GPIO17
Needs soldering No (might need soldering for attaching your own power leads)
Software support Not necessary
KiCad board name gadget_power_adapter

This board allows powering your gadgets while keeping your ZeroPhone safe (and allowing power control using GPIOs and a slide switch). By flipping the board, you can make it output either 3.3V or LiIon voltage from the ZP battery (from 3.6V to 4.2V). It uses the MAX40200 ideal diode IC to prevent backpowering (and allow for power control). It has both THT and SMD connection points for your own wires.

Level shifter adapter

Level shifter WIP - programming a 1.8V-only EEPROM
Status Partially working
Current version v1.0
Category Hardware hacking
Socket 12-pin socket
Interfaces used None
Needs soldering No
Software support Not necessary
KiCad board name level_shifter_adapter

This is a dual-voltage bidirectional level shifter for the SPI port. If you plug it with one side, it will level-shift 3.3V (ZeroPhone voltage) to 1.8V and vice-versa. If you plug it in with another side, it will level-shift 3.3V (ZP) to 5V (and, again, vice-versa). It can also be modded to work with 2.5V instead of 1.8V (by replacing the onboard 1.8V voltage regulator). This adapter is useful for interfacing with 1.8V/5V SPI, GPIO and I2S devices, as well as powering 1.8V devices on its own. Current version's 5V-to-3.3V shifting doesn't work (there's leakage somewhere causing 5V to feed into the ZP's 3.3V line, which is *very* undesired).


Modem breakout

Modem breakout board - can see the large connector that prevents this from being usable on a larger scale
Status Partially working
Current version v1.0
Category Hardware hacking
Socket GSM modem socket (back board)
Interfaces used UART (same as 2G modem)
Needs soldering Yes (to attach the board)
Software support Not necessary
KiCad board name modem_breakout

This is a breakout for experimenting with external 2G/3G/whatever modems, i.e. FreeCalypso FCDEV* boards. It breaks out the UART, audio, power and control signals onto connectors on top of the ZeroPhone. Current version uses a connector that doesn't physically fit inside the ZeroPhone, next version with a more reasonable footprint will be done sometime in the future (this one is currently enough for experiments if you extend the power connector using wires).


ATTinyx5 flashing adapter

Status Partially working
Current version v1.1
Category Hardware hacking
Socket 12-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards)
Needs soldering No (might need hot air to detach chip from the original board)
Software support Linux command-line (avrdude)
KiCad board name attinyx5_programming

This is an adapter for programming the SOIC8W ATTinyx5 chips through SPI, using Avrdude (in the future, it will be supported by the ZPUI Avrdude app). It has an additional ATTiny on the bottom layer since you need to toggle the RST pin of the target ATTiny in a particular fashion during programming. Later on, high-voltage programming *might* be added.

Previous revisions


ATMega/ATTiny flashing adapter

Status Designed but not working; abandoned
Current version v1.0
Category Hardware hacking
Socket 12-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards)
Needs soldering No
Software support Linux command-line (avrdude)
KiCad board name atmega_isp_programming

This is an adapter that exposes the ZP SPI pins on a 2x3 ISP connector. However, it was made for Gamma boards, so the SPI pinout is no longer compatible with ZeroPhone Delta and onward. Furthermore, there's no support for toggling the RST pin in a way required for programming ATMega chips. Last but not least, 2x3 IDC cable sockets are kinda hard to source. The next version, when it happens, will have an CS-to-RST circuit (as well as, likely, a 2x5 IDC cable pinout).

9xCxx EEPROM flashing adapter

Status Designed but not yet tested
Current version v1.0
Category Hardware hacking
Socket 12-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards)
Needs soldering No (might need hot air to detach chip from the original board)
Software support None yet
KiCad board name 93cxx_programming_adapter

This is an adapter to read/flash 9xCxx "MicroWire" EEPROM chips, i.e. 93C46. Since the 9xCxx protocol is incompatible with Raspberry Pi SPI, there's an intermediate ATMega328P chip on the adapter PCB, the ATMega is connected to the SPI lines and is supposed to have a firmware that transfers the 9xCxx data to SPI and vice-versa. The adapter was assembled, however, it hasn't been made to work yet.

SPI flash adapters

8-pin SPI flash socket adapter

SPI flash mod, with some SO8W flash chips for scale
Status Working
Current version v1.1
Category Hardware hacking
Socket 12-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards)
Needs soldering No (might need hot air to detach chip from the original board)
Software support Linux command-line (flashrom)
KiCad board name spi_soicw8_programming

This board allows reading and writing popular SPI flash chips - for example, 25xxx series (Winbond 25Q32B, 25Q64B, SST25VF080B etc.). Those are used as BIOS chips on PC motherboards, and OS storage on routers or other embedded devices (for example, ESP8266 modules with 4MByte flash use those chips). So, for instance, this mod board can be used to unbrick a laptop with BIOS problems, flash coreboot/libreboot on your laptop (or a BIOS with the Intel ME disabled), or re-flash a router if the firmware update process was interrupted because of a power outage. In general, it allows you to easily dump firmware from a device for reverse-engineering purposes, provided the device in question uses a 8-pin SPI ROM (many do).

Previous revisions



16-pin SPI flash socket adapter

Two SOIC16W adapters
Status Working
Current version v1.0
Category Hardware hacking
Socket 12-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards)
Needs soldering No (might need hot air to detach chip from the original board)
Software support Linux command-line (flashrom)
KiCad board name spi_soicw16_programming

This board is very similar to the 8-pin SPI flash adapter, but was developed specifically for BIOS chips used on some Thinkpads (like MX25L1605, MX25L3205 and MX25L6405), so that it's easier to flash Coreboot/Libreboot firmware on them. Other than that, the purpose and functionality is pretty much the same as for the 8-pin SPI flash chip board.


I2C EEPROM adapters

24xx EEPROM SO8 chip adapter board

SOIC8 24xx EEPROM adapter - without the EEPROM
Status Working
Current version v1.1
Category Hardware hacking
Socket 5-pin I2C socket
Interfaces used I2C
Needs soldering Yes (to connect the flash chip to the board)
Software support Linux command-line (eeprog)
KiCad board name 24xx_i2c_so8_programming

This board allows to read and write popular I2C EEPROMs - mostly, the 24xxx family, like 24С01/24C02/24C04 etc. Those EEPROMS are mostly used for configuration data storage - in wired/wireless network cards, USB/Bluetooth devices, computer monitors/LCD panels and many more other types of consumer electronics. The package used is SO8 - one of the most popular packages for these EEPROM chips, though it's not the smallest, it's relatively easy to solder.

Previous revisions



24xx EEPROM TSSOP8 chip adapter board

TSSOP8 24xx EEPROM adapter, with the EEPROM soldered
Status Working
Current version v1.0
Category Hardware hacking
Socket 5-pin I2C socket
Interfaces used I2C
Needs soldering Yes (to connect the flash chip to the board)
Software support Linux command-line (eeprog)
KiCad board name 24xx_i2c_tssop8_programming

This board allows to read and write popular I2C EEPROMs - mostly, the 24xxx family, like 24С01/24C02/24C04 etc. Those EEPROMS are mostly used for configuration data storage - in wired/wireless network cards, USB/Bluetooth devices, computer monitors/LCD panels and many more other types of consumer electronics. The package used is TSSOP8 - a moderately popular package for these EEPROM chips, it's smaller than SO8, but it's harder to solder (you might want to use solder wick when soldering it, or even try hot air).


24xx EEPROM DFN8 chip adapter board

DFN8 24xx EEPROM adapter, with the EEPROM soldered
Status Working
Current version v1.0
Category Hardware hacking
Socket 5-pin I2C socket
Interfaces used I2C
Needs soldering Yes (to connect the flash chip to the board)
Software support Linux command-line (eeprog)
KiCad board name 24xx_i2c_dfn8_programming

This board allows to read and write popular I2C EEPROMs - mostly, the 24xxx family, like 24С01/24C02/24C04 etc. Those EEPROMS are mostly used for configuration data storage - in wired/wireless network cards, USB/Bluetooth devices, computer monitors/LCD panels and many more other types of consumer electronics. The package used is DFN8 - a not-so-popular package for these EEPROM chips, it's smaller than both SO8 and TSSOP8, and can only be reasonably soldered using hot air.


WS2812 driver board

Status Designed but not yet tested
Current version v1.0
Category Hardware hacking
Socket 5-pin I2C socket, 3-pin charging+DCDC+analog socket, USB socket
Interfaces used I2C
Needs soldering No
Software support None so far
KiCad board name ws2812_controller

This board allows you to drive (and even power some) WS2812 LEDs from ZeroPhone, by using an intermediate ATTiny controller. Raspberry Pi can only drive WS2812 LEDs if one of the PWM pins is free, which is not the case on ZeroPhone (as we use both pins for the headphone jack). Thus, this board has an ATTiny that's available through I2C, and you can control up to ~100 LEDs with it. It also has a socket for external power, as well as rudimentary level shifting for the data line.

Networking/communications boards

It's also possible to add more ways to communicate to ZeroPhone - to be able to transmit/receive on radio frequencies, work with infrared signals and connect to wired networks, like RS485 or Ethernet networks.

ENC28J60 breakout board

The board with an ENC28J60 breakout plugged in
Status Designed but not yet tested
Current version v1.0
Category Networking
Socket 12-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards), 1x GPIO
Needs soldering No
Software support Linux driver
KiCad board name enc28j60_breakout_adapter

This is a small board that accepts commonly used 10-pin ENC28J60 breakouts in order to add an Ethernet port to a ZeroPhone. There's a driver in the Linux kernel that already supports these, so the board only matches the breakout pins to the 12-pin expansion port pins. It needs one interrupt pin. So far, it couldn't be made to work - there seems to be some kind of problem with the breakout that I have, it keeps destroying the ENC28J60 ICs.


Infrared RX&TX board

Status Designed but not yet tested
Current version v1.0
Category Networking
Socket 5-pin IR socket (on top of back board)
Interfaces used GPIO4 and GPIO17
Needs soldering Yes (to enable the board)
Software support Linux command-line
KiCad board name simple_ir_tx_rx

This is a simple board for the 5-pin header on the top of ZeroPhone, it adds infrared receiver and transmitter hardware, which is supported by LIRC. In order to use the 5-pin header GPIOs and, as a result, the IR mod board, two solder jumpers on back board have to be shorted with solder (TODO: add pics and directions).

RFM-12/RFM-01 addon

RFM boards assembled, one has a small antenna and a header attached
Status Designed but not yet tested
Current version v1.0
Category Networking
Socket 12-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards), 1x GPIO
Needs soldering No
Software support Not researched yet (but no problems expected)
KiCad board name rfm12_rfm01_breakout

This is a small board that works with RFM-12 (ISM FSK transmitter/receiver) and RFM-01 (ISM FSK receiver) boards from HopeRF. It allows ZeroPhone to transmit, receive and intercept communications on 315/433/868/915MHz, depending on which frequency RFM module is tuned for by the factory. It needs one interrupt pin.


NRF24L01 addon

NRF24L01 adapter v1.0, assembled but yet untested
Status Designed but not yet tested
Current version v1.0
Category Networking
Socket 12-pin socket
Interfaces used SPI0-1 (can't be used with other SPI0-1 boards), 1x GPIO
Needs soldering No
Software support Not researched yet (but no problems expected)
KiCad board name nrf24l01_adapter

This is a small board that works with popular NRF24L01 breakout modules available on eBay/Aliexpress/other. It allows ZeroPhone to transmit, receive and intercept communications on some 2.4GHz bands supported by NRF24L01 - used by some 2.4GHz devices (not including WiFi or Bluetooth). It needs one interrupt pin.


Adapters

Triple QWIIC adapter

Status Working
Current version v1.0
Category Adapters
Socket 5-pin I2C socket
Interfaces used I2C
Needs soldering No
Software support Not necessary
KiCad board name triple_qwiic_adapter

This is an adapter for Sparkfun QWIIC system that allows you to easily connect I2C sensors to your projects - with this adapter, you can connect multiple different sensors from the QWIIC system to your ZeroPhone. It has three QWIIC sockets wired in parallel, in case one or two would not be enough - QWIIC peripherals typically have a passthrough socket on them, but sometimes you need to wire things in different directions.


GY sensor adapter

The GY sensor adapter plugged into the Pi, with a GY-271 magnetometer plugged into it
Status Working
Current version v1.0
Category Adapters
Socket 5-pin I2C socket
Interfaces used I2C
Needs soldering No
Software support Not necessary
KiCad board name gy_sensor_adapter

This is an adapter for Chinese GY series I2C sensors - they typically have GND-VCC-SCL-SDA-INT-... pinouts, as opposed to VCC-SDA_SCL-INT-GND ZeroPhone Delta series. With this adapter, you can connect GY sensors to your ZeroPhone directly, without using wires. You can also solder this adapter to your GY sensors permanently, so that it's easy to plug them in.


3.5" display adapter

Adapter with a display, connected to the SPI port
Status Working
Current version v1.0
Category Adapters
Socket 12-pin SPI socket
Interfaces used SPI, 4 GPIOs, 5V
Needs soldering No
Software support Linux kernel driver
KiCad board name 3.5_display_adapter

This is an adapter for cheap Raspberry Pi-compatible 3.5" 320x480 color touchscreen displays that are available on eBay/Aliexpress/others. It allows you to hotplug these displays (to a certain extent) into a ZeroPhone and show Linux console/X on it. The touchscreen function currently wasn't tested to work - the CS pin has to be a software CS (from a non-hardware-CS GPIO) and therefore the software support for it is a little bit more involved.


MRFC522 display adapter

Status Designed but not yet tested
Current version v1.0
Category Adapters
Socket 12-pin SPI socket
Interfaces used SPI, 2 GPIOs
Needs soldering Maybe (depends on the way you attach the MFRC522 module
Software support Not researched yet (but no problems expected)
KiCad board name rc522_adapter

This is an adapter for cheap 13.56MHz NFC card readers based on RC522 IC, these readers are available on eBay/Aliexpress/others. The adapter merely helps change the pinout into the pinout of the reader (+ has one capacitor on the 3V3 power line), it doesn't do anything other than that. Thus, if you need software support, you need to use one of the existing libraries for working with the RC522 reader.

Cryptography-related boards

ATSHA204 board

Freshly assembled ATSHA204A mods, before being soldered inside a ZeroPhone
Status Working
Current version v1.0
Category Cryptography
Socket 5-pin I2C socket (needs to be soldered on the opposite side of the socket)
Interfaces used I2C (can be used with other I2C boards as it doesn't occupy the header)
Needs soldering Yes (to attach the board)
Software support None so far
KiCad board name crypto_eeprom

This is an Atmel CryptoAuthentification addon with protected hardware-based key storage, based on ATSHA204A IC, for any purposes the user might want to use it for. This chip can cryptographically sign data, ensuring that messages sent from a certain ZeroPhone can be tied to that ZeroPhone hardware by the user, even if the SD card is copied and inserted into another ZeroPhone. It's also possible that you might be able to tie it into some kind of hardware-dependent full disk encryption scheme, though custom code will certainly be needed. This board is for the I2C socket and is actually meant to be sandwiched between the back board and the Pi Zero during the assembly (so it's both easy to install and hard to remove, as Pi Zero is attached to the back board with 40 hard-to-remove solder connections).


Sensors

These are simple sensor breakouts for various ZP interfaces.

VEML6070 sensor

Status Working
Current version v1.0
Category Sensors
Socket 5-pin I2C socket
Interfaces used I2C
Needs soldering No
Software support Third-party
KiCad board name veml6070_adapter

This is a simple UV-B sensor controlled through I2C. Various libraries for it are available on the Internet.

Fix boards

These are the boards that were designed to work around deficiencies/problems on various revisions of ZeroPhone PCBs.

Delta MCPINT fix

Status Designed but not yet tested
Current version v1.0
Category Fix boards
Socket None (mounted on back board near the MCP23017 IO expander)
Interfaces used None
Needs soldering Yes (to attach the board)
Software support Not necessary
KiCad board name delta_mcpint_fix

This board is a fix for the Delta MCPINT issue.

ESP12 socket boards

The ESP12 socket on the front board will be unoccupied if you use the Raspberry Pi Zero W. when building your ZeroPhone. This socket has whole 7 GPIOs available - the SDIO GPIOs (that can't be mapped as SDIO anymore because RPi WiFi uses the SDIO peripheral) and the ESP_RST GPIO (GPIO0). There are some boards that you can solder in the ESP12 socket to make use of these GPIOs:

ESP 6x LED + switch board

Status Designed but not yet tested
Current version v1.0
Category ESP12 socket boards
Socket ESP12 socket
Interfaces used GPIO
Needs soldering Yes (to attach the board)
Software support RPi GPIO drivers
KiCad board name esp12_1button_6leds

This board gives you 6pcs LEDs and one SMD side button in place of the ESP12. You can use all these with some kind of software, i.e. a Python script that controls these LEDs and reads that button.

ESP ATMega board

Status Designed but not yet tested
Current version v1.0
Category ESP12 socket boards
Socket ESP12 socket
Interfaces used GPIO
Needs soldering Yes (to attach the board)
Software support None yet
KiCad board name esp12_atmega_addon

This board has an ATMega328P in QFN package. It breaks out most of the ATMega pins onto the ESP12 pads. It doesn't have an oscillator footprint, therefore, it's supposed to run using the internal RC oscillator. It has the ATMega SPI interface (with CS and RST pins available) connected to the RPi GPIOs, so if you use some kind of bitbanging driver for SPI, you can communicate with this ATMega using SPI (and likely reprogram it in-circuit).

ESP MicroSD board

MicroSD card slot board placed on the front board, ready to be soldered
Status Designed but not yet tested
Current version v1.0
Category ESP12 socket boards
Socket ESP12 socket
Interfaces used GPIO
Needs soldering Yes (to attach the board)
Software support None yet
KiCad board name esp12_microsd_slot

This board simply has a MicroSD slot connected to the GPIO pins. Using some kind of bitbanging SD card driver, you likely can make it work to have yourself a (slow) SD card reader slot. Alternatively, you could try somehow disabling the Pi Zero W's onboard WiFi and drive the SD card in SDIO mode - do check the schematic to see if that's possible, IIRC I designed the board so that it would be.