├── include ├── user_config.h ├── string.h ├── driver │ ├── uart.h │ └── uart_register.h └── pin_mux_register.h ├── client.elf ├── server.elf ├── top ├── README.md ├── Makefile ├── cup.c └── top.c ├── client.elf-0x00000.bin ├── client.elf-0x40000.bin ├── server.elf-0x00000.bin ├── server.elf-0x40000.bin ├── hardware ├── esp_micro85-only.pdf ├── esp12e-generics-F_Cu.png ├── esp_micro85-only-F_Cu.png ├── README.md ├── esp12e-generics-cache.lib ├── esp_micro85-only-cache.lib ├── esp_micro85-only.pro ├── esp12e-generics.sch ├── esp12e-generics.pro ├── esp_micro85-only.sch ├── esp_micro85-only-F_Cu.ps └── esp12e-generics.kicad_pcb ├── README.md ├── LICENSE ├── user ├── ws2812_i2s.h ├── user_main.c ├── slc_register.h └── ws2812_i2s.c ├── Makefile ├── common ├── esp8266_rom.h ├── mystuff.h └── mystuff.c └── driver └── uart.c /include/user_config.h: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /include/string.h: -------------------------------------------------------------------------------- 1 | //Nothing here. 2 | -------------------------------------------------------------------------------- /client.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/esp8266_link_test/HEAD/client.elf -------------------------------------------------------------------------------- /server.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/esp8266_link_test/HEAD/server.elf -------------------------------------------------------------------------------- /top/README.md: -------------------------------------------------------------------------------- 1 | You should run "cup" to test against an ESP8266 client connecting to your system. 2 | -------------------------------------------------------------------------------- /client.elf-0x00000.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/esp8266_link_test/HEAD/client.elf-0x00000.bin -------------------------------------------------------------------------------- /client.elf-0x40000.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/esp8266_link_test/HEAD/client.elf-0x40000.bin -------------------------------------------------------------------------------- /server.elf-0x00000.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/esp8266_link_test/HEAD/server.elf-0x00000.bin -------------------------------------------------------------------------------- /server.elf-0x40000.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/esp8266_link_test/HEAD/server.elf-0x40000.bin -------------------------------------------------------------------------------- /hardware/esp_micro85-only.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/esp8266_link_test/HEAD/hardware/esp_micro85-only.pdf -------------------------------------------------------------------------------- /hardware/esp12e-generics-F_Cu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/esp8266_link_test/HEAD/hardware/esp12e-generics-F_Cu.png -------------------------------------------------------------------------------- /hardware/esp_micro85-only-F_Cu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/esp8266_link_test/HEAD/hardware/esp_micro85-only-F_Cu.png -------------------------------------------------------------------------------- /top/Makefile: -------------------------------------------------------------------------------- 1 | all : top cup 2 | 3 | top : top.o 4 | gcc -o $@ $^ -lm 5 | 6 | cup : cup.o 7 | gcc -o $@ $^ -lm 8 | 9 | clean : 10 | rm -rf *.o *~ 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #ESP8266/ESP8285 Range Test Tool 2 | 3 | Simply say make server_burn or make client_burn. 4 | 5 | This will make a client or a server ESP. The SSID is "rangetest" password is "soldering." 6 | 7 | -------------------------------------------------------------------------------- /hardware/README.md: -------------------------------------------------------------------------------- 1 | In here is the kicad project files for a board that uses a ESP-12-(E/F) module as well as a raw ESP8285. 2 | 3 | The .pngs are: 600dpi for the ESP-12-E board and 1200 dpi for the ESP8285 board. The PNGs have this encoded in them, so should be drag-and-drop to OpenOffice Writer or anything like that. 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ESPRSSIF MIT License 2 | 3 | Copyright (c) 2015 4 | Portions Copyright (c) 2015 <>< Charles Lohr 5 | 6 | Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, 7 | in which case, it is free of charge, to any person obtaining a copy of this 8 | software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | -------------------------------------------------------------------------------- /user/ws2812_i2s.h: -------------------------------------------------------------------------------- 1 | //Copyright 2015 <>< Charles Lohr, See LICENSE file. 2 | //WS2812 sender that abuses the I2S interface on the WS2812. 3 | 4 | #ifndef _WS2812I2S_TEST 5 | #define _WS2812I2S_TEST 6 | 7 | //Stuff that should be for the header: 8 | 9 | #include 10 | 11 | //Parameters for the I2S DMA behaviour 12 | //#define I2SDMABUFCNT (2) //Number of buffers in the I2S circular buffer 13 | //#define I2SDMABUFLEN (32*2) //Length of one buffer, in 32-bit words. 14 | 15 | //NOTE: Blocksize MUST be divisible by 4. Cannot exceed 4092 16 | //Each LED takes up 12 block bytes in WS2812_FOUR_SAMPLE 17 | //Or 9 block bytes in WS2812_THREE_SAMPLE 18 | #define WS_BLOCKSIZE 4000 19 | 20 | //You can either have 3 or 4 samples per bit for WS2812s. 21 | //3 sample can't go quite as fast as 4. 22 | //3 sample uses more processing when updating than 4. 23 | //4 takes up more RAM per LED than 3. 24 | //3 has slightly more restrictve timing requirements. 25 | //4 has more DMA load when running. 26 | #define WS2812_THREE_SAMPLE 27 | //#define WS2812_FOUR_SAMPLE 28 | 29 | // timing for SK6812 LEDs, always uses 4bit samples 30 | //#define SK6812 31 | 32 | void ICACHE_FLASH_ATTR ws2812_init(); 33 | void ws2812_push( uint8_t * buffer, uint16_t buffersize ); //Buffersize = Nr LEDs * 3 34 | 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | TARGET_OUT:=server.elf client.elf 2 | SERVER_FW_FILES:=server.elf-0x00000.bin server.elf-0x40000.bin 3 | CLIENT_FW_FILES:=client.elf-0x00000.bin client.elf-0x40000.bin 4 | all : $(TARGET_OUT) $(SERVER_FW_FILES) $(CLIENT_FW_FILES) 5 | 6 | 7 | SRCS:=driver/uart.c \ 8 | common/mystuff.c \ 9 | user/ws2812_i2s.c \ 10 | user/user_main.c 11 | 12 | GCC_FOLDER:=~/esp8266/esp-open-sdk/xtensa-lx106-elf 13 | ESPTOOL_PY:=~/esp8266/esptool/esptool.py 14 | EXPTOOL_CK:=~/esp8266/esptool-ck/esptool 15 | SDK:=/home/cnlohr/esp8266/ESP8266_NONOS_SDK 16 | PORT:=/dev/ttyUSB0 17 | #PORT:=/dev/ttyACM0 18 | 19 | XTLIB:=$(SDK)/lib 20 | XTGCCLIB:=$(GCC_FOLDER)/lib/gcc/xtensa-lx106-elf/4.8.2/libgcc.a 21 | FOLDERPREFIX:=$(GCC_FOLDER)/bin 22 | PREFIX:=$(FOLDERPREFIX)/xtensa-lx106-elf- 23 | CC:=$(PREFIX)gcc 24 | 25 | CFLAGS:=-mlongcalls -I$(SDK)/include -Imyclib -Iinclude -Iuser -Os -I$(SDK)/include/ -Icommon -DICACHE_FLASH 26 | 27 | # \ 28 | # 29 | 30 | LDFLAGS_CORE:=\ 31 | -nostdlib \ 32 | -Wl,--relax -Wl,--gc-sections \ 33 | -L$(XTLIB) \ 34 | -L$(XTGCCLIB) \ 35 | $(SDK)/lib/liblwip.a \ 36 | $(SDK)/lib/libssl.a \ 37 | $(SDK)/lib/libupgrade.a \ 38 | $(SDK)/lib/libnet80211.a \ 39 | $(SDK)/lib/liblwip.a \ 40 | $(SDK)/lib/libwpa.a \ 41 | $(SDK)/lib/libnet80211.a \ 42 | $(SDK)/lib/libphy.a \ 43 | $(SDK)/lib/libcrypto.a \ 44 | $(SDK)/lib/libmain.a \ 45 | $(SDK)/lib/libpp.a \ 46 | $(XTGCCLIB) \ 47 | -T $(SDK)/ld/eagle.app.v6.ld 48 | 49 | LINKFLAGS:= \ 50 | $(LDFLAGS_CORE) \ 51 | -B$(XTLIB) 52 | 53 | #image.elf : $(OBJS) 54 | # $(PREFIX)ld $^ $(LDFLAGS) -o $@ 55 | 56 | $(TARGET_OUT) : $(SRCS) 57 | $(PREFIX)gcc $(CFLAGS) $^ -flto $(LINKFLAGS) -o client.elf 58 | $(PREFIX)gcc $(CFLAGS) $^ -flto $(LINKFLAGS) -DSERVER -o server.elf 59 | #nm -S -n $(TARGET_OUT) > image.map 60 | #$(PREFIX)objdump -S $@ > image.lst 61 | 62 | 63 | 64 | $(SERVER_FW_FILES): server.elf 65 | @echo "FW $@" 66 | PATH=$(FOLDERPREFIX):$$PATH;$(ESPTOOL_PY) elf2image server.elf 67 | 68 | $(CLIENT_FW_FILES): client.elf 69 | @echo "FW $@" 70 | PATH=$(FOLDERPREFIX):$$PATH;$(ESPTOOL_PY) elf2image client.elf 71 | 72 | burn_server : $(SERVER_FW_FILES) 73 | stty -F $(PORT) 115200 -echo raw 74 | sleep .1 75 | ($(ESPTOOL_PY) --port $(PORT) write_flash -fs 8m -fm dout 0x00000 server.elf-0x00000.bin 0x40000 server.elf-0x40000.bin)||(true) 76 | 77 | 78 | burn_client : $(CLIENT_FW_FILES) 79 | stty -F $(PORT) 115200 -echo raw 80 | sleep .1 81 | ($(ESPTOOL_PY) --port $(PORT) write_flash -fs 8m -fm dout 0x00000 client.elf-0x00000.bin 0x40000 client.elf-0x40000.bin)||(true) 82 | 83 | clean : 84 | rm -rf user/*.o driver/*.o $(TARGET_OUT) $(FW_FILE_1) $(FW_FILE_2) $(SERVER_FW_FILES) $(CLIENT_FW_FILES) 85 | 86 | 87 | -------------------------------------------------------------------------------- /include/driver/uart.h: -------------------------------------------------------------------------------- 1 | #ifndef UART_APP_H 2 | #define UART_APP_H 3 | 4 | #include "uart_register.h" 5 | #include "eagle_soc.h" 6 | #include "c_types.h" 7 | 8 | #define RX_BUFF_SIZE 256 9 | #define TX_BUFF_SIZE 100 10 | #define UART0 0 11 | #define UART1 1 12 | 13 | typedef enum { 14 | FIVE_BITS = 0x0, 15 | SIX_BITS = 0x1, 16 | SEVEN_BITS = 0x2, 17 | EIGHT_BITS = 0x3 18 | } UartBitsNum4Char; 19 | 20 | typedef enum { 21 | ONE_STOP_BIT = 0, 22 | ONE_HALF_STOP_BIT = BIT2, 23 | TWO_STOP_BIT = BIT2 24 | } UartStopBitsNum; 25 | 26 | typedef enum { 27 | NONE_BITS = 0, 28 | ODD_BITS = 0, 29 | EVEN_BITS = BIT4 30 | } UartParityMode; 31 | 32 | typedef enum { 33 | STICK_PARITY_DIS = 0, 34 | STICK_PARITY_EN = BIT3 | BIT5 35 | } UartExistParity; 36 | 37 | typedef enum { 38 | BIT_RATE_9600 = 9600, 39 | BIT_RATE_19200 = 19200, 40 | BIT_RATE_38400 = 38400, 41 | BIT_RATE_57600 = 57600, 42 | BIT_RATE_74880 = 74880, 43 | BIT_RATE_115200 = 115200, 44 | BIT_RATE_230400 = 230400, 45 | BIT_RATE_460800 = 460800, 46 | BIT_RATE_921600 = 921600 47 | } UartBautRate; 48 | 49 | typedef enum { 50 | NONE_CTRL, 51 | HARDWARE_CTRL, 52 | XON_XOFF_CTRL 53 | } UartFlowCtrl; 54 | 55 | typedef enum { 56 | EMPTY, 57 | UNDER_WRITE, 58 | WRITE_OVER 59 | } RcvMsgBuffState; 60 | 61 | typedef struct { 62 | uint32 RcvBuffSize; 63 | uint8 *pRcvMsgBuff; 64 | uint8 *pWritePos; 65 | uint8 *pReadPos; 66 | uint8 TrigLvl; //JLU: may need to pad 67 | RcvMsgBuffState BuffState; 68 | } RcvMsgBuff; 69 | 70 | typedef struct { 71 | uint32 TrxBuffSize; 72 | uint8 *pTrxBuff; 73 | } TrxMsgBuff; 74 | 75 | typedef enum { 76 | BAUD_RATE_DET, 77 | WAIT_SYNC_FRM, 78 | SRCH_MSG_HEAD, 79 | RCV_MSG_BODY, 80 | RCV_ESC_CHAR, 81 | } RcvMsgState; 82 | 83 | typedef struct { 84 | UartBautRate baut_rate; 85 | UartBitsNum4Char data_bits; 86 | UartExistParity exist_parity; 87 | UartParityMode parity; // chip size in byte 88 | UartStopBitsNum stop_bits; 89 | UartFlowCtrl flow_ctrl; 90 | RcvMsgBuff rcv_buff; 91 | TrxMsgBuff trx_buff; 92 | RcvMsgState rcv_state; 93 | int received; 94 | int buff_uart_no; //indicate which uart use tx/rx buffer 95 | } UartDevice; 96 | 97 | void uart_init(UartBautRate uart0_br, UartBautRate uart1_br); 98 | void uart0_sendStr(const char *str); 99 | 100 | #endif 101 | 102 | -------------------------------------------------------------------------------- /common/esp8266_rom.h: -------------------------------------------------------------------------------- 1 | #ifndef _ESP8266_ROM_FUNCTS 2 | #define _ESP8266_ROM_FUNCTS 3 | 4 | //This is my best guess at some of the ROM functions for the ESP8266. 5 | //I have no idea if this stuff is correct! 6 | 7 | #include 8 | #include 9 | 10 | void Cache_Read_Disable(); //Can't seem to operate... 11 | void Cache_Read_Enable(); 12 | 13 | //PROVIDE ( Cache_Read_Disable = 0x400047f0 ); 14 | //PROVIDE ( Cache_Read_Enable = 0x40004678 ); 15 | 16 | typedef struct { 17 | uint32_t i[2]; 18 | uint32_t buf[4]; 19 | unsigned char in[64]; 20 | unsigned char digest[16]; 21 | } MD5_CTX; 22 | 23 | void MD5Init ( MD5_CTX *mdContext); 24 | void MD5Update( MD5_CTX *mdContext, const unsigned char *inBuf, unsigned int inLen); 25 | void MD5Final ( unsigned char hash[], MD5_CTX *mdContext); 26 | 27 | 28 | //SHA Stuff from: https://github.com/pvvx/esp8266web/blob/master/app/include/bios/cha1.h 29 | #define SHA1_HASH_LEN 20 30 | typedef struct { 31 | uint32 state[5]; 32 | uint32 count[2]; 33 | uint8 buffer[64]; 34 | uint8 extra[40]; 35 | } SHA1_CTX; 36 | 37 | void SHA1Init(SHA1_CTX* context); 38 | void SHA1Update(SHA1_CTX* context, 39 | const uint8 *data, 40 | size_t len); 41 | void SHA1Final(uint8 digest[SHA1_HASH_LEN], SHA1_CTX* context); 42 | void SHA1Transform(uint32 state[5], const uint8 buffer[64]); 43 | 44 | 45 | 46 | //SPI_FLASH_SEC_SIZE 4096 47 | 48 | void SPIEraseSector(uint16 sec); 49 | void SPIEraseArea(uint32 start,uint32 len); //Doesn't work? 50 | void SPIEraseBlock(uint16 blk); 51 | void SPIWrite(uint32 des_addr, uint32_t *src_addr, uint32_t size); 52 | void SPIRead(uint32 src_addr, uint32_t *des_addr, uint16_t size); 53 | void SPILock( uint16_t sec ); //??? I don't use this? 54 | void SPIUnlock( ); //??? I don't use this? -> Seems to crash. 55 | 56 | extern SpiFlashChip * flashchip; //don't forget: flashchip->chip_size = 0x01000000; 57 | 58 | 59 | /* 60 | flashchip->chip_size = 0x01000000; 61 | 62 | { 63 | uint32_t __attribute__ ((aligned (16))) t[1024]; 64 | t[0] = 0xAABBCCDD; 65 | t[1] = 0xEEFF0011; 66 | for( i = 0; i < 10000; i++ ) uart0_sendStr("A\n"); 67 | SPIEraseSector( 1000000/4096 ); 68 | for( i = 0; i < 10000; i++ ) uart0_sendStr("B\n"); 69 | SPIWrite( 1000000, t, 8 ); 70 | } 71 | 72 | for( i = 0; i < 10000; i++ ) uart0_sendStr("C\n"); 73 | 74 | while(1) 75 | { 76 | char ct[32]; 77 | uint32_t __attribute__ ((aligned (16))) ret = 0x12345678; 78 | // SPIRead( 1000000, &ret, 4 ); 79 | ret = *(uint32_t*)(0x40200000+1000004); 80 | ets_sprintf( ct, "%08x\n", ret ); 81 | printf( ct ); 82 | } 83 | */ 84 | 85 | 86 | void software_reset(); 87 | 88 | 89 | 90 | #endif 91 | 92 | 93 | -------------------------------------------------------------------------------- /common/mystuff.h: -------------------------------------------------------------------------------- 1 | //Unless what else is individually marked, all code in this file is 2 | //Copyright 2015 <>< Charles Lohr Under the MIT/x11 License, NewBSD License or 3 | // ColorChord License. You Choose. 4 | 5 | #ifndef _MYSTUFF_H 6 | #define _MYSTUFF_H 7 | 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | 17 | //XXX WARNING As of 1.3.0, "cansend" doesn't work. 18 | //the SDK seems to misbehave when trying to send without a full 19 | //response packet. 20 | #define SAFESEND 21 | 22 | 23 | #define HTONS(x) ((((uint16_t)(x))>>8)|(((x)&0xff)<<8)) 24 | 25 | #define IP4_to_uint32(x) (((uint32_t)x[3]<<24)|((uint32_t)x[2]<<16)|((uint32_t)x[1]<<8)|x[0]) 26 | #define uint32_to_IP4(x,y) {y[0] = (uint8_t)(x); y[1] = (uint8_t)((x)>>8); y[2] = (uint8_t)((x)>>16); y[3] = (uint8_t)((x)>>24);} 27 | 28 | extern char generic_print_buffer[384]; 29 | 30 | extern const char * enctypes[6];// = { "open", "wep", "wpa", "wpa2", "wpa_wpa2", 0 }; 31 | 32 | #define printf( ... ) { ets_sprintf( generic_print_buffer, __VA_ARGS__ ); uart0_sendStr( generic_print_buffer ); } 33 | 34 | char tohex1( uint8_t i ); 35 | int8_t fromhex1( char c ); //returns -1 if not hex char. 36 | 37 | int32 my_atoi( const char * in ); 38 | void Uint32To10Str( char * out, uint32 dat ); 39 | 40 | void NixNewline( char * str ); //If there's a newline at the end of this string, make it null. 41 | 42 | //For holding TX packet buffers 43 | extern char generic_buffer[1500]; 44 | extern char * generic_ptr; 45 | int8_t ICACHE_FLASH_ATTR TCPCanSend( struct espconn * conn, int size ); 46 | int8_t ICACHE_FLASH_ATTR TCPDoneSend( struct espconn * conn ); 47 | void ICACHE_FLASH_ATTR EndTCPWrite( struct espconn * conn ); 48 | 49 | 50 | #define PushByte( c ) { *(generic_ptr++) = c; } 51 | 52 | void PushString( const char * buffer ); 53 | void PushBlob( const uint8 * buffer, int len ); 54 | #define START_PACK {generic_ptr=generic_buffer;} 55 | #define PACK_LENGTH (generic_ptr-&generic_buffer[0]} 56 | 57 | int ICACHE_FLASH_ATTR ColonsToInts( const char * str, int32_t * vals, int max_quantity ); 58 | 59 | //As much as it pains me, we shouldn't be using the esp8266's base64_encode() function 60 | //as it does stuff with dynamic memory. 61 | void ICACHE_FLASH_ATTR my_base64_encode(const unsigned char *data, size_t input_length, uint8_t * encoded_data ); 62 | 63 | 64 | void ICACHE_FLASH_ATTR SafeMD5Update( MD5_CTX * md5ctx, uint8_t*from, uint32_t size1 ); 65 | 66 | char * ICACHE_FLASH_ATTR strdup( const char * src ); 67 | char * ICACHE_FLASH_ATTR strdupcaselower( const char * src ); 68 | 69 | 70 | uint32_t ICACHE_FLASH_ATTR GetCurrentIP( ); 71 | 72 | #endif 73 | -------------------------------------------------------------------------------- /hardware/esp12e-generics-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 Date: Fri 19 Feb 2016 06:42:13 PM EST 2 | #encoding utf-8 3 | # 4 | # +3.3V 5 | # 6 | DEF +3.3V #PWR 0 0 Y Y 1 F P 7 | F0 "#PWR" 0 -40 30 H I C CNN 8 | F1 "+3.3V" 0 110 30 H V C CNN 9 | F2 "~" 0 0 60 H V C CNN 10 | F3 "~" 0 0 60 H V C CNN 11 | ALIAS +3,3V 12 | DRAW 13 | X +3.3V 1 0 0 0 U 30 30 0 0 W N 14 | C 0 60 20 0 1 0 N 15 | P 3 0 1 0 0 0 0 40 0 40 N 16 | ENDDRAW 17 | ENDDEF 18 | # 19 | # +5V 20 | # 21 | DEF +5V #PWR 0 40 Y Y 1 F P 22 | F0 "#PWR" 0 90 20 H I C CNN 23 | F1 "+5V" 0 90 30 H V C CNN 24 | F2 "~" 0 0 60 H V C CNN 25 | F3 "~" 0 0 60 H V C CNN 26 | DRAW 27 | X +5V 1 0 0 0 U 20 20 0 0 W N 28 | C 0 50 20 0 1 0 N 29 | P 4 0 1 0 0 0 0 30 0 30 0 30 N 30 | ENDDRAW 31 | ENDDEF 32 | # 33 | # AP1117 34 | # 35 | DEF AP1117 U 0 40 Y Y 1 F N 36 | F0 "U" 0 200 60 H V C CNN 37 | F1 "AP1117" 0 -200 60 H V C CNN 38 | F2 "~" 0 0 60 H V C CNN 39 | F3 "~" 0 0 60 H V C CNN 40 | DRAW 41 | S -250 150 250 -150 0 1 0 f 42 | X GND 1 550 -100 300 L 50 50 1 1 B 43 | X Vout 2 550 0 300 L 50 50 1 1 B 44 | X Vin 3 550 100 300 L 50 50 1 1 B 45 | X Vout2 4 -550 0 300 R 50 50 1 1 B 46 | ENDDRAW 47 | ENDDEF 48 | # 49 | # C 50 | # 51 | DEF C C 0 10 N Y 1 F N 52 | F0 "C" 0 100 40 H V L CNN 53 | F1 "C" 6 -85 40 H V L CNN 54 | F2 "~" 38 -150 30 H V C CNN 55 | F3 "~" 0 0 60 H V C CNN 56 | $FPLIST 57 | SM* 58 | C? 59 | C1-1 60 | $ENDFPLIST 61 | DRAW 62 | P 2 0 1 20 -80 -30 80 -30 N 63 | P 2 0 1 20 -80 30 80 30 N 64 | X ~ 1 0 200 170 D 40 40 1 1 P 65 | X ~ 2 0 -200 170 U 40 40 1 1 P 66 | ENDDRAW 67 | ENDDEF 68 | # 69 | # CONN_8 70 | # 71 | DEF CONN_8 P 0 40 Y N 1 F N 72 | F0 "P" -50 0 60 V V C CNN 73 | F1 "CONN_8" 50 0 60 V V C CNN 74 | F2 "~" 0 0 60 H V C CNN 75 | F3 "~" 0 0 60 H V C CNN 76 | DRAW 77 | S -100 400 100 -400 0 1 0 N 78 | X P1 1 -350 350 250 R 50 50 1 1 P I 79 | X P2 2 -350 250 250 R 50 50 1 1 P I 80 | X P3 3 -350 150 250 R 50 50 1 1 P I 81 | X P4 4 -350 50 250 R 50 50 1 1 P I 82 | X P5 5 -350 -50 250 R 50 50 1 1 P I 83 | X P6 6 -350 -150 250 R 50 50 1 1 P I 84 | X P7 7 -350 -250 250 R 50 50 1 1 P I 85 | X P8 8 -350 -350 250 R 50 50 1 1 P I 86 | ENDDRAW 87 | ENDDEF 88 | # 89 | # ESP12E 90 | # 91 | DEF ESP12E ESP 0 40 Y Y 1 F N 92 | F0 "ESP" 300 600 60 H V C CNN 93 | F1 "ESP12E" -300 600 60 H V C CNN 94 | F2 "~" 50 -250 60 H V C CNN 95 | F3 "~" 50 -250 60 H V C CNN 96 | DRAW 97 | S -500 750 500 -450 0 1 0 f 98 | X REST 1 -800 450 300 R 50 50 1 1 I 99 | X ADC 2 -800 350 300 R 50 50 1 1 I 100 | X CH_PD 3 -800 250 300 R 50 50 1 1 I 101 | X GPIO16 4 -800 150 300 R 50 50 1 1 I 102 | X GPIO14 5 -800 50 300 R 50 50 1 1 I 103 | X GPIO12 6 -800 -50 300 R 50 50 1 1 I 104 | X GPIO13 7 -800 -150 300 R 50 50 1 1 I 105 | X VCC 8 -800 -250 300 R 50 50 1 1 I 106 | X MTDO 9 -250 -750 300 U 50 50 1 1 I 107 | X MTDI 10 -150 -750 300 U 50 50 1 1 I 108 | X GPIO5 20 800 250 300 L 50 50 1 1 I 109 | X SD_3 11 -50 -750 300 U 50 50 1 1 I 110 | X RXD 21 800 350 300 L 50 50 1 1 I 111 | X MTMS 12 50 -750 300 U 50 50 1 1 I 112 | X TXD 22 800 450 300 L 50 50 1 1 I 113 | X MTCK 13 150 -750 300 U 50 50 1 1 I 114 | X SD_2 14 250 -750 300 U 50 50 1 1 I 115 | X GND 15 800 -250 300 L 50 50 1 1 I 116 | X GPIO15 16 800 -150 300 L 50 50 1 1 I 117 | X GPIO2 17 800 -50 300 L 50 50 1 1 I 118 | X GPIO0 18 800 50 300 L 50 50 1 1 I 119 | X GPIO4 19 800 150 300 L 50 50 1 1 I 120 | ENDDRAW 121 | ENDDEF 122 | # 123 | # EXB-A 124 | # 125 | DEF EXB-A U 0 40 Y Y 1 F N 126 | F0 "U" 150 300 60 H V C CNN 127 | F1 "EXB-A" -100 300 60 H V C CNN 128 | F2 "~" 0 0 60 H V C CNN 129 | F3 "~" 0 0 60 H V C CNN 130 | DRAW 131 | S -250 250 250 -250 0 1 0 f 132 | X R1 1 -450 200 300 R 50 50 1 1 B 133 | X R2 2 -450 100 300 R 50 50 1 1 B 134 | X R3 3 -450 0 300 R 50 50 1 1 B 135 | X R4 4 -450 -100 300 R 50 50 1 1 B 136 | X C 5 -450 -200 300 R 50 50 1 1 B 137 | X R5 6 450 -200 300 L 50 50 1 1 B 138 | X R6 7 450 -100 300 L 50 50 1 1 B 139 | X R7 8 450 0 300 L 50 50 1 1 B 140 | X R8 9 450 100 300 L 50 50 1 1 B 141 | X C 10 450 200 300 L 50 50 1 1 B 142 | ENDDRAW 143 | ENDDEF 144 | # 145 | # GND 146 | # 147 | DEF ~GND #PWR 0 0 Y Y 1 F P 148 | F0 "#PWR" 0 0 30 H I C CNN 149 | F1 "GND" 0 -70 30 H I C CNN 150 | F2 "~" 0 0 60 H V C CNN 151 | F3 "~" 0 0 60 H V C CNN 152 | DRAW 153 | P 4 0 1 0 -50 0 0 -50 50 0 -50 0 N 154 | X GND 1 0 0 0 U 30 30 1 1 W N 155 | ENDDRAW 156 | ENDDEF 157 | # 158 | #End Library 159 | -------------------------------------------------------------------------------- /top/cup.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | int sockfd; 8 | struct sockaddr_in servaddr; 9 | 10 | 11 | 12 | int main( int argc, char ** argv ) 13 | { 14 | int sock; 15 | 16 | int list_s; /* listening socket */ 17 | int conn_s; /* connection socket */ 18 | short int port; /* port number */ 19 | struct sockaddr_in servaddr; /* socket address structure */ 20 | 21 | if ( (list_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0 ) 22 | { 23 | fprintf(stderr, "ERROR\n"); 24 | } 25 | 26 | memset(&servaddr, 0, sizeof(servaddr)); 27 | servaddr.sin_family = AF_INET; 28 | servaddr.sin_addr.s_addr = htonl(INADDR_ANY); 29 | servaddr.sin_port = htons(9999); 30 | 31 | if ( bind(list_s, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 ) 32 | { 33 | fprintf(stderr, "ERROR IN BIND \n"); 34 | } 35 | 36 | while(1) 37 | { 38 | uint8_t sendbuf[30]; 39 | memset( sendbuf, 0xff, 30 ); 40 | sendbuf[0] = 0; 41 | sendbuf[1] = 0; 42 | sendbuf[2] = 0; 43 | struct sockaddr srs; 44 | int sr = sizeof( srs ); 45 | char buffer[1024]; 46 | ssize_t s =recvfrom(list_s, buffer, 1024, 0, &srs, &sr ); 47 | sendto( list_s, sendbuf, sizeof( sendbuf), MSG_NOSIGNAL, &srs, sr ); 48 | printf( "%lu\n", s ); 49 | } 50 | 51 | 52 | /* 53 | int firstoverride = -1; 54 | if( argc < 2 ) 55 | { 56 | fprintf( stderr, "Error: usage: [tool] [ip address] [optional: no of lights] [optional (if present, first override (i.e. white on some systems))]\n" ); 57 | return -1; 58 | } 59 | uint32_t frame = 0; 60 | sockfd=socket(AF_INET,SOCK_DGRAM,0); 61 | 62 | bzero(&servaddr,sizeof(servaddr)); 63 | servaddr.sin_family = AF_INET; 64 | servaddr.sin_addr.s_addr=inet_addr(argv[1]); 65 | servaddr.sin_port=htons(7777); 66 | 67 | int lights = 186; 68 | 69 | if( argc >= 3 ) 70 | { 71 | lights = atoi( argv[2] ); 72 | } 73 | if( argc >= 4 ) 74 | { 75 | firstoverride = atoi( argv[3] ); 76 | } 77 | 78 | printf( "Lights: %d\n", lights ); 79 | 80 | while(1) 81 | { 82 | //#define lights 186 83 | uint8_t buffer[lights*3]; 84 | int i; 85 | for( i = 0; i < lights; i++ ) 86 | { 87 | 88 | //#define BEAT 89 | uint32_t hex; 90 | //For button 91 | // hex = (i == (frame % lights))?0xFFFFFF:0x000000; 92 | // hex=0xffffff; 93 | // hex = HSVtoHEX( i*(1/12.) + frame*(1./48.), 1, 1.0 ); 94 | // hex = (((frame+i)%lights)>(lights-2))?0xffffff:0; //The worm. 95 | hex = HSVtoHEX( i*.03 - frame*.04, 1, (((((-i<<3)%256) - ((frame<<3)%256)+256)%256) ) /256.0*0.9-0.1); //Long, smooth, transitioning. 1.0 96 | 97 | 98 | //For wall art. 99 | 100 | // hex = 0x404040; 101 | 102 | hex = HSVtoHEX( i*.05 + frame*.01, 1, 1.0 ); //0.50 = overload. 0.45 = overheat? =0.40 = HOT 103 | 104 | // hex = (((frame+i)%186)>160)?0xff8f8f:0; //The worm. 105 | // hex = (((frame+i)%186)>130)?0x0000ff:0; //The red worm. 106 | // hex = HSVtoHEX( i*.005 - frame*.001, 1, ((((-i%256) - ((frame>>1)%256)+256)%256) ) /256.0*1.2-0.1); 107 | // hex = HSVtoHEX( i*.00500 + ((int)(frame*0.42))*.17, 1, 0.40 ); //Fiesta 108 | 109 | //and my favorite: 110 | // hex = HSVtoHEX( i*.001 - frame*.001, 1, ((((i%256) - ((frame>>1)%256)+256)%256) ) /256.0*1.5-0.1); //Long, smooth, transitioning. 1.0 overloads. Trying 0.9. If 0.9 works, should back off. 111 | 112 | // hex = HSVtoHEX( i*0.005376344 - frame*.001, 1.3, 1.0); //Long, smooth, transitioning. full-brigth 113 | 114 | 115 | //Chaser 116 | // hex = HSVtoHEX( i*.002 + frame*.002, 4, 1.0 ); //0.50 = overload. 0.45 = overheat? =0.40 = HOT 117 | // hex = HSVtoHEX( frame*.001, 1.0, 1.0); //Long, smooth, transitioning. full-brigth 118 | 119 | // hex = 0x0000ff; 120 | 121 | // hex = HSVtoHEX( i * 0.0002+.3333, 1, 1.0 ); 122 | 123 | 124 | buffer[0+i*3] = (hex>>8); 125 | buffer[1+i*3] = (hex); 126 | buffer[2+i*3] = (hex>>16); 127 | 128 | } 129 | 130 | if( firstoverride >= 0 ) 131 | buffer[0] = firstoverride; 132 | 133 | #ifdef BEAT 134 | for( i = 0; i < 4;i ++ ) 135 | { 136 | uint32_t hex = ((-frame % 48)+48)*256/48;//((frame %48) == 0)?0xffffff:0x000000; 137 | hex |= hex<<8 | hex<<16; 138 | buffer[0+i*3] = (hex>>8); 139 | buffer[1+i*3] = (hex); 140 | buffer[2+i*3] = (hex>>16); 141 | } 142 | #endif 143 | 144 | sendto(sockfd,buffer,sizeof(buffer),0, 145 | (struct sockaddr *)&servaddr,sizeof(servaddr)); 146 | frame++; 147 | printf( "." ); 148 | fflush( stdout ); 149 | usleep(14000); 150 | }*/ 151 | } 152 | 153 | -------------------------------------------------------------------------------- /top/top.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | int sockfd; 8 | struct sockaddr_in servaddr; 9 | 10 | 11 | unsigned long HSVtoHEX( float hue, float sat, float value ) 12 | { 13 | 14 | float pr = 0; 15 | float pg = 0; 16 | float pb = 0; 17 | 18 | short ora = 0; 19 | short og = 0; 20 | short ob = 0; 21 | 22 | float ro = fmod( hue * 6, 6. ); 23 | 24 | float avg = 0; 25 | 26 | ro = fmod( ro + 6 + 1, 6 ); //Hue was 60* off... 27 | 28 | if( ro < 1 ) //yellow->red 29 | { 30 | pr = 1; 31 | pg = 1. - ro; 32 | } else if( ro < 2 ) 33 | { 34 | pr = 1; 35 | pb = ro - 1.; 36 | } else if( ro < 3 ) 37 | { 38 | pr = 3. - ro; 39 | pb = 1; 40 | } else if( ro < 4 ) 41 | { 42 | pb = 1; 43 | pg = ro - 3; 44 | } else if( ro < 5 ) 45 | { 46 | pb = 5 - ro; 47 | pg = 1; 48 | } else 49 | { 50 | pg = 1; 51 | pr = ro - 5; 52 | } 53 | 54 | //Actually, above math is backwards, oops! 55 | pr *= value; 56 | pg *= value; 57 | pb *= value; 58 | 59 | avg += pr; 60 | avg += pg; 61 | avg += pb; 62 | 63 | pr = pr * sat + avg * (1.-sat); 64 | pg = pg * sat + avg * (1.-sat); 65 | pb = pb * sat + avg * (1.-sat); 66 | 67 | ora = pr * 255; 68 | og = pb * 255; 69 | ob = pg * 255; 70 | 71 | if( ora < 0 ) ora = 0; 72 | if( ora > 255 ) ora = 255; 73 | if( og < 0 ) og = 0; 74 | if( og > 255 ) og = 255; 75 | if( ob < 0 ) ob = 0; 76 | if( ob > 255 ) ob = 255; 77 | 78 | return (ob<<16) | (og<<8) | ora; 79 | } 80 | 81 | int main( int argc, char ** argv ) 82 | { 83 | int firstoverride = -1; 84 | if( argc < 2 ) 85 | { 86 | fprintf( stderr, "Error: usage: [tool] [ip address] [optional: no of lights] [optional (if present, first override (i.e. white on some systems))]\n" ); 87 | return -1; 88 | } 89 | uint32_t frame = 0; 90 | sockfd=socket(AF_INET,SOCK_DGRAM,0); 91 | 92 | bzero(&servaddr,sizeof(servaddr)); 93 | servaddr.sin_family = AF_INET; 94 | servaddr.sin_addr.s_addr=inet_addr(argv[1]); 95 | servaddr.sin_port=htons(7777); 96 | 97 | int lights = 186; 98 | 99 | if( argc >= 3 ) 100 | { 101 | lights = atoi( argv[2] ); 102 | } 103 | if( argc >= 4 ) 104 | { 105 | firstoverride = atoi( argv[3] ); 106 | } 107 | 108 | printf( "Lights: %d\n", lights ); 109 | 110 | while(1) 111 | { 112 | //#define lights 186 113 | uint8_t buffer[lights*3]; 114 | int i; 115 | for( i = 0; i < lights; i++ ) 116 | { 117 | 118 | //#define BEAT 119 | uint32_t hex; 120 | //For button 121 | // hex = (i == (frame % lights))?0xFFFFFF:0x000000; 122 | // hex=0xffffff; 123 | // hex = HSVtoHEX( i*(1/12.) + frame*(1./48.), 1, 1.0 ); 124 | // hex = (((frame+i)%lights)>(lights-2))?0xffffff:0; //The worm. 125 | hex = HSVtoHEX( i*.03 - frame*.04, 1, (((((-i<<3)%256) - ((frame<<3)%256)+256)%256) ) /256.0*0.9-0.1); //Long, smooth, transitioning. 1.0 126 | 127 | 128 | //For wall art. 129 | 130 | // hex = 0x404040; 131 | 132 | hex = HSVtoHEX( i*.05 + frame*.01, 1, 1.0 ); //0.50 = overload. 0.45 = overheat? =0.40 = HOT 133 | 134 | // hex = (((frame+i)%186)>160)?0xff8f8f:0; //The worm. 135 | // hex = (((frame+i)%186)>130)?0x0000ff:0; //The red worm. 136 | // hex = HSVtoHEX( i*.005 - frame*.001, 1, ((((-i%256) - ((frame>>1)%256)+256)%256) ) /256.0*1.2-0.1); 137 | // hex = HSVtoHEX( i*.00500 + ((int)(frame*0.42))*.17, 1, 0.40 ); //Fiesta 138 | 139 | //and my favorite: 140 | // hex = HSVtoHEX( i*.001 - frame*.001, 1, ((((i%256) - ((frame>>1)%256)+256)%256) ) /256.0*1.5-0.1); //Long, smooth, transitioning. 1.0 overloads. Trying 0.9. If 0.9 works, should back off. 141 | 142 | // hex = HSVtoHEX( i*0.005376344 - frame*.001, 1.3, 1.0); //Long, smooth, transitioning. full-brigth 143 | 144 | 145 | //Chaser 146 | // hex = HSVtoHEX( i*.002 + frame*.002, 4, 1.0 ); //0.50 = overload. 0.45 = overheat? =0.40 = HOT 147 | // hex = HSVtoHEX( frame*.001, 1.0, 1.0); //Long, smooth, transitioning. full-brigth 148 | 149 | // hex = 0x0000ff; 150 | 151 | // hex = HSVtoHEX( i * 0.0002+.3333, 1, 1.0 ); 152 | 153 | 154 | buffer[0+i*3] = (hex>>8); 155 | buffer[1+i*3] = (hex); 156 | buffer[2+i*3] = (hex>>16); 157 | 158 | } 159 | 160 | if( firstoverride >= 0 ) 161 | buffer[0] = firstoverride; 162 | 163 | #ifdef BEAT 164 | for( i = 0; i < 4;i ++ ) 165 | { 166 | uint32_t hex = ((-frame % 48)+48)*256/48;//((frame %48) == 0)?0xffffff:0x000000; 167 | hex |= hex<<8 | hex<<16; 168 | buffer[0+i*3] = (hex>>8); 169 | buffer[1+i*3] = (hex); 170 | buffer[2+i*3] = (hex>>16); 171 | } 172 | #endif 173 | 174 | sendto(sockfd,buffer,sizeof(buffer),0, 175 | (struct sockaddr *)&servaddr,sizeof(servaddr)); 176 | frame++; 177 | printf( "." ); 178 | fflush( stdout ); 179 | usleep(14000); 180 | } 181 | } 182 | 183 | -------------------------------------------------------------------------------- /hardware/esp_micro85-only-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 Date: Thu 07 Jul 2016 02:21:44 PM EDT 2 | #encoding utf-8 3 | # 4 | # +3.3V 5 | # 6 | DEF +3.3V #PWR 0 0 Y Y 1 F P 7 | F0 "#PWR" 0 -40 30 H I C CNN 8 | F1 "+3.3V" 0 110 30 H V C CNN 9 | F2 "~" 0 0 60 H V C CNN 10 | F3 "~" 0 0 60 H V C CNN 11 | ALIAS +3,3V 12 | DRAW 13 | X +3.3V 1 0 0 0 U 30 30 0 0 W N 14 | C 0 60 20 0 1 0 N 15 | P 3 0 1 0 0 0 0 40 0 40 N 16 | ENDDRAW 17 | ENDDEF 18 | # 19 | # +5V 20 | # 21 | DEF +5V #PWR 0 40 Y Y 1 F P 22 | F0 "#PWR" 0 90 20 H I C CNN 23 | F1 "+5V" 0 90 30 H V C CNN 24 | F2 "~" 0 0 60 H V C CNN 25 | F3 "~" 0 0 60 H V C CNN 26 | DRAW 27 | X +5V 1 0 0 0 U 20 20 0 0 W N 28 | C 0 50 20 0 1 0 N 29 | P 4 0 1 0 0 0 0 30 0 30 0 30 N 30 | ENDDRAW 31 | ENDDEF 32 | # 33 | # C 34 | # 35 | DEF C C 0 10 N Y 1 F N 36 | F0 "C" 0 100 40 H V L CNN 37 | F1 "C" 6 -85 40 H V L CNN 38 | F2 "~" 38 -150 30 H V C CNN 39 | F3 "~" 0 0 60 H V C CNN 40 | $FPLIST 41 | SM* 42 | C? 43 | C1-1 44 | $ENDFPLIST 45 | DRAW 46 | P 2 0 1 20 -80 -30 80 -30 N 47 | P 2 0 1 20 -80 30 80 30 N 48 | X ~ 1 0 200 170 D 40 40 1 1 P 49 | X ~ 2 0 -200 170 U 40 40 1 1 P 50 | ENDDRAW 51 | ENDDEF 52 | # 53 | # CONN_1 54 | # 55 | DEF ~CONN_1 P 0 30 N N 1 F N 56 | F0 "P" 80 0 40 H V L CNN 57 | F1 "CONN_1" 0 55 30 H I C CNN 58 | F2 "~" 0 0 60 H V C CNN 59 | F3 "~" 0 0 60 H V C CNN 60 | DRAW 61 | C 0 0 31 0 1 0 N 62 | P 2 0 1 0 -30 0 -50 0 N 63 | X 1 1 -150 0 100 R 60 60 1 1 P 64 | ENDDRAW 65 | ENDDEF 66 | # 67 | # ESP8266EX 68 | # 69 | DEF ESP8266EX U 0 40 Y Y 1 F N 70 | F0 "U" -900 700 60 H V C CNN 71 | F1 "ESP8266EX" -850 600 60 H V C CNN 72 | F2 "~" -900 700 60 H V C CNN 73 | F3 "~" -900 700 60 H V C CNN 74 | DRAW 75 | S -850 500 700 -500 0 1 0 f 76 | X VddA 1 -1150 350 300 R 50 50 1 1 I 77 | X LNA/ANT 2 -1150 250 300 R 50 50 1 1 I 78 | X Vdd3P3 3 -1150 150 300 R 50 50 1 1 I 79 | X Vdd3P3 4 -1150 50 300 R 50 50 1 1 I 80 | X VddRCT 5 -1150 -50 300 R 50 50 1 1 I 81 | X TOUT 6 -1150 -150 300 R 50 50 1 1 I 82 | X CHIP_EN 7 -1150 -250 300 R 50 50 1 1 I 83 | X XPD_DCDC 8 -1150 -350 300 R 50 50 1 1 I 84 | X MTMS/GPIO14 9 -350 -800 300 U 50 50 1 1 I 85 | X MTDI/GPIO12 10 -250 -800 300 U 50 50 1 1 I 86 | X SD_CMD 20 1000 -50 300 L 50 50 1 1 I 87 | X VDDA 30 -150 800 300 D 50 50 1 1 I 88 | X VddPST 11 -150 -800 300 U 50 50 1 1 I 89 | X SD_CLK 21 1000 50 300 L 50 50 1 1 I 90 | X RES12K 31 -250 800 300 D 50 50 1 1 I 91 | X MTCK/GPIO13 12 -50 -800 300 U 50 50 1 1 I 92 | X SD_D0 22 1000 150 300 L 50 50 1 1 I 93 | X EXT_RSTB 32 -350 800 300 D 50 50 1 1 I 94 | X MTDO/GPIO15 13 50 -800 300 U 50 50 1 1 I 95 | X SD_D1 23 1000 250 300 L 50 50 1 1 I 96 | X GND 33 -450 800 300 D 50 50 1 1 I 97 | X GPIO2 14 150 -800 300 U 50 50 1 1 I 98 | X GP5/VD 24 1000 350 300 L 50 50 1 1 I 99 | X GPIO0 15 250 -800 300 U 50 50 1 1 I 100 | X URXD 25 350 800 300 D 50 50 1 1 I 101 | X GP4/VD 16 350 -800 300 U 50 50 1 1 I 102 | X UTXD 26 250 800 300 D 50 50 1 1 I 103 | X VddPST 17 1000 -350 300 L 50 50 1 1 I 104 | X XTAL_OUT 27 150 800 300 D 50 50 1 1 I 105 | X SD_D2 18 1000 -250 300 L 50 50 1 1 I 106 | X XTAL_IN 28 50 800 300 D 50 50 1 1 I 107 | X SD_D3 19 1000 -150 300 L 50 50 1 1 I 108 | X VDDD 29 -50 800 300 D 50 50 1 1 I 109 | ENDDRAW 110 | ENDDEF 111 | # 112 | # GND 113 | # 114 | DEF ~GND #PWR 0 0 Y Y 1 F P 115 | F0 "#PWR" 0 0 30 H I C CNN 116 | F1 "GND" 0 -70 30 H I C CNN 117 | F2 "~" 0 0 60 H V C CNN 118 | F3 "~" 0 0 60 H V C CNN 119 | DRAW 120 | P 4 0 1 0 -50 0 0 -50 50 0 -50 0 N 121 | X GND 1 0 0 0 U 30 30 1 1 W N 122 | ENDDRAW 123 | ENDDEF 124 | # 125 | # MCP1824 126 | # 127 | DEF MCP1824 U 0 40 Y Y 1 F N 128 | F0 "U" -250 300 60 H V C CNN 129 | F1 "MCP1824" 100 -300 60 H V C CNN 130 | F2 "~" 0 0 60 H V C CNN 131 | F3 "~" 0 0 60 H V C CNN 132 | $FPLIST 133 | SOT23-5 134 | $ENDFPLIST 135 | DRAW 136 | S -300 200 300 -200 0 1 0 f 137 | X Vin 1 -600 100 300 R 50 50 1 1 I 138 | X GND 2 -600 0 300 R 50 50 1 1 I 139 | X ~SHDN 3 -600 -100 300 R 50 50 1 1 I 140 | X PWRGD 4 600 -100 300 L 50 50 1 1 O 141 | X OUT 5 600 100 300 L 50 50 1 1 O 142 | ENDDRAW 143 | ENDDEF 144 | # 145 | # R 146 | # 147 | DEF R R 0 0 N Y 1 F N 148 | F0 "R" 80 0 40 V V C CNN 149 | F1 "R" 7 1 40 V V C CNN 150 | F2 "~" -70 0 30 V V C CNN 151 | F3 "~" 0 0 30 H V C CNN 152 | $FPLIST 153 | R? 154 | SM0603 155 | SM0805 156 | R?-* 157 | SM1206 158 | $ENDFPLIST 159 | DRAW 160 | S -40 150 40 -150 0 1 12 N 161 | X ~ 1 0 250 100 D 60 60 1 1 P 162 | X ~ 2 0 -250 100 U 60 60 1 1 P 163 | ENDDRAW 164 | ENDDEF 165 | # 166 | # XTAL4P 167 | # 168 | DEF XTAL4P X 0 40 N N 1 F N 169 | F0 "X" 0 150 60 H V C CNN 170 | F1 "XTAL4P" 0 -150 60 H V C CNN 171 | F2 "~" 0 0 60 H V C CNN 172 | F3 "~" 0 0 60 H V C CNN 173 | DRAW 174 | P 2 0 1 16 -100 100 -100 -100 N 175 | P 2 0 1 16 100 100 100 -100 N 176 | P 5 0 1 12 -50 50 50 50 50 -50 -50 -50 -50 50 f 177 | X 1 1 -300 0 200 R 40 40 1 1 P 178 | X 2 2 300 0 200 L 40 40 1 1 P 179 | X GND 3 -50 -300 300 U 50 50 1 1 P 180 | X GND 4 50 -300 300 U 50 50 1 1 P 181 | ENDDRAW 182 | ENDDEF 183 | # 184 | #End Library 185 | -------------------------------------------------------------------------------- /include/driver/uart_register.h: -------------------------------------------------------------------------------- 1 | //Generated at 2012-07-03 18:44:06 2 | /* 3 | * Copyright (c) 2010 - 2011 Espressif System 4 | * 5 | */ 6 | 7 | #ifndef UART_REGISTER_H_INCLUDED 8 | #define UART_REGISTER_H_INCLUDED 9 | #define REG_UART_BASE( i ) (0x60000000+(i)*0xf00) 10 | //version value:32'h062000 11 | 12 | #define UART_FIFO( i ) (REG_UART_BASE( i ) + 0x0) 13 | #define UART_RXFIFO_RD_BYTE 0x000000FF 14 | #define UART_RXFIFO_RD_BYTE_S 0 15 | 16 | #define UART_INT_RAW( i ) (REG_UART_BASE( i ) + 0x4) 17 | #define UART_RXFIFO_TOUT_INT_RAW (BIT(8)) 18 | #define UART_BRK_DET_INT_RAW (BIT(7)) 19 | #define UART_CTS_CHG_INT_RAW (BIT(6)) 20 | #define UART_DSR_CHG_INT_RAW (BIT(5)) 21 | #define UART_RXFIFO_OVF_INT_RAW (BIT(4)) 22 | #define UART_FRM_ERR_INT_RAW (BIT(3)) 23 | #define UART_PARITY_ERR_INT_RAW (BIT(2)) 24 | #define UART_TXFIFO_EMPTY_INT_RAW (BIT(1)) 25 | #define UART_RXFIFO_FULL_INT_RAW (BIT(0)) 26 | 27 | #define UART_INT_ST( i ) (REG_UART_BASE( i ) + 0x8) 28 | #define UART_RXFIFO_TOUT_INT_ST (BIT(8)) 29 | #define UART_BRK_DET_INT_ST (BIT(7)) 30 | #define UART_CTS_CHG_INT_ST (BIT(6)) 31 | #define UART_DSR_CHG_INT_ST (BIT(5)) 32 | #define UART_RXFIFO_OVF_INT_ST (BIT(4)) 33 | #define UART_FRM_ERR_INT_ST (BIT(3)) 34 | #define UART_PARITY_ERR_INT_ST (BIT(2)) 35 | #define UART_TXFIFO_EMPTY_INT_ST (BIT(1)) 36 | #define UART_RXFIFO_FULL_INT_ST (BIT(0)) 37 | 38 | #define UART_INT_ENA( i ) (REG_UART_BASE( i ) + 0xC) 39 | #define UART_RXFIFO_TOUT_INT_ENA (BIT(8)) 40 | #define UART_BRK_DET_INT_ENA (BIT(7)) 41 | #define UART_CTS_CHG_INT_ENA (BIT(6)) 42 | #define UART_DSR_CHG_INT_ENA (BIT(5)) 43 | #define UART_RXFIFO_OVF_INT_ENA (BIT(4)) 44 | #define UART_FRM_ERR_INT_ENA (BIT(3)) 45 | #define UART_PARITY_ERR_INT_ENA (BIT(2)) 46 | #define UART_TXFIFO_EMPTY_INT_ENA (BIT(1)) 47 | #define UART_RXFIFO_FULL_INT_ENA (BIT(0)) 48 | 49 | #define UART_INT_CLR( i ) (REG_UART_BASE( i ) + 0x10) 50 | #define UART_RXFIFO_TOUT_INT_CLR (BIT(8)) 51 | #define UART_BRK_DET_INT_CLR (BIT(7)) 52 | #define UART_CTS_CHG_INT_CLR (BIT(6)) 53 | #define UART_DSR_CHG_INT_CLR (BIT(5)) 54 | #define UART_RXFIFO_OVF_INT_CLR (BIT(4)) 55 | #define UART_FRM_ERR_INT_CLR (BIT(3)) 56 | #define UART_PARITY_ERR_INT_CLR (BIT(2)) 57 | #define UART_TXFIFO_EMPTY_INT_CLR (BIT(1)) 58 | #define UART_RXFIFO_FULL_INT_CLR (BIT(0)) 59 | 60 | #define UART_CLKDIV( i ) (REG_UART_BASE( i ) + 0x14) 61 | #define UART_CLKDIV_CNT 0x000FFFFF 62 | #define UART_CLKDIV_S 0 63 | 64 | #define UART_AUTOBAUD( i ) (REG_UART_BASE( i ) + 0x18) 65 | #define UART_GLITCH_FILT 0x000000FF 66 | #define UART_GLITCH_FILT_S 8 67 | #define UART_AUTOBAUD_EN (BIT(0)) 68 | 69 | #define UART_STATUS( i ) (REG_UART_BASE( i ) + 0x1C) 70 | #define UART_TXD (BIT(31)) 71 | #define UART_RTSN (BIT(30)) 72 | #define UART_DTRN (BIT(29)) 73 | #define UART_TXFIFO_CNT 0x000000FF 74 | #define UART_TXFIFO_CNT_S 16 75 | #define UART_RXD (BIT(15)) 76 | #define UART_CTSN (BIT(14)) 77 | #define UART_DSRN (BIT(13)) 78 | #define UART_RXFIFO_CNT 0x000000FF 79 | #define UART_RXFIFO_CNT_S 0 80 | 81 | #define UART_CONF0( i ) (REG_UART_BASE( i ) + 0x20) 82 | #define UART_TXFIFO_RST (BIT(18)) 83 | #define UART_RXFIFO_RST (BIT(17)) 84 | #define UART_IRDA_EN (BIT(16)) 85 | #define UART_TX_FLOW_EN (BIT(15)) 86 | #define UART_LOOPBACK (BIT(14)) 87 | #define UART_IRDA_RX_INV (BIT(13)) 88 | #define UART_IRDA_TX_INV (BIT(12)) 89 | #define UART_IRDA_WCTL (BIT(11)) 90 | #define UART_IRDA_TX_EN (BIT(10)) 91 | #define UART_IRDA_DPLX (BIT(9)) 92 | #define UART_TXD_BRK (BIT(8)) 93 | #define UART_SW_DTR (BIT(7)) 94 | #define UART_SW_RTS (BIT(6)) 95 | #define UART_STOP_BIT_NUM 0x00000003 96 | #define UART_STOP_BIT_NUM_S 4 97 | #define UART_BIT_NUM 0x00000003 98 | #define UART_BIT_NUM_S 2 99 | #define UART_PARITY_EN (BIT(1)) 100 | #define UART_PARITY (BIT(0)) 101 | 102 | #define UART_CONF1( i ) (REG_UART_BASE( i ) + 0x24) 103 | #define UART_RX_TOUT_EN (BIT(31)) 104 | #define UART_RX_TOUT_THRHD 0x0000007F 105 | #define UART_RX_TOUT_THRHD_S 24 106 | #define UART_RX_FLOW_EN (BIT(23)) 107 | #define UART_RX_FLOW_THRHD 0x0000007F 108 | #define UART_RX_FLOW_THRHD_S 16 109 | #define UART_TXFIFO_EMPTY_THRHD 0x0000007F 110 | #define UART_TXFIFO_EMPTY_THRHD_S 8 111 | #define UART_RXFIFO_FULL_THRHD 0x0000007F 112 | #define UART_RXFIFO_FULL_THRHD_S 0 113 | 114 | #define UART_LOWPULSE( i ) (REG_UART_BASE( i ) + 0x28) 115 | #define UART_LOWPULSE_MIN_CNT 0x000FFFFF 116 | #define UART_LOWPULSE_MIN_CNT_S 0 117 | 118 | #define UART_HIGHPULSE( i ) (REG_UART_BASE( i ) + 0x2C) 119 | #define UART_HIGHPULSE_MIN_CNT 0x000FFFFF 120 | #define UART_HIGHPULSE_MIN_CNT_S 0 121 | 122 | #define UART_PULSE_NUM( i ) (REG_UART_BASE( i ) + 0x30) 123 | #define UART_PULSE_NUM_CNT 0x0003FF 124 | #define UART_PULSE_NUM_CNT_S 0 125 | 126 | #define UART_DATE( i ) (REG_UART_BASE( i ) + 0x78) 127 | #define UART_ID( i ) (REG_UART_BASE( i ) + 0x7C) 128 | #endif // UART_REGISTER_H_INCLUDED 129 | -------------------------------------------------------------------------------- /include/pin_mux_register.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Espressif System 2010 - 2012 3 | * 4 | */ 5 | 6 | #ifndef _PIN_MUX_H_ 7 | #define _PIN_MUX_H_ 8 | 9 | #define PERIPHS_IO_MUX 0x60000800 10 | 11 | #define PERIPHS_IO_MUX_FUNC 0x13 12 | #define PERIPHS_IO_MUX_FUNC_S 4 13 | #define PERIPHS_IO_MUX_PULLUP BIT7 14 | #define PERIPHS_IO_MUX_PULLDWN BIT6 15 | #define PERIPHS_IO_MUX_SLEEP_PULLUP BIT3 16 | #define PERIPHS_IO_MUX_SLEEP_PULLDWN BIT2 17 | #define PERIPHS_IO_MUX_SLEEP_OE BIT1 18 | #define PERIPHS_IO_MUX_OE BIT0 19 | 20 | #define PERIPHS_IO_MUX_CONF_U (PERIPHS_IO_MUX + 0x00) 21 | #define SPI0_CLK_EQU_SYS_CLK BIT8 22 | #define SPI1_CLK_EQU_SYS_CLK BIT9 23 | 24 | #define PERIPHS_IO_MUX_MTDI_U (PERIPHS_IO_MUX + 0x04) 25 | #define FUNC_MTDI 0 26 | #define FUNC_I2SI_DATA 1 27 | #define FUNC_HSPIQ_MISO 2 28 | #define FUNC_GPIO12 3 29 | #define FUNC_UART0_DTR 4 30 | 31 | #define PERIPHS_IO_MUX_MTCK_U (PERIPHS_IO_MUX + 0x08) 32 | #define FUNC_MTCK 0 33 | #define FUNC_I2SI_BCK 1 34 | #define FUNC_HSPID_MOSI 2 35 | #define FUNC_GPIO13 3 36 | #define FUNC_UART0_CTS 4 37 | 38 | #define PERIPHS_IO_MUX_MTMS_U (PERIPHS_IO_MUX + 0x0C) 39 | #define FUNC_MTMS 0 40 | #define FUNC_I2SI_WS 1 41 | #define FUNC_HSPI_CLK 2 42 | #define FUNC_GPIO14 3 43 | #define FUNC_UART0_DSR 4 44 | 45 | #define PERIPHS_IO_MUX_MTDO_U (PERIPHS_IO_MUX + 0x10) 46 | #define FUNC_MTDO 0 47 | #define FUNC_I2SO_BCK 1 48 | #define FUNC_HSPI_CS0 2 49 | #define FUNC_GPIO15 3 50 | #define FUNC_U0RTS 4 51 | #define FUNC_UART0_RTS 4 52 | 53 | #define PERIPHS_IO_MUX_U0RXD_U (PERIPHS_IO_MUX + 0x14) 54 | #define FUNC_U0RXD 0 55 | #define FUNC_I2SO_DATA 1 56 | #define FUNC_GPIO3 3 57 | #define FUNC_CLK_XTAL_BK 4 58 | 59 | #define PERIPHS_IO_MUX_U0TXD_U (PERIPHS_IO_MUX + 0x18) 60 | #define FUNC_U0TXD 0 61 | #define FUNC_SPICS1 1 62 | #define FUNC_GPIO1 3 63 | #define FUNC_CLK_RTC_BK 4 64 | 65 | #define PERIPHS_IO_MUX_SD_CLK_U (PERIPHS_IO_MUX + 0x1c) 66 | #define FUNC_SDCLK 0 67 | #define FUNC_SPICLK 1 68 | #define FUNC_GPIO6 3 69 | #define UART1_CTS 4 70 | 71 | #define PERIPHS_IO_MUX_SD_DATA0_U (PERIPHS_IO_MUX + 0x20) 72 | #define FUNC_SDDATA0 0 73 | #define FUNC_SPIQ_MISO 1 74 | #define FUNC_GPIO7 3 75 | #define FUNC_U1TXD 4 76 | #define FUNC_UART1_TXD 4 77 | 78 | #define PERIPHS_IO_MUX_SD_DATA1_U (PERIPHS_IO_MUX + 0x24) 79 | #define FUNC_SDDATA1 0 80 | #define FUNC_SPID_MOSI 1 81 | #define FUNC_GPIO8 3 82 | #define FUNC_U1RXD 4 83 | #define FUNC_UART1_RXD 4 84 | 85 | #define PERIPHS_IO_MUX_SD_DATA2_U (PERIPHS_IO_MUX + 0x28) 86 | #define FUNC_SDDATA2 0 87 | #define FUNC_SPIHD 1 88 | #define FUNC_GPIO9 3 89 | #define UFNC_HSPIHD 4 90 | 91 | #define PERIPHS_IO_MUX_SD_DATA3_U (PERIPHS_IO_MUX + 0x2c) 92 | #define FUNC_SDDATA3 0 93 | #define FUNC_SPIWP 1 94 | #define FUNC_GPIO10 3 95 | #define FUNC_HSPIWP 4 96 | 97 | #define PERIPHS_IO_MUX_SD_CMD_U (PERIPHS_IO_MUX + 0x30) 98 | #define FUNC_SDCMD 0 99 | #define FUNC_SPICS0 1 100 | #define FUNC_GPIO11 3 101 | #define U1RTS 4 102 | #define UART1_RTS 4 103 | 104 | #define PERIPHS_IO_MUX_GPIO0_U (PERIPHS_IO_MUX + 0x34) 105 | #define FUNC_GPIO0 0 106 | #define FUNC_SPICS2 1 107 | #define FUNC_CLK_OUT 4 108 | 109 | #define PERIPHS_IO_MUX_GPIO2_U (PERIPHS_IO_MUX + 0x38) 110 | #define FUNC_GPIO2 0 111 | #define FUNC_I2SO_WS 1 112 | #define FUNC_U1TXD_BK 2 113 | #define FUNC_UART1_TXD_BK 2 114 | #define FUNC_U0TXD_BK 4 115 | #define FUNC_UART0_TXD_BK 4 116 | 117 | #define PERIPHS_IO_MUX_GPIO4_U (PERIPHS_IO_MUX + 0x3C) 118 | #define FUNC_GPIO4 0 119 | #define FUNC_CLK_XTAL 1 120 | 121 | #define PERIPHS_IO_MUX_GPIO5_U (PERIPHS_IO_MUX + 0x40) 122 | #define FUNC_GPIO5 0 123 | #define FUNC_CLK_RTC 1 124 | 125 | #define PIN_PULLUP_DIS(PIN_NAME) CLEAR_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP) 126 | #define PIN_PULLUP_EN(PIN_NAME) SET_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP) 127 | 128 | //XXX THIS LOOKS WRONG. 129 | 130 | #undef PIN_FUNC_SELECT 131 | 132 | #define PIN_FUNC_SELECT(PIN_NAME, FUNC) do { \ 133 | CLEAR_PERI_REG_MASK(PIN_NAME, (PERIPHS_IO_MUX_FUNC<< Charles Lohr, see LICENSE file. 2 | 3 | #include "mem.h" 4 | #include "c_types.h" 5 | #include "user_interface.h" 6 | #include "ets_sys.h" 7 | #include "driver/uart.h" 8 | #include "osapi.h" 9 | #include "espconn.h" 10 | #include "mystuff.h" 11 | #include "ws2812_i2s.h" 12 | 13 | 14 | #define PORT 7777 15 | #define REF_PORT 9999 16 | 17 | #define procTaskPrio 0 18 | #define procTaskQueueLen 1 19 | 20 | static volatile os_timer_t some_timer; 21 | static struct espconn *pUdpServer; 22 | static struct espconn *pUdpServer9999; 23 | uint8_t last_leds[512*3]; 24 | int last_led_count; 25 | 26 | 27 | void user_rf_pre_init(void) 28 | { 29 | //nothing. 30 | } 31 | 32 | 33 | char * strcat( char * dest, char * src ) 34 | { 35 | return strcat(dest, src ); 36 | } 37 | 38 | 39 | 40 | //Tasks that happen all the time. 41 | 42 | os_event_t procTaskQueue[procTaskQueueLen]; 43 | 44 | static void ICACHE_FLASH_ATTR procTask(os_event_t *events) 45 | { 46 | system_os_post(procTaskPrio, 0, 0 ); 47 | } 48 | 49 | //Timer event. 50 | static void ICACHE_FLASH_ATTR myTimer(void *arg) 51 | { 52 | int i; 53 | ws2812_push( last_leds, last_led_count ); 54 | for( i = 0; i < last_led_count*3; i++ ) 55 | { 56 | int k = last_leds[i]; 57 | if( k ) 58 | k -= 10; 59 | if( k < 10 ) last_leds[i] = 0; 60 | else last_leds[i] = k; 61 | } 62 | 63 | #ifndef SERVER 64 | printf( " RSSI: %d\n", wifi_station_get_rssi() ); 65 | 66 | uint32_to_IP4( ((uint32_t)0xffffffff), pUdpServer->proto.udp->remote_ip ); 67 | pUdpServer->proto.udp->remote_port = 9999; 68 | espconn_sent( (struct espconn *)pUdpServer, "!!!", 3 ); 69 | #endif 70 | 71 | } 72 | 73 | #ifdef SERVER 74 | static void ICACHE_FLASH_ATTR udpserver_recv_9999(void *arg, char *pusrdata, unsigned short len) 75 | { 76 | remot_info * ri = 0; 77 | struct espconn *rc = (struct espconn *)arg; 78 | espconn_get_connection_info( rc, &ri, 0); 79 | printf( "Got 9999 %d %d\n", pUdpServer->proto.udp->remote_port, pUdpServer->proto.udp->local_port ); 80 | 81 | //Unicast packet from whence it came. 82 | ets_memcpy( rc->proto.udp->remote_ip, ri->remote_ip, 4 ); 83 | rc->proto.udp->remote_port = ri->remote_port; 84 | espconn_sendto( rc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff", 15 ); 85 | 86 | } 87 | 88 | #endif 89 | //Called when new packet comes in. 90 | static void ICACHE_FLASH_ATTR udpserver_recv(void *arg, char *pusrdata, unsigned short len) 91 | { 92 | struct espconn *pespconn = (struct espconn *)arg; 93 | 94 | uart0_sendStr("X"); 95 | 96 | len -= 3; 97 | if( len > sizeof(last_leds) + 3 ) 98 | { 99 | len = sizeof(last_leds) + 3; 100 | } 101 | ets_memcpy( last_leds, pusrdata+3, len ); 102 | last_led_count = len / 3; 103 | } 104 | 105 | void ICACHE_FLASH_ATTR charrx( uint8_t c ) 106 | { 107 | //Called from UART. 108 | } 109 | 110 | void user_init(void) 111 | { 112 | uart_init(BIT_RATE_115200, BIT_RATE_115200); 113 | 114 | uart0_sendStr("\r\n\033cesp8266 ws2812 driver\r\n"); 115 | 116 | //Uncomment this to force a system restore. 117 | // system_restore(); 118 | 119 | pUdpServer = (struct espconn *)os_zalloc(sizeof(struct espconn)); 120 | ets_memset( pUdpServer, 0, sizeof( struct espconn ) ); 121 | espconn_create( pUdpServer ); 122 | pUdpServer->type = ESPCONN_UDP; 123 | pUdpServer->proto.udp = (esp_udp *)os_zalloc(sizeof(esp_udp)); 124 | pUdpServer->proto.udp->local_port = 7777; 125 | espconn_regist_recvcb(pUdpServer, udpserver_recv); 126 | 127 | if( espconn_create( pUdpServer ) ) 128 | { 129 | while(1) { uart0_sendStr( "\r\nFAULT\r\n" ); } 130 | } 131 | 132 | 133 | #ifdef SERVER 134 | pUdpServer9999 = (struct espconn *)os_zalloc(sizeof(struct espconn)); 135 | ets_memset( pUdpServer9999, 0, sizeof( struct espconn ) ); 136 | espconn_create( pUdpServer9999 ); 137 | pUdpServer9999->type = ESPCONN_UDP; 138 | pUdpServer9999->proto.udp = (esp_udp *)os_zalloc(sizeof(esp_udp)); 139 | pUdpServer9999->proto.udp->local_port = REF_PORT; 140 | espconn_regist_recvcb(pUdpServer9999, udpserver_recv_9999); 141 | 142 | if( espconn_create( pUdpServer9999 ) ) 143 | { 144 | while(1) { uart0_sendStr( "\r\nFAULT\r\n" ); } 145 | } 146 | #endif 147 | 148 | //Set GPIO16 for Input 149 | WRITE_PERI_REG(PAD_XPD_DCDC_CONF, (READ_PERI_REG(PAD_XPD_DCDC_CONF) & 0xffffffbc) | (uint32)0x1); // mux configuration for XPD_DCDC and rtc_gpio0 connection 150 | WRITE_PERI_REG(RTC_GPIO_CONF, (READ_PERI_REG(RTC_GPIO_CONF) & (uint32)0xfffffffe) | (uint32)0x0); //mux configuration for out enable 151 | WRITE_PERI_REG(RTC_GPIO_ENABLE, READ_PERI_REG(RTC_GPIO_ENABLE) & (uint32)0xfffffffe); //out disable 152 | 153 | //Add a process 154 | system_os_task(procTask, procTaskPrio, procTaskQueue, procTaskQueueLen); 155 | 156 | //Timer example 157 | os_timer_disarm(&some_timer); 158 | os_timer_setfn(&some_timer, (os_timer_func_t *)myTimer, NULL); 159 | os_timer_arm(&some_timer, 30, 1); 160 | 161 | ws2812_init(); 162 | 163 | 164 | #ifdef SERVER 165 | 166 | //You are the host AP 167 | 168 | uint8_t ledout[] = { 0x00, 0xFF, 0xFF }; 169 | ws2812_push( ledout, sizeof( ledout ) ); 170 | 171 | struct softap_config sap; 172 | wifi_softap_get_config_default( &sap ); 173 | os_strcpy(&sap.ssid, "rangetest" ); //Not sure why the 'Y' is needed. 174 | sap.ssid_len = 9; 175 | os_strcpy(&sap.password, "soldering" ); 176 | sap.authmode = AUTH_WPA2_PSK; 177 | wifi_softap_set_config_current( &sap ); 178 | wifi_softap_set_config( &sap ); 179 | wifi_set_opmode_current( 2 ); 180 | wifi_set_opmode( 2 ); 181 | 182 | #else 183 | uint8_t ledout[] = { 0x00, 0x00, 0xFF }; 184 | ws2812_push( ledout, sizeof( ledout ) ); 185 | 186 | struct station_config stationConf; 187 | wifi_station_get_config(&stationConf); 188 | os_strcpy(&stationConf.ssid, "rangetest" ); 189 | os_strcpy(&stationConf.password, "soldering" ); 190 | stationConf.bssid_set = 0; 191 | printf( "-->'%s'\n",stationConf.ssid); 192 | printf( "-->'%s'\n",stationConf.password); 193 | wifi_station_set_config(&stationConf); 194 | wifi_station_set_config_current(&stationConf); 195 | wifi_set_opmode_current( 1 ); 196 | wifi_set_opmode( 1 ); 197 | wifi_station_connect(); 198 | 199 | #endif 200 | 201 | 202 | printf( "Boot Ok.\n" ); 203 | printf( "Range Tester Running.\n" ); 204 | 205 | wifi_set_sleep_type(LIGHT_SLEEP_T); 206 | wifi_fpm_set_sleep_type(LIGHT_SLEEP_T); 207 | 208 | 209 | system_os_post(procTaskPrio, 0, 0 ); 210 | } 211 | 212 | 213 | //There is no code in this project that will cause reboots if interrupts are disabled. 214 | void EnterCritical() 215 | { 216 | } 217 | 218 | void ExitCritical() 219 | { 220 | } 221 | 222 | 223 | -------------------------------------------------------------------------------- /common/mystuff.c: -------------------------------------------------------------------------------- 1 | //Unless what else is individually marked, all code in this file is 2 | //Copyright 2015 <>< Charles Lohr Under the MIT/x11 License, NewBSD License or 3 | // ColorChord License. You Choose. 4 | 5 | #include "mystuff.h" 6 | #include 7 | #include 8 | 9 | const char * enctypes[6] = { "open", "wep", "wpa", "wpa2", "wpa_wpa2", 0 }; 10 | 11 | char generic_print_buffer[384]; 12 | char generic_buffer[1500] __attribute__((aligned (32))); 13 | char * generic_ptr; 14 | 15 | int32 my_atoi( const char * in ) 16 | { 17 | int positive = 1; //1 if negative. 18 | int hit = 0; 19 | int val = 0; 20 | while( *in && hit < 11 ) 21 | { 22 | if( *in == '-' ) 23 | { 24 | if( positive == -1 ) return val*positive; 25 | positive = -1; 26 | } else if( *in >= '0' && *in <= '9' ) 27 | { 28 | val *= 10; 29 | val += *in - '0'; 30 | hit++; 31 | } else if (!hit && ( *in == ' ' || *in == '\t' ) ) 32 | { 33 | //okay 34 | } else 35 | { 36 | //bad. 37 | return val*positive; 38 | } 39 | in++; 40 | } 41 | return val*positive; 42 | } 43 | 44 | void Uint32To10Str( char * out, uint32 dat ) 45 | { 46 | int tens = 1000000000; 47 | int val; 48 | int place = 0; 49 | 50 | while( tens > 1 ) 51 | { 52 | if( dat/tens ) break; 53 | tens/=10; 54 | } 55 | 56 | while( tens ) 57 | { 58 | val = dat/tens; 59 | dat -= val*tens; 60 | tens /= 10; 61 | out[place++] = val + '0'; 62 | } 63 | 64 | out[place] = 0; 65 | } 66 | 67 | char tohex1( uint8_t i ) 68 | { 69 | i = i&0x0f; 70 | return (i<10)?('0'+i):('a'-10+i); 71 | } 72 | 73 | int8_t fromhex1( char c ) 74 | { 75 | if( c >= '0' && c <= '9' ) 76 | return c - '0'; 77 | else if( c >= 'a' && c <= 'f' ) 78 | return c - 'a' + 10; 79 | else if( c >= 'A' && c <= 'F' ) 80 | return c - 'A' + 10; 81 | else 82 | return -1; 83 | } 84 | 85 | void NixNewline( char * str ) 86 | { 87 | if( !str ) return; 88 | int sl = ets_strlen( str ); 89 | if( sl > 1 && str[sl-1] == '\n' ) str[sl-1] = 0; 90 | if( sl > 2 && str[sl-2] == '\r' ) str[sl-2] = 0; 91 | } 92 | 93 | 94 | 95 | void ICACHE_FLASH_ATTR EndTCPWrite( struct espconn * conn ) 96 | { 97 | if(generic_ptr!=generic_buffer) 98 | { 99 | int r = espconn_sent(conn,generic_buffer,generic_ptr-generic_buffer); 100 | } 101 | } 102 | 103 | 104 | void PushString( const char * buffer ) 105 | { 106 | char c; 107 | while( c = *(buffer++) ) 108 | PushByte( c ); 109 | } 110 | 111 | void PushBlob( const uint8 * buffer, int len ) 112 | { 113 | int i; 114 | for( i = 0; i < len; i++ ) 115 | PushByte( buffer[i] ); 116 | } 117 | 118 | 119 | int8_t TCPCanSend( struct espconn * conn, int size ) 120 | { 121 | #ifdef SAFESEND 122 | return TCPDoneSend( conn ); 123 | #else 124 | struct espconn_packet infoarg; 125 | sint8 r = espconn_get_packet_info(conn, &infoarg); 126 | 127 | if( infoarg.snd_buf_size >= size && infoarg.snd_queuelen > 0 ) 128 | return 1; 129 | else 130 | return 0; 131 | #endif 132 | } 133 | 134 | int8_t ICACHE_FLASH_ATTR TCPDoneSend( struct espconn * conn ) 135 | { 136 | return conn->state == ESPCONN_CONNECT; 137 | } 138 | 139 | const char * ICACHE_FLASH_ATTR my_strchr( const char * st, char c ) 140 | { 141 | while( *st && *st != c ) st++; 142 | if( !*st ) return 0; 143 | return st; 144 | } 145 | 146 | int ICACHE_FLASH_ATTR ColonsToInts( const char * str, int32_t * vals, int max_quantity ) 147 | { 148 | int i; 149 | for( i = 0; i < max_quantity; i++ ) 150 | { 151 | const char * colon = my_strchr( str, ':' ); 152 | vals[i] = my_atoi( str ); 153 | if( !colon ) break; 154 | str = colon+1; 155 | } 156 | return i+1; 157 | } 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | //from http://stackoverflow.com/questions/342409/how-do-i-base64-encode-decode-in-c 166 | static const char encoding_table[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 167 | 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 168 | 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 169 | 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 170 | 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 171 | 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 172 | 'w', 'x', 'y', 'z', '0', '1', '2', '3', 173 | '4', '5', '6', '7', '8', '9', '+', '/'}; 174 | 175 | static const int mod_table[] = {0, 2, 1}; 176 | 177 | void ICACHE_FLASH_ATTR my_base64_encode(const unsigned char *data, size_t input_length, uint8_t * encoded_data ) 178 | { 179 | 180 | int i, j; 181 | int output_length = 4 * ((input_length + 2) / 3); 182 | 183 | if( !encoded_data ) return; 184 | if( !data ) { encoded_data[0] = '='; encoded_data[1] = 0; return; } 185 | 186 | for (i = 0, j = 0; i < input_length; ) { 187 | 188 | uint32_t octet_a = i < input_length ? (unsigned char)data[i++] : 0; 189 | uint32_t octet_b = i < input_length ? (unsigned char)data[i++] : 0; 190 | uint32_t octet_c = i < input_length ? (unsigned char)data[i++] : 0; 191 | 192 | uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c; 193 | 194 | encoded_data[j++] = encoding_table[(triple >> 3 * 6) & 0x3F]; 195 | encoded_data[j++] = encoding_table[(triple >> 2 * 6) & 0x3F]; 196 | encoded_data[j++] = encoding_table[(triple >> 1 * 6) & 0x3F]; 197 | encoded_data[j++] = encoding_table[(triple >> 0 * 6) & 0x3F]; 198 | } 199 | 200 | for (i = 0; i < mod_table[input_length % 3]; i++) 201 | encoded_data[output_length - 1 - i] = '='; 202 | 203 | encoded_data[j] = 0; 204 | } 205 | 206 | 207 | 208 | void ICACHE_FLASH_ATTR SafeMD5Update( MD5_CTX * md5ctx, uint8_t*from, uint32_t size1 ) 209 | { 210 | char __attribute__ ((aligned (32))) buffer[32]; 211 | 212 | while( size1 > 32 ) 213 | { 214 | ets_memcpy( buffer, from, 32 ); 215 | MD5Update( md5ctx, buffer, 32 ); 216 | size1-=32; 217 | from+=32; 218 | } 219 | ets_memcpy( buffer, from, 32 ); 220 | MD5Update( md5ctx, buffer, size1 ); 221 | } 222 | 223 | char * ICACHE_FLASH_ATTR strdup( const char * src ) 224 | { 225 | int len = ets_strlen( src ); 226 | char * ret = (char*)os_malloc( len+1 ); 227 | ets_memcpy( ret, src, len+1 ); 228 | return ret; 229 | } 230 | 231 | char * ICACHE_FLASH_ATTR strdupcaselower( const char * src ) 232 | { 233 | int i; 234 | int len = ets_strlen( src ); 235 | char * ret = (char*)os_malloc( len+1 ); 236 | for( i = 0; i < len+1; i++ ) 237 | { 238 | if( src[i] >= 'A' && src[i] <= 'Z' ) 239 | ret[i] = src[i] - 'A' + 'a'; 240 | else 241 | ret[i] = src[i]; 242 | } 243 | return ret; 244 | } 245 | 246 | uint32_t ICACHE_FLASH_ATTR GetCurrentIP( ) 247 | { 248 | struct ip_info sta_ip; 249 | wifi_get_ip_info(STATION_IF, &sta_ip); 250 | if( sta_ip.ip.addr == 0 ) 251 | { 252 | wifi_get_ip_info(SOFTAP_IF, &sta_ip); 253 | } 254 | if( sta_ip.ip.addr != 0 ) 255 | return sta_ip.ip.addr; 256 | else 257 | return 0; 258 | } 259 | 260 | -------------------------------------------------------------------------------- /driver/uart.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright 2013-2014 Espressif Systems (Wuxi) 3 | * Copyright 2015 <>< Charles Lohr 4 | * 5 | * FileName: uart.c 6 | * 7 | * Description: Two UART mode configration and interrupt handler. 8 | * Check your hardware connection while use this mode. 9 | * 10 | * Modification history: 11 | * 2014/3/12, v1.0 create this file. 12 | * 2015/1/29, Various changes to the way in which bytes are received. 13 | *******************************************************************************/ 14 | #include 15 | #include 16 | #include 17 | #include 18 | 19 | #include 20 | //#include "ssc.h" 21 | //#include "at.h" 22 | 23 | // UartDev is defined and initialized in rom code. 24 | extern UartDevice UartDev; 25 | //extern os_event_t at_recvTaskQueue[at_recvTaskQueueLen]; 26 | 27 | LOCAL void uart0_rx_intr_handler(void *para); 28 | 29 | /****************************************************************************** 30 | * FunctionName : uart_config 31 | * Description : Internal used function 32 | * UART0 used for data TX/RX, RX buffer size is 0x100, interrupt enabled 33 | * UART1 just used for debug output 34 | * Parameters : uart_no, use UART0 or UART1 defined ahead 35 | * Returns : NONE 36 | *******************************************************************************/ 37 | LOCAL void ICACHE_FLASH_ATTR 38 | uart_config(uint8 uart_no) 39 | { 40 | if (uart_no == UART1) 41 | { 42 | PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_U1TXD_BK); 43 | } 44 | else 45 | { 46 | /* rcv_buff size if 0x100 */ 47 | ETS_UART_INTR_ATTACH(uart0_rx_intr_handler, &(UartDev.rcv_buff)); 48 | PIN_PULLUP_DIS(PERIPHS_IO_MUX_U0TXD_U); 49 | PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD); 50 | // PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_U0RTS); 51 | } 52 | 53 | uart_div_modify(uart_no, UART_CLK_FREQ / (UartDev.baut_rate)); 54 | 55 | WRITE_PERI_REG(UART_CONF0(uart_no), UartDev.exist_parity 56 | | UartDev.parity 57 | | (UartDev.stop_bits << UART_STOP_BIT_NUM_S) 58 | | (UartDev.data_bits << UART_BIT_NUM_S)); 59 | 60 | //clear rx and tx fifo,not ready 61 | SET_PERI_REG_MASK(UART_CONF0(uart_no), UART_RXFIFO_RST | UART_TXFIFO_RST); 62 | CLEAR_PERI_REG_MASK(UART_CONF0(uart_no), UART_RXFIFO_RST | UART_TXFIFO_RST); 63 | 64 | //set rx fifo trigger 65 | // WRITE_PERI_REG(UART_CONF1(uart_no), 66 | // ((UartDev.rcv_buff.TrigLvl & UART_RXFIFO_FULL_THRHD) << UART_RXFIFO_FULL_THRHD_S) | 67 | // ((96 & UART_TXFIFO_EMPTY_THRHD) << UART_TXFIFO_EMPTY_THRHD_S) | 68 | // UART_RX_FLOW_EN); 69 | if (uart_no == UART0) 70 | { 71 | //set rx fifo trigger 72 | WRITE_PERI_REG(UART_CONF1(uart_no), 73 | ((0x01 & UART_RXFIFO_FULL_THRHD) << UART_RXFIFO_FULL_THRHD_S) | 74 | ((0x01 & UART_RX_FLOW_THRHD) << UART_RX_FLOW_THRHD_S) | 75 | UART_RX_FLOW_EN); 76 | } 77 | else 78 | { 79 | WRITE_PERI_REG(UART_CONF1(uart_no), 80 | ((UartDev.rcv_buff.TrigLvl & UART_RXFIFO_FULL_THRHD) << UART_RXFIFO_FULL_THRHD_S)); 81 | } 82 | 83 | //clear all interrupt 84 | WRITE_PERI_REG(UART_INT_CLR(uart_no), 0xffff); 85 | //enable rx_interrupt 86 | SET_PERI_REG_MASK(UART_INT_ENA(uart_no), UART_RXFIFO_FULL_INT_ENA); 87 | } 88 | 89 | /****************************************************************************** 90 | * FunctionName : uart1_tx_one_char 91 | * Description : Internal used function 92 | * Use uart1 interface to transfer one char 93 | * Parameters : uint8 TxChar - character to tx 94 | * Returns : OK 95 | *******************************************************************************/ 96 | LOCAL STATUS 97 | uart_tx_one_char(uint8 uart, uint8 TxChar) 98 | { 99 | while (true) 100 | { 101 | uint32 fifo_cnt = READ_PERI_REG(UART_STATUS(uart)) & (UART_TXFIFO_CNT<> UART_TXFIFO_CNT_S & UART_TXFIFO_CNT) < 126) { 103 | break; 104 | } 105 | } 106 | 107 | WRITE_PERI_REG(UART_FIFO(uart) , TxChar); 108 | return OK; 109 | } 110 | 111 | /****************************************************************************** 112 | * FunctionName : uart1_write_char 113 | * Description : Internal used function 114 | * Do some special deal while tx char is '\r' or '\n' 115 | * Parameters : char c - character to tx 116 | * Returns : NONE 117 | *******************************************************************************/ 118 | LOCAL void ICACHE_FLASH_ATTR 119 | uart1_write_char(char c) 120 | { 121 | if (c == '\n') 122 | { 123 | uart_tx_one_char(UART1, '\r'); 124 | uart_tx_one_char(UART1, '\n'); 125 | } 126 | else if (c == '\r') 127 | { 128 | } 129 | else 130 | { 131 | uart_tx_one_char(UART1, c); 132 | } 133 | } 134 | /****************************************************************************** 135 | * FunctionName : uart0_tx_buffer 136 | * Description : use uart0 to transfer buffer 137 | * Parameters : uint8 *buf - point to send buffer 138 | * uint16 len - buffer len 139 | * Returns : 140 | *******************************************************************************/ 141 | void ICACHE_FLASH_ATTR 142 | uart0_tx_buffer(uint8 *buf, uint16 len) 143 | { 144 | uint16 i; 145 | 146 | for (i = 0; i < len; i++) 147 | { 148 | uart_tx_one_char(UART0, buf[i]); 149 | } 150 | } 151 | 152 | /****************************************************************************** 153 | * FunctionName : uart0_sendStr 154 | * Description : use uart0 to transfer buffer 155 | * Parameters : uint8 *buf - point to send buffer 156 | * uint16 len - buffer len 157 | * Returns : 158 | *******************************************************************************/ 159 | void ICACHE_FLASH_ATTR 160 | uart0_sendStr(const char *str) 161 | { 162 | while(*str) 163 | { 164 | uart_tx_one_char(UART0, *str++); 165 | } 166 | } 167 | 168 | /****************************************************************************** 169 | * FunctionName : uart0_rx_intr_handler 170 | * Description : Internal used function 171 | * UART0 interrupt handler, add self handle code inside 172 | * Parameters : void *para - point to ETS_UART_INTR_ATTACH's arg 173 | * Returns : NONE 174 | *******************************************************************************/ 175 | 176 | extern void charrx( uint8_t c ); 177 | 178 | LOCAL void 179 | uart0_rx_intr_handler(void *para) 180 | { 181 | static uint8_t history[4]; 182 | static uint8_t hhead; 183 | 184 | uint8 uart_no = UART0;//UartDev.buff_uart_no; 185 | volatile uint8_t v = READ_PERI_REG(UART_FIFO(uart_no)) & 0xFF; 186 | WRITE_PERI_REG(UART_INT_CLR(uart_no), UART_RXFIFO_FULL_INT_CLR); 187 | 188 | history[hhead++] = v; 189 | if( hhead > 3 ) hhead = 0; 190 | 191 | //Detect a request to reboot into bootloader. 192 | if( history[hhead&3] == 0xc2 && history[(hhead+1)&3] == 0x42 && history[(hhead+2)&3] == 0x56 && history[(hhead+3)&3] == 0xff ) 193 | { 194 | system_restart(); 195 | } 196 | 197 | charrx( v ); 198 | 199 | } 200 | 201 | /****************************************************************************** 202 | * FunctionName : uart_init 203 | * Description : user interface for init uart 204 | * Parameters : UartBautRate uart0_br - uart0 bautrate 205 | * UartBautRate uart1_br - uart1 bautrate 206 | * Returns : NONE 207 | *******************************************************************************/ 208 | void ICACHE_FLASH_ATTR 209 | uart_init(UartBautRate uart0_br, UartBautRate uart1_br) 210 | { 211 | // rom use 74880 baut_rate, here reinitialize 212 | UartDev.baut_rate = uart0_br; 213 | uart_config(UART0); 214 | UartDev.baut_rate = uart1_br; 215 | uart_config(UART1); 216 | ETS_UART_INTR_ENABLE(); 217 | 218 | // install uart1 putc callback 219 | os_install_putc1((void *)uart1_write_char); 220 | } 221 | 222 | void ICACHE_FLASH_ATTR 223 | uart_reattach() 224 | { 225 | uart_init(BIT_RATE_74880, BIT_RATE_74880); 226 | } 227 | -------------------------------------------------------------------------------- /hardware/esp_micro85-only.pro: -------------------------------------------------------------------------------- 1 | update=Tue 28 Jun 2016 03:18:35 PM EDT 2 | last_client=pcbnew 3 | [pcbnew] 4 | version=1 5 | LastNetListRead=esp_micro85-only.net 6 | UseCmpFile=1 7 | PadDrill=" 0.000000" 8 | PadDrillOvalY=" 0.000000" 9 | PadSizeH=" 1.270000" 10 | PadSizeV=" 1.270000" 11 | PcbTextSizeV=" 1.500000" 12 | PcbTextSizeH=" 1.500000" 13 | PcbTextThickness=" 0.300000" 14 | ModuleTextSizeV=" 0.762000" 15 | ModuleTextSizeH=" 0.762000" 16 | ModuleTextSizeThickness=" 0.150000" 17 | SolderMaskClearance=" 0.000000" 18 | SolderMaskMinWidth=" 0.000000" 19 | DrawSegmentWidth=" 0.200000" 20 | BoardOutlineThickness=" 0.100000" 21 | ModuleOutlineThickness=" 0.150000" 22 | [pcbnew/libraries] 23 | LibDir= 24 | LibName1=sockets 25 | LibName2=connect 26 | LibName3=discret 27 | LibName4=pin_array 28 | LibName5=divers 29 | LibName6=smd_capacitors 30 | LibName7=smd_resistors 31 | LibName8=smd_crystal&oscillator 32 | LibName9=smd_dil 33 | LibName10=smd_transistors 34 | LibName11=libcms 35 | LibName12=display 36 | LibName13=led 37 | LibName14=dip_sockets 38 | LibName15=pga_sockets 39 | LibName16=valves 40 | LibName17=/home/cnlohr/electrical/kicad/WFDFN6-EXPOSED 41 | LibName18=/home/cnlohr/electrical/kicad/60MILHOLE 42 | LibName19=/home/cnlohr/electrical/kicad/C2V16 43 | LibName20=/home/cnlohr/electrical/kicad/ESP8266-WI07-6 44 | LibName21=/home/cnlohr/electrical/kicad/pin_array 45 | LibName22=/home/cnlohr/electrical/kicad/SMTEDGE4 46 | LibName23=/home/cnlohr/electrical/kicad/RJHSE-5081 47 | LibName24=/home/cnlohr/electrical/kicad/QFN64_LFCSP_VQ 48 | LibName25=/home/cnlohr/electrical/kicad/WS2812B 49 | LibName26=/home/cnlohr/electrical/kicad/12LGA 50 | LibName27=/home/cnlohr/electrical/kicad/SO8E-WITHPAD 51 | LibName28=/home/cnlohr/electrical/kicad/U5 52 | LibName29=/home/cnlohr/electrical/kicad/VDFN8 53 | LibName30=/home/cnlohr/electrical/kicad/LITTELFUSE65600001009 54 | LibName31=/home/cnlohr/electrical/kicad/SMTEDGE8 55 | LibName32=/home/cnlohr/electrical/kicad/LGA-24B 56 | LibName33=/home/cnlohr/electrical/kicad/DO-214AA 57 | LibName34=/home/cnlohr/electrical/kicad/TO-277-3 58 | LibName35=/home/cnlohr/electrical/kicad/DFN8 59 | LibName36=/home/cnlohr/electrical/kicad/LGA-24 60 | LibName37=/home/cnlohr/electrical/kicad/1SMTPIN 61 | LibName38=/home/cnlohr/electrical/kicad/SKINNYPIN 62 | LibName39=/home/cnlohr/electrical/kicad/CAT25 63 | LibName40=/home/cnlohr/electrical/kicad/TACTNAV7x7 64 | LibName41=/home/cnlohr/electrical/kicad/DIL-14 65 | LibName42=/home/cnlohr/electrical/kicad/SMD-6 66 | LibName43=/home/cnlohr/electrical/kicad/USB-MiniB 67 | LibName44=/home/cnlohr/electrical/kicad/SMALL_SOT23-6 68 | LibName45=/home/cnlohr/electrical/kicad/2.4GHZ_2450FB15L0001 69 | LibName46=/home/cnlohr/electrical/kicad/SO8ESKINNY 70 | LibName47=/home/cnlohr/electrical/kicad/PHOENIX1771130WIDE 71 | LibName48=/home/cnlohr/electrical/kicad/5050RGB 72 | LibName49=/home/cnlohr/electrical/kicad/PHOENIX1935187 73 | LibName50=/home/cnlohr/electrical/kicad/LSM303D 74 | LibName51=/home/cnlohr/electrical/kicad/LSM303D2 75 | LibName52=/home/cnlohr/electrical/kicad/PHOENIX1985292 76 | LibName53=/home/cnlohr/electrical/kicad/440HOLE 77 | LibName54=/home/cnlohr/electrical/kicad/0039301082 78 | LibName55=/home/cnlohr/electrical/kicad/6-SOIC-5 79 | LibName56=/home/cnlohr/electrical/kicad/MSOP_12 80 | LibName57=/home/cnlohr/electrical/kicad/DE-9-CONN-SDS107-PRW2-M09-SN63-11 81 | LibName58=/home/cnlohr/electrical/kicad/USB-MiniBBig 82 | LibName59=/home/cnlohr/electrical/kicad/PIN_ARRAY_13X2 83 | LibName60=/home/cnlohr/electrical/kicad/EXB-A 84 | LibName61=/home/cnlohr/electrical/kicad/BOURNS-SRR1280 85 | LibName62=/home/cnlohr/electrical/kicad/WS_SWITCH 86 | LibName63=/home/cnlohr/electrical/kicad/DLONG 87 | LibName64=/home/cnlohr/electrical/kicad/QFN44B 88 | LibName65=/home/cnlohr/electrical/kicad/THIRDOVAL 89 | LibName66=/home/cnlohr/electrical/kicad/DIP_Sockets 90 | LibName67=/home/cnlohr/electrical/kicad/SOT-26 91 | LibName68=/home/cnlohr/electrical/kicad/RIBBON6SMT 92 | LibName69=/home/cnlohr/electrical/kicad/MPL3115A2 93 | LibName70=/home/cnlohr/electrical/kicad/PHOENIX1771130 94 | LibName71=/home/cnlohr/electrical/kicad/QFN20 95 | LibName72=/home/cnlohr/electrical/kicad/DFN10x 96 | LibName73=/home/cnlohr/electrical/kicad/BGA-121-0.8 97 | LibName74=/home/cnlohr/electrical/kicad/BMP280 98 | LibName75=/home/cnlohr/electrical/kicad/SMT_2x2 99 | LibName76=/home/cnlohr/electrical/kicad/SM1005 100 | LibName77=/home/cnlohr/electrical/kicad/XTAL4P 101 | LibName78=/home/cnlohr/electrical/kicad/SO16MULTI 102 | LibName79=/home/cnlohr/electrical/kicad/SMTEDGE6 103 | LibName80=/home/cnlohr/electrical/kicad/LVT-846S 104 | LibName81=/home/cnlohr/electrical/kicad/DFN6 105 | LibName82=/home/cnlohr/electrical/kicad/NETWORK0606 106 | LibName83=/home/cnlohr/electrical/kicad/LINEAR_SLIDE_POT_PTA3043 107 | LibName84=/home/cnlohr/electrical/kicad/RIBBON8SMT 108 | LibName85=/home/cnlohr/electrical/kicad/PHOENIX1933202 109 | LibName86=/home/cnlohr/electrical/kicad/SMTHDR4-2W 110 | LibName87=/home/cnlohr/electrical/kicad/2SMTPIN 111 | LibName88=/home/cnlohr/electrical/kicad/QFN48-AVR 112 | LibName89=/home/cnlohr/electrical/kicad/USBPCB 113 | LibName90=/home/cnlohr/electrical/kicad/SP3010-04UTG 114 | LibName91=/home/cnlohr/electrical/kicad/NXE1 115 | LibName92=/home/cnlohr/electrical/kicad/QFN32 116 | LibName93=/home/cnlohr/electrical/kicad/TQFP48 117 | LibName94=/home/cnlohr/electrical/kicad/632HOLE 118 | LibName95=/home/cnlohr/electrical/kicad/RIBBON10SMT 119 | LibName96=/home/cnlohr/electrical/kicad/USB3-GSB443133HR 120 | LibName97=/home/cnlohr/electrical/kicad/neon14 121 | LibName98=/home/cnlohr/electrical/kicad/4-SMD 122 | LibName99=/home/cnlohr/electrical/kicad/ALLIGATOR 123 | LibName100=/home/cnlohr/electrical/kicad/8-PowerTDFN 124 | LibName101=/home/cnlohr/electrical/kicad/RPSMA_EDGE 125 | LibName102=/home/cnlohr/electrical/kicad/DF12-20D 126 | LibName103=/home/cnlohr/electrical/kicad/PFETWSMINI6-F1-B 127 | LibName104=/home/cnlohr/electrical/kicad/BELFuse-S553 128 | LibName105=/home/cnlohr/electrical/kicad/FPC24 129 | LibName106=/home/cnlohr/electrical/kicad/SMT-4 130 | LibName107=/home/cnlohr/electrical/kicad/BK-6013 131 | LibName108=/home/cnlohr/electrical/kicad/SOIC18-750 132 | LibName109=/home/cnlohr/electrical/kicad/LONGPIN 133 | LibName110=/home/cnlohr/electrical/kicad/tinypin 134 | LibName111=/home/cnlohr/electrical/kicad/libcms 135 | LibName112=/home/cnlohr/electrical/kicad/MOSFET-LFPAK56 136 | LibName113=/home/cnlohr/electrical/kicad/QFN44 137 | LibName114=/home/cnlohr/electrical/kicad/FSM4JSMA 138 | LibName115=/home/cnlohr/electrical/kicad/SO8WIDE 139 | LibName116=/home/cnlohr/electrical/kicad/VFLGA-12 140 | LibName117=/home/cnlohr/electrical/kicad/LTV-846S 141 | LibName118=/home/cnlohr/electrical/kicad/PHOENIX1786840 142 | LibName119=/home/cnlohr/electrical/kicad/BOURNS-SRP1265A 143 | LibName120=/home/cnlohr/electrical/kicad/DF12-14D 144 | LibName121=/home/cnlohr/electrical/kicad/RESONATOR6SMD 145 | LibName122=/home/cnlohr/electrical/kicad/ESP12E 146 | LibName123=/home/cnlohr/electrical/kicad/SO14-ATTINY 147 | LibName124=/home/cnlohr/electrical/kicad/GSB443133HR 148 | LibName125=/home/cnlohr/electrical/kicad/SEMTEDGE6 149 | LibName126=/home/cnlohr/electrical/kicad/TSSOP-8 150 | LibName127=/home/cnlohr/electrical/kicad/FPC30-LCD 151 | LibName128=/home/cnlohr/electrical/kicad/NETWORK1206 152 | LibName129=/home/cnlohr/electrical/kicad/LSM9DS1 153 | LibName130=/home/cnlohr/electrical/kicad/BOURNS-PM5022 154 | LibName131=/home/cnlohr/electrical/kicad/MICROSD_1050270001 155 | LibName132=/home/cnlohr/electrical/kicad/SMT_1x6 156 | LibName133=/home/cnlohr/electrical/kicad/SMT_1x2 157 | LibName134=/home/cnlohr/electrical/kicad/BLUETOOTHEPDA 158 | LibName135=/home/cnlohr/electrical/kicad/SD693063010911Wurth 159 | LibName136=/home/cnlohr/electrical/kicad/SMT_ETHERNET 160 | LibName137=/home/cnlohr/electrical/kicad/PanasonicD8Cap 161 | LibName138=/home/cnlohr/electrical/kicad/PHOENIX1771059 162 | LibName139=/home/cnlohr/electrical/kicad/BMP085 163 | LibName140=/home/cnlohr/electrical/kicad/75MILHOLE 164 | LibName141=/home/cnlohr/electrical/kicad/HOLE-1 165 | LibName142=/home/cnlohr/electrical/kicad/UFL 166 | LibName143=/home/cnlohr/electrical/kicad/TRIMMER-PVZ2A 167 | LibName144=/home/cnlohr/electrical/kicad/16-SMD 168 | LibName145=/home/cnlohr/electrical/kicad/POWERSO36 169 | LibName146=/home/cnlohr/electrical/kicad/1206network 170 | LibName147=/home/cnlohr/electrical/kicad/SMTESWITCH 171 | LibName148=/home/cnlohr/electrical/kicad/RCA-PJRAN1X1U02X 172 | LibName149=/home/cnlohr/electrical/kicad/BESOP-4 173 | LibName150=/home/cnlohr/electrical/kicad/LSM303DLHC 174 | LibName151=/home/cnlohr/electrical/kicad/DFN10-0 175 | LibName152=/home/cnlohr/electrical/kicad/JS_SWITCH 176 | LibName153=/home/cnlohr/electrical/kicad/TACTILE 177 | LibName154=/home/cnlohr/electrical/kicad/MS5611 178 | LibName155=/home/cnlohr/electrical/kicad/PHOENIX1933228 179 | LibName156=/home/cnlohr/electrical/kicad/TSSOP16WIDE 180 | LibName157=/home/cnlohr/electrical/kicad/USBMicroB-10118194-0001LF 181 | LibName158=/home/cnlohr/electrical/kicad/4TDFN 182 | LibName159=/home/cnlohr/electrical/kicad/WS2812BP 183 | LibName160=/home/cnlohr/electrical/kicad/USBMicroB-10118192-0001LF 184 | LibName161=/home/cnlohr/electrical/kicad/TACTILE10 185 | LibName162=/home/cnlohr/electrical/kicad/XTAL4TINY 186 | -------------------------------------------------------------------------------- /hardware/esp12e-generics.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 2 2 | LIBS:power 3 | LIBS:device 4 | LIBS:transistors 5 | LIBS:conn 6 | LIBS:linear 7 | LIBS:regul 8 | LIBS:74xx 9 | LIBS:cmos4000 10 | LIBS:adc-dac 11 | LIBS:memory 12 | LIBS:xilinx 13 | LIBS:special 14 | LIBS:microcontrollers 15 | LIBS:dsp 16 | LIBS:microchip 17 | LIBS:analog_switches 18 | LIBS:motorola 19 | LIBS:texas 20 | LIBS:intel 21 | LIBS:audio 22 | LIBS:interface 23 | LIBS:digital-audio 24 | LIBS:philips 25 | LIBS:display 26 | LIBS:cypress 27 | LIBS:siliconi 28 | LIBS:opto 29 | LIBS:atmel 30 | LIBS:contrib 31 | LIBS:valves 32 | LIBS:esp12e 33 | LIBS:l6470 34 | LIBS:l6470-powerso36 35 | LIBS:lvt-816s 36 | LIBS:lis3mdl 37 | LIBS:flipflop-sn74lvc1g175 38 | LIBS:ak5358b 39 | LIBS:opamp_mcp6001t 40 | LIBS:jfet-n_sot-23 41 | LIBS:tvs-bidirection 42 | LIBS:pcb_bom 43 | LIBS:avr_usb_3v3-cache 44 | LIBS:lsm303d 45 | LIBS:a4447sljtr 46 | LIBS:mfrc522 47 | LIBS:zener-sot23-3 48 | LIBS:mcp1824_ct 49 | LIBS:halleffect-tcs20dlr 50 | LIBS:atmegaxu2 51 | LIBS:attinyx4 52 | LIBS:ltv-846s 53 | LIBS:esp8266-wi07-6 54 | LIBS:BELFuse_Ethernet 55 | LIBS:mmpq2907a 56 | LIBS:avr6pin 57 | LIBS:lsm303c 58 | LIBS:photomos 59 | LIBS:enc424j600 60 | LIBS:5050RGB 61 | LIBS:4427 62 | LIBS:7805to220 63 | LIBS:rn-cay16-f4 64 | LIBS:exb-a 65 | LIBS:2.4GHZ_2450FB15L0001 66 | LIBS:opa832 67 | LIBS:max31855 68 | LIBS:rs485-isl3170 69 | LIBS:6multi 70 | LIBS:ap1117 71 | LIBS:microsd_1050270001 72 | LIBS:network0606 73 | LIBS:npn-2222 74 | LIBS:atmega1284rfr2 75 | LIBS:um5k1ntr 76 | LIBS:adc-ltc2450 77 | LIBS:lsm303dlhc 78 | LIBS:neon14 79 | LIBS:1206network 80 | LIBS:ds2438z 81 | LIBS:ws2812b 82 | LIBS:mosfet-lfpak56 83 | LIBS:atmel_kk 84 | LIBS:attinyx5 85 | LIBS:opto2-ltv-826s 86 | LIBS:crystal-4p 87 | LIBS:7805 88 | LIBS:bridge-MB2S-TP 89 | LIBS:atmega48_88_168_328_tqfp32 90 | LIBS:nor-nc7sz02p5x 91 | LIBS:dmp2240udm 92 | LIBS:ltc2471cms 93 | LIBS:atmegax8pb 94 | LIBS:mcp23008-qfn 95 | LIBS:tcs3x7x 96 | LIBS:bluetoothedpa 97 | LIBS:mosdriver_ncp5901bmntbg 98 | LIBS:25q40b 99 | LIBS:bmp085 100 | LIBS:lsm9ds0 101 | LIBS:mosfetx2vdfn8 102 | LIBS:mcp23008-soic 103 | LIBS:mos_p_d2 104 | LIBS:lm386 105 | LIBS:esp8266ex 106 | LIBS:attiny441-qfn 107 | LIBS:attiny441 108 | LIBS:stm32f301 109 | LIBS:ws_switch 110 | LIBS:ov2640_ribbon 111 | LIBS:stm32f207 112 | LIBS:LSM9DS1 113 | LIBS:resonator6smd 114 | LIBS:stm32f303 115 | LIBS:mag3110 116 | LIBS:mpl3115a2 117 | LIBS:bmp280 118 | LIBS:stm32f303_32 119 | LIBS:pl140c 120 | LIBS:pfetsot223 121 | LIBS:xfrmr2x2 122 | LIBS:ir2101 123 | LIBS:esp_onelayer3-cache 124 | EELAYER 27 0 125 | EELAYER END 126 | $Descr A4 11693 8268 127 | encoding utf-8 128 | Sheet 1 1 129 | Title "noname.sch" 130 | Date "10 oct 2015" 131 | Rev "" 132 | Comp "" 133 | Comment1 "" 134 | Comment2 "" 135 | Comment3 "" 136 | Comment4 "" 137 | $EndDescr 138 | $Comp 139 | L ESP12E ESP1 140 | U 1 1 5619493D 141 | P 4100 2250 142 | F 0 "ESP1" H 4400 2850 60 0000 C CNN 143 | F 1 "ESP12E" H 3800 2850 60 0000 C CNN 144 | F 2 "ESP12E" H 4150 2000 60 0000 C CNN 145 | F 3 "~" H 4150 2000 60 0000 C CNN 146 | 1 4100 2250 147 | 1 0 0 -1 148 | $EndComp 149 | $Comp 150 | L AP1117 U1 151 | U 1 1 5619494C 152 | P 5350 1200 153 | F 0 "U1" H 5350 1400 60 0000 C CNN 154 | F 1 "AP1117" H 5350 1000 60 0000 C CNN 155 | F 2 "SOT223" H 5350 1200 60 0000 C CNN 156 | F 3 "" H 5350 1200 60 0000 C CNN 157 | 1 5350 1200 158 | -1 0 0 1 159 | $EndComp 160 | $Comp 161 | L +3.3V #PWR01 162 | U 1 1 5619496A 163 | P 3200 2500 164 | F 0 "#PWR01" H 3200 2460 30 0001 C CNN 165 | F 1 "+3.3V" H 3200 2610 30 0000 C CNN 166 | F 2 "" H 3200 2500 60 0000 C CNN 167 | F 3 "" H 3200 2500 60 0000 C CNN 168 | 1 3200 2500 169 | 1 0 0 -1 170 | $EndComp 171 | $Comp 172 | L +3.3V #PWR02 173 | U 1 1 56194979 174 | P 4700 1200 175 | F 0 "#PWR02" H 4700 1160 30 0001 C CNN 176 | F 1 "+3.3V" H 4700 1310 30 0000 C CNN 177 | F 2 "" H 4700 1200 60 0000 C CNN 178 | F 3 "" H 4700 1200 60 0000 C CNN 179 | 1 4700 1200 180 | 1 0 0 -1 181 | $EndComp 182 | $Comp 183 | L +5V #PWR03 184 | U 1 1 56194988 185 | P 4650 1300 186 | F 0 "#PWR03" H 4650 1390 20 0001 C CNN 187 | F 1 "+5V" H 4650 1390 30 0000 C CNN 188 | F 2 "" H 4650 1300 60 0000 C CNN 189 | F 3 "" H 4650 1300 60 0000 C CNN 190 | 1 4650 1300 191 | 1 0 0 -1 192 | $EndComp 193 | $Comp 194 | L GND #PWR04 195 | U 1 1 56194997 196 | P 4600 1100 197 | F 0 "#PWR04" H 4600 1100 30 0001 C CNN 198 | F 1 "GND" H 4600 1030 30 0001 C CNN 199 | F 2 "" H 4600 1100 60 0000 C CNN 200 | F 3 "" H 4600 1100 60 0000 C CNN 201 | 1 4600 1100 202 | 1 0 0 -1 203 | $EndComp 204 | $Comp 205 | L GND #PWR05 206 | U 1 1 561949B4 207 | P 5000 2550 208 | F 0 "#PWR05" H 5000 2550 30 0001 C CNN 209 | F 1 "GND" H 5000 2480 30 0001 C CNN 210 | F 2 "" H 5000 2550 60 0000 C CNN 211 | F 3 "" H 5000 2550 60 0000 C CNN 212 | 1 5000 2550 213 | 1 0 0 -1 214 | $EndComp 215 | $Comp 216 | L +3.3V #PWR06 217 | U 1 1 561949C1 218 | P 3200 2000 219 | F 0 "#PWR06" H 3200 1960 30 0001 C CNN 220 | F 1 "+3.3V" H 3200 2110 30 0000 C CNN 221 | F 2 "" H 3200 2000 60 0000 C CNN 222 | F 3 "" H 3200 2000 60 0000 C CNN 223 | 1 3200 2000 224 | 1 0 0 -1 225 | $EndComp 226 | $Comp 227 | L +3.3V #PWR07 228 | U 1 1 561949D6 229 | P 3200 1800 230 | F 0 "#PWR07" H 3200 1760 30 0001 C CNN 231 | F 1 "+3.3V" H 3200 1910 30 0000 C CNN 232 | F 2 "" H 3200 1800 60 0000 C CNN 233 | F 3 "" H 3200 1800 60 0000 C CNN 234 | 1 3200 1800 235 | 1 0 0 -1 236 | $EndComp 237 | $Comp 238 | L GND #PWR08 239 | U 1 1 56194B99 240 | P 6000 2600 241 | F 0 "#PWR08" H 6000 2600 30 0001 C CNN 242 | F 1 "GND" H 6000 2530 30 0001 C CNN 243 | F 2 "" H 6000 2600 60 0000 C CNN 244 | F 3 "" H 6000 2600 60 0000 C CNN 245 | 1 6000 2600 246 | 1 0 0 -1 247 | $EndComp 248 | $Comp 249 | L CONN_8 P1 250 | U 1 1 56194CDB 251 | P 6400 2150 252 | F 0 "P1" V 6350 2150 60 0000 C CNN 253 | F 1 "CONN_8" V 6450 2150 60 0000 C CNN 254 | F 2 "SIL-8" H 6400 2150 60 0000 C CNN 255 | F 3 "" H 6400 2150 60 0000 C CNN 256 | 1 6400 2150 257 | 1 0 0 -1 258 | $EndComp 259 | $Comp 260 | L EXB-A U2 261 | U 1 1 56194CEA 262 | P 5650 2850 263 | F 0 "U2" H 5800 3150 60 0000 C CNN 264 | F 1 "EXB-A" H 5550 3150 60 0000 C CNN 265 | F 2 "EXB-A" H 5650 2850 60 0000 C CNN 266 | F 3 "" H 5650 2850 60 0000 C CNN 267 | 1 5650 2850 268 | 0 -1 -1 0 269 | $EndComp 270 | $Comp 271 | L C C1 272 | U 1 1 56194F36 273 | P 6750 1050 274 | F 0 "C1" H 6750 1150 40 0000 L CNN 275 | F 1 "10u" H 6756 965 40 0000 L CNN 276 | F 2 "SM0805" H 6788 900 30 0000 C CNN 277 | F 3 "~" H 6750 1050 60 0000 C CNN 278 | 1 6750 1050 279 | 1 0 0 -1 280 | $EndComp 281 | $Comp 282 | L C C2 283 | U 1 1 56194F45 284 | P 7000 1050 285 | F 0 "C2" H 7000 1150 40 0000 L CNN 286 | F 1 "10u" H 7006 965 40 0000 L CNN 287 | F 2 "SM0805" H 7038 900 30 0000 C CNN 288 | F 3 "~" H 7000 1050 60 0000 C CNN 289 | 1 7000 1050 290 | 1 0 0 -1 291 | $EndComp 292 | $Comp 293 | L +3.3V #PWR09 294 | U 1 1 56194F76 295 | P 7000 800 296 | F 0 "#PWR09" H 7000 760 30 0001 C CNN 297 | F 1 "+3.3V" H 7000 910 30 0000 C CNN 298 | F 2 "" H 7000 800 60 0000 C CNN 299 | F 3 "" H 7000 800 60 0000 C CNN 300 | 1 7000 800 301 | 1 0 0 -1 302 | $EndComp 303 | $Comp 304 | L +5V #PWR010 305 | U 1 1 56194F7C 306 | P 6750 800 307 | F 0 "#PWR010" H 6750 890 20 0001 C CNN 308 | F 1 "+5V" H 6750 890 30 0000 C CNN 309 | F 2 "" H 6750 800 60 0000 C CNN 310 | F 3 "" H 6750 800 60 0000 C CNN 311 | 1 6750 800 312 | 1 0 0 -1 313 | $EndComp 314 | $Comp 315 | L GND #PWR011 316 | U 1 1 56194FE5 317 | P 6750 1350 318 | F 0 "#PWR011" H 6750 1350 30 0001 C CNN 319 | F 1 "GND" H 6750 1280 30 0001 C CNN 320 | F 2 "" H 6750 1350 60 0000 C CNN 321 | F 3 "" H 6750 1350 60 0000 C CNN 322 | 1 6750 1350 323 | 1 0 0 -1 324 | $EndComp 325 | $Comp 326 | L GND #PWR012 327 | U 1 1 5619501E 328 | P 7000 1350 329 | F 0 "#PWR012" H 7000 1350 30 0001 C CNN 330 | F 1 "GND" H 7000 1280 30 0001 C CNN 331 | F 2 "" H 7000 1350 60 0000 C CNN 332 | F 3 "" H 7000 1350 60 0000 C CNN 333 | 1 7000 1350 334 | 1 0 0 -1 335 | $EndComp 336 | Wire Wire Line 337 | 4600 1100 4800 1100 338 | Wire Wire Line 339 | 4700 1200 4800 1200 340 | Wire Wire Line 341 | 4650 1300 4800 1300 342 | Wire Wire Line 343 | 5900 1200 6600 1200 344 | Wire Wire Line 345 | 3200 2500 3300 2500 346 | Wire Wire Line 347 | 5000 2400 5000 2550 348 | Wire Wire Line 349 | 5000 2500 4900 2500 350 | Wire Wire Line 351 | 3200 2000 3300 2000 352 | Wire Wire Line 353 | 3200 1800 3300 1800 354 | Wire Wire Line 355 | 4900 2400 5000 2400 356 | Connection ~ 5000 2500 357 | Wire Wire Line 358 | 4900 2300 6050 2300 359 | Wire Wire Line 360 | 4900 2200 6050 2200 361 | Wire Wire Line 362 | 4900 2000 6050 2000 363 | Wire Wire Line 364 | 4900 2100 6050 2100 365 | Wire Wire Line 366 | 6050 1800 4900 1800 367 | Wire Wire Line 368 | 4900 1900 6050 1900 369 | Wire Wire Line 370 | 5850 3350 6600 3350 371 | Wire Wire Line 372 | 5850 3350 5850 3300 373 | Wire Wire Line 374 | 4700 1300 4700 1600 375 | Wire Wire Line 376 | 4700 1600 6750 1600 377 | Connection ~ 4700 1300 378 | Wire Wire Line 379 | 6000 2600 6000 2400 380 | Wire Wire Line 381 | 5550 2000 5550 2400 382 | Wire Wire Line 383 | 5650 2100 5650 2400 384 | Wire Wire Line 385 | 5750 2200 5750 2400 386 | Wire Wire Line 387 | 5850 2300 5850 2400 388 | Connection ~ 5850 2300 389 | Connection ~ 5750 2200 390 | Connection ~ 5650 2100 391 | Connection ~ 5550 2000 392 | Wire Wire Line 393 | 5450 3300 5500 3300 394 | Wire Wire Line 395 | 5500 3300 5500 2350 396 | Wire Wire Line 397 | 5500 2350 5550 2350 398 | Connection ~ 5550 2350 399 | Wire Wire Line 400 | 5650 2350 5600 2350 401 | Wire Wire Line 402 | 5600 2350 5600 3300 403 | Wire Wire Line 404 | 5600 3300 5550 3300 405 | Connection ~ 5650 2350 406 | Wire Wire Line 407 | 5750 2350 5700 2350 408 | Wire Wire Line 409 | 5700 2350 5700 3300 410 | Wire Wire Line 411 | 5700 3300 5650 3300 412 | Connection ~ 5750 2350 413 | Wire Wire Line 414 | 5850 2350 5800 2350 415 | Wire Wire Line 416 | 5800 2350 5800 3300 417 | Wire Wire Line 418 | 5800 3300 5750 3300 419 | Connection ~ 5850 2350 420 | Wire Wire Line 421 | 6750 800 6750 850 422 | Wire Wire Line 423 | 7000 800 7000 850 424 | Wire Wire Line 425 | 6750 1350 6750 1250 426 | Wire Wire Line 427 | 7000 1350 7000 1250 428 | Wire Wire Line 429 | 6000 2400 6050 2400 430 | Wire Wire Line 431 | 6600 3350 6600 1200 432 | Wire Wire Line 433 | 6750 1600 6750 2550 434 | Wire Wire Line 435 | 6750 2550 6050 2550 436 | Wire Wire Line 437 | 6050 2550 6050 2500 438 | $EndSCHEMATC 439 | -------------------------------------------------------------------------------- /user/slc_register.h: -------------------------------------------------------------------------------- 1 | //Generated at 2012-10-23 19:55:03 2 | /* 3 | * Copyright (c) 2010 - 2011 Espressif System 4 | * 5 | */ 6 | 7 | #ifndef SLC_REGISTER_H_ 8 | #define SLC_REGISTER_H_ 9 | 10 | #define REG_SLC_BASE 0x60000B00 11 | //version value:32'h091700 12 | 13 | #define SLC_CONF0 (REG_SLC_BASE + 0x0) 14 | #ifndef ESP_MAC_5 15 | #define SLC_MODE 0x00000003 16 | #define SLC_MODE_S 12 17 | #endif 18 | #define SLC_DATA_BURST_EN (BIT(9)) 19 | #define SLC_DSCR_BURST_EN (BIT(8)) 20 | #define SLC_RX_NO_RESTART_CLR (BIT(7)) 21 | #define SLC_RX_AUTO_WRBACK (BIT(6)) 22 | #define SLC_RX_LOOP_TEST (BIT(5)) 23 | #define SLC_TX_LOOP_TEST (BIT(4)) 24 | #define SLC_AHBM_RST (BIT(3)) 25 | #define SLC_AHBM_FIFO_RST (BIT(2)) 26 | #define SLC_RXLINK_RST (BIT(1)) 27 | #define SLC_TXLINK_RST (BIT(0)) 28 | 29 | #define SLC_INT_RAW (REG_SLC_BASE + 0x4) 30 | #define SLC_TX_DSCR_EMPTY_INT_RAW (BIT(21)) 31 | #define SLC_RX_DSCR_ERR_INT_RAW (BIT(20)) 32 | #define SLC_TX_DSCR_ERR_INT_RAW (BIT(19)) 33 | #define SLC_TOHOST_INT_RAW (BIT(18)) 34 | #define SLC_RX_EOF_INT_RAW (BIT(17)) 35 | #define SLC_RX_DONE_INT_RAW (BIT(16)) 36 | #define SLC_TX_EOF_INT_RAW (BIT(15)) 37 | #define SLC_TX_DONE_INT_RAW (BIT(14)) 38 | #define SLC_TOKEN1_1TO0_INT_RAW (BIT(13)) 39 | #define SLC_TOKEN0_1TO0_INT_RAW (BIT(12)) 40 | #define SLC_TX_OVF_INT_RAW (BIT(11)) 41 | #define SLC_RX_UDF_INT_RAW (BIT(10)) 42 | #define SLC_TX_START_INT_RAW (BIT(9)) 43 | #define SLC_RX_START_INT_RAW (BIT(8)) 44 | #define SLC_FRHOST_BIT7_INT_RAW (BIT(7)) 45 | #define SLC_FRHOST_BIT6_INT_RAW (BIT(6)) 46 | #define SLC_FRHOST_BIT5_INT_RAW (BIT(5)) 47 | #define SLC_FRHOST_BIT4_INT_RAW (BIT(4)) 48 | #define SLC_FRHOST_BIT3_INT_RAW (BIT(3)) 49 | #define SLC_FRHOST_BIT2_INT_RAW (BIT(2)) 50 | #define SLC_FRHOST_BIT1_INT_RAW (BIT(1)) 51 | #define SLC_FRHOST_BIT0_INT_RAW (BIT(0)) 52 | 53 | #define SLC_INT_STATUS (REG_SLC_BASE + 0x8) 54 | #define SLC_TX_DSCR_EMPTY_INT_ST (BIT(21)) 55 | #define SLC_RX_DSCR_ERR_INT_ST (BIT(20)) 56 | #define SLC_TX_DSCR_ERR_INT_ST (BIT(19)) 57 | #define SLC_TOHOST_INT_ST (BIT(18)) 58 | #define SLC_RX_EOF_INT_ST (BIT(17)) 59 | #define SLC_RX_DONE_INT_ST (BIT(16)) 60 | #define SLC_TX_EOF_INT_ST (BIT(15)) 61 | #define SLC_TX_DONE_INT_ST (BIT(14)) 62 | #define SLC_TOKEN1_1TO0_INT_ST (BIT(13)) 63 | #define SLC_TOKEN0_1TO0_INT_ST (BIT(12)) 64 | #define SLC_TX_OVF_INT_ST (BIT(11)) 65 | #define SLC_RX_UDF_INT_ST (BIT(10)) 66 | #define SLC_TX_START_INT_ST (BIT(9)) 67 | #define SLC_RX_START_INT_ST (BIT(8)) 68 | #define SLC_FRHOST_BIT7_INT_ST (BIT(7)) 69 | #define SLC_FRHOST_BIT6_INT_ST (BIT(6)) 70 | #define SLC_FRHOST_BIT5_INT_ST (BIT(5)) 71 | #define SLC_FRHOST_BIT4_INT_ST (BIT(4)) 72 | #define SLC_FRHOST_BIT3_INT_ST (BIT(3)) 73 | #define SLC_FRHOST_BIT2_INT_ST (BIT(2)) 74 | #define SLC_FRHOST_BIT1_INT_ST (BIT(1)) 75 | #define SLC_FRHOST_BIT0_INT_ST (BIT(0)) 76 | 77 | #define SLC_INT_ENA (REG_SLC_BASE + 0xC) 78 | #define SLC_TX_DSCR_EMPTY_INT_ENA (BIT(21)) 79 | #define SLC_RX_DSCR_ERR_INT_ENA (BIT(20)) 80 | #define SLC_TX_DSCR_ERR_INT_ENA (BIT(19)) 81 | #define SLC_TOHOST_INT_ENA (BIT(18)) 82 | #define SLC_RX_EOF_INT_ENA (BIT(17)) 83 | #define SLC_RX_DONE_INT_ENA (BIT(16)) 84 | #define SLC_TX_EOF_INT_ENA (BIT(15)) 85 | #define SLC_TX_DONE_INT_ENA (BIT(14)) 86 | #define SLC_TOKEN1_1TO0_INT_ENA (BIT(13)) 87 | #define SLC_TOKEN0_1TO0_INT_ENA (BIT(12)) 88 | #define SLC_TX_OVF_INT_ENA (BIT(11)) 89 | #define SLC_RX_UDF_INT_ENA (BIT(10)) 90 | #define SLC_TX_START_INT_ENA (BIT(9)) 91 | #define SLC_RX_START_INT_ENA (BIT(8)) 92 | #define SLC_FRHOST_BIT7_INT_ENA (BIT(7)) 93 | #define SLC_FRHOST_BIT6_INT_ENA (BIT(6)) 94 | #define SLC_FRHOST_BIT5_INT_ENA (BIT(5)) 95 | #define SLC_FRHOST_BIT4_INT_ENA (BIT(4)) 96 | #define SLC_FRHOST_BIT3_INT_ENA (BIT(3)) 97 | #define SLC_FRHOST_BIT2_INT_ENA (BIT(2)) 98 | #define SLC_FRHOST_BIT1_INT_ENA (BIT(1)) 99 | #define SLC_FRHOST_BIT0_INT_ENA (BIT(0)) 100 | 101 | #define SLC_FRHOST_BIT_INT_ENA_ALL 0xff 102 | 103 | #define SLC_INT_CLR (REG_SLC_BASE + 0x10) 104 | #define SLC_TX_DSCR_EMPTY_INT_CLR (BIT(21)) 105 | #define SLC_RX_DSCR_ERR_INT_CLR (BIT(20)) 106 | #define SLC_TX_DSCR_ERR_INT_CLR (BIT(19)) 107 | #define SLC_TOHOST_INT_CLR (BIT(18)) 108 | #define SLC_RX_EOF_INT_CLR (BIT(17)) 109 | #define SLC_RX_DONE_INT_CLR (BIT(16)) 110 | #define SLC_TX_EOF_INT_CLR (BIT(15)) 111 | #define SLC_TX_DONE_INT_CLR (BIT(14)) 112 | #define SLC_TOKEN1_1TO0_INT_CLR (BIT(13)) 113 | #define SLC_TOKEN0_1TO0_INT_CLR (BIT(12)) 114 | #define SLC_TX_OVF_INT_CLR (BIT(11)) 115 | #define SLC_RX_UDF_INT_CLR (BIT(10)) 116 | #define SLC_TX_START_INT_CLR (BIT(9)) 117 | #define SLC_RX_START_INT_CLR (BIT(8)) 118 | #define SLC_FRHOST_BIT7_INT_CLR (BIT(7)) 119 | #define SLC_FRHOST_BIT6_INT_CLR (BIT(6)) 120 | #define SLC_FRHOST_BIT5_INT_CLR (BIT(5)) 121 | #define SLC_FRHOST_BIT4_INT_CLR (BIT(4)) 122 | #define SLC_FRHOST_BIT3_INT_CLR (BIT(3)) 123 | #define SLC_FRHOST_BIT2_INT_CLR (BIT(2)) 124 | #define SLC_FRHOST_BIT1_INT_CLR (BIT(1)) 125 | #define SLC_FRHOST_BIT0_INT_CLR (BIT(0)) 126 | 127 | #define SLC_RX_STATUS (REG_SLC_BASE + 0x14) 128 | #define SLC_RX_EMPTY (BIT(1)) 129 | #define SLC_RX_FULL (BIT(0)) 130 | 131 | #define SLC_RX_FIFO_PUSH (REG_SLC_BASE + 0x18) 132 | #define SLC_RXFIFO_PUSH (BIT(16)) 133 | #define SLC_RXFIFO_WDATA 0x000001FF 134 | #define SLC_RXFIFO_WDATA_S 0 135 | 136 | #define SLC_TX_STATUS (REG_SLC_BASE + 0x1C) 137 | #define SLC_TX_EMPTY (BIT(1)) 138 | #define SLC_TX_FULL (BIT(0)) 139 | 140 | #define SLC_TX_FIFO_POP (REG_SLC_BASE + 0x20) 141 | #define SLC_TXFIFO_POP (BIT(16)) 142 | #define SLC_TXFIFO_RDATA 0x000007FF 143 | #define SLC_TXFIFO_RDATA_S 0 144 | 145 | #define SLC_RX_LINK (REG_SLC_BASE + 0x24) 146 | #define SLC_RXLINK_PARK (BIT(31)) 147 | #define SLC_RXLINK_RESTART (BIT(30)) 148 | #define SLC_RXLINK_START (BIT(29)) 149 | #define SLC_RXLINK_STOP (BIT(28)) 150 | #define SLC_RXLINK_DESCADDR_MASK 0x000FFFFF 151 | #define SLC_RXLINK_ADDR_S 0 152 | 153 | #define SLC_TX_LINK (REG_SLC_BASE + 0x28) 154 | #define SLC_TXLINK_PARK (BIT(31)) 155 | #define SLC_TXLINK_RESTART (BIT(30)) 156 | #define SLC_TXLINK_START (BIT(29)) 157 | #define SLC_TXLINK_STOP (BIT(28)) 158 | #define SLC_TXLINK_DESCADDR_MASK 0x000FFFFF 159 | #define SLC_TXLINK_ADDR_S 0 160 | 161 | #define SLC_INTVEC_TOHOST (REG_SLC_BASE + 0x2C) 162 | #define SLC_TOHOST_INTVEC 0x000000FF 163 | #define SLC_TOHOST_INTVEC_S 0 164 | 165 | #define SLC_TOKEN0 (REG_SLC_BASE + 0x30) 166 | #define SLC_TOKEN0_MASK 0x00000FFF 167 | #define SLC_TOKEN0_S 16 168 | #define SLC_TOKEN0_LOCAL_INC_MORE (BIT(14)) 169 | #define SLC_TOKEN0_LOCAL_INC (BIT(13)) 170 | #define SLC_TOKEN0_LOCAL_WR (BIT(12)) 171 | #define SLC_TOKEN0_LOCAL_WDATA_MASK 0x00000FFF 172 | #define SLC_TOKEN0_LOCAL_WDATA_S 0 173 | 174 | #define SLC_TOKEN1 (REG_SLC_BASE + 0x34) 175 | #define SLC_TOKEN1_MASK 0x00000FFF 176 | #define SLC_TOKEN1_S 16 177 | #define SLC_TOKEN1_LOCAL_INC_MORE (BIT(14)) 178 | #define SLC_TOKEN1_LOCAL_INC (BIT(13)) 179 | #define SLC_TOKEN1_LOCAL_WR (BIT(12)) 180 | #define SLC_TOKEN1_LOCAL_WDATA 0x00000FFF 181 | #define SLC_TOKEN1_LOCAL_WDATA_S 0 182 | 183 | #define SLC_CONF1 (REG_SLC_BASE + 0x38) 184 | #define SLC_STATE0 (REG_SLC_BASE + 0x3C) 185 | #define SLC_STATE1 (REG_SLC_BASE + 0x40) 186 | 187 | #define SLC_BRIDGE_CONF (REG_SLC_BASE + 0x44) 188 | #ifndef ESP_MAC_5 189 | #define SLC_TX_PUSH_IDLE_NUM 0x0000FFFF 190 | #define SLC_TX_PUSH_IDLE_NUM_S 16 191 | #define SLC_TX_DUMMY_MODE (BIT(12)) 192 | #endif 193 | #define SLC_FIFO_MAP_ENA 0x0000000F 194 | #define SLC_FIFO_MAP_ENA_S 8 195 | #define SLC_TXEOF_ENA 0x0000003F 196 | #define SLC_TXEOF_ENA_S 0 197 | 198 | #define SLC_RX_EOF_DES_ADDR (REG_SLC_BASE + 0x48) 199 | #define SLC_TX_EOF_DES_ADDR (REG_SLC_BASE + 0x4C) 200 | #define SLC_FROM_HOST_LAST_DESC SLC_TX_EOF_DES_ADDR 201 | #define SLC_TO_HOST_LAST_DESC SLC_RX_EOF_DES_ADDR 202 | 203 | #define SLC_RX_EOF_BFR_DES_ADDR (REG_SLC_BASE + 0x50) 204 | #define SLC_AHB_TEST (REG_SLC_BASE + 0x54) 205 | #define SLC_AHB_TESTADDR 0x00000003 206 | #define SLC_AHB_TESTADDR_S 4 207 | #define SLC_AHB_TESTMODE 0x00000007 208 | #define SLC_AHB_TESTMODE_S 0 209 | 210 | #define SLC_SDIO_ST (REG_SLC_BASE + 0x58) 211 | #define SLC_BUS_ST 0x00000007 212 | #define SLC_BUS_ST_S 12 213 | #define SLC_SDIO_WAKEUP (BIT(8)) 214 | #define SLC_FUNC_ST 0x0000000F 215 | #define SLC_FUNC_ST_S 4 216 | #define SLC_CMD_ST 0x00000007 217 | #define SLC_CMD_ST_S 0 218 | 219 | #define SLC_RX_DSCR_CONF (REG_SLC_BASE + 0x5C) 220 | #ifdef ESP_MAC_5 221 | #define SLC_INFOR_NO_REPLACE (BIT(9)) 222 | #define SLC_TOKEN_NO_REPLACE (BIT(8)) 223 | #define SLC_POP_IDLE_CNT 0x000000FF 224 | #else 225 | #define SLC_RX_FILL_EN (BIT(20)) 226 | #define SLC_RX_EOF_MODE (BIT(19)) 227 | #define SLC_RX_FILL_MODE (BIT(18)) 228 | #define SLC_INFOR_NO_REPLACE (BIT(17)) 229 | #define SLC_TOKEN_NO_REPLACE (BIT(16)) 230 | #define SLC_POP_IDLE_CNT 0x0000FFFF 231 | #endif 232 | #define SLC_POP_IDLE_CNT_S 0 233 | 234 | #define SLC_TXLINK_DSCR (REG_SLC_BASE + 0x60) 235 | #define SLC_TXLINK_DSCR_BF0 (REG_SLC_BASE + 0x64) 236 | #define SLC_TXLINK_DSCR_BF1 (REG_SLC_BASE + 0x68) 237 | #define SLC_RXLINK_DSCR (REG_SLC_BASE + 0x6C) 238 | #define SLC_RXLINK_DSCR_BF0 (REG_SLC_BASE + 0x70) 239 | #define SLC_RXLINK_DSCR_BF1 (REG_SLC_BASE + 0x74) 240 | #define SLC_DATE (REG_SLC_BASE + 0x78) 241 | #define SLC_ID (REG_SLC_BASE + 0x7C) 242 | 243 | #define SLC_HOST_CONF_W0 (REG_SLC_BASE + 0x80 + 0x14) 244 | #define SLC_HOST_CONF_W1 (REG_SLC_BASE + 0x80 + 0x18) 245 | #define SLC_HOST_CONF_W2 (REG_SLC_BASE + 0x80 + 0x20) 246 | #define SLC_HOST_CONF_W3 (REG_SLC_BASE + 0x80 + 0x24) 247 | #define SLC_HOST_CONF_W4 (REG_SLC_BASE + 0x80 + 0x28) 248 | 249 | #define SLC_HOST_INTR_ST (REG_SLC_BASE + 0x80 + 0x1c) 250 | #define SLC_HOST_INTR_CLR (REG_SLC_BASE + 0x80 + 0x30) 251 | #define SLC_HOST_INTR_SOF_BIT (BIT(12)) 252 | 253 | #define SLC_HOST_INTR_ENA (REG_SLC_BASE + 0x80 + 0x34) 254 | #define SLC_RX_NEW_PACKET_INT_ENA (BIT23) 255 | #define SLC_HOST_TOHOST_BIT0_INT_ENA (BIT0) 256 | #define SLC_HOST_CONF_W5 (REG_SLC_BASE + 0x80 + 0x3C) 257 | #define SLC_HOST_INTR_RAW (REG_SLC_BASE + 0x80 + 0x8) 258 | #define SLC_HOST_INTR_ENA_BIT (BIT(23)) 259 | //[15:12]: 0x3ff9xxxx -- 0b01 from_host 260 | // 0x3ffaxxxx -- 0b10 general 261 | // 0x3ffbxxxx -- 0b11 to_host 262 | #define SLC_DATA_ADDR_CLEAR_MASK (~(0xf<<12)) 263 | #define SLC_FROM_HOST_ADDR_MASK (0x1<<12) 264 | #define SLC_TO_HOST_ADDR_MASK (0x3<<12) 265 | 266 | #define SLC_SET_FROM_HOST_ADDR_MASK(v) do { \ 267 | (v) &= SLC_DATA_ADDR_CLEAR_MASK; \ 268 | (v) |= SLC_FROM_HOST_ADDR_MASK; \ 269 | } while(0); 270 | 271 | #define SLC_SET_TO_HOST_ADDR_MASK(v) do { \ 272 | (v) &= SLC_DATA_ADDR_CLEAR_MASK; \ 273 | (v) |= SLC_TO_HOST_ADDR_MASK; \ 274 | } while(0); 275 | 276 | 277 | #define SLC_TX_DESC_DEBUG_REG 0x3ff0002c //[15:0] set to 0xcccc 278 | 279 | 280 | #endif // SLC_REGISTER_H_INCLUDED 281 | 282 | -------------------------------------------------------------------------------- /hardware/esp12e-generics.pro: -------------------------------------------------------------------------------- 1 | update=Sat 10 Oct 2015 01:37:02 PM EDT 2 | last_client=pcbnew 3 | [eeschema] 4 | version=1 5 | LibDir= 6 | NetFmtName= 7 | RptD_X=0 8 | RptD_Y=100 9 | RptLab=1 10 | LabSize=60 11 | [eeschema/libraries] 12 | LibName1=power 13 | LibName2=device 14 | LibName3=transistors 15 | LibName4=conn 16 | LibName5=linear 17 | LibName6=regul 18 | LibName7=74xx 19 | LibName8=cmos4000 20 | LibName9=adc-dac 21 | LibName10=memory 22 | LibName11=xilinx 23 | LibName12=special 24 | LibName13=microcontrollers 25 | LibName14=dsp 26 | LibName15=microchip 27 | LibName16=analog_switches 28 | LibName17=motorola 29 | LibName18=texas 30 | LibName19=intel 31 | LibName20=audio 32 | LibName21=interface 33 | LibName22=digital-audio 34 | LibName23=philips 35 | LibName24=display 36 | LibName25=cypress 37 | LibName26=siliconi 38 | LibName27=opto 39 | LibName28=atmel 40 | LibName29=contrib 41 | LibName30=valves 42 | LibName31=/home/cnlohr/electrical/kicad/esp12e 43 | LibName32=/home/cnlohr/electrical/kicad/l6470 44 | LibName33=/home/cnlohr/electrical/kicad/l6470-powerso36 45 | LibName34=/home/cnlohr/electrical/kicad/lvt-816s 46 | LibName35=/home/cnlohr/electrical/kicad/lis3mdl 47 | LibName36=/home/cnlohr/electrical/kicad/flipflop-sn74lvc1g175 48 | LibName37=/home/cnlohr/electrical/kicad/ak5358b 49 | LibName38=/home/cnlohr/electrical/kicad/opamp_mcp6001t 50 | LibName39=/home/cnlohr/electrical/kicad/jfet-n_sot-23 51 | LibName40=/home/cnlohr/electrical/kicad/tvs-bidirection 52 | LibName41=/home/cnlohr/electrical/kicad/pcb_bom 53 | LibName42=/home/cnlohr/electrical/kicad/avr_usb_3v3-cache 54 | LibName43=/home/cnlohr/electrical/kicad/lsm303d 55 | LibName44=/home/cnlohr/electrical/kicad/a4447sljtr 56 | LibName45=/home/cnlohr/electrical/kicad/mfrc522 57 | LibName46=/home/cnlohr/electrical/kicad/zener-sot23-3 58 | LibName47=/home/cnlohr/electrical/kicad/mcp1824_ct 59 | LibName48=/home/cnlohr/electrical/kicad/halleffect-tcs20dlr 60 | LibName49=/home/cnlohr/electrical/kicad/atmegaxu2 61 | LibName50=/home/cnlohr/electrical/kicad/attinyx4 62 | LibName51=/home/cnlohr/electrical/kicad/ltv-846s 63 | LibName52=/home/cnlohr/electrical/kicad/esp8266-wi07-6 64 | LibName53=/home/cnlohr/electrical/kicad/BELFuse_Ethernet 65 | LibName54=/home/cnlohr/electrical/kicad/mmpq2907a 66 | LibName55=/home/cnlohr/electrical/kicad/avr6pin 67 | LibName56=/home/cnlohr/electrical/kicad/lsm303c 68 | LibName57=/home/cnlohr/electrical/kicad/photomos 69 | LibName58=/home/cnlohr/electrical/kicad/enc424j600 70 | LibName59=/home/cnlohr/electrical/kicad/5050RGB 71 | LibName60=/home/cnlohr/electrical/kicad/4427 72 | LibName61=/home/cnlohr/electrical/kicad/7805to220 73 | LibName62=/home/cnlohr/electrical/kicad/rn-cay16-f4 74 | LibName63=/home/cnlohr/electrical/kicad/exb-a 75 | LibName64=/home/cnlohr/electrical/kicad/2.4GHZ_2450FB15L0001 76 | LibName65=/home/cnlohr/electrical/kicad/opa832 77 | LibName66=/home/cnlohr/electrical/kicad/max31855 78 | LibName67=/home/cnlohr/electrical/kicad/rs485-isl3170 79 | LibName68=/home/cnlohr/electrical/kicad/6multi 80 | LibName69=/home/cnlohr/electrical/kicad/ap1117 81 | LibName70=/home/cnlohr/electrical/kicad/microsd_1050270001 82 | LibName71=/home/cnlohr/electrical/kicad/network0606 83 | LibName72=/home/cnlohr/electrical/kicad/npn-2222 84 | LibName73=/home/cnlohr/electrical/kicad/atmega1284rfr2 85 | LibName74=/home/cnlohr/electrical/kicad/um5k1ntr 86 | LibName75=/home/cnlohr/electrical/kicad/adc-ltc2450 87 | LibName76=/home/cnlohr/electrical/kicad/lsm303dlhc 88 | LibName77=/home/cnlohr/electrical/kicad/neon14 89 | LibName78=/home/cnlohr/electrical/kicad/1206network 90 | LibName79=/home/cnlohr/electrical/kicad/ds2438z 91 | LibName80=/home/cnlohr/electrical/kicad/ws2812b 92 | LibName81=/home/cnlohr/electrical/kicad/mosfet-lfpak56 93 | LibName82=/home/cnlohr/electrical/kicad/atmel_kk 94 | LibName83=/home/cnlohr/electrical/kicad/attinyx5 95 | LibName84=/home/cnlohr/electrical/kicad/opto2-ltv-826s 96 | LibName85=/home/cnlohr/electrical/kicad/crystal-4p 97 | LibName86=/home/cnlohr/electrical/kicad/7805 98 | LibName87=/home/cnlohr/electrical/kicad/bridge-MB2S-TP 99 | LibName88=/home/cnlohr/electrical/kicad/atmega48_88_168_328_tqfp32 100 | LibName89=/home/cnlohr/electrical/kicad/nor-nc7sz02p5x 101 | LibName90=/home/cnlohr/electrical/kicad/dmp2240udm 102 | LibName91=/home/cnlohr/electrical/kicad/ltc2471cms 103 | LibName92=/home/cnlohr/electrical/kicad/atmegax8pb 104 | LibName93=/home/cnlohr/electrical/kicad/mcp23008-qfn 105 | LibName94=/home/cnlohr/electrical/kicad/tcs3x7x 106 | LibName95=/home/cnlohr/electrical/kicad/bluetoothedpa 107 | LibName96=/home/cnlohr/electrical/kicad/mosdriver_ncp5901bmntbg 108 | LibName97=/home/cnlohr/electrical/kicad/25q40b 109 | LibName98=/home/cnlohr/electrical/kicad/bmp085 110 | LibName99=/home/cnlohr/electrical/kicad/lsm9ds0 111 | LibName100=/home/cnlohr/electrical/kicad/mosfetx2vdfn8 112 | LibName101=/home/cnlohr/electrical/kicad/mcp23008-soic 113 | LibName102=/home/cnlohr/electrical/kicad/mos_p_d2 114 | LibName103=/home/cnlohr/electrical/kicad/lm386 115 | LibName104=/home/cnlohr/electrical/kicad/esp8266ex 116 | LibName105=/home/cnlohr/electrical/kicad/attiny441-qfn 117 | LibName106=/home/cnlohr/electrical/kicad/attiny441 118 | LibName107=/home/cnlohr/electrical/kicad/stm32f301 119 | LibName108=/home/cnlohr/electrical/kicad/ws_switch 120 | LibName109=/home/cnlohr/electrical/kicad/ov2640_ribbon 121 | LibName110=/home/cnlohr/electrical/kicad/stm32f207 122 | LibName111=/home/cnlohr/electrical/kicad/LSM9DS1 123 | LibName112=/home/cnlohr/electrical/kicad/lsm9ds1 124 | LibName113=/home/cnlohr/electrical/kicad/resonator6smd 125 | LibName114=/home/cnlohr/electrical/kicad/stm32f303 126 | LibName115=/home/cnlohr/electrical/kicad/mag3110 127 | LibName116=/home/cnlohr/electrical/kicad/mpl3115a2 128 | LibName117=/home/cnlohr/electrical/kicad/bmp280 129 | LibName118=/home/cnlohr/electrical/kicad/stm32f303_32 130 | LibName119=/home/cnlohr/electrical/kicad/pl140c 131 | LibName120=/home/cnlohr/electrical/kicad/pfetsot223 132 | LibName121=/home/cnlohr/electrical/kicad/xfrmr2x2 133 | LibName122=/home/cnlohr/electrical/kicad/ir2101 134 | [pcbnew] 135 | version=1 136 | LastNetListRead=esp12e-generics.net 137 | UseCmpFile=1 138 | PadDrill=" 0.762000" 139 | PadDrillOvalY=" 0.762000" 140 | PadSizeH=" 1.524000" 141 | PadSizeV=" 1.524000" 142 | PcbTextSizeV=" 1.500000" 143 | PcbTextSizeH=" 1.500000" 144 | PcbTextThickness=" 0.300000" 145 | ModuleTextSizeV=" 1.500000" 146 | ModuleTextSizeH=" 1.500000" 147 | ModuleTextSizeThickness=" 0.150000" 148 | SolderMaskClearance=" 0.200000" 149 | SolderMaskMinWidth=" 0.000000" 150 | DrawSegmentWidth=" 0.200000" 151 | BoardOutlineThickness=" 0.150000" 152 | ModuleOutlineThickness=" 0.150000" 153 | [pcbnew/libraries] 154 | LibDir= 155 | LibName1=sockets 156 | LibName2=connect 157 | LibName3=discret 158 | LibName4=pin_array 159 | LibName5=divers 160 | LibName6=smd_capacitors 161 | LibName7=smd_resistors 162 | LibName8=smd_crystal&oscillator 163 | LibName9=smd_dil 164 | LibName10=smd_transistors 165 | LibName11=libcms 166 | LibName12=display 167 | LibName13=led 168 | LibName14=dip_sockets 169 | LibName15=pga_sockets 170 | LibName16=valves 171 | LibName17=/home/cnlohr/electrical/kicad/SO8E-WITHPAD 172 | LibName18=/home/cnlohr/electrical/kicad/WS2812B 173 | LibName19=/home/cnlohr/electrical/kicad/MOSFET-LFPAK56 174 | LibName20=/home/cnlohr/electrical/kicad/SMT_ETHERNET 175 | LibName21=/home/cnlohr/electrical/kicad/DE-9-CONN-SDS107-PRW2-M09-SN63-11 176 | LibName22=/home/cnlohr/electrical/kicad/DIL-14 177 | LibName23=/home/cnlohr/electrical/kicad/DLONG 178 | LibName24=/home/cnlohr/electrical/kicad/PHOENIX1935187 179 | LibName25=/home/cnlohr/electrical/kicad/2SMTPIN 180 | LibName26=/home/cnlohr/electrical/kicad/PHOENIX1771130WIDE 181 | LibName27=/home/cnlohr/electrical/kicad/SEMTEDGE6 182 | LibName28=/home/cnlohr/electrical/kicad/LINEAR_SLIDE_POT_PTA3043 183 | LibName29=/home/cnlohr/electrical/kicad/632HOLE 184 | LibName30=/home/cnlohr/electrical/kicad/BK-6013 185 | LibName31=/home/cnlohr/electrical/kicad/SMTEDGE6 186 | LibName32=/home/cnlohr/electrical/kicad/1SMTPIN 187 | LibName33=/home/cnlohr/electrical/kicad/MICROSD_1050270001 188 | LibName34=/home/cnlohr/electrical/kicad/NETWORK0606 189 | LibName35=/home/cnlohr/electrical/kicad/BOURNS-SRR1280 190 | LibName36=/home/cnlohr/electrical/kicad/SO16MULTI 191 | LibName37=/home/cnlohr/electrical/kicad/PanasonicD8Cap 192 | LibName38=/home/cnlohr/electrical/kicad/PHOENIX1985292 193 | LibName39=/home/cnlohr/electrical/kicad/SMTEDGE8 194 | LibName40=/home/cnlohr/electrical/kicad/SMTEDGE4 195 | LibName41=/home/cnlohr/electrical/kicad/U5 196 | LibName42=/home/cnlohr/electrical/kicad/RIBBON8SMT 197 | LibName43=/home/cnlohr/electrical/kicad/XTAL4P 198 | LibName44=/home/cnlohr/electrical/kicad/DIP_Sockets 199 | LibName45=/home/cnlohr/electrical/kicad/neon14 200 | LibName46=/home/cnlohr/electrical/kicad/tinypin 201 | LibName47=/home/cnlohr/electrical/kicad/LSM303D 202 | LibName48=/home/cnlohr/electrical/kicad/LONGPIN 203 | LibName49=/home/cnlohr/electrical/kicad/QFN44B 204 | LibName50=/home/cnlohr/electrical/kicad/SOT-26 205 | LibName51=/home/cnlohr/electrical/kicad/RIBBON6SMT 206 | LibName52=/home/cnlohr/electrical/kicad/16-SMD 207 | LibName53=/home/cnlohr/electrical/kicad/NETWORK1206 208 | LibName54=/home/cnlohr/electrical/kicad/LITTELFUSE65600001009 209 | LibName55=/home/cnlohr/electrical/kicad/PHOENIX1771059 210 | LibName56=/home/cnlohr/electrical/kicad/SO8WIDE 211 | LibName57=/home/cnlohr/electrical/kicad/60MILHOLE 212 | LibName58=/home/cnlohr/electrical/kicad/SO14-ATTINY 213 | LibName59=/home/cnlohr/electrical/kicad/4-SMD 214 | LibName60=/home/cnlohr/electrical/kicad/QFN48-AVR 215 | LibName61=/home/cnlohr/electrical/kicad/BELFuse-S553 216 | LibName62=/home/cnlohr/electrical/kicad/PHOENIX1771130 217 | LibName63=/home/cnlohr/electrical/kicad/WFDFN6-EXPOSED 218 | LibName64=/home/cnlohr/electrical/kicad/MSOP_12 219 | LibName65=/home/cnlohr/electrical/kicad/LSM303DLHC 220 | LibName66=/home/cnlohr/electrical/kicad/440HOLE 221 | LibName67=/home/cnlohr/electrical/kicad/DO-214AA 222 | LibName68=/home/cnlohr/electrical/kicad/pin_array 223 | LibName69=/home/cnlohr/electrical/kicad/SD693063010911Wurth 224 | LibName70=/home/cnlohr/electrical/kicad/ESP8266-WI07-6 225 | LibName71=/home/cnlohr/electrical/kicad/USB-MiniB 226 | LibName72=/home/cnlohr/electrical/kicad/QFN32 227 | LibName73=/home/cnlohr/electrical/kicad/SKINNYPIN 228 | LibName74=/home/cnlohr/electrical/kicad/SM1005 229 | LibName75=/home/cnlohr/electrical/kicad/2.4GHZ_2450FB15L0001 230 | LibName76=/home/cnlohr/electrical/kicad/SMTHDR4-2W 231 | LibName77=/home/cnlohr/electrical/kicad/LSM303D2 232 | LibName78=/home/cnlohr/electrical/kicad/12LGA 233 | LibName79=/home/cnlohr/electrical/kicad/SMALL_SOT23-6 234 | LibName80=/home/cnlohr/electrical/kicad/BOURNS-PM5022 235 | LibName81=/home/cnlohr/electrical/kicad/RCA-PJRAN1X1U02X 236 | LibName82=/home/cnlohr/electrical/kicad/USB-MiniBBig 237 | LibName83=/home/cnlohr/electrical/kicad/SMT-4 238 | LibName84=/home/cnlohr/electrical/kicad/1206network 239 | LibName85=/home/cnlohr/electrical/kicad/SMD-6 240 | LibName86=/home/cnlohr/electrical/kicad/USBPCB 241 | LibName87=/home/cnlohr/electrical/kicad/BESOP-4 242 | LibName88=/home/cnlohr/electrical/kicad/RPSMA_EDGE 243 | LibName89=/home/cnlohr/electrical/kicad/FPC30-LCD 244 | LibName90=/home/cnlohr/electrical/kicad/QFN44 245 | LibName91=/home/cnlohr/electrical/kicad/WS2812BP 246 | LibName92=/home/cnlohr/electrical/kicad/EXB-A 247 | LibName93=/home/cnlohr/electrical/kicad/libcms 248 | LibName94=/home/cnlohr/electrical/kicad/QFN20 249 | LibName95=/home/cnlohr/electrical/kicad/DFN6 250 | LibName96=/home/cnlohr/electrical/kicad/RIBBON10SMT 251 | LibName97=/home/cnlohr/electrical/kicad/BLUETOOTHEPDA 252 | LibName98=/home/cnlohr/electrical/kicad/BMP085 253 | LibName99=/home/cnlohr/electrical/kicad/SMT_2x2 254 | LibName100=/home/cnlohr/electrical/kicad/SMT_1x6 255 | LibName101=/home/cnlohr/electrical/kicad/SMT_1x2 256 | LibName102=/home/cnlohr/electrical/kicad/LGA-24 257 | LibName103=/home/cnlohr/electrical/kicad/HOLE-1 258 | LibName104=/home/cnlohr/electrical/kicad/DFN8 259 | LibName105=/home/cnlohr/electrical/kicad/VDFN8 260 | LibName106=/home/cnlohr/electrical/kicad/SOIC18-750 261 | LibName107=/home/cnlohr/electrical/kicad/TRIMMER-PVZ2A 262 | LibName108=/home/cnlohr/electrical/kicad/WS_SWITCH 263 | LibName109=/home/cnlohr/electrical/kicad/5050RGB 264 | LibName110=/home/cnlohr/electrical/kicad/FPC24 265 | LibName111=/home/cnlohr/electrical/kicad/LGA-24B 266 | LibName112=/home/cnlohr/electrical/kicad/RESONATOR6SMD 267 | LibName113=/home/cnlohr/electrical/kicad/TQFP48 268 | LibName114=/home/cnlohr/electrical/kicad/CAT25 269 | LibName115=/home/cnlohr/electrical/kicad/DFN10x 270 | LibName116=/home/cnlohr/electrical/kicad/MPL3115A2 271 | LibName117=/home/cnlohr/electrical/kicad/BMP280 272 | LibName118=/home/cnlohr/electrical/kicad/SO8ESKINNY 273 | LibName119=/home/cnlohr/electrical/kicad/UFL 274 | LibName120=/home/cnlohr/electrical/kicad/THIRDOVAL 275 | LibName121=/home/cnlohr/electrical/kicad/POWERSO36 276 | LibName122=/home/cnlohr/electrical/kicad/PHOENIX1933202 277 | LibName123=/home/cnlohr/electrical/kicad/LVT-846S 278 | LibName124=/home/cnlohr/electrical/kicad/LTV-846S 279 | LibName125=/home/cnlohr/electrical/kicad/TACTNAV7x7 280 | LibName126=/home/cnlohr/electrical/kicad/VFLGA-12 281 | LibName127=/home/cnlohr/electrical/kicad/ESP12E 282 | LibName128=/home/cnlohr/electrical/kicad/TSSOP-8 283 | -------------------------------------------------------------------------------- /hardware/esp_micro85-only.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 2 2 | LIBS:power 3 | LIBS:device 4 | LIBS:transistors 5 | LIBS:conn 6 | LIBS:linear 7 | LIBS:regul 8 | LIBS:74xx 9 | LIBS:cmos4000 10 | LIBS:adc-dac 11 | LIBS:memory 12 | LIBS:xilinx 13 | LIBS:special 14 | LIBS:microcontrollers 15 | LIBS:dsp 16 | LIBS:microchip 17 | LIBS:analog_switches 18 | LIBS:motorola 19 | LIBS:texas 20 | LIBS:intel 21 | LIBS:audio 22 | LIBS:interface 23 | LIBS:digital-audio 24 | LIBS:philips 25 | LIBS:display 26 | LIBS:cypress 27 | LIBS:siliconi 28 | LIBS:opto 29 | LIBS:atmel 30 | LIBS:contrib 31 | LIBS:valves 32 | LIBS:esp_micro85-only-cache 33 | EELAYER 27 0 34 | EELAYER END 35 | $Descr USLetter 11000 8500 36 | encoding utf-8 37 | Sheet 1 1 38 | Title "" 39 | Date "7 jul 2016" 40 | Rev "" 41 | Comp "" 42 | Comment1 "" 43 | Comment2 "" 44 | Comment3 "" 45 | Comment4 "" 46 | $EndDescr 47 | $Comp 48 | L C M3 49 | U 1 1 576C1959 50 | P 1550 2550 51 | F 0 "M3" H 1550 2650 40 0000 L CNN 52 | F 1 "5.6p" H 1556 2465 40 0000 L CNN 53 | F 2 "SM0603" H 1588 2400 30 0000 C CNN 54 | F 3 "~" H 1550 2550 60 0000 C CNN 55 | F 4 "1276-2318-1-ND" H 1550 2550 60 0001 C CNN "Digikey" 56 | F 5 ".08" H 1550 2550 60 0001 C CNN "Cost10" 57 | 1 1550 2550 58 | 0 -1 -1 0 59 | $EndComp 60 | $Comp 61 | L XTAL4P X1 62 | U 1 1 576C19C1 63 | P 3000 1200 64 | F 0 "X1" H 3000 1350 60 0000 C CNN 65 | F 1 "26MHz" H 3000 1050 60 0000 C CNN 66 | F 2 "XTAL4TINY" H 3000 1200 60 0000 C CNN 67 | F 3 "" H 3000 1200 60 0000 C CNN 68 | F 4 "490-9764-1-ND" H 3000 1200 60 0001 C CNN "Digikey" 69 | F 5 ".50" H 3000 1200 60 0001 C CNN "Cost10" 70 | 1 3000 1200 71 | 1 0 0 -1 72 | $EndComp 73 | $Comp 74 | L GND #PWR2 75 | U 1 1 576C1A63 76 | P 3350 700 77 | F 0 "#PWR2" H 3350 700 30 0001 C CNN 78 | F 1 "GND" H 3350 630 30 0001 C CNN 79 | F 2 "" H 3350 700 60 0000 C CNN 80 | F 3 "" H 3350 700 60 0000 C CNN 81 | 1 3350 700 82 | -1 0 0 1 83 | $EndComp 84 | $Comp 85 | L GND #PWR5 86 | U 1 1 576C1A81 87 | P 3000 1600 88 | F 0 "#PWR5" H 3000 1600 30 0001 C CNN 89 | F 1 "GND" H 3000 1530 30 0001 C CNN 90 | F 2 "" H 3000 1600 60 0000 C CNN 91 | F 3 "" H 3000 1600 60 0000 C CNN 92 | 1 3000 1600 93 | 1 0 0 -1 94 | $EndComp 95 | $Comp 96 | L R R1 97 | U 1 1 576C1B09 98 | P 2600 1800 99 | F 0 "R1" V 2680 1800 40 0000 C CNN 100 | F 1 "12k" V 2607 1801 40 0000 C CNN 101 | F 2 "SM0603" V 2530 1800 30 0000 C CNN 102 | F 3 "~" H 2600 1800 30 0000 C CNN 103 | 1 2600 1800 104 | 0 -1 -1 0 105 | $EndComp 106 | $Comp 107 | L GND #PWR6 108 | U 1 1 576C1B16 109 | P 2300 1850 110 | F 0 "#PWR6" H 2300 1850 30 0001 C CNN 111 | F 1 "GND" H 2300 1780 30 0001 C CNN 112 | F 2 "" H 2300 1850 60 0000 C CNN 113 | F 3 "" H 2300 1850 60 0000 C CNN 114 | 1 2300 1850 115 | 1 0 0 -1 116 | $EndComp 117 | $Comp 118 | L ESP8266EX U1 119 | U 1 1 576C192F 120 | P 3100 2800 121 | F 0 "U1" H 2200 3600 60 0000 C CNN 122 | F 1 "ESP8285" H 2250 3400 60 0000 C CNN 123 | F 2 "QFN32" H 2200 3500 60 0000 C CNN 124 | F 3 "~" H 2200 3500 60 0000 C CNN 125 | 1 3100 2800 126 | 1 0 0 -1 127 | $EndComp 128 | $Comp 129 | L +3.3V #PWR9 130 | U 1 1 576C1C32 131 | P 2950 2000 132 | F 0 "#PWR9" H 2950 1960 30 0001 C CNN 133 | F 1 "+3.3V" H 2950 2110 30 0000 C CNN 134 | F 2 "" H 2950 2000 60 0000 C CNN 135 | F 3 "" H 2950 2000 60 0000 C CNN 136 | 1 2950 2000 137 | 1 0 0 -1 138 | $EndComp 139 | $Comp 140 | L +3.3V #PWR10 141 | U 1 1 576C1C3F 142 | P 3050 2000 143 | F 0 "#PWR10" H 3050 1960 30 0001 C CNN 144 | F 1 "+3.3V" H 3050 2110 30 0000 C CNN 145 | F 2 "" H 3050 2000 60 0000 C CNN 146 | F 3 "" H 3050 2000 60 0000 C CNN 147 | 1 3050 2000 148 | 1 0 0 -1 149 | $EndComp 150 | $Comp 151 | L +3.3V #PWR8 152 | U 1 1 576C1C45 153 | P 2750 2000 154 | F 0 "#PWR8" H 2750 1960 30 0001 C CNN 155 | F 1 "+3.3V" H 2750 2110 30 0000 C CNN 156 | F 2 "" H 2750 2000 60 0000 C CNN 157 | F 3 "" H 2750 2000 60 0000 C CNN 158 | 1 2750 2000 159 | 1 0 0 -1 160 | $EndComp 161 | $Comp 162 | L +3.3V #PWR14 163 | U 1 1 576C1C4B 164 | P 1950 2650 165 | F 0 "#PWR14" H 1950 2610 30 0001 C CNN 166 | F 1 "+3.3V" H 1950 2760 30 0000 C CNN 167 | F 2 "" H 1950 2650 60 0000 C CNN 168 | F 3 "" H 1950 2650 60 0000 C CNN 169 | 1 1950 2650 170 | 0 -1 -1 0 171 | $EndComp 172 | $Comp 173 | L +3.3V #PWR12 174 | U 1 1 576C1C51 175 | P 1950 2450 176 | F 0 "#PWR12" H 1950 2410 30 0001 C CNN 177 | F 1 "+3.3V" H 1950 2560 30 0000 C CNN 178 | F 2 "" H 1950 2450 60 0000 C CNN 179 | F 3 "" H 1950 2450 60 0000 C CNN 180 | 1 1950 2450 181 | 0 -1 -1 0 182 | $EndComp 183 | $Comp 184 | L +3.3V #PWR15 185 | U 1 1 576C1C57 186 | P 1950 2750 187 | F 0 "#PWR15" H 1950 2710 30 0001 C CNN 188 | F 1 "+3.3V" H 1950 2860 30 0000 C CNN 189 | F 2 "" H 1950 2750 60 0000 C CNN 190 | F 3 "" H 1950 2750 60 0000 C CNN 191 | 1 1950 2750 192 | 0 -1 -1 0 193 | $EndComp 194 | $Comp 195 | L GND #PWR7 196 | U 1 1 576C1C63 197 | P 2650 2000 198 | F 0 "#PWR7" H 2650 2000 30 0001 C CNN 199 | F 1 "GND" H 2650 1930 30 0001 C CNN 200 | F 2 "" H 2650 2000 60 0000 C CNN 201 | F 3 "" H 2650 2000 60 0000 C CNN 202 | 1 2650 2000 203 | -1 0 0 1 204 | $EndComp 205 | $Comp 206 | L +3.3V #PWR17 207 | U 1 1 576C1CFA 208 | P 4100 3150 209 | F 0 "#PWR17" H 4100 3110 30 0001 C CNN 210 | F 1 "+3.3V" H 4100 3260 30 0000 C CNN 211 | F 2 "" H 4100 3150 60 0000 C CNN 212 | F 3 "" H 4100 3150 60 0000 C CNN 213 | 1 4100 3150 214 | 0 1 1 0 215 | $EndComp 216 | $Comp 217 | L +3.3V #PWR18 218 | U 1 1 576C1D00 219 | P 2950 3600 220 | F 0 "#PWR18" H 2950 3560 30 0001 C CNN 221 | F 1 "+3.3V" H 2950 3710 30 0000 C CNN 222 | F 2 "" H 2950 3600 60 0000 C CNN 223 | F 3 "" H 2950 3600 60 0000 C CNN 224 | 1 2950 3600 225 | -1 0 0 1 226 | $EndComp 227 | $Comp 228 | L +3.3V #PWR16 229 | U 1 1 576C1D06 230 | P 1950 3050 231 | F 0 "#PWR16" H 1950 3010 30 0001 C CNN 232 | F 1 "+3.3V" H 1950 3160 30 0000 C CNN 233 | F 2 "" H 1950 3050 60 0000 C CNN 234 | F 3 "" H 1950 3050 60 0000 C CNN 235 | 1 1950 3050 236 | 0 -1 -1 0 237 | $EndComp 238 | $Comp 239 | L CONN_1 P4 240 | U 1 1 576C1D0E 241 | P 1150 2550 242 | F 0 "P4" H 1230 2550 40 0000 L CNN 243 | F 1 "ANT" H 1150 2605 30 0001 C CNN 244 | F 2 ".1SMTPIN" H 1150 2550 60 0000 C CNN 245 | F 3 "" H 1150 2550 60 0000 C CNN 246 | 1 1150 2550 247 | -1 0 0 1 248 | $EndComp 249 | $Comp 250 | L GND #PWR13 251 | U 1 1 576C1D6F 252 | P 4100 2450 253 | F 0 "#PWR13" H 4100 2450 30 0001 C CNN 254 | F 1 "GND" H 4100 2380 30 0001 C CNN 255 | F 2 "" H 4100 2450 60 0000 C CNN 256 | F 3 "" H 4100 2450 60 0000 C CNN 257 | 1 4100 2450 258 | 0 -1 -1 0 259 | $EndComp 260 | $Comp 261 | L MCP1824 U2 262 | U 1 1 576C1E1A 263 | P 1950 4650 264 | F 0 "U2" H 1700 4950 60 0000 C CNN 265 | F 1 "3.3" H 2050 4350 60 0000 C CNN 266 | F 2 "SOT23-5" H 1950 4650 60 0000 C CNN 267 | F 3 "" H 1950 4650 60 0000 C CNN 268 | 1 1950 4650 269 | 1 0 0 -1 270 | $EndComp 271 | $Comp 272 | L +3.3V #PWR23 273 | U 1 1 576C1E27 274 | P 2550 4550 275 | F 0 "#PWR23" H 2550 4510 30 0001 C CNN 276 | F 1 "+3.3V" H 2550 4660 30 0000 C CNN 277 | F 2 "" H 2550 4550 60 0000 C CNN 278 | F 3 "" H 2550 4550 60 0000 C CNN 279 | 1 2550 4550 280 | 0 1 1 0 281 | $EndComp 282 | $Comp 283 | L GND #PWR24 284 | U 1 1 576C1E2D 285 | P 1350 4650 286 | F 0 "#PWR24" H 1350 4650 30 0001 C CNN 287 | F 1 "GND" H 1350 4580 30 0001 C CNN 288 | F 2 "" H 1350 4650 60 0000 C CNN 289 | F 3 "" H 1350 4650 60 0000 C CNN 290 | 1 1350 4650 291 | 0 1 1 0 292 | $EndComp 293 | $Comp 294 | L +5V #PWR22 295 | U 1 1 576C1E4F 296 | P 1250 4500 297 | F 0 "#PWR22" H 1250 4590 20 0001 C CNN 298 | F 1 "+5V" H 1250 4590 30 0000 C CNN 299 | F 2 "" H 1250 4500 60 0000 C CNN 300 | F 3 "" H 1250 4500 60 0000 C CNN 301 | 1 1250 4500 302 | 1 0 0 -1 303 | $EndComp 304 | $Comp 305 | L GND #PWR20 306 | U 1 1 576C1F4E 307 | P 3150 3700 308 | F 0 "#PWR20" H 3150 3700 30 0001 C CNN 309 | F 1 "GND" H 3150 3630 30 0001 C CNN 310 | F 2 "" H 3150 3700 60 0000 C CNN 311 | F 3 "" H 3150 3700 60 0000 C CNN 312 | 1 3150 3700 313 | 1 0 0 -1 314 | $EndComp 315 | $Comp 316 | L +3.3V #PWR21 317 | U 1 1 576C24D2 318 | P 2800 4100 319 | F 0 "#PWR21" H 2800 4060 30 0001 C CNN 320 | F 1 "+3.3V" H 2800 4210 30 0000 C CNN 321 | F 2 "" H 2800 4100 60 0000 C CNN 322 | F 3 "" H 2800 4100 60 0000 C CNN 323 | 1 2800 4100 324 | 0 -1 -1 0 325 | $EndComp 326 | $Comp 327 | L CONN_1 P2 328 | U 1 1 576C2572 329 | P 3350 1850 330 | F 0 "P2" H 3430 1850 40 0000 L CNN 331 | F 1 "TX" H 3350 1905 30 0001 C CNN 332 | F 2 ".1SMTPIN" H 3350 1850 60 0000 C CNN 333 | F 3 "" H 3350 1850 60 0000 C CNN 334 | 1 3350 1850 335 | 0 -1 -1 0 336 | $EndComp 337 | $Comp 338 | L CONN_1 P1 339 | U 1 1 576C2578 340 | P 3450 1400 341 | F 0 "P1" H 3530 1400 40 0000 L CNN 342 | F 1 "RX" H 3450 1455 30 0001 C CNN 343 | F 2 ".1SMTPIN" H 3450 1400 60 0000 C CNN 344 | F 3 "" H 3450 1400 60 0000 C CNN 345 | 1 3450 1400 346 | 0 -1 -1 0 347 | $EndComp 348 | $Comp 349 | L CONN_1 P3 350 | U 1 1 576C257E 351 | P 3550 1850 352 | F 0 "P3" H 3630 1850 40 0000 L CNN 353 | F 1 "GND" H 3550 1905 30 0001 C CNN 354 | F 2 ".1SMTPIN" H 3550 1850 60 0000 C CNN 355 | F 3 "" H 3550 1850 60 0000 C CNN 356 | 1 3550 1850 357 | 0 -1 -1 0 358 | $EndComp 359 | $Comp 360 | L GND #PWR11 361 | U 1 1 576C2584 362 | P 3550 2000 363 | F 0 "#PWR11" H 3550 2000 30 0001 C CNN 364 | F 1 "GND" H 3550 1930 30 0001 C CNN 365 | F 2 "" H 3550 2000 60 0000 C CNN 366 | F 3 "" H 3550 2000 60 0000 C CNN 367 | 1 3550 2000 368 | 1 0 0 -1 369 | $EndComp 370 | $Comp 371 | L C M1 372 | U 1 1 576C2FB6 373 | P 2650 900 374 | F 0 "M1" H 2650 1000 40 0000 L CNN 375 | F 1 "5.6p" H 2656 815 40 0000 L CNN 376 | F 2 "SM0402" H 2688 750 30 0000 C CNN 377 | F 3 "~" H 2650 900 60 0000 C CNN 378 | F 4 "1276-2318-1-ND" H 2650 900 60 0001 C CNN "Digikey" 379 | F 5 ".08" H 2650 900 60 0001 C CNN "Cost10" 380 | 1 2650 900 381 | -1 0 0 1 382 | $EndComp 383 | $Comp 384 | L C M2 385 | U 1 1 576C2CF8 386 | P 3350 900 387 | F 0 "M2" H 3350 1000 40 0000 L CNN 388 | F 1 "5.6p" H 3356 815 40 0000 L CNN 389 | F 2 "SM0402" H 3388 750 30 0000 C CNN 390 | F 3 "~" H 3350 900 60 0000 C CNN 391 | F 4 "1276-2318-1-ND" H 3350 900 60 0001 C CNN "Digikey" 392 | F 5 ".08" H 3350 900 60 0001 C CNN "Cost10" 393 | 1 3350 900 394 | -1 0 0 1 395 | $EndComp 396 | $Comp 397 | L GND #PWR1 398 | U 1 1 576C2DCA 399 | P 2650 700 400 | F 0 "#PWR1" H 2650 700 30 0001 C CNN 401 | F 1 "GND" H 2650 630 30 0001 C CNN 402 | F 2 "" H 2650 700 60 0000 C CNN 403 | F 3 "" H 2650 700 60 0000 C CNN 404 | 1 2650 700 405 | -1 0 0 1 406 | $EndComp 407 | $Comp 408 | L C C1 409 | U 1 1 576C2DFD 410 | P 1200 1400 411 | F 0 "C1" H 1200 1500 40 0000 L CNN 412 | F 1 ".1u" H 1206 1315 40 0000 L CNN 413 | F 2 "SM0402" H 1238 1250 30 0000 C CNN 414 | F 3 "~" H 1200 1400 60 0000 C CNN 415 | F 4 "1276-1022-1-ND" H 1200 1400 60 0001 C CNN "Digikey" 416 | F 5 "0.0048" H 1200 1400 60 0001 C CNN "Cost100" 417 | 1 1200 1400 418 | -1 0 0 1 419 | $EndComp 420 | $Comp 421 | L +3.3V #PWR3 422 | U 1 1 576C2E03 423 | P 1200 1200 424 | F 0 "#PWR3" H 1200 1160 30 0001 C CNN 425 | F 1 "+3.3V" H 1200 1310 30 0000 C CNN 426 | F 2 "" H 1200 1200 60 0000 C CNN 427 | F 3 "" H 1200 1200 60 0000 C CNN 428 | 1 1200 1200 429 | 1 0 0 -1 430 | $EndComp 431 | $Comp 432 | L GND #PWR4 433 | U 1 1 576C2E09 434 | P 1200 1600 435 | F 0 "#PWR4" H 1200 1600 30 0001 C CNN 436 | F 1 "GND" H 1200 1530 30 0001 C CNN 437 | F 2 "" H 1200 1600 60 0000 C CNN 438 | F 3 "" H 1200 1600 60 0000 C CNN 439 | 1 1200 1600 440 | 1 0 0 -1 441 | $EndComp 442 | $Comp 443 | L CONN_1 P5 444 | U 1 1 576C2F50 445 | P 1600 2950 446 | F 0 "P5" H 1680 2950 40 0000 L CNN 447 | F 1 "A" H 1600 3005 30 0001 C CNN 448 | F 2 ".1SMTPIN" H 1600 2950 60 0000 C CNN 449 | F 3 "" H 1600 2950 60 0000 C CNN 450 | 1 1600 2950 451 | -1 0 0 1 452 | $EndComp 453 | $Comp 454 | L R R2 455 | U 1 1 576C24A9 456 | P 3050 4100 457 | F 0 "R2" V 3130 4100 40 0000 C CNN 458 | F 1 "12k" V 3057 4101 40 0000 C CNN 459 | F 2 "SM0603" V 2980 4100 30 0000 C CNN 460 | F 3 "~" H 3050 4100 30 0000 C CNN 461 | 1 3050 4100 462 | 0 -1 -1 0 463 | $EndComp 464 | $Comp 465 | L +3.3V #PWR29 466 | U 1 1 576C36D0 467 | P 2600 5750 468 | F 0 "#PWR29" H 2600 5710 30 0001 C CNN 469 | F 1 "+3.3V" H 2600 5860 30 0000 C CNN 470 | F 2 "" H 2600 5750 60 0000 C CNN 471 | F 3 "" H 2600 5750 60 0000 C CNN 472 | 1 2600 5750 473 | 1 0 0 -1 474 | $EndComp 475 | $Comp 476 | L GND #PWR31 477 | U 1 1 576C36DE 478 | P 2600 6150 479 | F 0 "#PWR31" H 2600 6150 30 0001 C CNN 480 | F 1 "GND" H 2600 6080 30 0001 C CNN 481 | F 2 "" H 2600 6150 60 0000 C CNN 482 | F 3 "" H 2600 6150 60 0000 C CNN 483 | 1 2600 6150 484 | 1 0 0 -1 485 | $EndComp 486 | $Comp 487 | L C E2 488 | U 1 1 576C3722 489 | P 2600 5950 490 | F 0 "E2" H 2600 6050 40 0000 L CNN 491 | F 1 "10u" H 2606 5865 40 0000 L CNN 492 | F 2 "SM0603" H 2638 5800 30 0000 C CNN 493 | F 3 "~" H 2600 5950 60 0000 C CNN 494 | F 4 "490-6405-1-ND" H 2600 5950 60 0001 C CNN "Digikey" 495 | F 5 ".0499" H 2600 5950 60 0001 C CNN "Cost10" 496 | 1 2600 5950 497 | -1 0 0 1 498 | $EndComp 499 | $Comp 500 | L C E1 501 | U 1 1 576C372A 502 | P 2350 5950 503 | F 0 "E1" H 2350 6050 40 0000 L CNN 504 | F 1 "10u" H 2356 5865 40 0000 L CNN 505 | F 2 "SM0603" H 2388 5800 30 0000 C CNN 506 | F 3 "~" H 2350 5950 60 0000 C CNN 507 | F 4 "490-6405-1-ND" H 2350 5950 60 0001 C CNN "Digikey" 508 | F 5 ".0499" H 2350 5950 60 0001 C CNN "Cost10" 509 | 1 2350 5950 510 | -1 0 0 1 511 | $EndComp 512 | $Comp 513 | L +5V #PWR28 514 | U 1 1 576C3730 515 | P 2350 5750 516 | F 0 "#PWR28" H 2350 5840 20 0001 C CNN 517 | F 1 "+5V" H 2350 5840 30 0000 C CNN 518 | F 2 "" H 2350 5750 60 0000 C CNN 519 | F 3 "" H 2350 5750 60 0000 C CNN 520 | 1 2350 5750 521 | 1 0 0 -1 522 | $EndComp 523 | $Comp 524 | L GND #PWR30 525 | U 1 1 576C3736 526 | P 2350 6150 527 | F 0 "#PWR30" H 2350 6150 30 0001 C CNN 528 | F 1 "GND" H 2350 6080 30 0001 C CNN 529 | F 2 "" H 2350 6150 60 0000 C CNN 530 | F 3 "" H 2350 6150 60 0000 C CNN 531 | 1 2350 6150 532 | 1 0 0 -1 533 | $EndComp 534 | $Comp 535 | L CONN_1 P7 536 | U 1 1 576C373C 537 | P 1000 5000 538 | F 0 "P7" H 1080 5000 40 0000 L CNN 539 | F 1 "5" H 1000 5055 30 0001 C CNN 540 | F 2 ".1SMTPIN" H 1000 5000 60 0000 C CNN 541 | F 3 "" H 1000 5000 60 0000 C CNN 542 | 1 1000 5000 543 | -1 0 0 1 544 | $EndComp 545 | $Comp 546 | L GND #PWR25 547 | U 1 1 576C3776 548 | P 1150 4900 549 | F 0 "#PWR25" H 1150 4900 30 0001 C CNN 550 | F 1 "GND" H 1150 4830 30 0001 C CNN 551 | F 2 "" H 1150 4900 60 0000 C CNN 552 | F 3 "" H 1150 4900 60 0000 C CNN 553 | 1 1150 4900 554 | 0 -1 -1 0 555 | $EndComp 556 | $Comp 557 | L CONN_1 P6 558 | U 1 1 576C377C 559 | P 1000 4900 560 | F 0 "P6" H 1080 4900 40 0000 L CNN 561 | F 1 "0" H 1000 4955 30 0001 C CNN 562 | F 2 ".1SMTPIN" H 1000 4900 60 0000 C CNN 563 | F 3 "" H 1000 4900 60 0000 C CNN 564 | 1 1000 4900 565 | -1 0 0 1 566 | $EndComp 567 | Text GLabel 3450 3600 3 60 Input ~ 0 568 | SCL 569 | Text GLabel 3250 3600 3 60 Input ~ 0 570 | SDA 571 | $Comp 572 | L GND #PWR19 573 | U 1 1 5772D106 574 | P 3050 3700 575 | F 0 "#PWR19" H 3050 3700 30 0001 C CNN 576 | F 1 "GND" H 3050 3630 30 0001 C CNN 577 | F 2 "" H 3050 3700 60 0000 C CNN 578 | F 3 "" H 3050 3700 60 0000 C CNN 579 | 1 3050 3700 580 | 1 0 0 -1 581 | $EndComp 582 | $Comp 583 | L CONN_1 P8 584 | U 1 1 5772D3E9 585 | P 3550 4100 586 | F 0 "P8" H 3630 4100 40 0000 L CNN 587 | F 1 "PGM" H 3550 4155 30 0001 C CNN 588 | F 2 ".1SMTPIN" H 3550 4100 60 0000 C CNN 589 | F 3 "" H 3550 4100 60 0000 C CNN 590 | 1 3550 4100 591 | 1 0 0 -1 592 | $EndComp 593 | $Comp 594 | L CONN_1 P9 595 | U 1 1 5772DB40 596 | P 1750 3600 597 | F 0 "P9" H 1830 3600 40 0000 L CNN 598 | F 1 "E" H 1750 3655 30 0001 C CNN 599 | F 2 ".1SMTPIN" H 1750 3600 60 0000 C CNN 600 | F 3 "" H 1750 3600 60 0000 C CNN 601 | 1 1750 3600 602 | -1 0 0 1 603 | $EndComp 604 | Wire Wire Line 605 | 1750 2550 1950 2550 606 | Wire Wire Line 607 | 2950 1500 2950 1550 608 | Wire Wire Line 609 | 2950 1550 3050 1550 610 | Wire Wire Line 611 | 3050 1550 3050 1500 612 | Wire Wire Line 613 | 3000 1550 3000 1600 614 | Connection ~ 3000 1550 615 | Wire Wire Line 616 | 2650 1100 2650 1700 617 | Wire Wire Line 618 | 2650 1700 3150 1700 619 | Wire Wire Line 620 | 3150 1700 3150 2000 621 | Wire Wire Line 622 | 3250 2000 3250 1700 623 | Wire Wire Line 624 | 3250 1700 3350 1700 625 | Wire Wire Line 626 | 3350 1700 3350 1100 627 | Wire Wire Line 628 | 2300 1850 2300 1800 629 | Wire Wire Line 630 | 2300 1800 2350 1800 631 | Wire Wire Line 632 | 2850 1800 2850 2000 633 | Wire Wire Line 634 | 1300 2550 1350 2550 635 | Wire Wire Line 636 | 1350 4550 1250 4550 637 | Wire Wire Line 638 | 1250 4750 1350 4750 639 | Wire Wire Line 640 | 3150 3700 3150 3600 641 | Wire Wire Line 642 | 3300 4100 3400 4100 643 | Wire Wire Line 644 | 3350 4100 3350 3600 645 | Connection ~ 1250 4750 646 | Connection ~ 3350 4100 647 | Wire Wire Line 648 | 3450 1550 3450 2000 649 | Connection ~ 3450 1600 650 | Wire Wire Line 651 | 3350 1200 3300 1200 652 | Connection ~ 3350 1200 653 | Wire Wire Line 654 | 2650 1200 2700 1200 655 | Connection ~ 2650 1200 656 | Wire Wire Line 657 | 1750 2950 1950 2950 658 | Wire Wire Line 659 | 1250 5000 1150 5000 660 | Wire Wire Line 661 | 3050 3700 3050 3600 662 | Wire Wire Line 663 | 2750 3600 1900 3600 664 | Text Notes 2650 5250 0 60 ~ 0 665 | Use 1292-1002-1-ND antenna or 1292-1000-1-ND or 1292-1035-1-ND 666 | Wire Wire Line 667 | 1250 4500 1250 5000 668 | Connection ~ 1250 4550 669 | $EndSCHEMATC 670 | -------------------------------------------------------------------------------- /user/ws2812_i2s.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright 2013-2015 Espressif Systems 3 | * 2015 <>< Charles Lohr 4 | * 5 | * FileName: i2s_freertos.c 6 | * 7 | * Description: I2S output routines for a FreeRTOS system. Uses DMA and a queue 8 | * to abstract away the nitty-gritty details. 9 | * 10 | * Modification history: 11 | * 2015/06/01, v1.0 File created. 12 | * 2015/07/23, Switch to making it a WS2812 output device. 13 | ******************************************************************************* 14 | 15 | Notes: 16 | 17 | This is pretty badly hacked together from the MP3 example. 18 | I spent some time trying to strip it down to avoid a lot of the TX_ stuff. 19 | That seems to work. 20 | 21 | Major suggestions that I couldn't figure out: 22 | * Use interrupts to disable DMA, so it isn't running nonstop. 23 | * Use interrupts to flag when new data can be sent. 24 | 25 | When I try using interrupts, it seems to work for a bit but things fall apart 26 | rather quickly and the engine just refuses to send anymore until reboot. 27 | 28 | The way it works right now is to keep the DMA running forever and just update 29 | the data in the buffer so it continues sending the frame. 30 | 31 | Extra copyright info: 32 | Actually not much of this file is Copyright Espressif, comparativly little 33 | mostly just the stuff to make the I2S bus go. 34 | 35 | *******************************************************************************/ 36 | 37 | 38 | #include "slc_register.h" 39 | #include "mystuff.h" 40 | #include 41 | #include "ws2812_i2s.h" 42 | #include "user_interface.h" 43 | #include "pin_mux_register.h" 44 | 45 | //Creates an I2S SR of 93,750 Hz, or 3 MHz Bitclock (.333us/sample) 46 | // 1600000000L/(div*bestbck) 47 | //It is likely you could speed this up a little. 48 | 49 | #ifdef WS2812_THREE_SAMPLE 50 | #define WS_I2S_BCK 22 //Seems to work as low as 19, but is shakey at 18. 51 | #define WS_I2S_DIV 4 52 | #elif defined( WS2812_FOUR_SAMPLE ) || defined(SK6812) 53 | #define WS_I2S_BCK 17 //Seems to work as low as 14, shoddy at 13. 54 | #define WS_I2S_DIV 4 55 | #else 56 | #error You need to either define WS2812_THREE_SAMPLE, WS2812_FOUR_SAMPLE or SK6812 57 | #endif 58 | 59 | #ifndef i2c_bbpll 60 | #define i2c_bbpll 0x67 61 | #define i2c_bbpll_en_audio_clock_out 4 62 | #define i2c_bbpll_en_audio_clock_out_msb 7 63 | #define i2c_bbpll_en_audio_clock_out_lsb 7 64 | #define i2c_bbpll_hostid 4 65 | 66 | #define i2c_writeReg_Mask(block, host_id, reg_add, Msb, Lsb, indata) rom_i2c_writeReg_Mask(block, host_id, reg_add, Msb, Lsb, indata) 67 | #define i2c_readReg_Mask(block, host_id, reg_add, Msb, Lsb) rom_i2c_readReg_Mask(block, host_id, reg_add, Msb, Lsb) 68 | #define i2c_writeReg_Mask_def(block, reg_add, indata) \ 69 | i2c_writeReg_Mask(block, block##_hostid, reg_add, reg_add##_msb, reg_add##_lsb, indata) 70 | #define i2c_readReg_Mask_def(block, reg_add) \ 71 | i2c_readReg_Mask(block, block##_hostid, reg_add, reg_add##_msb, reg_add##_lsb) 72 | #endif 73 | #ifndef ETS_SLC_INUM 74 | #define ETS_SLC_INUM 1 75 | #endif 76 | 77 | 78 | 79 | //From i2s_reg.h 80 | #define DR_REG_I2S_BASE (0x60000e00) 81 | 82 | #define I2STXFIFO (DR_REG_I2S_BASE + 0x0000) 83 | #define I2SRXFIFO (DR_REG_I2S_BASE + 0x0004) 84 | #define I2SCONF (DR_REG_I2S_BASE + 0x0008) 85 | #define I2S_BCK_DIV_NUM 0x0000003F 86 | #define I2S_BCK_DIV_NUM_S 22 87 | #define I2S_CLKM_DIV_NUM 0x0000003F 88 | #define I2S_CLKM_DIV_NUM_S 16 89 | #define I2S_BITS_MOD 0x0000000F 90 | #define I2S_BITS_MOD_S 12 91 | #define I2S_RECE_MSB_SHIFT (BIT(11)) 92 | #define I2S_TRANS_MSB_SHIFT (BIT(10)) 93 | #define I2S_I2S_RX_START (BIT(9)) 94 | #define I2S_I2S_TX_START (BIT(8)) 95 | #define I2S_MSB_RIGHT (BIT(7)) 96 | #define I2S_RIGHT_FIRST (BIT(6)) 97 | #define I2S_RECE_SLAVE_MOD (BIT(5)) 98 | #define I2S_TRANS_SLAVE_MOD (BIT(4)) 99 | #define I2S_I2S_RX_FIFO_RESET (BIT(3)) 100 | #define I2S_I2S_TX_FIFO_RESET (BIT(2)) 101 | #define I2S_I2S_RX_RESET (BIT(1)) 102 | #define I2S_I2S_TX_RESET (BIT(0)) 103 | #define I2S_I2S_RESET_MASK 0xf 104 | 105 | #define I2SINT_RAW (DR_REG_I2S_BASE + 0x000c) 106 | #define I2S_I2S_TX_REMPTY_INT_RAW (BIT(5)) 107 | #define I2S_I2S_TX_WFULL_INT_RAW (BIT(4)) 108 | #define I2S_I2S_RX_REMPTY_INT_RAW (BIT(3)) 109 | #define I2S_I2S_RX_WFULL_INT_RAW (BIT(2)) 110 | #define I2S_I2S_TX_PUT_DATA_INT_RAW (BIT(1)) 111 | #define I2S_I2S_RX_TAKE_DATA_INT_RAW (BIT(0)) 112 | 113 | 114 | #define I2SINT_ST (DR_REG_I2S_BASE + 0x0010) 115 | #define I2S_I2S_TX_REMPTY_INT_ST (BIT(5)) 116 | #define I2S_I2S_TX_WFULL_INT_ST (BIT(4)) 117 | #define I2S_I2S_RX_REMPTY_INT_ST (BIT(3)) 118 | #define I2S_I2S_RX_WFULL_INT_ST (BIT(2)) 119 | #define I2S_I2S_TX_PUT_DATA_INT_ST (BIT(1)) 120 | #define I2S_I2S_RX_TAKE_DATA_INT_ST (BIT(0)) 121 | 122 | #define I2SINT_ENA (DR_REG_I2S_BASE + 0x0014) 123 | #define I2S_I2S_TX_REMPTY_INT_ENA (BIT(5)) 124 | #define I2S_I2S_TX_WFULL_INT_ENA (BIT(4)) 125 | #define I2S_I2S_RX_REMPTY_INT_ENA (BIT(3)) 126 | #define I2S_I2S_RX_WFULL_INT_ENA (BIT(2)) 127 | #define I2S_I2S_TX_PUT_DATA_INT_ENA (BIT(1)) 128 | #define I2S_I2S_RX_TAKE_DATA_INT_ENA (BIT(0)) 129 | 130 | #define I2SINT_CLR (DR_REG_I2S_BASE + 0x0018) 131 | #define I2S_I2S_TX_REMPTY_INT_CLR (BIT(5)) 132 | #define I2S_I2S_TX_WFULL_INT_CLR (BIT(4)) 133 | #define I2S_I2S_RX_REMPTY_INT_CLR (BIT(3)) 134 | #define I2S_I2S_RX_WFULL_INT_CLR (BIT(2)) 135 | #define I2S_I2S_PUT_DATA_INT_CLR (BIT(1)) 136 | #define I2S_I2S_TAKE_DATA_INT_CLR (BIT(0)) 137 | 138 | #define I2STIMING (DR_REG_I2S_BASE + 0x001c) 139 | #define I2S_TRANS_BCK_IN_INV (BIT(22)) 140 | #define I2S_RECE_DSYNC_SW (BIT(21)) 141 | #define I2S_TRANS_DSYNC_SW (BIT(20)) 142 | #define I2S_RECE_BCK_OUT_DELAY 0x00000003 143 | #define I2S_RECE_BCK_OUT_DELAY_S 18 144 | #define I2S_RECE_WS_OUT_DELAY 0x00000003 145 | #define I2S_RECE_WS_OUT_DELAY_S 16 146 | #define I2S_TRANS_SD_OUT_DELAY 0x00000003 147 | #define I2S_TRANS_SD_OUT_DELAY_S 14 148 | #define I2S_TRANS_WS_OUT_DELAY 0x00000003 149 | #define I2S_TRANS_WS_OUT_DELAY_S 12 150 | #define I2S_TRANS_BCK_OUT_DELAY 0x00000003 151 | #define I2S_TRANS_BCK_OUT_DELAY_S 10 152 | #define I2S_RECE_SD_IN_DELAY 0x00000003 153 | #define I2S_RECE_SD_IN_DELAY_S 8 154 | #define I2S_RECE_WS_IN_DELAY 0x00000003 155 | #define I2S_RECE_WS_IN_DELAY_S 6 156 | #define I2S_RECE_BCK_IN_DELAY 0x00000003 157 | #define I2S_RECE_BCK_IN_DELAY_S 4 158 | #define I2S_TRANS_WS_IN_DELAY 0x00000003 159 | #define I2S_TRANS_WS_IN_DELAY_S 2 160 | #define I2S_TRANS_BCK_IN_DELAY 0x00000003 161 | #define I2S_TRANS_BCK_IN_DELAY_S 0 162 | 163 | #define I2S_FIFO_CONF (DR_REG_I2S_BASE + 0x0020) 164 | #define I2S_I2S_RX_FIFO_MOD 0x00000007 165 | #define I2S_I2S_RX_FIFO_MOD_S 16 166 | #define I2S_I2S_TX_FIFO_MOD 0x00000007 167 | #define I2S_I2S_TX_FIFO_MOD_S 13 168 | #define I2S_I2S_DSCR_EN (BIT(12)) 169 | #define I2S_I2S_TX_DATA_NUM 0x0000003F 170 | #define I2S_I2S_TX_DATA_NUM_S 6 171 | #define I2S_I2S_RX_DATA_NUM 0x0000003F 172 | #define I2S_I2S_RX_DATA_NUM_S 0 173 | 174 | 175 | #define I2SRXEOF_NUM (DR_REG_I2S_BASE + 0x0024) 176 | #define I2S_I2S_RX_EOF_NUM 0xFFFFFFFF 177 | #define I2S_I2S_RX_EOF_NUM_S 0 178 | 179 | #define I2SCONF_SIGLE_DATA (DR_REG_I2S_BASE + 0x0028) 180 | #define I2S_I2S_SIGLE_DATA 0xFFFFFFFF 181 | #define I2S_I2S_SIGLE_DATA_S 0 182 | 183 | #define I2SCONF_CHAN (DR_REG_I2S_BASE + 0x002c) 184 | #define I2S_RX_CHAN_MOD 0x00000003 185 | #define I2S_RX_CHAN_MOD_S 3 186 | #define I2S_TX_CHAN_MOD 0x00000007 187 | #define I2S_TX_CHAN_MOD_S 0 188 | 189 | 190 | //From sdio_slv.h 191 | 192 | 193 | struct sdio_queue 194 | { 195 | uint32 blocksize:12; 196 | uint32 datalen:12; 197 | uint32 unused:5; 198 | uint32 sub_sof:1; 199 | uint32 eof:1; 200 | uint32 owner:1; 201 | 202 | uint32 buf_ptr; 203 | uint32 next_link_ptr; 204 | }; 205 | 206 | struct sdio_slave_status_element 207 | { 208 | uint32 wr_busy:1; 209 | uint32 rd_empty :1; 210 | uint32 comm_cnt :3; 211 | uint32 intr_no :3; 212 | uint32 rx_length:16; 213 | uint32 res:8; 214 | }; 215 | 216 | union sdio_slave_status 217 | { 218 | struct sdio_slave_status_element elm_value; 219 | uint32 word_value; 220 | }; 221 | 222 | #define RX_AVAILIBLE 2 223 | #define TX_AVAILIBLE 1 224 | #define INIT_STAGE 0 225 | 226 | #define SDIO_QUEUE_LEN 8 227 | #define MOSI 0 228 | #define MISO 1 229 | #define SDIO_DATA_ERROR 6 230 | 231 | #define SLC_INTEREST_EVENT (SLC_TX_EOF_INT_ENA | SLC_RX_EOF_INT_ENA | SLC_RX_UDF_INT_ENA | SLC_TX_DSCR_ERR_INT_ENA) 232 | #define TRIG_TOHOST_INT() SET_PERI_REG_MASK(SLC_INTVEC_TOHOST , BIT0);\ 233 | CLEAR_PERI_REG_MASK(SLC_INTVEC_TOHOST , BIT0) 234 | 235 | 236 | ///Rest of program... 237 | 238 | //Pointer to the I2S DMA buffer data 239 | //static unsigned int i2sBuf[I2SDMABUFCNT][I2SDMABUFLEN]; 240 | //I2S DMA buffer descriptors 241 | //static struct sdio_queue i2sBufDesc[I2SDMABUFCNT]; 242 | static struct sdio_queue i2sBufDescOut; 243 | static struct sdio_queue i2sBufDescZeroes; 244 | 245 | static unsigned int i2sZeroes[32]; 246 | static unsigned int i2sBlock[WS_BLOCKSIZE/4]; 247 | 248 | //Queue which contains empty DMA buffers 249 | //DMA underrun counter 250 | 251 | 252 | #ifdef USE_2812_INTERRUPTS 253 | 254 | volatile uint8_t ws2812_dma_complete; 255 | 256 | //This routine is called as soon as the DMA routine has something to tell us. All we 257 | //handle here is the RX_EOF_INT status, which indicate the DMA has sent a buffer whose 258 | //descriptor has the 'EOF' field set to 1. 259 | LOCAL void slc_isr(void) { 260 | //clear all intr flags 261 | // WRITE_PERI_REG(SLC_INT_CLR, 0xffffffff);//slc_intr_status); 262 | 263 | // ws2812_dma_complete = 1; 264 | 265 | //This is a little wacky. This function actually gets called twice. 266 | //Once for the initial transfer, but by the time we tell it to stop 267 | //The other zero transfer's already begun. 268 | // SET_PERI_REG_MASK(SLC_RX_LINK, SLC_RXLINK_STOP); 269 | } 270 | 271 | 272 | #endif 273 | 274 | //Initialize I2S subsystem for DMA circular buffer use 275 | void ICACHE_FLASH_ATTR ws2812_init() 276 | { 277 | int x, y; 278 | 279 | //Reset DMA 280 | SET_PERI_REG_MASK(SLC_CONF0, SLC_RXLINK_RST);//|SLC_TXLINK_RST); 281 | CLEAR_PERI_REG_MASK(SLC_CONF0, SLC_RXLINK_RST);//|SLC_TXLINK_RST); 282 | 283 | //Clear DMA int flags 284 | SET_PERI_REG_MASK(SLC_INT_CLR, 0xffffffff); 285 | CLEAR_PERI_REG_MASK(SLC_INT_CLR, 0xffffffff); 286 | 287 | //Enable and configure DMA 288 | CLEAR_PERI_REG_MASK(SLC_CONF0, (SLC_MODE< WS_BLOCKSIZE ) return; 450 | 451 | int pl = 0; 452 | int quit = 0; 453 | 454 | //Once for each led. 455 | for( place = 0; !quit; place++ ) 456 | { 457 | uint8_t b; 458 | b = buffer[pl++]; uint16_t c1a = bitpatterns[(b&0x0f)]; uint16_t c1b = bitpatterns[(b>>4)]; 459 | b = buffer[pl++]; uint16_t c2a = bitpatterns[(b&0x0f)]; uint16_t c2b = bitpatterns[(b>>4)]; 460 | b = buffer[pl++]; uint16_t c3a = bitpatterns[(b&0x0f)]; uint16_t c3b = bitpatterns[(b>>4)]; 461 | b = buffer[pl++]; uint16_t c4a = bitpatterns[(b&0x0f)]; uint16_t c4b = bitpatterns[(b>>4)]; 462 | 463 | if( pl >= buffersize ) 464 | { 465 | quit = 1; 466 | if( pl-1 >= buffersize ) c4a = c4b = 0; 467 | if( pl-2 >= buffersize ) c3a = c3b = 0; 468 | if( pl-3 >= buffersize ) c2a = c2b = 0; 469 | if( pl-4 >= buffersize ) c1a = c1b = 0; 470 | } 471 | 472 | //Order of bits on wire: Reverse from how they appear here. 473 | #define STEP1(x) (c##x##b >> 4 ) 474 | #define STEP2(x) ((c##x##b << 4 ) | ( c##x##a>>8 )) 475 | #define STEP3(x) (c##x##a & 0xff ) 476 | 477 | *(bufferpl++) = STEP1(2); 478 | *(bufferpl++) = STEP3(1); 479 | *(bufferpl++) = STEP2(1); 480 | *(bufferpl++) = STEP1(1); 481 | 482 | *(bufferpl++) = STEP2(3); 483 | *(bufferpl++) = STEP1(3); 484 | *(bufferpl++) = STEP3(2); 485 | *(bufferpl++) = STEP2(2); 486 | 487 | *(bufferpl++) = STEP3(4); 488 | *(bufferpl++) = STEP2(4); 489 | *(bufferpl++) = STEP1(4); 490 | *(bufferpl++) = STEP3(3); 491 | } 492 | 493 | while( bufferpl < &((uint8_t*)i2sBlock)[WS_BLOCKSIZE] ) *(bufferpl++) = 0; 494 | 495 | #elif defined(WS2812_FOUR_SAMPLE) || defined(SK6812) 496 | uint16_t * bufferpl = (uint16_t*)&i2sBlock[0]; 497 | 498 | if( buffersize * 4 > WS_BLOCKSIZE ) return; 499 | 500 | for( place = 0; place < buffersize; place++ ) 501 | { 502 | uint8_t btosend = buffer[place]; 503 | *(bufferpl++) = bitpatterns[(btosend&0x0f)]; 504 | *(bufferpl++) = bitpatterns[(btosend>>4)&0x0f]; 505 | } 506 | #endif 507 | 508 | #ifdef USE_2812_INTERRUPTS 509 | 510 | uint16_t leftover = buffersize & 0x1f; 511 | if( leftover ) leftover = 32 - leftover; 512 | for( place = 0; place < leftover; place++ ) 513 | { 514 | *(bufferpl++) = 0; 515 | *(bufferpl++) = 0; 516 | } 517 | 518 | buffersize += leftover; 519 | 520 | uint16_t sizeout_words = buffersize * 2; 521 | 522 | i2sBufDescOut.owner = 1; 523 | i2sBufDescOut.eof = 1; 524 | i2sBufDescOut.sub_sof = 0; 525 | i2sBufDescOut.datalen = sizeout_words*2; //Size (in bytes) 526 | i2sBufDescOut.blocksize = sizeout_words*2; //Size (in bytes) 527 | i2sBufDescOut.buf_ptr = (uint32_t)&i2sBlock[0]; 528 | i2sBufDescOut.unused = 0; 529 | i2sBufDescOut.next_link_ptr=(uint32_t)&i2sBufDescZeroes; //At the end, just redirect the DMA to the zero buffer. 530 | 531 | SET_PERI_REG_MASK(SLC_RX_LINK, SLC_RXLINK_STOP); 532 | CLEAR_PERI_REG_MASK(SLC_RX_LINK,SLC_RXLINK_DESCADDR_MASK); 533 | SET_PERI_REG_MASK(SLC_RX_LINK, ((uint32)&i2sBufDescOut) & SLC_RXLINK_DESCADDR_MASK); 534 | SET_PERI_REG_MASK(SLC_RX_LINK, SLC_RXLINK_START); 535 | 536 | #endif 537 | 538 | } 539 | 540 | 541 | 542 | -------------------------------------------------------------------------------- /hardware/esp_micro85-only-F_Cu.ps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 2 | %%Creator: PCBNEW 3 | %%CreationDate: Thu Jul 7 14:17:24 2016 4 | %%Title: /home/cnlohr/git/esp8266_link_test/hardware/esp_micro85-only-F_Cu.ps 5 | %%Pages: 1 6 | %%PageOrder: Ascend 7 | %%BoundingBox: 0 0 396 396 8 | %%DocumentMedia: Custom 396 396 0 () () 9 | %%Orientation: Landscape 10 | %%EndComments 11 | %%BeginProlog 12 | /line { newpath moveto lineto stroke } bind def 13 | /cir0 { newpath 0 360 arc stroke } bind def 14 | /cir1 { newpath 0 360 arc gsave fill grestore stroke } bind def 15 | /cir2 { newpath 0 360 arc gsave fill grestore stroke } bind def 16 | /arc0 { newpath arc stroke } bind def 17 | /arc1 { newpath 4 index 4 index moveto arc closepath gsave fill 18 | grestore stroke } bind def 19 | /arc2 { newpath 4 index 4 index moveto arc closepath gsave fill 20 | grestore stroke } bind def 21 | /poly0 { stroke } bind def 22 | /poly1 { closepath gsave fill grestore stroke } bind def 23 | /poly2 { closepath gsave fill grestore stroke } bind def 24 | /rect0 { rectstroke } bind def 25 | /rect1 { rectfill } bind def 26 | /rect2 { rectfill } bind def 27 | /linemode0 { 0 setlinecap 0 setlinejoin 0 setlinewidth } bind def 28 | /linemode1 { 1 setlinecap 1 setlinejoin } bind def 29 | /dashedline { [200] 100 setdash } bind def 30 | /solidline { [] 0 setdash } bind def 31 | /phantomshow { moveto 32 | /KicadFont findfont 0.000001 scalefont setfont 33 | show } bind def 34 | /textshow { gsave 35 | findfont exch scalefont setfont concat 1 scale 0 0 moveto show 36 | } bind def 37 | /reencodefont { 38 | findfont dup length dict begin 39 | { 1 index /FID ne 40 | { def } 41 | { pop pop } ifelse 42 | } forall 43 | /Encoding ISOLatin1Encoding def 44 | currentdict 45 | end } bind def 46 | /KicadFont /Helvetica reencodefont definefont pop 47 | /KicadFont-Bold /Helvetica-Bold reencodefont definefont pop 48 | /KicadFont-Oblique /Helvetica-Oblique reencodefont definefont pop 49 | /KicadFont-BoldOblique /Helvetica-BoldOblique reencodefont definefont pop 50 | %%EndProlog 51 | %%Page: 1 1 52 | %%BeginPageSetup 53 | gsave 54 | 0.0072 0.0072 scale 55 | linemode1 56 | 55000 0 translate 90 rotate 57 | 59.0551 setlinewidth 58 | %%EndPageSetup 59 | 0 0 0 setrgbcolor 60 | 0 0 0 setrgbcolor 61 | 80 setlinewidth 62 | (ESP8285 CL) 16425 38425 phantomshow 63 | newpath 64 | 16463.1 39826.9 moveto 65 | 16463.1 39720.2 lineto 66 | stroke 67 | newpath 68 | 16295.5 39674.5 moveto 69 | 16295.5 39826.9 lineto 70 | 16615.5 39826.9 lineto 71 | 16615.5 39674.5 lineto 72 | stroke 73 | newpath 74 | 16310.7 39552.6 moveto 75 | 16295.5 39506.9 lineto 76 | 16295.5 39430.7 lineto 77 | 16310.7 39400.2 lineto 78 | 16326 39385 lineto 79 | 16356.4 39369.8 lineto 80 | 16386.9 39369.8 lineto 81 | 16417.4 39385 lineto 82 | 16432.6 39400.2 lineto 83 | 16447.9 39430.7 lineto 84 | 16463.1 39491.7 lineto 85 | 16478.3 39522.1 lineto 86 | 16493.6 39537.4 lineto 87 | 16524 39552.6 lineto 88 | 16554.5 39552.6 lineto 89 | 16585 39537.4 lineto 90 | 16600.2 39522.1 lineto 91 | 16615.5 39491.7 lineto 92 | 16615.5 39415.5 lineto 93 | 16600.2 39369.8 lineto 94 | stroke 95 | newpath 96 | 16295.5 39232.6 moveto 97 | 16615.5 39232.6 lineto 98 | 16615.5 39110.7 lineto 99 | 16600.2 39080.2 lineto 100 | 16585 39065 lineto 101 | 16554.5 39049.8 lineto 102 | 16508.8 39049.8 lineto 103 | 16478.3 39065 lineto 104 | 16463.1 39080.2 lineto 105 | 16447.9 39110.7 lineto 106 | 16447.9 39232.6 lineto 107 | stroke 108 | newpath 109 | 16478.3 38866.9 moveto 110 | 16493.6 38897.4 lineto 111 | 16508.8 38912.6 lineto 112 | 16539.3 38927.9 lineto 113 | 16554.5 38927.9 lineto 114 | 16585 38912.6 lineto 115 | 16600.2 38897.4 lineto 116 | 16615.5 38866.9 lineto 117 | 16615.5 38806 lineto 118 | 16600.2 38775.5 lineto 119 | 16585 38760.2 lineto 120 | 16554.5 38745 lineto 121 | 16539.3 38745 lineto 122 | 16508.8 38760.2 lineto 123 | 16493.6 38775.5 lineto 124 | 16478.3 38806 lineto 125 | 16478.3 38866.9 lineto 126 | 16463.1 38897.4 lineto 127 | 16447.9 38912.6 lineto 128 | 16417.4 38927.9 lineto 129 | 16356.4 38927.9 lineto 130 | 16326 38912.6 lineto 131 | 16310.7 38897.4 lineto 132 | 16295.5 38866.9 lineto 133 | 16295.5 38806 lineto 134 | 16310.7 38775.5 lineto 135 | 16326 38760.2 lineto 136 | 16356.4 38745 lineto 137 | 16417.4 38745 lineto 138 | 16447.9 38760.2 lineto 139 | 16463.1 38775.5 lineto 140 | 16478.3 38806 lineto 141 | stroke 142 | newpath 143 | 16585 38623.1 moveto 144 | 16600.2 38607.9 lineto 145 | 16615.5 38577.4 lineto 146 | 16615.5 38501.2 lineto 147 | 16600.2 38470.7 lineto 148 | 16585 38455.5 lineto 149 | 16554.5 38440.2 lineto 150 | 16524 38440.2 lineto 151 | 16478.3 38455.5 lineto 152 | 16295.5 38638.3 lineto 153 | 16295.5 38440.2 lineto 154 | stroke 155 | newpath 156 | 16478.3 38257.4 moveto 157 | 16493.6 38287.9 lineto 158 | 16508.8 38303.1 lineto 159 | 16539.3 38318.3 lineto 160 | 16554.5 38318.3 lineto 161 | 16585 38303.1 lineto 162 | 16600.2 38287.9 lineto 163 | 16615.5 38257.4 lineto 164 | 16615.5 38196.4 lineto 165 | 16600.2 38166 lineto 166 | 16585 38150.7 lineto 167 | 16554.5 38135.5 lineto 168 | 16539.3 38135.5 lineto 169 | 16508.8 38150.7 lineto 170 | 16493.6 38166 lineto 171 | 16478.3 38196.4 lineto 172 | 16478.3 38257.4 lineto 173 | 16463.1 38287.9 lineto 174 | 16447.9 38303.1 lineto 175 | 16417.4 38318.3 lineto 176 | 16356.4 38318.3 lineto 177 | 16326 38303.1 lineto 178 | 16310.7 38287.9 lineto 179 | 16295.5 38257.4 lineto 180 | 16295.5 38196.4 lineto 181 | 16310.7 38166 lineto 182 | 16326 38150.7 lineto 183 | 16356.4 38135.5 lineto 184 | 16417.4 38135.5 lineto 185 | 16447.9 38150.7 lineto 186 | 16463.1 38166 lineto 187 | 16478.3 38196.4 lineto 188 | stroke 189 | newpath 190 | 16615.5 37846 moveto 191 | 16615.5 37998.3 lineto 192 | 16463.1 38013.6 lineto 193 | 16478.3 37998.3 lineto 194 | 16493.6 37967.9 lineto 195 | 16493.6 37891.7 lineto 196 | 16478.3 37861.2 lineto 197 | 16463.1 37846 lineto 198 | 16432.6 37830.7 lineto 199 | 16356.4 37830.7 lineto 200 | 16326 37846 lineto 201 | 16310.7 37861.2 lineto 202 | 16295.5 37891.7 lineto 203 | 16295.5 37967.9 lineto 204 | 16310.7 37998.3 lineto 205 | 16326 38013.6 lineto 206 | stroke 207 | newpath 208 | 16326 37266.9 moveto 209 | 16310.7 37282.1 lineto 210 | 16295.5 37327.9 lineto 211 | 16295.5 37358.3 lineto 212 | 16310.7 37404 lineto 213 | 16341.2 37434.5 lineto 214 | 16371.7 37449.8 lineto 215 | 16432.6 37465 lineto 216 | 16478.3 37465 lineto 217 | 16539.3 37449.8 lineto 218 | 16569.8 37434.5 lineto 219 | 16600.2 37404 lineto 220 | 16615.5 37358.3 lineto 221 | 16615.5 37327.9 lineto 222 | 16600.2 37282.1 lineto 223 | 16585 37266.9 lineto 224 | stroke 225 | newpath 226 | 16295.5 36977.4 moveto 227 | 16295.5 37129.8 lineto 228 | 16615.5 37129.8 lineto 229 | stroke 230 | 0 0 0 setrgbcolor 231 | 118.11 setlinewidth 232 | (*) 17568 40543 phantomshow 233 | newpath 234 | 17568 40894.5 moveto 235 | 17568 40753.9 lineto 236 | stroke 237 | newpath 238 | 17427.4 40810.2 moveto 239 | 17568 40753.9 lineto 240 | 17708.6 40810.2 lineto 241 | stroke 242 | newpath 243 | 17483.6 40641.4 moveto 244 | 17568 40753.9 lineto 245 | 17652.4 40641.4 lineto 246 | stroke 247 | 0 0 0 setrgbcolor 248 | 59.0551 setlinewidth 249 | newpath 250 | 18108.5 37045.5 moveto 251 | 18108.5 37286.5 lineto 252 | 18249.5 37286.5 lineto 253 | 18249.5 37045.5 lineto 254 | 18108.5 37045.5 lineto 255 | poly1 256 | 0 0 0 setrgbcolor 257 | newpath 258 | 18858.5 37045.5 moveto 259 | 18858.5 37286.5 lineto 260 | 18999.5 37286.5 lineto 261 | 18999.5 37045.5 lineto 262 | 18858.5 37045.5 lineto 263 | poly1 264 | 0 0 0 setrgbcolor 265 | newpath 266 | 18108.5 38045.5 moveto 267 | 18108.5 38286.5 lineto 268 | 18249.5 38286.5 lineto 269 | 18249.5 38045.5 lineto 270 | 18108.5 38045.5 lineto 271 | poly1 272 | 0 0 0 setrgbcolor 273 | newpath 274 | 18483.5 37045.5 moveto 275 | 18483.5 37286.5 lineto 276 | 18624.5 37286.5 lineto 277 | 18624.5 37045.5 lineto 278 | 18483.5 37045.5 lineto 279 | poly1 280 | 0 0 0 setrgbcolor 281 | newpath 282 | 18858.5 38045.5 moveto 283 | 18858.5 38286.5 lineto 284 | 18999.5 38286.5 lineto 285 | 18999.5 38045.5 lineto 286 | 18858.5 38045.5 lineto 287 | poly1 288 | 0 0 0 setrgbcolor 289 | newpath 290 | 16565.1 40621.4 moveto 291 | 16841.6 40897.9 lineto 292 | 16976.6 40762.8 lineto 293 | 16700.2 40486.4 lineto 294 | 16565.1 40621.4 lineto 295 | poly1 296 | 0 0 0 setrgbcolor 297 | newpath 298 | 16989.4 40197.2 moveto 299 | 17265.8 40473.6 lineto 300 | 17400.9 40338.6 lineto 301 | 17124.4 40062.1 lineto 302 | 16989.4 40197.2 lineto 303 | poly1 304 | 0 0 0 setrgbcolor 305 | newpath 306 | 20059.5 39046.5 moveto 307 | 20450.5 39046.5 lineto 308 | 20450.5 38855.5 lineto 309 | 20059.5 38855.5 lineto 310 | 20059.5 39046.5 lineto 311 | poly1 312 | 0 0 0 setrgbcolor 313 | newpath 314 | 20059.5 38446.5 moveto 315 | 20450.5 38446.5 lineto 316 | 20450.5 38255.5 lineto 317 | 20059.5 38255.5 lineto 318 | 20059.5 38446.5 lineto 319 | poly1 320 | 0 0 0 setrgbcolor 321 | newpath 322 | 18187.5 40513.5 moveto 323 | 18187.5 40754.5 lineto 324 | 18228.5 40754.5 lineto 325 | 18228.5 40513.5 lineto 326 | 18187.5 40513.5 lineto 327 | poly1 328 | 0 0 0 setrgbcolor 329 | newpath 330 | 18384.5 40513.5 moveto 331 | 18384.5 40754.5 lineto 332 | 18425.5 40754.5 lineto 333 | 18425.5 40513.5 lineto 334 | 18384.5 40513.5 lineto 335 | poly1 336 | 0 0 0 setrgbcolor 337 | newpath 338 | 18581.5 40513.5 moveto 339 | 18581.5 40754.5 lineto 340 | 18622.5 40754.5 lineto 341 | 18622.5 40513.5 lineto 342 | 18581.5 40513.5 lineto 343 | poly1 344 | 0 0 0 setrgbcolor 345 | newpath 346 | 17990.5 40513.5 moveto 347 | 17990.5 40754.5 lineto 348 | 18031.5 40754.5 lineto 349 | 18031.5 40513.5 lineto 350 | 17990.5 40513.5 lineto 351 | poly1 352 | 0 0 0 setrgbcolor 353 | newpath 354 | 17836.5 40318.5 moveto 355 | 17595.5 40318.5 lineto 356 | 17595.5 40359.5 lineto 357 | 17836.5 40359.5 lineto 358 | 17836.5 40318.5 lineto 359 | poly1 360 | 0 0 0 setrgbcolor 361 | newpath 362 | 17836.5 40121.5 moveto 363 | 17595.5 40121.5 lineto 364 | 17595.5 40162.5 lineto 365 | 17836.5 40162.5 lineto 366 | 17836.5 40121.5 lineto 367 | poly1 368 | 0 0 0 setrgbcolor 369 | newpath 370 | 17836.5 39924.5 moveto 371 | 17595.5 39924.5 lineto 372 | 17595.5 39965.5 lineto 373 | 17836.5 39965.5 lineto 374 | 17836.5 39924.5 lineto 375 | poly1 376 | 0 0 0 setrgbcolor 377 | newpath 378 | 17836.5 39727.5 moveto 379 | 17595.5 39727.5 lineto 380 | 17595.5 39768.5 lineto 381 | 17836.5 39768.5 lineto 382 | 17836.5 39727.5 lineto 383 | poly1 384 | 0 0 0 setrgbcolor 385 | newpath 386 | 17836.5 39531.5 moveto 387 | 17595.5 39531.5 lineto 388 | 17595.5 39572.5 lineto 389 | 17836.5 39572.5 lineto 390 | 17836.5 39531.5 lineto 391 | poly1 392 | 0 0 0 setrgbcolor 393 | newpath 394 | 17836.5 39334.5 moveto 395 | 17595.5 39334.5 lineto 396 | 17595.5 39375.5 lineto 397 | 17836.5 39375.5 lineto 398 | 17836.5 39334.5 lineto 399 | poly1 400 | 0 0 0 setrgbcolor 401 | newpath 402 | 17836.5 39137.5 moveto 403 | 17595.5 39137.5 lineto 404 | 17595.5 39178.5 lineto 405 | 17836.5 39178.5 lineto 406 | 17836.5 39137.5 lineto 407 | poly1 408 | 0 0 0 setrgbcolor 409 | newpath 410 | 17836.5 38940.5 moveto 411 | 17595.5 38940.5 lineto 412 | 17595.5 38981.5 lineto 413 | 17836.5 38981.5 lineto 414 | 17836.5 38940.5 lineto 415 | poly1 416 | 0 0 0 setrgbcolor 417 | newpath 418 | 19368.5 38545.5 moveto 419 | 19368.5 38786.5 lineto 420 | 19409.5 38786.5 lineto 421 | 19409.5 38545.5 lineto 422 | 19368.5 38545.5 lineto 423 | poly1 424 | 0 0 0 setrgbcolor 425 | newpath 426 | 17990.5 38545.5 moveto 427 | 17990.5 38786.5 lineto 428 | 18031.5 38786.5 lineto 429 | 18031.5 38545.5 lineto 430 | 17990.5 38545.5 lineto 431 | poly1 432 | 0 0 0 setrgbcolor 433 | newpath 434 | 18187.5 38545.5 moveto 435 | 18187.5 38786.5 lineto 436 | 18228.5 38786.5 lineto 437 | 18228.5 38545.5 lineto 438 | 18187.5 38545.5 lineto 439 | poly1 440 | 0 0 0 setrgbcolor 441 | newpath 442 | 18384.5 38545.5 moveto 443 | 18384.5 38786.5 lineto 444 | 18425.5 38786.5 lineto 445 | 18425.5 38545.5 lineto 446 | 18384.5 38545.5 lineto 447 | poly1 448 | 0 0 0 setrgbcolor 449 | newpath 450 | 18581.5 38545.5 moveto 451 | 18581.5 38786.5 lineto 452 | 18622.5 38786.5 lineto 453 | 18622.5 38545.5 lineto 454 | 18581.5 38545.5 lineto 455 | poly1 456 | 0 0 0 setrgbcolor 457 | newpath 458 | 18777.5 38545.5 moveto 459 | 18777.5 38786.5 lineto 460 | 18818.5 38786.5 lineto 461 | 18818.5 38545.5 lineto 462 | 18777.5 38545.5 lineto 463 | poly1 464 | 0 0 0 setrgbcolor 465 | newpath 466 | 18974.5 38545.5 moveto 467 | 18974.5 38786.5 lineto 468 | 19015.5 38786.5 lineto 469 | 19015.5 38545.5 lineto 470 | 18974.5 38545.5 lineto 471 | poly1 472 | 0 0 0 setrgbcolor 473 | newpath 474 | 19171.5 38545.5 moveto 475 | 19171.5 38786.5 lineto 476 | 19212.5 38786.5 lineto 477 | 19212.5 38545.5 lineto 478 | 19171.5 38545.5 lineto 479 | poly1 480 | 0 0 0 setrgbcolor 481 | newpath 482 | 19804.5 38940.5 moveto 483 | 19563.5 38940.5 lineto 484 | 19563.5 38981.5 lineto 485 | 19804.5 38981.5 lineto 486 | 19804.5 38940.5 lineto 487 | poly1 488 | 0 0 0 setrgbcolor 489 | newpath 490 | 19804.5 39137.5 moveto 491 | 19563.5 39137.5 lineto 492 | 19563.5 39178.5 lineto 493 | 19804.5 39178.5 lineto 494 | 19804.5 39137.5 lineto 495 | poly1 496 | 0 0 0 setrgbcolor 497 | newpath 498 | 19804.5 39334.5 moveto 499 | 19563.5 39334.5 lineto 500 | 19563.5 39375.5 lineto 501 | 19804.5 39375.5 lineto 502 | 19804.5 39334.5 lineto 503 | poly1 504 | 0 0 0 setrgbcolor 505 | newpath 506 | 19804.5 39531.5 moveto 507 | 19563.5 39531.5 lineto 508 | 19563.5 39572.5 lineto 509 | 19804.5 39572.5 lineto 510 | 19804.5 39531.5 lineto 511 | poly1 512 | 0 0 0 setrgbcolor 513 | newpath 514 | 19804.5 39727.5 moveto 515 | 19563.5 39727.5 lineto 516 | 19563.5 39768.5 lineto 517 | 19804.5 39768.5 lineto 518 | 19804.5 39727.5 lineto 519 | poly1 520 | 0 0 0 setrgbcolor 521 | newpath 522 | 19804.5 39924.5 moveto 523 | 19563.5 39924.5 lineto 524 | 19563.5 39965.5 lineto 525 | 19804.5 39965.5 lineto 526 | 19804.5 39924.5 lineto 527 | poly1 528 | 0 0 0 setrgbcolor 529 | newpath 530 | 19804.5 40121.5 moveto 531 | 19563.5 40121.5 lineto 532 | 19563.5 40162.5 lineto 533 | 19804.5 40162.5 lineto 534 | 19804.5 40121.5 lineto 535 | poly1 536 | 0 0 0 setrgbcolor 537 | newpath 538 | 19804.5 40318.5 moveto 539 | 19563.5 40318.5 lineto 540 | 19563.5 40359.5 lineto 541 | 19804.5 40359.5 lineto 542 | 19804.5 40318.5 lineto 543 | poly1 544 | 0 0 0 setrgbcolor 545 | newpath 546 | 19368.5 40513.5 moveto 547 | 19368.5 40754.5 lineto 548 | 19409.5 40754.5 lineto 549 | 19409.5 40513.5 lineto 550 | 19368.5 40513.5 lineto 551 | poly1 552 | 0 0 0 setrgbcolor 553 | newpath 554 | 19171.5 40513.5 moveto 555 | 19171.5 40754.5 lineto 556 | 19212.5 40754.5 lineto 557 | 19212.5 40513.5 lineto 558 | 19171.5 40513.5 lineto 559 | poly1 560 | 0 0 0 setrgbcolor 561 | newpath 562 | 18974.5 40513.5 moveto 563 | 18974.5 40754.5 lineto 564 | 19015.5 40754.5 lineto 565 | 19015.5 40513.5 lineto 566 | 18974.5 40513.5 lineto 567 | poly1 568 | 0 0 0 setrgbcolor 569 | newpath 570 | 18777.5 40513.5 moveto 571 | 18777.5 40754.5 lineto 572 | 18818.5 40754.5 lineto 573 | 18818.5 40513.5 lineto 574 | 18777.5 40513.5 lineto 575 | poly1 576 | 0 0 0 setrgbcolor 577 | newpath 578 | 18139 39089 moveto 579 | 18139 40211 lineto 580 | 19261 40211 lineto 581 | 19261 39089 lineto 582 | 18139 39089 lineto 583 | poly1 584 | 0 0 0 setrgbcolor 585 | 16650 40950 220.472 cir1 586 | 0 0 0 setrgbcolor 587 | 20400 41800 320.472 cir1 588 | 0 0 0 setrgbcolor 589 | 20400 41000 320.472 cir1 590 | 0 0 0 setrgbcolor 591 | 20457 40199 320.472 cir1 592 | 0 0 0 setrgbcolor 593 | newpath 594 | 18744.5 42067.2 moveto 595 | 18961 42067.2 lineto 596 | 18961 41850.7 lineto 597 | 18744.5 41850.7 lineto 598 | 18744.5 42067.2 lineto 599 | poly1 600 | 0 0 0 setrgbcolor 601 | newpath 602 | 19217 41437.3 moveto 603 | 19433.5 41437.3 lineto 604 | 19433.5 41220.8 lineto 605 | 19217 41220.8 lineto 606 | 19217 41437.3 lineto 607 | poly1 608 | 0 0 0 setrgbcolor 609 | newpath 610 | 19217 42067.2 moveto 611 | 19433.5 42067.2 lineto 612 | 19433.5 41850.7 lineto 613 | 19217 41850.7 lineto 614 | 19217 42067.2 lineto 615 | poly1 616 | 0 0 0 setrgbcolor 617 | newpath 618 | 18744.5 41437.3 moveto 619 | 18961 41437.3 lineto 620 | 18961 41220.8 lineto 621 | 18744.5 41220.8 lineto 622 | 18744.5 41437.3 lineto 623 | poly1 624 | 0 0 0 setrgbcolor 625 | newpath 626 | 18554.5 41772 moveto 627 | 18377.5 41772 lineto 628 | 18377.5 41870 lineto 629 | 18554.5 41870 lineto 630 | 18554.5 41772 lineto 631 | poly1 632 | 0 0 0 setrgbcolor 633 | newpath 634 | 18554.5 42126 moveto 635 | 18377.5 42126 lineto 636 | 18377.5 42224 lineto 637 | 18554.5 42224 lineto 638 | 18554.5 42126 lineto 639 | poly1 640 | 0 0 0 setrgbcolor 641 | newpath 642 | 19788.5 41424 moveto 643 | 19611.5 41424 lineto 644 | 19611.5 41522 lineto 645 | 19788.5 41522 lineto 646 | 19788.5 41424 lineto 647 | poly1 648 | 0 0 0 setrgbcolor 649 | newpath 650 | 19788.5 41778 moveto 651 | 19611.5 41778 lineto 652 | 19611.5 41876 lineto 653 | 19788.5 41876 lineto 654 | 19788.5 41778 lineto 655 | poly1 656 | 0 0 0 setrgbcolor 657 | newpath 658 | 17762.5 41859.5 moveto 659 | 18153.5 41859.5 lineto 660 | 18153.5 41668.5 lineto 661 | 17762.5 41668.5 lineto 662 | 17762.5 41859.5 lineto 663 | poly1 664 | 0 0 0 setrgbcolor 665 | newpath 666 | 17762.5 41259.5 moveto 667 | 18153.5 41259.5 lineto 668 | 18153.5 41068.5 lineto 669 | 17762.5 41068.5 lineto 670 | 17762.5 41259.5 lineto 671 | poly1 672 | 0 0 0 setrgbcolor 673 | 17207 39448 220.472 cir1 674 | 0 0 0 setrgbcolor 675 | newpath 676 | 17395.5 37354.5 moveto 677 | 17004.5 37354.5 lineto 678 | 17004.5 37545.5 lineto 679 | 17395.5 37545.5 lineto 680 | 17395.5 37354.5 lineto 681 | poly1 682 | 0 0 0 setrgbcolor 683 | newpath 684 | 17395.5 37954.5 moveto 685 | 17004.5 37954.5 lineto 686 | 17004.5 38145.5 lineto 687 | 17395.5 38145.5 lineto 688 | 17395.5 37954.5 lineto 689 | poly1 690 | 0 0 0 setrgbcolor 691 | newpath 692 | 19306.5 37951.5 moveto 693 | 19697.5 37951.5 lineto 694 | 19697.5 37760.5 lineto 695 | 19306.5 37760.5 lineto 696 | 19306.5 37951.5 lineto 697 | poly1 698 | 0 0 0 setrgbcolor 699 | newpath 700 | 19306.5 37351.5 moveto 701 | 19697.5 37351.5 lineto 702 | 19697.5 37160.5 lineto 703 | 19306.5 37160.5 lineto 704 | 19306.5 37351.5 lineto 705 | poly1 706 | 0 0 0 setrgbcolor 707 | newpath 708 | 17832.5 37845 moveto 709 | 17655.5 37845 lineto 710 | 17655.5 37943 lineto 711 | 17832.5 37943 lineto 712 | 17832.5 37845 lineto 713 | poly1 714 | 0 0 0 setrgbcolor 715 | newpath 716 | 17832.5 38199 moveto 717 | 17655.5 38199 lineto 718 | 17655.5 38297 lineto 719 | 17832.5 38297 lineto 720 | 17832.5 38199 lineto 721 | poly1 722 | 0 0 0 setrgbcolor 723 | 20100 37200 370.472 cir1 724 | 0 0 0 setrgbcolor 725 | 17450 37200 370.472 cir1 726 | 0 0 0 setrgbcolor 727 | 20400 38050 320.472 cir1 728 | 0 0 0 setrgbcolor 729 | 17210 38600 220.472 cir1 730 | 0 0 0 setrgbcolor 731 | 100 setlinewidth 732 | newpath 733 | 16700 42350 moveto 734 | 16700 42250 lineto 735 | stroke 736 | 0 0 0 setrgbcolor 737 | newpath 738 | 16300 42350 moveto 739 | 16700 42350 lineto 740 | stroke 741 | 0 0 0 setrgbcolor 742 | newpath 743 | 16300 42250 moveto 744 | 16300 42350 lineto 745 | stroke 746 | 0 0 0 setrgbcolor 747 | newpath 748 | 16700 42250 moveto 749 | 16300 42250 lineto 750 | stroke 751 | 0 0 0 setrgbcolor 752 | newpath 753 | 20350 39550 moveto 754 | 20350 39700 lineto 755 | stroke 756 | 0 0 0 setrgbcolor 757 | newpath 758 | 20500 39550 moveto 759 | 20350 39550 lineto 760 | stroke 761 | 0 0 0 setrgbcolor 762 | newpath 763 | 20350 39700 moveto 764 | 20500 39550 lineto 765 | stroke 766 | 0 0 0 setrgbcolor 767 | newpath 768 | 20050 39250 moveto 769 | 20050 39400 lineto 770 | stroke 771 | 0 0 0 setrgbcolor 772 | newpath 773 | 20200 39250 moveto 774 | 20050 39250 lineto 775 | stroke 776 | 0 0 0 setrgbcolor 777 | newpath 778 | 20350 39400 moveto 779 | 20200 39250 lineto 780 | stroke 781 | 0 0 0 setrgbcolor 782 | newpath 783 | 20350 39550 moveto 784 | 20350 39400 lineto 785 | stroke 786 | 0 0 0 setrgbcolor 787 | newpath 788 | 20200 39550 moveto 789 | 20350 39550 lineto 790 | stroke 791 | 0 0 0 setrgbcolor 792 | newpath 793 | 20050 39400 moveto 794 | 20200 39550 lineto 795 | stroke 796 | 0 0 0 setrgbcolor 797 | newpath 798 | 17200 38050 moveto 799 | 16950 38050 lineto 800 | stroke 801 | 0 0 0 setrgbcolor 802 | newpath 803 | 16950 38050 moveto 804 | 16808 38192 lineto 805 | stroke 806 | 0 0 0 setrgbcolor 807 | newpath 808 | 17200 38050 moveto 809 | 17350 38050 lineto 810 | stroke 811 | 0 0 0 setrgbcolor 812 | newpath 813 | 17548 38248 moveto 814 | 17744 38248 lineto 815 | stroke 816 | 0 0 0 setrgbcolor 817 | newpath 818 | 17350 38050 moveto 819 | 17548 38248 lineto 820 | stroke 821 | 0 0 0 setrgbcolor 822 | newpath 823 | 20909 37639 moveto 824 | 20909 37584 lineto 825 | stroke 826 | 0 0 0 setrgbcolor 827 | newpath 828 | 20461 36653 moveto 829 | 20909 37101 lineto 830 | stroke 831 | 0 0 0 setrgbcolor 832 | newpath 833 | 20909 37101 moveto 834 | 20909 37584 lineto 835 | stroke 836 | 0 0 0 setrgbcolor 837 | newpath 838 | 20461 36653 moveto 839 | 19929 36653 lineto 840 | stroke 841 | 0 0 0 setrgbcolor 842 | newpath 843 | 18179 38166 moveto 844 | 18228 38215 lineto 845 | stroke 846 | 0 0 0 setrgbcolor 847 | newpath 848 | 18405 38432 moveto 849 | 18405 38666 lineto 850 | stroke 851 | 0 0 0 setrgbcolor 852 | newpath 853 | 18228 38255 moveto 854 | 18405 38432 lineto 855 | stroke 856 | 0 0 0 setrgbcolor 857 | newpath 858 | 18228 38215 moveto 859 | 18228 38255 lineto 860 | stroke 861 | 0 0 0 setrgbcolor 862 | newpath 863 | 18179 38166 moveto 864 | 18097 38248 lineto 865 | stroke 866 | 0 0 0 setrgbcolor 867 | newpath 868 | 18097 38248 moveto 869 | 17744 38248 lineto 870 | stroke 871 | 0 0 0 setrgbcolor 872 | newpath 873 | 20255 38951 moveto 874 | 20480 38951 lineto 875 | stroke 876 | 0 0 0 setrgbcolor 877 | newpath 878 | 20480 38951 moveto 879 | 20909 38522 lineto 880 | stroke 881 | 0 0 0 setrgbcolor 882 | newpath 883 | 20909 38522 moveto 884 | 20909 37639 lineto 885 | stroke 886 | 0 0 0 setrgbcolor 887 | newpath 888 | 20909 37639 moveto 889 | 20909 37640 lineto 890 | stroke 891 | 0 0 0 setrgbcolor 892 | newpath 893 | 19922 36653 moveto 894 | 19929 36653 lineto 895 | stroke 896 | 0 0 0 setrgbcolor 897 | newpath 898 | 19929 36653 moveto 899 | 16947 36653 lineto 900 | stroke 901 | 0 0 0 setrgbcolor 902 | newpath 903 | 16947 36653 moveto 904 | 16808 36792 lineto 905 | stroke 906 | 0 0 0 setrgbcolor 907 | newpath 908 | 16808 36792 moveto 909 | 16808 38192 lineto 910 | stroke 911 | 0 0 0 setrgbcolor 912 | newpath 913 | 16808 38192 moveto 914 | 16808 38542 lineto 915 | stroke 916 | 0 0 0 setrgbcolor 917 | newpath 918 | 16808 39100 moveto 919 | 16808 38905 lineto 920 | stroke 921 | 0 0 0 setrgbcolor 922 | newpath 923 | 16808 38542 moveto 924 | 16808 38905 lineto 925 | stroke 926 | 0 0 0 setrgbcolor 927 | newpath 928 | 20255 38951 moveto 929 | 20245 38961 lineto 930 | stroke 931 | 0 0 0 setrgbcolor 932 | newpath 933 | 20245 38961 moveto 934 | 19684 38961 lineto 935 | stroke 936 | 0 0 0 setrgbcolor 937 | newpath 938 | 18405 40634 moveto 939 | 18405 41011 lineto 940 | stroke 941 | 0 0 0 setrgbcolor 942 | newpath 943 | 17511 41308 moveto 944 | 17649 41446 lineto 945 | stroke 946 | 0 0 0 setrgbcolor 947 | newpath 948 | 17649 41446 moveto 949 | 18291 41446 lineto 950 | stroke 951 | 0 0 0 setrgbcolor 952 | newpath 953 | 18291 41446 moveto 954 | 18339 41398 lineto 955 | stroke 956 | 0 0 0 setrgbcolor 957 | newpath 958 | 18339 41398 moveto 959 | 18339 41179 lineto 960 | stroke 961 | 0 0 0 setrgbcolor 962 | newpath 963 | 17511 41308 moveto 964 | 17511 40738 lineto 965 | stroke 966 | 0 0 0 setrgbcolor 967 | newpath 968 | 18339 41077 moveto 969 | 18339 41179 lineto 970 | stroke 971 | 0 0 0 setrgbcolor 972 | newpath 973 | 18405 41011 moveto 974 | 18339 41077 lineto 975 | stroke 976 | 0 0 0 setrgbcolor 977 | newpath 978 | 17511 40738 moveto 979 | 17247 40738 lineto 980 | stroke 981 | 0 0 0 setrgbcolor 982 | newpath 983 | 17247 40738 moveto 984 | 16788 40279 lineto 985 | stroke 986 | 0 0 0 setrgbcolor 987 | newpath 988 | 16788 40279 moveto 989 | 16788 39711 lineto 990 | stroke 991 | 0 0 0 setrgbcolor 992 | newpath 993 | 16788 39711 moveto 994 | 16808 39691 lineto 995 | stroke 996 | 0 0 0 setrgbcolor 997 | newpath 998 | 17511 40734 moveto 999 | 17511 40738 lineto 1000 | stroke 1001 | 0 0 0 setrgbcolor 1002 | newpath 1003 | 17590 40734 moveto 1004 | 17511 40734 lineto 1005 | stroke 1006 | 0 0 0 setrgbcolor 1007 | newpath 1008 | 17716 40608 moveto 1009 | 17590 40734 lineto 1010 | stroke 1011 | 0 0 0 setrgbcolor 1012 | newpath 1013 | 18405 40634 moveto 1014 | 18504 40634 lineto 1015 | stroke 1016 | 0 0 0 setrgbcolor 1017 | newpath 1018 | 18504 40634 moveto 1019 | 18602 40634 lineto 1020 | stroke 1021 | 0 0 0 setrgbcolor 1022 | newpath 1023 | 17716 40339 moveto 1024 | 17716 40608 lineto 1025 | stroke 1026 | 0 0 0 setrgbcolor 1027 | newpath 1028 | 17742 40634 moveto 1029 | 18011 40634 lineto 1030 | stroke 1031 | 0 0 0 setrgbcolor 1032 | newpath 1033 | 17716 40608 moveto 1034 | 17742 40634 lineto 1035 | stroke 1036 | 0 0 0 setrgbcolor 1037 | newpath 1038 | 17051 39846 moveto 1039 | 16963 39846 lineto 1040 | stroke 1041 | 0 0 0 setrgbcolor 1042 | newpath 1043 | 16963 39846 moveto 1044 | 16808 39691 lineto 1045 | stroke 1046 | 0 0 0 setrgbcolor 1047 | newpath 1048 | 16808 39584 moveto 1049 | 16808 39308 lineto 1050 | stroke 1051 | 0 0 0 setrgbcolor 1052 | newpath 1053 | 16808 39308 moveto 1054 | 16808 39100 lineto 1055 | stroke 1056 | 0 0 0 setrgbcolor 1057 | newpath 1058 | 16808 39691 moveto 1059 | 16808 39584 lineto 1060 | stroke 1061 | 0 0 0 setrgbcolor 1062 | newpath 1063 | 17716 39158 moveto 1064 | 17492 39158 lineto 1065 | stroke 1066 | 0 0 0 setrgbcolor 1067 | newpath 1068 | 17492 39158 moveto 1069 | 17362 39028 lineto 1070 | stroke 1071 | 0 0 0 setrgbcolor 1072 | newpath 1073 | 17362 39028 moveto 1074 | 16880 39028 lineto 1075 | stroke 1076 | 0 0 0 setrgbcolor 1077 | newpath 1078 | 16880 39028 moveto 1079 | 16808 39100 lineto 1080 | stroke 1081 | 0 0 0 setrgbcolor 1082 | newpath 1083 | 17716 39846 moveto 1084 | 17051 39846 lineto 1085 | stroke 1086 | 0 0 0 setrgbcolor 1087 | newpath 1088 | 17051 39846 moveto 1089 | 17070 39846 lineto 1090 | stroke 1091 | 0 0 0 setrgbcolor 1092 | newpath 1093 | 17716 39748 moveto 1094 | 17716 39846 lineto 1095 | stroke 1096 | 0 0 0 setrgbcolor 1097 | newpath 1098 | 17716 39846 moveto 1099 | 17716 39945 lineto 1100 | stroke 1101 | 0 0 0 setrgbcolor 1102 | newpath 1103 | 19341 37180 moveto 1104 | 19341 37221 lineto 1105 | stroke 1106 | 0 0 0 setrgbcolor 1107 | newpath 1108 | 19299 37180 moveto 1109 | 19341 37180 lineto 1110 | stroke 1111 | 0 0 0 setrgbcolor 1112 | newpath 1113 | 19341 37180 moveto 1114 | 20162 37180 lineto 1115 | stroke 1116 | 0 0 0 setrgbcolor 1117 | newpath 1118 | 20162 37180 moveto 1119 | 20202 37220 lineto 1120 | stroke 1121 | 0 0 0 setrgbcolor 1122 | newpath 1123 | 18929 37166 moveto 1124 | 18929 36976 lineto 1125 | stroke 1126 | 0 0 0 setrgbcolor 1127 | newpath 1128 | 18179 36947 moveto 1129 | 18179 37166 lineto 1130 | stroke 1131 | 0 0 0 setrgbcolor 1132 | newpath 1133 | 18270 36856 moveto 1134 | 18179 36947 lineto 1135 | stroke 1136 | 0 0 0 setrgbcolor 1137 | newpath 1138 | 18809 36856 moveto 1139 | 18270 36856 lineto 1140 | stroke 1141 | 0 0 0 setrgbcolor 1142 | newpath 1143 | 18929 36976 moveto 1144 | 18809 36856 lineto 1145 | stroke 1146 | 0 0 0 setrgbcolor 1147 | newpath 1148 | 19325 37206 moveto 1149 | 19299 37180 lineto 1150 | stroke 1151 | 0 0 0 setrgbcolor 1152 | newpath 1153 | 19299 37180 moveto 1154 | 19285 37166 lineto 1155 | stroke 1156 | 0 0 0 setrgbcolor 1157 | newpath 1158 | 19285 37166 moveto 1159 | 19173 37166 lineto 1160 | stroke 1161 | 0 0 0 setrgbcolor 1162 | newpath 1163 | 19173 37166 moveto 1164 | 18929 37166 lineto 1165 | stroke 1166 | 0 0 0 setrgbcolor 1167 | newpath 1168 | 19700 41827 moveto 1169 | 19568 41959 lineto 1170 | stroke 1171 | 0 0 0 setrgbcolor 1172 | newpath 1173 | 19568 41959 moveto 1174 | 19325.2 41959 lineto 1175 | stroke 1176 | 0 0 0 setrgbcolor 1177 | newpath 1178 | 20909 42000 moveto 1179 | 20909 42091 lineto 1180 | stroke 1181 | 0 0 0 setrgbcolor 1182 | newpath 1183 | 20593 42303 moveto 1184 | 20466 42303 lineto 1185 | stroke 1186 | 0 0 0 setrgbcolor 1187 | newpath 1188 | 20697 42303 moveto 1189 | 20593 42303 lineto 1190 | stroke 1191 | 0 0 0 setrgbcolor 1192 | newpath 1193 | 20909 42091 moveto 1194 | 20697 42303 lineto 1195 | stroke 1196 | 0 0 0 setrgbcolor 1197 | newpath 1198 | 17450 37200 moveto 1199 | 17600 37200 lineto 1200 | stroke 1201 | 0 0 0 setrgbcolor 1202 | newpath 1203 | 17600 37200 moveto 1204 | 18257 37857 lineto 1205 | stroke 1206 | 0 0 0 setrgbcolor 1207 | newpath 1208 | 17200 37450 moveto 1209 | 17450 37200 lineto 1210 | stroke 1211 | 0 0 0 setrgbcolor 1212 | newpath 1213 | 19502 37856 moveto 1214 | 18606 37856 lineto 1215 | stroke 1216 | 0 0 0 setrgbcolor 1217 | newpath 1218 | 18606 37856 moveto 1219 | 18554 37804 lineto 1220 | stroke 1221 | 0 0 0 setrgbcolor 1222 | newpath 1223 | 18413.5 37944.5 moveto 1224 | 18554 37804 lineto 1225 | stroke 1226 | 0 0 0 setrgbcolor 1227 | newpath 1228 | 18554 37804 moveto 1229 | 18554 37166 lineto 1230 | stroke 1231 | 0 0 0 setrgbcolor 1232 | newpath 1233 | 17744 37894 moveto 1234 | 17820 37894 lineto 1235 | stroke 1236 | 0 0 0 setrgbcolor 1237 | newpath 1238 | 17820 37894 moveto 1239 | 17857 37857 lineto 1240 | stroke 1241 | 0 0 0 setrgbcolor 1242 | newpath 1243 | 17857 37857 moveto 1244 | 18257 37857 lineto 1245 | stroke 1246 | 0 0 0 setrgbcolor 1247 | newpath 1248 | 18456 38177 moveto 1249 | 18602 38323 lineto 1250 | stroke 1251 | 0 0 0 setrgbcolor 1252 | newpath 1253 | 18456 37987 moveto 1254 | 18456 38177 lineto 1255 | stroke 1256 | 0 0 0 setrgbcolor 1257 | newpath 1258 | 18326 37857 moveto 1259 | 18413.5 37944.5 lineto 1260 | stroke 1261 | 0 0 0 setrgbcolor 1262 | newpath 1263 | 18257 37857 moveto 1264 | 18326 37857 lineto 1265 | stroke 1266 | 0 0 0 setrgbcolor 1267 | newpath 1268 | 18413.5 37944.5 moveto 1269 | 18456 37987 lineto 1270 | stroke 1271 | 0 0 0 setrgbcolor 1272 | newpath 1273 | 18698 38725 moveto 1274 | 18698 38480 lineto 1275 | stroke 1276 | 0 0 0 setrgbcolor 1277 | newpath 1278 | 18698 38480 moveto 1279 | 18602 38384 lineto 1280 | stroke 1281 | 0 0 0 setrgbcolor 1282 | newpath 1283 | 18602 38384 moveto 1284 | 18602 38323 lineto 1285 | stroke 1286 | 0 0 0 setrgbcolor 1287 | newpath 1288 | 18798 38666 moveto 1289 | 18798 38519 lineto 1290 | stroke 1291 | 0 0 0 setrgbcolor 1292 | newpath 1293 | 18798 38519 moveto 1294 | 18602 38323 lineto 1295 | stroke 1296 | 0 0 0 setrgbcolor 1297 | newpath 1298 | 18602 38323 moveto 1299 | 18602 38323 lineto 1300 | stroke 1301 | 0 0 0 setrgbcolor 1302 | newpath 1303 | 20457 40199 moveto 1304 | 20457 40334 lineto 1305 | stroke 1306 | 0 0 0 setrgbcolor 1307 | newpath 1308 | 20909 41987 moveto 1309 | 20909 42000 lineto 1310 | stroke 1311 | 0 0 0 setrgbcolor 1312 | newpath 1313 | 20909 42000 moveto 1314 | 20909 41826 lineto 1315 | stroke 1316 | 0 0 0 setrgbcolor 1317 | newpath 1318 | 20909 41826 moveto 1319 | 20909 40909 lineto 1320 | stroke 1321 | 0 0 0 setrgbcolor 1322 | newpath 1323 | 20909 40786 moveto 1324 | 20909 40750 lineto 1325 | stroke 1326 | 0 0 0 setrgbcolor 1327 | newpath 1328 | 20909 40750 moveto 1329 | 20909 40909 lineto 1330 | stroke 1331 | 0 0 0 setrgbcolor 1332 | newpath 1333 | 20457 40334 moveto 1334 | 20909 40786 lineto 1335 | stroke 1336 | 0 0 0 setrgbcolor 1337 | newpath 1338 | 19684 40339 moveto 1339 | 20317 40339 lineto 1340 | stroke 1341 | 0 0 0 setrgbcolor 1342 | newpath 1343 | 20317 40339 moveto 1344 | 20457 40199 lineto 1345 | stroke 1346 | 0 0 0 setrgbcolor 1347 | newpath 1348 | 20391 40391 moveto 1349 | 20339 40339 lineto 1350 | stroke 1351 | 0 0 0 setrgbcolor 1352 | newpath 1353 | 19145 42303 moveto 1354 | 20466 42303 lineto 1355 | stroke 1356 | 0 0 0 setrgbcolor 1357 | newpath 1358 | 20466 42303 moveto 1359 | 20432 42303 lineto 1360 | stroke 1361 | 0 0 0 setrgbcolor 1362 | newpath 1363 | 18602 38666 moveto 1364 | 18602 38323 lineto 1365 | stroke 1366 | 0 0 0 setrgbcolor 1367 | newpath 1368 | 18698 38666 moveto 1369 | 18698 38725 lineto 1370 | stroke 1371 | 0 0 0 setrgbcolor 1372 | newpath 1373 | 18698 38725 moveto 1374 | 18698 39648 lineto 1375 | stroke 1376 | 0 0 0 setrgbcolor 1377 | newpath 1378 | 18698 39648 moveto 1379 | 18700 39650 lineto 1380 | stroke 1381 | 0 0 0 setrgbcolor 1382 | newpath 1383 | 18798 38666 moveto 1384 | 18798 39552 lineto 1385 | stroke 1386 | 0 0 0 setrgbcolor 1387 | newpath 1388 | 18798 39552 moveto 1389 | 18700 39650 lineto 1390 | stroke 1391 | 0 0 0 setrgbcolor 1392 | newpath 1393 | 18602 38666 moveto 1394 | 18602 39552 lineto 1395 | stroke 1396 | 0 0 0 setrgbcolor 1397 | newpath 1398 | 18602 39552 moveto 1399 | 18700 39650 lineto 1400 | stroke 1401 | 0 0 0 setrgbcolor 1402 | newpath 1403 | 19684 40339 moveto 1404 | 19466 40339 lineto 1405 | stroke 1406 | 0 0 0 setrgbcolor 1407 | newpath 1408 | 18777 39650 moveto 1409 | 18700 39650 lineto 1410 | stroke 1411 | 0 0 0 setrgbcolor 1412 | newpath 1413 | 19466 40339 moveto 1414 | 18777 39650 lineto 1415 | stroke 1416 | 0 0 0 setrgbcolor 1417 | newpath 1418 | 17986 41890 moveto 1419 | 17986 41792 lineto 1420 | stroke 1421 | 0 0 0 setrgbcolor 1422 | newpath 1423 | 18271 42175 moveto 1424 | 17986 41890 lineto 1425 | stroke 1426 | 0 0 0 setrgbcolor 1427 | newpath 1428 | 18466 42175 moveto 1429 | 18271 42175 lineto 1430 | stroke 1431 | 0 0 0 setrgbcolor 1432 | newpath 1433 | 17986 41792 moveto 1434 | 17958 41764 lineto 1435 | stroke 1436 | 0 0 0 setrgbcolor 1437 | newpath 1438 | 18466 42175 moveto 1439 | 18507 42175 lineto 1440 | stroke 1441 | 0 0 0 setrgbcolor 1442 | newpath 1443 | 19325.2 42122.8 moveto 1444 | 19325.2 41959 lineto 1445 | stroke 1446 | 0 0 0 setrgbcolor 1447 | newpath 1448 | 19166 42282 moveto 1449 | 19145 42303 lineto 1450 | stroke 1451 | 0 0 0 setrgbcolor 1452 | newpath 1453 | 19145 42303 moveto 1454 | 19325.2 42122.8 lineto 1455 | stroke 1456 | 0 0 0 setrgbcolor 1457 | newpath 1458 | 18614 42282 moveto 1459 | 19166 42282 lineto 1460 | stroke 1461 | 0 0 0 setrgbcolor 1462 | newpath 1463 | 18507 42175 moveto 1464 | 18614 42282 lineto 1465 | stroke 1466 | 0 0 0 setrgbcolor 1467 | newpath 1468 | 18852.8 41329 moveto 1469 | 18852.8 41431.8 lineto 1470 | stroke 1471 | 0 0 0 setrgbcolor 1472 | newpath 1473 | 19325.2 41904.2 moveto 1474 | 19325.2 41959 lineto 1475 | stroke 1476 | 0 0 0 setrgbcolor 1477 | newpath 1478 | 18852.8 41431.8 moveto 1479 | 19325.2 41904.2 lineto 1480 | stroke 1481 | 0 0 0 setrgbcolor 1482 | newpath 1483 | 18602 38666 moveto 1484 | 18698 38666 lineto 1485 | stroke 1486 | 0 0 0 setrgbcolor 1487 | newpath 1488 | 18698 38666 moveto 1489 | 18798 38666 lineto 1490 | stroke 1491 | 0 0 0 setrgbcolor 1492 | newpath 1493 | 18798 40634 moveto 1494 | 18798 40875 lineto 1495 | stroke 1496 | 0 0 0 setrgbcolor 1497 | newpath 1498 | 18677 41959 moveto 1499 | 18852.8 41959 lineto 1500 | stroke 1501 | 0 0 0 setrgbcolor 1502 | newpath 1503 | 18549 41831 moveto 1504 | 18677 41959 lineto 1505 | stroke 1506 | 0 0 0 setrgbcolor 1507 | newpath 1508 | 18549 41143 moveto 1509 | 18549 41831 lineto 1510 | stroke 1511 | 0 0 0 setrgbcolor 1512 | newpath 1513 | 18600 41092 moveto 1514 | 18549 41143 lineto 1515 | stroke 1516 | 0 0 0 setrgbcolor 1517 | newpath 1518 | 18600 41025 moveto 1519 | 18600 41092 lineto 1520 | stroke 1521 | 0 0 0 setrgbcolor 1522 | newpath 1523 | 18667 40958 moveto 1524 | 18600 41025 lineto 1525 | stroke 1526 | 0 0 0 setrgbcolor 1527 | newpath 1528 | 18715 40958 moveto 1529 | 18667 40958 lineto 1530 | stroke 1531 | 0 0 0 setrgbcolor 1532 | newpath 1533 | 18798 40875 moveto 1534 | 18715 40958 lineto 1535 | stroke 1536 | 0 0 0 setrgbcolor 1537 | newpath 1538 | 17716 40142 moveto 1539 | 17211 40142 lineto 1540 | stroke 1541 | 0 0 0 setrgbcolor 1542 | newpath 1543 | 17211 40142 moveto 1544 | 17105.1 40247.9 lineto 1545 | stroke 1546 | 0 0 0 setrgbcolor 1547 | newpath 1548 | 19325.2 41329 moveto 1549 | 19556 41329 lineto 1550 | stroke 1551 | 0 0 0 setrgbcolor 1552 | newpath 1553 | 19556 41329 moveto 1554 | 19700 41473 lineto 1555 | stroke 1556 | 0 0 0 setrgbcolor 1557 | newpath 1558 | 18995 40634 moveto 1559 | 18995 40947 lineto 1560 | stroke 1561 | 0 0 0 setrgbcolor 1562 | newpath 1563 | 19325.2 41277.2 moveto 1564 | 19325.2 41329 lineto 1565 | stroke 1566 | 0 0 0 setrgbcolor 1567 | newpath 1568 | 18995 40947 moveto 1569 | 19325.2 41277.2 lineto 1570 | stroke 1571 | 0 0 0 setrgbcolor 1572 | newpath 1573 | 18208 40634 moveto 1574 | 18208 40914 lineto 1575 | stroke 1576 | 0 0 0 setrgbcolor 1577 | newpath 1578 | 18208 40914 moveto 1579 | 17958 41164 lineto 1580 | stroke 1581 | 0 0 0 setrgbcolor 1582 | newpath 1583 | 16770.9 40692.1 moveto 1584 | 16650 40813 lineto 1585 | stroke 1586 | 0 0 0 setrgbcolor 1587 | newpath 1588 | 16650 40813 moveto 1589 | 16650 40950 lineto 1590 | stroke 1591 | 0 0 0 setrgbcolor 1592 | newpath 1593 | 17716 39355 moveto 1594 | 17217 39355 lineto 1595 | stroke 1596 | 0 0 0 setrgbcolor 1597 | newpath 1598 | 17217 39355 moveto 1599 | 17212 39360 lineto 1600 | stroke 1601 | 0 0 0 setrgbcolor 1602 | newpath 1603 | 20006 41322 moveto 1604 | 20400 41716 lineto 1605 | stroke 1606 | 0 0 0 setrgbcolor 1607 | newpath 1608 | 19192 40862 moveto 1609 | 19364 41034 lineto 1610 | stroke 1611 | 0 0 0 setrgbcolor 1612 | newpath 1613 | 19364 41034 moveto 1614 | 19718 41034 lineto 1615 | stroke 1616 | 0 0 0 setrgbcolor 1617 | newpath 1618 | 19718 41034 moveto 1619 | 20006 41322 lineto 1620 | stroke 1621 | 0 0 0 setrgbcolor 1622 | newpath 1623 | 19192 40634 moveto 1624 | 19192 40862 lineto 1625 | stroke 1626 | 0 0 0 setrgbcolor 1627 | newpath 1628 | 20400 41716 moveto 1629 | 20400 41800 lineto 1630 | stroke 1631 | 0 0 0 setrgbcolor 1632 | newpath 1633 | 20433 41112 moveto 1634 | 19955 40634 lineto 1635 | stroke 1636 | 0 0 0 setrgbcolor 1637 | newpath 1638 | 19955 40634 moveto 1639 | 19389 40634 lineto 1640 | stroke 1641 | 0 0 0 setrgbcolor 1642 | newpath 1643 | 20310 37980 moveto 1644 | 20310 38296 lineto 1645 | stroke 1646 | 0 0 0 setrgbcolor 1647 | newpath 1648 | 20310 38296 moveto 1649 | 20255 38351 lineto 1650 | stroke 1651 | 0 0 0 setrgbcolor 1652 | newpath 1653 | 20255 38351 moveto 1654 | 19266 38351 lineto 1655 | stroke 1656 | 0 0 0 setrgbcolor 1657 | newpath 1658 | 19192 38425 moveto 1659 | 19192 38666 lineto 1660 | stroke 1661 | 0 0 0 setrgbcolor 1662 | newpath 1663 | 19266 38351 moveto 1664 | 19192 38425 lineto 1665 | stroke 1666 | 0 0 0 setrgbcolor 1667 | newpath 1668 | 17200 38600 moveto 1669 | 17945 38600 lineto 1670 | stroke 1671 | 0 0 0 setrgbcolor 1672 | newpath 1673 | 17945 38600 moveto 1674 | 18011 38666 lineto 1675 | stroke 1676 | showpage 1677 | grestore 1678 | %%EOF 1679 | -------------------------------------------------------------------------------- /hardware/esp12e-generics.kicad_pcb: -------------------------------------------------------------------------------- 1 | (kicad_pcb (version 3) (host pcbnew "(2013-jul-07)-stable") 2 | 3 | (general 4 | (links 26) 5 | (no_connects 0) 6 | (area 64.440999 32.882999 95.88627 62.559001) 7 | (thickness 1.6) 8 | (drawings 12) 9 | (tracks 88) 10 | (zones 0) 11 | (modules 6) 12 | (nets 11) 13 | ) 14 | 15 | (page User 139.7 139.7) 16 | (layers 17 | (15 F.Cu signal) 18 | (0 B.Cu signal) 19 | (16 B.Adhes user) 20 | (17 F.Adhes user) 21 | (18 B.Paste user) 22 | (19 F.Paste user) 23 | (20 B.SilkS user) 24 | (21 F.SilkS user) 25 | (22 B.Mask user) 26 | (23 F.Mask user) 27 | (24 Dwgs.User user) 28 | (25 Cmts.User user) 29 | (26 Eco1.User user) 30 | (27 Eco2.User user) 31 | (28 Edge.Cuts user) 32 | ) 33 | 34 | (setup 35 | (last_trace_width 0.381) 36 | (trace_clearance 0.381) 37 | (zone_clearance 0.3556) 38 | (zone_45_only no) 39 | (trace_min 0.254) 40 | (segment_width 0.2) 41 | (edge_width 0.15) 42 | (via_size 0.889) 43 | (via_drill 0.635) 44 | (via_min_size 0.889) 45 | (via_min_drill 0.508) 46 | (uvia_size 0.508) 47 | (uvia_drill 0.127) 48 | (uvias_allowed no) 49 | (uvia_min_size 0.508) 50 | (uvia_min_drill 0.127) 51 | (pcb_text_width 0.2032) 52 | (pcb_text_size 0.889 0.889) 53 | (mod_edge_width 0.15) 54 | (mod_text_size 1.5 1.5) 55 | (mod_text_width 0.15) 56 | (pad_size 1.524 1.524) 57 | (pad_drill 0.762) 58 | (pad_to_mask_clearance 0.2) 59 | (aux_axis_origin 0 0) 60 | (visible_elements FFFFFFBF) 61 | (pcbplotparams 62 | (layerselection 32768) 63 | (usegerberextensions false) 64 | (excludeedgelayer true) 65 | (linewidth 0.100000) 66 | (plotframeref false) 67 | (viasonmask false) 68 | (mode 1) 69 | (useauxorigin false) 70 | (hpglpennumber 1) 71 | (hpglpenspeed 20) 72 | (hpglpendiameter 15) 73 | (hpglpenoverlay 2) 74 | (psnegative false) 75 | (psa4output false) 76 | (plotreference true) 77 | (plotvalue true) 78 | (plotothertext true) 79 | (plotinvisibletext false) 80 | (padsonsilk false) 81 | (subtractmaskfromsilk false) 82 | (outputformat 2) 83 | (mirror false) 84 | (drillshape 1) 85 | (scaleselection 1) 86 | (outputdirectory "")) 87 | ) 88 | 89 | (net 0 "") 90 | (net 1 +3.3V) 91 | (net 2 +5V) 92 | (net 3 GND) 93 | (net 4 GPIO0) 94 | (net 5 GPIO2) 95 | (net 6 GPIO4) 96 | (net 7 GPIO5) 97 | (net 8 N-000003) 98 | (net 9 RX) 99 | (net 10 TX) 100 | 101 | (net_class Default "This is the default net class." 102 | (clearance 0.381) 103 | (trace_width 0.381) 104 | (via_dia 0.889) 105 | (via_drill 0.635) 106 | (uvia_dia 0.508) 107 | (uvia_drill 0.127) 108 | (add_net "") 109 | (add_net +3.3V) 110 | (add_net +5V) 111 | (add_net GND) 112 | (add_net GPIO0) 113 | (add_net GPIO2) 114 | (add_net GPIO4) 115 | (add_net GPIO5) 116 | (add_net N-000003) 117 | (add_net RX) 118 | (add_net TX) 119 | ) 120 | 121 | (module SM0805 (layer F.Cu) (tedit 56195079) (tstamp 56194CC7) 122 | (at 90.4748 60.9092 180) 123 | (path /56194F36) 124 | (attr smd) 125 | (fp_text reference C1 (at 2.5908 -0.0508 180) (layer F.SilkS) 126 | (effects (font (size 0.50038 0.50038) (thickness 0.10922))) 127 | ) 128 | (fp_text value 10u (at 2.5908 0.4572 180) (layer F.SilkS) 129 | (effects (font (size 0.50038 0.50038) (thickness 0.10922))) 130 | ) 131 | (fp_circle (center -1.651 0.762) (end -1.651 0.635) (layer F.SilkS) (width 0.09906)) 132 | (fp_line (start -0.508 0.762) (end -1.524 0.762) (layer F.SilkS) (width 0.09906)) 133 | (fp_line (start -1.524 0.762) (end -1.524 -0.762) (layer F.SilkS) (width 0.09906)) 134 | (fp_line (start -1.524 -0.762) (end -0.508 -0.762) (layer F.SilkS) (width 0.09906)) 135 | (fp_line (start 0.508 -0.762) (end 1.524 -0.762) (layer F.SilkS) (width 0.09906)) 136 | (fp_line (start 1.524 -0.762) (end 1.524 0.762) (layer F.SilkS) (width 0.09906)) 137 | (fp_line (start 1.524 0.762) (end 0.508 0.762) (layer F.SilkS) (width 0.09906)) 138 | (pad 1 smd rect (at -0.9525 0 180) (size 0.889 1.397) 139 | (layers F.Cu F.Paste F.Mask) 140 | (net 2 +5V) 141 | ) 142 | (pad 2 smd rect (at 0.9525 0 180) (size 0.889 1.397) 143 | (layers F.Cu F.Paste F.Mask) 144 | (net 3 GND) 145 | ) 146 | (model smd/chip_cms.wrl 147 | (at (xyz 0 0 0)) 148 | (scale (xyz 0.1 0.1 0.1)) 149 | (rotate (xyz 0 0 0)) 150 | ) 151 | ) 152 | 153 | (module SM0805 (layer F.Cu) (tedit 56195074) (tstamp 56194CD4) 154 | (at 82.8802 59.3344) 155 | (path /56194F45) 156 | (attr smd) 157 | (fp_text reference C2 (at -0.0762 -1.4224) (layer F.SilkS) 158 | (effects (font (size 0.50038 0.50038) (thickness 0.10922))) 159 | ) 160 | (fp_text value 10u (at -2.6162 1.1176) (layer F.SilkS) 161 | (effects (font (size 0.50038 0.50038) (thickness 0.10922))) 162 | ) 163 | (fp_circle (center -1.651 0.762) (end -1.651 0.635) (layer F.SilkS) (width 0.09906)) 164 | (fp_line (start -0.508 0.762) (end -1.524 0.762) (layer F.SilkS) (width 0.09906)) 165 | (fp_line (start -1.524 0.762) (end -1.524 -0.762) (layer F.SilkS) (width 0.09906)) 166 | (fp_line (start -1.524 -0.762) (end -0.508 -0.762) (layer F.SilkS) (width 0.09906)) 167 | (fp_line (start 0.508 -0.762) (end 1.524 -0.762) (layer F.SilkS) (width 0.09906)) 168 | (fp_line (start 1.524 -0.762) (end 1.524 0.762) (layer F.SilkS) (width 0.09906)) 169 | (fp_line (start 1.524 0.762) (end 0.508 0.762) (layer F.SilkS) (width 0.09906)) 170 | (pad 1 smd rect (at -0.9525 0) (size 0.889 1.397) 171 | (layers F.Cu F.Paste F.Mask) 172 | (net 1 +3.3V) 173 | ) 174 | (pad 2 smd rect (at 0.9525 0) (size 0.889 1.397) 175 | (layers F.Cu F.Paste F.Mask) 176 | (net 3 GND) 177 | ) 178 | (model smd/chip_cms.wrl 179 | (at (xyz 0 0 0)) 180 | (scale (xyz 0.1 0.1 0.1)) 181 | (rotate (xyz 0 0 0)) 182 | ) 183 | ) 184 | 185 | (module SIL-8 (layer F.Cu) (tedit 56C7A81F) (tstamp 56194CE5) 186 | (at 93.98 51.816 270) 187 | (descr "Connecteur 8 pins") 188 | (tags "CONN DEV") 189 | (path /56194CDB) 190 | (fp_text reference P1 (at -6.604 -0.508 270) (layer F.SilkS) 191 | (effects (font (size 1.72974 1.08712) (thickness 0.3048))) 192 | ) 193 | (fp_text value CONN_8 (at 0.1524 1.6256 270) (layer F.SilkS) 194 | (effects (font (size 1.524 1.016) (thickness 0.3048))) 195 | ) 196 | (fp_line (start -10.16 -1.27) (end 10.16 -1.27) (layer F.SilkS) (width 0.3048)) 197 | (fp_line (start 10.16 -1.27) (end 10.16 1.27) (layer F.SilkS) (width 0.3048)) 198 | (fp_line (start 10.16 1.27) (end -10.16 1.27) (layer F.SilkS) (width 0.3048)) 199 | (fp_line (start -10.16 1.27) (end -10.16 -1.27) (layer F.SilkS) (width 0.3048)) 200 | (fp_line (start -7.62 1.27) (end -7.62 -1.27) (layer F.SilkS) (width 0.3048)) 201 | (pad 1 thru_hole rect (at -8.89 0 270) (size 1.397 1.397) (drill 0.8128) 202 | (layers *.Cu *.Mask F.SilkS) 203 | (net 10 TX) 204 | ) 205 | (pad 2 thru_hole circle (at -6.35 0 270) (size 1.397 1.397) (drill 0.8128) 206 | (layers *.Cu *.Mask F.SilkS) 207 | (net 9 RX) 208 | ) 209 | (pad 3 thru_hole circle (at -3.81 0 270) (size 1.397 1.397) (drill 0.8128) 210 | (layers *.Cu *.Mask F.SilkS) 211 | (net 7 GPIO5) 212 | ) 213 | (pad 4 thru_hole circle (at -1.27 0 270) (size 1.397 1.397) (drill 0.8128) 214 | (layers *.Cu *.Mask F.SilkS) 215 | (net 6 GPIO4) 216 | ) 217 | (pad 5 thru_hole circle (at 1.27 0 270) (size 1.397 1.397) (drill 0.8128) 218 | (layers *.Cu *.Mask F.SilkS) 219 | (net 4 GPIO0) 220 | ) 221 | (pad 6 thru_hole circle (at 3.81 0 270) (size 1.397 1.397) (drill 0.8128) 222 | (layers *.Cu *.Mask F.SilkS) 223 | (net 5 GPIO2) 224 | ) 225 | (pad 7 thru_hole circle (at 6.35 0 270) (size 1.397 1.397) (drill 0.8128) 226 | (layers *.Cu *.Mask F.SilkS) 227 | (net 3 GND) 228 | ) 229 | (pad 8 thru_hole circle (at 8.89 0 270) (size 1.397 1.397) (drill 0.8128) 230 | (layers *.Cu *.Mask F.SilkS) 231 | (net 2 +5V) 232 | ) 233 | ) 234 | 235 | (module EXB-A (layer F.Cu) (tedit 52D0B57E) (tstamp 56197883) 236 | (at 88.75776 47.31258) 237 | (path /56194CEA) 238 | (fp_text reference U2 (at 0 -3.81) (layer F.SilkS) 239 | (effects (font (size 0.762 0.762) (thickness 0.1905))) 240 | ) 241 | (fp_text value EXB-A (at 0.254 3.81) (layer F.SilkS) 242 | (effects (font (size 0.762 0.762) (thickness 0.1905))) 243 | ) 244 | (pad 1 smd rect (at -1.778 -2.54 90) (size 0.8001 1.6002) 245 | (layers F.Cu F.Paste F.Mask) 246 | (net 7 GPIO5) 247 | ) 248 | (pad 2 smd rect (at -1.778 -1.27 90) (size 0.8001 1.6002) 249 | (layers F.Cu F.Paste F.Mask) 250 | (net 6 GPIO4) 251 | ) 252 | (pad 3 smd rect (at -1.778 0 90) (size 0.8001 1.6002) 253 | (layers F.Cu F.Paste F.Mask) 254 | (net 4 GPIO0) 255 | ) 256 | (pad 4 smd rect (at -1.778 1.27 90) (size 0.8001 1.6002) 257 | (layers F.Cu F.Paste F.Mask) 258 | (net 5 GPIO2) 259 | ) 260 | (pad 5 smd rect (at -1.778 2.54 90) (size 0.8001 1.6002) 261 | (layers F.Cu F.Paste F.Mask) 262 | (net 8 N-000003) 263 | ) 264 | (pad 6 smd rect (at 1.778 2.54 90) (size 0.8001 1.6002) 265 | (layers F.Cu F.Paste F.Mask) 266 | (net 5 GPIO2) 267 | ) 268 | (pad 7 smd rect (at 1.778 1.27 90) (size 0.8001 1.6002) 269 | (layers F.Cu F.Paste F.Mask) 270 | (net 4 GPIO0) 271 | ) 272 | (pad 8 smd rect (at 1.778 0 90) (size 0.8001 1.6002) 273 | (layers F.Cu F.Paste F.Mask) 274 | (net 6 GPIO4) 275 | ) 276 | (pad 9 smd rect (at 1.778 -1.27 90) (size 0.8001 1.6002) 277 | (layers F.Cu F.Paste F.Mask) 278 | (net 7 GPIO5) 279 | ) 280 | (pad 10 smd rect (at 1.778 -2.54 90) (size 0.8001 1.6002) 281 | (layers F.Cu F.Paste F.Mask) 282 | ) 283 | ) 284 | 285 | (module ESP12E (layer F.Cu) (tedit 560D9068) (tstamp 56194D17) 286 | (at 74.6633 45.339) 287 | (path /5619493D) 288 | (fp_text reference ESP1 (at -3 -3) (layer F.SilkS) 289 | (effects (font (size 1 1) (thickness 0.15))) 290 | ) 291 | (fp_text value ESP12E (at 4 -3) (layer F.SilkS) 292 | (effects (font (size 1 1) (thickness 0.15))) 293 | ) 294 | (fp_line (start 0 -1) (end -1 0) (layer F.SilkS) (width 0.15)) 295 | (fp_line (start 0 -1) (end 1 0) (layer F.SilkS) (width 0.15)) 296 | (fp_line (start 0 -1) (end 0 3) (layer F.SilkS) (width 0.15)) 297 | (fp_line (start -8 12) (end -8 -4) (layer F.SilkS) (width 0.15)) 298 | (fp_line (start -8 -4) (end 8 -4) (layer F.SilkS) (width 0.15)) 299 | (fp_line (start 8 -4) (end 8 12) (layer F.SilkS) (width 0.15)) 300 | (fp_line (start 8 -12) (end -8 -12) (layer Dwgs.User) (width 0.15)) 301 | (fp_line (start -8 -12) (end -8 12) (layer Dwgs.User) (width 0.15)) 302 | (fp_line (start -8 12) (end 8 12) (layer F.SilkS) (width 0.15)) 303 | (fp_line (start 8 12) (end 8 -12) (layer Dwgs.User) (width 0.15)) 304 | (pad 1 smd oval (at -8 -3) (size 3 1) 305 | (layers F.Cu F.Paste F.Mask) 306 | (net 1 +3.3V) 307 | ) 308 | (pad 2 smd oval (at -8 -1) (size 3 1) 309 | (layers F.Cu F.Paste F.Mask) 310 | ) 311 | (pad 3 smd oval (at -8 1) (size 3 1) 312 | (layers F.Cu F.Paste F.Mask) 313 | (net 1 +3.3V) 314 | ) 315 | (pad 4 smd oval (at -8 3) (size 3 1) 316 | (layers F.Cu F.Paste F.Mask) 317 | ) 318 | (pad 5 smd oval (at -8 5) (size 3 1) 319 | (layers F.Cu F.Paste F.Mask) 320 | ) 321 | (pad 6 smd oval (at -8 7) (size 3 1) 322 | (layers F.Cu F.Paste F.Mask) 323 | ) 324 | (pad 7 smd oval (at -8 9) (size 3 1) 325 | (layers F.Cu F.Paste F.Mask) 326 | ) 327 | (pad 8 smd oval (at -8 11) (size 3 1) 328 | (layers F.Cu F.Paste F.Mask) 329 | (net 1 +3.3V) 330 | ) 331 | (pad 9 smd oval (at -5 12 90) (size 3 1) 332 | (layers F.Cu F.Paste F.Mask) 333 | ) 334 | (pad 10 smd oval (at -3 12 90) (size 3 1) 335 | (layers F.Cu F.Paste F.Mask) 336 | ) 337 | (pad 11 smd oval (at -1 12 90) (size 3 1) 338 | (layers F.Cu F.Paste F.Mask) 339 | ) 340 | (pad 12 smd oval (at 1 12 90) (size 3 1) 341 | (layers F.Cu F.Paste F.Mask) 342 | ) 343 | (pad 13 smd oval (at 3 12 90) (size 3 1) 344 | (layers F.Cu F.Paste F.Mask) 345 | ) 346 | (pad 14 smd oval (at 5 12 90) (size 3 1) 347 | (layers F.Cu F.Paste F.Mask) 348 | ) 349 | (pad 15 smd oval (at 8 11 180) (size 3 1) 350 | (layers F.Cu F.Paste F.Mask) 351 | (net 3 GND) 352 | ) 353 | (pad 16 smd oval (at 8 9 180) (size 3 1) 354 | (layers F.Cu F.Paste F.Mask) 355 | (net 3 GND) 356 | ) 357 | (pad 17 smd oval (at 8 7 180) (size 3 1) 358 | (layers F.Cu F.Paste F.Mask) 359 | (net 5 GPIO2) 360 | ) 361 | (pad 18 smd oval (at 8 5 180) (size 3 1) 362 | (layers F.Cu F.Paste F.Mask) 363 | (net 4 GPIO0) 364 | ) 365 | (pad 19 smd oval (at 8 3 180) (size 3 1) 366 | (layers F.Cu F.Paste F.Mask) 367 | (net 6 GPIO4) 368 | ) 369 | (pad 20 smd oval (at 8 1 180) (size 3 1) 370 | (layers F.Cu F.Paste F.Mask) 371 | (net 7 GPIO5) 372 | ) 373 | (pad 21 smd oval (at 8 -1 180) (size 3 1) 374 | (layers F.Cu F.Paste F.Mask) 375 | (net 9 RX) 376 | ) 377 | (pad 22 smd oval (at 8 -3 180) (size 3 1) 378 | (layers F.Cu F.Paste F.Mask) 379 | (net 10 TX) 380 | ) 381 | ) 382 | 383 | (module SOT223 (layer F.Cu) (tedit 200000) (tstamp 561976D8) 384 | (at 88.3412 55.4482) 385 | (descr "module CMS SOT223 4 pins") 386 | (tags "CMS SOT") 387 | (path /5619494C) 388 | (attr smd) 389 | (fp_text reference U1 (at 0 -0.762) (layer F.SilkS) 390 | (effects (font (size 1.016 1.016) (thickness 0.2032))) 391 | ) 392 | (fp_text value AP1117 (at 0 0.762) (layer F.SilkS) 393 | (effects (font (size 1.016 1.016) (thickness 0.2032))) 394 | ) 395 | (fp_line (start -3.556 1.524) (end -3.556 4.572) (layer F.SilkS) (width 0.2032)) 396 | (fp_line (start -3.556 4.572) (end 3.556 4.572) (layer F.SilkS) (width 0.2032)) 397 | (fp_line (start 3.556 4.572) (end 3.556 1.524) (layer F.SilkS) (width 0.2032)) 398 | (fp_line (start -3.556 -1.524) (end -3.556 -2.286) (layer F.SilkS) (width 0.2032)) 399 | (fp_line (start -3.556 -2.286) (end -2.032 -4.572) (layer F.SilkS) (width 0.2032)) 400 | (fp_line (start -2.032 -4.572) (end 2.032 -4.572) (layer F.SilkS) (width 0.2032)) 401 | (fp_line (start 2.032 -4.572) (end 3.556 -2.286) (layer F.SilkS) (width 0.2032)) 402 | (fp_line (start 3.556 -2.286) (end 3.556 -1.524) (layer F.SilkS) (width 0.2032)) 403 | (pad 4 smd rect (at 0 -3.302) (size 3.6576 2.032) 404 | (layers F.Cu F.Paste F.Mask) 405 | (net 8 N-000003) 406 | ) 407 | (pad 2 smd rect (at 0 3.302) (size 1.016 2.032) 408 | (layers F.Cu F.Paste F.Mask) 409 | (net 1 +3.3V) 410 | ) 411 | (pad 3 smd rect (at 2.286 3.302) (size 1.016 2.032) 412 | (layers F.Cu F.Paste F.Mask) 413 | (net 2 +5V) 414 | ) 415 | (pad 1 smd rect (at -2.286 3.302) (size 1.016 2.032) 416 | (layers F.Cu F.Paste F.Mask) 417 | (net 3 GND) 418 | ) 419 | (model smd/SOT223.wrl 420 | (at (xyz 0 0 0)) 421 | (scale (xyz 0.4 0.4 0.4)) 422 | (rotate (xyz 0 0 0)) 423 | ) 424 | ) 425 | 426 | (gr_text "\"generics\" rev -" (at 70.612 49.784 90) (layer F.Cu) 427 | (effects (font (size 0.889 0.889) (thickness 0.2032))) 428 | ) 429 | (gr_text "(C) <>< 2015 C. Lohr" (at 73.152 60.96) (layer F.Cu) 430 | (effects (font (size 0.889 0.889) (thickness 0.2032))) 431 | ) 432 | (gr_text 10ux2 (at 77.724 54.356) (layer F.Cu) 433 | (effects (font (size 0.889 0.889) (thickness 0.2032))) 434 | ) 435 | (gr_text "-->\n10k EXBA\nResistor\nArray" (at 77.216 47.244) (layer F.Cu) 436 | (effects (font (size 0.889 0.889) (thickness 0.2032))) 437 | ) 438 | (gr_text "ESP8266\nESP-12E" (at 74.676 44.196) (layer F.Cu) 439 | (effects (font (size 0.889 0.889) (thickness 0.2032))) 440 | ) 441 | (gr_text AP1117 (at 88.392 54.864) (layer F.Cu) 442 | (effects (font (size 0.889 0.889) (thickness 0.2032))) 443 | ) 444 | (gr_line (start 64.516 41.148) (end 95.504 41.148) (angle 90) (layer Edge.Cuts) (width 0.15)) 445 | (gr_line (start 64.516 62.484) (end 64.516 41.148) (angle 90) (layer Edge.Cuts) (width 0.15)) 446 | (gr_line (start 65.024 62.484) (end 64.516 62.484) (angle 90) (layer Edge.Cuts) (width 0.15)) 447 | (gr_line (start 65.532 62.484) (end 65.024 62.484) (angle 90) (layer Edge.Cuts) (width 0.15)) 448 | (gr_line (start 95.504 62.484) (end 65.532 62.484) (angle 90) (layer Edge.Cuts) (width 0.15)) 449 | (gr_line (start 95.504 41.148) (end 95.504 62.484) (angle 90) (layer Edge.Cuts) (width 0.15)) 450 | 451 | (segment (start 81.9277 59.3344) (end 81.9277 60.11926) (width 0.381) (layer F.Cu) (net 1)) 452 | (segment (start 88.34882 60.4139) (end 88.34882 59.07786) (width 0.381) (layer F.Cu) (net 1) (tstamp 5619797D)) 453 | (segment (start 87.97798 60.78474) (end 88.34882 60.4139) (width 0.381) (layer F.Cu) (net 1) (tstamp 5619797C)) 454 | (segment (start 82.59318 60.78474) (end 87.97798 60.78474) (width 0.381) (layer F.Cu) (net 1) (tstamp 5619797A)) 455 | (segment (start 81.9277 60.11926) (end 82.59318 60.78474) (width 0.381) (layer F.Cu) (net 1) (tstamp 56197979)) 456 | (segment (start 81.9277 59.3344) (end 80.391 59.3344) (width 0.381) (layer F.Cu) (net 1)) 457 | (segment (start 66.6633 58.2813) (end 66.6633 56.339) (width 0.381) (layer F.Cu) (net 1) (tstamp 56197976)) 458 | (segment (start 68.072 59.69) (end 66.6633 58.2813) (width 0.381) (layer F.Cu) (net 1) (tstamp 56197975)) 459 | (segment (start 80.0354 59.69) (end 68.072 59.69) (width 0.381) (layer F.Cu) (net 1) (tstamp 56197974)) 460 | (segment (start 80.391 59.3344) (end 80.0354 59.69) (width 0.381) (layer F.Cu) (net 1) (tstamp 56197973)) 461 | (segment (start 66.6633 42.339) (end 68.628 42.339) (width 0.381) (layer F.Cu) (net 1)) 462 | (segment (start 69.5325 43.2435) (end 69.5325 47.0535) (width 0.381) (layer F.Cu) (net 1) (tstamp 56197853)) 463 | (segment (start 68.628 42.339) (end 69.5325 43.2435) (width 0.381) (layer F.Cu) (net 1) (tstamp 56197852)) 464 | (segment (start 66.6633 56.339) (end 67.6384 56.339) (width 0.381) (layer F.Cu) (net 1)) 465 | (segment (start 68.818 46.339) (end 66.6633 46.339) (width 0.381) (layer F.Cu) (net 1) (tstamp 5619784F)) 466 | (segment (start 69.5325 47.0535) (end 68.818 46.339) (width 0.381) (layer F.Cu) (net 1) (tstamp 5619784E)) 467 | (segment (start 69.5325 54.4449) (end 69.5325 47.0535) (width 0.381) (layer F.Cu) (net 1) (tstamp 5619784C)) 468 | (segment (start 67.6384 56.339) (end 69.5325 54.4449) (width 0.381) (layer F.Cu) (net 1) (tstamp 5619784B)) 469 | (segment (start 91.4019 61.2394) (end 92.964 61.2394) (width 0.381) (layer F.Cu) (net 2)) 470 | (segment (start 92.964 61.2394) (end 94.0054 60.198) (width 0.381) (layer F.Cu) (net 2) (tstamp 56197992)) 471 | (segment (start 91.4019 61.2394) (end 91.4019 59.84494) (width 0.381) (layer F.Cu) (net 2)) 472 | (segment (start 91.4019 59.84494) (end 90.63482 59.07786) (width 0.381) (layer F.Cu) (net 2) (tstamp 5619798F)) 473 | (segment (start 86.0552 58.7502) (end 86.0552 57.15254) (width 0.381) (layer F.Cu) (net 3)) 474 | (segment (start 86.0552 57.15254) (end 86.86874 56.339) (width 0.381) (layer F.Cu) (net 3) (tstamp 561979BC)) 475 | (segment (start 89.5223 60.9092) (end 89.5223 57.35828) (width 0.381) (layer F.Cu) (net 3)) 476 | (segment (start 89.54262 57.33796) (end 89.54262 56.339) (width 0.381) (layer F.Cu) (net 3) (tstamp 561979B6)) 477 | (segment (start 89.5223 57.35828) (end 89.54262 57.33796) (width 0.381) (layer F.Cu) (net 3) (tstamp 561979B5)) 478 | (segment (start 82.6633 56.339) (end 86.86874 56.339) (width 0.381) (layer F.Cu) (net 3)) 479 | (segment (start 86.86874 56.339) (end 89.54262 56.339) (width 0.381) (layer F.Cu) (net 3) (tstamp 561979BF)) 480 | (segment (start 89.54262 56.339) (end 92.6864 56.339) (width 0.381) (layer F.Cu) (net 3) (tstamp 561979BA)) 481 | (segment (start 92.6864 56.339) (end 94.0054 57.658) (width 0.381) (layer F.Cu) (net 3) (tstamp 5619796E)) 482 | (segment (start 82.6633 56.339) (end 82.6633 54.339) (width 0.381) (layer F.Cu) (net 3)) 483 | (segment (start 83.8327 59.3344) (end 83.8327 57.5084) (width 0.381) (layer F.Cu) (net 3)) 484 | (segment (start 83.8327 57.5084) (end 82.6633 56.339) (width 0.381) (layer F.Cu) (net 3) (tstamp 56197969)) 485 | (segment (start 83.8327 59.3344) (end 85.80628 59.3344) (width 0.381) (layer F.Cu) (net 3)) 486 | (segment (start 85.80628 59.3344) (end 86.06282 59.07786) (width 0.381) (layer F.Cu) (net 3) (tstamp 56197966)) 487 | (segment (start 90.53576 48.58258) (end 91.55938 48.58258) (width 0.381) (layer F.Cu) (net 4)) 488 | (segment (start 92.51442 51.08702) (end 94.0054 52.578) (width 0.381) (layer F.Cu) (net 4) (tstamp 56197939)) 489 | (segment (start 92.51442 49.53762) (end 92.51442 51.08702) (width 0.381) (layer F.Cu) (net 4) (tstamp 56197938)) 490 | (segment (start 91.55938 48.58258) (end 92.51442 49.53762) (width 0.381) (layer F.Cu) (net 4) (tstamp 56197937)) 491 | (segment (start 86.97976 47.31258) (end 88.08212 47.31258) (width 0.381) (layer F.Cu) (net 4)) 492 | (segment (start 89.35212 48.58258) (end 90.53576 48.58258) (width 0.381) (layer F.Cu) (net 4) (tstamp 5619791D)) 493 | (segment (start 88.08212 47.31258) (end 89.35212 48.58258) (width 0.381) (layer F.Cu) (net 4) (tstamp 5619791C)) 494 | (segment (start 86.97976 47.31258) (end 85.6107 47.31258) (width 0.381) (layer F.Cu) (net 4)) 495 | (segment (start 83.1888 50.339) (end 82.6633 50.339) (width 0.381) (layer F.Cu) (net 4) (tstamp 561978F9)) 496 | (segment (start 84.8106 48.7172) (end 83.1888 50.339) (width 0.381) (layer F.Cu) (net 4) (tstamp 561978F8)) 497 | (segment (start 84.8106 48.11268) (end 84.8106 48.7172) (width 0.381) (layer F.Cu) (net 4) (tstamp 561978F7)) 498 | (segment (start 85.6107 47.31258) (end 84.8106 48.11268) (width 0.381) (layer F.Cu) (net 4) (tstamp 561978F6)) 499 | (segment (start 90.53576 49.85258) (end 91.31046 49.85258) (width 0.381) (layer F.Cu) (net 5)) 500 | (segment (start 91.6686 52.7812) (end 94.0054 55.118) (width 0.381) (layer F.Cu) (net 5) (tstamp 5619793E)) 501 | (segment (start 91.6686 50.21072) (end 91.6686 52.7812) (width 0.381) (layer F.Cu) (net 5) (tstamp 5619793D)) 502 | (segment (start 91.31046 49.85258) (end 91.6686 50.21072) (width 0.381) (layer F.Cu) (net 5) (tstamp 5619793C)) 503 | (segment (start 86.97976 48.58258) (end 87.87638 48.58258) (width 0.381) (layer F.Cu) (net 5)) 504 | (segment (start 89.14638 49.85258) (end 90.53576 49.85258) (width 0.381) (layer F.Cu) (net 5) (tstamp 56197919)) 505 | (segment (start 87.87638 48.58258) (end 89.14638 49.85258) (width 0.381) (layer F.Cu) (net 5) (tstamp 56197918)) 506 | (segment (start 86.97976 48.58258) (end 86.04758 48.58258) (width 0.381) (layer F.Cu) (net 5)) 507 | (segment (start 84.58224 52.339) (end 82.6633 52.339) (width 0.381) (layer F.Cu) (net 5) (tstamp 561978FF)) 508 | (segment (start 85.07476 51.84648) (end 84.58224 52.339) (width 0.381) (layer F.Cu) (net 5) (tstamp 561978FE)) 509 | (segment (start 85.07476 49.5554) (end 85.07476 51.84648) (width 0.381) (layer F.Cu) (net 5) (tstamp 561978FD)) 510 | (segment (start 86.04758 48.58258) (end 85.07476 49.5554) (width 0.381) (layer F.Cu) (net 5) (tstamp 561978FC)) 511 | (segment (start 93.98 50.546) (end 93.98 49.925566) (width 0.381) (layer F.Cu) (net 6)) 512 | (segment (start 91.367014 47.31258) (end 90.53576 47.31258) (width 0.381) (layer F.Cu) (net 6) (tstamp 56197A17)) 513 | (segment (start 93.98 49.925566) (end 91.367014 47.31258) (width 0.381) (layer F.Cu) (net 6) (tstamp 56197A16)) 514 | (segment (start 86.97976 46.04258) (end 88.27008 46.04258) (width 0.381) (layer F.Cu) (net 6)) 515 | (segment (start 89.54008 47.31258) (end 90.53576 47.31258) (width 0.381) (layer F.Cu) (net 6) (tstamp 56197921)) 516 | (segment (start 88.27008 46.04258) (end 89.54008 47.31258) (width 0.381) (layer F.Cu) (net 6) (tstamp 56197920)) 517 | (segment (start 86.97976 46.04258) (end 85.6361 46.04258) (width 0.381) (layer F.Cu) (net 6)) 518 | (segment (start 83.33968 48.339) (end 82.6633 48.339) (width 0.381) (layer F.Cu) (net 6) (tstamp 561978F3)) 519 | (segment (start 85.6361 46.04258) (end 83.33968 48.339) (width 0.381) (layer F.Cu) (net 6) (tstamp 561978F2)) 520 | (segment (start 90.53576 46.04258) (end 92.54998 46.04258) (width 0.381) (layer F.Cu) (net 7)) 521 | (segment (start 92.54998 46.04258) (end 94.0054 47.498) (width 0.381) (layer F.Cu) (net 7) (tstamp 56197929)) 522 | (segment (start 86.97976 44.77258) (end 88.15324 44.77258) (width 0.381) (layer F.Cu) (net 7)) 523 | (segment (start 89.42324 46.04258) (end 90.53576 46.04258) (width 0.381) (layer F.Cu) (net 7) (tstamp 56197925)) 524 | (segment (start 88.15324 44.77258) (end 89.42324 46.04258) (width 0.381) (layer F.Cu) (net 7) (tstamp 56197924)) 525 | (segment (start 86.97976 44.77258) (end 85.18144 44.77258) (width 0.381) (layer F.Cu) (net 7)) 526 | (segment (start 83.61502 46.339) (end 82.6633 46.339) (width 0.381) (layer F.Cu) (net 7) (tstamp 561978EF)) 527 | (segment (start 85.18144 44.77258) (end 83.61502 46.339) (width 0.381) (layer F.Cu) (net 7) (tstamp 561978EE)) 528 | (segment (start 86.97976 49.85258) (end 86.97976 51.1048) (width 0.381) (layer F.Cu) (net 8)) 529 | (segment (start 86.97976 51.1048) (end 88.34882 52.47386) (width 0.381) (layer F.Cu) (net 8) (tstamp 56197915)) 530 | (segment (start 93.98 45.466) (end 93.726 45.466) (width 0.381) (layer F.Cu) (net 9)) 531 | (segment (start 84.185 44.339) (end 82.6633 44.339) (width 0.381) (layer F.Cu) (net 9) (tstamp 56197A1E)) 532 | (segment (start 84.836 43.688) (end 84.185 44.339) (width 0.381) (layer F.Cu) (net 9) (tstamp 56197A1D)) 533 | (segment (start 91.948 43.688) (end 84.836 43.688) (width 0.381) (layer F.Cu) (net 9) (tstamp 56197A1B)) 534 | (segment (start 93.726 45.466) (end 91.948 43.688) (width 0.381) (layer F.Cu) (net 9) (tstamp 56197A1A)) 535 | (segment (start 94.0054 42.418) (end 92.83192 42.418) (width 0.381) (layer F.Cu) (net 10)) 536 | (segment (start 82.79512 42.20718) (end 82.6633 42.339) (width 0.381) (layer F.Cu) (net 10) (tstamp 561978D0)) 537 | (segment (start 92.6211 42.20718) (end 82.79512 42.20718) (width 0.381) (layer F.Cu) (net 10) (tstamp 561978CF)) 538 | (segment (start 92.83192 42.418) (end 92.6211 42.20718) (width 0.381) (layer F.Cu) (net 10) (tstamp 561978CE)) 539 | 540 | (zone (net 0) (net_name "") (layer F.Cu) (tstamp 56197A13) (hatch edge 0.508) 541 | (connect_pads (clearance 0.3556)) 542 | (min_thickness 0.3556) 543 | (fill (arc_segments 16) (thermal_gap 0.508) (thermal_bridge_width 0.508)) 544 | (polygon 545 | (pts 546 | (xy 95.504 62.484) (xy 95.504 41.148) (xy 64.516 41.148) (xy 64.516 62.484) (xy 65.024 62.484) 547 | ) 548 | ) 549 | (filled_polygon 550 | (pts 551 | (xy 65.147654 43.270347) (xy 65.139114 43.272624) (xy 65.1244 43.283884) (xy 65.1244 43.254808) (xy 65.147654 43.270347) 552 | ) 553 | ) 554 | (filled_polygon 555 | (pts 556 | (xy 65.147654 45.407652) (xy 65.1244 45.423191) (xy 65.1244 45.394115) (xy 65.139114 45.405376) (xy 65.147654 45.407652) 557 | ) 558 | ) 559 | (filled_polygon 560 | (pts 561 | (xy 65.147654 47.270347) (xy 65.139114 47.272624) (xy 65.1244 47.283884) (xy 65.1244 47.254808) (xy 65.147654 47.270347) 562 | ) 563 | ) 564 | (filled_polygon 565 | (pts 566 | (xy 65.147654 55.407652) (xy 65.1244 55.423191) (xy 65.1244 55.394115) (xy 65.139114 55.405376) (xy 65.147654 55.407652) 567 | ) 568 | ) 569 | (filled_polygon 570 | (pts 571 | (xy 66.821829 59.4995) (xy 65.1244 59.4995) (xy 65.1244 57.254808) (xy 65.217781 57.317204) (xy 65.622966 57.3978) 572 | (xy 65.914 57.3978) (xy 65.914 58.2813) (xy 65.971037 58.568045) (xy 66.133465 58.811135) (xy 66.821829 59.4995) 573 | ) 574 | ) 575 | (filled_polygon 576 | (pts 577 | (xy 68.656245 58.9407) (xy 68.38237 58.9407) (xy 67.4126 57.970929) (xy 67.4126 57.3978) (xy 67.703634 57.3978) 578 | (xy 68.108819 57.317204) (xy 68.452319 57.087685) (xy 68.4775 57.049998) (xy 68.4775 57.2628) (xy 68.6299 57.2628) 579 | (xy 68.6299 57.4152) (xy 68.4775 57.4152) (xy 68.4775 58.4152) (xy 68.596924 58.863186) (xy 68.656245 58.9407) 580 | ) 581 | ) 582 | (filled_polygon 583 | (pts 584 | (xy 68.7832 43.947328) (xy 68.555669 43.554394) (xy 68.187486 43.272624) (xy 68.178945 43.270347) (xy 68.37121 43.14188) 585 | (xy 68.7832 43.55387) (xy 68.7832 43.947328) 586 | ) 587 | ) 588 | (filled_polygon 589 | (pts 590 | (xy 68.7832 44.552553) (xy 68.712 44.46235) (xy 68.736536 44.339) (xy 68.712 44.215649) (xy 68.7832 44.125446) 591 | (xy 68.7832 44.552553) 592 | ) 593 | ) 594 | (filled_polygon 595 | (pts 596 | (xy 68.7832 45.5897) (xy 68.451398 45.5897) (xy 68.178945 45.407652) (xy 68.187486 45.405376) (xy 68.555669 45.123606) 597 | (xy 68.7832 44.730671) (xy 68.7832 45.5897) 598 | ) 599 | ) 600 | (filled_polygon 601 | (pts 602 | (xy 68.7832 47.947328) (xy 68.555669 47.554394) (xy 68.187486 47.272624) (xy 68.178945 47.270347) (xy 68.451398 47.0883) 603 | (xy 68.507629 47.0883) (xy 68.7832 47.36387) (xy 68.7832 47.947328) 604 | ) 605 | ) 606 | (filled_polygon 607 | (pts 608 | (xy 68.7832 48.552553) (xy 68.712 48.46235) (xy 68.736536 48.339) (xy 68.712 48.215649) (xy 68.7832 48.125446) 609 | (xy 68.7832 48.552553) 610 | ) 611 | ) 612 | (filled_polygon 613 | (pts 614 | (xy 68.7832 49.947328) (xy 68.555669 49.554394) (xy 68.274218 49.339) (xy 68.555669 49.123606) (xy 68.7832 48.730671) 615 | (xy 68.7832 49.947328) 616 | ) 617 | ) 618 | (filled_polygon 619 | (pts 620 | (xy 68.7832 50.552553) (xy 68.712 50.46235) (xy 68.736536 50.339) (xy 68.712 50.215649) (xy 68.7832 50.125446) 621 | (xy 68.7832 50.552553) 622 | ) 623 | ) 624 | (filled_polygon 625 | (pts 626 | (xy 68.7832 51.947328) (xy 68.555669 51.554394) (xy 68.274218 51.339) (xy 68.555669 51.123606) (xy 68.7832 50.730671) 627 | (xy 68.7832 51.947328) 628 | ) 629 | ) 630 | (filled_polygon 631 | (pts 632 | (xy 68.7832 52.552553) (xy 68.712 52.46235) (xy 68.736536 52.339) (xy 68.712 52.215649) (xy 68.7832 52.125446) 633 | (xy 68.7832 52.552553) 634 | ) 635 | ) 636 | (filled_polygon 637 | (pts 638 | (xy 68.7832 53.947328) (xy 68.555669 53.554394) (xy 68.274218 53.339) (xy 68.555669 53.123606) (xy 68.7832 52.730671) 639 | (xy 68.7832 53.947328) 640 | ) 641 | ) 642 | (filled_polygon 643 | (pts 644 | (xy 68.7832 54.13453) (xy 68.749166 54.168563) (xy 68.7832 54.125446) (xy 68.7832 54.13453) 645 | ) 646 | ) 647 | (filled_polygon 648 | (pts 649 | (xy 76.751142 55.6133) (xy 76.6633 55.728081) (xy 76.575457 55.6133) (xy 76.751142 55.6133) 650 | ) 651 | ) 652 | (filled_polygon 653 | (pts 654 | (xy 78.751142 55.6133) (xy 78.6633 55.728081) (xy 78.575457 55.6133) (xy 78.751142 55.6133) 655 | ) 656 | ) 657 | (filled_polygon 658 | (pts 659 | (xy 81.327357 45.339) (xy 81.217781 45.360796) (xy 80.874281 45.590315) (xy 80.745199 45.7835) (xy 78.380167 45.7835) 660 | (xy 78.380167 42.7355) (xy 70.971833 42.7355) (xy 70.971833 43.455168) (xy 70.2818 43.455168) (xy 70.2818 43.2435) 661 | (xy 70.224763 42.956755) (xy 70.062335 42.713665) (xy 69.157835 41.809165) (xy 69.078866 41.7564) (xy 80.763306 41.7564) 662 | (xy 80.644762 41.933815) (xy 80.564166 42.339) (xy 80.644762 42.744185) (xy 80.874281 43.087685) (xy 81.217781 43.317204) 663 | (xy 81.327357 43.339) (xy 81.217781 43.360796) (xy 80.874281 43.590315) (xy 80.644762 43.933815) (xy 80.564166 44.339) 664 | (xy 80.644762 44.744185) (xy 80.874281 45.087685) (xy 81.217781 45.317204) (xy 81.327357 45.339) 665 | ) 666 | ) 667 | (filled_polygon 668 | (pts 669 | (xy 81.327357 47.339) (xy 81.217781 47.360796) (xy 81.047167 47.474796) (xy 81.047167 47.203203) (xy 81.217781 47.317204) 670 | (xy 81.327357 47.339) 671 | ) 672 | ) 673 | (filled_polygon 674 | (pts 675 | (xy 81.327357 49.339) (xy 81.217781 49.360796) (xy 81.047167 49.474796) (xy 81.047167 49.203203) (xy 81.217781 49.317204) 676 | (xy 81.327357 49.339) 677 | ) 678 | ) 679 | (filled_polygon 680 | (pts 681 | (xy 81.327357 51.339) (xy 81.217781 51.360796) (xy 81.047167 51.474796) (xy 81.047167 51.203203) (xy 81.217781 51.317204) 682 | (xy 81.327357 51.339) 683 | ) 684 | ) 685 | (filled_polygon 686 | (pts 687 | (xy 81.327357 55.339) (xy 81.217781 55.360796) (xy 80.874281 55.590315) (xy 80.726792 55.811046) (xy 80.447906 55.446631) 688 | (xy 80.391001 55.413679) (xy 80.391001 52.8955) (xy 75.057 52.8955) (xy 75.057 55.343381) (xy 74.878694 55.446631) 689 | (xy 74.6633 55.728081) (xy 74.447906 55.446631) (xy 74.046687 55.214303) (xy 73.923678 55.18214) (xy 73.78665 55.290299) 690 | (xy 73.6633 55.265764) (xy 73.539949 55.290299) (xy 73.402922 55.18214) (xy 73.279913 55.214303) (xy 72.878694 55.446631) 691 | (xy 72.6633 55.728081) (xy 72.447906 55.446631) (xy 72.046687 55.214303) (xy 71.923678 55.18214) (xy 71.8693 55.225062) 692 | (xy 71.8693 46.9011) (xy 73.384833 46.9011) (xy 73.384833 52.8447) (xy 80.711923 52.8447) (xy 80.874281 53.087685) 693 | (xy 81.217781 53.317204) (xy 81.327357 53.339) (xy 81.217781 53.360796) (xy 80.874281 53.590315) (xy 80.644762 53.933815) 694 | (xy 80.564166 54.339) (xy 80.644762 54.744185) (xy 80.874281 55.087685) (xy 81.217781 55.317204) (xy 81.327357 55.339) 695 | ) 696 | ) 697 | (filled_polygon 698 | (pts 699 | (xy 83.0834 58.157219) (xy 83.07208 58.161897) (xy 82.91475 58.318952) (xy 82.88022 58.402107) (xy 82.846203 58.31978) 700 | (xy 82.689148 58.16245) (xy 82.48384 58.077198) (xy 82.261536 58.077004) (xy 81.372536 58.077004) (xy 81.16708 58.161897) 701 | (xy 81.00975 58.318952) (xy 80.924498 58.52426) (xy 80.924444 58.5851) (xy 80.803808 58.5851) (xy 80.8491 58.4152) 702 | (xy 80.8491 57.4152) (xy 80.6967 57.4152) (xy 80.6967 57.2628) (xy 80.8491 57.2628) (xy 80.8491 57.049998) 703 | (xy 80.874281 57.087685) (xy 81.217781 57.317204) (xy 81.622966 57.3978) (xy 82.66243 57.3978) (xy 83.0834 57.81877) 704 | (xy 83.0834 58.157219) 705 | ) 706 | ) 707 | (filled_polygon 708 | (pts 709 | (xy 84.224263 43.240066) (xy 84.10441 43.359919) (xy 83.999242 43.339) (xy 84.108819 43.317204) (xy 84.224263 43.240066) 710 | ) 711 | ) 712 | (filled_polygon 713 | (pts 714 | (xy 84.32546 51.50555) (xy 84.108819 51.360796) (xy 83.999242 51.339) (xy 84.108819 51.317204) (xy 84.32546 51.172449) 715 | (xy 84.32546 51.50555) 716 | ) 717 | ) 718 | (filled_polygon 719 | (pts 720 | (xy 84.746613 42.95648) (xy 84.549255 42.995737) (xy 84.485124 43.038587) (xy 84.539987 42.95648) (xy 84.746613 42.95648) 721 | ) 722 | ) 723 | (filled_polygon 724 | (pts 725 | (xy 85.318678 57.0883) (xy 85.3059 57.15254) (xy 85.3059 57.229281) (xy 85.23108 57.260197) (xy 85.07375 57.417252) 726 | (xy 84.988498 57.62256) (xy 84.988304 57.844864) (xy 84.988304 58.5851) (xy 84.836096 58.5851) (xy 84.836096 58.525236) 727 | (xy 84.751203 58.31978) (xy 84.594148 58.16245) (xy 84.582 58.157405) (xy 84.582 57.5084) (xy 84.524963 57.221655) 728 | (xy 84.440654 57.095478) (xy 84.451398 57.0883) (xy 85.318678 57.0883) 729 | ) 730 | ) 731 | (filled_polygon 732 | (pts 733 | (xy 86.048848 50.803371) (xy 86.03895 50.813252) (xy 85.953698 51.01856) (xy 85.953504 51.240864) (xy 85.953504 53.272864) 734 | (xy 86.007481 53.4035) (xy 85.238166 53.4035) (xy 85.238166 55.5897) (xy 84.451398 55.5897) (xy 84.108819 55.360796) 735 | (xy 83.999242 55.339) (xy 84.108819 55.317204) (xy 84.452319 55.087685) (xy 84.681838 54.744185) (xy 84.762434 54.339) 736 | (xy 84.681838 53.933815) (xy 84.452319 53.590315) (xy 84.108819 53.360796) (xy 83.999242 53.339) (xy 84.108819 53.317204) 737 | (xy 84.451398 53.0883) (xy 84.58224 53.0883) (xy 84.868985 53.031263) (xy 85.112075 52.868835) (xy 85.604595 52.376315) 738 | (xy 85.767023 52.133225) (xy 85.82406 51.84648) (xy 85.82406 50.68736) (xy 85.862712 50.72608) (xy 86.048848 50.803371) 739 | ) 740 | ) 741 | (filled_polygon 742 | (pts 743 | (xy 88.583872 61.8756) (xy 81.618667 61.8756) (xy 81.618667 60.869897) (xy 82.063344 61.314575) (xy 82.063345 61.314575) 744 | (xy 82.306435 61.477003) (xy 82.593179 61.534039) (xy 82.59318 61.53404) (xy 87.97798 61.53404) (xy 88.264725 61.477003) 745 | (xy 88.507815 61.314575) (xy 88.518904 61.303486) (xy 88.518904 61.718364) (xy 88.583872 61.8756) 746 | ) 747 | ) 748 | (filled_polygon 749 | (pts 750 | (xy 88.79332 57.175351) (xy 88.738536 57.175304) (xy 87.722536 57.175304) (xy 87.51708 57.260197) (xy 87.35975 57.417252) 751 | (xy 87.274498 57.62256) (xy 87.274304 57.844864) (xy 87.274304 59.876864) (xy 87.339826 60.03544) (xy 87.05646 60.03544) 752 | (xy 87.121902 59.87784) (xy 87.122096 59.655536) (xy 87.122096 57.623536) (xy 87.037203 57.41808) (xy 86.943348 57.324061) 753 | (xy 87.17911 57.0883) (xy 88.79332 57.0883) (xy 88.79332 57.175351) 754 | ) 755 | ) 756 | (filled_polygon 757 | (pts 758 | (xy 88.992663 50.571304) (xy 88.25158 50.571304) (xy 88.25331 50.569578) (xy 88.338562 50.36427) (xy 88.338756 50.141966) 759 | (xy 88.338756 50.104626) (xy 88.616545 50.382415) (xy 88.859635 50.544843) (xy 88.992663 50.571304) 760 | ) 761 | ) 762 | (filled_polygon 763 | (pts 764 | (xy 89.202169 44.761839) (xy 88.87763 44.4373) (xy 89.049824 44.4373) (xy 89.04986 44.52493) (xy 89.202169 44.677239) 765 | (xy 89.202169 44.761839) 766 | ) 767 | ) 768 | (filled_polygon 769 | (pts 770 | (xy 90.488872 61.8756) (xy 90.460616 61.8756) (xy 90.474779 61.841492) (xy 90.488872 61.8756) 771 | ) 772 | ) 773 | (filled_polygon 774 | (pts 775 | (xy 91.23123 53.4035) (xy 90.674862 53.4035) (xy 90.728702 53.27384) (xy 90.728896 53.051536) (xy 90.728896 51.019536) 776 | (xy 90.644003 50.81408) (xy 90.641453 50.811526) (xy 90.9193 50.811526) (xy 90.9193 52.7812) (xy 90.976337 53.067945) 777 | (xy 91.138765 53.311035) (xy 91.23123 53.4035) 778 | ) 779 | ) 780 | (filled_polygon 781 | (pts 782 | (xy 92.493609 45.29328) (xy 92.021771 45.29328) (xy 92.02166 45.02023) (xy 91.869351 44.867921) (xy 91.869351 44.677239) 783 | (xy 91.873459 44.67313) (xy 92.493609 45.29328) 784 | ) 785 | ) 786 | (filled_polygon 787 | (pts 788 | (xy 92.722604 43.402933) (xy 92.477835 43.158165) (xy 92.234745 42.995737) (xy 92.037386 42.95648) (xy 92.315023 42.95648) 789 | (xy 92.545175 43.110263) (xy 92.722604 43.145555) (xy 92.722604 43.402933) 790 | ) 791 | ) 792 | (filled_polygon 793 | (pts 794 | (xy 92.863642 47.415912) (xy 92.765755 47.651651) (xy 91.905984 46.79188) (xy 92.239609 46.79188) (xy 92.863642 47.415912) 795 | ) 796 | ) 797 | (filled_polygon 798 | (pts 799 | (xy 92.863642 52.495912) (xy 92.740219 52.793149) (xy 92.4179 52.47083) (xy 92.4179 52.05017) (xy 92.863642 52.495912) 800 | ) 801 | ) 802 | (filled_polygon 803 | (pts 804 | (xy 92.863642 55.035912) (xy 92.72292 55.374811) (xy 92.722725 55.596925) (xy 92.6864 55.5897) (xy 91.545834 55.5897) 805 | (xy 91.545834 53.718104) (xy 92.863642 55.035912) 806 | ) 807 | ) 808 | (filled_polygon 809 | (pts 810 | (xy 93.518134 61.8756) (xy 93.334648 61.8756) (xy 93.404972 61.828611) (xy 93.518134 61.8756) 811 | ) 812 | ) 813 | (filled_polygon 814 | (pts 815 | (xy 94.8956 44.603556) (xy 94.693133 44.400735) (xy 94.231189 44.20892) (xy 93.731005 44.208483) (xy 93.587463 44.267793) 816 | (xy 93.503066 44.183396) (xy 94.789164 44.183396) (xy 94.8956 44.139417) (xy 94.8956 44.603556) 817 | ) 818 | ) 819 | (filled_polygon 820 | (pts 821 | (xy 94.8956 47.143556) (xy 94.693133 46.940735) (xy 94.376207 46.809136) (xy 94.272579 46.705508) (xy 94.691272 46.532508) 822 | (xy 94.8956 46.328536) (xy 94.8956 47.143556) 823 | ) 824 | ) 825 | (filled_polygon 826 | (pts 827 | (xy 94.8956 49.683556) (xy 94.693133 49.480735) (xy 94.518058 49.408037) (xy 94.509835 49.395731) (xy 94.334165 49.220061) 828 | (xy 94.691272 49.072508) (xy 94.8956 48.868536) (xy 94.8956 49.683556) 829 | ) 830 | ) 831 | (filled_polygon 832 | (pts 833 | (xy 94.8956 52.223556) (xy 94.693133 52.020735) (xy 94.376206 51.889136) (xy 94.272578 51.785508) (xy 94.691272 51.612508) 834 | (xy 94.8956 51.408536) (xy 94.8956 52.223556) 835 | ) 836 | ) 837 | (filled_polygon 838 | (pts 839 | (xy 94.8956 54.763556) (xy 94.693133 54.560735) (xy 94.376206 54.429136) (xy 94.272578 54.325508) (xy 94.691272 54.152508) 840 | (xy 94.8956 53.948536) (xy 94.8956 54.763556) 841 | ) 842 | ) 843 | (filled_polygon 844 | (pts 845 | (xy 94.8956 57.303556) (xy 94.693133 57.100735) (xy 94.376207 56.969136) (xy 94.272579 56.865508) (xy 94.691272 56.692508) 846 | (xy 94.8956 56.488536) (xy 94.8956 57.303556) 847 | ) 848 | ) 849 | (filled_polygon 850 | (pts 851 | (xy 94.8956 59.843556) (xy 94.693133 59.640735) (xy 94.231189 59.44892) (xy 94.005514 59.448722) (xy 94.0054 59.4487) 852 | (xy 94.005286 59.448722) (xy 93.731005 59.448483) (xy 93.268728 59.639492) (xy 92.914735 59.992867) (xy 92.747063 60.396666) 853 | (xy 92.65363 60.4901) (xy 92.430696 60.4901) (xy 92.430696 60.100036) (xy 92.345803 59.89458) (xy 92.188748 59.73725) 854 | (xy 92.12447 59.710559) (xy 92.094163 59.558195) (xy 91.931735 59.315105) (xy 91.931734 59.315104) (xy 91.694096 59.077466) 855 | (xy 91.694096 57.623536) (xy 91.609203 57.41808) (xy 91.452148 57.26075) (xy 91.24684 57.175498) (xy 91.024536 57.175304) 856 | (xy 90.29192 57.175304) (xy 90.29192 57.0883) (xy 92.376029 57.0883) (xy 92.863642 57.575912) (xy 92.72292 57.914811) 857 | (xy 92.722483 58.414995) (xy 92.913492 58.877272) (xy 93.266867 59.231265) (xy 93.728811 59.42308) (xy 94.228995 59.423517) 858 | (xy 94.691272 59.232508) (xy 94.8956 59.028536) (xy 94.8956 59.843556) 859 | ) 860 | ) 861 | (filled_polygon 862 | (pts 863 | (xy 94.8956 61.8756) (xy 94.44177 61.8756) (xy 94.691272 61.772508) (xy 94.8956 61.568536) (xy 94.8956 61.8756) 864 | ) 865 | ) 866 | ) 867 | ) 868 | --------------------------------------------------------------------------------