Compare commits

...

30 Commits

Author SHA1 Message Date
King Kévin b70c6c3516 doc: add firmware testing 2024-06-17 09:34:14 +02:00
King Kévin 7e5c6f3cf5 doc: fix internal links 2024-06-16 17:10:53 +02:00
King Kévin 3e312a65fb doc: fix pictures 2024-06-16 17:04:20 +02:00
King Kévin cd9878ac63 doc: fix pictures 2024-06-16 17:03:45 +02:00
King Kévin 1acfc3e79f doc: fix pictures 2024-06-16 17:02:30 +02:00
King Kévin 1452c65713 doc: comment pictures 2024-06-16 17:01:26 +02:00
King Kévin de8d75cb86 doc: fix pictures 2024-06-16 16:59:03 +02:00
King Kévin 468e603aed doc: add pictures 2024-06-16 16:58:09 +02:00
King Kévin 5c324c2afc doc: add button meaning 2024-06-16 16:36:29 +02:00
King Kévin 8bdf6653b9 doc: complete flashing 2024-06-16 16:09:08 +02:00
King Kévin 72b8246702 doc: add SP511E alternative 2024-06-16 16:07:32 +02:00
King Kévin 09528c00a3 doc: improve status LED description 2024-06-16 16:07:06 +02:00
King Kévin f0bb6bf7df doc: split large documentation over multiple files 2024-05-19 11:34:48 +02:00
King Kévin ca0002ce9b doc: add configuration 2024-05-19 10:17:43 +02:00
King Kévin d2ee4e867d doc: simplify pio config 2024-05-19 10:17:23 +02:00
King Kévin 702a1cc921 doc: add flashing MM (for v5) 2024-05-15 15:24:23 +02:00
King Kévin 03b9eb3118 doc: improve WLED installation 2024-04-29 12:02:45 +02:00
King Kévin bf576fe66c doc: add hardware test 2024-04-29 12:02:24 +02:00
King Kévin fd687aab23 doc: add other LED controllers 2024-04-28 11:44:53 +02:00
King Kévin 2459349c9e doc: add v6 changes 2024-03-08 05:53:23 +01:00
King Kévin 78d27af70a lib: update repo 2024-03-08 05:52:55 +01:00
King Kévin ba15732368 brd: improve RJ45 and add tooling holes 2024-01-05 18:20:21 +01:00
King Kévin b407d3c3df sch: fix placement info 2024-01-05 18:19:12 +01:00
King Kévin 5977e1f87d lib: add smaller LDO 2024-01-05 18:18:36 +01:00
King Kévin eb3f770b08 sch/brd: chang to more approriate/cheap schmitt trigger/level shifter, and improve silk 2024-01-05 17:16:15 +01:00
King Kévin 760528bbb4 lib: add schmitt trigger 2024-01-05 14:20:56 +01:00
King Kévin 0926155293 sch: re-add USB for convenient 5V power 2024-01-05 14:20:15 +01:00
King Kévin 69a1151077 sch/brd: change buttons 2023-12-19 21:04:53 +01:00
King Kévin fecbb05820 lib: add buttons 2023-12-19 21:04:30 +01:00
King Kévin 0efd16a9c9 switch to next version 6 2023-12-19 19:40:18 +01:00
29 changed files with 38256 additions and 12721 deletions

View File

@ -35,3 +35,7 @@ library:
- connector/terminal-spring_kf250-3.5@12p-1
- connector/rj45_hc-rj45-5ja-1
- connector/terminal-barrier_mx25c-7.62@2p
- mechanical/smd-button_tx-1187a
- mechanical/switch_mst22d18g2
- ic/schmitt-trigger_74lvc1g17@w5
- vreg/ldo_microne_me6211@m5

View File

@ -1,5 +1,14 @@
TODO:
v6
--
improve to PCB assembly and various small improvements:
- use 1-channel Schmitt trigger
- allow 5V power over USB
- add button for configuration reset
- complete BoM and placement information
v5
--

221
FLASHING.md Normal file
View File

