Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
lifiTranceiver.h@30:75cb79acdcff, 2019-04-10 (annotated)
- Committer:
- JongYongPark
- Date:
- Wed Apr 10 09:29:39 2019 +0900
- Revision:
- 30:75cb79acdcff
- Parent:
- 23:45461af5efc5
- Parent:
- 26:26474003e443
- Child:
- 35:dcddce1fe126
Merge
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| JongYongPark | 11:8ffa8a36126f | 1 | #ifndef __LIFI_TRANCEIVER_HEADER__ |
| JongYongPark | 11:8ffa8a36126f | 2 | #define __LIFI_TRANCEIVER_HEADER__ |
| JongYongPark | 0:488aa8153e15 | 3 | |
| JongYongPark | 0:488aa8153e15 | 4 | /* |
| JongYongPark | 0:488aa8153e15 | 5 | LiFi Emitter and Receiver |
| JongYongPark | 0:488aa8153e15 | 6 | The purpose of this demos is to demonstrate data communication using a pair of blue LED (one led as emitter one led as receiver). |
| JongYongPark | 0:488aa8153e15 | 7 | Communication can go at up to 600bs (can depend on led quality) |
| JongYongPark | 0:488aa8153e15 | 8 | Receiver hardware : |
| JongYongPark | 0:488aa8153e15 | 9 | |----1Mohm-----| |
| JongYongPark | 0:488aa8153e15 | 10 | A3 ------|--- +led- ----|-------GND |
| JongYongPark | 0:488aa8153e15 | 11 | A byte is sent as follow : |
| JongYongPark | 0:488aa8153e15 | 12 | Start(0) 8bit data Stop(1), LSB first : 0 b0 b1 b2 b3 b4 b5 b6 b7 1 |
| JongYongPark | 0:488aa8153e15 | 13 | |
| JongYongPark | 0:488aa8153e15 | 14 | Each bit is coded in manchester with |
| JongYongPark | 0:488aa8153e15 | 15 | time is from left to right |
| JongYongPark | 0:488aa8153e15 | 16 | 0 -> 10 |
| JongYongPark | 0:488aa8153e15 | 17 | 1 -> 01 |
| JongYongPark | 0:488aa8153e15 | 18 | A data frame is formatted as follow : |
| JongYongPark | 0:488aa8153e15 | 19 | 0xAA : sent a number of time to help the receiver compute a signal average for the thresholding of analog values |
| JongYongPark | 0:488aa8153e15 | 20 | 0xD5 : synchronization byte to indicate start of a frame, breaks the regularity of the 0x55 pattern to be easily |
| JongYongPark | 0:488aa8153e15 | 21 | 0x02 : STX start of frame |
| JongYongPark | 0:488aa8153e15 | 22 | N times Effective data excluding command symbols, max length 32 bytes |
| JongYongPark | 0:488aa8153e15 | 23 | 0x03 : ETX end of frame |
| JongYongPark | 0:488aa8153e15 | 24 | */ |
| JongYongPark | 0:488aa8153e15 | 25 | |
| JongYongPark | 17:847e9b792c72 | 26 | #define USE_MIMO_4CH 1 // feature |
| JongYongPark | 26:26474003e443 | 27 | #define LIFI_ACTUAL_MAX_CHANNEL_NUM (4) // 1 -minumum 4 - full |
| JongYongPark | 17:847e9b792c72 | 28 | #define LIFI_ACTUAL_MAX_CHANNEL_NUM_INDEX (LIFI_ACTUAL_MAX_CHANNEL_NUM - 1) |
| JongYongPark | 17:847e9b792c72 | 29 | #define LIFI_PACKET_USE_LENGTH 1 |
| JongYongPark | 17:847e9b792c72 | 30 | |
| JongYongPark | 17:847e9b792c72 | 31 | |
| JongYongPark | 17:847e9b792c72 | 32 | //////////////// |
| JongYongPark | 0:488aa8153e15 | 33 | |
| JongYongPark | 26:26474003e443 | 34 | #define FRAME_BUFFER_SIZE (120) |
| JongYongPark | 26:26474003e443 | 35 | #define PDU_BUFFER_SIZE (100) |
| JongYongPark | 26:26474003e443 | 36 | #define NUM_TO_STRING_BUFFER_SIZE (100) |
| JongYongPark | 0:488aa8153e15 | 37 | |
| JongYongPark | 0:488aa8153e15 | 38 | // pjr mask out - because sensor is inverted |
| JongYongPark | 0:488aa8153e15 | 39 | //#define INT_REF /* Commen this to use AVCC reference voltage. To be used when the receiver LED generate low levels */ |
| JongYongPark | 0:488aa8153e15 | 40 | // solar panel에서는 adc 값을 작게 설정해야 충분하게 분석할 수 있다. |
| JongYongPark | 0:488aa8153e15 | 41 | #define LIFI_RX_EDGE_THRESHOLD 100 // 500mv //20 //100 - not works on 400us Sample Frequency // 16 ~ 934 [min 0 - max 1000] |
| JongYongPark | 0:488aa8153e15 | 42 | //#define LIFI_RX_EDGE_THRESHOLD 4 /* Defines the voltage difference between two samples to detect a rising/falling edge. Can be increased depensing on the environment */ |
| JongYongPark | 0:488aa8153e15 | 43 | |
| JongYongPark | 0:488aa8153e15 | 44 | ///////////////////////////////////// |
| JongYongPark | 0:488aa8153e15 | 45 | //#ifdef USE_SLOW_TXRX_DEMO |
| JongYongPark | 0:488aa8153e15 | 46 | //#define LIFI_RX_SYMBOL_PERIOD_US 10000 /* 10 ms = 0.01 sec */ |
| JongYongPark | 0:488aa8153e15 | 47 | //#else |
| JongYongPark | 0:488aa8153e15 | 48 | //static long LIFI_RX_SYMBOL_PERIOD_US = 500; |
| JongYongPark | 0:488aa8153e15 | 49 | // menchester OOK - 1 bit - 2 symbol |
| JongYongPark | 0:488aa8153e15 | 50 | // half bit - every 500us |
| JongYongPark | 0:488aa8153e15 | 51 | // bit - every 1000us (1ms) |
| JongYongPark | 0:488aa8153e15 | 52 | // bitrate - bit/sec = 1 bit /1 ms = 1000 bits / 1 sec = 1000 sps |
| JongYongPark | 0:488aa8153e15 | 53 | // symbol rate - sym / sec = 1 sym / 0.5 ms = 2000 bps |
| JongYongPark | 0:488aa8153e15 | 54 | // CPS (charector) = bitrate/ word_lenght = 1000 / 10 = 100 cps |
| JongYongPark | 0:488aa8153e15 | 55 | // PPS (packet) = CPS / (AAAAAA+SYNC+STX+DATA(n)+ETX = CPS /10 = 10 pps <= when sending 1 byte data. |
| JongYongPark | 0:488aa8153e15 | 56 | //#endif |
| JongYongPark | 0:488aa8153e15 | 57 | |
| JongYongPark | 0:488aa8153e15 | 58 | // menchester OOK - 1 bit - 2 symbol |
| JongYongPark | 0:488aa8153e15 | 59 | // half bit - every 500us |
| JongYongPark | 0:488aa8153e15 | 60 | // bit - every 1000us (1ms) |
| JongYongPark | 0:488aa8153e15 | 61 | // bitrate - bit/sec = 1 bit /1 ms = 1000 bits / 1 sec = 1000 sps |
| JongYongPark | 0:488aa8153e15 | 62 | // symbol rate - sym / sec = 1 sym / 0.5 ms = 2000 bps |
| JongYongPark | 0:488aa8153e15 | 63 | // CPS (charector) = bitrate/ word_lenght = 1000 / 10 = 100 cps |
| JongYongPark | 0:488aa8153e15 | 64 | // PPS (packet) = CPS / (AAAAAA+SYNC+STX+DATA(n)+ETX = CPS /10 = 10 pps <= when sending 1 byte data. |
| JongYongPark | 0:488aa8153e15 | 65 | //#endif |
| JongYongPark | 0:488aa8153e15 | 66 | |
| JongYongPark | 0:488aa8153e15 | 67 | |
| JongYongPark | 0:488aa8153e15 | 68 | // for Android Flash Camera |
| JongYongPark | 0:488aa8153e15 | 69 | //static long LIFI_RX_SYMBOL_PERIOD_US = 40000; |
| JongYongPark | 0:488aa8153e15 | 70 | // for Arduino LED |
| JongYongPark | 0:488aa8153e15 | 71 | //static long LIFI_RX_SYMBOL_PERIOD_US = 500; |
| JongYongPark | 0:488aa8153e15 | 72 | //#define LIFI_RX_SYMBOL_PERIOD_US 2000; |
| JongYongPark | 0:488aa8153e15 | 73 | // for direct fast test |
| JongYongPark | 0:488aa8153e15 | 74 | //static long LIFI_RX_SYMBOL_PERIOD_US = 50; |
| JongYongPark | 0:488aa8153e15 | 75 | |
| JongYongPark | 0:488aa8153e15 | 76 | //#define LIFI_RX_SYMBOL_PERIOD_US 2000; |
| JongYongPark | 0:488aa8153e15 | 77 | |
| JongYongPark | 0:488aa8153e15 | 78 | // 100ms |
| JongYongPark | 0:488aa8153e15 | 79 | //#define LIFI_RX_SYMBOL_PERIOD_US (100000) // solar : get sync but invalid data |
| JongYongPark | 0:488aa8153e15 | 80 | //#define LIFI_RX_SYMBOL_PERIOD_SEC (0.1) |
| JongYongPark | 0:488aa8153e15 | 81 | |
| JongYongPark | 2:e1fd30fce2f8 | 82 | // 10 ms = works 정상동작 <===================== PD : works / solar panel : works == send data failure - adject TX periode => fixed by LifiTx_IsBusy() - works well |
| JongYongPark | 2:e1fd30fce2f8 | 83 | //#define LIFI_RX_SYMBOL_PERIOD_US (10000) |
| JongYongPark | 2:e1fd30fce2f8 | 84 | //#define LIFI_RX_SYMBOL_PERIOD_SEC (0.01) |
| JongYongPark | 0:488aa8153e15 | 85 | |
| JongYongPark | 2:e1fd30fce2f8 | 86 | // 4 ms = works 정상동작 <======================== PD : works / solar panel : works well |
| JongYongPark | 3:ae1f53883bc0 | 87 | #define LIFI_RX_SYMBOL_PERIOD_US (4000) |
| JongYongPark | 3:ae1f53883bc0 | 88 | #define LIFI_RX_SYMBOL_PERIOD_SEC (0.004) |
| JongYongPark | 0:488aa8153e15 | 89 | |
| JongYongPark | 0:488aa8153e15 | 90 | // 2 ms = works 정상동작 <======================== PD : works / solar panel : works - sometimes get wrong data <==best |
| JongYongPark | 3:ae1f53883bc0 | 91 | // 손전등으로 바꾼후 거리가 멀어져서 잘 동작안함. - 이것은 아무래도 반사가 커서 상호영향을 미친것으로 보임, 가변저항을 돌려서 밝기를 약간 줄미연 잘 동작함. |
| JongYongPark | 3:ae1f53883bc0 | 92 | |
| JongYongPark | 3:ae1f53883bc0 | 93 | //efine LIFI_RX_SYMBOL_PERIOD_US (2000) |
| JongYongPark | 3:ae1f53883bc0 | 94 | //efine LIFI_RX_SYMBOL_PERIOD_SEC (0.002) |
| JongYongPark | 0:488aa8153e15 | 95 | // circuit |
| JongYongPark | 0:488aa8153e15 | 96 | // Solar ---- R 1M -- to mpu ADC ---- R 1M -- ---- R 1M -- GND |
| JongYongPark | 0:488aa8153e15 | 97 | // | |
| JongYongPark | 0:488aa8153e15 | 98 | // |------ C 100uf/50v ---- R 1M -- GND |
| JongYongPark | 0:488aa8153e15 | 99 | // 1M ohm |
| JongYongPark | 0:488aa8153e15 | 100 | // 0.1 uF 50 v = 반반 정도 |
| JongYongPark | 0:488aa8153e15 | 101 | // 100 uF 16 v = 모두 + |
| JongYongPark | 0:488aa8153e15 | 102 | // 100 uf 60 v = 반반 |
| JongYongPark | 0:488aa8153e15 | 103 | |
| JongYongPark | 0:488aa8153e15 | 104 | // 1 ms = works 정상동작 <======================== PD : works / solar panel : not works => signal broken |
| JongYongPark | 0:488aa8153e15 | 105 | //#define LIFI_RX_SYMBOL_PERIOD_US (1000) |
| JongYongPark | 0:488aa8153e15 | 106 | //#define LIFI_RX_SYMBOL_PERIOD_SEC (0.001) |
| JongYongPark | 0:488aa8153e15 | 107 | |
| JongYongPark | 0:488aa8153e15 | 108 | // 1 ms = works 정상동작 <======================== PD : not works => signal broken / solar panel : not works => signal broken |
| JongYongPark | 0:488aa8153e15 | 109 | // 400us = 동작하지 않는다. 오실로 스코프로 찍어보면 파형이 많이 깨진다. |
| JongYongPark | 0:488aa8153e15 | 110 | // 파형을 정제하는 부분이 필요하다. |
| JongYongPark | 0:488aa8153e15 | 111 | //#define LIFI_RX_SYMBOL_PERIOD_US (400) |
| JongYongPark | 0:488aa8153e15 | 112 | //#define LIFI_RX_SYMBOL_PERIOD_SEC (0.0004) |
| JongYongPark | 0:488aa8153e15 | 113 | |
| JongYongPark | 0:488aa8153e15 | 114 | |
| JongYongPark | 0:488aa8153e15 | 115 | // 100us = not works |
| JongYongPark | 0:488aa8153e15 | 116 | //#define LIFI_RX_SYMBOL_PERIOD_US (100) |
| JongYongPark | 0:488aa8153e15 | 117 | |
| JongYongPark | 0:488aa8153e15 | 118 | // 10ms |
| JongYongPark | 0:488aa8153e15 | 119 | //#define LIFI_RX_SYMBOL_PERIOD_US (10) |
| JongYongPark | 0:488aa8153e15 | 120 | |
| JongYongPark | 0:488aa8153e15 | 121 | |
| JongYongPark | 0:488aa8153e15 | 122 | |
| JongYongPark | 0:488aa8153e15 | 123 | // 1ms |
| JongYongPark | 0:488aa8153e15 | 124 | //#define LIFI_RX_SYMBOL_PERIOD_US (1000); |
| JongYongPark | 0:488aa8153e15 | 125 | //#define LIFI_RX_SYMBOL_PERIOD_SEC (0.0001) |
| JongYongPark | 0:488aa8153e15 | 126 | |
| JongYongPark | 0:488aa8153e15 | 127 | // 1ms |
| JongYongPark | 0:488aa8153e15 | 128 | //#define LIFI_RX_SYMBOL_PERIOD_US (1000); |
| JongYongPark | 0:488aa8153e15 | 129 | //#define LIFI_RX_SYMBOL_PERIOD_SEC (0.0001) |
| JongYongPark | 0:488aa8153e15 | 130 | |
| JongYongPark | 0:488aa8153e15 | 131 | |
| JongYongPark | 0:488aa8153e15 | 132 | |
| JongYongPark | 0:488aa8153e15 | 133 | #define LIFI_RX_SAMPLE_PER_SYMBOL (4) |
| JongYongPark | 0:488aa8153e15 | 134 | |
| JongYongPark | 0:488aa8153e15 | 135 | #define LIFI_RX_SYMBOL_SAMPLE_PERIOD_US ((LIFI_RX_SYMBOL_PERIOD_US / LIFI_RX_SAMPLE_PER_SYMBOL)) |
| JongYongPark | 0:488aa8153e15 | 136 | #define LIFI_RX_SYMBOL_SAMPLE_PERIOD_MS ((LIFI_RX_SYMBOL_PERIOD_MS / LIFI_RX_SAMPLE_PER_SYMBOL)) |
| JongYongPark | 0:488aa8153e15 | 137 | #define LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC ((LIFI_RX_SYMBOL_PERIOD_SEC / LIFI_RX_SAMPLE_PER_SYMBOL)) |
| JongYongPark | 0:488aa8153e15 | 138 | //#define LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC (LIFI_RX_SYMBOL_PERIOD_SEC>>2) |
| JongYongPark | 0:488aa8153e15 | 139 | |
| JongYongPark | 0:488aa8153e15 | 140 | #define LIFI_MIMO_CHANNEL_NUM (4) |
| JongYongPark | 0:488aa8153e15 | 141 | #define LIFI_MIMO_CHANNEL_NUM_INDEX (LIFI_MIMO_CHANNEL_NUM - 1) |
| JongYongPark | 0:488aa8153e15 | 142 | |
| JongYongPark | 0:488aa8153e15 | 143 | #define LIFI_CHANNEL_1 (0) |
| JongYongPark | 0:488aa8153e15 | 144 | #define LIFI_CHANNEL_2 (1) |
| JongYongPark | 0:488aa8153e15 | 145 | #define LIFI_CHANNEL_3 (2) |
| JongYongPark | 0:488aa8153e15 | 146 | #define LIFI_CHANNEL_4 (3) |
| JongYongPark | 0:488aa8153e15 | 147 | #define LIFI_CHANNEL_ALL (4) |
| JongYongPark | 0:488aa8153e15 | 148 | ///////////////// |
| JongYongPark | 17:847e9b792c72 | 149 | |
| JongYongPark | 0:488aa8153e15 | 150 | |
| JongYongPark | 0:488aa8153e15 | 151 | #define LIFI_DEMO_TX_PERIOD_SEC (2) // 1 sec |
| JongYongPark | 0:488aa8153e15 | 152 | //#define LIFI_DEMO_TX_PERIOD_SEC (LIFI_RX_SYMBOL_PERIOD_SEC*2*8*(PDU_BUFFER_SIZE/LIFI_ACTUAL_MAX_CHANNEL_NUM+6) + 1) // 1 sec |
| JongYongPark | 0:488aa8153e15 | 153 | // LIFI_RX_SYMBOL_PERIOD_SEC*2*8 = 1 symbol *2 = 1 bit * 8 = 1 byte |
| JongYongPark | 0:488aa8153e15 | 154 | // PDU_BUFFER_SIZE + 6 ( AAAAAA SYNC STX ... ETX ) |
| JongYongPark | 0:488aa8153e15 | 155 | // 1 => minimum 1 sec delay |
| JongYongPark | 0:488aa8153e15 | 156 | //#define LIFI_DEMO_TX_PERIOD_SEC (0) // no wait |
| JongYongPark | 0:488aa8153e15 | 157 | |
| JongYongPark | 0:488aa8153e15 | 158 | |
| JongYongPark | 17:847e9b792c72 | 159 | |
| JongYongPark | 16:c551ee1092f5 | 160 | |
| JongYongPark | 0:488aa8153e15 | 161 | |
| JongYongPark | 0:488aa8153e15 | 162 | //#define DEBUG_ANALOG |
| JongYongPark | 0:488aa8153e15 | 163 | //#define DEBUG_EDGE |
| JongYongPark | 0:488aa8153e15 | 164 | //#define DEBUG_FRAME |
| JongYongPark | 0:488aa8153e15 | 165 | //#define DEBUG_RECEIVED_CHAR |
| JongYongPark | 0:488aa8153e15 | 166 | |
| JongYongPark | 0:488aa8153e15 | 167 | #define TX_DEBUG_TIMER_INT 1 |
| JongYongPark | 0:488aa8153e15 | 168 | #define TX_DEBUG_FRAME 1 |
| JongYongPark | 0:488aa8153e15 | 169 | #define TX_DEBUG_MAIN_LOOP 1 |
| JongYongPark | 0:488aa8153e15 | 170 | |
| JongYongPark | 0:488aa8153e15 | 171 | //////////// |
| JongYongPark | 0:488aa8153e15 | 172 | #define RX_DEBUG_ANALOG_SENSOR_VALUE 0 |
| JongYongPark | 0:488aa8153e15 | 173 | ///////////// |
| JongYongPark | 0:488aa8153e15 | 174 | #define RX_RX_DEBUG_EDGE 0 |
| JongYongPark | 0:488aa8153e15 | 175 | #define RX_DEBUG_BIN 0 |
| JongYongPark | 0:488aa8153e15 | 176 | ///////////////////// |
| JongYongPark | 26:26474003e443 | 177 | #define RX_DEBUG_FRAME 0 // 1 |
| JongYongPark | 0:488aa8153e15 | 178 | #define RX_DEBUG_MAIN_LOOP 1 //1 |
| JongYongPark | 0:488aa8153e15 | 179 | |
| JongYongPark | 0:488aa8153e15 | 180 | //https://os.mbed.com/forum/bugs-suggestions/topic/28244/?page=1#comment-53612 |
| JongYongPark | 1:502e5a0c14c3 | 181 | #define USE_LIFI_RX_CHECK_QUEUE 1 |
| JongYongPark | 1:502e5a0c14c3 | 182 | // 이것을 하면 RX가 더 효과적임. 중요함. 0으로 하면 잘 안됨. |
| JongYongPark | 0:488aa8153e15 | 183 | |
| JongYongPark | 0:488aa8153e15 | 184 | enum Lifi_RxTx_Mode { |
| JongYongPark | 0:488aa8153e15 | 185 | Lifi_Tx_Mode = 0, |
| JongYongPark | 0:488aa8153e15 | 186 | Lifi_Rx_Mode = 1 |
| JongYongPark | 0:488aa8153e15 | 187 | }; |
| JongYongPark | 0:488aa8153e15 | 188 | |
| JongYongPark | 0:488aa8153e15 | 189 | |
| JongYongPark | 0:488aa8153e15 | 190 | ///////////////// TX |
| JongYongPark | 0:488aa8153e15 | 191 | ///////////////////////// |
| JongYongPark | 0:488aa8153e15 | 192 | //extern void to_manchester(unsigned char data, unsigned long int * data_manchester); |
| JongYongPark | 0:488aa8153e15 | 193 | extern void LifiTx_OokEmitHalfBit(); |
| JongYongPark | 0:488aa8153e15 | 194 | //extern void init_frame(unsigned char * frame); |
| JongYongPark | 11:8ffa8a36126f | 195 | //extern int create_frame(char * data, uint16_t data_size, unsigned char * frame); |
| JongYongPark | 0:488aa8153e15 | 196 | //extern void init_emitter(); |
| JongYongPark | 0:488aa8153e15 | 197 | extern void LifiTx_Init(); |
| JongYongPark | 0:488aa8153e15 | 198 | extern void LifiTx_SendHelloMsg(); |
| JongYongPark | 0:488aa8153e15 | 199 | extern bool LifiTx_IsBusy(); |
| JongYongPark | 0:488aa8153e15 | 200 | ///////////////// RX |
| JongYongPark | 0:488aa8153e15 | 201 | extern void LifiRx_Init(); |
| JongYongPark | 0:488aa8153e15 | 202 | extern void LifiRx_SampleSignalEdge(); |
| JongYongPark | 0:488aa8153e15 | 203 | extern void LifiRx_LoopOOK(); |
| JongYongPark | 0:488aa8153e15 | 204 | |
| JongYongPark | 0:488aa8153e15 | 205 | /////////////////// |
| JongYongPark | 0:488aa8153e15 | 206 | extern bool Lifi_IsChannelAvailable(int channel_num); |
| JongYongPark | 0:488aa8153e15 | 207 | extern bool Lifi_IsLastChannel(int channel_num); |
| JongYongPark | 0:488aa8153e15 | 208 | #endif |
| JongYongPark | 0:488aa8153e15 | 209 | #if 0 |
| JongYongPark | 0:488aa8153e15 | 210 | 저항 |
| JongYongPark | 0:488aa8153e15 | 211 | --------- |
| JongYongPark | 0:488aa8153e15 | 212 | 18 |
| JongYongPark | 0:488aa8153e15 | 213 | 100 |
| JongYongPark | 0:488aa8153e15 | 214 | 1k |
| JongYongPark | 0:488aa8153e15 | 215 | 2.2k |
| JongYongPark | 0:488aa8153e15 | 216 | 4.7k |
| JongYongPark | 0:488aa8153e15 | 217 | 5 |
| JongYongPark | 0:488aa8153e15 | 218 | 8.2k |
| JongYongPark | 0:488aa8153e15 | 219 | 10k |
| JongYongPark | 0:488aa8153e15 | 220 | 12k |
| JongYongPark | 0:488aa8153e15 | 221 | 27k |
| JongYongPark | 0:488aa8153e15 | 222 | 18k |
| JongYongPark | 0:488aa8153e15 | 223 | 100k |
| JongYongPark | 0:488aa8153e15 | 224 | 470k |
| JongYongPark | 0:488aa8153e15 | 225 | 220k |
| JongYongPark | 0:488aa8153e15 | 226 | 1M |
| JongYongPark | 0:488aa8153e15 | 227 | |
| JongYongPark | 0:488aa8153e15 | 228 | 가변저항 |
| JongYongPark | 0:488aa8153e15 | 229 | --------- |
| JongYongPark | 0:488aa8153e15 | 230 | 10k |
| JongYongPark | 0:488aa8153e15 | 231 | |
| JongYongPark | 0:488aa8153e15 | 232 | MOSFET |
| JongYongPark | 0:488aa8153e15 | 233 | --------- |
| JongYongPark | 0:488aa8153e15 | 234 | IRLR3715ZPBF - n channel |
| JongYongPark | 0:488aa8153e15 | 235 | |
| JongYongPark | 0:488aa8153e15 | 236 | |
| JongYongPark | 0:488aa8153e15 | 237 | 다이오드 |
| JongYongPark | 0:488aa8153e15 | 238 | 제너다이오드 |
| JongYongPark | 0:488aa8153e15 | 239 | |
| JongYongPark | 0:488aa8153e15 | 240 | |
| JongYongPark | 0:488aa8153e15 | 241 | |
| JongYongPark | 0:488aa8153e15 | 242 | 캐패시터 |
| JongYongPark | 0:488aa8153e15 | 243 | ---------- |
| JongYongPark | 0:488aa8153e15 | 244 | 5.6p |
| JongYongPark | 0:488aa8153e15 | 245 | 100n |
| JongYongPark | 0:488aa8153e15 | 246 | 0.1u |
| JongYongPark | 0:488aa8153e15 | 247 | |
| JongYongPark | 0:488aa8153e15 | 248 | |
| JongYongPark | 0:488aa8153e15 | 249 | |
| JongYongPark | 0:488aa8153e15 | 250 | 트랜지스터 |
| JongYongPark | 0:488aa8153e15 | 251 | ----------- |
| JongYongPark | 0:488aa8153e15 | 252 | bc547 |
| JongYongPark | 0:488aa8153e15 | 253 | 2N2222 |
| JongYongPark | 0:488aa8153e15 | 254 | BC547A |
| JongYongPark | 0:488aa8153e15 | 255 | |
| JongYongPark | 0:488aa8153e15 | 256 | PD |
| JongYongPark | 0:488aa8153e15 | 257 | --------- |
| JongYongPark | 0:488aa8153e15 | 258 | BPW32 |
| JongYongPark | 0:488aa8153e15 | 259 | BPW21R |
| JongYongPark | 0:488aa8153e15 | 260 | |
| JongYongPark | 0:488aa8153e15 | 261 | AGC |
| JongYongPark | 0:488aa8153e15 | 262 | --------- |
| JongYongPark | 0:488aa8153e15 | 263 | TL026CD |
| JongYongPark | 0:488aa8153e15 | 264 | |
| JongYongPark | 0:488aa8153e15 | 265 | OPAMP |
| JongYongPark | 0:488aa8153e15 | 266 | --------- |
| JongYongPark | 0:488aa8153e15 | 267 | UA741CD |
| JongYongPark | 0:488aa8153e15 | 268 | 741 |
| JongYongPark | 0:488aa8153e15 | 269 | UA471P |
| JongYongPark | 0:488aa8153e15 | 270 | LM158 |
| JongYongPark | 0:488aa8153e15 | 271 | LM358N |
| JongYongPark | 0:488aa8153e15 | 272 | TL082 |
| JongYongPark | 0:488aa8153e15 | 273 | #endif |
| JongYongPark | 0:488aa8153e15 | 274 |