├── pcb ├── fp-info-cache ├── custom.bck ├── custom.dcm ├── solarcampi-rescue.dcm ├── TerminalBlock_Phoenix.dcm ├── solarcampi.jpg ├── solarcampi.pdf ├── gerber │ ├── gerber.zip │ ├── solarcampi-Edge_Cuts.gm1 │ └── solarcampi-B_SilkS.gbo ├── fab │ ├── solarcampiA.zip │ ├── solarcampi-NPTH.drl │ ├── solarcampi-Edge_Cuts.gm1 │ ├── solarcampi-PTH.drl │ ├── solarcampi-B_SilkS.gbo │ └── solarcampi-B_Paste.gbp ├── TerminalBlock_Phoenix.lib ├── lib │ └── 3d │ │ ├── DG340-3.81-02P-12-00AH.STEP │ │ └── 3rdParty.md ├── fp-lib-table ├── sym-lib-table ├── custom.lib ├── mp1584enbb.lib ├── Fuse_SMD_HASF.kicad_mod ├── solarcampi.pretty │ ├── Fuse_SMD_HASF.kicad_mod │ ├── zweipolige_Anreihklemme.kicad_mod │ ├── TerminalBlock_bornier-2_P5.08mm.kicad_mod │ └── MP1584_buck_module.kicad_mod ├── tps63070-module.lib ├── tps63070-module.pretty │ ├── TPS63070-module-compat.kicad_mod │ └── TPS63070-module-full.kicad_mod ├── solarcampi.pro ├── MP1584_buck_module.kicad_mod ├── solarcampi.net ├── solarcampi-rescue.lib ├── solarcampi-cache.lib └── solarcampi.sch-bak ├── .gitignore ├── firmware ├── eeprom.bin ├── src │ ├── crc.h │ ├── config.h │ ├── util.h │ ├── crc.cpp │ ├── main.h │ ├── eeprom.h │ ├── eeprom.cpp │ ├── Adafruit_INA219.h │ ├── main.cpp │ └── Adafruit_INA219.cpp ├── .gitignore ├── .vscode │ ├── extensions.json │ └── settings.json ├── test │ └── README ├── platformio.ini ├── lib │ └── README ├── include │ └── README └── .travis.yml ├── pidata ├── cmdline.txt ├── fstab ├── config.txt ├── init.sh ├── readSettings.sh └── init_image.sh ├── todo.txt ├── LICENSE ├── README.md └── .github └── workflows └── firmware.yml /pcb/fp-info-cache: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | firmware/.vscode/ 2 | */.vscode/* -------------------------------------------------------------------------------- /pcb/custom.bck: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /pcb/custom.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /pcb/solarcampi-rescue.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /firmware/eeprom.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manawyrm/SolarCamPi/HEAD/firmware/eeprom.bin -------------------------------------------------------------------------------- /pcb/TerminalBlock_Phoenix.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /pcb/solarcampi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manawyrm/SolarCamPi/HEAD/pcb/solarcampi.jpg -------------------------------------------------------------------------------- /pcb/solarcampi.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manawyrm/SolarCamPi/HEAD/pcb/solarcampi.pdf -------------------------------------------------------------------------------- /pcb/gerber/gerber.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manawyrm/SolarCamPi/HEAD/pcb/gerber/gerber.zip -------------------------------------------------------------------------------- /pcb/fab/solarcampiA.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manawyrm/SolarCamPi/HEAD/pcb/fab/solarcampiA.zip -------------------------------------------------------------------------------- /pcb/TerminalBlock_Phoenix.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | #End Library 5 | -------------------------------------------------------------------------------- /firmware/src/crc.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | uint16_t crc16_8(const unsigned char* data, uint8_t len); 6 | -------------------------------------------------------------------------------- /pcb/lib/3d/DG340-3.81-02P-12-00AH.STEP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manawyrm/SolarCamPi/HEAD/pcb/lib/3d/DG340-3.81-02P-12-00AH.STEP -------------------------------------------------------------------------------- /firmware/.gitignore: -------------------------------------------------------------------------------- 1 | .pio 2 | .pioenvs 3 | .piolibdeps 4 | .vscode/.browse.c_cpp.db* 5 | .vscode/c_cpp_properties.json 6 | .vscode/launch.json 7 | .vscode/* 8 | -------------------------------------------------------------------------------- /pcb/lib/3d/3rdParty.md: -------------------------------------------------------------------------------- 1 | TerminalBlock-2pin.step 2 | https://www.3dcontentcentral.com/secure/download-model.aspx?catalogid=171&id=221834 3 | 4 | 5 | SMD-HASF.stp 6 | https://github.com/TobleMiner 7 | -------------------------------------------------------------------------------- /pidata/cmdline.txt: -------------------------------------------------------------------------------- 1 | quiet root=/dev/mmcblk0p2 ro rootwait console=tty1 console=ttyAMA0,115200 selinux=0 plymouth.enable=0 dwc_otg.lpm_enable=0 elevator=noop audit=0 init=/init.sh raid=noautodetect fastboot 2 | -------------------------------------------------------------------------------- /firmware/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "platformio.platformio-ide" 6 | ] 7 | } -------------------------------------------------------------------------------- /pcb/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name solarcampi)(type KiCad)(uri ${KIPRJMOD}/solarcampi.pretty)(options "")(descr "")) 3 | (lib (name tps63070-module)(type KiCad)(uri ${KIPRJMOD}/tps63070-module.pretty)(options "")(descr "")) 4 | ) 5 | -------------------------------------------------------------------------------- /pcb/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name custom)(type Legacy)(uri ${KIPRJMOD}/custom.lib)(options "")(descr "")) 3 | (lib (name solarcampi-rescue)(type Legacy)(uri ${KIPRJMOD}/solarcampi-rescue.lib)(options "")(descr "")) 4 | (lib (name tps63070-module)(type Legacy)(uri ${KIPRJMOD}/tps63070-module.lib)(options "")(descr "")) 5 | ) 6 | -------------------------------------------------------------------------------- /firmware/src/config.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define AVR_SCL 14 // INA220 Software I2C 4 | #define AVR_SDA 15 // INA220 Software I2C 5 | //#define AVR_I2C_PULLUP 20 // INA220 Software I2C 6 | #define INA_3V3 16 // INA220 Power 7 | 8 | #define AVR_PWR_EN 7 // MOSFET to enable RPi supply rail 9 | #define RPI_SHDN 2 // Shutdown signalling from RPi 10 | #define LED 5 11 | -------------------------------------------------------------------------------- /firmware/src/util.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #define BIT(x) (1<<(x)) 3 | 4 | #define ARRAY_LEN(arr) (sizeof(arr) / sizeof(*arr)) 5 | 6 | #define ATOMIC_BEGIN do { cli(); 7 | #define ATOMIC_END sei(); } while(0); 8 | 9 | #ifndef NULL 10 | #define NULL ((void*)0U) 11 | #endif 12 | 13 | #define CLAMPH(x, max) (((x) > (max) ? (max) : (x))) 14 | 15 | #define ABS(x) ((x) < 0 ? -(x) : (x)) 16 | -------------------------------------------------------------------------------- /pidata/fstab: -------------------------------------------------------------------------------- 1 | # Static information about the filesystems. 2 | # See fstab(5) for details. 3 | 4 | # 5 | # /dev/mmcblk0p1 /boot vfat defaults 0 0 6 | tmpfs /var/log tmpfs nodev,nosuid 0 0 7 | tmpfs /var/tmp tmpfs nodev,nosuid 0 0 8 | tmpfs /tmp tmpfs nodev,nosuid 0 0 9 | tmpfs /var/run tmpfs nodev,nosuid 0 0 10 | 11 | -------------------------------------------------------------------------------- /firmware/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "terminal.integrated.env.linux": { 3 | "PATH": "/home/tobias/.platformio/penv/bin:/home/tobias/.platformio/penv:/usr/local/sbin:/usr/local/bin:/usr/bin:/home/tobias/Entwicklung/android-studio/sdk/platform-tools:/opt/android-sdk/platform-tools/:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl", 4 | "PLATFORMIO_CALLER": "vscode" 5 | } 6 | } -------------------------------------------------------------------------------- /pcb/fab/solarcampi-NPTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 5.1.2} date Fr 31 Mai 2019 13:26:38 CEST 3 | ; FORMAT={-:-/ absolute / metric / decimal} 4 | ; #@! TF.CreationDate,2019-05-31T13:26:38+02:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.2 6 | ; #@! TF.FileFunction,NonPlated,1,2,NPTH 7 | FMAT,2 8 | METRIC 9 | T1C2.750 10 | % 11 | G90 12 | G05 13 | T1 14 | X53.5Y-52.5 15 | X111.6Y-75.6 16 | X111.6Y-52.5 17 | X53.6Y-75.5 18 | T0 19 | M30 20 | -------------------------------------------------------------------------------- /pidata/config.txt: -------------------------------------------------------------------------------- 1 | # See /boot/overlays/README for all available options 2 | 3 | gpu_mem=128 4 | start_file=start_x.elf 5 | fixup_file=fixup_x.dat 6 | disable_camera_led=1 7 | 8 | #initramfs initramfs-linux.img followkernel 9 | 10 | dtoverlay=pi3-disable-bt 11 | dtparam=audio=off 12 | dtparam=act_led_trigger=none 13 | dtparam=act_led_activelow=on 14 | 15 | disable_splash=1 16 | boot_delay=0 17 | 18 | #force_turbo=1 19 | #dtoverlay=sdtweak,overclock_50=100 20 | 21 | 22 | -------------------------------------------------------------------------------- /firmware/src/crc.cpp: -------------------------------------------------------------------------------- 1 | #include "crc.h" 2 | 3 | // Shamelessly stolen fron Stackoverflow (https://stackoverflow.com/questions/10564491/function-to-calculate-a-crc16-checksum) 4 | 5 | uint16_t crc16_8(const unsigned char* data, uint8_t len) { 6 | uint8_t x; 7 | uint16_t crc = 0xFFFF; 8 | 9 | while (len--) { 10 | x = crc >> 8 ^ *data++; 11 | x ^= x>>4; 12 | crc = (crc << 8) ^ ((uint16_t)(x << 12)) ^ ((uint16_t)(x <<5)) ^ ((uint16_t)x); 13 | } 14 | return crc; 15 | } 16 | -------------------------------------------------------------------------------- /firmware/src/main.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "eeprom.h" 5 | 6 | void handleI2CReceive(volatile int numBytes); 7 | void handleI2CRequest(); 8 | void sleep(uint16_t sleepTime); 9 | void shutdownSignaled(); 10 | void setINAState(bool state); 11 | void debug_print_state_change(); 12 | void debug_print_state_name(uint8_t _state); 13 | void debug_print_registers(); 14 | 15 | enum states { 16 | STATE_ACTIVE, 17 | STATE_SLEEP, 18 | STATE_UNDERVOLTAGE 19 | }; 20 | -------------------------------------------------------------------------------- /pcb/custom.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # MP1584ENBB 5 | # 6 | DEF MP1584ENBB U 0 40 Y Y 1 F N 7 | F0 "U" 0 0 60 H V C CNN 8 | F1 "MP1584ENBB" 300 500 60 H V C CNN 9 | F2 "" 0 0 60 H I C CNN 10 | F3 "" 0 0 60 H I C CNN 11 | DRAW 12 | S -100 400 700 100 0 1 0 f 13 | X VIN 1 -300 350 200 R 50 50 1 1 W 14 | X VINGND 2 -300 150 200 R 50 50 1 1 W 15 | X VOUTGND 3 900 150 200 L 50 50 1 1 w 16 | X VOUT 4 900 350 200 L 50 50 1 1 w 17 | ENDDRAW 18 | ENDDEF 19 | # 20 | #End Library 21 | -------------------------------------------------------------------------------- /pcb/mp1584enbb.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 2 | #encoding utf-8 3 | # 4 | # MP1584ENBB 5 | # 6 | DEF MP1584ENBB U 0 40 Y Y 1 F N 7 | F0 "U" 0 0 60 H V C CNN 8 | F1 "MP1584ENBB" 300 500 60 H V C CNN 9 | F2 "" 0 0 60 H I C CNN 10 | F3 "" 0 0 60 H I C CNN 11 | DRAW 12 | S -100 400 700 100 0 1 0 f 13 | X VIN 1 -300 350 200 R 50 50 1 1 W 14 | X VINGND 2 -300 150 200 R 50 50 1 1 W 15 | X VOUTGND 3 900 150 200 L 50 50 1 1 W 16 | X VOUT 4 900 350 200 L 50 50 1 1 W 17 | ENDDRAW 18 | ENDDEF 19 | # 20 | #End Library 21 | -------------------------------------------------------------------------------- /firmware/test/README: -------------------------------------------------------------------------------- 1 | 2 | This directory is intended for PIO Unit Testing and project tests. 3 | 4 | Unit Testing is a software testing method by which individual units of 5 | source code, sets of one or more MCU program modules together with associated 6 | control data, usage procedures, and operating procedures, are tested to 7 | determine whether they are fit for use. Unit testing finds problems early 8 | in the development cycle. 9 | 10 | More information about PIO Unit Testing: 11 | - https://docs.platformio.org/page/plus/unit-testing.html 12 | -------------------------------------------------------------------------------- /pidata/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | /opt/vc/bin/tvservice -o 3 | 4 | #/init_image.sh& 5 | 6 | mount -t sysfs none /sys 7 | mount -t proc proc /proc 8 | mount -a 9 | 10 | modprobe brcmfmac 11 | modprobe brcmutil 12 | modprobe ip_tables 13 | modprobe x_tables 14 | modprobe cfg80211 15 | modprobe ipv6 16 | 17 | ip link set wlan0 up 18 | ip addr add 10.4.100.1/16 dev wlan0 19 | ip route add default via 10.4.0.1 20 | 21 | wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf & 22 | 23 | #exec /sbin/init 24 | #/bin/bash 25 | exec /init_image.sh 26 | -------------------------------------------------------------------------------- /todo.txt: -------------------------------------------------------------------------------- 1 | Rev B Errata: 2 | SMD N-channel mosfet footprint is wrong, drain & source flipped 3 | AVR UART header reset circuitry wrong 4 | AVR UART header RX/TX flipped 5 | Electrolytic caps on input against MLCC ringing missing 6 | Test points/header for INA shunt 7 | 8 | Rev A Errata: 9 | no test points for voltages ✓ 10 | no AVR UART header / test points ✓ 11 | missing debug/power LED 12 | bad TPS LDO placement causes EMI issues ✓ 13 | bad MOSFET choice (Vgs max 12V) ✓ 14 | bad SMPS choice (unstable, latchup issue and high inrush currents) 15 | jumper for raspi enable ✓ 16 | optional: crowbar circuit to protect RPi ✓ 17 | optional: reverse polarity protection on input ✓ 18 | 19 | -------------------------------------------------------------------------------- /firmware/platformio.ini: -------------------------------------------------------------------------------- 1 | ; PlatformIO Project Configuration File 2 | ; 3 | ; Build options: build flags, source filter 4 | ; Upload options: custom upload port, speed and extra flags 5 | ; Library options: dependencies, extra library storages 6 | ; Advanced options: extra scripting 7 | ; 8 | ; Please visit documentation for the other options and examples 9 | ; https://docs.platformio.org/page/projectconf.html 10 | 11 | [env:arduino] 12 | platform = atmelavr 13 | board = pro8MHzatmega328 14 | framework = arduino 15 | upload_port = /dev/ttyUSB1 16 | 17 | ; WARNING! 328p and 328pb are very different. Make sure to get the correct one. 18 | board_build.mcu = atmega328p 19 | 20 | ; change MCU frequency 21 | board_build.f_cpu = 8000000L 22 | 23 | upload_protocol = stk500v2 24 | 25 | lib_deps = 26 | SoftWire 27 | AsyncDelay 28 | Low-Power 29 | Wire -------------------------------------------------------------------------------- /pcb/Fuse_SMD_HASF.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Fuse_SMD_HASF (layer F.Cu) (tedit 5CD2189C) 2 | (fp_text reference REF** (at 0.5 3) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value Fuse_SMD_HASF (at 0 -3) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -1.25 -2) (end 1.25 -2) (layer F.SilkS) (width 0.12)) 9 | (fp_line (start -1.25 2) (end 1.25 2) (layer F.SilkS) (width 0.12)) 10 | (fp_line (start -6 2.6) (end -6 -2.6) (layer F.CrtYd) (width 0.12)) 11 | (fp_line (start -6 -2.6) (end 6 -2.6) (layer F.CrtYd) (width 0.12)) 12 | (fp_line (start 6 -2.6) (end 6 2.6) (layer F.CrtYd) (width 0.12)) 13 | (fp_line (start 6 2.6) (end -6 2.6) (layer F.CrtYd) (width 0.12)) 14 | (pad 1 smd rect (at -3.685 0) (size 4.24 3.81) (layers F.Cu F.Paste F.Mask)) 15 | (pad 2 smd rect (at 3.685 0) (size 4.24 3.81) (layers F.Cu F.Paste F.Mask)) 16 | ) 17 | -------------------------------------------------------------------------------- /firmware/src/eeprom.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "main.h" 5 | 6 | struct eeprom_log_data 7 | { 8 | uint16_t voltage; 9 | uint16_t sleepIntervalFast; 10 | uint16_t sleepIntervalSlow; 11 | uint16_t sleepIntervalSlowVoltage; 12 | uint16_t undervoltageLockout; 13 | uint16_t undervoltageHysteresis; 14 | uint8_t disableTimeout; 15 | uint16_t timeout; 16 | int16_t current; 17 | uint32_t lastTimestamp; 18 | }; 19 | 20 | 21 | struct eeprom_log_data_priv { 22 | uint8_t serial; 23 | struct eeprom_log_data data; 24 | }; 25 | 26 | struct eeprom_log_block { 27 | struct eeprom_log_data_priv data; 28 | // Writing the data block can not be an atomic 29 | // operation, crc ensures integrity 30 | uint16_t crc; 31 | }; 32 | 33 | #define EEPROM_SIZE 1024 34 | 35 | void eeprom_init(); 36 | uint8_t eeprom_find_log_block(); 37 | uint8_t eeprom_busy(); 38 | void eeprom_write_log_block(); 39 | 40 | extern struct eeprom_log_data log_data; 41 | -------------------------------------------------------------------------------- /pcb/solarcampi.pretty/Fuse_SMD_HASF.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Fuse_SMD_HASF (layer F.Cu) (tedit 5CF10185) 2 | (fp_text reference REF** (at 0.5 3) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value Fuse_SMD_HASF (at 0 -3) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start 6 2.6) (end -6 2.6) (layer F.CrtYd) (width 0.12)) 9 | (fp_line (start 6 -2.6) (end 6 2.6) (layer F.CrtYd) (width 0.12)) 10 | (fp_line (start -6 -2.6) (end 6 -2.6) (layer F.CrtYd) (width 0.12)) 11 | (fp_line (start -6 2.6) (end -6 -2.6) (layer F.CrtYd) (width 0.12)) 12 | (fp_line (start -1.25 2) (end 1.25 2) (layer F.SilkS) (width 0.12)) 13 | (fp_line (start -1.25 -2) (end 1.25 -2) (layer F.SilkS) (width 0.12)) 14 | (pad 2 smd rect (at 3.685 0) (size 4.24 3.81) (layers F.Cu F.Paste F.Mask)) 15 | (pad 1 smd rect (at -3.685 0) (size 4.24 3.81) (layers F.Cu F.Paste F.Mask)) 16 | (model ${KIPRJMOD}/lib/3d/SMD-HASF.stp 17 | (offset (xyz -4.7 -2.55 0)) 18 | (scale (xyz 1 1 1)) 19 | (rotate (xyz 0 0 0)) 20 | ) 21 | ) 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Tobias Mädel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SolarCamPi 2 | 3 | __Detailed information at https://tbspace.de/solarcampi.html__ 4 | 5 | BOM (PCB-RevC): 6 | https://tbspace.de/content/downloads/ibom_solarcampi_revc.html 7 | 8 | Firmware (PCB-RevB/RevC): 9 | https://github.com/Manawyrm/SolarCamPi/tree/master/firmware 10 | 11 | Schematic (PCB-RevC): 12 | https://github.com/Manawyrm/SolarCamPi/blob/master/pcb/solarcampi.pdf 13 | 14 | Raspberry Pi can flash the AVR, using [avrdude with LinuxSPI support](https://github.com/kcuzner/avrdude) and _inverted_ GPIO 17 as reset. 15 | 16 | avrdude.conf configuration entry: 17 | ``` 18 | programmer 19 | id = "linuxspi"; 20 | desc = "Use Linux SPI device in /dev/spidev*"; 21 | type = "linuxspi"; 22 | reset = ~ 17; 23 | baudrate = 40000; 24 | ; 25 | ``` 26 | 27 | avrdude Usage to flash firmware: 28 | `avrdude -p m328p -P /dev/spidev0.0 -c linuxspi -U flash:w:firmware.hex` 29 | 30 | avrdude Usage to set fuses: 31 | `avrdude -p m328p -P /dev/spidev0.0 -c linuxspi -U lfuse:w:0xe2:m -U hfuse:w:0xd9:m -U efuse:w:0xfd:m` 32 | 33 | ![Revision B PCB](https://tbspace.de/content/images/solarcampi2/IMG_6061.JPG) 34 | -------------------------------------------------------------------------------- /pidata/readSettings.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Voltage: " 4 | echo $(((`i2cget -y 1 0x08 1 c` << 8) + `i2cget -y 1 0x08 0 c`)) 5 | 6 | echo "Sleep-Interval (seconds) - high supply voltage:" 7 | echo $(((`i2cget -y 1 0x08 3 c` << 8) + `i2cget -y 1 0x08 2 c`)) 8 | 9 | echo "Sleep-Interval (seconds) - low supply voltage:" 10 | echo $(((`i2cget -y 1 0x08 5 c` << 8) + `i2cget -y 1 0x08 4 c`)) 11 | 12 | echo "Low supply voltage threshold (mV):" 13 | echo $(((`i2cget -y 1 0x08 7 c` << 8) + `i2cget -y 1 0x08 6 c`)) 14 | 15 | echo "Undervoltage Lockout (mV):" 16 | echo $(((`i2cget -y 1 0x08 9 c` << 8) + `i2cget -y 1 0x08 8 c`)) 17 | 18 | echo "Undervoltage Hysteresis (mV):" 19 | echo $(((`i2cget -y 1 0x08 11 c` << 8) + `i2cget -y 1 0x08 10 c`)) 20 | 21 | echo "Disable Timeout flag: " 22 | echo `i2cget -y 1 0x08 12 c` 23 | 24 | echo "Timeout: " 25 | echo $(((`i2cget -y 1 0x08 14 c` << 8) + `i2cget -y 1 0x08 13 c`)) 26 | 27 | echo "Current (mA): " 28 | RAWCURRENT=$(((`i2cget -y 1 0x08 16 c` << 8) + `i2cget -y 1 0x08 15 c`)) 29 | 30 | if [ "$RAWCURRENT" -gt "32767" ] 31 | then 32 | CURRENT=$(($RAWCURRENT-65536)) 33 | else 34 | CURRENT=$RAWCURRENT 35 | fi 36 | echo $CURRENT 37 | -------------------------------------------------------------------------------- /firmware/lib/README: -------------------------------------------------------------------------------- 1 | 2 | This directory is intended for project specific (private) libraries. 3 | PlatformIO will compile them to static libraries and link into executable file. 4 | 5 | The source code of each library should be placed in a an own separate directory 6 | ("lib/your_library_name/[here are source files]"). 7 | 8 | For example, see a structure of the following two libraries `Foo` and `Bar`: 9 | 10 | |--lib 11 | | | 12 | | |--Bar 13 | | | |--docs 14 | | | |--examples 15 | | | |--src 16 | | | |- Bar.c 17 | | | |- Bar.h 18 | | | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html 19 | | | 20 | | |--Foo 21 | | | |- Foo.c 22 | | | |- Foo.h 23 | | | 24 | | |- README --> THIS FILE 25 | | 26 | |- platformio.ini 27 | |--src 28 | |- main.c 29 | 30 | and a contents of `src/main.c`: 31 | ``` 32 | #include 33 | #include 34 | 35 | int main (void) 36 | { 37 | ... 38 | } 39 | 40 | ``` 41 | 42 | PlatformIO Library Dependency Finder will find automatically dependent 43 | libraries scanning project source files. 44 | 45 | More information about PlatformIO Library Dependency Finder 46 | - https://docs.platformio.org/page/librarymanager/ldf.html 47 | -------------------------------------------------------------------------------- /pidata/init_image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Starting image capture" > /dev/ttyAMA0 4 | i2cget -y 1 0x08 0 c 5 | 6 | time /opt/vc/bin/raspistill -o /tmp/cam.jpg 7 | 8 | while ! ping -c 1 -W 1 10.4.0.1; do 9 | echo "Waiting for 10.4.0.1 - network interface might be down..." 10 | sleep 1 11 | done 12 | 13 | rngd -o /dev/random -r /dev/urandom 14 | 15 | #VOLTAGE="`cat /sys/bus/i2c/devices/1-0040/iio\:device0/in_voltage1_raw`" 16 | VOLTAGE="unknown" 17 | VOLTAGE=$(((`i2cget -y 1 0x08 1 c` << 8) + `i2cget -y 1 0x08 0 c`)) 18 | 19 | CURRENT="unknown" 20 | RAWCURRENT=$(((`i2cget -y 1 0x08 16 c` << 8) + `i2cget -y 1 0x08 15 c`)) 21 | 22 | if [ "$RAWCURRENT" -gt "32767" ] 23 | then 24 | CURRENT=$(($RAWCURRENT-65536)) 25 | else 26 | CURRENT=$RAWCURRENT 27 | fi 28 | 29 | 30 | /usr/bin/curl -k -F "voltage=$VOLTAGE" -F "current=$CURRENT" -F "key=" -F "image=@/tmp/cam.jpg" http://otaunsafe.tbspace.de/raspicam/upload.php | grep "startinit" 31 | 32 | if [ $? == 0 ]; then 33 | # exec /bin/bash 34 | i2cset -y 1 0x08 12 1 b #disable timeout 35 | exec /sbin/init 36 | else 37 | echo "4" > /sys/class/gpio/export 38 | echo "out" > /sys/class/gpio/gpio4/direction 39 | echo "0" > /sys/class/gpio/gpio4/value 40 | # halt -f -p 41 | fi 42 | -------------------------------------------------------------------------------- /.github/workflows/firmware.yml: -------------------------------------------------------------------------------- 1 | name: Firmware CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v2 12 | - name: Cache pip 13 | uses: actions/cache@v2 14 | with: 15 | path: ~/.cache/pip 16 | key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} 17 | restore-keys: | 18 | ${{ runner.os }}-pip- 19 | - name: Cache PlatformIO 20 | uses: actions/cache@v2 21 | with: 22 | path: ~/.platformio 23 | key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} 24 | - name: Set up Python 25 | uses: actions/setup-python@v2 26 | - name: Install PlatformIO 27 | run: | 28 | python -m pip install --upgrade pip 29 | pip install --upgrade platformio 30 | - name: Run PlatformIO 31 | run: pio run 32 | working-directory: firmware 33 | - name: Upload firmware 34 | uses: actions/upload-artifact@v2-preview 35 | with: 36 | name: firmware.hex 37 | path: firmware/.pio/build/arduino/firmware.hex 38 | 39 | - name: Release build artifacts 40 | uses: softprops/action-gh-release@v1 41 | if: startsWith(github.ref, 'refs/tags/') 42 | with: 43 | files: | 44 | firmware/.pio/build/arduino/firmware.hex 45 | env: 46 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 47 | 48 | -------------------------------------------------------------------------------- /pcb/fab/solarcampi-Edge_Cuts.gm1: -------------------------------------------------------------------------------- 1 | G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.2* 2 | G04 #@! TF.CreationDate,2019-05-31T13:26:26+02:00* 3 | G04 #@! TF.ProjectId,solarcampi,736f6c61-7263-4616-9d70-692e6b696361,1.0.8* 4 | G04 #@! TF.SameCoordinates,Original* 5 | G04 #@! TF.FileFunction,Profile,NP* 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW 5.1.2) date 2019-05-31 13:26:26* 9 | %MOMM*% 10 | %LPD*% 11 | G04 APERTURE LIST* 12 | %ADD10C,0.050000*% 13 | G04 APERTURE END LIST* 14 | D10* 15 | X53000000Y-49000000D02* 16 | X112000000Y-49000000D01* 17 | X112000000Y-49000000D02* 18 | G75* 19 | G02X115000000Y-52000000I0J-3000000D01* 20 | G01* 21 | X115000000Y-52000000D02* 22 | X115000000Y-76000000D01* 23 | X115000000Y-76000000D02* 24 | G75* 25 | G02X112000000Y-79000000I-3000000J0D01* 26 | G01* 27 | X112000000Y-79000000D02* 28 | X53000000Y-79000000D01* 29 | X112870328Y-75500000D02* 30 | G75* 31 | G03X112870328Y-75500000I-1370328J0D01* 32 | G01* 33 | X112870328Y-52500000D02* 34 | G75* 35 | G03X112870328Y-52500000I-1370328J0D01* 36 | G01* 37 | X54870328Y-75500000D02* 38 | G75* 39 | G03X54870328Y-75500000I-1370328J0D01* 40 | G01* 41 | X54870328Y-52500000D02* 42 | G75* 43 | G03X54870328Y-52500000I-1370328J0D01* 44 | G01* 45 | X53000000Y-79000000D02* 46 | G75* 47 | G02X50000000Y-76000000I0J3000000D01* 48 | G01* 49 | X50000000Y-52000000D02* 50 | G75* 51 | G02X53000000Y-49000000I3000000J0D01* 52 | G01* 53 | X50000000Y-76000000D02* 54 | X50000000Y-52000000D01* 55 | M02* 56 | -------------------------------------------------------------------------------- /pcb/gerber/solarcampi-Edge_Cuts.gm1: -------------------------------------------------------------------------------- 1 | G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.2* 2 | G04 #@! TF.CreationDate,2019-07-27T17:59:41+02:00* 3 | G04 #@! TF.ProjectId,solarcampi,736f6c61-7263-4616-9d70-692e6b696361,C* 4 | G04 #@! TF.SameCoordinates,Original* 5 | G04 #@! TF.FileFunction,Profile,NP* 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW 5.1.2) date 2019-07-27 17:59:41* 9 | %MOMM*% 10 | %LPD*% 11 | G04 APERTURE LIST* 12 | %ADD10C,0.050000*% 13 | G04 APERTURE END LIST* 14 | D10* 15 | X53000000Y-49000000D02* 16 | X112000000Y-49000000D01* 17 | X112000000Y-49000000D02* 18 | G75* 19 | G02X115000000Y-52000000I0J-3000000D01* 20 | G01* 21 | X115000000Y-52000000D02* 22 | X115000000Y-76000000D01* 23 | X115000000Y-76000000D02* 24 | G75* 25 | G02X112000000Y-79000000I-3000000J0D01* 26 | G01* 27 | X112000000Y-79000000D02* 28 | X53000000Y-79000000D01* 29 | X112870328Y-75500000D02* 30 | G75* 31 | G03X112870328Y-75500000I-1370328J0D01* 32 | G01* 33 | X112870328Y-52500000D02* 34 | G75* 35 | G03X112870328Y-52500000I-1370328J0D01* 36 | G01* 37 | X54870328Y-75500000D02* 38 | G75* 39 | G03X54870328Y-75500000I-1370328J0D01* 40 | G01* 41 | X54870328Y-52500000D02* 42 | G75* 43 | G03X54870328Y-52500000I-1370328J0D01* 44 | G01* 45 | X53000000Y-79000000D02* 46 | G75* 47 | G02X50000000Y-76000000I0J3000000D01* 48 | G01* 49 | X50000000Y-52000000D02* 50 | G75* 51 | G02X53000000Y-49000000I3000000J0D01* 52 | G01* 53 | X50000000Y-76000000D02* 54 | X50000000Y-52000000D01* 55 | M02* 56 | -------------------------------------------------------------------------------- /firmware/include/README: -------------------------------------------------------------------------------- 1 | 2 | This directory is intended for project header files. 3 | 4 | A header file is a file containing C declarations and macro definitions 5 | to be shared between several project source files. You request the use of a 6 | header file in your project source file (C, C++, etc) located in `src` folder 7 | by including it, with the C preprocessing directive `#include'. 8 | 9 | ```src/main.c 10 | 11 | #include "header.h" 12 | 13 | int main (void) 14 | { 15 | ... 16 | } 17 | ``` 18 | 19 | Including a header file produces the same results as copying the header file 20 | into each source file that needs it. Such copying would be time-consuming 21 | and error-prone. With a header file, the related declarations appear 22 | in only one place. If they need to be changed, they can be changed in one 23 | place, and programs that include the header file will automatically use the 24 | new version when next recompiled. The header file eliminates the labor of 25 | finding and changing all the copies as well as the risk that a failure to 26 | find one copy will result in inconsistencies within a program. 27 | 28 | In C, the usual convention is to give header files names that end with `.h'. 29 | It is most portable to use only letters, digits, dashes, and underscores in 30 | header file names, and at most one dot. 31 | 32 | Read more about using header files in official GCC documentation: 33 | 34 | * Include Syntax 35 | * Include Operation 36 | * Once-Only Headers 37 | * Computed Includes 38 | 39 | https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html 40 | -------------------------------------------------------------------------------- /pcb/tps63070-module.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # TPS63070-module 5 | # 6 | DEF TPS63070-module U 0 40 Y Y 1 F N 7 | F0 "U" -250 250 50 H V C CNN 8 | F1 "TPS63070-module" 400 250 50 H V C CNN 9 | F2 "" -50 350 50 H I C CNN 10 | F3 "" -50 350 50 H I C CNN 11 | DRAW 12 | S -300 200 300 -200 0 1 0 f 13 | X VIN 1 -400 100 100 R 50 50 1 1 W 14 | X GND 2 -400 -100 100 R 50 50 1 1 W 15 | X VOUT 3 400 100 100 L 50 50 1 1 w 16 | X GND 4 400 -100 100 L 50 50 1 1 w 17 | ENDDRAW 18 | ENDDEF 19 | # 20 | # TPS63070-module-compat 21 | # 22 | DEF TPS63070-module-compat U 0 40 Y Y 1 F N 23 | F0 "U" -250 250 50 H V C CNN 24 | F1 "TPS63070-module-compat" 400 250 50 H V C CNN 25 | F2 "tps63070-module:TPS63070-module-compat" -50 350 50 H I C CNN 26 | F3 "" -50 350 50 H I C CNN 27 | DRAW 28 | S -300 200 300 -200 0 1 0 f 29 | X VIN 1 -400 100 100 R 50 50 1 1 W 30 | X GND 2 -400 -100 100 R 50 50 1 1 W 31 | X VOUT 3 400 100 100 L 50 50 1 1 w 32 | X GND 4 400 -100 100 L 50 50 1 1 w 33 | ENDDRAW 34 | ENDDEF 35 | # 36 | # TPS63070-module-full 37 | # 38 | DEF TPS63070-module-full U 0 40 Y Y 1 F N 39 | F0 "U" 0 650 50 H V C CNN 40 | F1 "TPS63070-module-full" 0 650 50 H V C CNN 41 | F2 "tps63070-module:TPS63070-module-full" 0 650 50 H I C CNN 42 | F3 "" 0 650 50 H I C CNN 43 | DRAW 44 | S -300 500 300 -450 1 1 0 f 45 | X VIN 1 -400 350 100 R 50 50 1 1 W 46 | X GND 2 -100 -550 100 U 50 50 1 1 W 47 | X VOUT 3 400 350 100 L 50 50 1 1 w 48 | X GND 4 100 -550 100 U 50 50 1 1 w 49 | X PGOOD 5 400 0 100 L 50 50 1 1 C 50 | X PS/SYNC 6 -400 150 100 R 50 50 1 1 I 51 | X EN 7 -400 0 100 R 50 50 1 1 I 52 | X VSEL 8 -400 -150 100 R 50 50 1 1 I 53 | ENDDRAW 54 | ENDDEF 55 | # 56 | #End Library 57 | -------------------------------------------------------------------------------- /firmware/.travis.yml: -------------------------------------------------------------------------------- 1 | # Continuous Integration (CI) is the practice, in software 2 | # engineering, of merging all developer working copies with a shared mainline 3 | # several times a day < https://docs.platformio.org/page/ci/index.html > 4 | # 5 | # Documentation: 6 | # 7 | # * Travis CI Embedded Builds with PlatformIO 8 | # < https://docs.travis-ci.com/user/integration/platformio/ > 9 | # 10 | # * PlatformIO integration with Travis CI 11 | # < https://docs.platformio.org/page/ci/travis.html > 12 | # 13 | # * User Guide for `platformio ci` command 14 | # < https://docs.platformio.org/page/userguide/cmd_ci.html > 15 | # 16 | # 17 | # Please choose one of the following templates (proposed below) and uncomment 18 | # it (remove "# " before each line) or use own configuration according to the 19 | # Travis CI documentation (see above). 20 | # 21 | 22 | 23 | # 24 | # Template #1: General project. Test it using existing `platformio.ini`. 25 | # 26 | 27 | # language: python 28 | # python: 29 | # - "2.7" 30 | # 31 | # sudo: false 32 | # cache: 33 | # directories: 34 | # - "~/.platformio" 35 | # 36 | # install: 37 | # - pip install -U platformio 38 | # - platformio update 39 | # 40 | # script: 41 | # - platformio run 42 | 43 | 44 | # 45 | # Template #2: The project is intended to be used as a library with examples. 46 | # 47 | 48 | # language: python 49 | # python: 50 | # - "2.7" 51 | # 52 | # sudo: false 53 | # cache: 54 | # directories: 55 | # - "~/.platformio" 56 | # 57 | # env: 58 | # - PLATFORMIO_CI_SRC=path/to/test/file.c 59 | # - PLATFORMIO_CI_SRC=examples/file.ino 60 | # - PLATFORMIO_CI_SRC=path/to/test/directory 61 | # 62 | # install: 63 | # - pip install -U platformio 64 | # - platformio update 65 | # 66 | # script: 67 | # - platformio ci --lib="." --board=ID_1 --board=ID_2 --board=ID_N 68 | -------------------------------------------------------------------------------- /pcb/solarcampi.pretty/zweipolige_Anreihklemme.kicad_mod: -------------------------------------------------------------------------------- 1 | (module zweipolige_Anreihklemme (layer F.Cu) (tedit 5CF104F4) 2 | (fp_text reference REF** (at 0 -5.08) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value zweipolige_Anreihklemme (at 2.54 5.08) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -2.41 2.55) (end 7.49 2.55) (layer F.Fab) (width 0.1)) 9 | (fp_text user %R (at 0 -2.54) (layer F.Fab) 10 | (effects (font (size 1 1) (thickness 0.15))) 11 | ) 12 | (fp_line (start -2.46 3.75) (end 7.54 3.75) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -2.71 -4) (end 7.79 -4) (layer F.CrtYd) (width 0.05)) 14 | (fp_line (start 7.62 2.54) (end -2.54 2.54) (layer F.SilkS) (width 0.12)) 15 | (fp_line (start 7.54 -3.75) (end -2.46 -3.75) (layer F.Fab) (width 0.1)) 16 | (fp_line (start 7.54 3.75) (end 7.54 -3.75) (layer F.Fab) (width 0.1)) 17 | (fp_line (start 7.62 -3.81) (end -2.54 -3.81) (layer F.SilkS) (width 0.12)) 18 | (fp_line (start -2.71 -4) (end -2.71 4) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 7.79 4) (end 7.79 -4) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -2.54 3.81) (end 7.62 3.81) (layer F.SilkS) (width 0.12)) 21 | (fp_line (start -2.46 -3.75) (end -2.46 3.75) (layer F.Fab) (width 0.1)) 22 | (fp_line (start 7.62 3.81) (end 7.62 -3.81) (layer F.SilkS) (width 0.12)) 23 | (fp_line (start -2.54 -3.81) (end -2.54 3.81) (layer F.SilkS) (width 0.12)) 24 | (fp_line (start 7.79 4) (end -2.71 4) (layer F.CrtYd) (width 0.05)) 25 | (pad 1 thru_hole rect (at 0 0) (size 3 3) (drill 1.52) (layers *.Cu *.Mask)) 26 | (pad 2 thru_hole circle (at 5.08 0) (size 3 3) (drill 1.52) (layers *.Cu *.Mask)) 27 | (model ${KIPRJMOD}/lib/3d/DG340-3.81-02P-12-00AH.STEP 28 | (offset (xyz -2.5 0.5 5)) 29 | (scale (xyz 1.325 1.325 1.325)) 30 | (rotate (xyz -90 0 0)) 31 | ) 32 | ) 33 | -------------------------------------------------------------------------------- /pcb/solarcampi.pretty/TerminalBlock_bornier-2_P5.08mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module TerminalBlock_bornier-2_P5.08mm (layer F.Cu) (tedit 5D3BA50D) 2 | (descr "simple 2-pin terminal block, pitch 5.08mm, revamped version of bornier2") 3 | (tags "terminal block bornier2") 4 | (fp_text reference REF** (at 2.54 -5.08) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value TerminalBlock_bornier-2_P5.08mm (at 2.54 5.08) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_text user %R (at 2.54 0) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | ) 13 | (fp_line (start -2.41 2.55) (end 7.49 2.55) (layer F.Fab) (width 0.1)) 14 | (fp_line (start -2.46 -3.75) (end -2.46 3.75) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -2.46 3.75) (end 7.54 3.75) (layer F.Fab) (width 0.1)) 16 | (fp_line (start 7.54 3.75) (end 7.54 -3.75) (layer F.Fab) (width 0.1)) 17 | (fp_line (start 7.54 -3.75) (end -2.46 -3.75) (layer F.Fab) (width 0.1)) 18 | (fp_line (start 7.62 2.54) (end -2.54 2.54) (layer F.SilkS) (width 0.12)) 19 | (fp_line (start 7.62 3.81) (end 7.62 -3.81) (layer F.SilkS) (width 0.12)) 20 | (fp_line (start 7.62 -3.81) (end -2.54 -3.81) (layer F.SilkS) (width 0.12)) 21 | (fp_line (start -2.54 -3.81) (end -2.54 3.81) (layer F.SilkS) (width 0.12)) 22 | (fp_line (start -2.54 3.81) (end 7.62 3.81) (layer F.SilkS) (width 0.12)) 23 | (fp_line (start -2.71 -4) (end 7.79 -4) (layer F.CrtYd) (width 0.05)) 24 | (fp_line (start -2.71 -4) (end -2.71 4) (layer F.CrtYd) (width 0.05)) 25 | (fp_line (start 7.79 4) (end 7.79 -4) (layer F.CrtYd) (width 0.05)) 26 | (fp_line (start 7.79 4) (end -2.71 4) (layer F.CrtYd) (width 0.05)) 27 | (pad 1 thru_hole rect (at 0 0) (size 3 3) (drill 1.52) (layers *.Cu *.Mask)) 28 | (pad 2 thru_hole circle (at 5.08 0) (size 3 3) (drill 1.52) (layers *.Cu *.Mask)) 29 | (model ${KIPRJMOD}/lib/3d/TerminalBlock-2pin.step 30 | (offset (xyz 7.5 4.6 10)) 31 | (scale (xyz 1 1 1)) 32 | (rotate (xyz -90 0 0)) 33 | ) 34 | ) 35 | -------------------------------------------------------------------------------- /pcb/fab/solarcampi-PTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 5.1.2} date Fr 31 Mai 2019 13:26:38 CEST 3 | ; FORMAT={-:-/ absolute / metric / decimal} 4 | ; #@! TF.CreationDate,2019-05-31T13:26:38+02:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.2 6 | ; #@! TF.FileFunction,Plated,1,2,PTH 7 | FMAT,2 8 | METRIC 9 | T1C0.300 10 | T2C0.700 11 | T3C1.000 12 | T4C1.016 13 | T5C1.520 14 | % 15 | G90 16 | G05 17 | T1 18 | X64.38Y-73.54 19 | X65.44Y-67.0 20 | X71.55Y-56.26 21 | X72.13Y-64.83 22 | X72.67Y-62.85 23 | X74.31Y-66.74 24 | X80.84Y-60.8 25 | X83.35Y-71.99 26 | X84.45Y-61.03 27 | X84.63Y-63.53 28 | X85.29Y-72.01 29 | X86.03Y-61.01 30 | X87.55Y-63.56 31 | X89.09Y-65.935 32 | X89.3Y-60.38 33 | X89.37Y-68.61 34 | X93.69Y-64.92 35 | X97.19Y-68.78 36 | X97.94Y-62.98 37 | X103.42Y-60.71 38 | T2 39 | X73.66Y-57.785 40 | X73.66Y-76.327 41 | X76.2Y-57.785 42 | X76.2Y-76.327 43 | X84.328Y-57.785 44 | X84.328Y-76.327 45 | X86.868Y-57.785 46 | X86.868Y-76.327 47 | T3 48 | X68.834Y-57.912 49 | X68.834Y-60.452 50 | X68.834Y-62.992 51 | X68.834Y-65.532 52 | X68.834Y-68.072 53 | X68.834Y-70.612 54 | X58.4Y-51.26 55 | X58.4Y-53.8 56 | X60.94Y-51.26 57 | X60.94Y-53.8 58 | X63.48Y-51.26 59 | X63.48Y-53.8 60 | X66.02Y-51.26 61 | X66.02Y-53.8 62 | X68.56Y-51.26 63 | X68.56Y-53.8 64 | X71.1Y-51.26 65 | X71.1Y-53.8 66 | X73.64Y-51.26 67 | X73.64Y-53.8 68 | X76.18Y-51.26 69 | X76.18Y-53.8 70 | X78.72Y-51.26 71 | X78.72Y-53.8 72 | X81.26Y-51.26 73 | X81.26Y-53.8 74 | X83.8Y-51.26 75 | X83.8Y-53.8 76 | X86.34Y-51.26 77 | X86.34Y-53.8 78 | X88.88Y-51.26 79 | X88.88Y-53.8 80 | X91.42Y-51.26 81 | X91.42Y-53.8 82 | X93.96Y-51.26 83 | X93.96Y-53.8 84 | X96.5Y-51.26 85 | X96.5Y-53.8 86 | X99.04Y-51.26 87 | X99.04Y-53.8 88 | X101.58Y-51.26 89 | X101.58Y-53.8 90 | X104.12Y-51.26 91 | X104.12Y-53.8 92 | X106.66Y-51.26 93 | X106.66Y-53.8 94 | T4 95 | X96.266Y-72.644 96 | X96.266Y-75.184 97 | X98.806Y-72.644 98 | X98.806Y-75.184 99 | X101.346Y-72.644 100 | X101.346Y-75.184 101 | T5 102 | X54.102Y-59.182 103 | X54.102Y-64.262 104 | T0 105 | M30 106 | -------------------------------------------------------------------------------- /pcb/tps63070-module.pretty/TPS63070-module-compat.kicad_mod: -------------------------------------------------------------------------------- 1 | (module TPS63070-module-compat (layer F.Cu) (tedit 5D12A188) 2 | (fp_text reference REF** (at 0 0) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value TPS63070-module-compat (at -9.3 0 90) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text user GND (at -5.3 -6 90) (layer F.SilkS) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_text user VOUT (at 5.4 -5.6 90) (layer F.SilkS) 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | ) 14 | (fp_text user GND (at -5.3 6 90) (layer F.SilkS) 15 | (effects (font (size 1 1) (thickness 0.15))) 16 | ) 17 | (fp_text user VIN (at 5.4 6.2 90) (layer F.SilkS) 18 | (effects (font (size 1 1) (thickness 0.15))) 19 | ) 20 | (fp_line (start -8.36 -11.05) (end 8.36 -11.05) (layer F.SilkS) (width 0.1)) 21 | (fp_line (start 8.36 -11.05) (end 8.36 11.05) (layer F.SilkS) (width 0.1)) 22 | (fp_line (start 8.38 11.05) (end -8.38 11.05) (layer F.SilkS) (width 0.1)) 23 | (fp_line (start -8.36 11.05) (end -8.36 -11.05) (layer F.SilkS) (width 0.1)) 24 | (fp_line (start -2.2 7.5) (end -2.2 11.1) (layer F.CrtYd) (width 0.05)) 25 | (fp_line (start -8.3 11.1) (end -8.3 7.5) (layer F.CrtYd) (width 0.05)) 26 | (fp_line (start -8.3 7.5) (end -2.2 7.5) (layer F.CrtYd) (width 0.05)) 27 | (fp_line (start -2.2 11.1) (end -8.3 11.1) (layer F.CrtYd) (width 0.05)) 28 | (fp_line (start 2.2 11.1) (end 2.2 7.5) (layer F.CrtYd) (width 0.05)) 29 | (fp_line (start 8.3 11.1) (end 2.2 11.1) (layer F.CrtYd) (width 0.05)) 30 | (fp_line (start 8.3 7.5) (end 8.3 11.1) (layer F.CrtYd) (width 0.05)) 31 | (fp_line (start 2.2 7.5) (end 8.3 7.5) (layer F.CrtYd) (width 0.05)) 32 | (fp_line (start 8.3 -11.1) (end 8.3 -7.5) (layer F.CrtYd) (width 0.05)) 33 | (fp_line (start 2.2 -11.1) (end 8.3 -11.1) (layer F.CrtYd) (width 0.05)) 34 | (fp_line (start 2.2 -7.5) (end 2.2 -11.1) (layer F.CrtYd) (width 0.05)) 35 | (fp_line (start 8.3 -7.5) (end 2.2 -7.5) (layer F.CrtYd) (width 0.05)) 36 | (fp_line (start -2.2 -11.1) (end -2.2 -7.5) (layer F.CrtYd) (width 0.05)) 37 | (fp_line (start -8.3 -11.1) (end -2.2 -11.1) (layer F.CrtYd) (width 0.05)) 38 | (fp_line (start -8.3 -7.5) (end -8.3 -11.1) (layer F.CrtYd) (width 0.05)) 39 | (fp_line (start -2.2 -7.5) (end -8.3 -7.5) (layer F.CrtYd) (width 0.05)) 40 | (pad 1 thru_hole circle (at 4.064 9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 41 | (pad 2 thru_hole circle (at -4.064 9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 42 | (pad 2 thru_hole circle (at -6.604 9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 43 | (pad 1 thru_hole circle (at 6.604 9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 44 | (pad 4 thru_hole circle (at -6.604 -9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 45 | (pad 3 thru_hole circle (at 6.604 -9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 46 | (pad 4 thru_hole circle (at -4.064 -9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 47 | (pad 3 thru_hole circle (at 4.064 -9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 48 | (model ${KIPRJMOD}/models/module-compat.step 49 | (offset (xyz 0 0 3)) 50 | (scale (xyz 1 1 1)) 51 | (rotate (xyz 0 0 0)) 52 | ) 53 | ) 54 | -------------------------------------------------------------------------------- /firmware/src/eeprom.cpp: -------------------------------------------------------------------------------- 1 | #include "eeprom.h" 2 | #include 3 | #include 4 | #include "crc.h" 5 | #include "util.h" 6 | 7 | static uint16_t next_log_entry; 8 | 9 | static unsigned char* write_data; 10 | uint8_t write_len; 11 | uint16_t write_addr; 12 | 13 | #define LOG_ENTRY_LEN (sizeof(struct eeprom_log_block)) 14 | #define LOG_DATA_LEN (sizeof(struct eeprom_log_data_priv)) 15 | #define DEV_DATA_LEN (sizeof(struct eeprom_device_block)) 16 | 17 | #define LOG_ENTRIES CLAMPH(((EEPROM_SIZE) / LOG_ENTRY_LEN), 255) 18 | 19 | EEMEM struct eeprom_log_block logdata[LOG_ENTRIES]; 20 | struct eeprom_log_data log_data; 21 | static struct eeprom_log_block log_block; 22 | 23 | void eeprom_init() { 24 | next_log_entry = 0; 25 | } 26 | 27 | static void inc_log() { 28 | next_log_entry++; 29 | if(next_log_entry >= ARRAY_LEN(logdata)) { 30 | next_log_entry = 0; 31 | } 32 | log_block.data.serial++; 33 | } 34 | 35 | // For some bizarre reason eeprom_read_block reads data backwards... 36 | static void eeprom_read_block_8(void* dst, void* src, uint8_t len) { 37 | while(len--) { 38 | *((unsigned char*)dst++) = eeprom_read_byte(src++); 39 | } 40 | } 41 | 42 | static uint8_t eeprom_read_log_block(struct eeprom_log_block* log, uint8_t entry) { 43 | eeprom_read_block_8(log, &logdata[entry], LOG_ENTRY_LEN); 44 | return log->crc == crc16_8((unsigned char*)&log->data, LOG_DATA_LEN); 45 | } 46 | 47 | uint8_t eeprom_find_log_block() { 48 | struct eeprom_log_block log; 49 | struct eeprom_log_block last_log; 50 | uint8_t entry = 0; 51 | uint8_t found = 0; 52 | if(eeprom_read_log_block(&last_log, ARRAY_LEN(logdata) - 1)) { 53 | found = 1; 54 | log_block = last_log; 55 | log_data = log_block.data.data; 56 | next_log_entry = entry; 57 | inc_log(); 58 | } 59 | while(entry < ARRAY_LEN(logdata)) { 60 | if(eeprom_read_log_block(&log, entry)) { 61 | if(found) { 62 | uint8_t expected_serial = last_log.data.serial; 63 | expected_serial++; 64 | // Sequence break, last log entry is most recent one 65 | if(log.data.serial != expected_serial) { 66 | uint8_t prev_entry = entry; 67 | prev_entry--; 68 | log_block = last_log; 69 | log_data = log_block.data.data; 70 | next_log_entry = prev_entry; 71 | inc_log(); 72 | break; 73 | } 74 | } 75 | log_block = log; 76 | log_data = log_block.data.data; 77 | next_log_entry = entry; 78 | inc_log(); 79 | found = 1; 80 | last_log = log; 81 | } 82 | entry++; 83 | } 84 | return found; 85 | } 86 | 87 | 88 | uint8_t eeprom_busy() { 89 | return write_len != 0; 90 | } 91 | 92 | void eeprom_write_next_byte() { 93 | EEARL = write_addr & 0xFF; 94 | EEARH = (write_addr >> 8); 95 | EEDR = *write_data; 96 | EECR |= BIT(EEMPE) | BIT(EERIE); 97 | EECR |= BIT(EEPE); 98 | } 99 | 100 | void eeprom_write_log_block() { 101 | log_block.data.data = log_data; 102 | write_addr = (uint16_t)&logdata[next_log_entry]; 103 | write_len = LOG_ENTRY_LEN; 104 | write_data = (unsigned char*)&log_block; 105 | log_block.crc = crc16_8((unsigned char*)&log_block.data, LOG_DATA_LEN); 106 | eeprom_write_next_byte(); 107 | } 108 | 109 | ISR(EE_READY_vect) { 110 | write_addr++; 111 | write_data++; 112 | write_len--; 113 | if(write_len) { 114 | // Enqueue next byte 115 | eeprom_write_next_byte(); 116 | } else { 117 | // Transfer finished, disable interrupts and increment serial 118 | EECR &= ~BIT(EERIE); 119 | inc_log(); 120 | } 121 | } -------------------------------------------------------------------------------- /pcb/tps63070-module.pretty/TPS63070-module-full.kicad_mod: -------------------------------------------------------------------------------- 1 | (module TPS63070-module-full (layer F.Cu) (tedit 5D12A2CE) 2 | (fp_text reference REF** (at 0 0) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value TPS63070-module-full (at -9.4 -0.5 90) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text user PGOOD (at 0 -5 270) (layer F.SilkS) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_text user PS (at 1.9 9.4) (layer F.SilkS) 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | ) 14 | (fp_text user EN (at 1.9 6.7) (layer F.SilkS) 15 | (effects (font (size 1 1) (thickness 0.15))) 16 | ) 17 | (fp_text user VSEL (at 2.8 4.2) (layer F.SilkS) 18 | (effects (font (size 1 1) (thickness 0.15))) 19 | ) 20 | (fp_line (start 8.3 7.5) (end 8.3 11.1) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 2.2 7.5) (end 8.3 7.5) (layer F.CrtYd) (width 0.05)) 22 | (fp_line (start -2.2 7.5) (end -2.2 11.1) (layer F.CrtYd) (width 0.05)) 23 | (fp_line (start -8.3 7.5) (end -2.2 7.5) (layer F.CrtYd) (width 0.05)) 24 | (fp_line (start -8.3 11.1) (end -8.3 7.5) (layer F.CrtYd) (width 0.05)) 25 | (fp_line (start -2.2 -11.1) (end -2.2 -7.5) (layer F.CrtYd) (width 0.05)) 26 | (fp_line (start 8.36 -11.05) (end 8.36 11.05) (layer F.SilkS) (width 0.1)) 27 | (fp_line (start -8.36 11.05) (end -8.36 -11.05) (layer F.SilkS) (width 0.1)) 28 | (fp_line (start -8.3 -11.1) (end -2.2 -11.1) (layer F.CrtYd) (width 0.05)) 29 | (fp_line (start 8.3 -11.1) (end 8.3 -7.5) (layer F.CrtYd) (width 0.05)) 30 | (fp_line (start -8.36 -11.05) (end 8.36 -11.05) (layer F.SilkS) (width 0.1)) 31 | (fp_line (start 8.3 11.1) (end 2.2 11.1) (layer F.CrtYd) (width 0.05)) 32 | (fp_line (start 8.38 11.05) (end -8.38 11.05) (layer F.SilkS) (width 0.1)) 33 | (fp_line (start 2.2 11.1) (end 2.2 7.5) (layer F.CrtYd) (width 0.05)) 34 | (fp_line (start 2.2 -7.5) (end 2.2 -11.1) (layer F.CrtYd) (width 0.05)) 35 | (fp_line (start -2.2 11.1) (end -8.3 11.1) (layer F.CrtYd) (width 0.05)) 36 | (fp_line (start 2.2 -11.1) (end 8.3 -11.1) (layer F.CrtYd) (width 0.05)) 37 | (fp_text user GND (at -5.3 -6 90) (layer F.SilkS) 38 | (effects (font (size 1 1) (thickness 0.15))) 39 | ) 40 | (fp_line (start -2.2 -7.5) (end -8.3 -7.5) (layer F.CrtYd) (width 0.05)) 41 | (fp_text user VIN (at 5.4 6.2 90) (layer F.SilkS) 42 | (effects (font (size 1 1) (thickness 0.15))) 43 | ) 44 | (fp_text user VOUT (at 5.4 -5.6 90) (layer F.SilkS) 45 | (effects (font (size 1 1) (thickness 0.15))) 46 | ) 47 | (fp_line (start -8.3 -7.5) (end -8.3 -11.1) (layer F.CrtYd) (width 0.05)) 48 | (fp_line (start 8.3 -7.5) (end 2.2 -7.5) (layer F.CrtYd) (width 0.05)) 49 | (fp_text user GND (at -5.3 6 90) (layer F.SilkS) 50 | (effects (font (size 1 1) (thickness 0.15))) 51 | ) 52 | (fp_line (start -1.8 11.1) (end 1.8 11.1) (layer F.CrtYd) (width 0.05)) 53 | (fp_line (start 1.8 11.1) (end 1.8 2.2) (layer F.CrtYd) (width 0.05)) 54 | (fp_line (start 1.8 2.2) (end -1.8 2.2) (layer F.CrtYd) (width 0.05)) 55 | (fp_line (start -1.8 2.2) (end -1.8 11.1) (layer F.CrtYd) (width 0.05)) 56 | (fp_line (start -1.8 -7.5) (end 1.8 -7.5) (layer F.CrtYd) (width 0.05)) 57 | (fp_line (start 1.8 -7.5) (end 1.8 -11.1) (layer F.CrtYd) (width 0.05)) 58 | (fp_line (start 1.9 -11.1) (end -1.8 -11.1) (layer F.CrtYd) (width 0.05)) 59 | (fp_line (start -1.8 -11.1) (end -1.8 -7.5) (layer F.CrtYd) (width 0.05)) 60 | (pad 5 thru_hole circle (at 0 -9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 61 | (pad 6 thru_hole circle (at 0 9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 62 | (pad 7 thru_hole circle (at 0 6.731) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 63 | (pad 8 thru_hole circle (at 0 4.191) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 64 | (pad 2 thru_hole circle (at -6.604 9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 65 | (pad 1 thru_hole circle (at 4.064 9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 66 | (pad 3 thru_hole circle (at 6.604 -9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 67 | (pad 2 thru_hole circle (at -4.064 9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 68 | (pad 4 thru_hole circle (at -6.604 -9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 69 | (pad 4 thru_hole circle (at -4.064 -9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 70 | (pad 3 thru_hole circle (at 4.064 -9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 71 | (pad 1 thru_hole circle (at 6.604 9.271) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 72 | (model ${KIPRJMOD}/models/module-full.step 73 | (offset (xyz 0 0 3)) 74 | (scale (xyz 1 1 1)) 75 | (rotate (xyz 0 0 0)) 76 | ) 77 | ) 78 | -------------------------------------------------------------------------------- /pcb/solarcampi.pro: -------------------------------------------------------------------------------- 1 | update=Sa 27 Jul 2019 18:00:30 CEST 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetIExt=net 11 | [eeschema] 12 | version=1 13 | LibDir= 14 | [eeschema/libraries] 15 | [pcbnew] 16 | version=1 17 | PageLayoutDescrFile= 18 | LastNetListRead=Raspberry Pi® Zero W.net 19 | CopperLayerCount=2 20 | BoardThickness=1.6 21 | AllowMicroVias=0 22 | AllowBlindVias=0 23 | RequireCourtyardDefinitions=0 24 | ProhibitOverlappingCourtyards=1 25 | MinTrackWidth=0.127 26 | MinViaDiameter=0.6 27 | MinViaDrill=0.3 28 | MinMicroViaDiameter=0.6 29 | MinMicroViaDrill=0.3 30 | MinHoleToHole=0.25 31 | TrackWidth1=0.25 32 | TrackWidth2=0.127 33 | TrackWidth3=0.25 34 | TrackWidth4=0.5 35 | TrackWidth5=1 36 | TrackWidth6=2 37 | TrackWidth7=2.5 38 | TrackWidth8=3 39 | ViaDiameter1=0.6 40 | ViaDrill1=0.3 41 | ViaDiameter2=0.6 42 | ViaDrill2=0.3 43 | dPairWidth1=0.2 44 | dPairGap1=0.25 45 | dPairViaGap1=0.25 46 | dPairWidth2=0.127 47 | dPairGap2=0.127 48 | dPairViaGap2=0 49 | SilkLineWidth=0.12 50 | SilkTextSizeV=1 51 | SilkTextSizeH=1 52 | SilkTextSizeThickness=0.15 53 | SilkTextItalic=0 54 | SilkTextUpright=1 55 | CopperLineWidth=0.2 56 | CopperTextSizeV=1.5 57 | CopperTextSizeH=1.5 58 | CopperTextThickness=0.3 59 | CopperTextItalic=0 60 | CopperTextUpright=1 61 | EdgeCutLineWidth=0.05 62 | CourtyardLineWidth=0.05 63 | OthersLineWidth=0.15 64 | OthersTextSizeV=1 65 | OthersTextSizeH=1 66 | OthersTextSizeThickness=0.15 67 | OthersTextItalic=0 68 | OthersTextUpright=1 69 | SolderMaskClearance=0.051 70 | SolderMaskMinWidth=0.25 71 | SolderPasteClearance=0 72 | SolderPasteRatio=-0 73 | [pcbnew/Layer.F.Cu] 74 | Name=F.Cu 75 | Type=0 76 | Enabled=1 77 | [pcbnew/Layer.In1.Cu] 78 | Name=In1.Cu 79 | Type=0 80 | Enabled=0 81 | [pcbnew/Layer.In2.Cu] 82 | Name=In2.Cu 83 | Type=0 84 | Enabled=0 85 | [pcbnew/Layer.In3.Cu] 86 | Name=In3.Cu 87 | Type=0 88 | Enabled=0 89 | [pcbnew/Layer.In4.Cu] 90 | Name=In4.Cu 91 | Type=0 92 | Enabled=0 93 | [pcbnew/Layer.In5.Cu] 94 | Name=In5.Cu 95 | Type=0 96 | Enabled=0 97 | [pcbnew/Layer.In6.Cu] 98 | Name=In6.Cu 99 | Type=0 100 | Enabled=0 101 | [pcbnew/Layer.In7.Cu] 102 | Name=In7.Cu 103 | Type=0 104 | Enabled=0 105 | [pcbnew/Layer.In8.Cu] 106 | Name=In8.Cu 107 | Type=0 108 | Enabled=0 109 | [pcbnew/Layer.In9.Cu] 110 | Name=In9.Cu 111 | Type=0 112 | Enabled=0 113 | [pcbnew/Layer.In10.Cu] 114 | Name=In10.Cu 115 | Type=0 116 | Enabled=0 117 | [pcbnew/Layer.In11.Cu] 118 | Name=In11.Cu 119 | Type=0 120 | Enabled=0 121 | [pcbnew/Layer.In12.Cu] 122 | Name=In12.Cu 123 | Type=0 124 | Enabled=0 125 | [pcbnew/Layer.In13.Cu] 126 | Name=In13.Cu 127 | Type=0 128 | Enabled=0 129 | [pcbnew/Layer.In14.Cu] 130 | Name=In14.Cu 131 | Type=0 132 | Enabled=0 133 | [pcbnew/Layer.In15.Cu] 134 | Name=In15.Cu 135 | Type=0 136 | Enabled=0 137 | [pcbnew/Layer.In16.Cu] 138 | Name=In16.Cu 139 | Type=0 140 | Enabled=0 141 | [pcbnew/Layer.In17.Cu] 142 | Name=In17.Cu 143 | Type=0 144 | Enabled=0 145 | [pcbnew/Layer.In18.Cu] 146 | Name=In18.Cu 147 | Type=0 148 | Enabled=0 149 | [pcbnew/Layer.In19.Cu] 150 | Name=In19.Cu 151 | Type=0 152 | Enabled=0 153 | [pcbnew/Layer.In20.Cu] 154 | Name=In20.Cu 155 | Type=0 156 | Enabled=0 157 | [pcbnew/Layer.In21.Cu] 158 | Name=In21.Cu 159 | Type=0 160 | Enabled=0 161 | [pcbnew/Layer.In22.Cu] 162 | Name=In22.Cu 163 | Type=0 164 | Enabled=0 165 | [pcbnew/Layer.In23.Cu] 166 | Name=In23.Cu 167 | Type=0 168 | Enabled=0 169 | [pcbnew/Layer.In24.Cu] 170 | Name=In24.Cu 171 | Type=0 172 | Enabled=0 173 | [pcbnew/Layer.In25.Cu] 174 | Name=In25.Cu 175 | Type=0 176 | Enabled=0 177 | [pcbnew/Layer.In26.Cu] 178 | Name=In26.Cu 179 | Type=0 180 | Enabled=0 181 | [pcbnew/Layer.In27.Cu] 182 | Name=In27.Cu 183 | Type=0 184 | Enabled=0 185 | [pcbnew/Layer.In28.Cu] 186 | Name=In28.Cu 187 | Type=0 188 | Enabled=0 189 | [pcbnew/Layer.In29.Cu] 190 | Name=In29.Cu 191 | Type=0 192 | Enabled=0 193 | [pcbnew/Layer.In30.Cu] 194 | Name=In30.Cu 195 | Type=0 196 | Enabled=0 197 | [pcbnew/Layer.B.Cu] 198 | Name=B.Cu 199 | Type=0 200 | Enabled=1 201 | [pcbnew/Layer.B.Adhes] 202 | Enabled=1 203 | [pcbnew/Layer.F.Adhes] 204 | Enabled=1 205 | [pcbnew/Layer.B.Paste] 206 | Enabled=1 207 | [pcbnew/Layer.F.Paste] 208 | Enabled=1 209 | [pcbnew/Layer.B.SilkS] 210 | Enabled=1 211 | [pcbnew/Layer.F.SilkS] 212 | Enabled=1 213 | [pcbnew/Layer.B.Mask] 214 | Enabled=1 215 | [pcbnew/Layer.F.Mask] 216 | Enabled=1 217 | [pcbnew/Layer.Dwgs.User] 218 | Enabled=1 219 | [pcbnew/Layer.Cmts.User] 220 | Enabled=1 221 | [pcbnew/Layer.Eco1.User] 222 | Enabled=1 223 | [pcbnew/Layer.Eco2.User] 224 | Enabled=1 225 | [pcbnew/Layer.Edge.Cuts] 226 | Enabled=1 227 | [pcbnew/Layer.Margin] 228 | Enabled=1 229 | [pcbnew/Layer.B.CrtYd] 230 | Enabled=1 231 | [pcbnew/Layer.F.CrtYd] 232 | Enabled=1 233 | [pcbnew/Layer.B.Fab] 234 | Enabled=1 235 | [pcbnew/Layer.F.Fab] 236 | Enabled=1 237 | [pcbnew/Layer.Rescue] 238 | Enabled=0 239 | [pcbnew/Netclasses] 240 | [pcbnew/Netclasses/Default] 241 | Name=Default 242 | Clearance=0.127 243 | TrackWidth=0.25 244 | ViaDiameter=0.6 245 | ViaDrill=0.3 246 | uViaDiameter=0.6 247 | uViaDrill=0.3 248 | dPairWidth=0.2 249 | dPairGap=0.25 250 | dPairViaGap=0.25 251 | [schematic_editor] 252 | version=1 253 | PageLayoutDescrFile= 254 | PlotDirectoryName=./ 255 | SubpartIdSeparator=0 256 | SubpartFirstId=65 257 | NetFmtName= 258 | SpiceAjustPassiveValues=0 259 | LabSize=50 260 | ERC_TestSimilarLabels=1 261 | -------------------------------------------------------------------------------- /firmware/src/Adafruit_INA219.h: -------------------------------------------------------------------------------- 1 | /*! 2 | * @file Adafruit_INA219.h 3 | * 4 | * This is a library for the Adafruit INA219 breakout board 5 | * ----> https://www.adafruit.com/products/904 6 | * 7 | * Adafruit invests time and resources providing this open source code, 8 | * please support Adafruit and open-source hardware by purchasing 9 | * products from Adafruit! 10 | * 11 | * Written by Kevin "KTOWN" Townsend for Adafruit Industries. 12 | * 13 | * BSD license, all text here must be included in any redistribution. 14 | * 15 | */ 16 | 17 | #ifndef _LIB_ADAFRUIT_INA219_ 18 | #define _LIB_ADAFRUIT_INA219_ 19 | 20 | #include "Arduino.h" 21 | #include 22 | 23 | /** default I2C address **/ 24 | #define INA219_ADDRESS (0x40) // 1000000 (A0+A1=GND) 25 | 26 | /** read **/ 27 | #define INA219_READ (0x01) 28 | 29 | /*========================================================================= 30 | CONFIG REGISTER (R/W) 31 | **************************************************************************/ 32 | 33 | /** config register address **/ 34 | #define INA219_REG_CONFIG (0x00) 35 | 36 | /** reset bit **/ 37 | #define INA219_CONFIG_RESET (0x8000) // Reset Bit 38 | 39 | /** mask for bus voltage range **/ 40 | #define INA219_CONFIG_BVOLTAGERANGE_MASK (0x2000) // Bus Voltage Range Mask 41 | 42 | /** bus voltage range values **/ 43 | enum { 44 | INA219_CONFIG_BVOLTAGERANGE_16V = (0x0000), // 0-16V Range 45 | INA219_CONFIG_BVOLTAGERANGE_32V = (0x2000), // 0-32V Range 46 | }; 47 | 48 | /** mask for gain bits **/ 49 | #define INA219_CONFIG_GAIN_MASK (0x1800) // Gain Mask 50 | 51 | /** values for gain bits **/ 52 | enum { 53 | INA219_CONFIG_GAIN_1_40MV = (0x0000), // Gain 1, 40mV Range 54 | INA219_CONFIG_GAIN_2_80MV = (0x0800), // Gain 2, 80mV Range 55 | INA219_CONFIG_GAIN_4_160MV = (0x1000), // Gain 4, 160mV Range 56 | INA219_CONFIG_GAIN_8_320MV = (0x1800), // Gain 8, 320mV Range 57 | }; 58 | 59 | /** mask for bus ADC resolution bits **/ 60 | #define INA219_CONFIG_BADCRES_MASK (0x0780) 61 | 62 | /** values for bus ADC resolution **/ 63 | enum { 64 | INA219_CONFIG_BADCRES_9BIT = (0x0000), // 9-bit bus res = 0..511 65 | INA219_CONFIG_BADCRES_10BIT = (0x0080), // 10-bit bus res = 0..1023 66 | INA219_CONFIG_BADCRES_11BIT = (0x0100), // 11-bit bus res = 0..2047 67 | INA219_CONFIG_BADCRES_12BIT = (0x0180), // 12-bit bus res = 0..4097 68 | }; 69 | 70 | /** mask for shunt ADC resolution bits **/ 71 | #define INA219_CONFIG_SADCRES_MASK \ 72 | (0x0078) // Shunt ADC Resolution and Averaging Mask 73 | 74 | /** values for shunt ADC resolution **/ 75 | enum { 76 | INA219_CONFIG_SADCRES_9BIT_1S_84US = (0x0000), // 1 x 9-bit shunt sample 77 | INA219_CONFIG_SADCRES_10BIT_1S_148US = (0x0008), // 1 x 10-bit shunt sample 78 | INA219_CONFIG_SADCRES_11BIT_1S_276US = (0x0010), // 1 x 11-bit shunt sample 79 | INA219_CONFIG_SADCRES_12BIT_1S_532US = (0x0018), // 1 x 12-bit shunt sample 80 | INA219_CONFIG_SADCRES_12BIT_2S_1060US = 81 | (0x0048), // 2 x 12-bit shunt samples averaged together 82 | INA219_CONFIG_SADCRES_12BIT_4S_2130US = 83 | (0x0050), // 4 x 12-bit shunt samples averaged together 84 | INA219_CONFIG_SADCRES_12BIT_8S_4260US = 85 | (0x0058), // 8 x 12-bit shunt samples averaged together 86 | INA219_CONFIG_SADCRES_12BIT_16S_8510US = 87 | (0x0060), // 16 x 12-bit shunt samples averaged together 88 | INA219_CONFIG_SADCRES_12BIT_32S_17MS = 89 | (0x0068), // 32 x 12-bit shunt samples averaged together 90 | INA219_CONFIG_SADCRES_12BIT_64S_34MS = 91 | (0x0070), // 64 x 12-bit shunt samples averaged together 92 | INA219_CONFIG_SADCRES_12BIT_128S_69MS = 93 | (0x0078), // 128 x 12-bit shunt samples averaged together 94 | }; 95 | 96 | /** mask for operating mode bits **/ 97 | #define INA219_CONFIG_MODE_MASK (0x0007) // Operating Mode Mask 98 | 99 | /** values for operating mode **/ 100 | enum { 101 | INA219_CONFIG_MODE_POWERDOWN, 102 | INA219_CONFIG_MODE_SVOLT_TRIGGERED, 103 | INA219_CONFIG_MODE_BVOLT_TRIGGERED, 104 | INA219_CONFIG_MODE_SANDBVOLT_TRIGGERED, 105 | INA219_CONFIG_MODE_ADCOFF, 106 | INA219_CONFIG_MODE_SVOLT_CONTINUOUS, 107 | INA219_CONFIG_MODE_BVOLT_CONTINUOUS, 108 | INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS 109 | }; 110 | 111 | /** shunt voltage register **/ 112 | #define INA219_REG_SHUNTVOLTAGE (0x01) 113 | 114 | /** bus voltage register **/ 115 | #define INA219_REG_BUSVOLTAGE (0x02) 116 | 117 | /** power register **/ 118 | #define INA219_REG_POWER (0x03) 119 | 120 | /** current register **/ 121 | #define INA219_REG_CURRENT (0x04) 122 | 123 | /** calibration register **/ 124 | #define INA219_REG_CALIBRATION (0x05) 125 | 126 | /*! 127 | * @brief Class that stores state and functions for interacting with INA219 128 | * current/power monitor IC 129 | */ 130 | class Adafruit_INA219 { 131 | public: 132 | Adafruit_INA219(uint8_t addr = INA219_ADDRESS); 133 | void begin(SoftWire *theWire); 134 | void setCalibration_32V_2A(void); 135 | void setCalibration_32V_1A(void); 136 | void setCalibration_16V_400mA(void); 137 | float getBusVoltage_V(void); 138 | float getShuntVoltage_mV(void); 139 | float getCurrent_mA(void); 140 | float getPower_mW(void); 141 | 142 | private: 143 | SoftWire *_i2c; 144 | 145 | uint8_t ina219_i2caddr; 146 | uint32_t ina219_calValue; 147 | // The following multipliers are used to convert raw current and power 148 | // values to mA and mW, taking into account the current config settings 149 | uint32_t ina219_currentDivider_mA; 150 | float ina219_powerMultiplier_mW; 151 | 152 | void init(); 153 | void wireWriteRegister(uint8_t reg, uint16_t value); 154 | void wireReadRegister(uint8_t reg, uint16_t *value); 155 | int16_t getBusVoltage_raw(void); 156 | int16_t getShuntVoltage_raw(void); 157 | int16_t getCurrent_raw(void); 158 | int16_t getPower_raw(void); 159 | }; 160 | 161 | #endif 162 | -------------------------------------------------------------------------------- /pcb/MP1584_buck_module.kicad_mod: -------------------------------------------------------------------------------- 1 | (module MP1584_buck_module (layer F.Cu) (tedit 55D1F7A1) 2 | (fp_text reference REF** (at 5.08 0.762) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value MP1584_buck_module (at 0.635 9.144) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start 3.302 4.318) (end 1.016 6.096) (layer F.SilkS) (width 0.15)) 9 | (fp_line (start -6.096 4.318) (end 3.302 4.318) (layer F.SilkS) (width 0.15)) 10 | (fp_line (start 3.302 4.318) (end 1.016 2.54) (layer F.SilkS) (width 0.15)) 11 | (fp_line (start -1.524 -1.778) (end -1.016 -1.778) (layer F.SilkS) (width 0.15)) 12 | (fp_line (start -1.016 -1.778) (end -1.016 2.286) (layer F.SilkS) (width 0.15)) 13 | (fp_line (start -1.016 2.286) (end -1.524 2.286) (layer F.SilkS) (width 0.15)) 14 | (fp_line (start -1.524 2.286) (end -1.524 2.794) (layer F.SilkS) (width 0.15)) 15 | (fp_line (start -1.524 2.794) (end -1.778 2.794) (layer F.SilkS) (width 0.15)) 16 | (fp_line (start -1.778 2.794) (end -1.778 2.286) (layer F.SilkS) (width 0.15)) 17 | (fp_line (start -1.778 2.286) (end -2.794 2.286) (layer F.SilkS) (width 0.15)) 18 | (fp_line (start -2.794 2.286) (end -2.794 2.794) (layer F.SilkS) (width 0.15)) 19 | (fp_line (start -2.794 2.794) (end -3.048 2.794) (layer F.SilkS) (width 0.15)) 20 | (fp_line (start -3.048 2.794) (end -3.048 2.286) (layer F.SilkS) (width 0.15)) 21 | (fp_line (start -3.048 2.286) (end -4.064 2.286) (layer F.SilkS) (width 0.15)) 22 | (fp_line (start -4.064 2.286) (end -4.064 2.794) (layer F.SilkS) (width 0.15)) 23 | (fp_line (start -4.064 2.794) (end -4.318 2.794) (layer F.SilkS) (width 0.15)) 24 | (fp_line (start -4.318 2.794) (end -4.318 2.286) (layer F.SilkS) (width 0.15)) 25 | (fp_line (start -4.318 2.286) (end -5.334 2.286) (layer F.SilkS) (width 0.15)) 26 | (fp_line (start -5.334 2.286) (end -5.334 2.794) (layer F.SilkS) (width 0.15)) 27 | (fp_line (start -5.334 2.794) (end -5.588 2.794) (layer F.SilkS) (width 0.15)) 28 | (fp_line (start -5.588 2.794) (end -5.588 2.286) (layer F.SilkS) (width 0.15)) 29 | (fp_line (start -5.588 2.286) (end -6.096 2.286) (layer F.SilkS) (width 0.15)) 30 | (fp_line (start -6.096 2.286) (end -6.096 2.032) (layer F.SilkS) (width 0.15)) 31 | (fp_line (start -2.794 -1.778) (end -1.778 -1.778) (layer F.SilkS) (width 0.15)) 32 | (fp_line (start -4.064 -1.778) (end -3.048 -1.778) (layer F.SilkS) (width 0.15)) 33 | (fp_line (start -5.334 -1.778) (end -4.318 -1.778) (layer F.SilkS) (width 0.15)) 34 | (fp_line (start -1.778 -1.778) (end -1.778 -2.286) (layer F.SilkS) (width 0.15)) 35 | (fp_line (start -1.778 -2.286) (end -1.524 -2.286) (layer F.SilkS) (width 0.15)) 36 | (fp_line (start -3.048 -1.778) (end -3.048 -2.286) (layer F.SilkS) (width 0.15)) 37 | (fp_line (start -3.048 -2.286) (end -2.794 -2.286) (layer F.SilkS) (width 0.15)) 38 | (fp_line (start -4.318 -1.778) (end -4.318 -2.286) (layer F.SilkS) (width 0.15)) 39 | (fp_line (start -4.318 -2.286) (end -4.064 -2.286) (layer F.SilkS) (width 0.15)) 40 | (fp_line (start -6.096 2.032) (end -6.096 -1.778) (layer F.SilkS) (width 0.15)) 41 | (fp_line (start -6.096 -1.778) (end -5.842 -1.778) (layer F.SilkS) (width 0.15)) 42 | (fp_line (start -5.842 -1.778) (end -5.588 -1.778) (layer F.SilkS) (width 0.15)) 43 | (fp_line (start -5.588 -1.778) (end -5.588 -2.286) (layer F.SilkS) (width 0.15)) 44 | (fp_line (start -5.588 -2.286) (end -5.334 -2.286) (layer F.SilkS) (width 0.15)) 45 | (fp_line (start -1.524 -1.778) (end -1.524 -2.286) (layer F.SilkS) (width 0.15)) 46 | (fp_line (start -2.794 -2.286) (end -2.794 -1.778) (layer F.SilkS) (width 0.15)) 47 | (fp_line (start -4.064 -1.778) (end -4.064 -2.286) (layer F.SilkS) (width 0.15)) 48 | (fp_line (start -5.334 -1.778) (end -5.334 -2.286) (layer F.SilkS) (width 0.15)) 49 | (fp_line (start 10.033 0.508) (end 8.509 0.508) (layer F.SilkS) (width 0.15)) 50 | (fp_line (start 8.509 0.508) (end 9.271 0.508) (layer F.SilkS) (width 0.15)) 51 | (fp_line (start 9.271 0.508) (end 9.271 2.286) (layer F.SilkS) (width 0.15)) 52 | (fp_line (start 9.271 -2.286) (end 9.271 -0.508) (layer F.SilkS) (width 0.15)) 53 | (fp_line (start 9.271 -0.508) (end 8.509 -0.508) (layer F.SilkS) (width 0.15)) 54 | (fp_line (start 8.509 -0.508) (end 10.033 -0.508) (layer F.SilkS) (width 0.15)) 55 | (fp_line (start -2.159 -7.62) (end -2.159 -5.334) (layer F.SilkS) (width 0.15)) 56 | (fp_line (start -4.191 -7.62) (end -4.191 -5.334) (layer F.SilkS) (width 0.15)) 57 | (fp_line (start -4.191 -5.334) (end -2.159 -6.604) (layer F.SilkS) (width 0.15)) 58 | (fp_line (start -2.159 -6.604) (end -4.191 -7.62) (layer F.SilkS) (width 0.15)) 59 | (fp_line (start 6.223 -6.604) (end 1.397 -6.604) (layer F.SilkS) (width 0.15)) 60 | (fp_line (start 1.397 -6.604) (end 1.397 -0.508) (layer F.SilkS) (width 0.15)) 61 | (fp_line (start 1.397 -0.508) (end 6.985 -0.508) (layer F.SilkS) (width 0.15)) 62 | (fp_line (start 6.985 -0.508) (end 6.985 -6.604) (layer F.SilkS) (width 0.15)) 63 | (fp_line (start 6.985 -6.604) (end 6.223 -6.604) (layer F.SilkS) (width 0.15)) 64 | (fp_line (start 6.223 -7.62) (end 7.239 -7.62) (layer F.SilkS) (width 0.15)) 65 | (fp_circle (center 6.731 -7.62) (end 7.239 -7.874) (layer F.SilkS) (width 0.15)) 66 | (fp_line (start 6.731 7.112) (end 6.731 8.128) (layer F.SilkS) (width 0.15)) 67 | (fp_line (start 6.223 7.62) (end 7.239 7.62) (layer F.SilkS) (width 0.15)) 68 | (fp_circle (center 6.731 7.62) (end 7.239 7.874) (layer F.SilkS) (width 0.15)) 69 | (fp_line (start 7.493 8.382) (end 7.493 2.286) (layer F.SilkS) (width 0.15)) 70 | (fp_line (start 7.493 2.286) (end 11.049 2.286) (layer F.SilkS) (width 0.15)) 71 | (fp_line (start 11.049 -2.286) (end 7.493 -2.286) (layer F.SilkS) (width 0.15)) 72 | (fp_line (start 7.493 -2.286) (end 7.493 -8.382) (layer F.SilkS) (width 0.15)) 73 | (fp_line (start -11.049 2.286) (end -7.493 2.286) (layer F.SilkS) (width 0.15)) 74 | (fp_line (start -7.493 2.286) (end -7.493 8.382) (layer F.SilkS) (width 0.15)) 75 | (fp_line (start -7.493 -8.382) (end -7.493 -2.286) (layer F.SilkS) (width 0.15)) 76 | (fp_line (start -7.493 -2.286) (end -11.049 -2.286) (layer F.SilkS) (width 0.15)) 77 | (fp_line (start -11.049 -8.382) (end 11.049 -8.382) (layer F.SilkS) (width 0.15)) 78 | (fp_line (start 11.049 -8.382) (end 11.049 8.382) (layer F.SilkS) (width 0.15)) 79 | (fp_line (start 11.049 8.382) (end -11.049 8.382) (layer F.SilkS) (width 0.15)) 80 | (fp_line (start -11.049 8.382) (end -11.049 -8.382) (layer F.SilkS) (width 0.15)) 81 | (pad 2 thru_hole circle (at -9.271 -6.604) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) 82 | (pad 1 thru_hole rect (at -9.271 6.604) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) 83 | (pad 3 thru_hole circle (at 9.271 -6.604) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) 84 | (pad 4 thru_hole rect (at 9.271 6.604) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) 85 | (pad 3 thru_hole rect (at 9.271 -4.064) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) 86 | (pad 2 thru_hole rect (at -9.271 -4.064) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) 87 | (pad 1 thru_hole circle (at -9.271 4.064) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) 88 | (pad 4 thru_hole circle (at 9.271 4.064) (size 1.524 1.524) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) 89 | ) 90 | -------------------------------------------------------------------------------- /pcb/solarcampi.net: -------------------------------------------------------------------------------- 1 | (export (version D) 2 | (design 3 | (source "/Users/achimpieters/Desktop/Kicad Templates/Raspberry Pi® Zero W/Raspberry Pi® Zero W.sch") 4 | (date "2018 December 28, Friday 13:08:17") 5 | (tool "Eeschema (6.0.0-rc1-dev-1430-g6339ae60e)") 6 | (sheet (number 1) (name /) (tstamps /) 7 | (title_block 8 | (title) 9 | (company) 10 | (rev) 11 | (date) 12 | (source "Raspberry Pi® Zero W.sch") 13 | (comment (number 1) (value "")) 14 | (comment (number 2) (value "")) 15 | (comment (number 3) (value "")) 16 | (comment (number 4) (value ""))))) 17 | (components 18 | (comp (ref J1) 19 | (value Conn_02x20_Odd_Even) 20 | (footprint Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_Vertical) 21 | (datasheet ~) 22 | (libsource (lib Connector_Generic) (part Conn_02x20_Odd_Even) (description "Generic connector, double row, 02x20, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)")) 23 | (sheetpath (names /) (tstamps /)) 24 | (tstamp 5C26120C))) 25 | (libparts 26 | (libpart (lib Connector_Generic) (part Conn_02x20_Odd_Even) 27 | (description "Generic connector, double row, 02x20, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)") 28 | (docs ~) 29 | (footprints 30 | (fp Connector*:*_2x??_*)) 31 | (fields 32 | (field (name Reference) J) 33 | (field (name Value) Conn_02x20_Odd_Even)) 34 | (pins 35 | (pin (num 1) (name Pin_1) (type passive)) 36 | (pin (num 2) (name Pin_2) (type passive)) 37 | (pin (num 3) (name Pin_3) (type passive)) 38 | (pin (num 4) (name Pin_4) (type passive)) 39 | (pin (num 5) (name Pin_5) (type passive)) 40 | (pin (num 6) (name Pin_6) (type passive)) 41 | (pin (num 7) (name Pin_7) (type passive)) 42 | (pin (num 8) (name Pin_8) (type passive)) 43 | (pin (num 9) (name Pin_9) (type passive)) 44 | (pin (num 10) (name Pin_10) (type passive)) 45 | (pin (num 11) (name Pin_11) (type passive)) 46 | (pin (num 12) (name Pin_12) (type passive)) 47 | (pin (num 13) (name Pin_13) (type passive)) 48 | (pin (num 14) (name Pin_14) (type passive)) 49 | (pin (num 15) (name Pin_15) (type passive)) 50 | (pin (num 16) (name Pin_16) (type passive)) 51 | (pin (num 17) (name Pin_17) (type passive)) 52 | (pin (num 18) (name Pin_18) (type passive)) 53 | (pin (num 19) (name Pin_19) (type passive)) 54 | (pin (num 20) (name Pin_20) (type passive)) 55 | (pin (num 21) (name Pin_21) (type passive)) 56 | (pin (num 22) (name Pin_22) (type passive)) 57 | (pin (num 23) (name Pin_23) (type passive)) 58 | (pin (num 24) (name Pin_24) (type passive)) 59 | (pin (num 25) (name Pin_25) (type passive)) 60 | (pin (num 26) (name Pin_26) (type passive)) 61 | (pin (num 27) (name Pin_27) (type passive)) 62 | (pin (num 28) (name Pin_28) (type passive)) 63 | (pin (num 29) (name Pin_29) (type passive)) 64 | (pin (num 30) (name Pin_30) (type passive)) 65 | (pin (num 31) (name Pin_31) (type passive)) 66 | (pin (num 32) (name Pin_32) (type passive)) 67 | (pin (num 33) (name Pin_33) (type passive)) 68 | (pin (num 34) (name Pin_34) (type passive)) 69 | (pin (num 35) (name Pin_35) (type passive)) 70 | (pin (num 36) (name Pin_36) (type passive)) 71 | (pin (num 37) (name Pin_37) (type passive)) 72 | (pin (num 38) (name Pin_38) (type passive)) 73 | (pin (num 39) (name Pin_39) (type passive)) 74 | (pin (num 40) (name Pin_40) (type passive))))) 75 | (libraries 76 | (library (logical Connector_Generic) 77 | (uri "/Library/Application Support/kicad/library/Connector_Generic.lib"))) 78 | (nets 79 | (net (code 1) (name "Net-(J1-Pad1)") 80 | (node (ref J1) (pin 1))) 81 | (net (code 2) (name "Net-(J1-Pad10)") 82 | (node (ref J1) (pin 10))) 83 | (net (code 3) (name "Net-(J1-Pad11)") 84 | (node (ref J1) (pin 11))) 85 | (net (code 4) (name "Net-(J1-Pad12)") 86 | (node (ref J1) (pin 12))) 87 | (net (code 5) (name "Net-(J1-Pad13)") 88 | (node (ref J1) (pin 13))) 89 | (net (code 6) (name "Net-(J1-Pad14)") 90 | (node (ref J1) (pin 14))) 91 | (net (code 7) (name "Net-(J1-Pad15)") 92 | (node (ref J1) (pin 15))) 93 | (net (code 8) (name "Net-(J1-Pad16)") 94 | (node (ref J1) (pin 16))) 95 | (net (code 9) (name "Net-(J1-Pad17)") 96 | (node (ref J1) (pin 17))) 97 | (net (code 10) (name "Net-(J1-Pad18)") 98 | (node (ref J1) (pin 18))) 99 | (net (code 11) (name "Net-(J1-Pad19)") 100 | (node (ref J1) (pin 19))) 101 | (net (code 12) (name "Net-(J1-Pad2)") 102 | (node (ref J1) (pin 2))) 103 | (net (code 13) (name "Net-(J1-Pad20)") 104 | (node (ref J1) (pin 20))) 105 | (net (code 14) (name "Net-(J1-Pad21)") 106 | (node (ref J1) (pin 21))) 107 | (net (code 15) (name "Net-(J1-Pad22)") 108 | (node (ref J1) (pin 22))) 109 | (net (code 16) (name "Net-(J1-Pad23)") 110 | (node (ref J1) (pin 23))) 111 | (net (code 17) (name "Net-(J1-Pad24)") 112 | (node (ref J1) (pin 24))) 113 | (net (code 18) (name "Net-(J1-Pad25)") 114 | (node (ref J1) (pin 25))) 115 | (net (code 19) (name "Net-(J1-Pad26)") 116 | (node (ref J1) (pin 26))) 117 | (net (code 20) (name "Net-(J1-Pad27)") 118 | (node (ref J1) (pin 27))) 119 | (net (code 21) (name "Net-(J1-Pad28)") 120 | (node (ref J1) (pin 28))) 121 | (net (code 22) (name "Net-(J1-Pad29)") 122 | (node (ref J1) (pin 29))) 123 | (net (code 23) (name "Net-(J1-Pad3)") 124 | (node (ref J1) (pin 3))) 125 | (net (code 24) (name "Net-(J1-Pad30)") 126 | (node (ref J1) (pin 30))) 127 | (net (code 25) (name "Net-(J1-Pad31)") 128 | (node (ref J1) (pin 31))) 129 | (net (code 26) (name "Net-(J1-Pad32)") 130 | (node (ref J1) (pin 32))) 131 | (net (code 27) (name "Net-(J1-Pad33)") 132 | (node (ref J1) (pin 33))) 133 | (net (code 28) (name "Net-(J1-Pad34)") 134 | (node (ref J1) (pin 34))) 135 | (net (code 29) (name "Net-(J1-Pad35)") 136 | (node (ref J1) (pin 35))) 137 | (net (code 30) (name "Net-(J1-Pad36)") 138 | (node (ref J1) (pin 36))) 139 | (net (code 31) (name "Net-(J1-Pad37)") 140 | (node (ref J1) (pin 37))) 141 | (net (code 32) (name "Net-(J1-Pad38)") 142 | (node (ref J1) (pin 38))) 143 | (net (code 33) (name "Net-(J1-Pad39)") 144 | (node (ref J1) (pin 39))) 145 | (net (code 34) (name "Net-(J1-Pad4)") 146 | (node (ref J1) (pin 4))) 147 | (net (code 35) (name "Net-(J1-Pad40)") 148 | (node (ref J1) (pin 40))) 149 | (net (code 36) (name "Net-(J1-Pad5)") 150 | (node (ref J1) (pin 5))) 151 | (net (code 37) (name "Net-(J1-Pad6)") 152 | (node (ref J1) (pin 6))) 153 | (net (code 38) (name "Net-(J1-Pad7)") 154 | (node (ref J1) (pin 7))) 155 | (net (code 39) (name "Net-(J1-Pad8)") 156 | (node (ref J1) (pin 8))) 157 | (net (code 40) (name "Net-(J1-Pad9)") 158 | (node (ref J1) (pin 9))))) -------------------------------------------------------------------------------- /pcb/solarcampi.pretty/MP1584_buck_module.kicad_mod: -------------------------------------------------------------------------------- 1 | (module MP1584_buck_module (layer F.Cu) (tedit 5D0A8067) 2 | (fp_text reference REF** (at 5.08 0.762) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value MP1584_buck_module (at 0.635 9.144) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -11.049 8.382) (end -11.049 -8.382) (layer F.SilkS) (width 0.15)) 9 | (fp_line (start 11.049 8.382) (end -11.049 8.382) (layer F.SilkS) (width 0.15)) 10 | (fp_line (start 11.049 -8.382) (end 11.049 8.382) (layer F.SilkS) (width 0.15)) 11 | (fp_line (start -11.049 -8.382) (end 11.049 -8.382) (layer F.SilkS) (width 0.15)) 12 | (fp_line (start -7.493 -2.286) (end -11.049 -2.286) (layer F.SilkS) (width 0.15)) 13 | (fp_line (start -7.493 -8.382) (end -7.493 -2.286) (layer F.SilkS) (width 0.15)) 14 | (fp_line (start -7.493 2.286) (end -7.493 8.382) (layer F.SilkS) (width 0.15)) 15 | (fp_line (start -11.049 2.286) (end -7.493 2.286) (layer F.SilkS) (width 0.15)) 16 | (fp_line (start 7.493 -2.286) (end 7.493 -8.382) (layer F.SilkS) (width 0.15)) 17 | (fp_line (start 11.049 -2.286) (end 7.493 -2.286) (layer F.SilkS) (width 0.15)) 18 | (fp_line (start 7.493 2.286) (end 11.049 2.286) (layer F.SilkS) (width 0.15)) 19 | (fp_line (start 7.493 8.382) (end 7.493 2.286) (layer F.SilkS) (width 0.15)) 20 | (fp_circle (center 6.731 7.62) (end 7.239 7.874) (layer F.SilkS) (width 0.15)) 21 | (fp_line (start 6.223 7.62) (end 7.239 7.62) (layer F.SilkS) (width 0.15)) 22 | (fp_line (start 6.731 7.112) (end 6.731 8.128) (layer F.SilkS) (width 0.15)) 23 | (fp_circle (center 6.731 -7.62) (end 7.239 -7.874) (layer F.SilkS) (width 0.15)) 24 | (fp_line (start 6.223 -7.62) (end 7.239 -7.62) (layer F.SilkS) (width 0.15)) 25 | (fp_line (start 6.985 -6.604) (end 6.223 -6.604) (layer F.SilkS) (width 0.15)) 26 | (fp_line (start 6.985 -0.508) (end 6.985 -6.604) (layer F.SilkS) (width 0.15)) 27 | (fp_line (start 1.397 -0.508) (end 6.985 -0.508) (layer F.SilkS) (width 0.15)) 28 | (fp_line (start 1.397 -6.604) (end 1.397 -0.508) (layer F.SilkS) (width 0.15)) 29 | (fp_line (start 6.223 -6.604) (end 1.397 -6.604) (layer F.SilkS) (width 0.15)) 30 | (fp_line (start -2.159 -6.604) (end -4.191 -7.62) (layer F.SilkS) (width 0.15)) 31 | (fp_line (start -4.191 -5.334) (end -2.159 -6.604) (layer F.SilkS) (width 0.15)) 32 | (fp_line (start -4.191 -7.62) (end -4.191 -5.334) (layer F.SilkS) (width 0.15)) 33 | (fp_line (start -2.159 -7.62) (end -2.159 -5.334) (layer F.SilkS) (width 0.15)) 34 | (fp_line (start 8.509 -0.508) (end 10.033 -0.508) (layer F.SilkS) (width 0.15)) 35 | (fp_line (start 9.271 -0.508) (end 8.509 -0.508) (layer F.SilkS) (width 0.15)) 36 | (fp_line (start 9.271 -2.286) (end 9.271 -0.508) (layer F.SilkS) (width 0.15)) 37 | (fp_line (start 9.271 0.508) (end 9.271 2.286) (layer F.SilkS) (width 0.15)) 38 | (fp_line (start 8.509 0.508) (end 9.271 0.508) (layer F.SilkS) (width 0.15)) 39 | (fp_line (start 10.033 0.508) (end 8.509 0.508) (layer F.SilkS) (width 0.15)) 40 | (fp_line (start -5.334 -1.778) (end -5.334 -2.286) (layer F.SilkS) (width 0.15)) 41 | (fp_line (start -4.064 -1.778) (end -4.064 -2.286) (layer F.SilkS) (width 0.15)) 42 | (fp_line (start -2.794 -2.286) (end -2.794 -1.778) (layer F.SilkS) (width 0.15)) 43 | (fp_line (start -1.524 -1.778) (end -1.524 -2.286) (layer F.SilkS) (width 0.15)) 44 | (fp_line (start -5.588 -2.286) (end -5.334 -2.286) (layer F.SilkS) (width 0.15)) 45 | (fp_line (start -5.588 -1.778) (end -5.588 -2.286) (layer F.SilkS) (width 0.15)) 46 | (fp_line (start -5.842 -1.778) (end -5.588 -1.778) (layer F.SilkS) (width 0.15)) 47 | (fp_line (start -6.096 -1.778) (end -5.842 -1.778) (layer F.SilkS) (width 0.15)) 48 | (fp_line (start -6.096 2.032) (end -6.096 -1.778) (layer F.SilkS) (width 0.15)) 49 | (fp_line (start -4.318 -2.286) (end -4.064 -2.286) (layer F.SilkS) (width 0.15)) 50 | (fp_line (start -4.318 -1.778) (end -4.318 -2.286) (layer F.SilkS) (width 0.15)) 51 | (fp_line (start -3.048 -2.286) (end -2.794 -2.286) (layer F.SilkS) (width 0.15)) 52 | (fp_line (start -3.048 -1.778) (end -3.048 -2.286) (layer F.SilkS) (width 0.15)) 53 | (fp_line (start -1.778 -2.286) (end -1.524 -2.286) (layer F.SilkS) (width 0.15)) 54 | (fp_line (start -1.778 -1.778) (end -1.778 -2.286) (layer F.SilkS) (width 0.15)) 55 | (fp_line (start -5.334 -1.778) (end -4.318 -1.778) (layer F.SilkS) (width 0.15)) 56 | (fp_line (start -4.064 -1.778) (end -3.048 -1.778) (layer F.SilkS) (width 0.15)) 57 | (fp_line (start -2.794 -1.778) (end -1.778 -1.778) (layer F.SilkS) (width 0.15)) 58 | (fp_line (start -6.096 2.286) (end -6.096 2.032) (layer F.SilkS) (width 0.15)) 59 | (fp_line (start -5.588 2.286) (end -6.096 2.286) (layer F.SilkS) (width 0.15)) 60 | (fp_line (start -5.588 2.794) (end -5.588 2.286) (layer F.SilkS) (width 0.15)) 61 | (fp_line (start -5.334 2.794) (end -5.588 2.794) (layer F.SilkS) (width 0.15)) 62 | (fp_line (start -5.334 2.286) (end -5.334 2.794) (layer F.SilkS) (width 0.15)) 63 | (fp_line (start -4.318 2.286) (end -5.334 2.286) (layer F.SilkS) (width 0.15)) 64 | (fp_line (start -4.318 2.794) (end -4.318 2.286) (layer F.SilkS) (width 0.15)) 65 | (fp_line (start -4.064 2.794) (end -4.318 2.794) (layer F.SilkS) (width 0.15)) 66 | (fp_line (start -4.064 2.286) (end -4.064 2.794) (layer F.SilkS) (width 0.15)) 67 | (fp_line (start -3.048 2.286) (end -4.064 2.286) (layer F.SilkS) (width 0.15)) 68 | (fp_line (start -3.048 2.794) (end -3.048 2.286) (layer F.SilkS) (width 0.15)) 69 | (fp_line (start -2.794 2.794) (end -3.048 2.794) (layer F.SilkS) (width 0.15)) 70 | (fp_line (start -2.794 2.286) (end -2.794 2.794) (layer F.SilkS) (width 0.15)) 71 | (fp_line (start -1.778 2.286) (end -2.794 2.286) (layer F.SilkS) (width 0.15)) 72 | (fp_line (start -1.778 2.794) (end -1.778 2.286) (layer F.SilkS) (width 0.15)) 73 | (fp_line (start -1.524 2.794) (end -1.778 2.794) (layer F.SilkS) (width 0.15)) 74 | (fp_line (start -1.524 2.286) (end -1.524 2.794) (layer F.SilkS) (width 0.15)) 75 | (fp_line (start -1.016 2.286) (end -1.524 2.286) (layer F.SilkS) (width 0.15)) 76 | (fp_line (start -1.016 -1.778) (end -1.016 2.286) (layer F.SilkS) (width 0.15)) 77 | (fp_line (start -1.524 -1.778) (end -1.016 -1.778) (layer F.SilkS) (width 0.15)) 78 | (fp_line (start 3.302 4.318) (end 1.016 2.54) (layer F.SilkS) (width 0.15)) 79 | (fp_line (start -6.096 4.318) (end 3.302 4.318) (layer F.SilkS) (width 0.15)) 80 | (fp_line (start 3.302 4.318) (end 1.016 6.096) (layer F.SilkS) (width 0.15)) 81 | (pad 4 thru_hole circle (at 9.271 4.064) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask F.SilkS)) 82 | (pad 1 thru_hole circle (at -9.271 4.064) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask F.SilkS)) 83 | (pad 2 thru_hole rect (at -9.271 -4.064) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask F.SilkS)) 84 | (pad 3 thru_hole rect (at 9.271 -4.064) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask F.SilkS)) 85 | (pad 4 thru_hole rect (at 9.271 6.604) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask F.SilkS)) 86 | (pad 3 thru_hole circle (at 9.271 -6.604) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask F.SilkS)) 87 | (pad 1 thru_hole rect (at -9.271 6.604) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask F.SilkS)) 88 | (pad 2 thru_hole circle (at -9.271 -6.604) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask F.SilkS)) 89 | (model ${KIPRJMOD}/lib/3d/D-SUN_dcdc_step_down_SIMPLE.step 90 | (offset (xyz 0 0 2.5)) 91 | (scale (xyz 1 1 1)) 92 | (rotate (xyz 0 0 0)) 93 | ) 94 | (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.step 95 | (offset (xyz 9.199999999999999 6.6 0)) 96 | (scale (xyz 1 1 1)) 97 | (rotate (xyz 0 0 0)) 98 | ) 99 | (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.step 100 | (offset (xyz -9.199999999999999 6.6 0)) 101 | (scale (xyz 1 1 1)) 102 | (rotate (xyz 0 0 0)) 103 | ) 104 | (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.step 105 | (offset (xyz 9.199999999999999 -6.6 0)) 106 | (scale (xyz 1 1 1)) 107 | (rotate (xyz 0 0 180)) 108 | ) 109 | (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x02_P2.54mm_Vertical.step 110 | (offset (xyz -9.199999999999999 -6.6 0)) 111 | (scale (xyz 1 1 1)) 112 | (rotate (xyz 0 0 180)) 113 | ) 114 | ) 115 | -------------------------------------------------------------------------------- /firmware/src/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | @brief Embedded controller for solar-powered webcam 3 | @date 2022-04-03 4 | @version 1.10 5 | @author Tobias Mädel 6 | @license MIT 7 | 8 | @par 2019-05-26 Tobias Mädel Initial version 9 | @par 2022-04-03 Tobias Mädel Added additional debug logs 10 | */ 11 | #include "main.h" 12 | #include "config.h" 13 | #include 14 | #include 15 | #include "Adafruit_INA219.h" 16 | #include "LowPower.h" 17 | 18 | volatile uint8_t state = STATE_ACTIVE; 19 | volatile uint8_t oldState = state; 20 | uint16_t activeTime = 0; 21 | uint16_t currentSleepTime = 0; 22 | 23 | // INA220 Init 24 | Adafruit_INA219 ina219; 25 | SoftWire inaWire(AVR_SDA, AVR_SCL); 26 | uint8_t txBuf[20]; 27 | uint8_t rxBuf[20]; 28 | 29 | // RPi I2C Slave 30 | volatile uint8_t i2cRegister; 31 | volatile uint8_t i2cData; 32 | 33 | volatile uint8_t writeEEPROM = 0; 34 | 35 | #define registers log_data 36 | 37 | #define debug_print(x) Serial.print(x); Serial.flush(); 38 | #define debug_println(x) Serial.println(x); Serial.flush(); 39 | 40 | void setup() 41 | { 42 | pinMode(LED, OUTPUT); 43 | digitalWrite(LED, 1); 44 | 45 | Serial.begin(115200); 46 | debug_println("SolarCamPi Init"); 47 | 48 | eeprom_init(); 49 | if (!eeprom_find_log_block()) 50 | { 51 | debug_println("Initializing EEPROM"); 52 | log_data = { 53 | .voltage = 0, 54 | .sleepIntervalFast = 50, // 280s 55 | .sleepIntervalSlow = 225, // 1800s 56 | .sleepIntervalSlowVoltage = 7000, 57 | .undervoltageLockout = 4000, 58 | .undervoltageHysteresis = 4500, 59 | .disableTimeout = 0, 60 | .timeout = 120, 61 | .current = 0, 62 | .lastTimestamp = 0 63 | }; 64 | eeprom_write_log_block(); 65 | } 66 | else 67 | { 68 | debug_println("Block found"); 69 | } 70 | 71 | debug_print_registers(); 72 | 73 | pinMode(RPI_SHDN, INPUT_PULLUP); 74 | pinMode(AVR_PWR_EN, OUTPUT); 75 | pinMode(LED, OUTPUT); 76 | 77 | debug_println("Trying to initialize INA"); 78 | setINAState(HIGH); 79 | 80 | inaWire.enablePullups(false); 81 | inaWire.setTimeout_ms(200); 82 | inaWire.setClock(10000); 83 | inaWire.setRxBuffer(rxBuf, sizeof(rxBuf)); 84 | inaWire.setTxBuffer(txBuf, sizeof(txBuf)); 85 | 86 | ina219.begin(&inaWire); 87 | 88 | debug_println("Setting up RPI I2C"); 89 | 90 | Wire.begin(8); 91 | Wire.onReceive(handleI2CReceive); 92 | Wire.onRequest(handleI2CRequest); 93 | 94 | attachInterrupt(digitalPinToInterrupt(RPI_SHDN), shutdownSignaled, FALLING); 95 | } 96 | 97 | void loop() 98 | { 99 | //debug_println("Reading from INA"); 100 | registers.voltage = (ina219.getBusVoltage_V() * 1000.0f); 101 | registers.current = ina219.getCurrent_mA(); 102 | //debug_println("Read from INA finish"); 103 | //debug_print_registers(); 104 | 105 | if (registers.voltage < registers.undervoltageLockout) 106 | { 107 | state = STATE_UNDERVOLTAGE; 108 | } 109 | 110 | if (writeEEPROM) 111 | { 112 | writeEEPROM = 0; 113 | if (registers.disableTimeout) 114 | { 115 | registers.disableTimeout = 0; 116 | eeprom_write_log_block(); 117 | while (eeprom_busy()); 118 | registers.disableTimeout = 1; 119 | } 120 | else 121 | { 122 | Serial.println("eeprom write start"); 123 | eeprom_write_log_block(); 124 | Serial.println("eeprom write end"); 125 | } 126 | debug_print_registers(); 127 | } 128 | 129 | debug_print_state_change(); 130 | switch (state) 131 | { 132 | case STATE_ACTIVE: 133 | digitalWrite(AVR_PWR_EN, HIGH); 134 | digitalWrite(LED, HIGH); 135 | delay(500); 136 | if (!registers.disableTimeout) 137 | activeTime++; 138 | 139 | if (registers.timeout < activeTime) 140 | { 141 | debug_println("Timeout reached! Shutting down!"); 142 | state = STATE_SLEEP; 143 | } 144 | break; 145 | case STATE_SLEEP: 146 | registers.disableTimeout = 0; 147 | activeTime = 0; 148 | 149 | while (eeprom_busy()); 150 | 151 | if (registers.voltage > registers.sleepIntervalSlowVoltage) 152 | { 153 | sleep(registers.sleepIntervalFast); 154 | } 155 | else 156 | { 157 | sleep(registers.sleepIntervalSlow); 158 | } 159 | 160 | state = STATE_ACTIVE; 161 | break; 162 | case STATE_UNDERVOLTAGE: 163 | if (registers.voltage > registers.undervoltageHysteresis) 164 | { 165 | state = STATE_ACTIVE; 166 | } 167 | else 168 | { 169 | sleep(registers.sleepIntervalFast); 170 | } 171 | break; 172 | } 173 | 174 | } 175 | 176 | void shutdownSignaled() 177 | { 178 | if (state == STATE_ACTIVE) 179 | state = STATE_SLEEP; 180 | } 181 | 182 | void handleI2CRequest() 183 | { 184 | Wire.write(((uint8_t*)®isters)[i2cRegister]); 185 | } 186 | void handleI2CReceive(volatile int numBytes) 187 | { 188 | Wire.write(0x80); 189 | if (numBytes == 1) 190 | { 191 | // i2cget -y 1 0x08 42 c 192 | i2cRegister = Wire.read(); 193 | } 194 | if (numBytes == 2) 195 | { 196 | // i2cset -y 1 0x08 22 42 b 197 | i2cRegister = Wire.read(); 198 | i2cData = Wire.read(); 199 | 200 | /* Serial.print("Register: "); 201 | Serial.println(i2cRegister); 202 | Serial.print("Data: "); 203 | Serial.println(i2cData);*/ 204 | 205 | if (sizeof(registers) > i2cRegister) 206 | { 207 | ((uint8_t*)®isters)[i2cRegister] = i2cData; 208 | 209 | if (i2cRegister != 12 && // Disable timeout flag 210 | i2cRegister != 17 && // Last timestamp 211 | i2cRegister != 18 && // Last timestamp 212 | i2cRegister != 19 && // Last timestamp 213 | i2cRegister != 20) // Last timestamp 214 | writeEEPROM = 1; 215 | } 216 | } 217 | while (Wire.available()>0){Serial.print(Wire.read(), HEX);} 218 | } 219 | 220 | void setINAState(bool state = LOW) 221 | { 222 | pinMode(INA_3V3, OUTPUT); 223 | digitalWrite(INA_3V3, state); 224 | } 225 | 226 | void sleep(uint16_t sleepTime) 227 | { 228 | debug_println("sleep()"); 229 | 230 | setINAState(false); 231 | 232 | digitalWrite(RPI_SHDN, LOW); 233 | pinMode(RPI_SHDN, OUTPUT); 234 | 235 | digitalWrite(AVR_PWR_EN, LOW); 236 | digitalWrite(LED, LOW); 237 | 238 | Wire.end(); 239 | 240 | while (currentSleepTime != sleepTime) 241 | { 242 | currentSleepTime++; 243 | LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); 244 | } 245 | currentSleepTime = 0; 246 | 247 | pinMode(RPI_SHDN, INPUT_PULLUP); 248 | 249 | setINAState(true); 250 | 251 | Wire.begin(8); 252 | Wire.onReceive(handleI2CReceive); 253 | Wire.onRequest(handleI2CRequest); 254 | 255 | debug_println("wakeup!"); 256 | } 257 | 258 | void debug_print_state_change() 259 | { 260 | if (oldState != state) 261 | { 262 | debug_print("[state] "); 263 | debug_print_state_name(oldState); 264 | debug_print(" -> "); 265 | debug_print_state_name(state); 266 | debug_println(); 267 | 268 | oldState = state; 269 | } 270 | } 271 | 272 | void debug_print_state_name(uint8_t _state) 273 | { 274 | switch (_state) 275 | { 276 | case STATE_ACTIVE: debug_print("STATE_ACTIVE"); break; 277 | case STATE_SLEEP: debug_print("STATE_SLEEP"); break; 278 | case STATE_UNDERVOLTAGE: debug_print("STATE_UNDERVOLTAGE"); break; 279 | default: debug_print("INVALID ("); debug_print(_state); debug_print(")") break; 280 | } 281 | } 282 | 283 | void debug_print_registers() 284 | { 285 | debug_println(""); 286 | debug_println("------------------------------"); 287 | debug_print("Voltage: "); 288 | debug_println(registers.voltage); 289 | debug_print("sleepIntervalFast: "); 290 | debug_println(registers.sleepIntervalFast); 291 | debug_print("sleepIntervalSlow: "); 292 | debug_println(registers.sleepIntervalSlow); 293 | debug_print("sleepIntervalSlowVoltage: "); 294 | debug_println(registers.sleepIntervalSlowVoltage); 295 | debug_print("undervoltageLockout: "); 296 | debug_println(registers.undervoltageLockout); 297 | debug_print("undervoltageHysteresis: "); 298 | debug_println(registers.undervoltageHysteresis); 299 | debug_print("disableTimeout: "); 300 | debug_println(registers.disableTimeout); 301 | debug_print("timeout: "); 302 | debug_println(registers.timeout); 303 | debug_println("------------------------------"); 304 | debug_println(""); 305 | } -------------------------------------------------------------------------------- /pcb/solarcampi-rescue.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # +12V-power 5 | # 6 | DEF +12V-power #PWR 0 0 Y Y 1 F P 7 | F0 "#PWR" 0 -150 50 H I C CNN 8 | F1 "+12V-power" 0 140 50 H V C CNN 9 | F2 "" 0 0 50 H I C CNN 10 | F3 "" 0 0 50 H I C CNN 11 | DRAW 12 | P 2 0 1 0 -30 50 0 100 N 13 | P 2 0 1 0 0 0 0 100 N 14 | P 2 0 1 0 0 100 30 50 N 15 | X +12V 1 0 0 0 U 50 50 1 1 W N 16 | ENDDRAW 17 | ENDDEF 18 | # 19 | # +12VA-power 20 | # 21 | DEF +12VA-power #PWR 0 0 Y Y 1 F P 22 | F0 "#PWR" 0 -150 50 H I C CNN 23 | F1 "+12VA-power" 0 140 50 H V C CNN 24 | F2 "" 0 0 50 H I C CNN 25 | F3 "" 0 0 50 H I C CNN 26 | DRAW 27 | P 2 0 1 0 -30 50 0 100 N 28 | P 2 0 1 0 0 0 0 100 N 29 | P 2 0 1 0 0 100 30 50 N 30 | X +12VA 1 0 0 0 U 50 50 1 1 W N 31 | ENDDRAW 32 | ENDDEF 33 | # 34 | # +3V3-power 35 | # 36 | DEF +3V3-power #PWR 0 0 Y Y 1 F P 37 | F0 "#PWR" 0 -150 50 H I C CNN 38 | F1 "+3V3-power" 0 140 50 H V C CNN 39 | F2 "" 0 0 50 H I C CNN 40 | F3 "" 0 0 50 H I C CNN 41 | DRAW 42 | P 2 0 1 0 -30 50 0 100 N 43 | P 2 0 1 0 0 0 0 100 N 44 | P 2 0 1 0 0 100 30 50 N 45 | X +3V3 1 0 0 0 U 50 50 1 1 W N 46 | ENDDRAW 47 | ENDDEF 48 | # 49 | # ATtiny85-20SU-MCU_Microchip_ATtiny 50 | # 51 | DEF ATtiny85-20SU-MCU_Microchip_ATtiny U 0 20 Y Y 1 F N 52 | F0 "U" -500 550 50 H V L BNN 53 | F1 "ATtiny85-20SU-MCU_Microchip_ATtiny" 100 -550 50 H V L TNN 54 | F2 "Package_SO:SOIJ-8_5.3x5.3mm_P1.27mm" 0 0 50 H I C CIN 55 | F3 "" 0 0 50 H I C CNN 56 | $FPLIST 57 | SOIJ*5.3x5.3mm*P1.27mm* 58 | $ENDFPLIST 59 | DRAW 60 | S -500 -500 500 500 0 1 10 f 61 | X ~RESET~/PB5 1 600 -200 100 L 50 50 1 1 T 62 | X XTAL1/PB3 2 600 0 100 L 50 50 1 1 T 63 | X XTAL2/PB4 3 600 -100 100 L 50 50 1 1 T 64 | X GND 4 0 -600 100 U 50 50 1 1 W 65 | X AREF/PB0 5 600 300 100 L 50 50 1 1 T 66 | X PB1 6 600 200 100 L 50 50 1 1 T 67 | X PB2 7 600 100 100 L 50 50 1 1 T 68 | X VCC 8 0 600 100 D 50 50 1 1 W 69 | ENDDRAW 70 | ENDDEF 71 | # 72 | # C-Device 73 | # 74 | DEF C-Device C 0 10 N Y 1 F N 75 | F0 "C" 25 100 50 H V L CNN 76 | F1 "C-Device" 25 -100 50 H V L CNN 77 | F2 "" 38 -150 50 H I C CNN 78 | F3 "" 0 0 50 H I C CNN 79 | $FPLIST 80 | C_* 81 | $ENDFPLIST 82 | DRAW 83 | P 2 0 1 20 -80 -30 80 -30 N 84 | P 2 0 1 20 -80 30 80 30 N 85 | X ~ 1 0 150 110 D 50 50 1 1 P 86 | X ~ 2 0 -150 110 U 50 50 1 1 P 87 | ENDDRAW 88 | ENDDEF 89 | # 90 | # Conn_02x20_Odd_Even-Connector_Generic 91 | # 92 | DEF Conn_02x20_Odd_Even-Connector_Generic J 0 40 Y N 1 F N 93 | F0 "J" 50 1000 50 H V C CNN 94 | F1 "Conn_02x20_Odd_Even-Connector_Generic" 50 -1100 50 H V C CNN 95 | F2 "" 0 0 50 H I C CNN 96 | F3 "" 0 0 50 H I C CNN 97 | $FPLIST 98 | Connector*:*_2x??_* 99 | $ENDFPLIST 100 | DRAW 101 | S -50 -995 0 -1005 1 1 6 N 102 | S -50 -895 0 -905 1 1 6 N 103 | S -50 -795 0 -805 1 1 6 N 104 | S -50 -695 0 -705 1 1 6 N 105 | S -50 -595 0 -605 1 1 6 N 106 | S -50 -495 0 -505 1 1 6 N 107 | S -50 -395 0 -405 1 1 6 N 108 | S -50 -295 0 -305 1 1 6 N 109 | S -50 -195 0 -205 1 1 6 N 110 | S -50 -95 0 -105 1 1 6 N 111 | S -50 5 0 -5 1 1 6 N 112 | S -50 105 0 95 1 1 6 N 113 | S -50 205 0 195 1 1 6 N 114 | S -50 305 0 295 1 1 6 N 115 | S -50 405 0 395 1 1 6 N 116 | S -50 505 0 495 1 1 6 N 117 | S -50 605 0 595 1 1 6 N 118 | S -50 705 0 695 1 1 6 N 119 | S -50 805 0 795 1 1 6 N 120 | S -50 905 0 895 1 1 6 N 121 | S -50 950 150 -1050 1 1 10 f 122 | S 150 -995 100 -1005 1 1 6 N 123 | S 150 -895 100 -905 1 1 6 N 124 | S 150 -795 100 -805 1 1 6 N 125 | S 150 -695 100 -705 1 1 6 N 126 | S 150 -595 100 -605 1 1 6 N 127 | S 150 -495 100 -505 1 1 6 N 128 | S 150 -395 100 -405 1 1 6 N 129 | S 150 -295 100 -305 1 1 6 N 130 | S 150 -195 100 -205 1 1 6 N 131 | S 150 -95 100 -105 1 1 6 N 132 | S 150 5 100 -5 1 1 6 N 133 | S 150 105 100 95 1 1 6 N 134 | S 150 205 100 195 1 1 6 N 135 | S 150 305 100 295 1 1 6 N 136 | S 150 405 100 395 1 1 6 N 137 | S 150 505 100 495 1 1 6 N 138 | S 150 605 100 595 1 1 6 N 139 | S 150 705 100 695 1 1 6 N 140 | S 150 805 100 795 1 1 6 N 141 | S 150 905 100 895 1 1 6 N 142 | X Pin_1 1 -200 900 150 R 50 50 1 1 P 143 | X Pin_10 10 300 500 150 L 50 50 1 1 P 144 | X Pin_11 11 -200 400 150 R 50 50 1 1 P 145 | X Pin_12 12 300 400 150 L 50 50 1 1 P 146 | X Pin_13 13 -200 300 150 R 50 50 1 1 P 147 | X Pin_14 14 300 300 150 L 50 50 1 1 P 148 | X Pin_15 15 -200 200 150 R 50 50 1 1 P 149 | X Pin_16 16 300 200 150 L 50 50 1 1 P 150 | X Pin_17 17 -200 100 150 R 50 50 1 1 P 151 | X Pin_18 18 300 100 150 L 50 50 1 1 P 152 | X Pin_19 19 -200 0 150 R 50 50 1 1 P 153 | X Pin_2 2 300 900 150 L 50 50 1 1 P 154 | X Pin_20 20 300 0 150 L 50 50 1 1 P 155 | X Pin_21 21 -200 -100 150 R 50 50 1 1 P 156 | X Pin_22 22 300 -100 150 L 50 50 1 1 P 157 | X Pin_23 23 -200 -200 150 R 50 50 1 1 P 158 | X Pin_24 24 300 -200 150 L 50 50 1 1 P 159 | X Pin_25 25 -200 -300 150 R 50 50 1 1 P 160 | X Pin_26 26 300 -300 150 L 50 50 1 1 P 161 | X Pin_27 27 -200 -400 150 R 50 50 1 1 P 162 | X Pin_28 28 300 -400 150 L 50 50 1 1 P 163 | X Pin_29 29 -200 -500 150 R 50 50 1 1 P 164 | X Pin_3 3 -200 800 150 R 50 50 1 1 P 165 | X Pin_30 30 300 -500 150 L 50 50 1 1 P 166 | X Pin_31 31 -200 -600 150 R 50 50 1 1 P 167 | X Pin_32 32 300 -600 150 L 50 50 1 1 P 168 | X Pin_33 33 -200 -700 150 R 50 50 1 1 P 169 | X Pin_34 34 300 -700 150 L 50 50 1 1 P 170 | X Pin_35 35 -200 -800 150 R 50 50 1 1 P 171 | X Pin_36 36 300 -800 150 L 50 50 1 1 P 172 | X Pin_37 37 -200 -900 150 R 50 50 1 1 P 173 | X Pin_38 38 300 -900 150 L 50 50 1 1 P 174 | X Pin_39 39 -200 -1000 150 R 50 50 1 1 P 175 | X Pin_4 4 300 800 150 L 50 50 1 1 P 176 | X Pin_40 40 300 -1000 150 L 50 50 1 1 P 177 | X Pin_5 5 -200 700 150 R 50 50 1 1 P 178 | X Pin_6 6 300 700 150 L 50 50 1 1 P 179 | X Pin_7 7 -200 600 150 R 50 50 1 1 P 180 | X Pin_8 8 300 600 150 L 50 50 1 1 P 181 | X Pin_9 9 -200 500 150 R 50 50 1 1 P 182 | ENDDRAW 183 | ENDDEF 184 | # 185 | # DTC123J-Transistor_BJT 186 | # 187 | DEF DTC123J-Transistor_BJT Q 0 0 Y N 1 F N 188 | F0 "Q" 200 75 50 H V L CNN 189 | F1 "DTC123J-Transistor_BJT" 200 0 50 H V L CNN 190 | F2 "" 0 0 50 H I L CNN 191 | F3 "" 0 0 50 H I L CNN 192 | $FPLIST 193 | SOT?23* 194 | SC?59* 195 | $ENDFPLIST 196 | DRAW 197 | A -50 0 125 901 -901 0 1 10 N -50 125 -50 -125 198 | A 25 0 125 -899 899 0 1 10 N 25 -125 25 125 199 | C -50 0 5 0 1 0 N 200 | C 100 -90 5 0 1 0 N 201 | T 0 -130 35 20 0 0 0 2k2 Normal 0 C C 202 | T 900 -85 -60 20 0 0 0 47k Normal 0 C C 203 | P 2 0 1 0 -135 0 -150 0 N 204 | P 2 0 1 10 -50 -125 25 -125 N 205 | P 2 0 1 10 -50 125 25 125 N 206 | P 2 0 1 0 0 -10 100 90 N 207 | P 2 0 1 20 5 60 5 -65 F 208 | P 2 0 1 0 100 90 100 100 N 209 | P 3 0 1 0 100 -90 0 10 0 10 N 210 | P 4 0 1 0 35 -45 55 -25 75 -65 35 -45 F 211 | P 9 0 1 0 0 0 -75 0 -80 20 -90 -20 -100 20 -110 -20 -120 20 -130 -20 -135 0 N 212 | P 11 0 1 0 -50 0 -50 -15 -30 -20 -70 -30 -30 -40 -70 -50 -30 -60 -70 -70 -50 -75 -50 -90 100 -90 N 213 | X B 1 -250 0 100 R 50 50 1 1 I 214 | X E 2 100 -200 100 U 50 50 1 1 P 215 | X C 3 100 200 100 D 50 50 1 1 P 216 | ENDDRAW 217 | ENDDEF 218 | # 219 | # Fuse-Device 220 | # 221 | DEF Fuse-Device F 0 0 N Y 1 F N 222 | F0 "F" 80 0 50 V V C CNN 223 | F1 "Fuse-Device" -75 0 50 V V C CNN 224 | F2 "" -70 0 50 V I C CNN 225 | F3 "" 0 0 50 H I C CNN 226 | $FPLIST 227 | *Fuse* 228 | $ENDFPLIST 229 | DRAW 230 | S -30 -100 30 100 0 1 10 N 231 | P 2 0 1 0 0 100 0 -100 N 232 | X ~ 1 0 150 50 D 50 50 1 1 P 233 | X ~ 2 0 -150 50 U 50 50 1 1 P 234 | ENDDRAW 235 | ENDDEF 236 | # 237 | # GND-power 238 | # 239 | DEF GND-power #PWR 0 0 Y Y 1 F P 240 | F0 "#PWR" 0 -250 50 H I C CNN 241 | F1 "GND-power" 0 -150 50 H V C CNN 242 | F2 "" 0 0 50 H I C CNN 243 | F3 "" 0 0 50 H I C CNN 244 | DRAW 245 | P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N 246 | X GND 1 0 0 0 D 50 50 1 1 W N 247 | ENDDRAW 248 | ENDDEF 249 | # 250 | # INA226-Analog_ADC 251 | # 252 | DEF INA226-Analog_ADC U 0 20 Y Y 1 F N 253 | F0 "U" 150 450 50 H V C CNN 254 | F1 "INA226-Analog_ADC" 200 -450 50 H V C CNN 255 | F2 "Package_SO:MSOP-10_3x3mm_P0.5mm" 50 100 50 H I C CNN 256 | F3 "" 350 -100 50 H I C CNN 257 | $FPLIST 258 | MSOP*3x3mm*P0.5mm* 259 | $ENDFPLIST 260 | DRAW 261 | S 300 400 -300 -400 0 1 10 f 262 | X A1 1 400 300 100 L 50 50 1 1 P 263 | X Vin+ 10 -400 -100 100 R 50 50 1 1 I 264 | X A0 2 400 200 100 L 50 50 1 1 P 265 | X ~Alert~ 3 400 -300 100 L 50 50 1 1 C 266 | X SDA 4 400 0 100 L 50 50 1 1 B 267 | X SCL 5 400 -100 100 L 50 50 1 1 I 268 | X Vs 6 0 500 100 D 50 50 1 1 W 269 | X GND 7 0 -500 100 U 50 50 1 1 W 270 | X Vbus 8 -400 300 100 R 50 50 1 1 I 271 | X Vin- 9 -400 -200 100 R 50 50 1 1 I 272 | ENDDRAW 273 | ENDDEF 274 | # 275 | # IRLML6402-Transistor_FET 276 | # 277 | DEF IRLML6402-Transistor_FET Q 0 0 Y N 1 F N 278 | F0 "Q" 200 75 50 H V L CNN 279 | F1 "IRLML6402-Transistor_FET" 200 0 50 H V L CNN 280 | F2 "Package_TO_SOT_SMD:SOT-23" 200 -75 50 H I L CIN 281 | F3 "" 0 0 50 H I L CNN 282 | $FPLIST 283 | SOT?23* 284 | $ENDFPLIST 285 | DRAW 286 | C 65 0 111 0 1 10 N 287 | C 100 -70 11 0 1 0 F 288 | C 100 70 11 0 1 0 F 289 | P 2 0 1 0 -100 0 10 0 N 290 | P 2 0 1 0 30 -70 100 -70 N 291 | P 2 0 1 10 30 -50 30 -90 N 292 | P 2 0 1 0 30 0 100 0 N 293 | P 2 0 1 10 30 20 30 -20 N 294 | P 2 0 1 0 30 70 100 70 N 295 | P 2 0 1 10 30 90 30 50 N 296 | P 2 0 1 0 100 -70 100 -100 N 297 | P 2 0 1 0 100 -70 100 0 N 298 | P 2 0 1 0 100 100 100 70 N 299 | P 3 0 1 10 10 75 10 -75 10 -75 N 300 | P 4 0 1 0 90 0 50 -15 50 15 90 0 F 301 | P 4 0 1 0 100 -70 130 -70 130 70 100 70 N 302 | P 4 0 1 0 110 -20 115 -15 145 -15 150 -10 N 303 | P 4 0 1 0 130 -15 115 10 145 10 130 -15 N 304 | X G 1 -200 0 100 R 50 50 1 1 I 305 | X S 2 100 -200 100 U 50 50 1 1 P 306 | X D 3 100 200 100 D 50 50 1 1 P 307 | ENDDRAW 308 | ENDDEF 309 | # 310 | # R-Device 311 | # 312 | DEF R-Device R 0 0 N Y 1 F N 313 | F0 "R" 80 0 50 V V C CNN 314 | F1 "R-Device" 0 0 50 V V C CNN 315 | F2 "" -70 0 50 V I C CNN 316 | F3 "" 0 0 50 H I C CNN 317 | $FPLIST 318 | R_* 319 | $ENDFPLIST 320 | DRAW 321 | S -40 -100 40 100 0 1 10 N 322 | X ~ 1 0 150 50 D 50 50 1 1 P 323 | X ~ 2 0 -150 50 U 50 50 1 1 P 324 | ENDDRAW 325 | ENDDEF 326 | # 327 | # Screw_Terminal_01x02-Connector 328 | # 329 | DEF Screw_Terminal_01x02-Connector J 0 40 Y N 1 F N 330 | F0 "J" 0 100 50 H V C CNN 331 | F1 "Screw_Terminal_01x02-Connector" 0 -200 50 H V C CNN 332 | F2 "" 0 0 50 H I C CNN 333 | F3 "" 0 0 50 H I C CNN 334 | $FPLIST 335 | TerminalBlock*:* 336 | $ENDFPLIST 337 | DRAW 338 | C 0 -100 25 1 1 6 N 339 | C 0 0 25 1 1 6 N 340 | S -50 50 50 -150 1 1 10 f 341 | P 2 1 1 6 -21 -87 13 -120 N 342 | P 2 1 1 6 -21 13 13 -20 N 343 | P 2 1 1 6 -14 -80 20 -113 N 344 | P 2 1 1 6 -14 20 20 -13 N 345 | X Pin_1 1 -200 0 150 R 50 50 1 1 P 346 | X Pin_2 2 -200 -100 150 R 50 50 1 1 P 347 | ENDDRAW 348 | ENDDEF 349 | # 350 | # TPS71533__SC70-Regulator_Linear 351 | # 352 | DEF TPS71533__SC70-Regulator_Linear U 0 10 Y Y 1 F N 353 | F0 "U" -150 125 50 H V C CNN 354 | F1 "TPS71533__SC70-Regulator_Linear" 0 125 50 H V L CNN 355 | F2 "Package_TO_SOT_SMD:SOT-353_SC-70-5" 0 225 50 H I C CNN 356 | F3 "" -300 800 50 H I C CNN 357 | $FPLIST 358 | *SC?70* 359 | $ENDFPLIST 360 | DRAW 361 | S -200 75 200 -200 0 1 10 f 362 | X NC 1 300 -100 100 L 50 50 1 1 N N 363 | X GND 2 0 -300 100 U 50 50 1 1 W 364 | X NC 3 -300 -100 100 R 50 50 1 1 N N 365 | X IN 4 -300 0 100 R 50 50 1 1 W 366 | X OUT 5 300 0 100 L 50 50 1 1 w 367 | ENDDRAW 368 | ENDDEF 369 | # 370 | #End Library 371 | -------------------------------------------------------------------------------- /pcb/fab/solarcampi-B_SilkS.gbo: -------------------------------------------------------------------------------- 1 | G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.2* 2 | G04 #@! TF.CreationDate,2019-05-31T13:26:26+02:00* 3 | G04 #@! TF.ProjectId,solarcampi,736f6c61-7263-4616-9d70-692e6b696361,1.0.8* 4 | G04 #@! TF.SameCoordinates,Original* 5 | G04 #@! TF.FileFunction,Legend,Bot* 6 | G04 #@! TF.FilePolarity,Positive* 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.1.2) date 2019-05-31 13:26:26* 10 | %MOMM*% 11 | %LPD*% 12 | G04 APERTURE LIST* 13 | %ADD10C,0.150000*% 14 | %ADD11C,0.120000*% 15 | G04 APERTURE END LIST* 16 | D10* 17 | X99637000Y-59367000D02* 18 | X99637000Y-59592000D01* 19 | X92387000Y-59367000D02* 20 | X92387000Y-59692000D01* 21 | X92387000Y-66617000D02* 22 | X92387000Y-66292000D01* 23 | X99637000Y-66617000D02* 24 | X99637000Y-66292000D01* 25 | X99637000Y-59367000D02* 26 | X99312000Y-59367000D01* 27 | X99637000Y-66617000D02* 28 | X99312000Y-66617000D01* 29 | X92387000Y-66617000D02* 30 | X92712000Y-66617000D01* 31 | X92387000Y-59367000D02* 32 | X92712000Y-59367000D01* 33 | X99637000Y-59592000D02* 34 | X101062000Y-59592000D01* 35 | X87019000Y-60018000D02* 36 | X88244000Y-60018000D01* 37 | X87019000Y-63143000D02* 38 | X83669000Y-63143000D01* 39 | X87019000Y-59793000D02* 40 | X83669000Y-59793000D01* 41 | X87019000Y-63143000D02* 42 | X87019000Y-62843000D01* 43 | X83669000Y-63143000D02* 44 | X83669000Y-62843000D01* 45 | X83669000Y-59793000D02* 46 | X83669000Y-60093000D01* 47 | X87019000Y-59793000D02* 48 | X87019000Y-60018000D01* 49 | D11* 50 | X104954000Y-58681252D02* 51 | X104954000Y-58158748D01* 52 | X106374000Y-58681252D02* 53 | X106374000Y-58158748D01* 54 | X87632000Y-72446000D02* 55 | X89092000Y-72446000D01* 56 | X87632000Y-69286000D02* 57 | X89792000Y-69286000D01* 58 | X87632000Y-69286000D02* 59 | X87632000Y-70216000D01* 60 | X87632000Y-72446000D02* 61 | X87632000Y-71516000D01* 62 | X82748000Y-69090000D02* 63 | X82748000Y-70550000D01* 64 | X85908000Y-69090000D02* 65 | X85908000Y-71250000D01* 66 | X85908000Y-69090000D02* 67 | X84978000Y-69090000D01* 68 | X82748000Y-69090000D02* 69 | X83678000Y-69090000D01* 70 | X91198000Y-73644000D02* 71 | X93998000Y-73644000D01* 72 | X93998000Y-73644000D02* 73 | X93998000Y-71644000D01* 74 | X93998000Y-71644000D02* 75 | X91198000Y-71644000D01* 76 | X91198000Y-71644000D02* 77 | X91198000Y-73644000D01* 78 | X104088000Y-58167748D02* 79 | X104088000Y-58690252D01* 80 | X102668000Y-58167748D02* 81 | X102668000Y-58690252D01* 82 | X78792000Y-61729252D02* 83 | X78792000Y-61206748D01* 84 | X80212000Y-61729252D02* 85 | X80212000Y-61206748D01* 86 | X102668000Y-63253252D02* 87 | X102668000Y-62730748D01* 88 | X104088000Y-63253252D02* 89 | X104088000Y-62730748D01* 90 | X77418000Y-62222748D02* 91 | X77418000Y-62745252D01* 92 | X75998000Y-62222748D02* 93 | X75998000Y-62745252D01* 94 | D10* 95 | X96773904Y-56394380D02* 96 | X96773904Y-57203904D01* 97 | X96726285Y-57299142D01* 98 | X96678666Y-57346761D01* 99 | X96583428Y-57394380D01* 100 | X96392952Y-57394380D01* 101 | X96297714Y-57346761D01* 102 | X96250095Y-57299142D01* 103 | X96202476Y-57203904D01* 104 | X96202476Y-56394380D01* 105 | X95773904Y-56489619D02* 106 | X95726285Y-56442000D01* 107 | X95631047Y-56394380D01* 108 | X95392952Y-56394380D01* 109 | X95297714Y-56442000D01* 110 | X95250095Y-56489619D01* 111 | X95202476Y-56584857D01* 112 | X95202476Y-56680095D01* 113 | X95250095Y-56822952D01* 114 | X95821523Y-57394380D01* 115 | X95202476Y-57394380D01* 116 | X86105904Y-58320380D02* 117 | X86105904Y-59129904D01* 118 | X86058285Y-59225142D01* 119 | X86010666Y-59272761D01* 120 | X85915428Y-59320380D01* 121 | X85724952Y-59320380D01* 122 | X85629714Y-59272761D01* 123 | X85582095Y-59225142D01* 124 | X85534476Y-59129904D01* 125 | X85534476Y-58320380D01* 126 | X84534476Y-59320380D02* 127 | X85105904Y-59320380D01* 128 | X84820190Y-59320380D02* 129 | X84820190Y-58320380D01* 130 | X84915428Y-58463238D01* 131 | X85010666Y-58558476D01* 132 | X85105904Y-58606095D01* 133 | X107766380Y-58253333D02* 134 | X107290190Y-57920000D01* 135 | X107766380Y-57681904D02* 136 | X106766380Y-57681904D01* 137 | X106766380Y-58062857D01* 138 | X106814000Y-58158095D01* 139 | X106861619Y-58205714D01* 140 | X106956857Y-58253333D01* 141 | X107099714Y-58253333D01* 142 | X107194952Y-58205714D01* 143 | X107242571Y-58158095D01* 144 | X107290190Y-58062857D01* 145 | X107290190Y-57681904D01* 146 | X106861619Y-58634285D02* 147 | X106814000Y-58681904D01* 148 | X106766380Y-58777142D01* 149 | X106766380Y-59015238D01* 150 | X106814000Y-59110476D01* 151 | X106861619Y-59158095D01* 152 | X106956857Y-59205714D01* 153 | X107052095Y-59205714D01* 154 | X107194952Y-59158095D01* 155 | X107766380Y-58586666D01* 156 | X107766380Y-59205714D01* 157 | X88487238Y-68913619D02* 158 | X88582476Y-68866000D01* 159 | X88677714Y-68770761D01* 160 | X88820571Y-68627904D01* 161 | X88915809Y-68580285D01* 162 | X89011047Y-68580285D01* 163 | X88963428Y-68818380D02* 164 | X89058666Y-68770761D01* 165 | X89153904Y-68675523D01* 166 | X89201523Y-68485047D01* 167 | X89201523Y-68151714D01* 168 | X89153904Y-67961238D01* 169 | X89058666Y-67866000D01* 170 | X88963428Y-67818380D01* 171 | X88772952Y-67818380D01* 172 | X88677714Y-67866000D01* 173 | X88582476Y-67961238D01* 174 | X88534857Y-68151714D01* 175 | X88534857Y-68485047D01* 176 | X88582476Y-68675523D01* 177 | X88677714Y-68770761D01* 178 | X88772952Y-68818380D01* 179 | X88963428Y-68818380D01* 180 | X88153904Y-67913619D02* 181 | X88106285Y-67866000D01* 182 | X88011047Y-67818380D01* 183 | X87772952Y-67818380D01* 184 | X87677714Y-67866000D01* 185 | X87630095Y-67913619D01* 186 | X87582476Y-68008857D01* 187 | X87582476Y-68104095D01* 188 | X87630095Y-68246952D01* 189 | X88201523Y-68818380D01* 190 | X87582476Y-68818380D01* 191 | X87375619Y-69754761D02* 192 | X87328000Y-69659523D01* 193 | X87232761Y-69564285D01* 194 | X87089904Y-69421428D01* 195 | X87042285Y-69326190D01* 196 | X87042285Y-69230952D01* 197 | X87280380Y-69278571D02* 198 | X87232761Y-69183333D01* 199 | X87137523Y-69088095D01* 200 | X86947047Y-69040476D01* 201 | X86613714Y-69040476D01* 202 | X86423238Y-69088095D01* 203 | X86328000Y-69183333D01* 204 | X86280380Y-69278571D01* 205 | X86280380Y-69469047D01* 206 | X86328000Y-69564285D01* 207 | X86423238Y-69659523D01* 208 | X86613714Y-69707142D01* 209 | X86947047Y-69707142D01* 210 | X87137523Y-69659523D01* 211 | X87232761Y-69564285D01* 212 | X87280380Y-69469047D01* 213 | X87280380Y-69278571D01* 214 | X87280380Y-70659523D02* 215 | X87280380Y-70088095D01* 216 | X87280380Y-70373809D02* 217 | X86280380Y-70373809D01* 218 | X86423238Y-70278571D01* 219 | X86518476Y-70183333D01* 220 | X86566095Y-70088095D01* 221 | X93799047Y-74282380D02* 222 | X93227619Y-74282380D01* 223 | X93513333Y-75282380D02* 224 | X93513333Y-74282380D01* 225 | X92370476Y-74330000D02* 226 | X92465714Y-74282380D01* 227 | X92608571Y-74282380D01* 228 | X92751428Y-74330000D01* 229 | X92846666Y-74425238D01* 230 | X92894285Y-74520476D01* 231 | X92941904Y-74710952D01* 232 | X92941904Y-74853809D01* 233 | X92894285Y-75044285D01* 234 | X92846666Y-75139523D01* 235 | X92751428Y-75234761D01* 236 | X92608571Y-75282380D01* 237 | X92513333Y-75282380D01* 238 | X92370476Y-75234761D01* 239 | X92322857Y-75187142D01* 240 | X92322857Y-74853809D01* 241 | X92513333Y-74853809D01* 242 | X92037142Y-74282380D02* 243 | X91465714Y-74282380D01* 244 | X91751428Y-75282380D02* 245 | X91751428Y-74282380D01* 246 | X91370476Y-75377619D02* 247 | X90608571Y-75377619D01* 248 | X90370476Y-75282380D02* 249 | X90370476Y-74282380D01* 250 | X89989523Y-74282380D01* 251 | X89894285Y-74330000D01* 252 | X89846666Y-74377619D01* 253 | X89799047Y-74472857D01* 254 | X89799047Y-74615714D01* 255 | X89846666Y-74710952D01* 256 | X89894285Y-74758571D01* 257 | X89989523Y-74806190D01* 258 | X90370476Y-74806190D01* 259 | X89465714Y-74282380D02* 260 | X89227619Y-75282380D01* 261 | X89037142Y-74568095D01* 262 | X88846666Y-75282380D01* 263 | X88608571Y-74282380D01* 264 | X87656190Y-75282380D02* 265 | X87989523Y-74806190D01* 266 | X88227619Y-75282380D02* 267 | X88227619Y-74282380D01* 268 | X87846666Y-74282380D01* 269 | X87751428Y-74330000D01* 270 | X87703809Y-74377619D01* 271 | X87656190Y-74472857D01* 272 | X87656190Y-74615714D01* 273 | X87703809Y-74710952D01* 274 | X87751428Y-74758571D01* 275 | X87846666Y-74806190D01* 276 | X88227619Y-74806190D01* 277 | X102085142Y-58262333D02* 278 | X102132761Y-58214714D01* 279 | X102180380Y-58071857D01* 280 | X102180380Y-57976619D01* 281 | X102132761Y-57833761D01* 282 | X102037523Y-57738523D01* 283 | X101942285Y-57690904D01* 284 | X101751809Y-57643285D01* 285 | X101608952Y-57643285D01* 286 | X101418476Y-57690904D01* 287 | X101323238Y-57738523D01* 288 | X101228000Y-57833761D01* 289 | X101180380Y-57976619D01* 290 | X101180380Y-58071857D01* 291 | X101228000Y-58214714D01* 292 | X101275619Y-58262333D01* 293 | X101180380Y-59119476D02* 294 | X101180380Y-58929000D01* 295 | X101228000Y-58833761D01* 296 | X101275619Y-58786142D01* 297 | X101418476Y-58690904D01* 298 | X101608952Y-58643285D01* 299 | X101989904Y-58643285D01* 300 | X102085142Y-58690904D01* 301 | X102132761Y-58738523D01* 302 | X102180380Y-58833761D01* 303 | X102180380Y-59024238D01* 304 | X102132761Y-59119476D01* 305 | X102085142Y-59167095D01* 306 | X101989904Y-59214714D01* 307 | X101751809Y-59214714D01* 308 | X101656571Y-59167095D01* 309 | X101608952Y-59119476D01* 310 | X101561333Y-59024238D01* 311 | X101561333Y-58833761D01* 312 | X101608952Y-58738523D01* 313 | X101656571Y-58690904D01* 314 | X101751809Y-58643285D01* 315 | X81509142Y-61301333D02* 316 | X81556761Y-61253714D01* 317 | X81604380Y-61110857D01* 318 | X81604380Y-61015619D01* 319 | X81556761Y-60872761D01* 320 | X81461523Y-60777523D01* 321 | X81366285Y-60729904D01* 322 | X81175809Y-60682285D01* 323 | X81032952Y-60682285D01* 324 | X80842476Y-60729904D01* 325 | X80747238Y-60777523D01* 326 | X80652000Y-60872761D01* 327 | X80604380Y-61015619D01* 328 | X80604380Y-61110857D01* 329 | X80652000Y-61253714D01* 330 | X80699619Y-61301333D01* 331 | X80604380Y-62206095D02* 332 | X80604380Y-61729904D01* 333 | X81080571Y-61682285D01* 334 | X81032952Y-61729904D01* 335 | X80985333Y-61825142D01* 336 | X80985333Y-62063238D01* 337 | X81032952Y-62158476D01* 338 | X81080571Y-62206095D01* 339 | X81175809Y-62253714D01* 340 | X81413904Y-62253714D01* 341 | X81509142Y-62206095D01* 342 | X81556761Y-62158476D01* 343 | X81604380Y-62063238D01* 344 | X81604380Y-61825142D01* 345 | X81556761Y-61729904D01* 346 | X81509142Y-61682285D01* 347 | X104670857Y-63158666D02* 348 | X104623238Y-63206285D01* 349 | X104575619Y-63349142D01* 350 | X104575619Y-63444380D01* 351 | X104623238Y-63587238D01* 352 | X104718476Y-63682476D01* 353 | X104813714Y-63730095D01* 354 | X105004190Y-63777714D01* 355 | X105147047Y-63777714D01* 356 | X105337523Y-63730095D01* 357 | X105432761Y-63682476D01* 358 | X105528000Y-63587238D01* 359 | X105575619Y-63444380D01* 360 | X105575619Y-63349142D01* 361 | X105528000Y-63206285D01* 362 | X105480380Y-63158666D01* 363 | X105480380Y-62777714D02* 364 | X105528000Y-62730095D01* 365 | X105575619Y-62634857D01* 366 | X105575619Y-62396761D01* 367 | X105528000Y-62301523D01* 368 | X105480380Y-62253904D01* 369 | X105385142Y-62206285D01* 370 | X105289904Y-62206285D01* 371 | X105147047Y-62253904D01* 372 | X104575619Y-62825333D01* 373 | X104575619Y-62206285D01* 374 | X75415142Y-62317333D02* 375 | X75462761Y-62269714D01* 376 | X75510380Y-62126857D01* 377 | X75510380Y-62031619D01* 378 | X75462761Y-61888761D01* 379 | X75367523Y-61793523D01* 380 | X75272285Y-61745904D01* 381 | X75081809Y-61698285D01* 382 | X74938952Y-61698285D01* 383 | X74748476Y-61745904D01* 384 | X74653238Y-61793523D01* 385 | X74558000Y-61888761D01* 386 | X74510380Y-62031619D01* 387 | X74510380Y-62126857D01* 388 | X74558000Y-62269714D01* 389 | X74605619Y-62317333D01* 390 | X75510380Y-63269714D02* 391 | X75510380Y-62698285D01* 392 | X75510380Y-62984000D02* 393 | X74510380Y-62984000D01* 394 | X74653238Y-62888761D01* 395 | X74748476Y-62793523D01* 396 | X74796095Y-62698285D01* 397 | M02* 398 | -------------------------------------------------------------------------------- /firmware/src/Adafruit_INA219.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | * @file Adafruit_INA219.cpp 3 | * 4 | * @mainpage Adafruit INA219 current/power monitor IC 5 | * 6 | * @section intro_sec Introduction 7 | * 8 | * Driver for the INA219 current sensor 9 | * 10 | * This is a library for the Adafruit INA219 breakout 11 | * ----> https://www.adafruit.com/products/904 12 | * 13 | * Adafruit invests time and resources providing this open source code, 14 | * please support Adafruit and open-source hardware by purchasing 15 | * products from Adafruit! 16 | * 17 | * @section author Author 18 | * 19 | * Written by Kevin "KTOWN" Townsend for Adafruit Industries. 20 | * 21 | * @section license License 22 | * 23 | * BSD license, all text here must be included in any redistribution. 24 | * 25 | */ 26 | 27 | #include "Arduino.h" 28 | 29 | #include 30 | 31 | #include "Adafruit_INA219.h" 32 | 33 | /*! 34 | * @brief Sends a single command byte over I2C 35 | * @param reg 36 | * register address 37 | * @param value 38 | * value to write 39 | */ 40 | void Adafruit_INA219::wireWriteRegister(uint8_t reg, uint16_t value) { 41 | _i2c->beginTransmission(ina219_i2caddr); 42 | _i2c->write(reg); // Register 43 | _i2c->write((value >> 8) & 0xFF); // Upper 8-bits 44 | _i2c->write(value & 0xFF); // Lower 8-bits 45 | _i2c->endTransmission(); 46 | } 47 | 48 | /*! 49 | * @brief Reads a 16 bit values over I2C 50 | * @param reg 51 | * register address 52 | * @param *value 53 | * read value 54 | */ 55 | void Adafruit_INA219::wireReadRegister(uint8_t reg, uint16_t *value) { 56 | 57 | _i2c->beginTransmission(ina219_i2caddr); 58 | _i2c->write(reg); // Register 59 | _i2c->endTransmission(); 60 | 61 | delay(1); // Max 12-bit conversion time is 586us per sample 62 | 63 | _i2c->requestFrom(ina219_i2caddr, (uint8_t)2); 64 | // Shift values to create properly formed integer 65 | *value = ((_i2c->read() << 8) | _i2c->read()); 66 | } 67 | 68 | /*! 69 | * @brief Configures to INA219 to be able to measure up to 32V and 2A 70 | * of current. Each unit of current corresponds to 100uA, and 71 | * each unit of power corresponds to 2mW. Counter overflow 72 | * occurs at 3.2A. 73 | * @note These calculations assume a 0.1 ohm resistor is present 74 | */ 75 | void Adafruit_INA219::setCalibration_32V_2A() { 76 | // By default we use a pretty huge range for the input voltage, 77 | // which probably isn't the most appropriate choice for system 78 | // that don't use a lot of power. But all of the calculations 79 | // are shown below if you want to change the settings. You will 80 | // also need to change any relevant register settings, such as 81 | // setting the VBUS_MAX to 16V instead of 32V, etc. 82 | 83 | // VBUS_MAX = 32V (Assumes 32V, can also be set to 16V) 84 | // VSHUNT_MAX = 0.32 (Assumes Gain 8, 320mV, can also be 0.16, 0.08, 0.04) 85 | // RSHUNT = 0.1 (Resistor value in ohms) 86 | 87 | // 1. Determine max possible current 88 | // MaxPossible_I = VSHUNT_MAX / RSHUNT 89 | // MaxPossible_I = 3.2A 90 | 91 | // 2. Determine max expected current 92 | // MaxExpected_I = 2.0A 93 | 94 | // 3. Calculate possible range of LSBs (Min = 15-bit, Max = 12-bit) 95 | // MinimumLSB = MaxExpected_I/32767 96 | // MinimumLSB = 0.000061 (61uA per bit) 97 | // MaximumLSB = MaxExpected_I/4096 98 | // MaximumLSB = 0,000488 (488uA per bit) 99 | 100 | // 4. Choose an LSB between the min and max values 101 | // (Preferrably a roundish number close to MinLSB) 102 | // CurrentLSB = 0.0001 (100uA per bit) 103 | 104 | // 5. Compute the calibration register 105 | // Cal = trunc (0.04096 / (Current_LSB * RSHUNT)) 106 | // Cal = 4096 (0x1000) 107 | 108 | ina219_calValue = 4096; 109 | 110 | // 6. Calculate the power LSB 111 | // PowerLSB = 20 * CurrentLSB 112 | // PowerLSB = 0.002 (2mW per bit) 113 | 114 | // 7. Compute the maximum current and shunt voltage values before overflow 115 | // 116 | // Max_Current = Current_LSB * 32767 117 | // Max_Current = 3.2767A before overflow 118 | // 119 | // If Max_Current > Max_Possible_I then 120 | // Max_Current_Before_Overflow = MaxPossible_I 121 | // Else 122 | // Max_Current_Before_Overflow = Max_Current 123 | // End If 124 | // 125 | // Max_ShuntVoltage = Max_Current_Before_Overflow * RSHUNT 126 | // Max_ShuntVoltage = 0.32V 127 | // 128 | // If Max_ShuntVoltage >= VSHUNT_MAX 129 | // Max_ShuntVoltage_Before_Overflow = VSHUNT_MAX 130 | // Else 131 | // Max_ShuntVoltage_Before_Overflow = Max_ShuntVoltage 132 | // End If 133 | 134 | // 8. Compute the Maximum Power 135 | // MaximumPower = Max_Current_Before_Overflow * VBUS_MAX 136 | // MaximumPower = 3.2 * 32V 137 | // MaximumPower = 102.4W 138 | 139 | // Set multipliers to convert raw current/power values 140 | ina219_currentDivider_mA = 10; // Current LSB = 100uA per bit (1000/100 = 10) 141 | ina219_powerMultiplier_mW = 2; // Power LSB = 1mW per bit (2/1) 142 | 143 | // Set Calibration register to 'Cal' calculated above 144 | wireWriteRegister(INA219_REG_CALIBRATION, ina219_calValue); 145 | 146 | // Set Config register to take into account the settings above 147 | uint16_t config = INA219_CONFIG_BVOLTAGERANGE_32V | 148 | INA219_CONFIG_GAIN_8_320MV | INA219_CONFIG_BADCRES_12BIT | 149 | INA219_CONFIG_SADCRES_12BIT_1S_532US | 150 | INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS; 151 | wireWriteRegister(INA219_REG_CONFIG, config); 152 | } 153 | 154 | /*! 155 | * @brief Configures to INA219 to be able to measure up to 32V and 1A 156 | * of current. Each unit of current corresponds to 40uA, and each 157 | * unit of power corresponds to 800�W. Counter overflow occurs at 158 | * 1.3A. 159 | * @note These calculations assume a 0.1 ohm resistor is present 160 | */ 161 | void Adafruit_INA219::setCalibration_32V_1A() { 162 | // By default we use a pretty huge range for the input voltage, 163 | // which probably isn't the most appropriate choice for system 164 | // that don't use a lot of power. But all of the calculations 165 | // are shown below if you want to change the settings. You will 166 | // also need to change any relevant register settings, such as 167 | // setting the VBUS_MAX to 16V instead of 32V, etc. 168 | 169 | // VBUS_MAX = 32V (Assumes 32V, can also be set to 16V) 170 | // VSHUNT_MAX = 0.32 (Assumes Gain 8, 320mV, can also be 0.16, 0.08, 0.04) 171 | // RSHUNT = 0.1 (Resistor value in ohms) 172 | 173 | // 1. Determine max possible current 174 | // MaxPossible_I = VSHUNT_MAX / RSHUNT 175 | // MaxPossible_I = 3.2A 176 | 177 | // 2. Determine max expected current 178 | // MaxExpected_I = 1.0A 179 | 180 | // 3. Calculate possible range of LSBs (Min = 15-bit, Max = 12-bit) 181 | // MinimumLSB = MaxExpected_I/32767 182 | // MinimumLSB = 0.0000305 (30.5�A per bit) 183 | // MaximumLSB = MaxExpected_I/4096 184 | // MaximumLSB = 0.000244 (244�A per bit) 185 | 186 | // 4. Choose an LSB between the min and max values 187 | // (Preferrably a roundish number close to MinLSB) 188 | // CurrentLSB = 0.0000400 (40�A per bit) 189 | 190 | // 5. Compute the calibration register 191 | // Cal = trunc (0.04096 / (Current_LSB * RSHUNT)) 192 | // Cal = 10240 (0x2800) 193 | 194 | ina219_calValue = 10240; 195 | 196 | // 6. Calculate the power LSB 197 | // PowerLSB = 20 * CurrentLSB 198 | // PowerLSB = 0.0008 (800�W per bit) 199 | 200 | // 7. Compute the maximum current and shunt voltage values before overflow 201 | // 202 | // Max_Current = Current_LSB * 32767 203 | // Max_Current = 1.31068A before overflow 204 | // 205 | // If Max_Current > Max_Possible_I then 206 | // Max_Current_Before_Overflow = MaxPossible_I 207 | // Else 208 | // Max_Current_Before_Overflow = Max_Current 209 | // End If 210 | // 211 | // ... In this case, we're good though since Max_Current is less than 212 | // MaxPossible_I 213 | // 214 | // Max_ShuntVoltage = Max_Current_Before_Overflow * RSHUNT 215 | // Max_ShuntVoltage = 0.131068V 216 | // 217 | // If Max_ShuntVoltage >= VSHUNT_MAX 218 | // Max_ShuntVoltage_Before_Overflow = VSHUNT_MAX 219 | // Else 220 | // Max_ShuntVoltage_Before_Overflow = Max_ShuntVoltage 221 | // End If 222 | 223 | // 8. Compute the Maximum Power 224 | // MaximumPower = Max_Current_Before_Overflow * VBUS_MAX 225 | // MaximumPower = 1.31068 * 32V 226 | // MaximumPower = 41.94176W 227 | 228 | // Set multipliers to convert raw current/power values 229 | ina219_currentDivider_mA = 25; // Current LSB = 40uA per bit (1000/40 = 25) 230 | ina219_powerMultiplier_mW = 0.8f; // Power LSB = 800uW per bit 231 | 232 | // Set Calibration register to 'Cal' calculated above 233 | wireWriteRegister(INA219_REG_CALIBRATION, ina219_calValue); 234 | 235 | // Set Config register to take into account the settings above 236 | uint16_t config = INA219_CONFIG_BVOLTAGERANGE_32V | 237 | INA219_CONFIG_GAIN_8_320MV | INA219_CONFIG_BADCRES_12BIT | 238 | INA219_CONFIG_SADCRES_12BIT_1S_532US | 239 | INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS; 240 | wireWriteRegister(INA219_REG_CONFIG, config); 241 | } 242 | 243 | /*! 244 | * @brief set device to alibration which uses the highest precision for 245 | * current measurement (0.1mA), at the expense of 246 | * only supporting 16V at 400mA max. 247 | */ 248 | void Adafruit_INA219::setCalibration_16V_400mA() { 249 | 250 | // Calibration which uses the highest precision for 251 | // current measurement (0.1mA), at the expense of 252 | // only supporting 16V at 400mA max. 253 | 254 | // VBUS_MAX = 16V 255 | // VSHUNT_MAX = 0.04 (Assumes Gain 1, 40mV) 256 | // RSHUNT = 0.1 (Resistor value in ohms) 257 | 258 | // 1. Determine max possible current 259 | // MaxPossible_I = VSHUNT_MAX / RSHUNT 260 | // MaxPossible_I = 0.4A 261 | 262 | // 2. Determine max expected current 263 | // MaxExpected_I = 0.4A 264 | 265 | // 3. Calculate possible range of LSBs (Min = 15-bit, Max = 12-bit) 266 | // MinimumLSB = MaxExpected_I/32767 267 | // MinimumLSB = 0.0000122 (12uA per bit) 268 | // MaximumLSB = MaxExpected_I/4096 269 | // MaximumLSB = 0.0000977 (98uA per bit) 270 | 271 | // 4. Choose an LSB between the min and max values 272 | // (Preferrably a roundish number close to MinLSB) 273 | // CurrentLSB = 0.00005 (50uA per bit) 274 | 275 | // 5. Compute the calibration register 276 | // Cal = trunc (0.04096 / (Current_LSB * RSHUNT)) 277 | // Cal = 8192 (0x2000) 278 | 279 | ina219_calValue = 10240; 280 | 281 | // 6. Calculate the power LSB 282 | // PowerLSB = 20 * CurrentLSB 283 | // PowerLSB = 0.001 (1mW per bit) 284 | 285 | // 7. Compute the maximum current and shunt voltage values before overflow 286 | // 287 | // Max_Current = Current_LSB * 32767 288 | // Max_Current = 1.63835A before overflow 289 | // 290 | // If Max_Current > Max_Possible_I then 291 | // Max_Current_Before_Overflow = MaxPossible_I 292 | // Else 293 | // Max_Current_Before_Overflow = Max_Current 294 | // End If 295 | // 296 | // Max_Current_Before_Overflow = MaxPossible_I 297 | // Max_Current_Before_Overflow = 0.4 298 | // 299 | // Max_ShuntVoltage = Max_Current_Before_Overflow * RSHUNT 300 | // Max_ShuntVoltage = 0.04V 301 | // 302 | // If Max_ShuntVoltage >= VSHUNT_MAX 303 | // Max_ShuntVoltage_Before_Overflow = VSHUNT_MAX 304 | // Else 305 | // Max_ShuntVoltage_Before_Overflow = Max_ShuntVoltage 306 | // End If 307 | // 308 | // Max_ShuntVoltage_Before_Overflow = VSHUNT_MAX 309 | // Max_ShuntVoltage_Before_Overflow = 0.04V 310 | 311 | // 8. Compute the Maximum Power 312 | // MaximumPower = Max_Current_Before_Overflow * VBUS_MAX 313 | // MaximumPower = 0.4 * 16V 314 | // MaximumPower = 6.4W 315 | 316 | // Set multipliers to convert raw current/power values 317 | ina219_currentDivider_mA = 5; // Current LSB = 50uA per bit (1000/50 = 20) 318 | ina219_powerMultiplier_mW = 1.0f; // Power LSB = 1mW per bit 319 | 320 | // Set Calibration register to 'Cal' calculated above 321 | wireWriteRegister(INA219_REG_CALIBRATION, ina219_calValue); 322 | 323 | // Set Config register to take into account the settings above 324 | uint16_t config = INA219_CONFIG_BVOLTAGERANGE_32V | 325 | INA219_CONFIG_GAIN_8_320MV | INA219_CONFIG_BADCRES_12BIT | 326 | INA219_CONFIG_SADCRES_12BIT_1S_532US | 327 | INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS; 328 | wireWriteRegister(INA219_REG_CONFIG, config); 329 | } 330 | 331 | /*! 332 | * @brief Instantiates a new INA219 class 333 | * @param addr the I2C address the device can be found on. Default is 0x40 334 | */ 335 | Adafruit_INA219::Adafruit_INA219(uint8_t addr) { 336 | ina219_i2caddr = addr; 337 | ina219_currentDivider_mA = 0; 338 | ina219_powerMultiplier_mW = 0.0f; 339 | } 340 | 341 | /*! 342 | * @brief Setups the HW (defaults to 32V and 2A for calibration values) 343 | * @param theWire the SoftWire object to use 344 | */ 345 | void Adafruit_INA219::begin(SoftWire *theWire) { 346 | _i2c = theWire; 347 | init(); 348 | } 349 | 350 | /*! 351 | * @brief begin I2C and set up the hardware 352 | */ 353 | 354 | void Adafruit_INA219::init() { 355 | _i2c->begin(); 356 | 357 | // Set chip to large range config values to start 358 | setCalibration_16V_400mA(); 359 | } 360 | 361 | /*! 362 | * @brief Gets the raw bus voltage (16-bit signed integer, so +-32767) 363 | * @return the raw bus voltage reading 364 | */ 365 | int16_t Adafruit_INA219::getBusVoltage_raw() { 366 | uint16_t value; 367 | wireReadRegister(INA219_REG_BUSVOLTAGE, &value); 368 | 369 | // Shift to the right 3 to drop CNVR and OVF and multiply by LSB 370 | return (int16_t)((value >> 3) * 4); 371 | } 372 | 373 | /*! 374 | * @brief Gets the raw shunt voltage (16-bit signed integer, so +-32767) 375 | * @return the raw shunt voltage reading 376 | */ 377 | int16_t Adafruit_INA219::getShuntVoltage_raw() { 378 | uint16_t value; 379 | wireReadRegister(INA219_REG_SHUNTVOLTAGE, &value); 380 | return (int16_t)value; 381 | } 382 | 383 | /*! 384 | * @brief Gets the raw current value (16-bit signed integer, so +-32767) 385 | * @return the raw current reading 386 | */ 387 | int16_t Adafruit_INA219::getCurrent_raw() { 388 | uint16_t value; 389 | 390 | // Sometimes a sharp load will reset the INA219, which will 391 | // reset the cal register, meaning CURRENT and POWER will 392 | // not be available ... avoid this by always setting a cal 393 | // value even if it's an unfortunate extra step 394 | wireWriteRegister(INA219_REG_CALIBRATION, ina219_calValue); 395 | 396 | // Now we can safely read the CURRENT register! 397 | wireReadRegister(INA219_REG_CURRENT, &value); 398 | 399 | return (int16_t)value; 400 | } 401 | 402 | /*! 403 | * @brief Gets the raw power value (16-bit signed integer, so +-32767) 404 | * @return raw power reading 405 | */ 406 | int16_t Adafruit_INA219::getPower_raw() { 407 | uint16_t value; 408 | 409 | // Sometimes a sharp load will reset the INA219, which will 410 | // reset the cal register, meaning CURRENT and POWER will 411 | // not be available ... avoid this by always setting a cal 412 | // value even if it's an unfortunate extra step 413 | wireWriteRegister(INA219_REG_CALIBRATION, ina219_calValue); 414 | 415 | // Now we can safely read the POWER register! 416 | wireReadRegister(INA219_REG_POWER, &value); 417 | 418 | return (int16_t)value; 419 | } 420 | 421 | /*! 422 | * @brief Gets the shunt voltage in mV (so +-327mV) 423 | * @return the shunt voltage converted to millivolts 424 | */ 425 | float Adafruit_INA219::getShuntVoltage_mV() { 426 | int16_t value; 427 | value = getShuntVoltage_raw(); 428 | return value * 0.01; 429 | } 430 | 431 | /*! 432 | * @brief Gets the shunt voltage in volts 433 | * @return the bus voltage converted to volts 434 | */ 435 | float Adafruit_INA219::getBusVoltage_V() { 436 | int16_t value = getBusVoltage_raw(); 437 | return value * 0.001; 438 | } 439 | 440 | /*! 441 | * @brief Gets the current value in mA, taking into account the 442 | * config settings and current LSB 443 | * @return the current reading convereted to milliamps 444 | */ 445 | float Adafruit_INA219::getCurrent_mA() { 446 | float valueDec = getCurrent_raw(); 447 | valueDec /= ina219_currentDivider_mA; 448 | return valueDec; 449 | } 450 | 451 | /*! 452 | * @brief Gets the power value in mW, taking into account the 453 | * config settings and current LSB 454 | * @return power reading converted to milliwatts 455 | */ 456 | float Adafruit_INA219::getPower_mW() { 457 | float valueDec = getPower_raw(); 458 | valueDec *= ina219_powerMultiplier_mW; 459 | return valueDec; 460 | } -------------------------------------------------------------------------------- /pcb/solarcampi-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # Connector_AVR-ISP-6 5 | # 6 | DEF Connector_AVR-ISP-6 J 0 40 Y Y 1 F N 7 | F0 "J" 0 400 50 H V L CNN 8 | F1 "Connector_AVR-ISP-6" 0 -300 50 H V L CNN 9 | F2 "" -250 50 50 V I C CNN 10 | F3 "" -1275 -550 50 H I C CNN 11 | $FPLIST 12 | IDC?Header*2x03* 13 | Pin?Header*2x03* 14 | $ENDFPLIST 15 | DRAW 16 | S -105 -220 -95 -250 0 1 0 N 17 | S -105 350 -95 320 0 1 0 N 18 | S 250 -95 220 -105 0 1 0 N 19 | S 250 5 220 -5 0 1 0 N 20 | S 250 105 220 95 0 1 0 N 21 | S 250 205 220 195 0 1 0 N 22 | S 250 350 -250 -250 0 1 10 f 23 | X MISO 1 400 200 150 L 50 50 1 1 P 24 | X VCC 2 -100 500 150 D 50 50 1 1 W 25 | X SCK 3 400 0 150 L 50 50 1 1 P 26 | X MOSI 4 400 100 150 L 50 50 1 1 P 27 | X ~RST 5 400 -100 150 L 50 50 1 1 P 28 | X GND 6 -100 -400 150 U 50 50 1 1 W 29 | ENDDRAW 30 | ENDDEF 31 | # 32 | # Connector_Conn_01x06_Male 33 | # 34 | DEF Connector_Conn_01x06_Male J 0 40 Y N 1 F N 35 | F0 "J" 0 300 50 H V C CNN 36 | F1 "Connector_Conn_01x06_Male" 0 -400 50 H V C CNN 37 | F2 "" 0 0 50 H I C CNN 38 | F3 "" 0 0 50 H I C CNN 39 | $FPLIST 40 | Connector*:*_1x??_* 41 | $ENDFPLIST 42 | DRAW 43 | S 34 -295 0 -305 1 1 6 F 44 | S 34 -195 0 -205 1 1 6 F 45 | S 34 -95 0 -105 1 1 6 F 46 | S 34 5 0 -5 1 1 6 F 47 | S 34 105 0 95 1 1 6 F 48 | S 34 205 0 195 1 1 6 F 49 | P 2 1 1 6 50 -300 34 -300 N 50 | P 2 1 1 6 50 -200 34 -200 N 51 | P 2 1 1 6 50 -100 34 -100 N 52 | P 2 1 1 6 50 0 34 0 N 53 | P 2 1 1 6 50 100 34 100 N 54 | P 2 1 1 6 50 200 34 200 N 55 | X Pin_1 1 200 200 150 L 50 50 1 1 P 56 | X Pin_2 2 200 100 150 L 50 50 1 1 P 57 | X Pin_3 3 200 0 150 L 50 50 1 1 P 58 | X Pin_4 4 200 -100 150 L 50 50 1 1 P 59 | X Pin_5 5 200 -200 150 L 50 50 1 1 P 60 | X Pin_6 6 200 -300 150 L 50 50 1 1 P 61 | ENDDRAW 62 | ENDDEF 63 | # 64 | # Connector_TestPoint 65 | # 66 | DEF Connector_TestPoint TP 0 30 N N 1 F N 67 | F0 "TP" 0 270 50 H V C CNN 68 | F1 "Connector_TestPoint" 0 200 50 H V C CNN 69 | F2 "" 200 0 50 H I C CNN 70 | F3 "" 200 0 50 H I C CNN 71 | $FPLIST 72 | Pin* 73 | Test* 74 | $ENDFPLIST 75 | DRAW 76 | C 0 130 30 0 1 0 N 77 | X 1 1 0 0 100 U 50 50 1 1 P 78 | ENDDRAW 79 | ENDDEF 80 | # 81 | # Device_C 82 | # 83 | DEF Device_C C 0 10 N Y 1 F N 84 | F0 "C" 25 100 50 H V L CNN 85 | F1 "Device_C" 25 -100 50 H V L CNN 86 | F2 "" 38 -150 50 H I C CNN 87 | F3 "" 0 0 50 H I C CNN 88 | $FPLIST 89 | C_* 90 | $ENDFPLIST 91 | DRAW 92 | P 2 0 1 20 -80 -30 80 -30 N 93 | P 2 0 1 20 -80 30 80 30 N 94 | X ~ 1 0 150 110 D 50 50 1 1 P 95 | X ~ 2 0 -150 110 U 50 50 1 1 P 96 | ENDDRAW 97 | ENDDEF 98 | # 99 | # Device_CP 100 | # 101 | DEF Device_CP C 0 10 N Y 1 F N 102 | F0 "C" 25 100 50 H V L CNN 103 | F1 "Device_CP" 25 -100 50 H V L CNN 104 | F2 "" 38 -150 50 H I C CNN 105 | F3 "" 0 0 50 H I C CNN 106 | $FPLIST 107 | CP_* 108 | $ENDFPLIST 109 | DRAW 110 | S -90 20 90 40 0 1 0 N 111 | S 90 -20 -90 -40 0 1 0 F 112 | P 2 0 1 0 -70 90 -30 90 N 113 | P 2 0 1 0 -50 110 -50 70 N 114 | X ~ 1 0 150 110 D 50 50 1 1 P 115 | X ~ 2 0 -150 110 U 50 50 1 1 P 116 | ENDDRAW 117 | ENDDEF 118 | # 119 | # Device_D 120 | # 121 | DEF Device_D D 0 40 N N 1 F N 122 | F0 "D" 0 100 50 H V C CNN 123 | F1 "Device_D" 0 -100 50 H V C CNN 124 | F2 "" 0 0 50 H I C CNN 125 | F3 "" 0 0 50 H I C CNN 126 | $FPLIST 127 | TO-???* 128 | *_Diode_* 129 | *SingleDiode* 130 | D_* 131 | $ENDFPLIST 132 | DRAW 133 | P 2 0 1 8 -50 50 -50 -50 N 134 | P 2 0 1 0 50 0 -50 0 N 135 | P 4 0 1 8 50 50 50 -50 -50 0 50 50 N 136 | X K 1 -150 0 100 R 50 50 1 1 P 137 | X A 2 150 0 100 L 50 50 1 1 P 138 | ENDDRAW 139 | ENDDEF 140 | # 141 | # Device_D_Zener 142 | # 143 | DEF Device_D_Zener D 0 40 N N 1 F N 144 | F0 "D" 0 100 50 H V C CNN 145 | F1 "Device_D_Zener" 0 -100 50 H V C CNN 146 | F2 "" 0 0 50 H I C CNN 147 | F3 "" 0 0 50 H I C CNN 148 | $FPLIST 149 | TO-???* 150 | *_Diode_* 151 | *SingleDiode* 152 | D_* 153 | $ENDFPLIST 154 | DRAW 155 | P 2 0 1 0 50 0 -50 0 N 156 | P 3 0 1 8 -50 -50 -50 50 -30 50 N 157 | P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N 158 | X K 1 -150 0 100 R 50 50 1 1 P 159 | X A 2 150 0 100 L 50 50 1 1 P 160 | ENDDRAW 161 | ENDDEF 162 | # 163 | # Device_Fuse 164 | # 165 | DEF Device_Fuse F 0 0 N Y 1 F N 166 | F0 "F" 80 0 50 V V C CNN 167 | F1 "Device_Fuse" -75 0 50 V V C CNN 168 | F2 "" -70 0 50 V I C CNN 169 | F3 "" 0 0 50 H I C CNN 170 | $FPLIST 171 | *Fuse* 172 | $ENDFPLIST 173 | DRAW 174 | S -30 -100 30 100 0 1 10 N 175 | P 2 0 1 0 0 100 0 -100 N 176 | X ~ 1 0 150 50 D 50 50 1 1 P 177 | X ~ 2 0 -150 50 U 50 50 1 1 P 178 | ENDDRAW 179 | ENDDEF 180 | # 181 | # Device_Jumper_NC_Small 182 | # 183 | DEF Device_Jumper_NC_Small JP 0 30 N N 1 F N 184 | F0 "JP" 0 80 50 H V C CNN 185 | F1 "Device_Jumper_NC_Small" 10 -60 50 H V C CNN 186 | F2 "" 0 0 50 H I C CNN 187 | F3 "" 0 0 50 H I C CNN 188 | $FPLIST 189 | SolderJumper*Bridged* 190 | $ENDFPLIST 191 | DRAW 192 | A 0 -10 57 450 1350 0 1 0 N 40 30 -40 30 193 | C -40 0 20 0 1 0 N 194 | C 40 0 20 0 1 0 N 195 | X 1 1 -100 0 40 R 50 50 0 1 P 196 | X 2 2 100 0 40 L 50 50 0 1 P 197 | ENDDRAW 198 | ENDDEF 199 | # 200 | # Device_Jumper_NO_Small 201 | # 202 | DEF Device_Jumper_NO_Small JP 0 30 N N 1 F N 203 | F0 "JP" 0 80 50 H V C CNN 204 | F1 "Device_Jumper_NO_Small" 10 -60 50 H V C CNN 205 | F2 "" 0 0 50 H I C CNN 206 | F3 "" 0 0 50 H I C CNN 207 | $FPLIST 208 | SolderJumper*Open* 209 | $ENDFPLIST 210 | DRAW 211 | C -40 0 20 0 1 0 N 212 | C 40 0 20 0 1 0 N 213 | X 1 1 -100 0 40 R 50 50 0 1 P 214 | X 2 2 100 0 40 L 50 50 0 1 P 215 | ENDDRAW 216 | ENDDEF 217 | # 218 | # Device_LED 219 | # 220 | DEF Device_LED D 0 40 N N 1 F N 221 | F0 "D" 0 100 50 H V C CNN 222 | F1 "Device_LED" 0 -100 50 H V C CNN 223 | F2 "" 0 0 50 H I C CNN 224 | F3 "" 0 0 50 H I C CNN 225 | $FPLIST 226 | LED* 227 | LED_SMD:* 228 | LED_THT:* 229 | $ENDFPLIST 230 | DRAW 231 | P 2 0 1 8 -50 -50 -50 50 N 232 | P 2 0 1 0 -50 0 50 0 N 233 | P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N 234 | P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N 235 | P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N 236 | X K 1 -150 0 100 R 50 50 1 1 P 237 | X A 2 150 0 100 L 50 50 1 1 P 238 | ENDDRAW 239 | ENDDEF 240 | # 241 | # Device_Q_NMOS_GSD 242 | # 243 | DEF Device_Q_NMOS_GSD Q 0 0 Y N 1 F N 244 | F0 "Q" 200 50 50 H V L CNN 245 | F1 "Device_Q_NMOS_GSD" 200 -50 50 H V L CNN 246 | F2 "" 200 100 50 H I C CNN 247 | F3 "" 0 0 50 H I C CNN 248 | DRAW 249 | C 65 0 111 0 1 10 N 250 | C 100 -70 11 0 1 0 F 251 | C 100 70 11 0 1 0 F 252 | P 2 0 1 0 2 0 10 0 N 253 | P 2 0 1 0 30 -70 100 -70 N 254 | P 2 0 1 10 30 -50 30 -90 N 255 | P 2 0 1 0 30 0 100 0 N 256 | P 2 0 1 10 30 20 30 -20 N 257 | P 2 0 1 0 30 70 100 70 N 258 | P 2 0 1 10 30 90 30 50 N 259 | P 2 0 1 0 100 -70 100 -100 N 260 | P 2 0 1 0 100 -70 100 0 N 261 | P 2 0 1 0 100 100 100 70 N 262 | P 3 0 1 10 10 75 10 -75 10 -75 N 263 | P 4 0 1 0 40 0 80 15 80 -15 40 0 F 264 | P 4 0 1 0 100 -70 130 -70 130 70 100 70 N 265 | P 4 0 1 0 110 20 115 15 145 15 150 10 N 266 | P 4 0 1 0 130 15 115 -10 145 -10 130 15 N 267 | X G 1 -200 0 200 R 50 50 1 1 I 268 | X S 2 100 -200 100 U 50 50 1 1 P 269 | X D 3 100 200 100 D 50 50 1 1 P 270 | ENDDRAW 271 | ENDDEF 272 | # 273 | # Device_R 274 | # 275 | DEF Device_R R 0 0 N Y 1 F N 276 | F0 "R" 80 0 50 V V C CNN 277 | F1 "Device_R" 0 0 50 V V C CNN 278 | F2 "" -70 0 50 V I C CNN 279 | F3 "" 0 0 50 H I C CNN 280 | $FPLIST 281 | R_* 282 | $ENDFPLIST 283 | DRAW 284 | S -40 -100 40 100 0 1 10 N 285 | X ~ 1 0 150 50 D 50 50 1 1 P 286 | X ~ 2 0 -150 50 U 50 50 1 1 P 287 | ENDDRAW 288 | ENDDEF 289 | # 290 | # MCU_Microchip_ATmega_ATmega328P-AU 291 | # 292 | DEF MCU_Microchip_ATmega_ATmega328P-AU U 0 20 Y Y 1 F N 293 | F0 "U" -500 1450 50 H V L BNN 294 | F1 "MCU_Microchip_ATmega_ATmega328P-AU" 100 -1450 50 H V L TNN 295 | F2 "Package_QFP:TQFP-32_7x7mm_P0.8mm" 0 0 50 H I C CIN 296 | F3 "" 0 0 50 H I C CNN 297 | ALIAS ATmega48P-20AU ATmega48A-AU ATmega48PA-AU ATmega88PV-10AU ATmega88P-20AU ATmega88A-AU ATmega88PA-AU ATmega168PV-10AU ATmega168P-20AU ATmega168A-AU ATmega168PA-AU ATmega328-AU ATmega328P-AU 298 | $FPLIST 299 | TQFP*7x7mm*P0.8mm* 300 | $ENDFPLIST 301 | DRAW 302 | S -500 -1400 500 1400 0 1 10 f 303 | X PD3 1 600 -800 100 L 50 50 1 1 T 304 | X PD6 10 600 -1100 100 L 50 50 1 1 T 305 | X PD7 11 600 -1200 100 L 50 50 1 1 T 306 | X PB0 12 600 1200 100 L 50 50 1 1 T 307 | X PB1 13 600 1100 100 L 50 50 1 1 T 308 | X PB2 14 600 1000 100 L 50 50 1 1 T 309 | X PB3 15 600 900 100 L 50 50 1 1 T 310 | X PB4 16 600 800 100 L 50 50 1 1 T 311 | X PB5 17 600 700 100 L 50 50 1 1 T 312 | X AVCC 18 100 1500 100 D 50 50 1 1 W 313 | X ADC6 19 -600 1000 100 R 50 50 1 1 I 314 | X PD4 2 600 -900 100 L 50 50 1 1 T 315 | X AREF 20 -600 1200 100 R 50 50 1 1 P 316 | X GND 21 0 -1500 100 U 50 50 1 1 P N 317 | X ADC7 22 -600 900 100 R 50 50 1 1 I 318 | X PC0 23 600 300 100 L 50 50 1 1 T 319 | X PC1 24 600 200 100 L 50 50 1 1 T 320 | X PC2 25 600 100 100 L 50 50 1 1 T 321 | X PC3 26 600 0 100 L 50 50 1 1 T 322 | X PC4 27 600 -100 100 L 50 50 1 1 T 323 | X PC5 28 600 -200 100 L 50 50 1 1 T 324 | X ~RESET~/PC6 29 600 -300 100 L 50 50 1 1 T 325 | X GND 3 0 -1500 100 U 50 50 1 1 W 326 | X PD0 30 600 -500 100 L 50 50 1 1 T 327 | X PD1 31 600 -600 100 L 50 50 1 1 T 328 | X PD2 32 600 -700 100 L 50 50 1 1 T 329 | X VCC 4 0 1500 100 D 50 50 1 1 W 330 | X GND 5 0 -1500 100 U 50 50 1 1 P N 331 | X VCC 6 0 1500 100 D 50 50 1 1 P N 332 | X XTAL1/PB6 7 600 600 100 L 50 50 1 1 T 333 | X XTAL2/PB7 8 600 500 100 L 50 50 1 1 T 334 | X PD5 9 600 -1000 100 L 50 50 1 1 T 335 | ENDDRAW 336 | ENDDEF 337 | # 338 | # power_+12V 339 | # 340 | DEF power_+12V #PWR 0 0 Y Y 1 F P 341 | F0 "#PWR" 0 -150 50 H I C CNN 342 | F1 "power_+12V" 0 140 50 H V C CNN 343 | F2 "" 0 0 50 H I C CNN 344 | F3 "" 0 0 50 H I C CNN 345 | DRAW 346 | P 2 0 1 0 -30 50 0 100 N 347 | P 2 0 1 0 0 0 0 100 N 348 | P 2 0 1 0 0 100 30 50 N 349 | X +12V 1 0 0 0 U 50 50 1 1 W N 350 | ENDDRAW 351 | ENDDEF 352 | # 353 | # power_GND 354 | # 355 | DEF power_GND #PWR 0 0 Y Y 1 F P 356 | F0 "#PWR" 0 -250 50 H I C CNN 357 | F1 "power_GND" 0 -150 50 H V C CNN 358 | F2 "" 0 0 50 H I C CNN 359 | F3 "" 0 0 50 H I C CNN 360 | DRAW 361 | P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N 362 | X GND 1 0 0 0 D 50 50 1 1 W N 363 | ENDDRAW 364 | ENDDEF 365 | # 366 | # solarcampi-rescue_+12V-power 367 | # 368 | DEF solarcampi-rescue_+12V-power #PWR 0 0 Y Y 1 F P 369 | F0 "#PWR" 0 -150 50 H I C CNN 370 | F1 "solarcampi-rescue_+12V-power" 0 140 50 H V C CNN 371 | F2 "" 0 0 50 H I C CNN 372 | F3 "" 0 0 50 H I C CNN 373 | DRAW 374 | P 2 0 1 0 -30 50 0 100 N 375 | P 2 0 1 0 0 0 0 100 N 376 | P 2 0 1 0 0 100 30 50 N 377 | X +12V 1 0 0 0 U 50 50 1 1 W N 378 | ENDDRAW 379 | ENDDEF 380 | # 381 | # solarcampi-rescue_+3V3-power 382 | # 383 | DEF solarcampi-rescue_+3V3-power #PWR 0 0 Y Y 1 F P 384 | F0 "#PWR" 0 -150 50 H I C CNN 385 | F1 "solarcampi-rescue_+3V3-power" 0 140 50 H V C CNN 386 | F2 "" 0 0 50 H I C CNN 387 | F3 "" 0 0 50 H I C CNN 388 | DRAW 389 | P 2 0 1 0 -30 50 0 100 N 390 | P 2 0 1 0 0 0 0 100 N 391 | P 2 0 1 0 0 100 30 50 N 392 | X +3V3 1 0 0 0 U 50 50 1 1 W N 393 | ENDDRAW 394 | ENDDEF 395 | # 396 | # solarcampi-rescue_C-Device 397 | # 398 | DEF solarcampi-rescue_C-Device C 0 10 N Y 1 F N 399 | F0 "C" 25 100 50 H V L CNN 400 | F1 "solarcampi-rescue_C-Device" 25 -100 50 H V L CNN 401 | F2 "" 38 -150 50 H I C CNN 402 | F3 "" 0 0 50 H I C CNN 403 | $FPLIST 404 | C_* 405 | $ENDFPLIST 406 | DRAW 407 | P 2 0 1 20 -80 -30 80 -30 N 408 | P 2 0 1 20 -80 30 80 30 N 409 | X ~ 1 0 150 110 D 50 50 1 1 P 410 | X ~ 2 0 -150 110 U 50 50 1 1 P 411 | ENDDRAW 412 | ENDDEF 413 | # 414 | # solarcampi-rescue_Conn_02x20_Odd_Even-Connector_Generic 415 | # 416 | DEF solarcampi-rescue_Conn_02x20_Odd_Even-Connector_Generic J 0 40 Y N 1 F N 417 | F0 "J" 50 1000 50 H V C CNN 418 | F1 "solarcampi-rescue_Conn_02x20_Odd_Even-Connector_Generic" 50 -1100 50 H V C CNN 419 | F2 "" 0 0 50 H I C CNN 420 | F3 "" 0 0 50 H I C CNN 421 | $FPLIST 422 | Connector*:*_2x??_* 423 | $ENDFPLIST 424 | DRAW 425 | S -50 -995 0 -1005 1 1 6 N 426 | S -50 -895 0 -905 1 1 6 N 427 | S -50 -795 0 -805 1 1 6 N 428 | S -50 -695 0 -705 1 1 6 N 429 | S -50 -595 0 -605 1 1 6 N 430 | S -50 -495 0 -505 1 1 6 N 431 | S -50 -395 0 -405 1 1 6 N 432 | S -50 -295 0 -305 1 1 6 N 433 | S -50 -195 0 -205 1 1 6 N 434 | S -50 -95 0 -105 1 1 6 N 435 | S -50 5 0 -5 1 1 6 N 436 | S -50 105 0 95 1 1 6 N 437 | S -50 205 0 195 1 1 6 N 438 | S -50 305 0 295 1 1 6 N 439 | S -50 405 0 395 1 1 6 N 440 | S -50 505 0 495 1 1 6 N 441 | S -50 605 0 595 1 1 6 N 442 | S -50 705 0 695 1 1 6 N 443 | S -50 805 0 795 1 1 6 N 444 | S -50 905 0 895 1 1 6 N 445 | S -50 950 150 -1050 1 1 10 f 446 | S 150 -995 100 -1005 1 1 6 N 447 | S 150 -895 100 -905 1 1 6 N 448 | S 150 -795 100 -805 1 1 6 N 449 | S 150 -695 100 -705 1 1 6 N 450 | S 150 -595 100 -605 1 1 6 N 451 | S 150 -495 100 -505 1 1 6 N 452 | S 150 -395 100 -405 1 1 6 N 453 | S 150 -295 100 -305 1 1 6 N 454 | S 150 -195 100 -205 1 1 6 N 455 | S 150 -95 100 -105 1 1 6 N 456 | S 150 5 100 -5 1 1 6 N 457 | S 150 105 100 95 1 1 6 N 458 | S 150 205 100 195 1 1 6 N 459 | S 150 305 100 295 1 1 6 N 460 | S 150 405 100 395 1 1 6 N 461 | S 150 505 100 495 1 1 6 N 462 | S 150 605 100 595 1 1 6 N 463 | S 150 705 100 695 1 1 6 N 464 | S 150 805 100 795 1 1 6 N 465 | S 150 905 100 895 1 1 6 N 466 | X Pin_1 1 -200 900 150 R 50 50 1 1 P 467 | X Pin_10 10 300 500 150 L 50 50 1 1 P 468 | X Pin_11 11 -200 400 150 R 50 50 1 1 P 469 | X Pin_12 12 300 400 150 L 50 50 1 1 P 470 | X Pin_13 13 -200 300 150 R 50 50 1 1 P 471 | X Pin_14 14 300 300 150 L 50 50 1 1 P 472 | X Pin_15 15 -200 200 150 R 50 50 1 1 P 473 | X Pin_16 16 300 200 150 L 50 50 1 1 P 474 | X Pin_17 17 -200 100 150 R 50 50 1 1 P 475 | X Pin_18 18 300 100 150 L 50 50 1 1 P 476 | X Pin_19 19 -200 0 150 R 50 50 1 1 P 477 | X Pin_2 2 300 900 150 L 50 50 1 1 P 478 | X Pin_20 20 300 0 150 L 50 50 1 1 P 479 | X Pin_21 21 -200 -100 150 R 50 50 1 1 P 480 | X Pin_22 22 300 -100 150 L 50 50 1 1 P 481 | X Pin_23 23 -200 -200 150 R 50 50 1 1 P 482 | X Pin_24 24 300 -200 150 L 50 50 1 1 P 483 | X Pin_25 25 -200 -300 150 R 50 50 1 1 P 484 | X Pin_26 26 300 -300 150 L 50 50 1 1 P 485 | X Pin_27 27 -200 -400 150 R 50 50 1 1 P 486 | X Pin_28 28 300 -400 150 L 50 50 1 1 P 487 | X Pin_29 29 -200 -500 150 R 50 50 1 1 P 488 | X Pin_3 3 -200 800 150 R 50 50 1 1 P 489 | X Pin_30 30 300 -500 150 L 50 50 1 1 P 490 | X Pin_31 31 -200 -600 150 R 50 50 1 1 P 491 | X Pin_32 32 300 -600 150 L 50 50 1 1 P 492 | X Pin_33 33 -200 -700 150 R 50 50 1 1 P 493 | X Pin_34 34 300 -700 150 L 50 50 1 1 P 494 | X Pin_35 35 -200 -800 150 R 50 50 1 1 P 495 | X Pin_36 36 300 -800 150 L 50 50 1 1 P 496 | X Pin_37 37 -200 -900 150 R 50 50 1 1 P 497 | X Pin_38 38 300 -900 150 L 50 50 1 1 P 498 | X Pin_39 39 -200 -1000 150 R 50 50 1 1 P 499 | X Pin_4 4 300 800 150 L 50 50 1 1 P 500 | X Pin_40 40 300 -1000 150 L 50 50 1 1 P 501 | X Pin_5 5 -200 700 150 R 50 50 1 1 P 502 | X Pin_6 6 300 700 150 L 50 50 1 1 P 503 | X Pin_7 7 -200 600 150 R 50 50 1 1 P 504 | X Pin_8 8 300 600 150 L 50 50 1 1 P 505 | X Pin_9 9 -200 500 150 R 50 50 1 1 P 506 | ENDDRAW 507 | ENDDEF 508 | # 509 | # solarcampi-rescue_Fuse-Device 510 | # 511 | DEF solarcampi-rescue_Fuse-Device F 0 0 N Y 1 F N 512 | F0 "F" 80 0 50 V V C CNN 513 | F1 "solarcampi-rescue_Fuse-Device" -75 0 50 V V C CNN 514 | F2 "" -70 0 50 V I C CNN 515 | F3 "" 0 0 50 H I C CNN 516 | $FPLIST 517 | *Fuse* 518 | $ENDFPLIST 519 | DRAW 520 | S -30 -100 30 100 0 1 10 N 521 | P 2 0 1 0 0 100 0 -100 N 522 | X ~ 1 0 150 50 D 50 50 1 1 P 523 | X ~ 2 0 -150 50 U 50 50 1 1 P 524 | ENDDRAW 525 | ENDDEF 526 | # 527 | # solarcampi-rescue_GND-power 528 | # 529 | DEF solarcampi-rescue_GND-power #PWR 0 0 Y Y 1 F P 530 | F0 "#PWR" 0 -250 50 H I C CNN 531 | F1 "solarcampi-rescue_GND-power" 0 -150 50 H V C CNN 532 | F2 "" 0 0 50 H I C CNN 533 | F3 "" 0 0 50 H I C CNN 534 | DRAW 535 | P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N 536 | X GND 1 0 0 0 D 50 50 1 1 W N 537 | ENDDRAW 538 | ENDDEF 539 | # 540 | # solarcampi-rescue_INA226-Analog_ADC 541 | # 542 | DEF solarcampi-rescue_INA226-Analog_ADC U 0 20 Y Y 1 F N 543 | F0 "U" 150 450 50 H V C CNN 544 | F1 "solarcampi-rescue_INA226-Analog_ADC" 200 -450 50 H V C CNN 545 | F2 "Package_SO:MSOP-10_3x3mm_P0.5mm" 50 100 50 H I C CNN 546 | F3 "" 350 -100 50 H I C CNN 547 | $FPLIST 548 | MSOP*3x3mm*P0.5mm* 549 | $ENDFPLIST 550 | DRAW 551 | S 300 400 -300 -400 0 1 10 f 552 | X A1 1 400 300 100 L 50 50 1 1 P 553 | X Vin+ 10 -400 -100 100 R 50 50 1 1 I 554 | X A0 2 400 200 100 L 50 50 1 1 P 555 | X ~Alert~ 3 400 -300 100 L 50 50 1 1 C 556 | X SDA 4 400 0 100 L 50 50 1 1 B 557 | X SCL 5 400 -100 100 L 50 50 1 1 I 558 | X Vs 6 0 500 100 D 50 50 1 1 W 559 | X GND 7 0 -500 100 U 50 50 1 1 W 560 | X Vbus 8 -400 300 100 R 50 50 1 1 I 561 | X Vin- 9 -400 -200 100 R 50 50 1 1 I 562 | ENDDRAW 563 | ENDDEF 564 | # 565 | # solarcampi-rescue_IRLML6402-Transistor_FET 566 | # 567 | DEF solarcampi-rescue_IRLML6402-Transistor_FET Q 0 0 Y N 1 F N 568 | F0 "Q" 200 75 50 H V L CNN 569 | F1 "solarcampi-rescue_IRLML6402-Transistor_FET" 200 0 50 H V L CNN 570 | F2 "Package_TO_SOT_SMD:SOT-23" 200 -75 50 H I L CIN 571 | F3 "" 0 0 50 H I L CNN 572 | $FPLIST 573 | SOT?23* 574 | $ENDFPLIST 575 | DRAW 576 | C 65 0 111 0 1 10 N 577 | C 100 -70 11 0 1 0 F 578 | C 100 70 11 0 1 0 F 579 | P 2 0 1 0 -100 0 10 0 N 580 | P 2 0 1 0 30 -70 100 -70 N 581 | P 2 0 1 10 30 -50 30 -90 N 582 | P 2 0 1 0 30 0 100 0 N 583 | P 2 0 1 10 30 20 30 -20 N 584 | P 2 0 1 0 30 70 100 70 N 585 | P 2 0 1 10 30 90 30 50 N 586 | P 2 0 1 0 100 -70 100 -100 N 587 | P 2 0 1 0 100 -70 100 0 N 588 | P 2 0 1 0 100 100 100 70 N 589 | P 3 0 1 10 10 75 10 -75 10 -75 N 590 | P 4 0 1 0 90 0 50 -15 50 15 90 0 F 591 | P 4 0 1 0 100 -70 130 -70 130 70 100 70 N 592 | P 4 0 1 0 110 -20 115 -15 145 -15 150 -10 N 593 | P 4 0 1 0 130 -15 115 10 145 10 130 -15 N 594 | X G 1 -200 0 100 R 50 50 1 1 I 595 | X S 2 100 -200 100 U 50 50 1 1 P 596 | X D 3 100 200 100 D 50 50 1 1 P 597 | ENDDRAW 598 | ENDDEF 599 | # 600 | # solarcampi-rescue_R-Device 601 | # 602 | DEF solarcampi-rescue_R-Device R 0 0 N Y 1 F N 603 | F0 "R" 80 0 50 V V C CNN 604 | F1 "solarcampi-rescue_R-Device" 0 0 50 V V C CNN 605 | F2 "" -70 0 50 V I C CNN 606 | F3 "" 0 0 50 H I C CNN 607 | $FPLIST 608 | R_* 609 | $ENDFPLIST 610 | DRAW 611 | S -40 -100 40 100 0 1 10 N 612 | X ~ 1 0 150 50 D 50 50 1 1 P 613 | X ~ 2 0 -150 50 U 50 50 1 1 P 614 | ENDDRAW 615 | ENDDEF 616 | # 617 | # solarcampi-rescue_Screw_Terminal_01x02-Connector 618 | # 619 | DEF solarcampi-rescue_Screw_Terminal_01x02-Connector J 0 40 Y N 1 F N 620 | F0 "J" 0 100 50 H V C CNN 621 | F1 "solarcampi-rescue_Screw_Terminal_01x02-Connector" 0 -200 50 H V C CNN 622 | F2 "" 0 0 50 H I C CNN 623 | F3 "" 0 0 50 H I C CNN 624 | $FPLIST 625 | TerminalBlock*:* 626 | $ENDFPLIST 627 | DRAW 628 | C 0 -100 25 1 1 6 N 629 | C 0 0 25 1 1 6 N 630 | S -50 50 50 -150 1 1 10 f 631 | P 2 1 1 6 -21 -87 13 -120 N 632 | P 2 1 1 6 -21 13 13 -20 N 633 | P 2 1 1 6 -14 -80 20 -113 N 634 | P 2 1 1 6 -14 20 20 -13 N 635 | X Pin_1 1 -200 0 150 R 50 50 1 1 P 636 | X Pin_2 2 -200 -100 150 R 50 50 1 1 P 637 | ENDDRAW 638 | ENDDEF 639 | # 640 | # solarcampi-rescue_TPS71533__SC70-Regulator_Linear 641 | # 642 | DEF solarcampi-rescue_TPS71533__SC70-Regulator_Linear U 0 10 Y Y 1 F N 643 | F0 "U" -150 125 50 H V C CNN 644 | F1 "solarcampi-rescue_TPS71533__SC70-Regulator_Linear" 0 125 50 H V L CNN 645 | F2 "Package_TO_SOT_SMD:SOT-353_SC-70-5" 0 225 50 H I C CNN 646 | F3 "" -300 800 50 H I C CNN 647 | $FPLIST 648 | *SC?70* 649 | $ENDFPLIST 650 | DRAW 651 | S -200 75 200 -200 0 1 10 f 652 | X NC 1 300 -100 100 L 50 50 1 1 N N 653 | X GND 2 0 -300 100 U 50 50 1 1 W 654 | X NC 3 -300 -100 100 R 50 50 1 1 N N 655 | X IN 4 -300 0 100 R 50 50 1 1 W 656 | X OUT 5 300 0 100 L 50 50 1 1 w 657 | ENDDRAW 658 | ENDDEF 659 | # 660 | # tps63070-module_TPS63070-module-compat 661 | # 662 | DEF tps63070-module_TPS63070-module-compat U 0 40 Y Y 1 F N 663 | F0 "U" -250 250 50 H V C CNN 664 | F1 "tps63070-module_TPS63070-module-compat" 400 250 50 H V C CNN 665 | F2 "tps63070-module:TPS63070-module-compat" -50 350 50 H I C CNN 666 | F3 "" -50 350 50 H I C CNN 667 | DRAW 668 | S -300 200 300 -200 0 1 0 f 669 | X VIN 1 -400 100 100 R 50 50 1 1 W 670 | X GND 2 -400 -100 100 R 50 50 1 1 W 671 | X VOUT 3 400 100 100 L 50 50 1 1 w 672 | X GND 4 400 -100 100 L 50 50 1 1 w 673 | ENDDRAW 674 | ENDDEF 675 | # 676 | #End Library 677 | -------------------------------------------------------------------------------- /pcb/solarcampi.sch-bak: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 4 2 | LIBS:solarcampi-cache 3 | EELAYER 29 0 4 | EELAYER END 5 | $Descr A4 11693 8268 6 | encoding utf-8 7 | Sheet 1 1 8 | Title "Solar Camera Pi" 9 | Date "2019-05-27" 10 | Rev "A" 11 | Comp "Tobias Mädel (@manawyrm)" 12 | Comment1 "https://tbspace.de" 13 | Comment2 "" 14 | Comment3 "" 15 | Comment4 "" 16 | $EndDescr 17 | $Comp 18 | L solarcampi-rescue:IRLML6402-Transistor_FET Q1 19 | U 1 1 5CEBF952 20 | P 6950 2150 21 | F 0 "Q1" V 7293 2150 50 0000 C CNN 22 | F 1 "IRLML 2244" V 7202 2150 50 0000 C CNN 23 | F 2 "Package_TO_SOT_SMD:SOT-23" H 7150 2075 50 0001 L CIN 24 | F 3 "https://www.infineon.com/dgdl/irlml6402pbf.pdf?fileId=5546d462533600a401535668d5c2263c" H 6950 2150 50 0001 L CNN 25 | 1 6950 2150 26 | 0 1 -1 0 27 | $EndComp 28 | $Comp 29 | L solarcampi-rescue:DTC123J-Transistor_BJT Q2 30 | U 1 1 5CED6544 31 | P 6850 2800 32 | F 0 "Q2" H 7038 2846 50 0000 L CNN 33 | F 1 "BCR 108 SMD" H 7038 2755 50 0000 L CNN 34 | F 2 "Package_TO_SOT_SMD:SOT-23" H 6850 2800 50 0001 L CNN 35 | F 3 "" H 6850 2800 50 0001 L CNN 36 | 1 6850 2800 37 | 1 0 0 -1 38 | $EndComp 39 | Wire Wire Line 40 | 6950 2350 6950 2450 41 | $Comp 42 | L solarcampi-rescue:GND-power #PWR0101 43 | U 1 1 5CEDD24B 44 | P 6950 3150 45 | F 0 "#PWR0101" H 6950 2900 50 0001 C CNN 46 | F 1 "GND" H 6955 2977 50 0000 C CNN 47 | F 2 "" H 6950 3150 50 0001 C CNN 48 | F 3 "" H 6950 3150 50 0001 C CNN 49 | 1 6950 3150 50 | 1 0 0 -1 51 | $EndComp 52 | Wire Wire Line 53 | 6950 3000 6950 3150 54 | $Comp 55 | L solarcampi-rescue:+12V-power #PWR0104 56 | U 1 1 5CEFAE76 57 | P 1150 3600 58 | F 0 "#PWR0104" H 1150 3450 50 0001 C CNN 59 | F 1 "+12V" H 1165 3773 50 0000 C CNN 60 | F 2 "" H 1150 3600 50 0001 C CNN 61 | F 3 "" H 1150 3600 50 0001 C CNN 62 | 1 1150 3600 63 | 1 0 0 -1 64 | $EndComp 65 | $Comp 66 | L solarcampi-rescue:GND-power #PWR0105 67 | U 1 1 5CEFB5C4 68 | P 1550 4400 69 | F 0 "#PWR0105" H 1550 4150 50 0001 C CNN 70 | F 1 "GND" H 1555 4227 50 0000 C CNN 71 | F 2 "" H 1550 4400 50 0001 C CNN 72 | F 3 "" H 1550 4400 50 0001 C CNN 73 | 1 1550 4400 74 | 1 0 0 -1 75 | $EndComp 76 | $Comp 77 | L solarcampi-rescue:GND-power #PWR0106 78 | U 1 1 5CEFBC6A 79 | P 1950 3600 80 | F 0 "#PWR0106" H 1950 3350 50 0001 C CNN 81 | F 1 "GND" V 1955 3472 50 0000 R CNN 82 | F 2 "" H 1950 3600 50 0001 C CNN 83 | F 3 "" H 1950 3600 50 0001 C CNN 84 | 1 1950 3600 85 | 0 -1 -1 0 86 | $EndComp 87 | $Comp 88 | L solarcampi-rescue:GND-power #PWR0107 89 | U 1 1 5CEFC45E 90 | P 1950 3700 91 | F 0 "#PWR0107" H 1950 3450 50 0001 C CNN 92 | F 1 "GND" V 1955 3572 50 0000 R CNN 93 | F 2 "" H 1950 3700 50 0001 C CNN 94 | F 3 "" H 1950 3700 50 0001 C CNN 95 | 1 1950 3700 96 | 0 -1 -1 0 97 | $EndComp 98 | $Comp 99 | L solarcampi-rescue:+12V-power #PWR0109 100 | U 1 1 5CF1E98B 101 | P 6550 2000 102 | F 0 "#PWR0109" H 6550 1850 50 0001 C CNN 103 | F 1 "+12V" H 6565 2173 50 0000 C CNN 104 | F 2 "" H 6550 2000 50 0001 C CNN 105 | F 3 "" H 6550 2000 50 0001 C CNN 106 | 1 6550 2000 107 | 1 0 0 -1 108 | $EndComp 109 | NoConn ~ 1950 4200 110 | $Comp 111 | L solarcampi-rescue:+3V3-power #PWR0110 112 | U 1 1 5CF72468 113 | P 4150 700 114 | F 0 "#PWR0110" H 4150 550 50 0001 C CNN 115 | F 1 "+3V3" H 4165 873 50 0000 C CNN 116 | F 2 "" H 4150 700 50 0001 C CNN 117 | F 3 "" H 4150 700 50 0001 C CNN 118 | 1 4150 700 119 | 1 0 0 -1 120 | $EndComp 121 | $Comp 122 | L solarcampi-rescue:R-Device R1 123 | U 1 1 5CF7E6BE 124 | P 6550 2300 125 | F 0 "R1" H 6620 2346 50 0000 L CNN 126 | F 1 "10k" H 6620 2255 50 0000 L CNN 127 | F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 6480 2300 50 0001 C CNN 128 | F 3 "~" H 6550 2300 50 0001 C CNN 129 | 1 6550 2300 130 | 1 0 0 -1 131 | $EndComp 132 | Wire Wire Line 133 | 6550 2050 6750 2050 134 | Wire Wire Line 135 | 6550 2050 6550 2150 136 | Wire Wire Line 137 | 6550 2450 6950 2450 138 | Connection ~ 6950 2450 139 | Wire Wire Line 140 | 6950 2450 6950 2600 141 | $Comp 142 | L custom:MP1584ENBB PS1 143 | U 1 1 5CFCCCFD 144 | P 7850 2400 145 | F 0 "PS1" H 7850 2767 50 0000 C CNN 146 | F 1 "MP1584EN" H 7850 2676 50 0000 C CNN 147 | F 2 "solarcampi:MP1584_buck_module" H 6800 2150 50 0001 L CNN 148 | F 3 "" H 8900 2100 50 0001 L CNN 149 | 1 7850 2400 150 | 1 0 0 -1 151 | $EndComp 152 | $Comp 153 | L solarcampi-rescue:GND-power #PWR0108 154 | U 1 1 5CF0852A 155 | P 10100 2200 156 | F 0 "#PWR0108" H 10100 1950 50 0001 C CNN 157 | F 1 "GND" V 10105 2072 50 0000 R CNN 158 | F 2 "" H 10100 2200 50 0001 C CNN 159 | F 3 "" H 10100 2200 50 0001 C CNN 160 | 1 10100 2200 161 | 0 -1 -1 0 162 | $EndComp 163 | $Comp 164 | L solarcampi-rescue:Conn_02x20_Odd_Even-Connector_Generic J1 165 | U 1 1 5C26120C 166 | P 9800 2900 167 | F 0 "J1" H 9850 4017 50 0000 C CNN 168 | F 1 "Conn_02x20_Odd_Even" H 9850 3926 50 0000 C CNN 169 | F 2 "Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_Vertical" H 9800 2900 50 0001 C CNN 170 | F 3 "~" H 9800 2900 50 0001 C CNN 171 | 1 9800 2900 172 | 1 0 0 -1 173 | $EndComp 174 | $Comp 175 | L solarcampi-rescue:GND-power #PWR0113 176 | U 1 1 5CFF74E9 177 | P 7550 2250 178 | F 0 "#PWR0113" H 7550 2000 50 0001 C CNN 179 | F 1 "GND" H 7555 2077 50 0000 C CNN 180 | F 2 "" H 7550 2250 50 0001 C CNN 181 | F 3 "" H 7550 2250 50 0001 C CNN 182 | 1 7550 2250 183 | 1 0 0 -1 184 | $EndComp 185 | $Comp 186 | L solarcampi-rescue:GND-power #PWR0114 187 | U 1 1 5CFF7DAA 188 | P 8750 2250 189 | F 0 "#PWR0114" H 8750 2000 50 0001 C CNN 190 | F 1 "GND" H 8755 2077 50 0000 C CNN 191 | F 2 "" H 8750 2250 50 0001 C CNN 192 | F 3 "" H 8750 2250 50 0001 C CNN 193 | 1 8750 2250 194 | 1 0 0 -1 195 | $EndComp 196 | Wire Wire Line 197 | 10100 2000 10600 2000 198 | Wire Wire Line 199 | 10600 2000 10600 1700 200 | $Comp 201 | L solarcampi-rescue:C-Device C1 202 | U 1 1 5CF657ED 203 | P 1750 1100 204 | F 0 "C1" H 1865 1146 50 0000 L CNN 205 | F 1 "100n" H 1865 1055 50 0000 L CNN 206 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 1788 950 50 0001 C CNN 207 | F 3 "~" H 1750 1100 50 0001 C CNN 208 | 1 1750 1100 209 | 1 0 0 -1 210 | $EndComp 211 | $Comp 212 | L solarcampi-rescue:+12V-power #PWR0103 213 | U 1 1 5CEF7DCC 214 | P 1750 950 215 | F 0 "#PWR0103" H 1750 800 50 0001 C CNN 216 | F 1 "+12V" H 1765 1123 50 0000 C CNN 217 | F 2 "" H 1750 950 50 0001 C CNN 218 | F 3 "" H 1750 950 50 0001 C CNN 219 | 1 1750 950 220 | 1 0 0 -1 221 | $EndComp 222 | $Comp 223 | L solarcampi-rescue:GND-power #PWR0102 224 | U 1 1 5CEEFFCF 225 | P 1700 1250 226 | F 0 "#PWR0102" H 1700 1000 50 0001 C CNN 227 | F 1 "GND" H 1705 1077 50 0000 C CNN 228 | F 2 "" H 1700 1250 50 0001 C CNN 229 | F 3 "" H 1700 1250 50 0001 C CNN 230 | 1 1700 1250 231 | 1 0 0 -1 232 | $EndComp 233 | $Comp 234 | L solarcampi-rescue:GND-power #PWR0115 235 | U 1 1 5CFA9116 236 | P 1600 2250 237 | F 0 "#PWR0115" H 1600 2000 50 0001 C CNN 238 | F 1 "GND" H 1605 2077 50 0000 C CNN 239 | F 2 "" H 1600 2250 50 0001 C CNN 240 | F 3 "" H 1600 2250 50 0001 C CNN 241 | 1 1600 2250 242 | 1 0 0 -1 243 | $EndComp 244 | $Comp 245 | L solarcampi-rescue:+12V-power #PWR0116 246 | U 1 1 5CFA88A5 247 | P 1100 1950 248 | F 0 "#PWR0116" H 1100 1800 50 0001 C CNN 249 | F 1 "+12V" V 1115 2078 50 0000 L CNN 250 | F 2 "" H 1100 1950 50 0001 C CNN 251 | F 3 "" H 1100 1950 50 0001 C CNN 252 | 1 1100 1950 253 | 0 -1 -1 0 254 | $EndComp 255 | $Comp 256 | L solarcampi-rescue:+3V3-power #PWR0117 257 | U 1 1 5CFA795D 258 | P 2000 1950 259 | F 0 "#PWR0117" H 2000 1800 50 0001 C CNN 260 | F 1 "+3V3" V 2015 2078 50 0000 L CNN 261 | F 2 "" H 2000 1950 50 0001 C CNN 262 | F 3 "" H 2000 1950 50 0001 C CNN 263 | 1 2000 1950 264 | 0 1 1 0 265 | $EndComp 266 | $Comp 267 | L solarcampi-rescue:TPS71533__SC70-Regulator_Linear U3 268 | U 1 1 5CF9FBE1 269 | P 1600 1950 270 | F 0 "U3" H 1600 2192 50 0000 C CNN 271 | F 1 "TPS71533__SC70" H 1600 2101 50 0000 C CNN 272 | F 2 "Package_TO_SOT_SMD:SOT-353_SC-70-5_Handsoldering" H 1600 2175 50 0001 C CNN 273 | F 3 "http://www.ti.com/lit/ds/symlink/tps715.pdf" H 1300 2750 50 0001 C CNN 274 | 1 1600 1950 275 | 1 0 0 -1 276 | $EndComp 277 | $Comp 278 | L solarcampi-rescue:Fuse-Device F1 279 | U 1 1 5CEFD444 280 | P 1550 950 281 | F 0 "F1" V 1353 950 50 0000 C CNN 282 | F 1 "1A" V 1444 950 50 0000 C CNN 283 | F 2 "solarcampi:Fuse_SMD_HASF" V 1480 950 50 0001 C CNN 284 | F 3 "~" H 1550 950 50 0001 C CNN 285 | 1 1550 950 286 | 0 1 1 0 287 | $EndComp 288 | $Comp 289 | L solarcampi-rescue:C-Device C3 290 | U 1 1 5CF3211C 291 | P 1200 2100 292 | F 0 "C3" H 1315 2146 50 0000 L CNN 293 | F 1 "100n" H 1315 2055 50 0000 L CNN 294 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 1238 1950 50 0001 C CNN 295 | F 3 "~" H 1200 2100 50 0001 C CNN 296 | 1 1200 2100 297 | 1 0 0 -1 298 | $EndComp 299 | $Comp 300 | L solarcampi-rescue:C-Device C4 301 | U 1 1 5CF32542 302 | P 2000 2100 303 | F 0 "C4" H 2115 2146 50 0000 L CNN 304 | F 1 "1µF" H 2115 2055 50 0000 L CNN 305 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 2038 1950 50 0001 C CNN 306 | F 3 "~" H 2000 2100 50 0001 C CNN 307 | 1 2000 2100 308 | 1 0 0 -1 309 | $EndComp 310 | Wire Wire Line 311 | 1900 1950 2000 1950 312 | Connection ~ 2000 1950 313 | Wire Wire Line 314 | 1100 1950 1200 1950 315 | Connection ~ 1200 1950 316 | Wire Wire Line 317 | 1200 1950 1300 1950 318 | Wire Wire Line 319 | 1200 2250 1600 2250 320 | Connection ~ 1600 2250 321 | Wire Wire Line 322 | 1600 2250 2000 2250 323 | $Comp 324 | L solarcampi-rescue:C-Device C5 325 | U 1 1 5CF3656D 326 | P 650 3800 327 | F 0 "C5" H 765 3846 50 0000 L CNN 328 | F 1 "100n" H 765 3755 50 0000 L CNN 329 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 688 3650 50 0001 C CNN 330 | F 3 "~" H 650 3800 50 0001 C CNN 331 | 1 650 3800 332 | 1 0 0 -1 333 | $EndComp 334 | $Comp 335 | L solarcampi-rescue:GND-power #PWR0119 336 | U 1 1 5CF37D1D 337 | P 650 3950 338 | F 0 "#PWR0119" H 650 3700 50 0001 C CNN 339 | F 1 "GND" H 655 3777 50 0000 C CNN 340 | F 2 "" H 650 3950 50 0001 C CNN 341 | F 3 "" H 650 3950 50 0001 C CNN 342 | 1 650 3950 343 | 1 0 0 -1 344 | $EndComp 345 | $Comp 346 | L solarcampi-rescue:Screw_Terminal_01x02-Connector J2 347 | U 1 1 5CEC902C 348 | P 1200 1050 349 | F 0 "J2" H 1280 1042 50 0000 L CNN 350 | F 1 "Vin 12V" H 1280 951 50 0000 L CNN 351 | F 2 "TerminalBlock:TerminalBlock_bornier-2_P5.08mm" H 1200 1050 50 0001 C CNN 352 | F 3 "~" H 1200 1050 50 0001 C CNN 353 | 1 1200 1050 354 | -1 0 0 1 355 | $EndComp 356 | Wire Wire Line 357 | 1400 1050 1500 1050 358 | Wire Wire Line 359 | 1500 1250 1700 1250 360 | Wire Wire Line 361 | 1500 1050 1500 1250 362 | $Comp 363 | L solarcampi-rescue:INA226-Analog_ADC U1 364 | U 1 1 5CEC0CDE 365 | P 1550 3900 366 | F 0 "U1" H 1550 4581 50 0000 C CNN 367 | F 1 "INA226" H 1550 4490 50 0000 C CNN 368 | F 2 "Package_SO:MSOP-10_3x3mm_P0.5mm" H 1600 4000 50 0001 C CNN 369 | F 3 "http://www.ti.com/lit/ds/symlink/ina226.pdf" H 1900 3800 50 0001 C CNN 370 | 1 1550 3900 371 | 1 0 0 -1 372 | $EndComp 373 | NoConn ~ 1150 4000 374 | NoConn ~ 1150 4100 375 | NoConn ~ 9600 2000 376 | NoConn ~ 10100 2100 377 | NoConn ~ 10100 2500 378 | NoConn ~ 10100 2600 379 | NoConn ~ 10100 2700 380 | NoConn ~ 10100 2800 381 | NoConn ~ 10100 2900 382 | NoConn ~ 10100 3000 383 | NoConn ~ 10100 3100 384 | NoConn ~ 10100 3200 385 | NoConn ~ 10100 3300 386 | NoConn ~ 10100 3400 387 | NoConn ~ 9600 2400 388 | NoConn ~ 9600 2500 389 | NoConn ~ 9600 2600 390 | NoConn ~ 9600 2700 391 | NoConn ~ 9600 2800 392 | NoConn ~ 9600 2900 393 | NoConn ~ 9600 3000 394 | NoConn ~ 9600 3100 395 | NoConn ~ 9600 3200 396 | NoConn ~ 9600 3300 397 | NoConn ~ 9600 3400 398 | NoConn ~ 9600 3500 399 | NoConn ~ 9600 3600 400 | NoConn ~ 10100 3500 401 | NoConn ~ 10100 3600 402 | NoConn ~ 9600 3700 403 | NoConn ~ 9600 3800 404 | NoConn ~ 9600 3900 405 | NoConn ~ 10100 3700 406 | NoConn ~ 10100 3800 407 | NoConn ~ 10100 3900 408 | Wire Wire Line 409 | 6550 2000 6550 2050 410 | Connection ~ 6550 2050 411 | Wire Wire Line 412 | 1700 950 1750 950 413 | Connection ~ 1750 950 414 | Wire Wire Line 415 | 1700 1250 1750 1250 416 | Connection ~ 1700 1250 417 | Wire Wire Line 418 | 10600 1700 8750 1700 419 | Wire Wire Line 420 | 8750 1700 8750 2050 421 | $Comp 422 | L Connector:Conn_01x06_Male J4 423 | U 1 1 5CF0D7D6 424 | P 10700 3000 425 | F 0 "J4" H 10672 2882 50 0000 R CNN 426 | F 1 "FTDI" H 10672 2973 50 0000 R CNN 427 | F 2 "Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical" H 10700 3000 50 0001 C CNN 428 | F 3 "~" H 10700 3000 50 0001 C CNN 429 | 1 10700 3000 430 | -1 0 0 1 431 | $EndComp 432 | $Comp 433 | L power:GND #PWR0121 434 | U 1 1 5CF18F66 435 | P 10500 3200 436 | F 0 "#PWR0121" H 10500 2950 50 0001 C CNN 437 | F 1 "GND" H 10505 3027 50 0000 C CNN 438 | F 2 "" H 10500 3200 50 0001 C CNN 439 | F 3 "" H 10500 3200 50 0001 C CNN 440 | 1 10500 3200 441 | 1 0 0 -1 442 | $EndComp 443 | Text Label 10400 2800 0 50 ~ 0 444 | RX 445 | Wire Wire Line 446 | 10500 2800 10400 2800 447 | Text Label 10400 2900 0 50 ~ 0 448 | TX 449 | Wire Wire Line 450 | 10500 2900 10400 2900 451 | Text Label 10150 2300 0 50 ~ 0 452 | RX 453 | Text Label 10150 2400 0 50 ~ 0 454 | TX 455 | Wire Wire Line 456 | 10100 2300 10150 2300 457 | Wire Wire Line 458 | 10100 2400 10150 2400 459 | NoConn ~ 10500 2700 460 | NoConn ~ 10500 3000 461 | NoConn ~ 10500 3100 462 | $Comp 463 | L MCU_Microchip_ATmega:ATmega328P-AU U2 464 | U 1 1 5CF28A02 465 | P 4050 2200 466 | F 0 "U2" H 4050 611 50 0000 C CNN 467 | F 1 "ATmega328P-AU" H 4050 520 50 0000 C CNN 468 | F 2 "Package_QFP:TQFP-32_7x7mm_P0.8mm" H 4050 2200 50 0001 C CIN 469 | F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328_P%20AVR%20MCU%20with%20picoPower%20Technology%20Data%20Sheet%2040001984A.pdf" H 4050 2200 50 0001 C CNN 470 | 1 4050 2200 471 | 1 0 0 -1 472 | $EndComp 473 | Wire Wire Line 474 | 4050 700 4150 700 475 | Connection ~ 4150 700 476 | $Comp 477 | L solarcampi-rescue:C-Device C2 478 | U 1 1 5CF4ECCB 479 | P 2650 900 480 | F 0 "C2" H 2765 946 50 0000 L CNN 481 | F 1 "100n" H 2765 855 50 0000 L CNN 482 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 2688 750 50 0001 C CNN 483 | F 3 "~" H 2650 900 50 0001 C CNN 484 | 1 2650 900 485 | 1 0 0 -1 486 | $EndComp 487 | $Comp 488 | L solarcampi-rescue:+3V3-power #PWR01 489 | U 1 1 5CF4ECD1 490 | P 2650 750 491 | F 0 "#PWR01" H 2650 600 50 0001 C CNN 492 | F 1 "+3V3" H 2665 923 50 0000 C CNN 493 | F 2 "" H 2650 750 50 0001 C CNN 494 | F 3 "" H 2650 750 50 0001 C CNN 495 | 1 2650 750 496 | 1 0 0 -1 497 | $EndComp 498 | $Comp 499 | L solarcampi-rescue:GND-power #PWR02 500 | U 1 1 5CF4ECD7 501 | P 2650 1050 502 | F 0 "#PWR02" H 2650 800 50 0001 C CNN 503 | F 1 "GND" H 2655 877 50 0000 C CNN 504 | F 2 "" H 2650 1050 50 0001 C CNN 505 | F 3 "" H 2650 1050 50 0001 C CNN 506 | 1 2650 1050 507 | 1 0 0 -1 508 | $EndComp 509 | $Comp 510 | L power:GND #PWR03 511 | U 1 1 5CF56A6D 512 | P 4050 3700 513 | F 0 "#PWR03" H 4050 3450 50 0001 C CNN 514 | F 1 "GND" H 4055 3527 50 0000 C CNN 515 | F 2 "" H 4050 3700 50 0001 C CNN 516 | F 3 "" H 4050 3700 50 0001 C CNN 517 | 1 4050 3700 518 | 1 0 0 -1 519 | $EndComp 520 | $Comp 521 | L Device:C C6 522 | U 1 1 5CFAD48D 523 | P 5050 2650 524 | F 0 "C6" H 5165 2696 50 0000 L CNN 525 | F 1 "100n" H 5165 2605 50 0000 L CNN 526 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 5088 2500 50 0001 C CNN 527 | F 3 "~" H 5050 2650 50 0001 C CNN 528 | 1 5050 2650 529 | 1 0 0 -1 530 | $EndComp 531 | Wire Wire Line 532 | 4650 2500 5050 2500 533 | Wire Wire Line 534 | 4050 3700 5050 3700 535 | Wire Wire Line 536 | 5050 3700 5050 2800 537 | Connection ~ 4050 3700 538 | $Comp 539 | L Device:R R2 540 | U 1 1 5CFB6F12 541 | P 5050 2350 542 | F 0 "R2" H 5120 2396 50 0000 L CNN 543 | F 1 "10k" H 5120 2305 50 0000 L CNN 544 | F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 4980 2350 50 0001 C CNN 545 | F 3 "~" H 5050 2350 50 0001 C CNN 546 | 1 5050 2350 547 | 1 0 0 -1 548 | $EndComp 549 | Connection ~ 5050 2500 550 | Wire Wire Line 551 | 4150 700 5050 700 552 | Wire Wire Line 553 | 5050 700 5050 2200 554 | $Comp 555 | L power:GND #PWR04 556 | U 1 1 5CFC39C3 557 | P 5900 1600 558 | F 0 "#PWR04" H 5900 1350 50 0001 C CNN 559 | F 1 "GND" H 5905 1427 50 0000 C CNN 560 | F 2 "" H 5900 1600 50 0001 C CNN 561 | F 3 "" H 5900 1600 50 0001 C CNN 562 | 1 5900 1600 563 | 1 0 0 -1 564 | $EndComp 565 | $Comp 566 | L Jumper:Jumper_2_Open JP1 567 | U 1 1 5CFC428F 568 | P 5700 700 569 | F 0 "JP1" H 5700 935 50 0000 C CNN 570 | F 1 "Jumper_2_Open" H 5700 844 50 0000 C CNN 571 | F 2 "Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm" H 5700 700 50 0001 C CNN 572 | F 3 "~" H 5700 700 50 0001 C CNN 573 | 1 5700 700 574 | 1 0 0 -1 575 | $EndComp 576 | $Comp 577 | L Connector:AVR-ISP-6 J3 578 | U 1 1 5CF0B3DB 579 | P 5800 1200 580 | F 0 "J3" H 5520 1296 50 0000 R CNN 581 | F 1 "AVR-ISP-6" H 5520 1205 50 0000 R CNN 582 | F 2 "Connector_IDC:IDC-Header_2x03_P2.54mm_Vertical" V 5550 1250 50 0001 C CNN 583 | F 3 " ~" H 4525 650 50 0001 C CNN 584 | 1 5800 1200 585 | -1 0 0 -1 586 | $EndComp 587 | Wire Wire Line 588 | 5050 700 5500 700 589 | Connection ~ 5050 700 590 | Text Label 5250 1300 0 50 ~ 0 591 | ~RST 592 | Text Label 5250 1200 0 50 ~ 0 593 | SCK 594 | Text Label 5200 1100 0 50 ~ 0 595 | MOSI 596 | Text Label 5200 1000 0 50 ~ 0 597 | MISO 598 | Wire Wire Line 599 | 5400 1000 5200 1000 600 | Wire Wire Line 601 | 5200 1100 5400 1100 602 | Wire Wire Line 603 | 5400 1200 5250 1200 604 | Wire Wire Line 605 | 5250 1300 5400 1300 606 | Text Label 4700 1300 0 50 ~ 0 607 | MOSI 608 | Text Label 4700 1400 0 50 ~ 0 609 | MISO 610 | Text Label 4700 1500 0 50 ~ 0 611 | SCK 612 | Wire Wire Line 613 | 4650 1300 4700 1300 614 | Wire Wire Line 615 | 4700 1400 4650 1400 616 | Wire Wire Line 617 | 4650 1500 4700 1500 618 | Text Label 4750 2500 0 50 ~ 0 619 | ~RST 620 | Text Label 4650 2300 0 50 ~ 0 621 | RPI_SDA 622 | Text Label 4650 2400 0 50 ~ 0 623 | RPI_SCL 624 | Text Label 9600 2100 2 50 ~ 0 625 | RPI_SDA 626 | Text Label 9600 2200 2 50 ~ 0 627 | RPI_SCL 628 | Text Label 9600 2300 2 50 ~ 0 629 | RPI_SHDN 630 | Text Label 4650 2900 0 50 ~ 0 631 | RPI_SHDN 632 | Text Label 5100 1900 2 50 ~ 0 633 | AVR_SDA 634 | Text Label 3050 1300 0 50 ~ 0 635 | AVR_SCL 636 | Text Label 1950 3900 0 50 ~ 0 637 | AVR_SDA 638 | Text Label 1950 4000 0 50 ~ 0 639 | AVR_SCL 640 | $Comp 641 | L Device:R R3 642 | U 1 1 5D013A55 643 | P 2900 1450 644 | F 0 "R3" H 2970 1496 50 0000 L CNN 645 | F 1 "4k7" H 2970 1405 50 0000 L CNN 646 | F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 2830 1450 50 0001 C CNN 647 | F 3 "~" H 2900 1450 50 0001 C CNN 648 | 1 2900 1450 649 | -1 0 0 -1 650 | $EndComp 651 | $Comp 652 | L Device:R R4 653 | U 1 1 5D01456F 654 | P 5450 2050 655 | F 0 "R4" H 5520 2096 50 0000 L CNN 656 | F 1 "4k7" H 5520 2005 50 0000 L CNN 657 | F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 5380 2050 50 0001 C CNN 658 | F 3 "~" H 5450 2050 50 0001 C CNN 659 | 1 5450 2050 660 | 1 0 0 -1 661 | $EndComp 662 | Wire Wire Line 663 | 3450 1300 2900 1300 664 | Wire Wire Line 665 | 4650 1900 5450 1900 666 | Wire Wire Line 667 | 4950 3400 4950 3200 668 | Wire Wire Line 669 | 4950 3200 4650 3200 670 | Text Label 5450 2300 0 50 ~ 0 671 | AVR_I2C_PULLUP 672 | Text Label 1550 3400 0 50 ~ 0 673 | INA_3V3 674 | Text Label 650 3650 0 50 ~ 0 675 | INA_3V3 676 | Text Label 4750 2000 0 50 ~ 0 677 | INA_3V3 678 | Wire Wire Line 679 | 6600 2800 6350 2800 680 | Wire Wire Line 681 | 6350 2800 6350 3500 682 | Wire Wire Line 683 | 6350 3500 4650 3500 684 | Wire Wire Line 685 | 4650 3500 4650 3400 686 | $Comp 687 | L Device:C C7 688 | U 1 1 5D096BE4 689 | P 2250 900 690 | F 0 "C7" H 2365 946 50 0000 L CNN 691 | F 1 "10µ" H 2365 855 50 0000 L CNN 692 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 2288 750 50 0001 C CNN 693 | F 3 "~" H 2250 900 50 0001 C CNN 694 | 1 2250 900 695 | 1 0 0 -1 696 | $EndComp 697 | Connection ~ 2650 750 698 | Connection ~ 2650 1050 699 | Wire Wire Line 700 | 2250 750 2650 750 701 | Wire Wire Line 702 | 2250 1050 2650 1050 703 | Connection ~ 10600 2000 704 | $Comp 705 | L Device:C C8 706 | U 1 1 5D09F43A 707 | P 10600 2150 708 | F 0 "C8" H 10715 2196 50 0000 L CNN 709 | F 1 "10µ" H 10715 2105 50 0000 L CNN 710 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 10638 2000 50 0001 C CNN 711 | F 3 "~" H 10600 2150 50 0001 C CNN 712 | 1 10600 2150 713 | 1 0 0 -1 714 | $EndComp 715 | $Comp 716 | L power:GND #PWR0111 717 | U 1 1 5D0A3DE2 718 | P 10600 2300 719 | F 0 "#PWR0111" H 10600 2050 50 0001 C CNN 720 | F 1 "GND" H 10605 2127 50 0000 C CNN 721 | F 2 "" H 10600 2300 50 0001 C CNN 722 | F 3 "" H 10600 2300 50 0001 C CNN 723 | 1 10600 2300 724 | 1 0 0 -1 725 | $EndComp 726 | Text Label 3450 1200 2 50 ~ 0 727 | AVR_I2C_PULLUP 728 | Text Label 2900 1600 3 50 ~ 0 729 | AVR_I2C_PULLUP 730 | Wire Wire Line 731 | 5450 2200 5450 2300 732 | Wire Wire Line 733 | 4650 2000 4750 2000 734 | $Comp 735 | L Device:C C9 736 | U 1 1 5D17957D 737 | P 2700 2650 738 | F 0 "C9" H 2815 2696 50 0000 L CNN 739 | F 1 "100n" H 2815 2605 50 0000 L CNN 740 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 2738 2500 50 0001 C CNN 741 | F 3 "~" H 2700 2650 50 0001 C CNN 742 | 1 2700 2650 743 | 1 0 0 -1 744 | $EndComp 745 | Text Label 2700 2500 0 50 ~ 0 746 | AVR_I2C_PULLUP 747 | $Comp 748 | L power:GND #PWR05 749 | U 1 1 5D17E891 750 | P 2700 2800 751 | F 0 "#PWR05" H 2700 2550 50 0001 C CNN 752 | F 1 "GND" H 2705 2627 50 0000 C CNN 753 | F 2 "" H 2700 2800 50 0001 C CNN 754 | F 3 "" H 2700 2800 50 0001 C CNN 755 | 1 2700 2800 756 | 1 0 0 -1 757 | $EndComp 758 | Text Label 8900 1700 0 50 ~ 0 759 | RPI_5V 760 | Wire Wire Line 761 | 7150 2050 7550 2050 762 | Text Label 7350 2050 1 50 ~ 0 763 | +12V_SWITCHED 764 | Text Label 5600 3500 0 50 ~ 0 765 | AVR_PWR_EN 766 | $EndSCHEMATC 767 | -------------------------------------------------------------------------------- /pcb/fab/solarcampi-B_Paste.gbp: -------------------------------------------------------------------------------- 1 | G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.2* 2 | G04 #@! TF.CreationDate,2019-05-31T13:26:26+02:00* 3 | G04 #@! TF.ProjectId,solarcampi,736f6c61-7263-4616-9d70-692e6b696361,1.0.8* 4 | G04 #@! TF.SameCoordinates,Original* 5 | G04 #@! TF.FileFunction,Paste,Bot* 6 | G04 #@! TF.FilePolarity,Positive* 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.1.2) date 2019-05-31 13:26:26* 10 | %MOMM*% 11 | %LPD*% 12 | G04 APERTURE LIST* 13 | %ADD10R,1.600000X0.550000*% 14 | %ADD11R,0.550000X1.600000*% 15 | %ADD12R,1.400000X0.300000*% 16 | %ADD13C,0.100000*% 17 | %ADD14C,1.150000*% 18 | %ADD15R,0.900000X0.800000*% 19 | %ADD16R,0.800000X0.900000*% 20 | G04 APERTURE END LIST* 21 | D10* 22 | X100262000Y-60192000D03* 23 | X100262000Y-60992000D03* 24 | X100262000Y-61792000D03* 25 | X100262000Y-62592000D03* 26 | X100262000Y-63392000D03* 27 | X100262000Y-64192000D03* 28 | X100262000Y-64992000D03* 29 | X100262000Y-65792000D03* 30 | D11* 31 | X98812000Y-67242000D03* 32 | X98012000Y-67242000D03* 33 | X97212000Y-67242000D03* 34 | X96412000Y-67242000D03* 35 | X95612000Y-67242000D03* 36 | X94812000Y-67242000D03* 37 | X94012000Y-67242000D03* 38 | X93212000Y-67242000D03* 39 | D10* 40 | X91762000Y-65792000D03* 41 | X91762000Y-64992000D03* 42 | X91762000Y-64192000D03* 43 | X91762000Y-63392000D03* 44 | X91762000Y-62592000D03* 45 | X91762000Y-61792000D03* 46 | X91762000Y-60992000D03* 47 | X91762000Y-60192000D03* 48 | D11* 49 | X93212000Y-58742000D03* 50 | X94012000Y-58742000D03* 51 | X94812000Y-58742000D03* 52 | X95612000Y-58742000D03* 53 | X96412000Y-58742000D03* 54 | X97212000Y-58742000D03* 55 | X98012000Y-58742000D03* 56 | X98812000Y-58742000D03* 57 | D12* 58 | X83144000Y-60468000D03* 59 | X83144000Y-60968000D03* 60 | X83144000Y-61468000D03* 61 | X83144000Y-61968000D03* 62 | X83144000Y-62468000D03* 63 | X87544000Y-62468000D03* 64 | X87544000Y-61968000D03* 65 | X87544000Y-61468000D03* 66 | X87544000Y-60968000D03* 67 | X87544000Y-60468000D03* 68 | D13* 69 | G36* 70 | X106138505Y-56821204D02* 71 | G01* 72 | X106162773Y-56824804D01* 73 | X106186572Y-56830765D01* 74 | X106209671Y-56839030D01* 75 | X106231850Y-56849520D01* 76 | X106252893Y-56862132D01* 77 | X106272599Y-56876747D01* 78 | X106290777Y-56893223D01* 79 | X106307253Y-56911401D01* 80 | X106321868Y-56931107D01* 81 | X106334480Y-56952150D01* 82 | X106344970Y-56974329D01* 83 | X106353235Y-56997428D01* 84 | X106359196Y-57021227D01* 85 | X106362796Y-57045495D01* 86 | X106364000Y-57069999D01* 87 | X106364000Y-57720001D01* 88 | X106362796Y-57744505D01* 89 | X106359196Y-57768773D01* 90 | X106353235Y-57792572D01* 91 | X106344970Y-57815671D01* 92 | X106334480Y-57837850D01* 93 | X106321868Y-57858893D01* 94 | X106307253Y-57878599D01* 95 | X106290777Y-57896777D01* 96 | X106272599Y-57913253D01* 97 | X106252893Y-57927868D01* 98 | X106231850Y-57940480D01* 99 | X106209671Y-57950970D01* 100 | X106186572Y-57959235D01* 101 | X106162773Y-57965196D01* 102 | X106138505Y-57968796D01* 103 | X106114001Y-57970000D01* 104 | X105213999Y-57970000D01* 105 | X105189495Y-57968796D01* 106 | X105165227Y-57965196D01* 107 | X105141428Y-57959235D01* 108 | X105118329Y-57950970D01* 109 | X105096150Y-57940480D01* 110 | X105075107Y-57927868D01* 111 | X105055401Y-57913253D01* 112 | X105037223Y-57896777D01* 113 | X105020747Y-57878599D01* 114 | X105006132Y-57858893D01* 115 | X104993520Y-57837850D01* 116 | X104983030Y-57815671D01* 117 | X104974765Y-57792572D01* 118 | X104968804Y-57768773D01* 119 | X104965204Y-57744505D01* 120 | X104964000Y-57720001D01* 121 | X104964000Y-57069999D01* 122 | X104965204Y-57045495D01* 123 | X104968804Y-57021227D01* 124 | X104974765Y-56997428D01* 125 | X104983030Y-56974329D01* 126 | X104993520Y-56952150D01* 127 | X105006132Y-56931107D01* 128 | X105020747Y-56911401D01* 129 | X105037223Y-56893223D01* 130 | X105055401Y-56876747D01* 131 | X105075107Y-56862132D01* 132 | X105096150Y-56849520D01* 133 | X105118329Y-56839030D01* 134 | X105141428Y-56830765D01* 135 | X105165227Y-56824804D01* 136 | X105189495Y-56821204D01* 137 | X105213999Y-56820000D01* 138 | X106114001Y-56820000D01* 139 | X106138505Y-56821204D01* 140 | X106138505Y-56821204D01* 141 | G37* 142 | D14* 143 | X105664000Y-57395000D03* 144 | D13* 145 | G36* 146 | X106138505Y-58871204D02* 147 | G01* 148 | X106162773Y-58874804D01* 149 | X106186572Y-58880765D01* 150 | X106209671Y-58889030D01* 151 | X106231850Y-58899520D01* 152 | X106252893Y-58912132D01* 153 | X106272599Y-58926747D01* 154 | X106290777Y-58943223D01* 155 | X106307253Y-58961401D01* 156 | X106321868Y-58981107D01* 157 | X106334480Y-59002150D01* 158 | X106344970Y-59024329D01* 159 | X106353235Y-59047428D01* 160 | X106359196Y-59071227D01* 161 | X106362796Y-59095495D01* 162 | X106364000Y-59119999D01* 163 | X106364000Y-59770001D01* 164 | X106362796Y-59794505D01* 165 | X106359196Y-59818773D01* 166 | X106353235Y-59842572D01* 167 | X106344970Y-59865671D01* 168 | X106334480Y-59887850D01* 169 | X106321868Y-59908893D01* 170 | X106307253Y-59928599D01* 171 | X106290777Y-59946777D01* 172 | X106272599Y-59963253D01* 173 | X106252893Y-59977868D01* 174 | X106231850Y-59990480D01* 175 | X106209671Y-60000970D01* 176 | X106186572Y-60009235D01* 177 | X106162773Y-60015196D01* 178 | X106138505Y-60018796D01* 179 | X106114001Y-60020000D01* 180 | X105213999Y-60020000D01* 181 | X105189495Y-60018796D01* 182 | X105165227Y-60015196D01* 183 | X105141428Y-60009235D01* 184 | X105118329Y-60000970D01* 185 | X105096150Y-59990480D01* 186 | X105075107Y-59977868D01* 187 | X105055401Y-59963253D01* 188 | X105037223Y-59946777D01* 189 | X105020747Y-59928599D01* 190 | X105006132Y-59908893D01* 191 | X104993520Y-59887850D01* 192 | X104983030Y-59865671D01* 193 | X104974765Y-59842572D01* 194 | X104968804Y-59818773D01* 195 | X104965204Y-59794505D01* 196 | X104964000Y-59770001D01* 197 | X104964000Y-59119999D01* 198 | X104965204Y-59095495D01* 199 | X104968804Y-59071227D01* 200 | X104974765Y-59047428D01* 201 | X104983030Y-59024329D01* 202 | X104993520Y-59002150D01* 203 | X105006132Y-58981107D01* 204 | X105020747Y-58961401D01* 205 | X105037223Y-58943223D01* 206 | X105055401Y-58926747D01* 207 | X105075107Y-58912132D01* 208 | X105096150Y-58899520D01* 209 | X105118329Y-58889030D01* 210 | X105141428Y-58880765D01* 211 | X105165227Y-58874804D01* 212 | X105189495Y-58871204D01* 213 | X105213999Y-58870000D01* 214 | X106114001Y-58870000D01* 215 | X106138505Y-58871204D01* 216 | X106138505Y-58871204D01* 217 | G37* 218 | D14* 219 | X105664000Y-59445000D03* 220 | D15* 221 | X87392000Y-70866000D03* 222 | X89392000Y-71816000D03* 223 | X89392000Y-69916000D03* 224 | D16* 225 | X84328000Y-68850000D03* 226 | X83378000Y-70850000D03* 227 | X85278000Y-70850000D03* 228 | D13* 229 | G36* 230 | X103852505Y-58880204D02* 231 | G01* 232 | X103876773Y-58883804D01* 233 | X103900572Y-58889765D01* 234 | X103923671Y-58898030D01* 235 | X103945850Y-58908520D01* 236 | X103966893Y-58921132D01* 237 | X103986599Y-58935747D01* 238 | X104004777Y-58952223D01* 239 | X104021253Y-58970401D01* 240 | X104035868Y-58990107D01* 241 | X104048480Y-59011150D01* 242 | X104058970Y-59033329D01* 243 | X104067235Y-59056428D01* 244 | X104073196Y-59080227D01* 245 | X104076796Y-59104495D01* 246 | X104078000Y-59128999D01* 247 | X104078000Y-59779001D01* 248 | X104076796Y-59803505D01* 249 | X104073196Y-59827773D01* 250 | X104067235Y-59851572D01* 251 | X104058970Y-59874671D01* 252 | X104048480Y-59896850D01* 253 | X104035868Y-59917893D01* 254 | X104021253Y-59937599D01* 255 | X104004777Y-59955777D01* 256 | X103986599Y-59972253D01* 257 | X103966893Y-59986868D01* 258 | X103945850Y-59999480D01* 259 | X103923671Y-60009970D01* 260 | X103900572Y-60018235D01* 261 | X103876773Y-60024196D01* 262 | X103852505Y-60027796D01* 263 | X103828001Y-60029000D01* 264 | X102927999Y-60029000D01* 265 | X102903495Y-60027796D01* 266 | X102879227Y-60024196D01* 267 | X102855428Y-60018235D01* 268 | X102832329Y-60009970D01* 269 | X102810150Y-59999480D01* 270 | X102789107Y-59986868D01* 271 | X102769401Y-59972253D01* 272 | X102751223Y-59955777D01* 273 | X102734747Y-59937599D01* 274 | X102720132Y-59917893D01* 275 | X102707520Y-59896850D01* 276 | X102697030Y-59874671D01* 277 | X102688765Y-59851572D01* 278 | X102682804Y-59827773D01* 279 | X102679204Y-59803505D01* 280 | X102678000Y-59779001D01* 281 | X102678000Y-59128999D01* 282 | X102679204Y-59104495D01* 283 | X102682804Y-59080227D01* 284 | X102688765Y-59056428D01* 285 | X102697030Y-59033329D01* 286 | X102707520Y-59011150D01* 287 | X102720132Y-58990107D01* 288 | X102734747Y-58970401D01* 289 | X102751223Y-58952223D01* 290 | X102769401Y-58935747D01* 291 | X102789107Y-58921132D01* 292 | X102810150Y-58908520D01* 293 | X102832329Y-58898030D01* 294 | X102855428Y-58889765D01* 295 | X102879227Y-58883804D01* 296 | X102903495Y-58880204D01* 297 | X102927999Y-58879000D01* 298 | X103828001Y-58879000D01* 299 | X103852505Y-58880204D01* 300 | X103852505Y-58880204D01* 301 | G37* 302 | D14* 303 | X103378000Y-59454000D03* 304 | D13* 305 | G36* 306 | X103852505Y-56830204D02* 307 | G01* 308 | X103876773Y-56833804D01* 309 | X103900572Y-56839765D01* 310 | X103923671Y-56848030D01* 311 | X103945850Y-56858520D01* 312 | X103966893Y-56871132D01* 313 | X103986599Y-56885747D01* 314 | X104004777Y-56902223D01* 315 | X104021253Y-56920401D01* 316 | X104035868Y-56940107D01* 317 | X104048480Y-56961150D01* 318 | X104058970Y-56983329D01* 319 | X104067235Y-57006428D01* 320 | X104073196Y-57030227D01* 321 | X104076796Y-57054495D01* 322 | X104078000Y-57078999D01* 323 | X104078000Y-57729001D01* 324 | X104076796Y-57753505D01* 325 | X104073196Y-57777773D01* 326 | X104067235Y-57801572D01* 327 | X104058970Y-57824671D01* 328 | X104048480Y-57846850D01* 329 | X104035868Y-57867893D01* 330 | X104021253Y-57887599D01* 331 | X104004777Y-57905777D01* 332 | X103986599Y-57922253D01* 333 | X103966893Y-57936868D01* 334 | X103945850Y-57949480D01* 335 | X103923671Y-57959970D01* 336 | X103900572Y-57968235D01* 337 | X103876773Y-57974196D01* 338 | X103852505Y-57977796D01* 339 | X103828001Y-57979000D01* 340 | X102927999Y-57979000D01* 341 | X102903495Y-57977796D01* 342 | X102879227Y-57974196D01* 343 | X102855428Y-57968235D01* 344 | X102832329Y-57959970D01* 345 | X102810150Y-57949480D01* 346 | X102789107Y-57936868D01* 347 | X102769401Y-57922253D01* 348 | X102751223Y-57905777D01* 349 | X102734747Y-57887599D01* 350 | X102720132Y-57867893D01* 351 | X102707520Y-57846850D01* 352 | X102697030Y-57824671D01* 353 | X102688765Y-57801572D01* 354 | X102682804Y-57777773D01* 355 | X102679204Y-57753505D01* 356 | X102678000Y-57729001D01* 357 | X102678000Y-57078999D01* 358 | X102679204Y-57054495D01* 359 | X102682804Y-57030227D01* 360 | X102688765Y-57006428D01* 361 | X102697030Y-56983329D01* 362 | X102707520Y-56961150D01* 363 | X102720132Y-56940107D01* 364 | X102734747Y-56920401D01* 365 | X102751223Y-56902223D01* 366 | X102769401Y-56885747D01* 367 | X102789107Y-56871132D01* 368 | X102810150Y-56858520D01* 369 | X102832329Y-56848030D01* 370 | X102855428Y-56839765D01* 371 | X102879227Y-56833804D01* 372 | X102903495Y-56830204D01* 373 | X102927999Y-56829000D01* 374 | X103828001Y-56829000D01* 375 | X103852505Y-56830204D01* 376 | X103852505Y-56830204D01* 377 | G37* 378 | D14* 379 | X103378000Y-57404000D03* 380 | D13* 381 | G36* 382 | X79976505Y-59869204D02* 383 | G01* 384 | X80000773Y-59872804D01* 385 | X80024572Y-59878765D01* 386 | X80047671Y-59887030D01* 387 | X80069850Y-59897520D01* 388 | X80090893Y-59910132D01* 389 | X80110599Y-59924747D01* 390 | X80128777Y-59941223D01* 391 | X80145253Y-59959401D01* 392 | X80159868Y-59979107D01* 393 | X80172480Y-60000150D01* 394 | X80182970Y-60022329D01* 395 | X80191235Y-60045428D01* 396 | X80197196Y-60069227D01* 397 | X80200796Y-60093495D01* 398 | X80202000Y-60117999D01* 399 | X80202000Y-60768001D01* 400 | X80200796Y-60792505D01* 401 | X80197196Y-60816773D01* 402 | X80191235Y-60840572D01* 403 | X80182970Y-60863671D01* 404 | X80172480Y-60885850D01* 405 | X80159868Y-60906893D01* 406 | X80145253Y-60926599D01* 407 | X80128777Y-60944777D01* 408 | X80110599Y-60961253D01* 409 | X80090893Y-60975868D01* 410 | X80069850Y-60988480D01* 411 | X80047671Y-60998970D01* 412 | X80024572Y-61007235D01* 413 | X80000773Y-61013196D01* 414 | X79976505Y-61016796D01* 415 | X79952001Y-61018000D01* 416 | X79051999Y-61018000D01* 417 | X79027495Y-61016796D01* 418 | X79003227Y-61013196D01* 419 | X78979428Y-61007235D01* 420 | X78956329Y-60998970D01* 421 | X78934150Y-60988480D01* 422 | X78913107Y-60975868D01* 423 | X78893401Y-60961253D01* 424 | X78875223Y-60944777D01* 425 | X78858747Y-60926599D01* 426 | X78844132Y-60906893D01* 427 | X78831520Y-60885850D01* 428 | X78821030Y-60863671D01* 429 | X78812765Y-60840572D01* 430 | X78806804Y-60816773D01* 431 | X78803204Y-60792505D01* 432 | X78802000Y-60768001D01* 433 | X78802000Y-60117999D01* 434 | X78803204Y-60093495D01* 435 | X78806804Y-60069227D01* 436 | X78812765Y-60045428D01* 437 | X78821030Y-60022329D01* 438 | X78831520Y-60000150D01* 439 | X78844132Y-59979107D01* 440 | X78858747Y-59959401D01* 441 | X78875223Y-59941223D01* 442 | X78893401Y-59924747D01* 443 | X78913107Y-59910132D01* 444 | X78934150Y-59897520D01* 445 | X78956329Y-59887030D01* 446 | X78979428Y-59878765D01* 447 | X79003227Y-59872804D01* 448 | X79027495Y-59869204D01* 449 | X79051999Y-59868000D01* 450 | X79952001Y-59868000D01* 451 | X79976505Y-59869204D01* 452 | X79976505Y-59869204D01* 453 | G37* 454 | D14* 455 | X79502000Y-60443000D03* 456 | D13* 457 | G36* 458 | X79976505Y-61919204D02* 459 | G01* 460 | X80000773Y-61922804D01* 461 | X80024572Y-61928765D01* 462 | X80047671Y-61937030D01* 463 | X80069850Y-61947520D01* 464 | X80090893Y-61960132D01* 465 | X80110599Y-61974747D01* 466 | X80128777Y-61991223D01* 467 | X80145253Y-62009401D01* 468 | X80159868Y-62029107D01* 469 | X80172480Y-62050150D01* 470 | X80182970Y-62072329D01* 471 | X80191235Y-62095428D01* 472 | X80197196Y-62119227D01* 473 | X80200796Y-62143495D01* 474 | X80202000Y-62167999D01* 475 | X80202000Y-62818001D01* 476 | X80200796Y-62842505D01* 477 | X80197196Y-62866773D01* 478 | X80191235Y-62890572D01* 479 | X80182970Y-62913671D01* 480 | X80172480Y-62935850D01* 481 | X80159868Y-62956893D01* 482 | X80145253Y-62976599D01* 483 | X80128777Y-62994777D01* 484 | X80110599Y-63011253D01* 485 | X80090893Y-63025868D01* 486 | X80069850Y-63038480D01* 487 | X80047671Y-63048970D01* 488 | X80024572Y-63057235D01* 489 | X80000773Y-63063196D01* 490 | X79976505Y-63066796D01* 491 | X79952001Y-63068000D01* 492 | X79051999Y-63068000D01* 493 | X79027495Y-63066796D01* 494 | X79003227Y-63063196D01* 495 | X78979428Y-63057235D01* 496 | X78956329Y-63048970D01* 497 | X78934150Y-63038480D01* 498 | X78913107Y-63025868D01* 499 | X78893401Y-63011253D01* 500 | X78875223Y-62994777D01* 501 | X78858747Y-62976599D01* 502 | X78844132Y-62956893D01* 503 | X78831520Y-62935850D01* 504 | X78821030Y-62913671D01* 505 | X78812765Y-62890572D01* 506 | X78806804Y-62866773D01* 507 | X78803204Y-62842505D01* 508 | X78802000Y-62818001D01* 509 | X78802000Y-62167999D01* 510 | X78803204Y-62143495D01* 511 | X78806804Y-62119227D01* 512 | X78812765Y-62095428D01* 513 | X78821030Y-62072329D01* 514 | X78831520Y-62050150D01* 515 | X78844132Y-62029107D01* 516 | X78858747Y-62009401D01* 517 | X78875223Y-61991223D01* 518 | X78893401Y-61974747D01* 519 | X78913107Y-61960132D01* 520 | X78934150Y-61947520D01* 521 | X78956329Y-61937030D01* 522 | X78979428Y-61928765D01* 523 | X79003227Y-61922804D01* 524 | X79027495Y-61919204D01* 525 | X79051999Y-61918000D01* 526 | X79952001Y-61918000D01* 527 | X79976505Y-61919204D01* 528 | X79976505Y-61919204D01* 529 | G37* 530 | D14* 531 | X79502000Y-62493000D03* 532 | D13* 533 | G36* 534 | X103852505Y-61393204D02* 535 | G01* 536 | X103876773Y-61396804D01* 537 | X103900572Y-61402765D01* 538 | X103923671Y-61411030D01* 539 | X103945850Y-61421520D01* 540 | X103966893Y-61434132D01* 541 | X103986599Y-61448747D01* 542 | X104004777Y-61465223D01* 543 | X104021253Y-61483401D01* 544 | X104035868Y-61503107D01* 545 | X104048480Y-61524150D01* 546 | X104058970Y-61546329D01* 547 | X104067235Y-61569428D01* 548 | X104073196Y-61593227D01* 549 | X104076796Y-61617495D01* 550 | X104078000Y-61641999D01* 551 | X104078000Y-62292001D01* 552 | X104076796Y-62316505D01* 553 | X104073196Y-62340773D01* 554 | X104067235Y-62364572D01* 555 | X104058970Y-62387671D01* 556 | X104048480Y-62409850D01* 557 | X104035868Y-62430893D01* 558 | X104021253Y-62450599D01* 559 | X104004777Y-62468777D01* 560 | X103986599Y-62485253D01* 561 | X103966893Y-62499868D01* 562 | X103945850Y-62512480D01* 563 | X103923671Y-62522970D01* 564 | X103900572Y-62531235D01* 565 | X103876773Y-62537196D01* 566 | X103852505Y-62540796D01* 567 | X103828001Y-62542000D01* 568 | X102927999Y-62542000D01* 569 | X102903495Y-62540796D01* 570 | X102879227Y-62537196D01* 571 | X102855428Y-62531235D01* 572 | X102832329Y-62522970D01* 573 | X102810150Y-62512480D01* 574 | X102789107Y-62499868D01* 575 | X102769401Y-62485253D01* 576 | X102751223Y-62468777D01* 577 | X102734747Y-62450599D01* 578 | X102720132Y-62430893D01* 579 | X102707520Y-62409850D01* 580 | X102697030Y-62387671D01* 581 | X102688765Y-62364572D01* 582 | X102682804Y-62340773D01* 583 | X102679204Y-62316505D01* 584 | X102678000Y-62292001D01* 585 | X102678000Y-61641999D01* 586 | X102679204Y-61617495D01* 587 | X102682804Y-61593227D01* 588 | X102688765Y-61569428D01* 589 | X102697030Y-61546329D01* 590 | X102707520Y-61524150D01* 591 | X102720132Y-61503107D01* 592 | X102734747Y-61483401D01* 593 | X102751223Y-61465223D01* 594 | X102769401Y-61448747D01* 595 | X102789107Y-61434132D01* 596 | X102810150Y-61421520D01* 597 | X102832329Y-61411030D01* 598 | X102855428Y-61402765D01* 599 | X102879227Y-61396804D01* 600 | X102903495Y-61393204D01* 601 | X102927999Y-61392000D01* 602 | X103828001Y-61392000D01* 603 | X103852505Y-61393204D01* 604 | X103852505Y-61393204D01* 605 | G37* 606 | D14* 607 | X103378000Y-61967000D03* 608 | D13* 609 | G36* 610 | X103852505Y-63443204D02* 611 | G01* 612 | X103876773Y-63446804D01* 613 | X103900572Y-63452765D01* 614 | X103923671Y-63461030D01* 615 | X103945850Y-63471520D01* 616 | X103966893Y-63484132D01* 617 | X103986599Y-63498747D01* 618 | X104004777Y-63515223D01* 619 | X104021253Y-63533401D01* 620 | X104035868Y-63553107D01* 621 | X104048480Y-63574150D01* 622 | X104058970Y-63596329D01* 623 | X104067235Y-63619428D01* 624 | X104073196Y-63643227D01* 625 | X104076796Y-63667495D01* 626 | X104078000Y-63691999D01* 627 | X104078000Y-64342001D01* 628 | X104076796Y-64366505D01* 629 | X104073196Y-64390773D01* 630 | X104067235Y-64414572D01* 631 | X104058970Y-64437671D01* 632 | X104048480Y-64459850D01* 633 | X104035868Y-64480893D01* 634 | X104021253Y-64500599D01* 635 | X104004777Y-64518777D01* 636 | X103986599Y-64535253D01* 637 | X103966893Y-64549868D01* 638 | X103945850Y-64562480D01* 639 | X103923671Y-64572970D01* 640 | X103900572Y-64581235D01* 641 | X103876773Y-64587196D01* 642 | X103852505Y-64590796D01* 643 | X103828001Y-64592000D01* 644 | X102927999Y-64592000D01* 645 | X102903495Y-64590796D01* 646 | X102879227Y-64587196D01* 647 | X102855428Y-64581235D01* 648 | X102832329Y-64572970D01* 649 | X102810150Y-64562480D01* 650 | X102789107Y-64549868D01* 651 | X102769401Y-64535253D01* 652 | X102751223Y-64518777D01* 653 | X102734747Y-64500599D01* 654 | X102720132Y-64480893D01* 655 | X102707520Y-64459850D01* 656 | X102697030Y-64437671D01* 657 | X102688765Y-64414572D01* 658 | X102682804Y-64390773D01* 659 | X102679204Y-64366505D01* 660 | X102678000Y-64342001D01* 661 | X102678000Y-63691999D01* 662 | X102679204Y-63667495D01* 663 | X102682804Y-63643227D01* 664 | X102688765Y-63619428D01* 665 | X102697030Y-63596329D01* 666 | X102707520Y-63574150D01* 667 | X102720132Y-63553107D01* 668 | X102734747Y-63533401D01* 669 | X102751223Y-63515223D01* 670 | X102769401Y-63498747D01* 671 | X102789107Y-63484132D01* 672 | X102810150Y-63471520D01* 673 | X102832329Y-63461030D01* 674 | X102855428Y-63452765D01* 675 | X102879227Y-63446804D01* 676 | X102903495Y-63443204D01* 677 | X102927999Y-63442000D01* 678 | X103828001Y-63442000D01* 679 | X103852505Y-63443204D01* 680 | X103852505Y-63443204D01* 681 | G37* 682 | D14* 683 | X103378000Y-64017000D03* 684 | D13* 685 | G36* 686 | X77182505Y-62935204D02* 687 | G01* 688 | X77206773Y-62938804D01* 689 | X77230572Y-62944765D01* 690 | X77253671Y-62953030D01* 691 | X77275850Y-62963520D01* 692 | X77296893Y-62976132D01* 693 | X77316599Y-62990747D01* 694 | X77334777Y-63007223D01* 695 | X77351253Y-63025401D01* 696 | X77365868Y-63045107D01* 697 | X77378480Y-63066150D01* 698 | X77388970Y-63088329D01* 699 | X77397235Y-63111428D01* 700 | X77403196Y-63135227D01* 701 | X77406796Y-63159495D01* 702 | X77408000Y-63183999D01* 703 | X77408000Y-63834001D01* 704 | X77406796Y-63858505D01* 705 | X77403196Y-63882773D01* 706 | X77397235Y-63906572D01* 707 | X77388970Y-63929671D01* 708 | X77378480Y-63951850D01* 709 | X77365868Y-63972893D01* 710 | X77351253Y-63992599D01* 711 | X77334777Y-64010777D01* 712 | X77316599Y-64027253D01* 713 | X77296893Y-64041868D01* 714 | X77275850Y-64054480D01* 715 | X77253671Y-64064970D01* 716 | X77230572Y-64073235D01* 717 | X77206773Y-64079196D01* 718 | X77182505Y-64082796D01* 719 | X77158001Y-64084000D01* 720 | X76257999Y-64084000D01* 721 | X76233495Y-64082796D01* 722 | X76209227Y-64079196D01* 723 | X76185428Y-64073235D01* 724 | X76162329Y-64064970D01* 725 | X76140150Y-64054480D01* 726 | X76119107Y-64041868D01* 727 | X76099401Y-64027253D01* 728 | X76081223Y-64010777D01* 729 | X76064747Y-63992599D01* 730 | X76050132Y-63972893D01* 731 | X76037520Y-63951850D01* 732 | X76027030Y-63929671D01* 733 | X76018765Y-63906572D01* 734 | X76012804Y-63882773D01* 735 | X76009204Y-63858505D01* 736 | X76008000Y-63834001D01* 737 | X76008000Y-63183999D01* 738 | X76009204Y-63159495D01* 739 | X76012804Y-63135227D01* 740 | X76018765Y-63111428D01* 741 | X76027030Y-63088329D01* 742 | X76037520Y-63066150D01* 743 | X76050132Y-63045107D01* 744 | X76064747Y-63025401D01* 745 | X76081223Y-63007223D01* 746 | X76099401Y-62990747D01* 747 | X76119107Y-62976132D01* 748 | X76140150Y-62963520D01* 749 | X76162329Y-62953030D01* 750 | X76185428Y-62944765D01* 751 | X76209227Y-62938804D01* 752 | X76233495Y-62935204D01* 753 | X76257999Y-62934000D01* 754 | X77158001Y-62934000D01* 755 | X77182505Y-62935204D01* 756 | X77182505Y-62935204D01* 757 | G37* 758 | D14* 759 | X76708000Y-63509000D03* 760 | D13* 761 | G36* 762 | X77182505Y-60885204D02* 763 | G01* 764 | X77206773Y-60888804D01* 765 | X77230572Y-60894765D01* 766 | X77253671Y-60903030D01* 767 | X77275850Y-60913520D01* 768 | X77296893Y-60926132D01* 769 | X77316599Y-60940747D01* 770 | X77334777Y-60957223D01* 771 | X77351253Y-60975401D01* 772 | X77365868Y-60995107D01* 773 | X77378480Y-61016150D01* 774 | X77388970Y-61038329D01* 775 | X77397235Y-61061428D01* 776 | X77403196Y-61085227D01* 777 | X77406796Y-61109495D01* 778 | X77408000Y-61133999D01* 779 | X77408000Y-61784001D01* 780 | X77406796Y-61808505D01* 781 | X77403196Y-61832773D01* 782 | X77397235Y-61856572D01* 783 | X77388970Y-61879671D01* 784 | X77378480Y-61901850D01* 785 | X77365868Y-61922893D01* 786 | X77351253Y-61942599D01* 787 | X77334777Y-61960777D01* 788 | X77316599Y-61977253D01* 789 | X77296893Y-61991868D01* 790 | X77275850Y-62004480D01* 791 | X77253671Y-62014970D01* 792 | X77230572Y-62023235D01* 793 | X77206773Y-62029196D01* 794 | X77182505Y-62032796D01* 795 | X77158001Y-62034000D01* 796 | X76257999Y-62034000D01* 797 | X76233495Y-62032796D01* 798 | X76209227Y-62029196D01* 799 | X76185428Y-62023235D01* 800 | X76162329Y-62014970D01* 801 | X76140150Y-62004480D01* 802 | X76119107Y-61991868D01* 803 | X76099401Y-61977253D01* 804 | X76081223Y-61960777D01* 805 | X76064747Y-61942599D01* 806 | X76050132Y-61922893D01* 807 | X76037520Y-61901850D01* 808 | X76027030Y-61879671D01* 809 | X76018765Y-61856572D01* 810 | X76012804Y-61832773D01* 811 | X76009204Y-61808505D01* 812 | X76008000Y-61784001D01* 813 | X76008000Y-61133999D01* 814 | X76009204Y-61109495D01* 815 | X76012804Y-61085227D01* 816 | X76018765Y-61061428D01* 817 | X76027030Y-61038329D01* 818 | X76037520Y-61016150D01* 819 | X76050132Y-60995107D01* 820 | X76064747Y-60975401D01* 821 | X76081223Y-60957223D01* 822 | X76099401Y-60940747D01* 823 | X76119107Y-60926132D01* 824 | X76140150Y-60913520D01* 825 | X76162329Y-60903030D01* 826 | X76185428Y-60894765D01* 827 | X76209227Y-60888804D01* 828 | X76233495Y-60885204D01* 829 | X76257999Y-60884000D01* 830 | X77158001Y-60884000D01* 831 | X77182505Y-60885204D01* 832 | X77182505Y-60885204D01* 833 | G37* 834 | D14* 835 | X76708000Y-61459000D03* 836 | M02* 837 | -------------------------------------------------------------------------------- /pcb/gerber/solarcampi-B_SilkS.gbo: -------------------------------------------------------------------------------- 1 | G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.2* 2 | G04 #@! TF.CreationDate,2019-07-27T17:59:41+02:00* 3 | G04 #@! TF.ProjectId,solarcampi,736f6c61-7263-4616-9d70-692e6b696361,C* 4 | G04 #@! TF.SameCoordinates,Original* 5 | G04 #@! TF.FileFunction,Legend,Bot* 6 | G04 #@! TF.FilePolarity,Positive* 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.1.2) date 2019-07-27 17:59:41* 10 | %MOMM*% 11 | %LPD*% 12 | G04 APERTURE LIST* 13 | %ADD10C,0.150000*% 14 | %ADD11C,0.300000*% 15 | %ADD12C,0.120000*% 16 | G04 APERTURE END LIST* 17 | D10* 18 | X51201428Y-58169047D02* 19 | X51201428Y-58930952D01* 20 | X51550952Y-63701428D02* 21 | X50789047Y-63701428D01* 22 | X51170000Y-64082380D02* 23 | X51170000Y-63320476D01* 24 | X50682380Y-59856666D02* 25 | X51682380Y-60190000D01* 26 | X50682380Y-60523333D01* 27 | X51682380Y-60856666D02* 28 | X50682380Y-60856666D01* 29 | X50682380Y-61094761D01* 30 | X50730000Y-61237619D01* 31 | X50825238Y-61332857D01* 32 | X50920476Y-61380476D01* 33 | X51110952Y-61428095D01* 34 | X51253809Y-61428095D01* 35 | X51444285Y-61380476D01* 36 | X51539523Y-61332857D01* 37 | X51634761Y-61237619D01* 38 | X51682380Y-61094761D01* 39 | X51682380Y-60856666D01* 40 | X51587142Y-62428095D02* 41 | X51634761Y-62380476D01* 42 | X51682380Y-62237619D01* 43 | X51682380Y-62142380D01* 44 | X51634761Y-61999523D01* 45 | X51539523Y-61904285D01* 46 | X51444285Y-61856666D01* 47 | X51253809Y-61809047D01* 48 | X51110952Y-61809047D01* 49 | X50920476Y-61856666D01* 50 | X50825238Y-61904285D01* 51 | X50730000Y-61999523D01* 52 | X50682380Y-62142380D01* 53 | X50682380Y-62237619D01* 54 | X50730000Y-62380476D01* 55 | X50777619Y-62428095D01* 56 | X68420952Y-76641428D02* 57 | X67659047Y-76641428D01* 58 | X58240952Y-76641428D02* 59 | X57479047Y-76641428D01* 60 | X57860000Y-77022380D02* 61 | X57860000Y-76260476D01* 62 | X61398095Y-74054761D02* 63 | X61255238Y-74102380D01* 64 | X61017142Y-74102380D01* 65 | X60921904Y-74054761D01* 66 | X60874285Y-74007142D01* 67 | X60826666Y-73911904D01* 68 | X60826666Y-73816666D01* 69 | X60874285Y-73721428D01* 70 | X60921904Y-73673809D01* 71 | X61017142Y-73626190D01* 72 | X61207619Y-73578571D01* 73 | X61302857Y-73530952D01* 74 | X61350476Y-73483333D01* 75 | X61398095Y-73388095D01* 76 | X61398095Y-73292857D01* 77 | X61350476Y-73197619D01* 78 | X61302857Y-73150000D01* 79 | X61207619Y-73102380D01* 80 | X60969523Y-73102380D01* 81 | X60826666Y-73150000D01* 82 | X60398095Y-74102380D02* 83 | X60398095Y-73102380D01* 84 | X60398095Y-73578571D02* 85 | X59826666Y-73578571D01* 86 | X59826666Y-74102380D02* 87 | X59826666Y-73102380D01* 88 | X59350476Y-73102380D02* 89 | X59350476Y-73911904D01* 90 | X59302857Y-74007142D01* 91 | X59255238Y-74054761D01* 92 | X59160000Y-74102380D01* 93 | X58969523Y-74102380D01* 94 | X58874285Y-74054761D01* 95 | X58826666Y-74007142D01* 96 | X58779047Y-73911904D01* 97 | X58779047Y-73102380D01* 98 | X58302857Y-74102380D02* 99 | X58302857Y-73102380D01* 100 | X57731428Y-74102380D01* 101 | X57731428Y-73102380D01* 102 | X57398095Y-73102380D02* 103 | X56826666Y-73102380D01* 104 | X57112380Y-74102380D02* 105 | X57112380Y-73102380D01* 106 | D11* 107 | X82717857Y-70073571D02* 108 | X81860714Y-70073571D01* 109 | X82289285Y-71573571D02* 110 | X82289285Y-70073571D01* 111 | X81146428Y-71573571D02* 112 | X81289285Y-71502142D01* 113 | X81360714Y-71430714D01* 114 | X81432142Y-71287857D01* 115 | X81432142Y-70859285D01* 116 | X81360714Y-70716428D01* 117 | X81289285Y-70645000D01* 118 | X81146428Y-70573571D01* 119 | X80932142Y-70573571D01* 120 | X80789285Y-70645000D01* 121 | X80717857Y-70716428D01* 122 | X80646428Y-70859285D01* 123 | X80646428Y-71287857D01* 124 | X80717857Y-71430714D01* 125 | X80789285Y-71502142D01* 126 | X80932142Y-71573571D01* 127 | X81146428Y-71573571D01* 128 | X80003571Y-71573571D02* 129 | X80003571Y-70073571D01* 130 | X80003571Y-70645000D02* 131 | X79860714Y-70573571D01* 132 | X79575000Y-70573571D01* 133 | X79432142Y-70645000D01* 134 | X79360714Y-70716428D01* 135 | X79289285Y-70859285D01* 136 | X79289285Y-71287857D01* 137 | X79360714Y-71430714D01* 138 | X79432142Y-71502142D01* 139 | X79575000Y-71573571D01* 140 | X79860714Y-71573571D01* 141 | X80003571Y-71502142D01* 142 | X78646428Y-71573571D02* 143 | X78646428Y-70573571D01* 144 | X78646428Y-70073571D02* 145 | X78717857Y-70145000D01* 146 | X78646428Y-70216428D01* 147 | X78575000Y-70145000D01* 148 | X78646428Y-70073571D01* 149 | X78646428Y-70216428D01* 150 | X77289285Y-71573571D02* 151 | X77289285Y-70787857D01* 152 | X77360714Y-70645000D01* 153 | X77503571Y-70573571D01* 154 | X77789285Y-70573571D01* 155 | X77932142Y-70645000D01* 156 | X77289285Y-71502142D02* 157 | X77432142Y-71573571D01* 158 | X77789285Y-71573571D01* 159 | X77932142Y-71502142D01* 160 | X78003571Y-71359285D01* 161 | X78003571Y-71216428D01* 162 | X77932142Y-71073571D01* 163 | X77789285Y-71002142D01* 164 | X77432142Y-71002142D01* 165 | X77289285Y-70930714D01* 166 | X76646428Y-71502142D02* 167 | X76503571Y-71573571D01* 168 | X76217857Y-71573571D01* 169 | X76075000Y-71502142D01* 170 | X76003571Y-71359285D01* 171 | X76003571Y-71287857D01* 172 | X76075000Y-71145000D01* 173 | X76217857Y-71073571D01* 174 | X76432142Y-71073571D01* 175 | X76575000Y-71002142D01* 176 | X76646428Y-70859285D01* 177 | X76646428Y-70787857D01* 178 | X76575000Y-70645000D01* 179 | X76432142Y-70573571D01* 180 | X76217857Y-70573571D01* 181 | X76075000Y-70645000D01* 182 | X74217857Y-71573571D02* 183 | X74217857Y-70073571D01* 184 | X73717857Y-71145000D01* 185 | X73217857Y-70073571D01* 186 | X73217857Y-71573571D01* 187 | X71860714Y-71573571D02* 188 | X71860714Y-70787857D01* 189 | X71932142Y-70645000D01* 190 | X72075000Y-70573571D01* 191 | X72360714Y-70573571D01* 192 | X72503571Y-70645000D01* 193 | X71860714Y-71502142D02* 194 | X72003571Y-71573571D01* 195 | X72360714Y-71573571D01* 196 | X72503571Y-71502142D01* 197 | X72575000Y-71359285D01* 198 | X72575000Y-71216428D01* 199 | X72503571Y-71073571D01* 200 | X72360714Y-71002142D01* 201 | X72003571Y-71002142D01* 202 | X71860714Y-70930714D01* 203 | X72503571Y-70073571D02* 204 | X72432142Y-70145000D01* 205 | X72503571Y-70216428D01* 206 | X72575000Y-70145000D01* 207 | X72503571Y-70073571D01* 208 | X72503571Y-70216428D01* 209 | X71932142Y-70073571D02* 210 | X71860714Y-70145000D01* 211 | X71932142Y-70216428D01* 212 | X72003571Y-70145000D01* 213 | X71932142Y-70073571D01* 214 | X71932142Y-70216428D01* 215 | X70503571Y-71573571D02* 216 | X70503571Y-70073571D01* 217 | X70503571Y-71502142D02* 218 | X70646428Y-71573571D01* 219 | X70932142Y-71573571D01* 220 | X71075000Y-71502142D01* 221 | X71146428Y-71430714D01* 222 | X71217857Y-71287857D01* 223 | X71217857Y-70859285D01* 224 | X71146428Y-70716428D01* 225 | X71075000Y-70645000D01* 226 | X70932142Y-70573571D01* 227 | X70646428Y-70573571D01* 228 | X70503571Y-70645000D01* 229 | X69217857Y-71502142D02* 230 | X69360714Y-71573571D01* 231 | X69646428Y-71573571D01* 232 | X69789285Y-71502142D01* 233 | X69860714Y-71359285D01* 234 | X69860714Y-70787857D01* 235 | X69789285Y-70645000D01* 236 | X69646428Y-70573571D01* 237 | X69360714Y-70573571D01* 238 | X69217857Y-70645000D01* 239 | X69146428Y-70787857D01* 240 | X69146428Y-70930714D01* 241 | X69860714Y-71073571D01* 242 | X68289285Y-71573571D02* 243 | X68432142Y-71502142D01* 244 | X68503571Y-71359285D01* 245 | X68503571Y-70073571D01* 246 | X86575000Y-72623571D02* 247 | X85717857Y-72623571D01* 248 | X86146428Y-74123571D02* 249 | X86146428Y-72623571D01* 250 | X85003571Y-74123571D02* 251 | X85146428Y-74052142D01* 252 | X85217857Y-73980714D01* 253 | X85289285Y-73837857D01* 254 | X85289285Y-73409285D01* 255 | X85217857Y-73266428D01* 256 | X85146428Y-73195000D01* 257 | X85003571Y-73123571D01* 258 | X84789285Y-73123571D01* 259 | X84646428Y-73195000D01* 260 | X84575000Y-73266428D01* 261 | X84503571Y-73409285D01* 262 | X84503571Y-73837857D01* 263 | X84575000Y-73980714D01* 264 | X84646428Y-74052142D01* 265 | X84789285Y-74123571D01* 266 | X85003571Y-74123571D01* 267 | X83860714Y-74123571D02* 268 | X83860714Y-72623571D01* 269 | X83860714Y-73195000D02* 270 | X83717857Y-73123571D01* 271 | X83432142Y-73123571D01* 272 | X83289285Y-73195000D01* 273 | X83217857Y-73266428D01* 274 | X83146428Y-73409285D01* 275 | X83146428Y-73837857D01* 276 | X83217857Y-73980714D01* 277 | X83289285Y-74052142D01* 278 | X83432142Y-74123571D01* 279 | X83717857Y-74123571D01* 280 | X83860714Y-74052142D01* 281 | X82503571Y-74123571D02* 282 | X82503571Y-73123571D01* 283 | X82503571Y-72623571D02* 284 | X82575000Y-72695000D01* 285 | X82503571Y-72766428D01* 286 | X82432142Y-72695000D01* 287 | X82503571Y-72623571D01* 288 | X82503571Y-72766428D01* 289 | X81146428Y-74123571D02* 290 | X81146428Y-73337857D01* 291 | X81217857Y-73195000D01* 292 | X81360714Y-73123571D01* 293 | X81646428Y-73123571D01* 294 | X81789285Y-73195000D01* 295 | X81146428Y-74052142D02* 296 | X81289285Y-74123571D01* 297 | X81646428Y-74123571D01* 298 | X81789285Y-74052142D01* 299 | X81860714Y-73909285D01* 300 | X81860714Y-73766428D01* 301 | X81789285Y-73623571D01* 302 | X81646428Y-73552142D01* 303 | X81289285Y-73552142D01* 304 | X81146428Y-73480714D01* 305 | X80503571Y-74052142D02* 306 | X80360714Y-74123571D01* 307 | X80075000Y-74123571D01* 308 | X79932142Y-74052142D01* 309 | X79860714Y-73909285D01* 310 | X79860714Y-73837857D01* 311 | X79932142Y-73695000D01* 312 | X80075000Y-73623571D01* 313 | X80289285Y-73623571D01* 314 | X80432142Y-73552142D01* 315 | X80503571Y-73409285D01* 316 | X80503571Y-73337857D01* 317 | X80432142Y-73195000D01* 318 | X80289285Y-73123571D01* 319 | X80075000Y-73123571D01* 320 | X79932142Y-73195000D01* 321 | X78146428Y-74052142D02* 322 | X77932142Y-74123571D01* 323 | X77575000Y-74123571D01* 324 | X77432142Y-74052142D01* 325 | X77360714Y-73980714D01* 326 | X77289285Y-73837857D01* 327 | X77289285Y-73695000D01* 328 | X77360714Y-73552142D01* 329 | X77432142Y-73480714D01* 330 | X77575000Y-73409285D01* 331 | X77860714Y-73337857D01* 332 | X78003571Y-73266428D01* 333 | X78075000Y-73195000D01* 334 | X78146428Y-73052142D01* 335 | X78146428Y-72909285D01* 336 | X78075000Y-72766428D01* 337 | X78003571Y-72695000D01* 338 | X77860714Y-72623571D01* 339 | X77503571Y-72623571D01* 340 | X77289285Y-72695000D01* 341 | X76003571Y-74052142D02* 342 | X76146428Y-74123571D01* 343 | X76432142Y-74123571D01* 344 | X76575000Y-74052142D01* 345 | X76646428Y-73980714D01* 346 | X76717857Y-73837857D01* 347 | X76717857Y-73409285D01* 348 | X76646428Y-73266428D01* 349 | X76575000Y-73195000D01* 350 | X76432142Y-73123571D01* 351 | X76146428Y-73123571D01* 352 | X76003571Y-73195000D01* 353 | X75360714Y-74123571D02* 354 | X75360714Y-72623571D01* 355 | X74717857Y-74123571D02* 356 | X74717857Y-73337857D01* 357 | X74789285Y-73195000D01* 358 | X74932142Y-73123571D01* 359 | X75146428Y-73123571D01* 360 | X75289285Y-73195000D01* 361 | X75360714Y-73266428D01* 362 | X74003571Y-74123571D02* 363 | X74003571Y-73123571D01* 364 | X74003571Y-73409285D02* 365 | X73932142Y-73266428D01* 366 | X73860714Y-73195000D01* 367 | X73717857Y-73123571D01* 368 | X73575000Y-73123571D01* 369 | X72432142Y-74123571D02* 370 | X72432142Y-73337857D01* 371 | X72503571Y-73195000D01* 372 | X72646428Y-73123571D01* 373 | X72932142Y-73123571D01* 374 | X73075000Y-73195000D01* 375 | X72432142Y-74052142D02* 376 | X72575000Y-74123571D01* 377 | X72932142Y-74123571D01* 378 | X73075000Y-74052142D01* 379 | X73146428Y-73909285D01* 380 | X73146428Y-73766428D01* 381 | X73075000Y-73623571D01* 382 | X72932142Y-73552142D01* 383 | X72575000Y-73552142D01* 384 | X72432142Y-73480714D01* 385 | X71717857Y-74123571D02* 386 | X71717857Y-73123571D01* 387 | X71717857Y-73266428D02* 388 | X71646428Y-73195000D01* 389 | X71503571Y-73123571D01* 390 | X71289285Y-73123571D01* 391 | X71146428Y-73195000D01* 392 | X71075000Y-73337857D01* 393 | X71075000Y-74123571D01* 394 | X71075000Y-73337857D02* 395 | X71003571Y-73195000D01* 396 | X70860714Y-73123571D01* 397 | X70646428Y-73123571D01* 398 | X70503571Y-73195000D01* 399 | X70432142Y-73337857D01* 400 | X70432142Y-74123571D01* 401 | X69717857Y-74123571D02* 402 | X69717857Y-73123571D01* 403 | X69717857Y-73266428D02* 404 | X69646428Y-73195000D01* 405 | X69503571Y-73123571D01* 406 | X69289285Y-73123571D01* 407 | X69146428Y-73195000D01* 408 | X69075000Y-73337857D01* 409 | X69075000Y-74123571D01* 410 | X69075000Y-73337857D02* 411 | X69003571Y-73195000D01* 412 | X68860714Y-73123571D01* 413 | X68646428Y-73123571D01* 414 | X68503571Y-73195000D01* 415 | X68432142Y-73337857D01* 416 | X68432142Y-74123571D01* 417 | D12* 418 | X63487936Y-71900000D02* 419 | X64692064Y-71900000D01* 420 | X63487936Y-74620000D02* 421 | X64692064Y-74620000D01* 422 | X71680000Y-61438748D02* 423 | X71680000Y-61961252D01* 424 | X70260000Y-61438748D02* 425 | X70260000Y-61961252D01* 426 | X105871252Y-71080000D02* 427 | X105348748Y-71080000D01* 428 | X105871252Y-69660000D02* 429 | X105348748Y-69660000D01* 430 | X61270000Y-64067936D02* 431 | X61270000Y-65272064D01* 432 | X58550000Y-64067936D02* 433 | X58550000Y-65272064D01* 434 | X103010000Y-73340000D02* 435 | X103010000Y-74800000D01* 436 | X106170000Y-73340000D02* 437 | X106170000Y-75500000D01* 438 | X106170000Y-73340000D02* 439 | X105240000Y-73340000D01* 440 | X103010000Y-73340000D02* 441 | X103940000Y-73340000D01* 442 | X61280000Y-58907936D02* 443 | X61280000Y-60112064D01* 444 | X58560000Y-58907936D02* 445 | X58560000Y-60112064D01* 446 | X85590000Y-65300000D02* 447 | X85590000Y-63900000D01* 448 | X87910000Y-63900000D02* 449 | X87910000Y-65800000D01* 450 | X72907252Y-67869000D02* 451 | X72384748Y-67869000D01* 452 | X72907252Y-66449000D02* 453 | X72384748Y-66449000D01* 454 | X104861252Y-77910000D02* 455 | X104338748Y-77910000D01* 456 | X104861252Y-76490000D02* 457 | X104338748Y-76490000D01* 458 | X79638748Y-66190000D02* 459 | X80161252Y-66190000D01* 460 | X79638748Y-67610000D02* 461 | X80161252Y-67610000D01* 462 | X84910000Y-64038748D02* 463 | X84910000Y-64561252D01* 464 | X83490000Y-64038748D02* 465 | X83490000Y-64561252D01* 466 | X90010000Y-64038748D02* 467 | X90010000Y-64561252D01* 468 | X88590000Y-64038748D02* 469 | X88590000Y-64561252D01* 470 | D10* 471 | X99637000Y-59592000D02* 472 | X101062000Y-59592000D01* 473 | X92387000Y-59367000D02* 474 | X92712000Y-59367000D01* 475 | X92387000Y-66617000D02* 476 | X92712000Y-66617000D01* 477 | X99637000Y-66617000D02* 478 | X99312000Y-66617000D01* 479 | X99637000Y-59367000D02* 480 | X99312000Y-59367000D01* 481 | X99637000Y-66617000D02* 482 | X99637000Y-66292000D01* 483 | X92387000Y-66617000D02* 484 | X92387000Y-66292000D01* 485 | X92387000Y-59367000D02* 486 | X92387000Y-59692000D01* 487 | X99637000Y-59367000D02* 488 | X99637000Y-59592000D01* 489 | X80275000Y-60350000D02* 490 | X81500000Y-60350000D01* 491 | X80275000Y-63475000D02* 492 | X76925000Y-63475000D01* 493 | X80275000Y-60125000D02* 494 | X76925000Y-60125000D01* 495 | X80275000Y-63475000D02* 496 | X80275000Y-63175000D01* 497 | X76925000Y-63475000D02* 498 | X76925000Y-63175000D01* 499 | X76925000Y-60125000D02* 500 | X76925000Y-60425000D01* 501 | X80275000Y-60125000D02* 502 | X80275000Y-60350000D01* 503 | D12* 504 | X79638748Y-64090000D02* 505 | X80161252Y-64090000D01* 506 | X79638748Y-65510000D02* 507 | X80161252Y-65510000D01* 508 | X104954000Y-58681252D02* 509 | X104954000Y-58158748D01* 510 | X106374000Y-58681252D02* 511 | X106374000Y-58158748D01* 512 | X104088000Y-58167748D02* 513 | X104088000Y-58690252D01* 514 | X102668000Y-58167748D02* 515 | X102668000Y-58690252D01* 516 | X77110000Y-65538748D02* 517 | X77110000Y-66061252D01* 518 | X75690000Y-65538748D02* 519 | X75690000Y-66061252D01* 520 | X102668000Y-63253252D02* 521 | X102668000Y-62730748D01* 522 | X104088000Y-63253252D02* 523 | X104088000Y-62730748D01* 524 | X74860000Y-62588748D02* 525 | X74860000Y-63111252D01* 526 | X73440000Y-62588748D02* 527 | X73440000Y-63111252D01* 528 | D10* 529 | X63702857Y-71362380D02* 530 | X64036190Y-70886190D01* 531 | X64274285Y-71362380D02* 532 | X64274285Y-70362380D01* 533 | X63893333Y-70362380D01* 534 | X63798095Y-70410000D01* 535 | X63750476Y-70457619D01* 536 | X63702857Y-70552857D01* 537 | X63702857Y-70695714D01* 538 | X63750476Y-70790952D01* 539 | X63798095Y-70838571D01* 540 | X63893333Y-70886190D01* 541 | X64274285Y-70886190D01* 542 | X62750476Y-71362380D02* 543 | X63321904Y-71362380D01* 544 | X63036190Y-71362380D02* 545 | X63036190Y-70362380D01* 546 | X63131428Y-70505238D01* 547 | X63226666Y-70600476D01* 548 | X63321904Y-70648095D01* 549 | X61798095Y-71362380D02* 550 | X62369523Y-71362380D01* 551 | X62083809Y-71362380D02* 552 | X62083809Y-70362380D01* 553 | X62179047Y-70505238D01* 554 | X62274285Y-70600476D01* 555 | X62369523Y-70648095D01* 556 | X69187142Y-61047142D02* 557 | X69234761Y-60999523D01* 558 | X69282380Y-60856666D01* 559 | X69282380Y-60761428D01* 560 | X69234761Y-60618571D01* 561 | X69139523Y-60523333D01* 562 | X69044285Y-60475714D01* 563 | X68853809Y-60428095D01* 564 | X68710952Y-60428095D01* 565 | X68520476Y-60475714D01* 566 | X68425238Y-60523333D01* 567 | X68330000Y-60618571D01* 568 | X68282380Y-60761428D01* 569 | X68282380Y-60856666D01* 570 | X68330000Y-60999523D01* 571 | X68377619Y-61047142D01* 572 | X69282380Y-61999523D02* 573 | X69282380Y-61428095D01* 574 | X69282380Y-61713809D02* 575 | X68282380Y-61713809D01* 576 | X68425238Y-61618571D01* 577 | X68520476Y-61523333D01* 578 | X68568095Y-61428095D01* 579 | X68377619Y-62380476D02* 580 | X68330000Y-62428095D01* 581 | X68282380Y-62523333D01* 582 | X68282380Y-62761428D01* 583 | X68330000Y-62856666D01* 584 | X68377619Y-62904285D01* 585 | X68472857Y-62951904D01* 586 | X68568095Y-62951904D01* 587 | X68710952Y-62904285D01* 588 | X69282380Y-62332857D01* 589 | X69282380Y-62951904D01* 590 | X106252857Y-69077142D02* 591 | X106300476Y-69124761D01* 592 | X106443333Y-69172380D01* 593 | X106538571Y-69172380D01* 594 | X106681428Y-69124761D01* 595 | X106776666Y-69029523D01* 596 | X106824285Y-68934285D01* 597 | X106871904Y-68743809D01* 598 | X106871904Y-68600952D01* 599 | X106824285Y-68410476D01* 600 | X106776666Y-68315238D01* 601 | X106681428Y-68220000D01* 602 | X106538571Y-68172380D01* 603 | X106443333Y-68172380D01* 604 | X106300476Y-68220000D01* 605 | X106252857Y-68267619D01* 606 | X105300476Y-69172380D02* 607 | X105871904Y-69172380D01* 608 | X105586190Y-69172380D02* 609 | X105586190Y-68172380D01* 610 | X105681428Y-68315238D01* 611 | X105776666Y-68410476D01* 612 | X105871904Y-68458095D01* 613 | X104348095Y-69172380D02* 614 | X104919523Y-69172380D01* 615 | X104633809Y-69172380D02* 616 | X104633809Y-68172380D01* 617 | X104729047Y-68315238D01* 618 | X104824285Y-68410476D01* 619 | X104919523Y-68458095D01* 620 | X58082380Y-64503333D02* 621 | X57606190Y-64170000D01* 622 | X58082380Y-63931904D02* 623 | X57082380Y-63931904D01* 624 | X57082380Y-64312857D01* 625 | X57130000Y-64408095D01* 626 | X57177619Y-64455714D01* 627 | X57272857Y-64503333D01* 628 | X57415714Y-64503333D01* 629 | X57510952Y-64455714D01* 630 | X57558571Y-64408095D01* 631 | X57606190Y-64312857D01* 632 | X57606190Y-63931904D01* 633 | X58082380Y-64979523D02* 634 | X58082380Y-65170000D01* 635 | X58034761Y-65265238D01* 636 | X57987142Y-65312857D01* 637 | X57844285Y-65408095D01* 638 | X57653809Y-65455714D01* 639 | X57272857Y-65455714D01* 640 | X57177619Y-65408095D01* 641 | X57130000Y-65360476D01* 642 | X57082380Y-65265238D01* 643 | X57082380Y-65074761D01* 644 | X57130000Y-64979523D01* 645 | X57177619Y-64931904D01* 646 | X57272857Y-64884285D01* 647 | X57510952Y-64884285D01* 648 | X57606190Y-64931904D01* 649 | X57653809Y-64979523D01* 650 | X57701428Y-65074761D01* 651 | X57701428Y-65265238D01* 652 | X57653809Y-65360476D01* 653 | X57606190Y-65408095D01* 654 | X57510952Y-65455714D01* 655 | X107637619Y-74004761D02* 656 | X107590000Y-73909523D01* 657 | X107494761Y-73814285D01* 658 | X107351904Y-73671428D01* 659 | X107304285Y-73576190D01* 660 | X107304285Y-73480952D01* 661 | X107542380Y-73528571D02* 662 | X107494761Y-73433333D01* 663 | X107399523Y-73338095D01* 664 | X107209047Y-73290476D01* 665 | X106875714Y-73290476D01* 666 | X106685238Y-73338095D01* 667 | X106590000Y-73433333D01* 668 | X106542380Y-73528571D01* 669 | X106542380Y-73719047D01* 670 | X106590000Y-73814285D01* 671 | X106685238Y-73909523D01* 672 | X106875714Y-73957142D01* 673 | X107209047Y-73957142D01* 674 | X107399523Y-73909523D01* 675 | X107494761Y-73814285D01* 676 | X107542380Y-73719047D01* 677 | X107542380Y-73528571D01* 678 | X106875714Y-74814285D02* 679 | X107542380Y-74814285D01* 680 | X106494761Y-74576190D02* 681 | X107209047Y-74338095D01* 682 | X107209047Y-74957142D01* 683 | X57997142Y-58867142D02* 684 | X58044761Y-58819523D01* 685 | X58092380Y-58676666D01* 686 | X58092380Y-58581428D01* 687 | X58044761Y-58438571D01* 688 | X57949523Y-58343333D01* 689 | X57854285Y-58295714D01* 690 | X57663809Y-58248095D01* 691 | X57520952Y-58248095D01* 692 | X57330476Y-58295714D01* 693 | X57235238Y-58343333D01* 694 | X57140000Y-58438571D01* 695 | X57092380Y-58581428D01* 696 | X57092380Y-58676666D01* 697 | X57140000Y-58819523D01* 698 | X57187619Y-58867142D01* 699 | X58092380Y-59819523D02* 700 | X58092380Y-59248095D01* 701 | X58092380Y-59533809D02* 702 | X57092380Y-59533809D01* 703 | X57235238Y-59438571D01* 704 | X57330476Y-59343333D01* 705 | X57378095Y-59248095D01* 706 | X57092380Y-60438571D02* 707 | X57092380Y-60533809D01* 708 | X57140000Y-60629047D01* 709 | X57187619Y-60676666D01* 710 | X57282857Y-60724285D01* 711 | X57473333Y-60771904D01* 712 | X57711428Y-60771904D01* 713 | X57901904Y-60724285D01* 714 | X57997142Y-60676666D01* 715 | X58044761Y-60629047D01* 716 | X58092380Y-60533809D01* 717 | X58092380Y-60438571D01* 718 | X58044761Y-60343333D01* 719 | X57997142Y-60295714D01* 720 | X57901904Y-60248095D01* 721 | X57711428Y-60200476D01* 722 | X57473333Y-60200476D01* 723 | X57282857Y-60248095D01* 724 | X57187619Y-60295714D01* 725 | X57140000Y-60343333D01* 726 | X57092380Y-60438571D01* 727 | X87461904Y-61052380D02* 728 | X87461904Y-61861904D01* 729 | X87414285Y-61957142D01* 730 | X87366666Y-62004761D01* 731 | X87271428Y-62052380D01* 732 | X87080952Y-62052380D01* 733 | X86985714Y-62004761D01* 734 | X86938095Y-61957142D01* 735 | X86890476Y-61861904D01* 736 | X86890476Y-61052380D01* 737 | X86461904Y-61147619D02* 738 | X86414285Y-61100000D01* 739 | X86319047Y-61052380D01* 740 | X86080952Y-61052380D01* 741 | X85985714Y-61100000D01* 742 | X85938095Y-61147619D01* 743 | X85890476Y-61242857D01* 744 | X85890476Y-61338095D01* 745 | X85938095Y-61480952D01* 746 | X86509523Y-62052380D01* 747 | X85890476Y-62052380D01* 748 | X72816666Y-69462380D02* 749 | X73150000Y-68986190D01* 750 | X73388095Y-69462380D02* 751 | X73388095Y-68462380D01* 752 | X73007142Y-68462380D01* 753 | X72911904Y-68510000D01* 754 | X72864285Y-68557619D01* 755 | X72816666Y-68652857D01* 756 | X72816666Y-68795714D01* 757 | X72864285Y-68890952D01* 758 | X72911904Y-68938571D01* 759 | X73007142Y-68986190D01* 760 | X73388095Y-68986190D01* 761 | X72483333Y-68462380D02* 762 | X71816666Y-68462380D01* 763 | X72245238Y-69462380D01* 764 | X107566666Y-77752380D02* 765 | X107900000Y-77276190D01* 766 | X108138095Y-77752380D02* 767 | X108138095Y-76752380D01* 768 | X107757142Y-76752380D01* 769 | X107661904Y-76800000D01* 770 | X107614285Y-76847619D01* 771 | X107566666Y-76942857D01* 772 | X107566666Y-77085714D01* 773 | X107614285Y-77180952D01* 774 | X107661904Y-77228571D01* 775 | X107757142Y-77276190D01* 776 | X108138095Y-77276190D01* 777 | X106995238Y-77180952D02* 778 | X107090476Y-77133333D01* 779 | X107138095Y-77085714D01* 780 | X107185714Y-76990476D01* 781 | X107185714Y-76942857D01* 782 | X107138095Y-76847619D01* 783 | X107090476Y-76800000D01* 784 | X106995238Y-76752380D01* 785 | X106804761Y-76752380D01* 786 | X106709523Y-76800000D01* 787 | X106661904Y-76847619D01* 788 | X106614285Y-76942857D01* 789 | X106614285Y-76990476D01* 790 | X106661904Y-77085714D01* 791 | X106709523Y-77133333D01* 792 | X106804761Y-77180952D01* 793 | X106995238Y-77180952D01* 794 | X107090476Y-77228571D01* 795 | X107138095Y-77276190D01* 796 | X107185714Y-77371428D01* 797 | X107185714Y-77561904D01* 798 | X107138095Y-77657142D01* 799 | X107090476Y-77704761D01* 800 | X106995238Y-77752380D01* 801 | X106804761Y-77752380D01* 802 | X106709523Y-77704761D01* 803 | X106661904Y-77657142D01* 804 | X106614285Y-77561904D01* 805 | X106614285Y-77371428D01* 806 | X106661904Y-77276190D01* 807 | X106709523Y-77228571D01* 808 | X106804761Y-77180952D01* 809 | X80066666Y-69002380D02* 810 | X80400000Y-68526190D01* 811 | X80638095Y-69002380D02* 812 | X80638095Y-68002380D01* 813 | X80257142Y-68002380D01* 814 | X80161904Y-68050000D01* 815 | X80114285Y-68097619D01* 816 | X80066666Y-68192857D01* 817 | X80066666Y-68335714D01* 818 | X80114285Y-68430952D01* 819 | X80161904Y-68478571D01* 820 | X80257142Y-68526190D01* 821 | X80638095Y-68526190D01* 822 | X79209523Y-68335714D02* 823 | X79209523Y-69002380D01* 824 | X79447619Y-67954761D02* 825 | X79685714Y-68669047D01* 826 | X79066666Y-68669047D01* 827 | X83666666Y-62257142D02* 828 | X83714285Y-62304761D01* 829 | X83857142Y-62352380D01* 830 | X83952380Y-62352380D01* 831 | X84095238Y-62304761D01* 832 | X84190476Y-62209523D01* 833 | X84238095Y-62114285D01* 834 | X84285714Y-61923809D01* 835 | X84285714Y-61780952D01* 836 | X84238095Y-61590476D01* 837 | X84190476Y-61495238D01* 838 | X84095238Y-61400000D01* 839 | X83952380Y-61352380D01* 840 | X83857142Y-61352380D01* 841 | X83714285Y-61400000D01* 842 | X83666666Y-61447619D01* 843 | X83285714Y-61447619D02* 844 | X83238095Y-61400000D01* 845 | X83142857Y-61352380D01* 846 | X82904761Y-61352380D01* 847 | X82809523Y-61400000D01* 848 | X82761904Y-61447619D01* 849 | X82714285Y-61542857D01* 850 | X82714285Y-61638095D01* 851 | X82761904Y-61780952D01* 852 | X83333333Y-62352380D01* 853 | X82714285Y-62352380D01* 854 | X89066666Y-62257142D02* 855 | X89114285Y-62304761D01* 856 | X89257142Y-62352380D01* 857 | X89352380Y-62352380D01* 858 | X89495238Y-62304761D01* 859 | X89590476Y-62209523D01* 860 | X89638095Y-62114285D01* 861 | X89685714Y-61923809D01* 862 | X89685714Y-61780952D01* 863 | X89638095Y-61590476D01* 864 | X89590476Y-61495238D01* 865 | X89495238Y-61400000D01* 866 | X89352380Y-61352380D01* 867 | X89257142Y-61352380D01* 868 | X89114285Y-61400000D01* 869 | X89066666Y-61447619D01* 870 | X88209523Y-61685714D02* 871 | X88209523Y-62352380D01* 872 | X88447619Y-61304761D02* 873 | X88685714Y-62019047D01* 874 | X88066666Y-62019047D01* 875 | X96773904Y-56394380D02* 876 | X96773904Y-57203904D01* 877 | X96726285Y-57299142D01* 878 | X96678666Y-57346761D01* 879 | X96583428Y-57394380D01* 880 | X96392952Y-57394380D01* 881 | X96297714Y-57346761D01* 882 | X96250095Y-57299142D01* 883 | X96202476Y-57203904D01* 884 | X96202476Y-56394380D01* 885 | X95821523Y-56394380D02* 886 | X95202476Y-56394380D01* 887 | X95535809Y-56775333D01* 888 | X95392952Y-56775333D01* 889 | X95297714Y-56822952D01* 890 | X95250095Y-56870571D01* 891 | X95202476Y-56965809D01* 892 | X95202476Y-57203904D01* 893 | X95250095Y-57299142D01* 894 | X95297714Y-57346761D01* 895 | X95392952Y-57394380D01* 896 | X95678666Y-57394380D01* 897 | X95773904Y-57346761D01* 898 | X95821523Y-57299142D01* 899 | X79361904Y-58652380D02* 900 | X79361904Y-59461904D01* 901 | X79314285Y-59557142D01* 902 | X79266666Y-59604761D01* 903 | X79171428Y-59652380D01* 904 | X78980952Y-59652380D01* 905 | X78885714Y-59604761D01* 906 | X78838095Y-59557142D01* 907 | X78790476Y-59461904D01* 908 | X78790476Y-58652380D01* 909 | X77790476Y-59652380D02* 910 | X78361904Y-59652380D01* 911 | X78076190Y-59652380D02* 912 | X78076190Y-58652380D01* 913 | X78171428Y-58795238D01* 914 | X78266666Y-58890476D01* 915 | X78361904Y-58938095D01* 916 | X82952380Y-65333333D02* 917 | X82476190Y-65000000D01* 918 | X82952380Y-64761904D02* 919 | X81952380Y-64761904D01* 920 | X81952380Y-65142857D01* 921 | X82000000Y-65238095D01* 922 | X82047619Y-65285714D01* 923 | X82142857Y-65333333D01* 924 | X82285714Y-65333333D01* 925 | X82380952Y-65285714D01* 926 | X82428571Y-65238095D01* 927 | X82476190Y-65142857D01* 928 | X82476190Y-64761904D01* 929 | X81952380Y-65666666D02* 930 | X81952380Y-66285714D01* 931 | X82333333Y-65952380D01* 932 | X82333333Y-66095238D01* 933 | X82380952Y-66190476D01* 934 | X82428571Y-66238095D01* 935 | X82523809Y-66285714D01* 936 | X82761904Y-66285714D01* 937 | X82857142Y-66238095D01* 938 | X82904761Y-66190476D01* 939 | X82952380Y-66095238D01* 940 | X82952380Y-65809523D01* 941 | X82904761Y-65714285D01* 942 | X82857142Y-65666666D01* 943 | X107766380Y-58253333D02* 944 | X107290190Y-57920000D01* 945 | X107766380Y-57681904D02* 946 | X106766380Y-57681904D01* 947 | X106766380Y-58062857D01* 948 | X106814000Y-58158095D01* 949 | X106861619Y-58205714D01* 950 | X106956857Y-58253333D01* 951 | X107099714Y-58253333D01* 952 | X107194952Y-58205714D01* 953 | X107242571Y-58158095D01* 954 | X107290190Y-58062857D01* 955 | X107290190Y-57681904D01* 956 | X107766380Y-59205714D02* 957 | X107766380Y-58634285D01* 958 | X107766380Y-58920000D02* 959 | X106766380Y-58920000D01* 960 | X106909238Y-58824761D01* 961 | X107004476Y-58729523D01* 962 | X107052095Y-58634285D01* 963 | X102085142Y-58262333D02* 964 | X102132761Y-58214714D01* 965 | X102180380Y-58071857D01* 966 | X102180380Y-57976619D01* 967 | X102132761Y-57833761D01* 968 | X102037523Y-57738523D01* 969 | X101942285Y-57690904D01* 970 | X101751809Y-57643285D01* 971 | X101608952Y-57643285D01* 972 | X101418476Y-57690904D01* 973 | X101323238Y-57738523D01* 974 | X101228000Y-57833761D01* 975 | X101180380Y-57976619D01* 976 | X101180380Y-58071857D01* 977 | X101228000Y-58214714D01* 978 | X101275619Y-58262333D01* 979 | X101608952Y-58833761D02* 980 | X101561333Y-58738523D01* 981 | X101513714Y-58690904D01* 982 | X101418476Y-58643285D01* 983 | X101370857Y-58643285D01* 984 | X101275619Y-58690904D01* 985 | X101228000Y-58738523D01* 986 | X101180380Y-58833761D01* 987 | X101180380Y-59024238D01* 988 | X101228000Y-59119476D01* 989 | X101275619Y-59167095D01* 990 | X101370857Y-59214714D01* 991 | X101418476Y-59214714D01* 992 | X101513714Y-59167095D01* 993 | X101561333Y-59119476D01* 994 | X101608952Y-59024238D01* 995 | X101608952Y-58833761D01* 996 | X101656571Y-58738523D01* 997 | X101704190Y-58690904D01* 998 | X101799428Y-58643285D01* 999 | X101989904Y-58643285D01* 1000 | X102085142Y-58690904D01* 1001 | X102132761Y-58738523D01* 1002 | X102180380Y-58833761D01* 1003 | X102180380Y-59024238D01* 1004 | X102132761Y-59119476D01* 1005 | X102085142Y-59167095D01* 1006 | X101989904Y-59214714D01* 1007 | X101799428Y-59214714D01* 1008 | X101704190Y-59167095D01* 1009 | X101656571Y-59119476D01* 1010 | X101608952Y-59024238D01* 1011 | X76566666Y-68857142D02* 1012 | X76614285Y-68904761D01* 1013 | X76757142Y-68952380D01* 1014 | X76852380Y-68952380D01* 1015 | X76995238Y-68904761D01* 1016 | X77090476Y-68809523D01* 1017 | X77138095Y-68714285D01* 1018 | X77185714Y-68523809D01* 1019 | X77185714Y-68380952D01* 1020 | X77138095Y-68190476D01* 1021 | X77090476Y-68095238D01* 1022 | X76995238Y-68000000D01* 1023 | X76852380Y-67952380D01* 1024 | X76757142Y-67952380D01* 1025 | X76614285Y-68000000D01* 1026 | X76566666Y-68047619D01* 1027 | X75614285Y-68952380D02* 1028 | X76185714Y-68952380D01* 1029 | X75900000Y-68952380D02* 1030 | X75900000Y-67952380D01* 1031 | X75995238Y-68095238D01* 1032 | X76090476Y-68190476D01* 1033 | X76185714Y-68238095D01* 1034 | X104670857Y-63158666D02* 1035 | X104623238Y-63206285D01* 1036 | X104575619Y-63349142D01* 1037 | X104575619Y-63444380D01* 1038 | X104623238Y-63587238D01* 1039 | X104718476Y-63682476D01* 1040 | X104813714Y-63730095D01* 1041 | X105004190Y-63777714D01* 1042 | X105147047Y-63777714D01* 1043 | X105337523Y-63730095D01* 1044 | X105432761Y-63682476D01* 1045 | X105528000Y-63587238D01* 1046 | X105575619Y-63444380D01* 1047 | X105575619Y-63349142D01* 1048 | X105528000Y-63206285D01* 1049 | X105480380Y-63158666D01* 1050 | X105575619Y-62825333D02* 1051 | X105575619Y-62158666D01* 1052 | X104575619Y-62587238D01* 1053 | X74527142Y-59953333D02* 1054 | X74574761Y-59905714D01* 1055 | X74622380Y-59762857D01* 1056 | X74622380Y-59667619D01* 1057 | X74574761Y-59524761D01* 1058 | X74479523Y-59429523D01* 1059 | X74384285Y-59381904D01* 1060 | X74193809Y-59334285D01* 1061 | X74050952Y-59334285D01* 1062 | X73860476Y-59381904D01* 1063 | X73765238Y-59429523D01* 1064 | X73670000Y-59524761D01* 1065 | X73622380Y-59667619D01* 1066 | X73622380Y-59762857D01* 1067 | X73670000Y-59905714D01* 1068 | X73717619Y-59953333D01* 1069 | X73622380Y-60286666D02* 1070 | X73622380Y-60905714D01* 1071 | X74003333Y-60572380D01* 1072 | X74003333Y-60715238D01* 1073 | X74050952Y-60810476D01* 1074 | X74098571Y-60858095D01* 1075 | X74193809Y-60905714D01* 1076 | X74431904Y-60905714D01* 1077 | X74527142Y-60858095D01* 1078 | X74574761Y-60810476D01* 1079 | X74622380Y-60715238D01* 1080 | X74622380Y-60429523D01* 1081 | X74574761Y-60334285D01* 1082 | X74527142Y-60286666D01* 1083 | M02* 1084 | --------------------------------------------------------------------------------