Difference between revisions of "Msemtd HomeAuto"
m (Danspencer101 moved page Project:Msemtd HomeAuto to Msemtd HomeAuto over redirect) |
|||
(18 intermediate revisions by 5 users not shown) | |||
Line 23: | Line 23: | ||
* IC2: LP816A | * IC2: LP816A | ||
− | {{#widget:Flickr | + | {{#widget:Flickr|photoset=72157626970362296}} |
Line 32: | Line 32: | ||
Using a Nanode at my internet gateway router and communicating with and powering multiple slave Xinos on a 4-wire bus... | Using a Nanode at my internet gateway router and communicating with and powering multiple slave Xinos on a 4-wire bus... | ||
+ | |||
+ | [[Category:Projects]] | ||
+ | [[Category:Projects (in progress)]] | ||
http://wiki.hackspace.org.uk/wiki/Project:Nanode/Applications#Using_the_Local_Serial_Bus | http://wiki.hackspace.org.uk/wiki/Project:Nanode/Applications#Using_the_Local_Serial_Bus | ||
Line 53: | Line 56: | ||
== Temperature == | == Temperature == | ||
− | I have a bag of surplus 47k thermistors and I intend to build a number of circuits to measure temperature starting with the very simplest and culminating in a teachable HackSpace project with reasonable accuracy. | + | I have a bag of surplus 47k thermistors (about 500) and I intend to build a number of circuits to measure temperature starting with the very simplest and culminating in a teachable HackSpace project with reasonable accuracy. We will put these devices in fridges, near heat sources, near doors, windows, indoors, outdoors, you name it. |
The component: | The component: | ||
− | Future Electronics B4090K Thermistor 47k 5% | + | * Listed in stores as "Future Electronics B4090K Thermistor 47k 5%" |
+ | * I think it may be this one | ||
+ | ** http://uk.futureelectronics.com/en/Search.aspx?dsNav=Ny:True,Ro:0,Nea:True,N:477-4294920237 | ||
+ | ** http://uk.futureelectronics.com/en/Technologies/Product.aspx?ProductID=NTCLE100E3473JB0VISHAY8666240 | ||
+ | * however, the Vishay product may be obsolete and the tolerance is listed as 1.5% rather than 5% | ||
+ | |||
+ | <code> | ||
+ | VISHAY | ||
+ | NTCLE100 Series NTC 47 kOhm ±1.5 % Radial Leaded Standard Precision Thermistor | ||
+ | Mfr Part#: NTCLE100E3473JB0 | ||
+ | Packaging : BAG | ||
+ | Std Packaging Qty: 500 | ||
+ | Min Order Qty: 1 | ||
+ | As low as: £0.1751 (GBP) | ||
+ | In Stock: No | ||
+ | Type: | ||
+ | NTC | ||
+ | Resistance: | ||
+ | 47 kO | ||
+ | Tolerance (%): | ||
+ | ±1.5 % | ||
+ | B-constant: | ||
+ | 4090 °K | ||
+ | Temperature Range: | ||
+ | -40 to +125 °C | ||
+ | </code> | ||
+ | |||
+ | Some Google digging reveals... | ||
+ | * http://www.vishay.com/docs/29049/ntcle100.pdf | ||
+ | * these thermistors are colour coded | ||
+ | ** Yellow Violet Orange Gold | ||
+ | *** B25/85-VALUE = 4090K (+/- 5%) (the gold means 5%) | ||
+ | |||
+ | The simplest circuits and Arduino code... | ||
+ | * http://arduino.cc/playground/Main/InterfacingWithHardware#envtture | ||
+ | ** http://arduino.cc/playground/ComponentLib/Thermistor | ||
+ | ** http://arduino.cc/playground/ComponentLib/Thermistor2 | ||
+ | ** http://arduino.cc/playground/ComponentLib/Thermistor3 | ||
+ | |||
+ | This is the best code I have found so far - from Thermistor2 but allows us to have our own parameters definition... | ||
+ | |||
+ | #define NOTTINGHACK_47K 4090.0f,298.15f,47000.0f // B,T0,R0 | ||
+ | |||
+ | <div style ="height:200px;overflow-x:hidden;overflow-y:auto;border: 4px solid green;"> | ||
+ | <syntaxhighlight lang="cpp" line="GESHI_FANCY_LINE_NUMBERS"> | ||
+ | |||
+ | #include <math.h> | ||
+ | // enumarating 3 major temperature scales | ||
+ | enum { | ||
+ | T_KELVIN=0, | ||
+ | T_CELSIUS, | ||
+ | T_FAHRENHEIT | ||
+ | }; | ||
+ | |||
+ | // manufacturer data for episco k164 10k thermistor | ||
+ | // simply delete this if you don't need it | ||
+ | // or use this idea to define your own thermistors | ||
+ | #define EPISCO_K164_10k 4300.0f,298.15f,10000.0f // B,T0,R0 | ||
+ | #define NOTTINGHACK_47K 4090.0f,298.15f,47000.0f // B,T0,R0 | ||
+ | |||
+ | // Temperature function outputs float , the actual | ||
+ | // temperature | ||
+ | // Temperature function inputs | ||
+ | // 1.AnalogInputNumber - analog input to read from | ||
+ | // 2.OuputUnit - output in celsius, kelvin or fahrenheit | ||
+ | // 3.Thermistor B parameter - found in datasheet | ||
+ | // 4.Manufacturer T0 parameter - found in datasheet (kelvin) | ||
+ | // 5. Manufacturer R0 parameter - found in datasheet (ohms) | ||
+ | // 6. Your balance resistor resistance in ohms | ||
+ | |||
+ | float Temperature(int AnalogInputNumber,int OutputUnit,float B,float T0,float R0,float R_Balance) | ||
+ | { | ||
+ | float R,T; | ||
+ | |||
+ | R=1024.0f * R_Balance / float( analogRead(AnalogInputNumber) ) - R_Balance; | ||
+ | T=1.0f/(1.0f/T0+(1.0f/B)*log(R/R0)); | ||
+ | |||
+ | switch(OutputUnit) { | ||
+ | case T_CELSIUS : | ||
+ | T-=273.15f; | ||
+ | break; | ||
+ | case T_FAHRENHEIT : | ||
+ | T=9.0f*(T-273.15f)/5.0f+32.0f; | ||
+ | break; | ||
+ | default: | ||
+ | break; | ||
+ | }; | ||
+ | |||
+ | return T; | ||
+ | } | ||
+ | // example of use #1 | ||
+ | // reading from analog input 1, using episco k164 definition | ||
+ | // and 10k balance, getting result in celsius | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | Serial.println("*************************"); | ||
+ | Serial.println("10k Balance"); | ||
+ | Serial.println(Temperature(1,T_CELSIUS,NOTTINGHACK_47K,10000.0f)); | ||
+ | Serial.println("*************************"); | ||
+ | |||
+ | delay(500); | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | I certainly would like one of these data logger devices... | ||
+ | * http://www.nuelectronics.com/estore/index.php?main_page=product_info&cPath=7&products_id=20 | ||
+ | * http://www.nuelectronics.com/download/projects/sensor_shield_v1.0.pdf | ||
+ | * usage; http://sheepdogguides.com/arduino/ar3ne1tt.htm | ||
+ | |||
+ | |||
+ | A Processing sketch to receive a number of sensor values on the serial line and do something with them... | ||
+ | <div style ="height:200px;overflow-x:hidden;overflow-y:auto;border: 4px solid green;"> | ||
+ | <syntaxhighlight lang="java" line="GESHI_FANCY_LINE_NUMBERS"> | ||
+ | |||
+ | |||
+ | int sensorCount = 5; // max number of values to receive | ||
+ | float[] sensorValues = new float[sensorCount]; // array to hold the incoming values | ||
+ | |||
+ | import processing.serial.*; | ||
+ | Serial myPort; // The serial port | ||
+ | |||
+ | int BAUDRATE = 9600; | ||
+ | //int BAUDRATE = 115200; | ||
+ | char DELIM = ','; // the delimeter for parsing incoming data | ||
+ | |||
+ | PFont fontA; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | size(200, 200); | ||
+ | smooth(); | ||
+ | noStroke(); | ||
+ | frameRate(3); | ||
+ | myPort = new Serial(this, "COM10", BAUDRATE); | ||
+ | // clear the serial buffer: | ||
+ | myPort.clear(); | ||
+ | |||
+ | fontA = loadFont("AlbaSuper-48.vlw"); | ||
+ | // Set the font and its size (in units of pixels) | ||
+ | textFont(fontA, 48); | ||
+ | |||
+ | } | ||
+ | |||
+ | float x, z; | ||
+ | |||
+ | void draw() | ||
+ | { | ||
+ | background(100); | ||
+ | |||
+ | fill(255, 204, 0); | ||
+ | text(""+sensorValues[0], 20, 50); | ||
+ | |||
+ | |||
+ | float diameter = min(width, height) * 0.75; | ||
+ | float lastAng = PI; | ||
+ | // scaling factor on sensor values... | ||
+ | float val = sensorValues[0] * 2.5; | ||
+ | fill(204, 102, 0); | ||
+ | arc(width/2, (height/2 + 50), diameter, diameter, lastAng, lastAng+radians(val)); | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | void serialEvent(Serial myPort) { | ||
+ | String serialString = myPort.readStringUntil('\n'); | ||
+ | if (serialString == null) | ||
+ | return; | ||
+ | String[] vals = split(serialString, DELIM); | ||
+ | for (int i = 0; i < vals.length; i++) { | ||
+ | vals[i] = trim(vals[i]); | ||
+ | if (i >= sensorCount) | ||
+ | break; | ||
+ | println("vals["+i+"] = '"+vals[i]+"'"); | ||
+ | float f = float(vals[i]); | ||
+ | if(!(""+f).equals("NaN")) | ||
+ | sensorValues[i] = f; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </div> |
Latest revision as of 11:55, 5 February 2019
Michael's Home Instrumentation
- New porch doors have required me to rethink my doorbell!
- We can't hear people knocking on the door
- The people at the door don't know if the old doorbell actually rang
- The old wireless doorbell often didn't ring because the batteries were flat!
- The wireless doorbell didn't require drilling holes in the doorframe - this is a plus
- the 12V battery in the wireless doorbell pushbutton was expensive!
I want to do something simple with the old wireless doorbell and start to develop an extensible home automation/instrumentation project. I have a Nanode and a number of Xinos which I intend to connect on a 4-wire bus around the house.
The old doorbell
Push-button:
- PCB labelled "RL-09 04.04.23"
- Battery 12V A23S "Replaces: 23A, MS21/MN21" A23 on WP cheap 10x pack
- IC1: LP801/V8
Chime unit:
- PCB labelled "RL-09B 04.02.27"
- Batteries 4.5V, 3xAA
- IC2: LP816A
http://www.alldatasheet.com/view.jsp?Searchword=HCF4069UBE
The Nanode - Xino 4-wire Bus
Using a Nanode at my internet gateway router and communicating with and powering multiple slave Xinos on a 4-wire bus...
http://wiki.hackspace.org.uk/wiki/Project:Nanode/Applications#Using_the_Local_Serial_Bus
http://sustburbia.blogspot.com/2010/08/wired-network-for-arduinos.html
Read nanode MAC address: -
https://gist.github.com/1020951#file_nanode_mac.pde
MAC Address Read Test MAC address is 00:04:A3:03:DD:C7
The soil moisture tester
Do these plants need watering?
http://www.instructables.com/id/Garduino-Gardening-Arduino/
Temperature
I have a bag of surplus 47k thermistors (about 500) and I intend to build a number of circuits to measure temperature starting with the very simplest and culminating in a teachable HackSpace project with reasonable accuracy. We will put these devices in fridges, near heat sources, near doors, windows, indoors, outdoors, you name it.
The component:
- Listed in stores as "Future Electronics B4090K Thermistor 47k 5%"
- I think it may be this one
- however, the Vishay product may be obsolete and the tolerance is listed as 1.5% rather than 5%
VISHAY
NTCLE100 Series NTC 47 kOhm ±1.5 % Radial Leaded Standard Precision Thermistor
Mfr Part#: NTCLE100E3473JB0
Packaging : BAG
Std Packaging Qty: 500
Min Order Qty: 1
As low as: £0.1751 (GBP)
In Stock: No
Type:
NTC
Resistance:
47 kO
Tolerance (%):
±1.5 %
B-constant:
4090 °K
Temperature Range:
-40 to +125 °C
Some Google digging reveals...
- http://www.vishay.com/docs/29049/ntcle100.pdf
- these thermistors are colour coded
- Yellow Violet Orange Gold
- B25/85-VALUE = 4090K (+/- 5%) (the gold means 5%)
- Yellow Violet Orange Gold
The simplest circuits and Arduino code...
This is the best code I have found so far - from Thermistor2 but allows us to have our own parameters definition...
#define NOTTINGHACK_47K 4090.0f,298.15f,47000.0f // B,T0,R0
I certainly would like one of these data logger devices...
- http://www.nuelectronics.com/estore/index.php?main_page=product_info&cPath=7&products_id=20
- http://www.nuelectronics.com/download/projects/sensor_shield_v1.0.pdf
- usage; http://sheepdogguides.com/arduino/ar3ne1tt.htm
A Processing sketch to receive a number of sensor values on the serial line and do something with them...