├── .gitignore ├── src ├── .gitignore ├── bullets.json ├── nodejs ├── package.json ├── pimometer.js ├── LICENSE ├── tempstate.js ├── index.html ├── ThermocoupleRead.py └── bullet.js ├── LICENSE ├── README.md ├── LaenPCBOrder.dru ├── PiMometerBOM.txt ├── eagle.epf └── PiMometer.brd /.gitignore: -------------------------------------------------------------------------------- 1 | lib-cov 2 | *.seed 3 | *.log 4 | *.csv 5 | *.dat 6 | *.out 7 | *.pid 8 | *.gz 9 | 10 | pids 11 | logs 12 | results 13 | 14 | npm-debug.log 15 | node_modules 16 | -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | lib-cov 2 | lcov.info 3 | *.seed 4 | *.log 5 | *.csv 6 | *.dat 7 | *.out 8 | *.pid 9 | *.gz 10 | 11 | pids 12 | logs 13 | results 14 | build 15 | .grunt 16 | 17 | node_modules 18 | -------------------------------------------------------------------------------- /src/bullets.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"title":"Channel 1","subtitle":"Oven 1, Rear","ranges":[900],"measures":[0,0],"markers":[375]}, 3 | {"title":"Channel 2","subtitle":"Oven 1, Front","ranges":[900],"measures":[0,0],"markers":[0]}, 4 | {"title":"Channel 3","subtitle":"Oven 1, Mid","ranges":[900],"measures":[0,0],"markers":[0]}, 5 | {"title":"Channel 4","subtitle":"Oven 2, Top","ranges":[900],"measures":[0,0],"markers":[0]} 6 | ] 7 | 8 | -------------------------------------------------------------------------------- /src/nodejs: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | NODE=/usr/bin/node 4 | SERVER_JS_FILE=/home/pi/pimometer/src/pimometer.js 5 | USER=root 6 | OUT=/home/pi/nodejs.log 7 | 8 | case "$1" in 9 | 10 | start) 11 | echo "starting node: $NODE $SERVER_JS_FILE" 12 | sudo -u $USER $NODE $SERVER_JS_FILE > $OUT 2>$OUT & 13 | ;; 14 | 15 | stop) 16 | killall $NODE 17 | ;; 18 | 19 | *) 20 | echo "usage: $0 (start|stop)" 21 | esac 22 | 23 | exit 0 24 | -------------------------------------------------------------------------------- /src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PiMometer", 3 | "version": "0.0.1", 4 | "description": "Remote Thermocouple Monitor for Raspberry Pi with PiMometer hardware", 5 | "main": "pimometer.js", 6 | "dependencies": { 7 | "socket.io": "~0.9.16", 8 | "async": "~0.2.9", 9 | "websocket": "~1.0.8" 10 | }, 11 | "devDependencies": {}, 12 | "scripts": { 13 | "test": "echo \"Error: no test specified\" && exit 1" 14 | }, 15 | "author": "Eric Friedrich", 16 | "license": "BSD-2-Clause" 17 | } 18 | -------------------------------------------------------------------------------- /src/pimometer.js: -------------------------------------------------------------------------------- 1 | var app = require('http').createServer(handler), 2 | io = require('socket.io').listen(app), 3 | fs = require('fs'), 4 | url = require('url'), 5 | ts = require('./tempstate'); 6 | 7 | updatePeriod = 1000; 8 | port = 80; 9 | app.listen(port); 10 | 11 | function handler(req, rsp) { 12 | path = url.parse(req.url).pathname; 13 | if (path == '/') { 14 | path = '/index.html'; 15 | } 16 | fs.readFile(__dirname + path, 17 | function(err, data) { 18 | if (err) { 19 | console.log(err); 20 | rsp.writeHead(500); 21 | return rsp.end('Error loading '+path); 22 | } 23 | 24 | rsp.writeHead(200); 25 | rsp.end(data) 26 | }); 27 | } 28 | 29 | io.sockets.on('connection', function(sock) { 30 | console.log('new connection'); 31 | 32 | var updateTimer = setInterval(function() { 33 | sock.emit('update', {state: ts.getTempState()}); 34 | }, updatePeriod); 35 | 36 | sock.on('disconnect', function() { 37 | clearInterval(updateTimer); 38 | }); 39 | }); 40 | 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Eric Friedrich 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, 5 | are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, this 11 | list of conditions and the following disclaimer in the documentation and/or 12 | other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 15 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 18 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 21 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /src/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013, Michael Bostock 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * The name Michael Bostock may not be used to endorse or promote products 15 | derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 | DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, 21 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 24 | OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | -------------------------------------------------------------------------------- /src/tempstate.js: -------------------------------------------------------------------------------- 1 | var config = {numChannels: 4, 2 | historySize: 30, 3 | avgSize: 10, 4 | updatePeriod: 1000}; 5 | 6 | var title = ["Channel 1", "Channel 2", "Channel 3", "Channel 4"]; 7 | 8 | function buildState() { 9 | var state = {}; 10 | state.channels = []; 11 | for (i = 0; i < config.numChannels; i++) { 12 | state.channels.push({title: title[i], 13 | current: 0.0, 14 | min: 1000000, 15 | max: 0, 16 | movingAvg: 0, 17 | range: [], 18 | error: ""}); 19 | } 20 | return state; 21 | } 22 | var tempState = buildState(); 23 | 24 | function updateStats(channel, current) { 25 | channel.current = current; 26 | channel.range.push(channel.current); 27 | 28 | if (current < channel.min) { 29 | channel.min = current; 30 | } 31 | 32 | if (current > channel.max) { 33 | channel.max = current 34 | } 35 | 36 | if (channel.range.length >= config.historySize) { 37 | channel.range.shift() 38 | } 39 | 40 | // compute moving avg over last few 41 | var avgWindow = channel.range.slice(-1 * config.avgSize); 42 | channel.movingAvg = avgWindow.reduce(function(a, b) { 43 | return a + b; }, 0) / avgWindow.length; 44 | //console.log(channel); 45 | } 46 | 47 | setInterval(function() { 48 | var spawn = require('child_process').spawn, 49 | tcRead = spawn("sudo", ["./ThermocoupleRead.py"]); 50 | tcRead.stdout.on('data', function(data) { 51 | var dataArray = data.toString().split("\n"); 52 | dataArray.slice(0,4).map(function(currentValue, index) { 53 | var temp = parseFloat(currentValue); 54 | updateStats(tempState.channels[index], temp); 55 | }); 56 | }); 57 | }, config.updatePeriod); 58 | 59 | 60 | function getTempState() { 61 | return tempState; 62 | } 63 | 64 | module.exports.getTempState = getTempState; 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | pimometer 2 | ========= 3 | ======= 4 | ## Remote Thermocouple Monitor 5 | 6 | 7 | ### Goal 8 | PCB to report temperature from 4 k-type thermocouples over wireless, for viewing on a smartphone. 9 | * _Form Factor_: Raspberry Pi Shield 10 | * _Power Source_: Initially battery powered with on/off switch. 11 | ** Future: solar or thermoelectric generator(TEG) using heat from oven. 12 | * _Thermocouple Measurement_: MAX31855 [Datasheet](http://datasheets.maximintegrated.com/en/ds/MAX31855.pdf) via SPI in an SO-8 package 13 | * _Wireless Connection_: WiFi Dongle 14 | * _Configuration/Display_: via SD Card 15 | ** LEDs for display- 1 LED for wireless connection 16 | * Smartphone Display: Ideally would be accessible across multiple smartphone platforms, so no native app. 17 | ** Better to have a webserver run on the device itself, i.e. Flask 18 | 19 | ### Design 20 | #### Raspberry Pi pinout 21 | * Clock: 11 22 | * MISO: 9 23 | * CS1: 18 24 | * CS2: 23 25 | * CS3: 24 26 | * CS4: 25 27 | * Also need +3.3V and ground available to shield 28 | 29 | #### Software Design 30 | * When Flask receives request for current temperatures, 31 | o 32 | 33 | 34 | #### Service installation 35 | chmod 755 nodejs 36 | sudo cp nodejs /etc/init.d 37 | sudo update-rc.d nodejs defaults 38 | 39 | ### Avahi Installation 40 | sudo apt-get install avahi-daemon 41 | sudo insserv avahi-daemon 42 | 43 | 44 | 45 | #### Cost Comparison 46 | Component | Raspberry Pi | Arduino (TC shield + wifi breakout) 47 | -----------+----------------+------------------------------------- 48 | Controller | $35 | $7 49 | Crystal | | $1 50 | Regulator | | $2 51 | Wifi | $15 | $35 52 | SD card | $8 | 53 | ------------------------------------------------------------------ 54 | Subtotal | $58 | $45 55 | 56 | TC shield 57 | ------------ 58 | 4xTC | $32 59 | Custom PCB | $15? 60 | 61 | 62 | Enclosure | 63 | LiPo Battery | 64 | LiPo Charger | 65 | -------------------------------------------------------------------------------- /LaenPCBOrder.dru: -------------------------------------------------------------------------------- 1 | description[de] = EAGLE Design Rules\n

\nDie Standard-Design-Rules sind so gewählt, dass sie für \ndie meisten Anwendungen passen. Sollte ihre Platine \nbesondere Anforderungen haben, treffen Sie die erforderlichen\nEinstellungen hier und speichern die Design Rules unter \neinem neuen Namen ab. 2 | description[en] = Laen's PCB Order Design Rules\n

\nPlease make sure your boards conform to these design rules. 3 | layerSetup = (1*16) 4 | mtCopper = 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 5 | mtIsolate = 1.5011mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 6 | mdWireWire = 6mil 7 | mdWirePad = 6mil 8 | mdWireVia = 6mil 9 | mdPadPad = 6mil 10 | mdPadVia = 6mil 11 | mdViaVia = 6mil 12 | mdSmdPad = 6mil 13 | mdSmdVia = 6mil 14 | mdSmdSmd = 6mil 15 | mdViaViaSameLayer = 8mil 16 | mnLayersViaInSmd = 2 17 | mdCopperDimension = 15mil 18 | mdDrill = 6mil 19 | mdSmdStop = 0mil 20 | msWidth = 6mil 21 | msDrill = 13mil 22 | msMicroVia = 13mil 23 | msBlindViaRatio = 0.500000 24 | rvPadTop = 0.250000 25 | rvPadInner = 0.250000 26 | rvPadBottom = 0.250000 27 | rvViaOuter = 0.250000 28 | rvViaInner = 0.250000 29 | rvMicroViaOuter = 0.250000 30 | rvMicroViaInner = 0.250000 31 | rlMinPadTop = 7mil 32 | rlMaxPadTop = 20mil 33 | rlMinPadInner = 7mil 34 | rlMaxPadInner = 20mil 35 | rlMinPadBottom = 7mil 36 | rlMaxPadBottom = 20mil 37 | rlMinViaOuter = 7mil 38 | rlMaxViaOuter = 20mil 39 | rlMinViaInner = 7mil 40 | rlMaxViaInner = 20mil 41 | rlMinMicroViaOuter = 4mil 42 | rlMaxMicroViaOuter = 20mil 43 | rlMinMicroViaInner = 4mil 44 | rlMaxMicroViaInner = 20mil 45 | psTop = -1 46 | psBottom = -1 47 | psFirst = -1 48 | psElongationLong = 100 49 | psElongationOffset = 100 50 | mvStopFrame = 1.000000 51 | mvCreamFrame = 0.000000 52 | mlMinStopFrame = 3mil 53 | mlMaxStopFrame = 3mil 54 | mlMinCreamFrame = 0mil 55 | mlMaxCreamFrame = 0mil 56 | mlViaStopLimit = 0mil 57 | srRoundness = 0.000000 58 | srMinRoundness = 0mil 59 | srMaxRoundness = 0mil 60 | slThermalGap = 0.500000 61 | slMinThermalGap = 20mil 62 | slMaxThermalGap = 100mil 63 | slAnnulusIsolate = 20mil 64 | slThermalIsolate = 10mil 65 | slAnnulusRestring = 0 66 | slThermalRestring = 1 67 | slThermalsForVias = 0 68 | checkGrid = 0 69 | checkAngle = 0 70 | checkFont = 1 71 | checkRestrict = 1 72 | useDiameter = 13 73 | maxErrors = 50 74 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 31 | 32 | 33 | 34 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /PiMometerBOM.txt: -------------------------------------------------------------------------------- 1 | Partlist exported from /Users/efriedri/Dropbox/eagle/PiMometer/PiMometer.sch at 11/29/13 10:36 PM 2 | 3 | (M) Mouser 4 | (SF) Sparkfun 5 | 6 | Supplier Part Value Device Package Description PROD_ID VALUE 7 | M C1 10uF 10UF50V20%(1210) 1210 16V 1210 10uF 10% MLCC 810-C3225X7R1C106K 10uF 8 | M C2 0.1uF 0.1UF-100V-10%(0603) 0603-CAP 16V 0603 .1uF 5% MLCC 77-VJ0603Y104JXJPBC 0.1uF 9 | M C3 0.1uF 0.1UF-100V-10%(0603) 0603-CAP 16V 0603 .1uF 5% MLCC 77-VJ0603Y104JXJPBC 0.1uFM 10 | M C4 0.1uF 0.1UF-100V-10%(0603) 0603-CAP 16V 0603 .1uF 5% MLCC 77-VJ0603Y104JXJPBC 0.1uF 11 | M C5 0.1uF 0.1UF-100V-10%(0603) 0603-CAP 16V 0603 .1uF 5% MLCC 77-VJ0603Y104JXJPBC 0.1uF 12 | M C6 10uF 10UF50V20%(1210) 1210 16V 1210 10uF 10% MLCC 810-C3225X7R1C106K 10uF 13 | SF GPIO1 2X132X13 2X132X13 2X13 PRT-11490 PRT-11490 14 | M IC1 MAX31855 MAX31855 SO08 MAX31855KASA+ 15 | M IC2 MAX31855 MAX31855 SO08 MAX31855KASA+ 16 | M IC3 MAX31855 MAX31855 SO08 MAX31855KASA+ 17 | M IC4 MAX31855 MAX31855 SO08 MAX31855KASA+ 18 | SF JP1 M022.54MM_SCREWTERM M022.54MM_SCREWTERM 1X02_2.54_SCREWTERM PRT-10571 PRT-10571 19 | SF JP2 M022.54MM_SCREWTERM M022.54MM_SCREWTERM 1X02_2.54_SCREWTERM PRT-10571 PRT-10571 20 | SF JP3 M022.54MM_SCREWTERM M022.54MM_SCREWTERM 1X02_2.54_SCREWTERM PRT-10571 PRT-10571 21 | SF JP4 M022.54MM_SCREWTERM M022.54MM_SCREWTERM 1X02_2.54_SCREWTERM PRT-10571 PRT-10571 22 | SF JP5 M022.54MM_SCREWTERM M022.54MM_SCREWTERM 1X02_2.54_SCREWTERM PRT-10571 PRT-10571 23 | SF R1 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 24 | SF R2 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 25 | SF R3 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 26 | SF R4 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 27 | SF R5 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 28 | SF R6 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 29 | SF R7 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 30 | SF R8 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 31 | SF R9 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 32 | SF R10 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 33 | SF R11 10K 10KOHM1/10W1%(0603)0603 0603-RES RES-00824 PRT-11246 10K 34 | N/A STANDOFF1 STAND-OFF STAND-OFF STAND-OFF #4 Stand Off 35 | N/A STANDOFF2 STAND-OFF STAND-OFF STAND-OFF #4 Stand Off 36 | N/A STANDOFF4 STAND-OFF STAND-OFF STAND-OFF #4 Stand Off 37 | -------------------------------------------------------------------------------- /src/ThermocoupleRead.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Bitbang'd SPI interface with a MAX31855 TC->SPI device 4 | # Connections are: 5 | # CLK => 18 6 | # DOUT => 23 (chip's data out, RPi's MISO) 7 | # CS => 24 8 | 9 | import RPi.GPIO as GPIO 10 | import math 11 | import time 12 | import sys 13 | 14 | MISO = 9 15 | CS_ARRAY = [18, 23, 24, 25] 16 | CLK = 11 17 | 18 | def setupSpiPins(): 19 | ''' Set pins as an output except MISO (Master Input, Slave Output)''' 20 | GPIO.setup(CLK, GPIO.OUT) 21 | GPIO.setup(MISO, GPIO.IN) 22 | for cs in CS_ARRAY: 23 | GPIO.setup(cs, GPIO.OUT) 24 | 25 | GPIO.output(CLK, GPIO.LOW) 26 | for cs in CS_ARRAY: 27 | GPIO.output(cs, GPIO.HIGH) 28 | 29 | 30 | def readTemp(miso): 31 | 32 | tcValue = recvBits(miso, 32) 33 | #print "TC value: %x" % (tcValue) 34 | 35 | if (tcValue & 0x8): 36 | return 0 #"ERROR: Reserved bit 3 is 1" 37 | 38 | if (tcValue & 0x20000): 39 | return 0 #"ERROR: Reserved bit 17 is 1" 40 | 41 | if (tcValue & 0x10000): 42 | if (tcValue & 0x1): 43 | return 0 #"ERROR: Open Circuit" 44 | if (tcValue & 0x2): 45 | return 0 #"ERROR: Short to GND" 46 | if (tcValue & 0x4): 47 | return 0 #"ERROR: Short to Vcc" 48 | 49 | internal = (tcValue >> 4) & 0xFFF 50 | #print "Internal: %fC" % (internal*.0625) 51 | #print "Internal: %fF" % (internal*.0625*9.0/5.0+32) 52 | 53 | 54 | tcValue = tcValue >> 18 55 | 56 | temp = tcValue & 0x3FFF 57 | if (tcValue & 0x2000): 58 | temp = temp | 0xC000 59 | 60 | temp = temp * 0.25 61 | return temp 62 | 63 | def recvBits(cs, numBits): 64 | '''Receives arbitrary number of bits''' 65 | retVal = 0 66 | 67 | # Start the read with chip select low 68 | GPIO.output(cs, GPIO.LOW) 69 | 70 | for bit in range(numBits): 71 | # Pulse clock pin 72 | GPIO.output(CLK, GPIO.HIGH) 73 | 74 | # Advance input to next bit 75 | retVal <<= 1 76 | 77 | # Read 1 data bit in 78 | if GPIO.input(MISO): 79 | #print 31-bit, "1" 80 | retVal |= 0x1 81 | #else: 82 | # print 31-bit, "0" 83 | 84 | GPIO.output(CLK, GPIO.LOW) 85 | time.sleep(.001) 86 | 87 | # Set chip select high to end the read 88 | GPIO.output(cs, GPIO.HIGH) 89 | 90 | return (retVal) 91 | 92 | def convertTypeJToTypeK(temp): 93 | ''' Output temperature based on a Type J Thermocouple. 94 | 95 | Theory: 96 | The output temperature for a thermocouple is based on a voltage 97 | difference across the device. To use a Type J Thermocouple with the 98 | MAX31855K measurement sensor, do the following: 99 | 1) Use the ITS-90 Type-K Direct Polynomial to find the 100 | thermoelectric voltage from the reported temperature 101 | 2) Use the ITS-90 Type-J Inverse Polynomial to find the 102 | temperature from the computed thermoelectric voltage 103 | NB: If polynomials are too hard to compute, use a lookup table 104 | instead. 105 | ''' 106 | volt = tcKTempTouV(temp) 107 | new_temp = tcuVToJTemp(volt) 108 | 109 | def tcKTempTouV(temp): 110 | ''' Return thermoelectic voltage for a temperature''' 111 | # Type-K Coefficients for 0-1372C 112 | direct_coeff = [-1.7600413686e1, 113 | 3.8921204975e1, 114 | 1.8558770032e-2, 115 | -9.9457592874e-5, 116 | 3.1840945719e-7, 117 | -5.6072844889e-10, 118 | 5.6075059059e-13, 119 | -3.2020720003e-16, 120 | 9.7151147152e-20, 121 | -1.210472127e-23] 122 | a_0 = 1.185976e2 123 | a_1 = -1.183432e-4 124 | 125 | e = 0 126 | for (i, coeff) in enumerate(direct_coeff): 127 | e += coeff * pow(temp, i) 128 | 129 | exp = a_1 * pow(temp - 126.9686, 2) 130 | e += a_0 * pow(math.e, exp) 131 | return e 132 | 133 | def tcuVToJTemp(volt): 134 | ''' Return temp across a J-Type thermocouple''' 135 | # high is 760-1200C, mid is 0-760C 136 | indirect_coeff={'high': [-3.11358187e3, 137 | 3.00543684e-1, 138 | -9.94773230e-6, 139 | 1.70276630e-10, 140 | -1.43033468e-15, 141 | 4.73886084e-21], 142 | 'mid': [0, 143 | 1.978425e-2, 144 | -2.001204e-7, 145 | 1.036969e-11, 146 | -2.549687e-16, 147 | 3.585153e-21, 148 | -5.344285e-26, 149 | 5.099890e-31]} 150 | if volt >= 0 and volt < 42919: 151 | mode = 'mid' 152 | elif volt >= 42919: 153 | mode ='high' 154 | 155 | temp = 0 156 | for (i, coeff) in enumerate(indirect_coeff[mode]): 157 | temp += coeff * pow(volt, i) 158 | 159 | return temp 160 | 161 | def convertCToF(temp): 162 | return (temp*9.0/5.0+32) 163 | 164 | 165 | if __name__ == '__main__': 166 | try: 167 | GPIO.setmode(GPIO.BCM) 168 | #print "Started" 169 | setupSpiPins() 170 | #print "Setup" 171 | for cs in CS_ARRAY: 172 | val = readTemp(cs) 173 | #val = convertTypeJToTypeK(val) 174 | print str(convertCToF(val)) 175 | #print "Temp: ", str(val*9.0/5.0+32),"F" 176 | GPIO.cleanup() 177 | sys.exit(0) 178 | except KeyboardInterrupt: 179 | GPIO.cleanup() 180 | sys.exit(0) 181 | -------------------------------------------------------------------------------- /src/bullet.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | // Chart design based on the recommendations of Stephen Few. Implementation 4 | // based on the work of Clint Ivy, Jamie Love, and Jason Davies. 5 | // http://projects.instantcognition.com/protovis/bulletchart/ 6 | d3.bullet = function() { 7 | var orient = "left", // TODO top & bottom 8 | reverse = false, 9 | duration = 0, 10 | ranges = bulletRanges, 11 | markers = bulletMarkers, 12 | measures = bulletMeasures, 13 | width = 380, 14 | height = 30, 15 | tickFormat = null; 16 | 17 | // For each small multiple… 18 | function bullet(g) { 19 | g.each(function(d, i) { 20 | var rangez = ranges.call(this, d, i).slice().sort(d3.descending), 21 | markerz = markers.call(this, d, i).slice().sort(d3.descending), 22 | measurez = measures.call(this, d, i).slice().sort(d3.descending), 23 | g = d3.select(this); 24 | 25 | // Compute the new x-scale. 26 | var x1 = d3.scale.linear() 27 | .domain([0, Math.max(rangez[0], markerz[0], measurez[0])]) 28 | .range(reverse ? [width, 0] : [0, width]); 29 | 30 | // Retrieve the old x-scale, if this is an update. 31 | var x0 = this.__chart__ || d3.scale.linear() 32 | .domain([0, Infinity]) 33 | .range(x1.range()); 34 | 35 | // Stash the new scale. 36 | this.__chart__ = x1; 37 | 38 | // Derive width-scales from the x-scales. 39 | var w0 = bulletWidth(x0), 40 | w1 = bulletWidth(x1); 41 | 42 | // Update the range rects. 43 | var range = g.selectAll("rect.range") 44 | .data(rangez); 45 | 46 | range.enter().append("rect") 47 | .attr("class", function(d, i) { return "range s" + i; }) 48 | .attr("width", w0) 49 | .attr("height", height) 50 | .attr("x", reverse ? x0 : 0) 51 | .transition() 52 | .duration(duration) 53 | .attr("width", w1) 54 | .attr("x", reverse ? x1 : 0); 55 | 56 | range.transition() 57 | .duration(duration) 58 | .attr("x", reverse ? x1 : 0) 59 | .attr("width", w1) 60 | .attr("height", height); 61 | 62 | // Update the measure rects. 63 | var measure = g.selectAll("rect.measure") 64 | .data(measurez); 65 | 66 | measure.enter().append("rect") 67 | .attr("class", function(d, i) { return "measure s" + i; }) 68 | .attr("width", w0) 69 | .attr("height", height / 3) 70 | .attr("x", reverse ? x0 : 0) 71 | .attr("y", height / 3) 72 | .transition() 73 | .duration(duration) 74 | .attr("width", w1) 75 | .attr("x", reverse ? x1 : 0); 76 | 77 | measure.transition() 78 | .duration(duration) 79 | .attr("width", w1) 80 | .attr("height", height / 3) 81 | .attr("x", reverse ? x1 : 0) 82 | .attr("y", height / 3); 83 | 84 | // Update the marker lines. 85 | var marker = g.selectAll("line.marker") 86 | .data(markerz); 87 | 88 | marker.enter().append("line") 89 | .attr("class", "marker") 90 | .attr("x1", x0) 91 | .attr("x2", x0) 92 | .attr("y1", height / 6) 93 | .attr("y2", height * 5 / 6) 94 | .transition() 95 | .duration(duration) 96 | .attr("x1", x1) 97 | .attr("x2", x1); 98 | 99 | marker.transition() 100 | .duration(duration) 101 | .attr("x1", x1) 102 | .attr("x2", x1) 103 | .attr("y1", height / 6) 104 | .attr("y2", height * 5 / 6); 105 | 106 | // Compute the tick format. 107 | var format = tickFormat || x1.tickFormat(8); 108 | 109 | // Update the tick groups. 110 | var tick = g.selectAll("g.tick") 111 | .data(x1.ticks(8), function(d) { 112 | return this.textContent || format(d); 113 | }); 114 | 115 | // Initialize the ticks with the old scale, x0. 116 | var tickEnter = tick.enter().append("g") 117 | .attr("class", "tick") 118 | .attr("transform", bulletTranslate(x0)) 119 | .style("opacity", 1e-6); 120 | 121 | tickEnter.append("line") 122 | .attr("y1", height) 123 | .attr("y2", height * 7 / 6); 124 | 125 | tickEnter.append("text") 126 | .attr("text-anchor", "middle") 127 | .attr("dy", "1em") 128 | .attr("y", height * 7 / 6) 129 | .text(format); 130 | 131 | // Transition the entering ticks to the new scale, x1. 132 | tickEnter.transition() 133 | .duration(duration) 134 | .attr("transform", bulletTranslate(x1)) 135 | .style("opacity", 1); 136 | 137 | // Transition the updating ticks to the new scale, x1. 138 | var tickUpdate = tick.transition() 139 | .duration(duration) 140 | .attr("transform", bulletTranslate(x1)) 141 | .style("opacity", 1); 142 | 143 | tickUpdate.select("line") 144 | .attr("y1", height) 145 | .attr("y2", height * 7 / 6); 146 | 147 | tickUpdate.select("text") 148 | .attr("y", height * 7 / 6); 149 | 150 | // Transition the exiting ticks to the new scale, x1. 151 | tick.exit().transition() 152 | .duration(duration) 153 | .attr("transform", bulletTranslate(x1)) 154 | .style("opacity", 1e-6) 155 | .remove(); 156 | }); 157 | d3.timer.flush(); 158 | } 159 | 160 | // left, right, top, bottom 161 | bullet.orient = function(x) { 162 | if (!arguments.length) return orient; 163 | orient = x; 164 | reverse = orient == "right" || orient == "bottom"; 165 | return bullet; 166 | }; 167 | 168 | // ranges (bad, satisfactory, good) 169 | bullet.ranges = function(x) { 170 | if (!arguments.length) return ranges; 171 | ranges = x; 172 | return bullet; 173 | }; 174 | 175 | // markers (previous, goal) 176 | bullet.markers = function(x) { 177 | if (!arguments.length) return markers; 178 | markers = x; 179 | return bullet; 180 | }; 181 | 182 | // measures (actual, forecast) 183 | bullet.measures = function(x) { 184 | if (!arguments.length) return measures; 185 | measures = x; 186 | return bullet; 187 | }; 188 | 189 | bullet.width = function(x) { 190 | if (!arguments.length) return width; 191 | width = x; 192 | return bullet; 193 | }; 194 | 195 | bullet.height = function(x) { 196 | if (!arguments.length) return height; 197 | height = x; 198 | return bullet; 199 | }; 200 | 201 | bullet.tickFormat = function(x) { 202 | if (!arguments.length) return tickFormat; 203 | tickFormat = x; 204 | return bullet; 205 | }; 206 | 207 | bullet.duration = function(x) { 208 | if (!arguments.length) return duration; 209 | duration = x; 210 | return bullet; 211 | }; 212 | 213 | return bullet; 214 | }; 215 | 216 | function bulletRanges(d) { 217 | return d.ranges; 218 | } 219 | 220 | function bulletMarkers(d) { 221 | return d.markers; 222 | } 223 | 224 | function bulletMeasures(d) { 225 | return d.measures; 226 | } 227 | 228 | function bulletTranslate(x) { 229 | return function(d) { 230 | return "translate(" + x(d) + ",0)"; 231 | }; 232 | } 233 | 234 | function bulletWidth(x) { 235 | var x0 = x(0); 236 | return function(d) { 237 | return Math.abs(x(d) - x0); 238 | }; 239 | } 240 | 241 | })(); 242 | -------------------------------------------------------------------------------- /eagle.epf: -------------------------------------------------------------------------------- 1 | [Eagle] 2 | Version="06 05 00" 3 | Platform="Mac OS X" 4 | Serial="62191E841E-LSR-WLM-1EL" 5 | Globals="Globals" 6 | Desktop="Desktop" 7 | 8 | [Globals] 9 | AutoSaveProject=1 10 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/19inch.lbr" 11 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/40xx.lbr" 12 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/41xx.lbr" 13 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/45xx.lbr" 14 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/74ac-logic.lbr" 15 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/74ttl-din.lbr" 16 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/74xx-eu.lbr" 17 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/74xx-little-de.lbr" 18 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/74xx-little-us.lbr" 19 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/74xx-us.lbr" 20 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/751xx.lbr" 21 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/advanced-test-technologies.lbr" 22 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/agilent-technologies.lbr" 23 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/allegro.lbr" 24 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/altera-cyclone-II.lbr" 25 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/altera-cyclone-III.lbr" 26 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/altera-stratix-iv.lbr" 27 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/altera.lbr" 28 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/am29-memory.lbr" 29 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/amd-mach.lbr" 30 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/amd.lbr" 31 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/amis.lbr" 32 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/analog-devices.lbr" 33 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/aplus.lbr" 34 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/ase.lbr" 35 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/atmel.lbr" 36 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/austriamicrosystems.lbr" 37 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/avago.lbr" 38 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/axis.lbr" 39 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/battery.lbr" 40 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/belton-engineering.lbr" 41 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/burr-brown.lbr" 42 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/busbar.lbr" 43 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/buzzer.lbr" 44 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/c-trimm.lbr" 45 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/california-micro-devices.lbr" 46 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/capacitor-wima.lbr" 47 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/chipcard-siemens.lbr" 48 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/cirrus-logic.lbr" 49 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-3m.lbr" 50 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-4ucon.lbr" 51 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-amp-champ.lbr" 52 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-amp-micromatch.lbr" 53 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-amp-mt.lbr" 54 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-amp-mt6.lbr" 55 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-amp-quick.lbr" 56 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-amp-te.lbr" 57 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-amp.lbr" 58 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-amphenol.lbr" 59 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-avx.lbr" 60 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-berg.lbr" 61 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-bosch.lbr" 62 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-chipcard-iso7816.lbr" 63 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-coax.lbr" 64 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-commcon.lbr" 65 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-conrad.lbr" 66 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-cpci.lbr" 67 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-cui.lbr" 68 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-cypressindustries.lbr" 69 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-deutsch.lbr" 70 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-dil.lbr" 71 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-ebyelectro.lbr" 72 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-elco.lbr" 73 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-erni.lbr" 74 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-faston.lbr" 75 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-fci.lbr" 76 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-friwo.lbr" 77 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-garry.lbr" 78 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-harting-h.lbr" 79 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-harting-ml.lbr" 80 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-harting-v.lbr" 81 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-harting.lbr" 82 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-hirose.lbr" 83 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-hirschmann.lbr" 84 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-jack.lbr" 85 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-jae.lbr" 86 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-jst.lbr" 87 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-kycon.lbr" 88 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-kyocera-elco.lbr" 89 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-lemo.lbr" 90 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-leotronics.lbr" 91 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-lsta.lbr" 92 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-lstb.lbr" 93 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-lumberg.lbr" 94 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-ml.lbr" 95 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-molex.lbr" 96 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-neutrik_ag.lbr" 97 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-omron.lbr" 98 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-panasonic.lbr" 99 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-panduit.lbr" 100 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-pc.lbr" 101 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-pc104.lbr" 102 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-phoenix-254.lbr" 103 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-phoenix-3.81.lbr" 104 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-phoenix-350.lbr" 105 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-phoenix-500.lbr" 106 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-phoenix-508.lbr" 107 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-phoenix-762.lbr" 108 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-phoenix-me_max.lbr" 109 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-phoenix-mkds_5.lbr" 110 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-phoenix-smkdsp.lbr" 111 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-ptr500.lbr" 112 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-pulse.lbr" 113 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-rib.lbr" 114 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-samtec.lbr" 115 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-shallin.lbr" 116 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-shiua-chyuan.lbr" 117 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-stewart.lbr" 118 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-stocko.lbr" 119 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-subd.lbr" 120 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-sullinselectronics.lbr" 121 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-thomas-betts.lbr" 122 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-tyco.lbr" 123 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-tycoelectronics.lbr" 124 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-vg.lbr" 125 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-wago-500.lbr" 126 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-wago-508.lbr" 127 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-wago.lbr" 128 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-wago255.lbr" 129 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-weidmueller-sl35.lbr" 130 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-wenzhou-yihua.lbr" 131 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-xmultiple.lbr" 132 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/con-yamaichi.lbr" 133 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/crystal.lbr" 134 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/csr.lbr" 135 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/cypress.lbr" 136 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/davicom.lbr" 137 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/dc-dc-converter.lbr" 138 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/dimensions.lbr" 139 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/diode.lbr" 140 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/discrete.lbr" 141 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/display-hp.lbr" 142 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/display-kingbright.lbr" 143 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/display-lcd.lbr" 144 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/docu-dummy.lbr" 145 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/eagle-ltspice.lbr" 146 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/ecl.lbr" 147 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/em-microelectronic.lbr" 148 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/etx-board.lbr" 149 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/exar.lbr" 150 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/fairchild-semic.lbr" 151 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/farnell.lbr" 152 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/fiber-optic-hp.lbr" 153 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/fiber-optic-siemens.lbr" 154 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/fifo.lbr" 155 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/flexipanel.lbr" 156 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/fox-electronics.lbr" 157 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/frames.lbr" 158 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/freescale.lbr" 159 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/ftdichip.lbr" 160 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/fujitsu.lbr" 161 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/fuse.lbr" 162 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/gennum.lbr" 163 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/halo-electronics.lbr" 164 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/heatsink.lbr" 165 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/holes.lbr" 166 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/holtek.lbr" 167 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/ic-package.lbr" 168 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/inductor-coilcraft.lbr" 169 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/inductor-neosid.lbr" 170 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/inductor-nkl.lbr" 171 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/inductors.lbr" 172 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/infineon-tricore.lbr" 173 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/infineon.lbr" 174 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/intersil-techwell.lbr" 175 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/intersil.lbr" 176 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/ir.lbr" 177 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/isd.lbr" 178 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/johanson-technology.lbr" 179 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/jump-0r-smd.lbr" 180 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/jumper.lbr" 181 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/lantronix.lbr" 182 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/lattice.lbr" 183 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/lc-filter.lbr" 184 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/led-7-segment.lbr" 185 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/led-citizen-electronics.lbr" 186 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/led-lumiled.lbr" 187 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/led.lbr" 188 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/lem.lbr" 189 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/linear-technology.lbr" 190 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/linear.lbr" 191 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/linx.lbr" 192 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/logo.lbr" 193 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/lprs.lbr" 194 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/lsi-computer-systems.lbr" 195 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/lumiled.lbr" 196 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/marks.lbr" 197 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/maxim.lbr" 198 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/maxstream.lbr" 199 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/melexis.lbr" 200 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/memory-hitachi.lbr" 201 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/memory-idt.lbr" 202 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/memory-micron.lbr" 203 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/memory-motorola-dram.lbr" 204 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/memory-nec.lbr" 205 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/memory-samsung.lbr" 206 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/memory-sram.lbr" 207 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/memory.lbr" 208 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/mems.lbr" 209 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micrel.lbr" 210 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-cyrod.lbr" 211 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-fujitsu.lbr" 212 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-harris.lbr" 213 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-hitachi.lbr" 214 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-infineon.lbr" 215 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-intel.lbr" 216 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-mc68000.lbr" 217 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-motorola.lbr" 218 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-philips.lbr" 219 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-renesas.lbr" 220 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-samsung.lbr" 221 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micro-siemens.lbr" 222 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/microchip.lbr" 223 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micron.lbr" 224 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/micronas.lbr" 225 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/microphon.lbr" 226 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/microwave.lbr" 227 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/midori-sensor.lbr" 228 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/minicircuits.lbr" 229 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/mitsubishi-semiconductor.lbr" 230 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/motorola-sensor-driver.lbr" 231 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/murata-filter.lbr" 232 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/murata-sensor.lbr" 233 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/nanotec.lbr" 234 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/national-instruments.lbr" 235 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/national-semiconductor.lbr" 236 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/nec-lqfp100-pack.lbr" 237 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/nec.lbr" 238 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/nrj-semiconductor.lbr" 239 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/omnivision.lbr" 240 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/on-semiconductor.lbr" 241 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/opto-honeywell-3000.lbr" 242 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/opto-honeywell-4000.lbr" 243 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/opto-honeywell.lbr" 244 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/opto-micro-linear.lbr" 245 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/opto-trans-siemens.lbr" 246 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/opto-transmittter-hp.lbr" 247 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/opto-vishay.lbr" 248 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/optocoupler.lbr" 249 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/pal.lbr" 250 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/philips-semiconductors.lbr" 251 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/photo-elements.lbr" 252 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/piher.lbr" 253 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/pinhead.lbr" 254 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/plcc-socket.lbr" 255 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/pld-intel.lbr" 256 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/plxtech.lbr" 257 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/pot-vitrohm.lbr" 258 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/pot-xicor.lbr" 259 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/pot.lbr" 260 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/ptc-ntc.lbr" 261 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/quantum-research-group.lbr" 262 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/rcl.lbr" 263 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/recom-international.lbr" 264 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/rectifier.lbr" 265 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/ref-packages-longpad.lbr" 266 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/ref-packages.lbr" 267 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/relay.lbr" 268 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/renesas.lbr" 269 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/resistor-bourns.lbr" 270 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/resistor-dil.lbr" 271 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/resistor-net.lbr" 272 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/resistor-power.lbr" 273 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/resistor-ruf.lbr" 274 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/resistor-shunt.lbr" 275 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/resistor-sil.lbr" 276 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/resistor.lbr" 277 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/rf-micro-devices.lbr" 278 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/rf-solutions.lbr" 279 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/rohm.lbr" 280 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/semicon-smd-ipc.lbr" 281 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/sensor-comus-group.lbr" 282 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/sensor-heraeus.lbr" 283 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/sensor-infratec.lbr" 284 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/sharp.lbr" 285 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/silabs.lbr" 286 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/sim-technology.lbr" 287 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/sipex.lbr" 288 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/smd-ipc.lbr" 289 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/smd-special.lbr" 290 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/solomon-systech.lbr" 291 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/solpad.lbr" 292 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/special-drill.lbr" 293 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/special.lbr" 294 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/st-microelectronics.lbr" 295 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/supertex.lbr" 296 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/supply1.lbr" 297 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/supply2.lbr" 298 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/switch-alps.lbr" 299 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/switch-coto.lbr" 300 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/switch-dil.lbr" 301 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/switch-misc.lbr" 302 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/switch-omron.lbr" 303 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/switch-raychem.lbr" 304 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/switch-reed.lbr" 305 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/switch.lbr" 306 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/telcom.lbr" 307 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/telecontrolli.lbr" 308 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/telefunken.lbr" 309 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/testpad.lbr" 310 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/texas-sn55-sn75.lbr" 311 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/texas.lbr" 312 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/toshiba.lbr" 313 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/traco-electronic.lbr" 314 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/trafo-bei.lbr" 315 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/trafo-hammondmfg.lbr" 316 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/trafo-siemens.lbr" 317 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/trafo-xicon.lbr" 318 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/trafo.lbr" 319 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/transformer-pulse.lbr" 320 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/transistor-fet.lbr" 321 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/transistor-neu-to92.lbr" 322 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/transistor-npn.lbr" 323 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/transistor-pnp.lbr" 324 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/transistor-power.lbr" 325 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/transistor-small-signal.lbr" 326 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/transistor.lbr" 327 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/triac.lbr" 328 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/trimble.lbr" 329 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/tripas.lbr" 330 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/u-blox.lbr" 331 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/uln-udn.lbr" 332 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/v-reg-micrel.lbr" 333 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/v-reg.lbr" 334 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/varistor.lbr" 335 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/wafer-scale-psd.lbr" 336 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/wirepad.lbr" 337 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/xicor.lbr" 338 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/xilinx-virtex-v5.lbr" 339 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/xilinx-xc18v.lbr" 340 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/xilinx-xc9.lbr" 341 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/xilinx-xcv.lbr" 342 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/zetex.lbr" 343 | UsedLibrary="/Applications/EAGLE-6.5.0/lbr/zilog.lbr" 344 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/LilyPad-Wearables.lbr" 345 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-Aesthetics.lbr" 346 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-AnalogIC.lbr" 347 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-Boards.lbr" 348 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-Capacitors.lbr" 349 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-Connectors.lbr" 350 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-DigitalIC.lbr" 351 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-DiscreteSemi.lbr" 352 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-Displays.lbr" 353 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-Electromechanical.lbr" 354 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-FreqCtrl.lbr" 355 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-LED.lbr" 356 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-Passives.lbr" 357 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-PowerIC.lbr" 358 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-RF.lbr" 359 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-Resistors.lbr" 360 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/SparkFun-Sensors.lbr" 361 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/adafruit.lbr" 362 | UsedLibrary="/Users/efriedri/Dropbox/eagle/external_lbrs/rpi-header.lbr" 363 | 364 | [Win_1] 365 | Type="Board Editor" 366 | Loc="420 293 1019 692" 367 | State=0 368 | Number=2 369 | File="PiMometer.brd" 370 | View="-1.71011 -33.6116 87.2159 43.3806" 371 | WireWidths=" 0 0.254 0.3048 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0.4064" 372 | PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" 373 | PadDrills=" 0.5 0.6 0.7 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.2 2.8 3.2 0.8" 374 | ViaDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" 375 | ViaDrills=" 0.5 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.2 2.8 3.2 0.6" 376 | HoleDrills=" 0.5 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.2 2.8 3.2 0.6" 377 | TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778" 378 | PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27" 379 | PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" 380 | MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0" 381 | DimensionWidths=" 0 0.127 0.254 0.1 0.26 0.13" 382 | DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0" 383 | DimensionExtLengths=" 1.27 2.54 1 2 3 0" 384 | DimensionExtOffsets=" 1.27 2.54 1 2 3 0" 385 | SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635" 386 | WireBend=0 387 | WireBendSet=0 388 | WireCap=1 389 | MiterStyle=0 390 | PadShape=0 391 | ViaShape=0 392 | PolygonPour=0 393 | PolygonRank=1 394 | PolygonThermals=1 395 | PolygonOrphans=0 396 | TextRatio=8 397 | DimensionUnit=1 398 | DimensionPrecision=2 399 | DimensionShowUnit=0 400 | PinDirection=3 401 | PinFunction=0 402 | PinLength=2 403 | PinVisible=3 404 | SwapLevel=0 405 | ArcDirection=0 406 | AddLevel=2 407 | PadsSameType=0 408 | Layer=16 409 | 410 | [Win_2] 411 | Type="Control Panel" 412 | Loc="356 277 955 676" 413 | State=2 414 | Number=0 415 | 416 | [Win_3] 417 | Type="Schematic Editor" 418 | Loc="216 77 1516 958" 419 | State=2 420 | Number=1 421 | File="PiMometer.sch" 422 | View="74.0146 -7.20901 203.823 89.5792" 423 | WireWidths=" 0 0.3048 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0.4064 0.1524" 424 | PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" 425 | PadDrills=" 0.5 0.6 0.7 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.2 2.8 3.2 0.8" 426 | ViaDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" 427 | ViaDrills=" 0.5 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.2 2.8 3.2 0.6" 428 | HoleDrills=" 0.5 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.2 2.8 3.2 0.6" 429 | TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778" 430 | PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27" 431 | PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" 432 | MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0" 433 | DimensionWidths=" 0 0.127 0.254 0.1 0.26 0.13" 434 | DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0" 435 | DimensionExtLengths=" 1.27 2.54 1 2 3 0" 436 | DimensionExtOffsets=" 1.27 2.54 1 2 3 0" 437 | SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635" 438 | WireBend=0 439 | WireBendSet=31 440 | WireCap=1 441 | MiterStyle=0 442 | PadShape=0 443 | ViaShape=0 444 | PolygonPour=0 445 | PolygonRank=0 446 | PolygonThermals=1 447 | PolygonOrphans=0 448 | TextRatio=8 449 | DimensionUnit=1 450 | DimensionPrecision=2 451 | DimensionShowUnit=0 452 | PinDirection=3 453 | PinFunction=0 454 | PinLength=2 455 | PinVisible=3 456 | SwapLevel=0 457 | ArcDirection=0 458 | AddLevel=2 459 | PadsSameType=0 460 | Layer=91 461 | Views=" 1: 74.0146 -7.20901 203.823 89.5792" 462 | Sheet=1 463 | 464 | [Desktop] 465 | Screen="1680 1050" 466 | Window="Win_1" 467 | Window="Win_2" 468 | Window="Win_3" 469 | -------------------------------------------------------------------------------- /PiMometer.brd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 12-12-13 126 | PiMometer v1.1 127 | ericfriedri.ch 128 | TC4 129 | TC3 130 | TC2 131 | TC1 132 | GND 133 | 5V 134 | 135 | 136 | 137 | 138 | 139 | Raspberry Pi shrouded GPIO pin header 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | >NAME 259 | >VALUE 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | >VALUE 319 | >NAME 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | <h3>SparkFun Electronics' preferred foot prints</h3> 333 | In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br> 334 | We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. 335 | <br><br> 336 | <b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | >NAME 348 | >VALUE 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | <h3>SparkFun Electronics' preferred foot prints</h3> 358 | In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.<br><br> 359 | We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. 360 | <br><br> 361 | <b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | <h3>SparkFun Electronics' preferred foot prints</h3> 378 | In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br> 379 | We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. 380 | <br><br> 381 | <b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | >NAME 393 | >VALUE 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | >NAME 406 | >VALUE 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | <h3>SparkFun Electronics' preferred foot prints</h3> 493 | In this library you'll find anything that moves- switches, relays, buttons, potentiometers. Also, anything that goes on a board but isn't electrical in nature- screws, standoffs, etc.<br><br> 494 | We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. 495 | <br><br> 496 | <b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. 497 | 498 | 499 | <b>Stand Off</b><p> 500 | This is the mechanical footprint for a #4 phillips button head screw. Use the keepout ring to avoid running the screw head into surrounding components. SKU : PRT-00447 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | <h3>SparkFun Electronics' preferred foot prints</h3> 512 | In this library you'll find non-functional items- supply symbols, logos, notations, frame blocks, etc.<br><br> 513 | We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. 514 | <br><br> 515 | <b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. 516 | 517 | 518 | Released under the Creative Commons Attribution Share-Alike 3.0 License 519 | http://creativecommons.org/licenses/by-sa/3.0 520 | Designed by: 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | <b>EAGLE Design Rules</b> 535 | <p> 536 | Die Standard-Design-Rules sind so gewählt, dass sie für 537 | die meisten Anwendungen passen. Sollte ihre Platine 538 | besondere Anforderungen haben, treffen Sie die erforderlichen 539 | Einstellungen hier und speichern die Design Rules unter 540 | einem neuen Namen ab. 541 | <b>Laen's PCB Order Design Rules</b> 542 | <p> 543 | Please make sure your boards conform to these design rules. 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | --------------------------------------------------------------------------------