
TFASPDIMU02
ThunderFly-aerospace/TFASPDIMU02
I²C bus differential pressure sensor with IMU and Magnetometer.

Raspberry Pi based SPI&I2C programmer
FLASH Pi is an open-source printed circuit board by hexeguitar, from the hexeguitar/FLASH-Pi repository on GitHub. It is a 2-layer board of 65 × 30 mm with 51 parts on 26 nets, routed with 506 tracks and 26 vias.
It is built around the MCP1700T-1802E/TT(MS), PCA9617ADP and SS14. Its parts include 14 capacitors, 8 resistors, 8 ICs, 2 connectors and 2 switches. It belongs with the interfaces and adapters boards of this library.
The main goal of this project was to create a versatile programmer for various EEPROM and FLASH memory chips using flashrom and wiringPi packages.

In order fo fix an HDMI controller board I had to reprogram the onboard 25-series SPI FLASH memory containing a corrupted firmware image. None of my standalone programmers could erase the chip, so i tried to use the RasPi Zero + Flashrom as a programmer. Flashrom 0.9.9 did detect the chip, but still couldn't erase it. As it turned out, this memory had a non volatile protection bit set, clearing it was not implemented in the software. Using the wiringPi i was able to clear the bit, reprogram the chip and finally set the protection bit back. This gave me an idea that a RasPi Zero W + Flashrom + WiringPi, Python + an addon board with level converters/buffers could serve as a quite powerful, versatile and yet very compact SPI FLASH programmer. Ontop of that i decided to add a similar level converter for the I2C bus using the PCA9617A chip.
The main function of the FLASH-Pi is to convert the voltage levels and isolate the SPI and I2C buses on the RaspberryPi Zero.


Initially i used the TXS0104 chip to level shift SPI bus, which turned out to be a trap (always read the datasheet carefully!). The condition of VCCA (3.3V Raspi side) > VCCB (Target) could not be met for 1.8V output level. Since the SPI lines does not have to be bidirectional i ended up using four SN74LV1T125 buffers specifically designed to up/down translate the levels in wide ranges.
RaspberryPi provides 5V and 3.3V power rails. Both rails are protected with polyfuses, 100mA for the 5V line and 50mA for the 3.3V one. The 1.8V rail is generated with the MCP1700T-1802 voltage regulator. Target voltage level is set with a 4 way slider switch.
The 4th option uses an externally supplied target voltage and is intended to use with in-circuit operation.
I2C section is actually a stock application of the PCA9617A chip. 1k5 pull-ups are provided on both sides.

After doing the usual startup houskeeping (changing the password, setting locales, enabling SPI, I2C, serial port, VNC, Wifi config, etc...) on a fresh Raspbian image i usually remove a few packages that will not be much of use in this application. This will free up some space on the SD card.
sudo apt-get remove --purge wolfram-engine scratch minecraft-pi sonic-pi claws-mail bluej python-pygame greenfoot
sudo apt-get clean
sudo apt-get autoremoveThe next step is to install the wiringPi library. The instruction on how to do that is provided on the authors site: http://wiringpi.com/download-and-install/
Installing flashrom is as easy as:
sudo apt-get install flashromIt is probalby worth to install and setup a shared folder with samba for easy file exchange over the network.
In most cases the RasPi will be run headless and accessed via:

I opted to use the RasPi Zero W for it's compact size and built in WiFi, accessing it remotely from my main PC or laptop. Of course, a regular model Zero will work, too. Especially using an Ethernet over USB-OTG option seems to be quite useful idea - making the device an USB programmer.
PCBs are available from OSH Park:

(c) 11.2017 by Piotr Zapart
www.hexeguitar.com
License:
Creative Commons - Attribution - ShareAlike 3.0
http://creativecommons.org/licenses/by-sa/3.0/
| Qty | Value | Footprint | References |
|---|---|---|---|
| 13 | VAL** | H_vias:Via0703_GND | Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND, Via0703_GND |
| 8 | 100n | H_smd_passives:CAPC_0603_1608X86N | C2, C3, C4, C5, C7, C10, C11, C13 |
| 6 | 1u | H_smd_passives:CAPC_0603_1608X86N | C1, C6, C8, C9, C12, C14 |
| 4 | 1k5 | H_smd_passives:RESC_0603_1508X63N | R1, R2, R7, R8 |
| 4 | 33R | H_smd_passives:RESC_0603_1508X63N | R3, R4, R5, R6 |
| 4 | SN74LV1T125_SOT23_5 | H_SOT:SOT23-5 | IC2, IC3, IC4, IC5 |
| 2 | 1P4T_generic_switch | H_switches:SLB1470_1P4T_slideSW | SW1, SW2 |
| 2 | CONN_01X06 | conn-100mil:CONN-100MIL-F-1x6 | P1, P2 |
| 1 | 100mA | H_Fuses:Fuse_SMD1206_Reflow | F2 |
| 1 | 25LC_EEPROM | H_PDIP:DIP-8 | IC7 |
| 1 | 50mA | H_Fuses:Fuse_SMD1206_Reflow | F1 |
| 1 | KiCad Logo | H_logos:KiCad-Logo_Copper_11mmx5mm | G*** |
| 1 | MCP1700T-1802E/TT | H_SOT:SOT-23 | IC8 |
| 1 | PCA9617A | IPC7351-Nominal:SOP65P490X110-8AN | IC6 |
| 1 | RPi_A+_B+_2B_Hat | H_dev_kits:z_RPiZero_Hat_NPTH | IC1 |
| 1 | SS14 | H_diodes:DO-214-AC_SMA | D1 |
It measures 65 × 30 mm and has 2 copper layers, 1.6 mm thick.
51 parts, built around the MCP1700T-1802E/TT(MS), PCA9617ADP and SS14. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the hexeguitar/FLASH-Pi repository on GitHub, at the commit this page was made from: the board is design_files/FlashPi_KiCad/FlashPi.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask hexeguitar before reusing the design.

ThunderFly-aerospace/TFASPDIMU02
I²C bus differential pressure sensor with IMU and Magnetometer.

asukiaaa/grove-PCA9617A
A PCB which transports I2C signal on grove cable through PCA9617A I2C releater.





Will946/O-hareAir
An ESP32-based flower that measures air quality with real sensors and physically points a needle at how badly you need to open a window.
