# KicED

<img src="files/logo_colored.png" alt="" width="200"/>

Edwin and Kerem's KiCAD library.

## Procedure of restructuring KicED

1. Create structure which can be added as submoduse to any  KiCAD project.
2. Document the process of implementeing the submodule
3. Document the process of adding (contributing) a new part.

*sources for markdown: https://www.markdownguide.org/extended-syntax/*

## 1. How to use this library

This library can be used in two different ways. It can be used in a central position (centralized) or as part of the project (git submodule).

### 1.1 Linking the library to your KiCad Project

The KicED library is intended to be linked relative to your KiCad project. This means, that you will not have absolute library links which are highly specific to each user. This can create problems when collaborating together. The KicED tools allows you to avoid this problem and work wherever you want in your directory. The only thing which must be defined in your project is the location of KicED relative to the KiCad project you are working on. This is all done by using the [KiCad environment variable](https://docs.kicad.org/7.0/en/kicad/kicad.html#kicad-environment-variables) ```${KIPRJMOD}\<...>```.
#### 1.1.1 As Git Submodule

Go to the desired directory where you want to place the library inside your project. There you add KicED as submodule with the following comand.

```console
git submodule add https://git.keydev.me/Kerem/KicED
```

Then go into the folder ```KicED\project_init_tool```. In this folder execute the KicED library linker tool by executing the follwing command.

```console
python KicED_libLinker.py
```
There follow the instructions given by the tool. Once completed successfully there should be the files ```fp-lib-table``` and ```sym-lib-table```created besides your KiCad ```*.kicad_pro``` project file. These files will be recognized by KiCad as project specific libraries and contain all the relative linkages to the KicED library.

Then open your KiCAD project and go to ```Preferences```in the top left corner and select ```Manage Symbol Libraries...```. 

**TODO: explain how to incorperate library into KiCAD project**

You will need to add the relative KicED paths with respect to your KiCAD project by using the environment variable ```${KIPRJMOD}\<...>```


*source*
- *https://git-scm.com/book/en/v2/Git-Tools-Submodules*
- *https://www.educative.io/answers/how-to-specify-a-branch-tag-when-adding-a-git-submodule*-
- *https://www.youtube.com/watch?v=lnCvyGIQong*

#### 1.1.2 As a centralized library

### 1.2 Updating Library

#### 1.2.1 For Git Submodule

#### 1.2.2 For centralized

# Ideas

## Automated git pull on Pc Stratup (Winwods and Linux).

> We can maybe write a script for both of them

## Ways of using this library

## Contribution Guidelines

base it on Kicad -> https://klc.kicad.org/

### Centralized (deztached from the KiCAD Project)

Library is plced at a centralized point. Best place is the besides the KiCAD projects. This saves data redundancy when working on multiple KiCAD projects.

### De-centralized (implemented as submodule)

Better tracking of version.Project is added as submodule to the version controlled KiCAD project.

## Auto KiCAD project specific library linking script with python

this script should modfy the specific KiCAD project specific library settings. It hould referenc all paths with the shortcut ```${KIPRJMOD}\<...>```

For symbols add to or create sym-lib-table file.

## 2. Library Structure

- **0 = Passive**
	- 0 = Resistor
		- 0 = SMD
		- 1 = THT
		- 2 = Array
		- 3 = Mechanical
		- 4 = Special
	- *1 = Capacitor*
		- 0 = SMD
		- 1 = THT
		- 2 = Array
		- 3 = Mechanical
		- 4 = Special
	- 2 = Inductors
		- 0 = SMD
		- 1 = THT
		- 2 = Array
		- 3 = Mechanical
		- 4 = Special
	- 4 = Oscillators
		- 0 = Crystal
		- 1 = Oscillator
		- 2 = Resonator
		- 3 = Voltage Controlled
	- 5 = Potentiometer
		- 0 = Adjutable
		- 1 = Rotary
		- 3 = Scale
		- 4 = Slide
		- 5 = Trimmer
		- 6 = Digital
	- 6 = Antenna
		- 0 = Bluetooth
		- 1 = Wifi
		- 2 = Sub-giga
		- 3 = giga
		- 4 = Propritary
		- 5 = GSM/GPS
		- 7 = RF

- **1 = Active**
	- 0 = Transistor
		- 0 = Bipolar
		- 1 = FET
		- 2 = IGBT
		- 3 = TRIAC
		- 4 = SiC
		- 5 = GaN
	- 1 = Diodes
		- 0 = Rectifier
		- 1 = Zener
		- 2 = RF
		- 3 = Bridge
		- 4 = UF
		- 5 = Variable Capacitance
		- 6 = Photodiodes
		- 7 = Solar
	- 2 = Power
		- 0 = Transitor
		- 1 = Diodes
	- 3 = Module
		- 0 = Half Bridge
		- 1 = Full Bridge
		- 2 = Six packs
	- 4 = Opto
	- 5 = Solid state relay
	- 6 = LED
	- 7 = Opto
	- 8 = Driver
		- 0 = Relay
	- 9 = Switch
		- 0 = High Side Switches

- **2 = Linear**
	- 0 = Op-amp
	- 1 = amplifier
	- 2 = Fuse
	- 3 = Switches
	- 5 = Supervisor
	- 6 = Protection
	- 7 = Power
	- 8 = Special

- **3 = Power**
	- 0 = LDO
		- 0 = Standart
		- 1 = Low Noise
		- 2 = Ultra Low Noise
	- 1 = SMPS
		- 0 = Buck
		- 1 = Boost
		- 2 = Buckboost
		- 3 = Multiple
		- 4 = PMIC
	- 2 = Voltage Reference
	- 3 = led Driver
	- 4 = Gate Driver
	- 5 = Motor Driver
		- 0 = DC
	- 6 = ACDC
		- 0 = module
	- 7 = DCDC
		- 0 = module
	- 8 = Protection
        - 0 = Ideal Diode

- **4 = Digital**
	- 0 = MCU
		- 0 = 8 Bit
		- 1 = 16 Bit
		- 2 = 32 Bit
		- 0 = Microchip
			- 1 = ST
			- 2 = Ti
			- 3 = Toshiba
			- 4 = Cypress
			- 5 = Infineon
			- 6 = Epson
		- 3 = 64 Bit
	- 1 = FPGA
	- 2 = DSP
	- 3 = ASIC
	- 4 = Audio
	- 5 = Serial
	- 6 = Clocks

- **5 = Logic**
	- 0 = Buffer
	- 1 = Comparator
	- 2 = Counter & Divider
	- 3 = FIFO
	- 4 = Flip Flop 
	- 5 = Gates
		- 0 = Inverter
		- 1 = AND
	- 6 = Latches
	- 7 = Shift
	- 8 = BUS
	- 9 = Special

- **6 = Memory**
	- 0 = EEPROM
	- 1 = NAND
	- 2 = EMMC
	- 3 = FLASH
	- 4 = SD 

- **7 = Sensors**
	- 0 = Enviroment
	- 1 = Temperature
		- 0 = Digital
		- 1 = Analogic
		- 2 = RTD
		- 3 = Thermistor
		- 4 = Thermocouple
	- 2 = MEMS
		- 0 = Accelerometer
		- 1 = Gyroscope
		- 2 = Pressure
		- 4 = X Dof
	- 3 = Light
	- 4 = Sound
	- 5 = Proximity
	- 6 = Hall
	- 7 = Current
	- 8 = Mechanical
	- 9 = Special

- **8 = Mechanical**
	- 0 = Relay
		- 0 = Monostable
		- 1 = Bistable
	- 1 = Connector
		- 0 = Cable to board
		- 1 = Board to board
		- 2 = Lab 
		- 3 = rectangular
		- 4 = Circular
		- 5 = Fiber / RJ
		- 6 = Terminal blocks
		- 7 = Serial
		- 8 = USB
		- 9 = Card Edge
	- 2 = Cooling
	- 3 = Fans
	- 4 = Cables
	- 5 = Mounting
	- 6 = Switches
	- 7 = Button
		- 0 = SMD
		- 1 = THT
	- 8 = Encoders

- **9 = Boards**
	- 0 = Wireless
	- 1 = Digital
	- 3 = Display
	- 4 = Sensor
	- 5 = Analogic
	- 6 = Power
	- 7 = Mehanical
	- 8 = Embedded
	- 9 = Special

- **10 = Electromechanics (these parts are excluded from board)**
	- 0 = Contactors
	- 1 = ACDC_Converters
	- 2 = Resistors
	- 3 = Capacitors
	- 4 = Inductors
	- 5 = Switches

## How to contribute