@ -0,0 +1,221 @@
If you manufactured the board yourself, you probably want to install WLED to it.
WLED
====
You can easily install the latest WLED release, but this will not support DMX or the status LED.
- prepare a USB to UART adapter and 1x6 100 mil pin header to be inserted on the DEBUG port
- connect UART GND to DEBUG GND, UART TX to DEBUG RX, UART RX to DEBUG TX
- plug USB to UART adapter to computer
- remove USB from the board
- go to the [WLED install page](https://install.wled.me/)
- select version (latest release or stable starting with 0.15.0) and audio reactive variant
- click on install
- select serial port, but don't click on connect yet
- press and hold DL button on board
- plug USB into board
- you can release the DL button
- insert and hold pins in DEBUG header with an angle to make temporary contact
- press "Connect" on page
- press "INSTALL WLED"
- wait for 2 minutes to flash WLED, still holding the DEBUG header
WARNING: Do not select WLED version 0.14.*.
It has a [unknown](https://wled.discourse.group/t/cannot-get-wled-flashed-on-esp32-mini-1/10047) [issue](https://github.com/Aircoookie/WLED/issues/3548) with the ESP32-MINI modules used by WLED chain (probably related to the toolchain), which causes the firmware crash and reboot in a loop.
WLED v0.15.* or older v0.13.3 and Sound Reactive v0.13.4 start fine.
The UART interface is still broken though, and prevents from using [Improv](https://esphome.io/components/improv_serial.html) for WiFi configuration.
If you prefer to use [WLED binary releases](https://github.com/Aircoookie/WLED/releases) and [esptool](https://github.com/espressif/esptool) on the command line instead of the [web interface](https://install.wled.me/), here the commands (set the version to the one wished):
~~~
export WLED_VERSION="0.15.0"
export WLED_PATH=`echo $WLED_VERSION | sed 's/\./_/g'`
wget https://install.wled.me/bin/release_${WLED_PATH}/esp32_bootloader_v4.bin
wget https://install.wled.me/bin/release_${WLED_PATH}/WLED_${WLED_VERSION}_ESP32_audioreactive.bin
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 write_flash 0x0 ./esp32_bootloader_v4.bin
esptool.py --port /dev/ttyUSB0 write_flash 0x10000 WLED_${WLED_VERSION}_ESP32_audioreactive.bin
~~~
If the USB to UART adapter also breaks out the DTR and RTS signals, you can connect them to the DL and RST pin respectively on the debug header.
Now esptool will take care of resetting and putting the board into bootloader mode.
You don't have to press on the DL button and re-plug the power over USB anymore by hand.
A CH340K USB to UART chip can also be soldered on the back of the board.
You then don't need an external USB to UART adapter anymore, as it is now on board.
This is very useful when you have to flash or configure often the board.
Once the firmware is install, re-plug the power to start it.
If you added the RST button on the back, you can also press this alternatively.
If you connected the DEBUG RST signal to RTS on the USB to UART adapter, you can also lower the line to reset it.
This signal is also connected to the optional on-board USB to UART chip.
To restart the board and check the debug output:
~~~
picocom -b 115200 --lower-rts --lower-dtr /dev/ttyUSB0
~~~
MM
==
binary
------
[MoonModules](https://mm.kno.wled.ge/) (MM) is a fork of WLED.
It is often used to experiment with features that could then be released in WLED.
It includes the DMX IN support our board takes advantage of.
We can [compile it, or use binaries](https://mm.kno.wled.ge/moonmodules/Installing-and-Compiling/).
[WLED install](https://wled-install.github.io/) also to get the binaries or install them using the web page.
Select board type / software version under Moon Mod: ESP32 (4MN Flash, S: Audioreactive, no other Usermods included).
Use the same instructions from previous WLED section to install the binary on the board.
The only feature not supported by this firmware is the WLED STATUS LED on the top left corner of board.
compiling
---------
To support DMX IN and the STATUS LED, we need to [compile WLED MM](https://kno.wled.ge/advanced/compiling-wled/).
Get the release:
~~~
export MM_RELEASE="0.14.1-beta.30"
wget https://github.com/MoonModules/WLED/archive/refs/tags/v$MM_RELEASE.tar.gz
tar xf v$MM_RELEASE.tar.gz
cd WLED-$MM_RELEASE
~~~
Or if you want the latest source:
~~~
git clone https://github.com/MoonModules/WLED MM_WLED
cd MM_WLED
git checkout mdev
~~~
Let's define our devices (e.g. the build environments):
~~~
cat > platformio_override.ini << EOF
[platformio]
default_envs = wled_chain
; for WLED chain v5 and v6
[env:wled_chain]
; V4 add DMX IN support
extends = esp32_4MB_V4_S_base
build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags}
-D WLED_RELEASE_NAME=WLED_chain1
-D STATUSLED=2
-D DATA_PINS=25,26,27
lib_deps = ${esp32_4MB_V4_S_base.esp32_lib_deps}
build_unflags = ${esp32_4MB_V4_S_base.build_unflags}
-D USERMOD_ARTIFX
-D USERMOD_AUTO_SAVE
-D USERMOD_DALLASTEMPERATURE
-D USE_ALT_DISPLAY
-D USERMOD_FOUR_LINE_DISPLAY
-D USERMOD_ROTARY_ENCODER_UI
-D WLED_DISABLE_ESPNOW ; counter build_disable_sync_interfaces
EOF
~~~
To [compile](https://kno.wled.ge/advanced/compiling-wled/) the firmware:
~~~
platformio run
~~~
To [install the firmware](https://kno.wled.ge/basics/install-binary/) over UART:
~~~
# erase to start clean, not always needed but also removes previous configuration
esptool.py --port /dev/ttyUSB0 erase_flash
# .pio/build/wled_chain/bootloader.bin is also compiled, but it does not boot (and is way smaller)
wget https://github.com/Aircoookie/WLED/releases/download/v0.13.1/esp32_bootloader_v4.bin
esptool.py --port /dev/ttyUSB0 write_flash 0 esp32_bootloader_v4.bin
# now flash the compiled WLED
esptool.py --port /dev/ttyUSB0 write_flash 0x10000 .pio/build/wled_chain/firmware.bin
~~~
Once flashed, the WLED status LED on the top left of the corner should blink.
To get serial log with RTS connected to RST and DTR to DL:
~~~
picocom -b 115200 --lower-rts --lower-dtr --imap lfcrlf /dev/ttyUSB0
~~~
configuration
=============
If you manufactured and flashed the device yourself, you will also have to configure it.
Once flashed, the device will create a WiFi access point named WLED-AP.
The corresponding password it wled1234.
When connecting to it, you will be redirected to its home page where you can configure the WiFi to connect to your network.
To configure the device manually:
- go to "TO THE CONTROLS!"
- go to "Config" gear on top
- go to "LED Preferences"
- in the "Maximum PSU Current" field, enter 2500 (mA)
- under "LED outputs", click twice on "+"
- in "LED outputs" section 1, set "GPIO" to 25 and "Length" to 30
- in "LED outputs" section 2, set "GPIO" to 26 and "Length" to 30
- in "LED outputs" section 3, set "GPIO" to 27 and "Length" to 30
- click on "Save" on top
- go to "Usermods"
- under "AudioReactive", tick "Enable"
- click on "Save" on top
- go to "Usermods"
- under "AudioReactive" "Digitalmic", set "Type" to "Generic I2S PDM"
- click on "Save" on top
- go to "Usermods"
- under "AudioReactive" "Digitalmic"
- set "Pin I2S SD" to 5
- set "Pin I2S WS" to 18
- set "Pin I2S SCK" to "undefined"
- click on "Save" on top
- got to "User Interface"
- in the "Server description" field, enter "WLED chain"
- click on "Save" on top
- go to "Sync Interfaces"
- under DMX Input Pins
- set "DMX RX" to 35
- set "DMX TX" to 33
- set "DMX Enable" to 32
- click on "Save" on top
- got to "WiFi Setup"
- in the "AP SSID" field, enter "WLED chain-AP"
- click on "Save & Connect" on top
The WiFi connection should drop, and the new "WLED chain-AP" access point should appear, still with password "wled1234".
To test the LED outputs, go to "TO THE CONTROLS!", select the Effect mode "Rainbow" and see the LEDs connected to the outputs on the bottom of the board cycle through colors.
To test the microphone for audio-reactive effects, select the Effect mode "Gravimeter".
Clamp in your hands, and the LEDs should light up red and fade out.
To not have to configure every field by hand, go to the "Security & Updates" menu.
There you can backup the configuration and presents.
You can then upload them to the next device.
To update the `firmware.bin` firmware over HTTP using the command line (much faster than over UART):
~~~
curl --form "update=@firmware.bin" 'http://4.3.2.1/update'
~~~
To upload the `wled_cfg.json` configuration:
~~~
curl --form "data=@wled_cfg.json;type=application/json;name=data;filename=/cfg.json" 'http://4.3.2.1/upload'
~~~
To upload the `wled_presets.json` presets:
~~~
curl --form "data=@wled_presets.json;type=application/json;name=data;filename=/presets.json" 'http://4.3.2.1/upload'
~~~

111
INSTALLATION.md Normal file
View File

@ -0,0 +1,111 @@
Here are example for WLED chain installations, make used of its different capabilities.
scenario
========
Let's go from the most basic, to the most complex installation.
We will start with a standalone device.
For very tiny installations, with less than 60 LEDs, or 1 meters of 60 LEDs/meter strips:
- connect the 5V LED strip to the 5V screw terminal and one of the IO spring loaded ports next to it
- use a 5V 2A USB power supply and connect it to the USB-C power
- don't forget to specify the 2000 mA limit in the WLED LED configuration
For tiny installations, with 5 meters of 30 LEDs/meter strips:
- connect the 5V LED strip to the 5V screw terminal and one of the IO spring loaded ports next to it
- use the screw terminal to also have separate wires for power injection on the LED strip in the middle and or other end of it
- connect a 12V to 48V 2A (or more) power supply to the barrel jack
- the on-board 5V regulator will provide power to the LEDs (up to 3A)
For medium installations:
- connect the 5V LED strip ground and data wires to the board (see above)
- use an external 5V power supply powerful enough for the number of LEDs you want
- connect the external power supply to the 5V screw terminal
- connect the LED strip power pins directly to the power supply
- connect additional cables from the power supply to the strip to inject power every 2.5 meters (else the white will appear more orange)
For large installations:
- connect the 12V LED strip ground and data wires to the board (see above)
- use an external 12V power supply powerful enough for the number of LEDs you want
- connect the external power supply to the 6-60V screw terminal
- connect the LED strip power pins directly to the power supply
- thanks to the 12V supply, you need far less injection points (every 5-10 meters should be enough)
For small wide-spread installations:
- this uses multiple boards, and chains tiny installations
- on each board, connect the 5V LED strip to the 5V screw terminal and one of the IO spring loaded ports next to it
- on only the first board, connect a 12V to 60V (the higher to better) 2A power supply to the barrel jack or 6-60V screw terminal
- connect all boards using Ethernet cables on the RJ45 ports, allowing the first board to power all others
For outdoor wide-spread installations:
- this is similar to small wide-spread installations, but the boards are mounted in waterproof enclosures
- since the barrel jack port is not accessible anymore, use the 6-60V screw terminal
- since the RJ45 ports are not accessible anymore, and the RJ45 connector do not fit through the enclosure cable cables anymore, cut Ethernet cables and insert the individual wires in the RJ45 1-8 spring loaded terminals (the color of the wires is described on the back of the board, or just look at the cut RJ45 connector)
- you can insert the two wires of both Ethernet cables in each terminal
For large wide-spread installations:
- connect the 12V LED strip ground and data wires to the board
- use multiple external 12V power supplies powerful enough for each site
- only connect one board to the external power supply to the 6-60V screw terminal
- connect all boards using Ethernet cables, allowing the first board to power all others
LED strip
=========
5V LED strips are very common an cheap, and suited for small installations.
But the LED strips have only small traces to carry the power, with non-negligible resistance.
The brighter the LED is, the current it uses, the higher will be the voltage drop.
This voltage drop accumulated along the LED strip, leaving the last LEDs on the strip with a lower voltage.
This cause the blue LED to not be as brightness, making the white more orange.
One way to compensate for this voltage drop it to use power injection.
Connect additional thicker wires from the power supply to the middle or end of the LED strip.
But this also requires large power supplies to be able to deliver more current.
Another way is to use 12V LED strips.
Thanks to the higher voltage, the LED require less current, reducing the voltage drop.
And a voltage drop on higher voltages has relatively less effect.
This requires far fewer power injection, or brighter lights.
It also makes the power supplies more compact, and allows using not as large cables.
power supply
============
The board has a built-in 5V DC-DC converter.
This allows powering the board using off-the-shelves 12V to 48V power supplies.
The power can come from the barrel jack, screen terminal, or Ethernet cable.
The power is injected back to the Ethernet port.
The board with also provide enough power for the 5 meters of LED strips.
For larger LED installations, connect the 5V or 12V LED strips directly to the external power supply suited to it.
Connect ground and data of the LED strip to the board.
Only connect one of the chained board to the power supply.
DMX
===
WLED is normally controlled over WiFi, but this is unreliable for large installation, particularly when multiple devices need to be controlled simultaneously.
To cope for that, DMX512 support has been added.
The DMX signals are on the RJ45 port.
Thus chaining multiple devices not only provides power, but also data.
No more air interferences, and distance limitations.
Any of the WLED can act as DMX master controller, and all others are slave devices.
If you are using an external DMX controller, use a XLR adapter.
This allows connecting regular XLR cables, and will forward the data through the RJ45 port.
The adapter also allows injecting power.
The boards have a DMX switch to configure the DMX bus daisy chain.
In the chain position, the data signals are passed through to the other RJ45 port.
This should be used on all boards in the chain except the last.
In the end position, a 100 Ohm termination resistor is put on the data lines to mitigate signal reflection.
This should de used on the last board in the chain, if it also ends the DMX chain.
In the loop position, the data lines are passed back on the RJ45 port, returning through the chain.
This should be used on the last board in the chain, if you want to continue the DMX chain (i.e. on the DMX out port on the XLR adapter).

76
ORIGIN.md Normal file
View File

@ -0,0 +1,76 @@
[WLED](https://kno.wled.ge/) is a very good firmware to control LEDs such as the WS2812b.
Just get a cheap ESP32 development board, flash WLED using the [web installer](https://install.wled.me/), and off you got.
I did that very often, and for small projects it's fine.
But for larger projects with multiple devices, you encounter some limitations:
- you have to separately take care of the power supply: LED strips can draw a lot of current which the development board cannot handle
- remote control using ArtNet over WiFi can be problematic: WiFi routers don't all handle broadcast well, WiFi coverage is not always good, WiFi is jittery
- providing power to multiple device can be a pain: there is not always a power plug nearby
this project tries to solve these issues, and since I designed a board, provide even more features
bus
===
The first problem is WiFi:
- ESP32 operate on 2.4 GHz, a crowded spectrum
- ESP32 board with built-in antenna have poor reception
- WiFi router don't always handle broadcast well
This make the WiFi a poor interface to remotely control LEDs with multiple WLED (using ArtNet or similar) in a real-time manner (low latency and jitter).
The first solution would be to use Ethernet instead of WiFi.
This would keep the networking capability.
ESP32 supports this interface, and the [WT32-ETH01](https://www.seeedstudio.com/Ethernet-module-based-on-ESP32-series-WT32-ETH01-p-4736.html) makes it available.
But to connect multiple devices you need a Ethernet switch, and run wires from this switch to each device (e.g. is a star topology).
I wanted to be able to chain the devices, to increase the distance while reducing number of cables and their length.
You could use the [KSZ8863](https://www.microchip.com/en-us/product/KSZ8863) 3-port Ethernet PHY.
This can act as Ethernet interface for the ESP32, and built-in switch.
Now the boards can be chained.
There is already [schematic](https://github.com/espressif/esp-eth-drivers/tree/master/ksz8863) available, but the support still is in beta, and the implementation is complex are not inexpensive.
I also thought about CAN bus.
This is a very resilient bus, and the ESP32 has an interface for it.
But WLED does not support it yet, and the host would need a bridge for it.
Finally I arrived to RS-285.
It's another differential protocol, often used in the industry because resilient.
And the implementation in WLED is easy because it's just serial.
This is when I remembered that DMX512 also uses RS-485.
And DMX is the de facto standard in the lighting event world.
Thus, interfacing with it will be very easy and there is a lot of software support.
The limitation is that it supports only one universe of 512 channels, or 170 RGB LEDs.
A solution would be to control modes instead of individual LEDs.
intended use case
=================
The purpose is to provide a simple board able to control LEDs strips.
It should be better than general purpose development boards.
A built-in voltage converter allows driving an LED strip using regular external power supplies.
It is intended for small installations, not requiring more than 5 meters of LED strings per device.
This keeps the power supply small.
The board is not intended for large LED installation requiring a lot of power.
The board should be cheap enough to be a default choice when creating a small LED installation.
The goal is under 10€ per board.
This prevents me for using Ethernet network, since the PHY and magnetics are expensive (~ 3€).
It should not require a complex installation.
Something like a LAN requiring a permanent switch or router is already too much.
The board should be able to work on its own.
It should make it easy to create multi-device installations.
This is enabled by the chaining capability.
You can connect one device to another, and the job is done.
This single link provides power.
This allows using a single power supply for the whole installation, just connected to one device in the chain.
It should use cheap and common cable for the chain link, such as Ethernet cables.
It should accept common off the shelves power supplies, such as 12-24V 2-4A bricks.
The chain link should also allow synchronising the devices, without requiring a network connection.
Ideally it should also provide an interface to reliably remotely control them.
For that it uses the DMX512 protocol.

302
README.md
View File

@ -1,5 +1,13 @@
WLED chain is a board for the [WLED](https://kno.wled.ge/) firmware, allowing to power, control, and chain them over Ethernet cables.
The boards can has a built-in antenna:\
<img src="pictures/v6_pcb_front.jpg" height="250"/>
<img src="pictures/v6_pcb_back.jpg" height="250"/>
Or have a connector for external antenna, for better reception or to be installed in metal enclosures:\
<img src="pictures/v6_ext_front.jpg" height="250"/>
<img src="pictures/v6_ext_back.jpg" height="250"/>
purpose
=======
@ -15,180 +23,50 @@ It allows to:
- embed microphone for sound reactive effects
- put board in waterproof enclosure (for [sonoff](https://www.sonoffegypt.com/products/sonoff-ip66-waterproof-case) or generic [100x68x50 mm](https://www.aliexpress.com/item/1005005622148025.html)).
<img src="pictures/enclosure.jpg" height="250"/>
usage
=====
flashing
--------
There are several ways to flash the board (from easiest to more development friendly):
- connect USB to serial adapter TX and RX signals on the DEBUG port. Short DL to GND pin while powering up to enter download mode
- populate DL and RST buttons to not have to short the pins by hand
- connect USB to serial adapter RTS to RST and DTR to DL on the DEBUG port, to switch to download mode from the computer
- populate the USB-C port and CH340K USB to serial adapter to avoid using and external adapter
Once in download mode, we can flash the [WLED firmware](https://github.com/Aircoookie/WLED/releases) using the [web interface](https://install.wled.me/), or [esptool](https://github.com/espressif/esptool):
~~~
wget https://install.wled.me/bin/release_0_14_0/esp32_bootloader_v4.bin
esptool.py --port /dev/ttyACM0 --after no_reset write_flash 0x0 ./esp32_bootloader_v4.bin
wget https://install.wled.me/bin/release_0_14_0/WLED_0.14.0_ESP32_audioreactive.bin
esptool.py --port /dev/ttyACM0 --after no_reset write_flash 0x10000 WLED_0.14.0_ESP32_audioreactive.bin
~~~
TODO: make a custom WLED build with
- status LED set
- audio reactive enabled
- DMX out (needs to be implemented)
- DMX in enabled (needs to be implemented)
- all pins configured (that's just a configuration)
status
------
On the RJ45 ports there are 4 LEDs.
These indicate the status:
- the center-right LED indicates the >6V status: it is on when 6-60V power is provided to the board
- the rightmost LED indicates the 5V status: it is on when the on-board DC-DC voltage regulator converts the 6-60V to 5V right after 6-60V is plugged in, or when 5V power is provided externally
- the center-left LED indicates the DMX RX traffic: it blink on DMX input traffic (when the board is configure as slave)
- the leftmost LED indicates the DMX TX traffic: it blinks on DMX output traffic (when the board is configure as master)
- on the right RJ45 port, indicating the status of power:
- the left LED indicates the >6V status: it is on when 6-60V power is provided to the board
- the right LED indicates the 5V status: it is on when the on-board DC-DC voltage regulator converts the 6-60V to 5V right after 6-60V is plugged in, or when 5V power is provided externally
- on the left RJ45 port, indicating the status of DMX traffic:
- the right LED indicates the DMX RX traffic: it is on (e.g. blinks rapidly) on DMX input traffic (when the board is configure as slave)
- the left LED indicates the DMX TX traffic: it is on(e.g. blinks rapidly) on DMX output traffic (when the board is configure as master)
There is an LED marked WLED on the top left of the board.
It indicated the status of WLED:
- it switches every second when the access point is open (or could not connect to WiFi)
- it blinks at 1 Hz when connected to WiFi
- it blinks at 2 Hz when connected to MQTT (if the firmware supports MQTT)
On the top left corner of the board, there is a button labeled DL.
This is configured as [button 0](https://kno.wled.ge/features/macros/) in WLED.
It can be used to reset the configuration:
- hold it down for at least 6 seconds and the Wi-Fi settings will be reset to default
- hold it down for at least 12 seconds and the configuration memory is erased
installation
============
The board can be used in various configurations:
- LED strip (for small, medium, or large LED installations): using 5V or 12V
- LED strip (for small, medium, or large LED installations): using 5V, 12V, or 24V
- power supply: 5V or 6-60V
- enclosure: with or without a waterproof enclosure
- chain: a single standalone device, or with additional WLED chain devices
- DMX: controlled using WiFi, or DMX
You can find the details for each aspect in the corresponding section.
scenario
--------
Let's go from the most basic, to the most complex installation.
We will start with a standalone device.
For very tiny installations, with less than 60 LEDs, or 1 meters of 60 LEDs/meter strips:
- connect the 5V LED strip to the 5V screw terminal and one of the IO spring loaded ports next to it
- use a 5V 2A USB power supply and connect it to the USB-C power
- don't forget to specify the 2000 mA limit in the WLED LED configuration
For tiny installations, with 5 meters of 30 LEDs/meter strips:
- connect the 5V LED strip to the 5V screw terminal and one of the IO spring loaded ports next to it
- use the screw terminal to also have separate wires for power injection on the LED strip in the middle and or other end of it
- connect a 12V to 48V 2A (or more) power supply to the barrel jack
- the on-board 5V regulator will provide power to the LEDs (up to 3A)
For medium installations:
- connect the 5V LED strip ground and data wires to the board (see above)
- use an external 5V power supply powerful enough for the number of LEDs you want
- connect the external power supply to the 5V screw terminal
- connect the LED strip power pins directly to the power supply
- connect additional cables from the power supply to the strip to inject power every 2.5 meters (else the white will appear more orange)
For large installations:
- connect the 12V LED strip ground and data wires to the board (see above)
- use an external 12V power supply powerful enough for the number of LEDs you want
- connect the external power supply to the 6-60V screw terminal
- connect the LED strip power pins directly to the power supply
- thanks to the 12V supply, you need far less injection points (every 5-10 meters should be enough)
For small wide-spread installations:
- this uses multiple boards, and chains tiny installations
- on each board, connect the 5V LED strip to the 5V screw terminal and one of the IO spring loaded ports next to it
- on only the first board, connect a 12V to 60V (the higher to better) 2A power supply to the barrel jack or 6-60V screw terminal
- connect all boards using Ethernet cables on the RJ45 ports, allowing the first board to power all others
For outdoor wide-spread installations:
- this is similar to small wide-spread installations, but the boards are mounted in waterproof enclosures
- since the barrel jack port is not accessible anymore, use the 6-60V screw terminal
- since the RJ45 ports are not accessible anymore, and the RJ45 connector do not fit through the enclosure cable cables anymore, cut Ethernet cables and insert the individual wires in the RJ45 1-8 spring loaded terminals (the color of the wires is described on the back of the board, or just look at the cut RJ45 connector)
- you can insert the two wires of both Ethernet cables in each terminal
For large wide-spread installations:
- connect the 12V LED strip ground and data wires to the board
- use multiple external 12V power supplies powerful enough for each site
- only connect one board to the external power supply to the 6-60V screw terminal
- connect all boards using Ethernet cables, allowing the first board to power all others
LED strip
---------
5V LED strips are very common an cheap, and suited for small installations.
But the LED strips have only small traces to carry the power, with non-negligible resistance.
The brighter the LED is, the current it uses, the higher will be the voltage drop.
This voltage drop accumulated along the LED strip, leaving the last LEDs on the strip with a lower voltage.
This cause the blue LED to not be as brightness, making the white more orange.
One way to compensate for this voltage drop it to use power injection.
Connect additional thicker wires from the power supply to the middle or end of the LED strip.
But this also requires large power supplies to be able to deliver more current.
Another way is to use 12V LED strips.
Thanks to the higher voltage, the LED require less current, reducing the voltage drop.
And a voltage drop on higher voltages has relatively less effect.
This requires far fewer power injection, or brighter lights.
It also makes the power supplies more compact, and allows using not as large cables.
power supply
------------
The board has a built-in 5V DC-DC converter.
This allows powering the board using off-the-shelves 12V to 48V power supplies.
The power can come from the barrel jack, screen terminal, or Ethernet cable.
The power is injected back to the Ethernet port.
The board with also provide enough power for the 5 meters of LED strips.
For larger LED installations, connect the 5V or 12V LED strips directly to the external power supply suited to it.
Connect ground and data of the LED strip to the board.
Only connect one of the chained board to the power supply.
DMX
---
WLED is normally controlled over WiFi, but this is unreliable for large installation, particularly when multiple devices need to be controlled simultaneously.
To cope for that, DMX512 support has been added.
The DMX signals are on the RJ45 port.
Thus chaining multiple devices not only provides power, but also data.
No more air interferences, and distance limitations.
Any of the WLED can act as DMX master controller, and all others are slave devices.
If you are using an external DMX controller, use a XLR adapter.
This allows connecting regular XLR cables, and will forward the data through the RJ45 port.
The adapter also allows injecting power.
The boards have a DMX switch to configure the DMX bus daisy chain.
In the chain position, the data signals are passed through to the other RJ45 port.
This should be used on all boards in the chain except the last.
In the end position, a 100 Ohm termination resistor is put on the data lines to mitigate signal reflection.
This should de used on the last board in the chain, if it also ends the DMX chain.
In the loop position, the data lines are passed back on the RJ45 port, returning through the chain.
This should be used on the last board in the chain, if you want to continue the DMX chain (i.e. on the DMX out port on the XLR adapter).
limitation
==========
logo
----
You can see the WLED logo on the board, but this is NOT AN OFFICIAL WLED BOARD.
There is not such thing as a WLED board, as WLED is just a firmware.
The logo is only there to show the board is intended to be used with WLED.
And I find the logo nice.
The combination can be used for [various installations](./INSTALLATION.md).
power
-----
@ -212,7 +90,7 @@ The 6-60V power input allows using any kind of power supply, like common 12V, 24
It also allows using 48V LiPo batteries (going up to 55V), to operate the devices without grid power.
There is an over current input protection of 1.8A using a PPTC.
This is to protect the board from very bad accidents, and because Ethernet cables are no meant to carry power (PoE limit is 960 mA per pair, we are using two).
This is to protect the board from very bad accidents (e.g. shorted 5V output), and because Ethernet cables are no meant to carry power (PoE limit is 960 mA per pair, we are using two).
To be able to power multiple WLED chain boards, each drawing up to 15W, use higher voltages (48V up to 60V).
The 6-60V input is also reverse polarity protected using an inline Schottky diode after the fuse.
@ -253,7 +131,7 @@ But feel free to add hole to the enclosure to access them.
This would also remove the waterproof advantage though.
features
--------
========
Features already implemented:
@ -283,99 +161,45 @@ Features will not be implemented:
- USB Power Delivery: this is just a convenience feature, but using expensive lower power USB chargers with expensive ISB-C cables is not ideal for the intended usage (festival installation). And you can still use power-delivery by adding a cheap PD trigger board next to it.
- Lithium battery input and charger: it does not fit the intended usage, with large external power supplies providing enough power for power hungry LED strips. Small batteries would not be able to handle that over longer time. You can still use the power bank on the 5V power input though, and charge the battery separately. The 6-60V allows connecting 3-13S LiPo batteries.
- Power over Ethernet (active): I do use passive Power over Ethernet, by providing power on 2 pairs of the Ethernet cable that are not used for 10/100 Mbps communication. This allows using very simple and inexpensive injectors to power power, using and power supply. Active PoE require specials and more expensive injectors or power supplies, and complex extractors in each device. Feel free to use PoE though. There are plenty of relatively cheap injectors and extractors that you can use as external devices next to the boards.
- fuse protection for input and output protection, round or automotive: there is not enough space to place such large fuses. We already have one input protection (fuse + reverse polarity on 6-60V), so you just have pay attention to the 5V outputs (limited to 3A by the DC-DC converter) or input (supported, but not the intended use).
- fuse protection for 5V input and output protection, round or automotive: there is not enough space to place such large fuses. We already have one input protection (fuse + reverse polarity on 6-60V), so you just have pay attention to the 5V outputs (limited to 3A by the DC-DC converter) or input (supported, but not the intended use).
- line-in audio input (using [ESP32-LyraT-Mini](https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/dev-boards/board-esp32-lyrat-mini-v1.2.html) design as reference): running additional audio wires is too cumbersome, particularly for simple effects based on loudness or FFT. Clubs or festivals are loud enough for the microphone to pick up the audio at a decent level.
background
The [origin](./ORIGIN.md) and goal behind WLED chain will help better understand which features are supported and which not.
limitation
==========
origin
------
manufacturing
=============
[WLED](https://kno.wled.ge/) is a very good firmware to control LEDs such as the WS2812b.
Just get a cheap ESP32 development board, flash WLED using the [web installer](https://install.wled.me/), and off you got.
I did that very often, and for small projects it's fine.
But for larger projects with multiple devices, you encounter some limitations:
Since WLED chain is open hardware, and it uses the open source WLED, you are free to build the device yourself.
Once the board has been manufactured, don't forget to [test it](./TESTING.md).
Then you can [flash WLED](./FLASHING.md) on it.
- you have to separately take care of the power supply: LED strips can draw a lot of current which the development board cannot handle
- remote control using ArtNet over WiFi can be problematic: WiFi routers don't all handle broadcast well, WiFi coverage is not always good, WiFi is jittery
- providing power to multiple device can be a pain: there is not always a power plug nearby
You can see the WLED logo on the board, but this is NOT AN OFFICIAL WLED BOARD.
There is not such thing as a WLED board, as WLED is just a firmware.
The logo is only there to show the board is intended to be used with WLED.
And I find the logo nice.
this project tries to solve these issues, and since I designed a board, provide even more features
alternatives
============
bus
---
Here a list of other similar LED controllers, but none come with integrated power supply, and each is missing at least another feature:
The first problem is WiFi:
With DMX, but no WLED:
- ESP32 operate on 2.4 GHz, a crowded spectrum
- ESP32 board with built-in antenna have poor reception
- WiFi router don't always handle broadcast well
- [SP201E](https://www.aliexpress.com/item/1005005064274434.html): cheap DMX512 LED strip controller
- [H807DMX](https://www.aliexpress.com/item/1005005293168050.html): compatible with most LED strips, and has RJ45 DMX512 input
This make the WiFi a poor interface to remotely control LEDs with multiple WLED (using ArtNet or similar) in a real-time manner (low latency and jitter).
With WLED, but with Ethernet for ArtNet instead of DMX:
The first solution would be to use Ethernet instead of WiFi.
This would keep the networking capability.
ESP32 supports this interface, and the [WT32-ETH01](https://www.seeedstudio.com/Ethernet-module-based-on-ESP32-series-WT32-ETH01-p-4736.html) makes it available.
But to connect multiple devices you need a Ethernet switch, and run wires from this switch to each device (e.g. is a star topology).
I wanted to be able to chain the devices, to increase the distance while reducing number of cables and their length.
You could use the [KSZ8863](https://www.microchip.com/en-us/product/KSZ8863) 3-port Ethernet PHY.
This can act as Ethernet interface for the ESP32, and built-in switch.
Now the boards can be chained.
There is already [schematic](https://github.com/espressif/esp-eth-drivers/tree/master/ksz8863) available, but the support still is in beta, and the implementation is complex are not inexpensive.
I also thought about CAN bus.
This is a very resilient bus, and the ESP32 has an interface for it.
But WLED does not support it yet, and the host would need a bridge for it.
Finally I arrived to RS-285.
It's another differential protocol, often used in the industry because resilient.
And the implementation in WLED is easy because it's just serial.
This is when I remembered that DMX512 also uses RS-485.
And DMX is the de facto standard in the lighting event world.
Thus, interfacing with it will be very easy and there is a lot of software support.
The limitation is that it supports only one universe of 512 channels, or 170 RGB LEDs.
A solution would be to control modes instead of individual LEDs.
intended use case
-----------------
The purpose is to provide a simple board able to control LEDs strips.
It should be better than general purpose development boards.
A built-in voltage converter allows driving an LED strip using regular external power supplies.
It is intended for small installations, not requiring more than 5 meters of LED strings per device.
This keeps the power supply small.
The board is not intended for large LED installation requiring a lot of power.
The board should be cheap enough to be a default choice when creating a small LED installation.
The goal is under 10€ per board.
This prevents me for using Ethernet network, since the PHY and magnetics are expensive (~ 3€).
It should not require a complex installation.
Something like a LAN requiring a permanent switch or router is already too much.
The board should be able to work on its own.
It should make it easy to create multi-device installations.
This is enabled by the chaining capability.
You can connect one device to another, and the job is done.
This single link provides power.
This allows using a single power supply for the whole installation, just connected to one device in the chain.
It should use cheap and common cable for the chain link, such as Ethernet cables.
It should accept common off the shelves power supplies, such as 12-24V 2-4A bricks.
The chain link should also allow synchronising the devices, without requiring a network connection.
Ideally it should also provide an interface to reliably remotely control them.
For that it uses the DMX512 protocol.
other
-----
Here a list of other similar LED controllers:
- [QuinLED-Dig-Quad](https://quinled.info/pre-assembled-quinled-dig-quad/): WLED compatible, but no DMX or built-it power supply for the LEDs
- [8 Port LED Distro](https://github.com/bobko69/8PortLEDDistro): similar to QuinLED-Dig-Quad, with Ethernet (not just an option), but same issues
- [QuinLED-Dig-Quad](https://quinled.info/pre-assembled-quinled-dig-quad/): Ethernet is optional
- [8 Port LED Distro](https://github.com/bobko69/8PortLEDDistro): similar to QuinLED-Dig-Quad, with Ethernet not just as option
- [QuinLED-Dig-Octa System](https://quinled.info/quinled-dig-octa/): similar to 8 Port LED Distro, just beefier
- [SP201E](aliexpress.com/item/1005005061637017.html): cheap DMX512 LED strip controller, but no WLED, RJ45, or power supply
- [H807DMX](https://www.aliexpress.com/item/1005005293168050.html): compatible with most LED strips, and has RJ45 DMX512 input, but no WLED or power supply
With WLED, but without DMX:
- [GLEDOPTO](https://www.gledopto.com/h-col-438.html): poor transistor based level shifter, does drown out at 5V ([analysis](https://www.youtube.com/watch?v=I4psXhLCSxY), around 1:40)
- [athom](https://www.athom.tech/blank-1/wled-esp32-music-addressable-led-strip-controller): level shifter input issue ([analysis](https://www.youtube.com/watch?v=I4psXhLCSxY), around 2:40)
- [A1-SLWF-03](https://smlight.tech/product/slwf-03/): poor antenna design (surrounded by copper), and dangerous transistor based level shifter to input voltage ([analysis](https://www.youtube.com/watch?v=I4psXhLCSxY), around 3:30)
- [SP511E](https://github.com/scottrbailey/WLED-Utils/blob/gh-pages/sp511e_wled.md): ESP8266-based board, transistor-based level lifter, 5-24V capable. The two output share the same data pins. It's a pretty limited device, but it is very cheap, and just to drive or test LED strips, it does an OK job.

112
TESTING.md Normal file
View File

@ -0,0 +1,112 @@
You got the WLED chain board manufactured.
It is now time to test if the hardware has been assembled correctly.
shorts
======
Use a multimeter in resistance mode set to the 200 kOhm range
Test the 6-60V power input for shorts:
- use a multimeter in resistance mode
- put the COM lead on the 6-60V screw terminal + terminal
- put the V lead on the 6-60V screw terminal - terminal
- the multimeter should read O.L
- put the COM lead on the 6-60V screw terminal + terminal
- put the V lead on the 6-60V screw terminal - terminal
- the multimeter should a fluctuation resistance above 100 kOhm
Test the 5V power port for shorts:
- use a multimeter in resistance mode
- put the COM lead on the 5V screw terminal + terminal
- put the V lead on the 5V screw terminal - terminal
- the multimeter should rapidly go down to 1 kOhm and increase
- put the COM lead on the 5V screw terminal + terminal
- put the V lead on the 5V screw terminal - terminal
- the multimeter should rapidly go down to 1 kOhm and increase
Test the 3.3V rail for shorts:
- use a multimeter in resistance mode
- put the COM lead on the I/O header 3V pin
- put the V lead on the I/O header 0V pin
- the multimeter should read increasing above 15 kOhm
- put the COM lead on the I/O header 0V pin
- put the V lead on the I/O header 3V pin
- the multimeter should read increasing above 15 kOhm
power
=====
Use a multimeter in voltage mode set to the 20 V range.
Test the 3.3V voltage regulator:
- connect a power supply set to 5V and limited to 0.2 A on the 5V screw terminal
- the rightmost green LED should be on
- the board should draw around 0.1A
- ensure 3.3 V are present on the I/O header 3V/0V pins
Test the USB power input:
- plug a USB cable connected to a USB port supply on the USB-C port
- the rightmost green LED should be on
- the board should draw around 0.1A
- ensure 3.30 V are present on the I/O header 3V/0V pins
Test the 5V voltage regulator:
- connect a power supply set to 6V and limited to 0.3 A (must be more than 0.2 A) on the 6-60V screw terminal
- the rightmost green and second rightmost yellow LEDs should be on
- the board should draw around 0.1A
- ensure 5.03 V are present on the 5V screw terminal
Test resettable 1.8A input fuse:
- connect a power supply set to 7V and limited to 3A on the 6-60V screw terminal
- the rightmost green and second rightmost yellow LEDs should be on
- connect a 1 Ohm resistor across the 5V screw terminal
- after 10 to 20 seconds, the green light should turn off while the yellow light remains
- remove the resistor from the 5V screw terminal
- after a second, the green light should turns back on
MCU
===
To test the MCU I use a hand made jig with following connections:
- 4 mounting screws to hole the board when tilted
- few components soldered:
- USB port
- USB to serial chip
- 3.3V regulator
- pogo pins on the debug header
- pogo pins on the DOUT push terminal pins
- 3 WS2812B LEDs, each connected to a DOUT
<img src="pictures/v5_testjig.jpg" height="250"/>
I also have a DMX output with DMX to Ethernet adaptor board.
QLC+ should output 255 on channel 3, 0 on all others.
Test test the MCU:
- put board on jig, and tilt it so it lock on the screws
- run flashing script, and ensure it completes
- the WLED LED should blink every 2 seconds
- the 3 WS2812b LED should go through a rainbow pattern
- plug the DMX Ethernet cable
- only the first LED should light blue
- if all tests passed, put a QC PASSED test sticker on it
limitation
==========
Not tested are the following features:
- button
- microphone
- I/O pins
- spring terminals
- Ethernet powering

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,199 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('Simplified model for SOT95P270X130-5N'),'2;1');
FILE_NAME('SOT95P270X130-5N','1970-01-01T00:00:00.00',(''),(''),
'QEDA','QEDA','Unknown');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2000,#2);
#2 = APPLICATION_CONTEXT(
'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('SOT95P270X130-5N','SOT95P270X130-5N','',(#8));
#8 = PRODUCT_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#165);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.,0.,0.));
#13 = DIRECTION('',(0.,0.,1.));
#14 = DIRECTION('',(1.,0.,-0.));
#15 = MANIFOLD_SOLID_BREP('',#16);
#16 = CLOSED_SHELL('',(#17,#57,#97,#119,#141,#153));
#17 = ADVANCED_FACE('',(#18),#52,.F.);
#18 = FACE_BOUND('',#19,.F.);
#19 = EDGE_LOOP('',(#20,#30,#38,#46));
#20 = ORIENTED_EDGE('',*,*,#21,.F.);
#21 = EDGE_CURVE('',#22,#24,#26,.T.);
#22 = VERTEX_POINT('',#23);
#23 = CARTESIAN_POINT('',(0.,0.,0.));
#24 = VERTEX_POINT('',#25);
#25 = CARTESIAN_POINT('',(0.,0.,1.3));
#26 = LINE('',#27,#28);
#27 = CARTESIAN_POINT('',(0.,0.,0.));
#28 = VECTOR('',#29,1.);
#29 = DIRECTION('',(0.,0.,1.));
#30 = ORIENTED_EDGE('',*,*,#31,.T.);
#31 = EDGE_CURVE('',#22,#32,#34,.T.);
#32 = VERTEX_POINT('',#33);
#33 = CARTESIAN_POINT('',(0.,2.9,0.));
#34 = LINE('',#35,#36);
#35 = CARTESIAN_POINT('',(0.,0.,0.));
#36 = VECTOR('',#37,1.);
#37 = DIRECTION('',(-0.,1.,0.));
#38 = ORIENTED_EDGE('',*,*,#39,.T.);
#39 = EDGE_CURVE('',#32,#40,#42,.T.);
#40 = VERTEX_POINT('',#41);
#41 = CARTESIAN_POINT('',(0.,2.9,1.3));
#42 = LINE('',#43,#44);
#43 = CARTESIAN_POINT('',(0.,2.9,0.));
#44 = VECTOR('',#45,1.);
#45 = DIRECTION('',(0.,0.,1.));
#46 = ORIENTED_EDGE('',*,*,#47,.F.);
#47 = EDGE_CURVE('',#24,#40,#48,.T.);
#48 = LINE('',#49,#50);
#49 = CARTESIAN_POINT('',(0.,0.,1.3));
#50 = VECTOR('',#51,1.);
#51 = DIRECTION('',(-0.,1.,0.));
#52 = PLANE('',#53);
#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);
#54 = CARTESIAN_POINT('',(0.,0.,0.));
#55 = DIRECTION('',(1.,0.,-0.));
#56 = DIRECTION('',(0.,0.,1.));
#57 = ADVANCED_FACE('',(#58),#92,.T.);
#58 = FACE_BOUND('',#59,.T.);
#59 = EDGE_LOOP('',(#60,#70,#78,#86));
#60 = ORIENTED_EDGE('',*,*,#61,.F.);
#61 = EDGE_CURVE('',#62,#64,#66,.T.);
#62 = VERTEX_POINT('',#63);
#63 = CARTESIAN_POINT('',(1.55,0.,0.));
#64 = VERTEX_POINT('',#65);
#65 = CARTESIAN_POINT('',(1.55,0.,1.3));
#66 = LINE('',#67,#68);
#67 = CARTESIAN_POINT('',(1.55,0.,0.));
#68 = VECTOR('',#69,1.);
#69 = DIRECTION('',(0.,0.,1.));
#70 = ORIENTED_EDGE('',*,*,#71,.T.);
#71 = EDGE_CURVE('',#62,#72,#74,.T.);
#72 = VERTEX_POINT('',#73);
#73 = CARTESIAN_POINT('',(1.55,2.9,0.));
#74 = LINE('',#75,#76);
#75 = CARTESIAN_POINT('',(1.55,0.,0.));
#76 = VECTOR('',#77,1.);
#77 = DIRECTION('',(-0.,1.,0.));
#78 = ORIENTED_EDGE('',*,*,#79,.T.);
#79 = EDGE_CURVE('',#72,#80,#82,.T.);
#80 = VERTEX_POINT('',#81);
#81 = CARTESIAN_POINT('',(1.55,2.9,1.3));
#82 = LINE('',#83,#84);
#83 = CARTESIAN_POINT('',(1.55,2.9,0.));
#84 = VECTOR('',#85,1.);
#85 = DIRECTION('',(0.,0.,1.));
#86 = ORIENTED_EDGE('',*,*,#87,.F.);
#87 = EDGE_CURVE('',#64,#80,#88,.T.);
#88 = LINE('',#89,#90);
#89 = CARTESIAN_POINT('',(1.55,0.,1.3));
#90 = VECTOR('',#91,1.);
#91 = DIRECTION('',(-0.,1.,0.));
#92 = PLANE('',#93);
#93 = AXIS2_PLACEMENT_3D('',#94,#95,#96);
#94 = CARTESIAN_POINT('',(1.55,0.,0.));
#95 = DIRECTION('',(1.,0.,-0.));
#96 = DIRECTION('',(0.,0.,1.));
#97 = ADVANCED_FACE('',(#98),#114,.F.);
#98 = FACE_BOUND('',#99,.F.);
#99 = EDGE_LOOP('',(#100,#106,#107,#113));
#100 = ORIENTED_EDGE('',*,*,#101,.F.);
#101 = EDGE_CURVE('',#22,#62,#102,.T.);
#102 = LINE('',#103,#104);
#103 = CARTESIAN_POINT('',(0.,0.,0.));
#104 = VECTOR('',#105,1.);
#105 = DIRECTION('',(1.,0.,-0.));
#106 = ORIENTED_EDGE('',*,*,#21,.T.);
#107 = ORIENTED_EDGE('',*,*,#108,.T.);
#108 = EDGE_CURVE('',#24,#64,#109,.T.);
#109 = LINE('',#110,#111);
#110 = CARTESIAN_POINT('',(0.,0.,1.3));
#111 = VECTOR('',#112,1.);
#112 = DIRECTION('',(1.,0.,-0.));
#113 = ORIENTED_EDGE('',*,*,#61,.F.);
#114 = PLANE('',#115);
#115 = AXIS2_PLACEMENT_3D('',#116,#117,#118);
#116 = CARTESIAN_POINT('',(0.,0.,0.));
#117 = DIRECTION('',(-0.,1.,0.));
#118 = DIRECTION('',(0.,0.,1.));
#119 = ADVANCED_FACE('',(#120),#136,.T.);
#120 = FACE_BOUND('',#121,.T.);
#121 = EDGE_LOOP('',(#122,#128,#129,#135));
#122 = ORIENTED_EDGE('',*,*,#123,.F.);
#123 = EDGE_CURVE('',#32,#72,#124,.T.);
#124 = LINE('',#125,#126);
#125 = CARTESIAN_POINT('',(0.,2.9,0.));
#126 = VECTOR('',#127,1.);
#127 = DIRECTION('',(1.,0.,-0.));
#128 = ORIENTED_EDGE('',*,*,#39,.T.);
#129 = ORIENTED_EDGE('',*,*,#130,.T.);
#130 = EDGE_CURVE('',#40,#80,#131,.T.);
#131 = LINE('',#132,#133);
#132 = CARTESIAN_POINT('',(0.,2.9,1.3));
#133 = VECTOR('',#134,1.);
#134 = DIRECTION('',(1.,0.,-0.));
#135 = ORIENTED_EDGE('',*,*,#79,.F.);
#136 = PLANE('',#137);
#137 = AXIS2_PLACEMENT_3D('',#138,#139,#140);
#138 = CARTESIAN_POINT('',(0.,2.9,0.));
#139 = DIRECTION('',(-0.,1.,0.));
#140 = DIRECTION('',(0.,0.,1.));
#141 = ADVANCED_FACE('',(#142),#148,.F.);
#142 = FACE_BOUND('',#143,.F.);
#143 = EDGE_LOOP('',(#144,#145,#146,#147));
#144 = ORIENTED_EDGE('',*,*,#31,.F.);
#145 = ORIENTED_EDGE('',*,*,#101,.T.);
#146 = ORIENTED_EDGE('',*,*,#71,.T.);
#147 = ORIENTED_EDGE('',*,*,#123,.F.);
#148 = PLANE('',#149);
#149 = AXIS2_PLACEMENT_3D('',#150,#151,#152);
#150 = CARTESIAN_POINT('',(0.,0.,0.));
#151 = DIRECTION('',(0.,0.,1.));
#152 = DIRECTION('',(1.,0.,-0.));
#153 = ADVANCED_FACE('',(#154),#160,.T.);
#154 = FACE_BOUND('',#155,.T.);
#155 = EDGE_LOOP('',(#156,#157,#158,#159));
#156 = ORIENTED_EDGE('',*,*,#47,.F.);
#157 = ORIENTED_EDGE('',*,*,#108,.T.);
#158 = ORIENTED_EDGE('',*,*,#87,.T.);
#159 = ORIENTED_EDGE('',*,*,#130,.F.);
#160 = PLANE('',#161);
#161 = AXIS2_PLACEMENT_3D('',#162,#163,#164);
#162 = CARTESIAN_POINT('',(0.,0.,1.3));
#163 = DIRECTION('',(0.,0.,1.));
#164 = DIRECTION('',(1.,0.,-0.));
#165 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#169)) GLOBAL_UNIT_ASSIGNED_CONTEXT
((#166,#167,#168)) REPRESENTATION_CONTEXT('Context #1',
'3D Context with UNIT and UNCERTAINTY') );
#166 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#167 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#168 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#169 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#166,
'distance_accuracy_value','confusion accuracy');
#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
#171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172)
,#165);
#172 = STYLED_ITEM('color',(#173),#15);
#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#180));
#174 = SURFACE_STYLE_USAGE(.BOTH.,#175);
#175 = SURFACE_SIDE_STYLE('',(#176));
#176 = SURFACE_STYLE_FILL_AREA(#177);
#177 = FILL_AREA_STYLE('',(#178));
#178 = FILL_AREA_STYLE_COLOUR('',#179);
#179 = COLOUR_RGB('',0.23,0.23,0.23);
#180 = CURVE_STYLE('',#181,POSITIVE_LENGTH_MEASURE(0.1),#182);
#181 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#182 = DRAUGHTING_PRE_DEFINED_COLOUR('black');
ENDSEC;
END-ISO-10303-21;

View File

@ -0,0 +1,199 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('Simplified model for SOT95P285X130-5N'),'2;1');
FILE_NAME('SOT95P285X130-5N','1970-01-01T00:00:00.00',(''),(''),
'QEDA','QEDA','Unknown');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2000,#2);
#2 = APPLICATION_CONTEXT(
'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('SOT95P285X130-5N','SOT95P285X130-5N','',(#8));
#8 = PRODUCT_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#165);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.,0.,0.));
#13 = DIRECTION('',(0.,0.,1.));
#14 = DIRECTION('',(1.,0.,-0.));
#15 = MANIFOLD_SOLID_BREP('',#16);
#16 = CLOSED_SHELL('',(#17,#57,#97,#119,#141,#153));
#17 = ADVANCED_FACE('',(#18),#52,.F.);
#18 = FACE_BOUND('',#19,.F.);
#19 = EDGE_LOOP('',(#20,#30,#38,#46));
#20 = ORIENTED_EDGE('',*,*,#21,.F.);
#21 = EDGE_CURVE('',#22,#24,#26,.T.);
#22 = VERTEX_POINT('',#23);
#23 = CARTESIAN_POINT('',(0.,0.,0.));
#24 = VERTEX_POINT('',#25);
#25 = CARTESIAN_POINT('',(0.,0.,1.3));
#26 = LINE('',#27,#28);
#27 = CARTESIAN_POINT('',(0.,0.,0.));
#28 = VECTOR('',#29,1.);
#29 = DIRECTION('',(0.,0.,1.));
#30 = ORIENTED_EDGE('',*,*,#31,.T.);
#31 = EDGE_CURVE('',#22,#32,#34,.T.);
#32 = VERTEX_POINT('',#33);
#33 = CARTESIAN_POINT('',(0.,3.,0.));
#34 = LINE('',#35,#36);
#35 = CARTESIAN_POINT('',(0.,0.,0.));
#36 = VECTOR('',#37,1.);
#37 = DIRECTION('',(-0.,1.,0.));
#38 = ORIENTED_EDGE('',*,*,#39,.T.);
#39 = EDGE_CURVE('',#32,#40,#42,.T.);
#40 = VERTEX_POINT('',#41);
#41 = CARTESIAN_POINT('',(0.,3.,1.3));
#42 = LINE('',#43,#44);
#43 = CARTESIAN_POINT('',(0.,3.,0.));
#44 = VECTOR('',#45,1.);
#45 = DIRECTION('',(0.,0.,1.));
#46 = ORIENTED_EDGE('',*,*,#47,.F.);
#47 = EDGE_CURVE('',#24,#40,#48,.T.);
#48 = LINE('',#49,#50);
#49 = CARTESIAN_POINT('',(0.,0.,1.3));
#50 = VECTOR('',#51,1.);
#51 = DIRECTION('',(-0.,1.,0.));
#52 = PLANE('',#53);
#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);
#54 = CARTESIAN_POINT('',(0.,0.,0.));
#55 = DIRECTION('',(1.,0.,-0.));
#56 = DIRECTION('',(0.,0.,1.));
#57 = ADVANCED_FACE('',(#58),#92,.T.);
#58 = FACE_BOUND('',#59,.T.);
#59 = EDGE_LOOP('',(#60,#70,#78,#86));
#60 = ORIENTED_EDGE('',*,*,#61,.F.);
#61 = EDGE_CURVE('',#62,#64,#66,.T.);
#62 = VERTEX_POINT('',#63);
#63 = CARTESIAN_POINT('',(1.6,0.,0.));
#64 = VERTEX_POINT('',#65);
#65 = CARTESIAN_POINT('',(1.6,0.,1.3));
#66 = LINE('',#67,#68);
#67 = CARTESIAN_POINT('',(1.6,0.,0.));
#68 = VECTOR('',#69,1.);
#69 = DIRECTION('',(0.,0.,1.));
#70 = ORIENTED_EDGE('',*,*,#71,.T.);
#71 = EDGE_CURVE('',#62,#72,#74,.T.);
#72 = VERTEX_POINT('',#73);
#73 = CARTESIAN_POINT('',(1.6,3.,0.));
#74 = LINE('',#75,#76);
#75 = CARTESIAN_POINT('',(1.6,0.,0.));
#76 = VECTOR('',#77,1.);
#77 = DIRECTION('',(-0.,1.,0.));
#78 = ORIENTED_EDGE('',*,*,#79,.T.);
#79 = EDGE_CURVE('',#72,#80,#82,.T.);
#80 = VERTEX_POINT('',#81);
#81 = CARTESIAN_POINT('',(1.6,3.,1.3));
#82 = LINE('',#83,#84);
#83 = CARTESIAN_POINT('',(1.6,3.,0.));
#84 = VECTOR('',#85,1.);
#85 = DIRECTION('',(0.,0.,1.));
#86 = ORIENTED_EDGE('',*,*,#87,.F.);
#87 = EDGE_CURVE('',#64,#80,#88,.T.);
#88 = LINE('',#89,#90);
#89 = CARTESIAN_POINT('',(1.6,0.,1.3));
#90 = VECTOR('',#91,1.);
#91 = DIRECTION('',(-0.,1.,0.));
#92 = PLANE('',#93);
#93 = AXIS2_PLACEMENT_3D('',#94,#95,#96);
#94 = CARTESIAN_POINT('',(1.6,0.,0.));
#95 = DIRECTION('',(1.,0.,-0.));
#96 = DIRECTION('',(0.,0.,1.));
#97 = ADVANCED_FACE('',(#98),#114,.F.);
#98 = FACE_BOUND('',#99,.F.);
#99 = EDGE_LOOP('',(#100,#106,#107,#113));
#100 = ORIENTED_EDGE('',*,*,#101,.F.);
#101 = EDGE_CURVE('',#22,#62,#102,.T.);
#102 = LINE('',#103,#104);
#103 = CARTESIAN_POINT('',(0.,0.,0.));
#104 = VECTOR('',#105,1.);
#105 = DIRECTION('',(1.,0.,-0.));
#106 = ORIENTED_EDGE('',*,*,#21,.T.);
#107 = ORIENTED_EDGE('',*,*,#108,.T.);
#108 = EDGE_CURVE('',#24,#64,#109,.T.);
#109 = LINE('',#110,#111);
#110 = CARTESIAN_POINT('',(0.,0.,1.3));
#111 = VECTOR('',#112,1.);
#112 = DIRECTION('',(1.,0.,-0.));
#113 = ORIENTED_EDGE('',*,*,#61,.F.);
#114 = PLANE('',#115);
#115 = AXIS2_PLACEMENT_3D('',#116,#117,#118);
#116 = CARTESIAN_POINT('',(0.,0.,0.));
#117 = DIRECTION('',(-0.,1.,0.));
#118 = DIRECTION('',(0.,0.,1.));
#119 = ADVANCED_FACE('',(#120),#136,.T.);
#120 = FACE_BOUND('',#121,.T.);
#121 = EDGE_LOOP('',(#122,#128,#129,#135));
#122 = ORIENTED_EDGE('',*,*,#123,.F.);
#123 = EDGE_CURVE('',#32,#72,#124,.T.);
#124 = LINE('',#125,#126);
#125 = CARTESIAN_POINT('',(0.,3.,0.));
#126 = VECTOR('',#127,1.);
#127 = DIRECTION('',(1.,0.,-0.));
#128 = ORIENTED_EDGE('',*,*,#39,.T.);
#129 = ORIENTED_EDGE('',*,*,#130,.T.);
#130 = EDGE_CURVE('',#40,#80,#131,.T.);
#131 = LINE('',#132,#133);
#132 = CARTESIAN_POINT('',(0.,3.,1.3));
#133 = VECTOR('',#134,1.);
#134 = DIRECTION('',(1.,0.,-0.));
#135 = ORIENTED_EDGE('',*,*,#79,.F.);
#136 = PLANE('',#137);
#137 = AXIS2_PLACEMENT_3D('',#138,#139,#140);
#138 = CARTESIAN_POINT('',(0.,3.,0.));
#139 = DIRECTION('',(-0.,1.,0.));
#140 = DIRECTION('',(0.,0.,1.));
#141 = ADVANCED_FACE('',(#142),#148,.F.);
#142 = FACE_BOUND('',#143,.F.);
#143 = EDGE_LOOP('',(#144,#145,#146,#147));
#144 = ORIENTED_EDGE('',*,*,#31,.F.);
#145 = ORIENTED_EDGE('',*,*,#101,.T.);
#146 = ORIENTED_EDGE('',*,*,#71,.T.);
#147 = ORIENTED_EDGE('',*,*,#123,.F.);
#148 = PLANE('',#149);
#149 = AXIS2_PLACEMENT_3D('',#150,#151,#152);
#150 = CARTESIAN_POINT('',(0.,0.,0.));
#151 = DIRECTION('',(0.,0.,1.));
#152 = DIRECTION('',(1.,0.,-0.));
#153 = ADVANCED_FACE('',(#154),#160,.T.);
#154 = FACE_BOUND('',#155,.T.);
#155 = EDGE_LOOP('',(#156,#157,#158,#159));
#156 = ORIENTED_EDGE('',*,*,#47,.F.);
#157 = ORIENTED_EDGE('',*,*,#108,.T.);
#158 = ORIENTED_EDGE('',*,*,#87,.T.);
#159 = ORIENTED_EDGE('',*,*,#130,.F.);
#160 = PLANE('',#161);
#161 = AXIS2_PLACEMENT_3D('',#162,#163,#164);
#162 = CARTESIAN_POINT('',(0.,0.,1.3));
#163 = DIRECTION('',(0.,0.,1.));
#164 = DIRECTION('',(1.,0.,-0.));
#165 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#169)) GLOBAL_UNIT_ASSIGNED_CONTEXT
((#166,#167,#168)) REPRESENTATION_CONTEXT('Context #1',
'3D Context with UNIT and UNCERTAINTY') );
#166 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#167 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#168 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#169 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#166,
'distance_accuracy_value','confusion accuracy');
#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
#171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172)
,#165);
#172 = STYLED_ITEM('color',(#173),#15);
#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#180));
#174 = SURFACE_STYLE_USAGE(.BOTH.,#175);
#175 = SURFACE_SIDE_STYLE('',(#176));
#176 = SURFACE_STYLE_FILL_AREA(#177);
#177 = FILL_AREA_STYLE('',(#178));
#178 = FILL_AREA_STYLE_COLOUR('',#179);
#179 = COLOUR_RGB('',0.23,0.23,0.23);
#180 = CURVE_STYLE('',#181,POSITIVE_LENGTH_MEASURE(0.1),#182);
#181 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#182 = DRAUGHTING_PRE_DEFINED_COLOUR('black');
ENDSEC;
END-ISO-10303-21;

View File

@ -1465,4 +1465,179 @@
)
)
)
(symbol "TS-1187A" (in_bom yes) (on_board yes)
(property "Reference" "J" (at 6.350 0.762 0)
(effects (font (size 1.27 1.27)) (justify bottom))
)
(property "Value" "TS-1187A" (at 6.350 -8.382 0)
(effects (font (size 1.27 1.27)) (justify top))
)
(property "Footprint" "qeda:MECHANICAL_TS-1187A" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "https://www.helloxkb.com/public/images/pdf/TS-1187A-X-X-X.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "dual tactical momentary switch, SMD 5.1*5.1*1.5mm" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "TS-1187A_1_1"
(rectangle (start 0.000 0.000) (end 12.700 -7.620)
(stroke (width 0.305) (type default))
(fill (type background))
)
(pin passive line (at -5.080 -2.540 0) (length 5.080)
(name "A" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -5.080 -5.080 0) (length 5.080)
(name "B" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 17.780 -2.540 180) (length 5.080)
(name "C" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 17.780 -5.080 180) (length 5.080)
(name "D" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "MST22D18G2" (pin_names hide) (in_bom yes) (on_board yes)
(property "Reference" "SW" (at 3.810 0.762 0)
(effects (font (size 1.27 1.27)) (justify bottom))
)
(property "Value" "MST22D18G2" (at 3.810 -10.922 0)
(effects (font (size 1.27 1.27)) (justify top))
)
(property "Footprint" "qeda:MECHANICAL_MST22D18G2" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "https://datasheet.lcsc.com/lcsc/2110190930_SHOU-HAN-MST22D18G2-125_C2906280.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "switch, surface mount, slide, DPDT" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "MST22D18G2_1_1"
(rectangle (start 0.000 0.000) (end 7.620 -10.160)
(stroke (width 0.305) (type default))
(fill (type background))
)
(rectangle (start 2.794 -3.048) (end 4.826 -5.080)
(stroke (width 0.305) (type default))
(fill (type none))
)
(rectangle (start 2.794 -5.080) (end 4.826 -7.112)
(stroke (width 0.305) (type default))
(fill (type outline))
)
(pin passive line (at -5.080 -2.540 0) (length 5.080)
(name "1" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -5.080 -5.080 0) (length 5.080)
(name "2" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -5.080 -7.620 0) (length 5.080)
(name "3" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 12.700 -2.540 180) (length 5.080)
(name "4" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 12.700 -5.080 180) (length 5.080)
(name "5" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 12.700 -7.620 180) (length 5.080)
(name "6" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "74LVC1G17W5" (in_bom yes) (on_board yes)
(property "Reference" "U" (at 0.000 0.762 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "74LVC1G17W5" (at 7.112 -13.462 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(property "Footprint" "qeda:SOT95P285X130-5N" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "74LVC1G17" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "schmitt trigger, 1-input" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "74LVC1G17W5_1_1"
(rectangle (start 0.000 0.000) (end 11.430 -12.700)
(stroke (width 0.305) (type default))
(fill (type background))
)
(pin unspecified line (at -5.080 -6.350 0) (length 5.080)
(name "A" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin unspecified line (at 16.510 -6.350 180) (length 5.080)
(name "Y" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 6.350 5.080 270) (length 5.080)
(name "VCC" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 6.350 -17.780 90) (length 5.080)
(name "GND" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "ME6211" (in_bom yes) (on_board yes)
(property "Reference" "U" (at 7.620 0.762 0)
(effects (font (size 1.27 1.27)) (justify bottom))
)
(property "Value" "ME6211" (at 7.112 -12.192 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(property "Footprint" "qeda:SOT95P270X130-5N" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://aitendo3.sakura.ne.jp/aitendo_data/product_img/ic/LDO/ME6211/ME6211.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "low drop out voltage regulator" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_keywords" "IC, regulator" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "ME6211_1_1"
(rectangle (start 0.000 0.000) (end 15.240 -11.430)
(stroke (width 0.305) (type default))
(fill (type background))
)
(pin power_in line (at -5.080 -2.540 0) (length 5.080)
(name "VIN" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin unspecified line (at -5.080 -7.620 0) (length 5.080)
(name "CE" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin unspecified line (at 20.320 -5.080 180) (length 5.080)
(name "VOUT" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 6.350 -16.510 90) (length 5.080)
(name "GND" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
)
)
)

View File

@ -1,55 +1,55 @@
(module CONNECTOR_HC-RJ45-5JA-1-5 (layer F.Cu)
(pad 1 thru_hole circle (at 3.570 0.250) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(solder_mask_margin 0.001))
(pad 2 thru_hole circle (at 2.550 -1.530) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(solder_mask_margin 0.001))
(pad 3 thru_hole circle (at 1.530 0.250) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(solder_mask_margin 0.001))
(pad 4 thru_hole circle (at 0.510 -1.530) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(solder_mask_margin 0.001))
(pad 5 thru_hole circle (at -0.510 0.250) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(solder_mask_margin 0.001))
(pad 6 thru_hole circle (at -1.530 -1.530) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(solder_mask_margin 0.001))
(pad 7 thru_hole circle (at -2.550 0.250) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(solder_mask_margin 0.001))
(pad 8 thru_hole circle (at -3.570 -1.530) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(solder_mask_margin 0.001))
(pad 9 thru_hole circle (at 6.850 -6.400) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(pad 1 thru_hole circle (at 3.570 0.250) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad 10 thru_hole circle (at 4.570 -6.400) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(pad 2 thru_hole circle (at 2.550 -1.530) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad 11 thru_hole circle (at -4.570 -6.400) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(pad 3 thru_hole circle (at 1.530 0.250) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad 12 thru_hole circle (at -6.850 -6.400) (size 1.600 1.600) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.200)
(pad 4 thru_hole circle (at 0.510 -1.530) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad MH1 np_thru_hole circle (at 6.350 2.600) (size 3.200 3.200) (layers F.Mask B.Mask)
(drill 3.200)
(pad 5 thru_hole circle (at -0.510 0.250) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad MH2 np_thru_hole circle (at -6.350 2.600) (size 3.200 3.200) (layers F.Mask B.Mask)
(drill 3.200)
(pad 6 thru_hole circle (at -1.530 -1.530) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad 7 thru_hole circle (at -2.550 0.250) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad 8 thru_hole circle (at -3.570 -1.530) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad 9 thru_hole circle (at 6.850 -6.400) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad 10 thru_hole circle (at 4.570 -6.400) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad 11 thru_hole circle (at -4.570 -6.400) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad 12 thru_hole circle (at -6.850 -6.400) (size 1.400 1.400) (layers F.Cu F.Mask *.Cu B.Cu B.Mask)
(drill 1.000)
(solder_mask_margin 0.050))
(pad MH1 np_thru_hole circle (at 6.350 2.600) (size 3.000 3.000) (layers F.Mask B.Mask)
(drill 3.000)
(solder_mask_margin 0.050))
(pad MH2 np_thru_hole circle (at -6.350 2.600) (size 3.000 3.000) (layers F.Mask B.Mask)
(drill 3.000)
(solder_mask_margin 0.050))
(fp_text reference REF** (at 0.000 0.000) (layer F.SilkS)
(effects (font (size 1.200 1.200) (thickness 0.200)))
)
(fp_line (start -8.050 -7.700) (end 8.050 -7.700) (layer F.SilkS) (width 0.200))
(fp_line (start 8.050 -7.700) (end 8.050 0.700) (layer F.SilkS) (width 0.200))
(fp_line (start 8.050 4.500) (end 8.050 7.700) (layer F.SilkS) (width 0.200))
(fp_line (start 8.050 -7.700) (end 8.050 0.800) (layer F.SilkS) (width 0.200))
(fp_line (start 8.050 4.400) (end 8.050 7.700) (layer F.SilkS) (width 0.200))
(fp_line (start 8.050 7.700) (end -8.050 7.700) (layer F.SilkS) (width 0.200))
(fp_line (start -8.050 -7.700) (end -8.050 0.700) (layer F.SilkS) (width 0.200))
(fp_line (start -8.050 4.500) (end -8.050 7.700) (layer F.SilkS) (width 0.200))
(fp_line (start -8.050 -7.700) (end -8.050 0.800) (layer F.SilkS) (width 0.200))
(fp_line (start -8.050 4.400) (end -8.050 7.700) (layer F.SilkS) (width 0.200))
(fp_circle (center 0.000 0.000) (end 0.000 0.500) (layer F.Fab) (width 0.100))
(fp_line (start -0.700 0.000) (end 0.700 0.000) (layer F.Fab) (width 0.100))
(fp_line (start 0.000 -0.700) (end 0.000 0.700) (layer F.Fab) (width 0.100))

View File

@ -0,0 +1,38 @@
(module MECHANICAL_MST22D18G2 (layer F.Cu)
(attr smd)
(pad 1 smd rect (at -2.500 -3.000) (size 1.000 1.500) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.050))