Open main menu

Changes

9,340 bytes added ,  23:00, 12 October 2024
m
Image with test cases
Also used for [[Instant_Omni_Pro_18_Toaster_Oven_and_Air_Fryer|Singing "QSV" Toaster]]
Customized peripherals [[Whirlybird/IMU|IMU]] and [[Whirlybird/RS41|RS41]] [[File:Whirlybird 3D Printed Enclosure Tests.jpeg|800px]]  =Components = BOM  ==TPS54202DDCR Buck Converter (3v3) == * Voltage In: 4.5-28 (12-28v typical)* Voltage Out: Variable (5v typical)* 2 Amp continuous, ~3 Amp current limit * Over 90% Efficency 12v to 5v buck* Package: SOT-6, Marking: "4202"* [https://www.lcsc.com/datasheet/lcsc_datasheet_2410010331_Texas-Instruments-TPS54202DDCR_C191884.pdf Data Sheet] Voltage In is provided from the first 4 pins of <code>J1</code> and this component is placed at <code>U9</code> with output voltage set point resistors <code>R25/R26</code> with values 100K and 22.1K respectively. Given the equation <code>(100/22.1 + 1) * 0.596 = 3.29</code>, the voltage output provided thru inductor <code>L2</code> in this configuration is set for 3.3 volts and provides the power to the ESP32 and related components. The 3v3 rail is also accessible at [TP](8) and voltage feedback at (TP13). == LMR51440SDRRR Buck Converter (5v) ==* Voltage In: 4-36* Voltage Out: 0.8-28* Max Current: 4 Amp* Package: 12 Pin WSON 0.8mm Height* [https://www.lcsc.com/datasheet/lcsc_datasheet_2309221225_Texas-Instruments-LMR51450FNDRRR_C5782413.pdf Datasheet] The component is placed at <code>U7</code> and there is a bodge jumping the voltage set point pin via <code>R19/R20</code> with a 1K resistor to correct for an in initial routing error of <code>R21/R18</code> ~18K and 100K respectively. This all results in a designed output voltage of 5 volts thru inductor <code>L1</code> and accessible at [TP](3) along with the voltage feedback at (TP10). == M.2 (NGFF) Key E ==* Part #: [https://www.digikey.com/en/products/detail/amphenol-cs-fci/MDT420E03001/5810340 MDT420E03001]* [https://www.amphenol-cs.com/product/mdt420e03001.html Amphenol Product Page]* [https://cdn.amphenol-cs.com/media/wysiwyg/files/documentation/datasheet/ssio/ssio_pcie_m2.pdf Brochure]* PCIe M.2 Connectors, Storage and Server Connector, P=0.5mm, H=4.2mm, Key E,Gold Plating '''WARNING''' Pin out is not compatible with typical specifications! Top is odd, bottom is even* Ground Pins: 3,5,11,18,33,39,45,51,57,71,73* 3v3 Pins: 2 & 4* D+/D- Pins: 7 & 9 (via D6) to J7* Tx/Rx Pins: 62 & 64 (via R37/R35)* U16:P0_5 Pin: 54 (TP72)* U16:P0_4 Pin: 67 (via Q1) to ground* TP85-92 Pins: 38,46,48,50,52,56,58,60 == PI4IOE5V6416 I2C GPIO Expander ==*I2C Address: 0x20 (32)*Part Number: [https://www.diodes.com/datasheet/download/PI4IOE5V6416.pdf PI4IOE5V6416ZDEX] (TQFN)*Size: 4mm x 4mm*Pins: 24 {| class="wikitable"|-! Pin # !! Name !! Description|Function|-| 1 || P0_0 || I/O M3 via R51|-| 2 || P0_1 || I/O U6 & U8 Pin 3 (TP12,TP70)|-| 3 || P0_2 || I/O U56|-| 4 || P0_3 || I/O M5 Pin 67|-| 5 || P0_4 || GND M5 Pin 54|-| 6 || P0_5 || U15 Pin 4 via R44 (TP67)|-| 7 || P0_6 || P3 Pin 6 (TP68)|-| 8 || P0_7 || (TP62)|-| 9 || Vss || Ground|-| 10 || P1_0 || U54 Pin 4 via R80 (TP73), R34 O Ohm GPIO 16 & U10 Pin 4|-| 11 || P1_1 || J8 Pin 10 & R74 to GND (TP74)|-| 12 || P1_2 || U10 Pin 6 (TP75)|-| 13 || P1_3 || Select Input U11, HIGH for MicroSD SPI|-| 14 || P1_4 || U18 Pin 17 via R48 0 Ohm (TP77)|-| 15 || P1_5 || U17 Pin 1 (TOUT) & J9 & Pull-up via R7|-| 16 || P1_6 || U1 Pin 4 (TP2,TP81)|-| 17 || P1_7 || J9 (TP80)|-| 18 || ADDR || Address input, to Vdd or ground|-| 19 || SCL || Clock to Vdd via pull-up resistor|-| 20 || SDA || Data to Vdd via pull-up resistor|-| 21 || Vdd(P) || Power for Port P|-| 22 || INT || ESP32 GPIO8. Interrupt output, connect to Vdd via pull-up resistor|-| 23 || Vdd(I2C) || Power from I2C-bus, provides voltage-level translation|-| 24 || RESET || Active LOW reset (TP78), to Vdd via pull-up R45 10k|} == LEDs == === RGBW 5050 ===* Inner Chain** U46,47,48,49,50,51,44,45** Data in via R69 471 Ohm from U43 Pin 3 (TP118)* Outer Chain** U24,23,22,21,20,19,30,29,28,27,26,25,36,35,34,33,32,31,42,41,40,39,38,37** Data in via R68 471 Ohm from U43 Pin 2 (TP63)* ~5 volt via R17, L1, U7, J1 and USB/Header* [https://cdn-shop.adafruit.com/product-files/2757/p2757_SK6812RGBW_REV01.pdf SK6812RGBW Datasheet (pdf)]Note: May not be exact specification match for actual components used Connected to ESP32 via U43 (muxer?) === Green 0603 ===*Part Number: [https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/1168/LTST-C193TGKT-5A.pdf LTST-C193TGKT-5A]*Digi-Key #: [https://www.digikey.com/en/products/detail/liteon/LTST-C193TGKT-5A/2356246 160-1832-1-ND]*Description: LED GREEN CLEAR CHIP SMD *Size: 0603, 1.6mm x 0.8mm x 0.45mm*Wavelength: 528nm These are used for testing and some have been populated at D8-D16. Depending on how many are used they are 0-3 in parallel connected to the PCA9632 driver. Do to the lack of current limiting resistor and the high supply voltage, they tolerated a good level of abuse working out the appropriate PWM control for less than the rated 20mA.  === PCA9632 I2C driver ===4-bit Fm+ I2C-bus low power LED driver *I2C Address: 0x62 (98)*Type: PCA9632TK*Marking: 9632*Package: HVSON8**plastic thermal enhanced very thin small outline package**no leads**8 terminals**body 3 × 3 × 0.85 mm with 0.5 mm pitch*Version: SOT908-1 This component is placed at <code>U55</code> with <code>LED0, LED1 & LED2</code> connected in groups of up to 3 LEDs in parallel providing a path to ground with the positive side of each LED going directly to >4 volts '''without''' a current limiting resistor. Using a PWM power value of <code>0xF0</code> or less seems to be quite reasonable and it is still quite visible with <code>0x01-0x05</code> as well, at least with the tested [[#Green 0603]] singularly or in a parallel pair. Note: Datasheet claims that <code>LEDOUT</code> register supports LEDs are on, off, individual dimming or individual dimming and group dimming/blink. The individual dimming and group control states were only exclusively selectable in testing with bits <code>10, 11</code> for individual vs group control respectively. {| class="wikitable"|-! Name !! Pin !! Type !! Description|-| LED0 || 1 || Out || LED driver 0|-| LED1 || 2 || Out || LED driver 1|-| LED2 || 3 || Out || LED driver 2|-| LED3 || 4 || Out || LED driver 3|-| GND || 5 || - || Ground|-| SCL || 6 || In || I2C Clock|-| SDA || 7 || In/Out || I2C Data|-| VDD || 8 || + || Power Supply|} *https://www.nxp.com/docs/en/data-sheet/PCA9632.pdf
Minimal test code, demonstrates individual channel dimming and group blink. Green LEDs were added to D8, D11, & D12.
<pre>
# Whirlybird "ECPBPCA9632 I2C 4-Bit LED Driver by DEFAULTfrom machine import Pin, SoftI2C, Timerfrom time import sleep_ms# I2C Address for LED Driver for D8-D16ADDR = 0x62# Register AddressesMODE1 = 0x00 # 0x10=on,0x00=sleepMODE2 = 0x01 # 0x00=dim,0x20=blink(group)# 8-bit individual brightnessPWM0 = 0x02 # D11,D8,D14PWM1 = 0x03 # D9,D10,D12PWM2 = 0x04 # D16,D15,D13PWM3 = 0x05 # not connected# Group controlGRPPWM = 0x06 # 7-00011bitGRPFREQ = 0x07 # 7-000 bit# 0[1/18/2024":0],1[3:2],2[5:4],3[7:6]# 00=Off,01=On,10=PWMx,11=GRPPWMLEDOUT = 0x08 # Whirlybird I2C (4+ devices connected)i2c = SoftI2C(scl=4, sda=5, freq=100_000) blinking = True def write(reg,val): i2c.writeto_mem(ADDR, reg, bytearray([val]))
def dim():
write(PWM0, 0x05) # D8 & D11
write(PWM1, 0x03) # D12
write(LEDOUT, 0x0A) # Enable PWM0 & PWM1
write(MODE2, 0x00)
# Top RGBW Sidedef blink():U10 "ZMYC" 6 pinU13 "16248" 16 pin write(2x8GRPPWM,0x0F) no lead package # Group brightnessU15 "AKK 7YW +" 16 pin write(4x4GRPFREQ,0x0F) no lead packageU43 "R5 0401 235" SOIC-8# RGBW 5050 InnerU46 0 center rightU47 1 center leftU48 2 far leftU49 3 lower leftU50 4 lower centerU51 5 lower rightU44 6 far rightU45 7 top centerGroup blink rate write(LEDOUT, 0x0F) # RGBW 5050 OuterEnable DMBLNKU24 0 top right of centerU23 1U22 2U21 3U20 4U19 5 3 O'clock furthest right middleU30 6U29 7U28 8U27 9U26 10U25 11 6 O'clock lowest centerU36 12U35 13U34 14U33 15U32 16U31 17 9 O'clock furthest left middleU42 18 U41 19U40 20U39 21U38 22U37 23 12 O'clock highest centerJ3 Vcc Rx Tx GND RST 0TP1TP3TP5TP7TP85-92 Top right to M5 pinsTP50 GPIO46 & U18CAP_WIRE capacitive touch wire connection write(MODE2, 0x20)
def toggleMode(t):
global blinking
if blinking:
dim()
else:
blink()
blinking = not blinking
# Bottom ESP32 SideC18write(MODE1,19 "47 HFT S73" ElectrolyticD1 "TV7 J9" 6 leadD2 "B5 J" (next to RST10x00) # Power on DriverD3 "S8 D0" J3 header power inputD4 "S8 D0" USB power inputD5 USB Connection ESD 6 pin toggleMode(top/leftNone)D6 USB Connection ESD 6 pin (left side)D7 "S8 D0" USB power inputJ1 2x8 ConnectorJ4,J7 Micro USB ConnectorJ5 MicroSD slotJ8 "2272N50" 40-Pin Flat Flex ConnectorJ9 6 pin flat flexL1 "5R6"L2 "100 2229"M5 "Amphenol E"M3B 12-pin flat flexP1 10 pin JTAG padsR2,3,6,7 0 OhmR27 "01C" (next to RST1)RST1 Tacticle momentary switchU1 "2NMT" 6 leadU2 "2NMT" 6 leadU3 "2NMT" 6 leadU4 "2NMT" 6 leadU6 "WXM" 5 lead 2x3U7 "L5144S TI 328 AGCS"U8 "LN8B" 5 lead 2x3U9 "4202" 6 leadU16 "PI410E5V 6416ZDE 2341GG"U17 "22-Biw" Capacitice TouchU52 "JE3h4" 3 leadU53 "F9 NZ" 8 pin leadU54 "GEC"U55 "9632 78 05 D335" 2x4 no lead packageU56 "1C7H 358 AFF 5" 6 pin no lead package # Start in Dimming
</pre>
[[User:-.-6eau|-.-6eau]] ([[User talk:-.-6eau|talk]]) 00:05, 4 October 2024 (UTC)
 
 
=== PI5L200 MUX ===
 
U11 connected to GPIO 6, 7 & 15 SPI. Normally open logic path to MicroSD J5.
Default connection is routed to M2 via U15, ''"scatch and sniff"'' for the routing RE win!
 
# Select Input U16 P1_3 grounded via 155K
# 1A0 Out to U15 Pin 1
# 1A1 Out to MicroSD MISO
# YA In from GPIO 15
# 1B0 Out to U15 Pin 16
# 1B1 Out to MicroSD Clock
# YB In from GPIO 7
# GND
# YC In from ?
# YC1 Out to ?
# YC0 Out to ?
# YD In from GPIO 6
# YD1 Out to MicroSD MOSI
# YD0 Out to U15 Pin 14
# Enable grounded (LOW enabled)
# Vcc
 
*https://www.digikey.com/en/products/detail/diodes-incorporated/PI5L200LE/1142607
*https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/2380/PI5L200.pdf
 
== LCD ==
*40 Pin Flat Flex connector at J8, backlight 18 volt boost from U54 enabled by GPIO Expand P1_0 or ESP32 GPIO 16.
*A number of pins are mux'd thru U18 and shared with camera.
*Looks to be RGB 8-bit per channel compatible, wired for RGB565 mode.
*Plausible match to:
**[https://cdn-shop.adafruit.com/product-files/2353/Datasheet.pdf 7" TFT 800x480 Datasheet]
**[https://cdn-shop.adafruit.com/product-files/1680/Datasheet.pdf 5" TFT 800x480 Datasheet]
 
== Camera ==
*24 Pin Flat Flex connector at J10, lighting LEDs driven by U55.
*Signaling is mux'd with LCD thru U18
*Plausible match to ESP32-CAM OV2640
== ESP32-S3-WROOM2 ==
Once launched, any running code may be halted, entering <code>repl</code> will give an interactive Micropython prompt. Entering <code>Ctrl+D</code> will do a soft reset and any code configured to automatically start such as <code>main.py</code> will then run and you will see any output such as from <code>print()</code> in the terminal.
== IMU ==
=== BNO080 =BOM == <pre># Whirlybird "ECPB-00011-000 1/18/2024"  # Top RGBW SideU10 "ZMYC" 6 pinU13 "16248" 16 pin (2x8) no lead packageU15 "AKK 7YW +" 16 pin (4x4) no lead packageU43 "R5 0401 235" SOIC-8# RGBW 5050 InnerU46 0 center rightU47 1 center leftU48 2 far leftU49 3 lower leftU50 4 lower centerU51 5 lower rightU44 6 far rightU45 7 top center# RGBW 5050 OuterU24 0 top right of centerU23 1U22 2U21 3U20 4U19 5 3 O'clock furthest right middleU30 6U29 7U28 8U27 9U26 10U25 11 6 O'clock lowest centerU36 12U35 13U34 14U33 15U32 16U31 17 9 O'clock furthest left middleU42 18 U41 19U40 20U39 21U38 22U37 23 12 O'clock highest centerJ3 Vcc Rx Tx GND RST 0TP1TP3TP5TP7TP85-92 Top right to M5 pinsTP50 GPIO46 & U18CAP_WIRE capacitive touch wire connection  # Bottom ESP32 SideC18,19 "47 HFT S73" ElectrolyticD1 "TV7 J9" 6 leadD2 "B5 J" (next to RST1)D3 "S8 D0" J3 header power inputD4 "S8 D0" USB power inputD5 USB Connection ESD 6 pin (top/left)D6 USB Connection ESD 6 pin (left side)D7 "S8 D0" USB power inputJ1 2x8 ConnectorJ4,J7 Micro USB ConnectorJ5 MicroSD slotJ8 "2272N50" 40-Pin Flat Flex ConnectorJ9 6 pin flat flexL1 "5R6"L2 "100 2229"M5 "Amphenol E"M3B 12-pin flat flexP1 10 pin JTAG padsR2,3,6,7 0 OhmR27 "01C" (next to RST1)RST1 Tacticle momentary switchU1 "2NMT" 6 leadU2 "2NMT" 6 leadU3 "2NMT" 6 leadU4 "2NMT" 6 leadU6 "WXM" 5 lead 2x3U7 "L5144S TI 328 AGCS"U8 "LN8B" 5 lead 2x3U9 "4202" 6 leadU16 "PI410E5V 6416ZDE 2341GG"U17 "22-Biw" Capacitice TouchU52 "JE3h4" 3 leadU53 "F9 NZ" 8 pin leadU54 "GEC"U55 PCA9632 "9632 78 05 D335" 2x4 no lead packageU56 "1C7H 358 AFF 5" 6 pin no lead package</pre>
https://learn=== Gallery ===<gallery>RGBW ESP32-S3 wiring RED-GREEN.pngU18 SD642AO.jpgU11 PI5L200LE.sparkfunjpgU16 PI4IOE5V9535.com/tutorials/qwiicjpgD6 USBLC6-vr-imu-bno080-hookup-guide2SC6.jpgU15 AKK 7YW.jpgU55 PCA9632TK.jpgWhirlybird Scratch and Sniff via Probing.jpegWhirlybird Camera Flat Flex.jpeg</allgallery>