Wenn aber das Repeater Sketch schon min. 5,kB und das DS18b20 Sketch über 5kB benötigt,
brauche ich es ja leider gar nicht versuchen.
Entwicklung: Temperatur Funk Sensor
-
meigrafd -
23. August 2013 um 13:46 -
Erledigt
Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
-
-
Entwicklung: Temperatur Funk Sensor? Schau mal ob du hier fündig wirst!
-
Wenn aber das Repeater Sketch schon min. 5,kB und das DS18b20 Sketch über 5kB benötigt,
brauche ich es ja leider gar nicht versuchen.Nein. Da beide Sketchs z.T. die selben Librarys verwenden, muss es kleiner ausfallen.
-
Wieso nicht? Im DS18b20 Sketch ist was genau mehr drin als im Repeater Sketch?
Also bitte - probier es doch einfach mal aus
...aber bevor hier jetzt deswegen noch mehr Posts kommen:
Spoiler anzeigen
C
Alles anzeigen// RFM12B Repeater with DS18B20 // // To use with DS18B20 instead of TMP36, a 4K7 resistor is needed between the Digital 9 and Digital 10 of the ATTiny (Vdd and DQ) // // Relays from one Network Group to another maintaining the Node ID // // Avoid using any code with interrupts (e.g powersaving watchdogs) // as it seems to cause resets and the setup code to execute again // Power Saving doesn't really make sense for a Relay as it needs to be listening all the time // and I would expect it to be running from a mains PSU or similar. // // modified by meigrafd @ 06.01.2015 //------------------------------------------------------------------------------ #include <RFM12B.h> #include <OneWire.h> #include <DallasTemperature.h> //------------------------------------------------------------------------------ // You will need to initialize the radio by telling it what ID it has and what network it's on // The NodeID takes values from 1-127, 0 is reserved for sending broadcast messages (send to all nodes) // The Network ID takes values from 0-255 // Fixed RFM12B Settings #define FREQ RF12_433MHZ // Frequency of RFM12B module #define ACK_TIME 2000 // # of ms to wait for an ack // Receive settings - where Senders send to #define NODEID 22 // network ID used for this unit #define NETWORKID 210 // the network ID we are on #define requestACK false // request ACK? (true/false) // Transmit settings - where Repeater sends to PI #define T_NODEID 1 // network ID used for this unit #define T_NETWORKID 220 // the network ID we are on #define T_GATEWAYID 22 // the node ID we're sending to #define T_requestACK false // request ACK? (true/false) // SENSOR pins #define ONE_WIRE_BUS 10 // DS18B20 Temperature sensor is connected on D10/ATtiny pin 13 #define ONE_WIRE_POWER 9 // DS18B20 Power pin is connected on D9/ATtiny pin 12 // LED pin #define LEDpin 8 // D8, PA2 - set to 0 to disable LED //------------------------------------------------------------------------------ /* +-\/-+ VCC 1| |14 GND (D0) PB0 2| |13 AREF (D10) (D1) PB1 3| |12 PA1 (D9) RESET 4| |11 PA2 (D8) INT0 PWM (D2) PB2 5| |10 PA3 (D7) PWM (D3) PA7 6| |9 PA4 (D6) PWM (D4) PA6 7| |8 PA5 (D5) PWM +----+ */ //encryption is OPTIONAL //to enable encryption you will need to: // - provide a 16-byte encryption KEY (same on all nodes that talk encrypted) // - to call .Encrypt(KEY) to start encrypting // - to stop encrypting call .Encrypt(NULL) //#define KEY "a4gBM69UZ03lQyK4" // Need an instance of the Radio Module RFM12B radio; // Setup a oneWire instance to communicate with any OneWire devices // (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); // Temperatur-String zum Versand per 433 Mhz char msg[26]; //############################################################################## static void activityLED (byte state, byte time = 0) { if (LEDpin) { pinMode(LEDpin, OUTPUT); if (time == 0) { digitalWrite(LEDpin, state); } else { digitalWrite(LEDpin, state); delay(time); digitalWrite(LEDpin, !state); } } } // blink led static void blink (byte pin, byte n = 3) { if (LEDpin) { pinMode(pin, OUTPUT); for (byte i = 0; i < 2 * n; ++i) { delay(100); digitalWrite(pin, !digitalRead(pin)); } } } void enableADC(bool b) { if (b == true){ bitClear(PRR, PRADC); // power up the ADC ADCSRA |= bit(ADEN); // enable the ADC delay(10); } else { //ADCSRA &= ~(1<<ADEN); // Disable ADC, saves ~230uA ADCSRA &= ~ bit(ADEN); // disable the ADC bitSet(PRR, PRADC); // power down the ADC } } //-------------------------------------------------------------------------------------------------- // Read current supply voltage (in mV) //-------------------------------------------------------------------------------------------------- long readVcc() { enableADC(true); // Read 1.1V reference against AVcc // set the reference to Vcc and the measurement to the internal 1.1V reference #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) ADMUX = _BV(MUX5) | _BV(MUX0); #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) ADMUX = _BV(MUX3) | _BV(MUX2); #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif delay(2); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Start conversion while (bit_is_set(ADCSRA,ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both long result = (high<<8) | low; //result = 1125300L / result; // Back-Calculate Vcc (in mV); 1125300 = 1.1*1023*1000 result = 1126400L / result; // Back-calculate Vcc in mV enableADC(false); return result; } //-------------------------------------------------------------------------------------------------- // Initialise the RFM12B for receiving void setupReceive() { radio.Initialize(NODEID, FREQ, NETWORKID); #ifdef KEY radio.Encrypt((byte*)KEY); //comment this out to disable encryption #endif } // Initialise the RFM12B for relaying void setupTransmit() { radio.Initialize(T_NODEID, FREQ, T_NETWORKID); #ifdef KEY radio.Encrypt((byte*)KEY); //comment this out to disable encryption #endif } // init Setup void setup() { setupReceive(); radio.Control(0xC040); // Adjust low battery voltage to 2.2V enableADC(false); // power down/disable the ADC //ACSR = (1<<ACD); // Disable the analog comparator //DIDR0 = 0x3F; // Disable digital input buffers on all ADC0-ADC5 pins. //ADCSRA &= ~ bit(ADEN); bitSet(PRR, PRADC); // Disable the ADC to save power PRR = bit(PRTIM1); // only keep timer 0 going analogReference(INTERNAL); // Set the aref to the internal 1.1V reference // Start up the library sensors.begin(); if (LEDpin) { activityLED(1,1000); // LED on } } // Loop void loop() { pinMode(ONE_WIRE_POWER, OUTPUT); // set power pin for DS18B20 to output digitalWrite(ONE_WIRE_POWER, HIGH); // turn DS18B20 sensor on delay(50); // Allow 50ms for the sensor to be ready sensors.requestTemperatures(); // Send the command to get temperatures int temp = sensors.getTempCByIndex(0)*100; // read sensor 1 //String temp2=(sensors.getTempCByIndex(1)*100); // read second sensor.. you may have multiple and count them upon startup but I only need one int supplyV = readVcc(); // Get supply voltage digitalWrite(ONE_WIRE_POWER, LOW); // turn Sensor off to save power pinMode(ONE_WIRE_POWER, INPUT); // set power pin for Sensor to input before sleeping, saves power // msg-Variable mit Daten zum Versand fuellen, die spaeter an das WebScript uebergeben werden strcpy(msg,"v="); itoa(supplyV,&msg[strlen(msg)],10); strcat(msg,"&t="); itoa(temp,&msg[strlen(msg)],10); // Send data via RF radio.Send(T_GATEWAYID, (uint8_t *)msg, strlen(msg), requestACK); radio.SendWait(2); //wait for RF to finish sending (2=standby mode) if (radio.ReceiveComplete()) { if (radio.CRCPass()) { //node ID of TX, extracted from RF datapacket. Not transmitted as part of structure // Buffer to store incoming data const char* inData; int i; for (byte i = 0; i < *radio.DataLen; i++) //can also use radio.GetDataLen() if you don't like pointers inData += radio.Data[i]; if (radio.ACKRequested()) { radio.SendACK(); } // Send received data to PI setupTransmit(); radio.Send(T_GATEWAYID, (uint8_t *)inData, strlen(inData), requestACK); radio.SendWait(2); //wait for RF to finish sending (2=standby mode, 3=power down) setupReceive(); if (LEDpin) { blink(LEDpin, 2); } } else { if (LEDpin) { activityLED(1); // LED on delay(1000); activityLED(0); // LED off } } } }
Binäre Sketchgröße: 7.646 Bytes (von einem Maximum von 8.192 Bytes)
..der funktioniert so aber noch nicht, es fehlt noch ein bisschen was damit nicht ständig was gesendet wird - aber soll nur zeigen dass das kein Problem darstellt.
Davon ab sehe ich das aber so oder so problematisch weil das Module Repeaten soll. Wenn er den Sensor ausliest und was Sendet kann er aber nix anderes empfangen. Es entsteht also ein heftiger Mehraufwand und Stromverbrauch für alles, nicht nur den Repeater. Also um was gehts dir? ein beschissenes Module einzusparen oder um Ausfallsicherheit?
-
Moin,
Lieferfähigkeit RFM12B-433-Sx Stand 07.01.2015
Der Hersteller HopeRF hat in Deutschland zwei autorisierte Distributoren.
Pollin GmbH in 85104 Pforring. Pollin hat gemäß telefonischer Auskunft das Produkt -diesen Typ- nicht mehr im Programm. Zum "warum" konnte ich keine Auskunft erhalten.
LYNX-DEVELOPMENT in Berlin. Die Module sind problemlos, auch in Stückzahlen, weiterhin lieferbar. Das Produkt ist NICHT abgekündigt. Auch wurde mir nochmals telefonisch bestätigt, dass eine Produkteinstellung bei HopeRF einen Vorlauf von 2 Jahren hat.
Wir können also die angedachte Sammelbestellung weiter im Auge behalten.:thumbs1: -
Sehr schön, dann bräuchte man nun noch einen guten Lieferanten für den Booster-Chip. Der LTC3525ESC6-3.3#TRMPBF ist in Deutschland z.Z. nur in kleinen Stückzahlen zu bekommen.
-
an den Booster-Chips hätte ich auch Interesse...
-
Sehr schön, dann bräuchte man nun noch einen guten Lieferanten für den Booster-Chip. Der LTC3525ESC6-3.3#TRMPBF ist in Deutschland z.Z. nur in kleinen Stückzahlen zu bekommen.Ok, bei farnell gibt es noch 140 Stück... (Stückpreis 3,18 € netto)
-
Naja vielleicht kann man ja auch gleich eine TinyR X/T v5 entwickeln, mit einem Step Up/Down
Ein Step-UP um die Batterien möglichst lange verwenden zu können -> 0.3V auf 3V3 hoch leveln
Ein Step-DOWN um mehr als 4 Batterien verwenden zu können -> 9V auf 3V3 runter leveln (o.ä.)Worauf geachtet werden sollte:
* Das der "buck/boost voltage regulator" möglichst effektiv ist, also mein persönliches Minimum wäre 90% (nicht "up to" sondern ab!).
* Output Current darf nicht zu niedrig sein (vermutlich nicht weniger als 100mA, aber genau weiß ich das nicht. Der LTC3525 gibt aber auch nur ca. 175mA bei einem Input von 3V aus)
* Die Bauteile dürfen nicht zu groß ausfallen.
* Möglichst geringer Eigenverbrauch. Optional abschaltbar durch den ATtiny, wenns eh kein Sinn mehr macht und der IC nicht unnötig Strom verheizt.Also der Step-DOWN müsste ja eigentlich nix mehr machen sobald die PowerSupply unter 5.5V fällt.
Als Step-UP könnte man ja ggf. den LTC3525ESC6-3.3#TRMPBF beibehalten, nur davor müsste man dann einen anderen schalten damit der LTC3525 maximal(!) 5.5V abkriegt.An dieser Stelle noch mal zur Erinnerung:
Der ATtiny Chip verträgt maximal 5,5V.
Das RFM12B Modul verträgt maximal 6V.
Der LTC3525 boost regulator chip verträgt maximal 5,5V.
Die anderen Bauteile (Kondensatoren und Spule) vertragen afaik maximal 6V.Mögliche Step-DOWN Kandidaten die ich jetzt auf die Schnelle gefunden habe:
LT3971
AP1150ADS54 (LDO)
MP2307
D24V3F3Der erste wäre ebenfalls von Linear und klingt imho verlockend.
Oder man sucht sich ein fertiges Tiny Module wie zB >> hier <<
-
Die eierlegende Wollmichsau ist offensichtlich folgendes Modul
Pololu einstellbarer Step-Up/Step-Down Spannungsregler S7V8A
Habe das Teilchen auf der Werkbank liegen - allerdings noch OV.
Falls ich bis zum Wochenende zum Testen komme, gebe ich hier Details zu Besten.
Besonders interessant sind natürlich der Ruhestrom (angeblich 300nA typ.) und die Effizienz (angeblich 90% typ.). Auch weiß ich noch nicht, welcher IC verbaut ist.
Grundsätzlich hat Pololu etliche kleine Platinen mit sehr interessanten boost- und buck-Konvertern. -
Problem mit dem S7V8A ist nur das die Batterien nicht leer gelutscht werden - unter 2.7V will der nicht mehr arbeiten:
ZitatThe input voltage, VIN, should be between 2.7 V and 11.8 V. Lower inputs can shut down the voltage regulator;
Inwiefern das allgemein relevant ist weiß ich aber nicht. Davon hab ich zu wenig Ahnung - hab nur mal gelesen das leere Batterien noch 1V hätten, aber keine Ahnung ob man davon dann noch weiter boosten kann
-
Der S7V8A hat 300 µA im Leerlauf lt. deinem Link. Der LT3971 zieht 2,8µA.
-
LT ist natürlich weitaus besser Großer Vorteil vom Ursprünglichen ist das der so richtig alles aus ollen Batterien rausgezogen hat
-
Zitat
The input voltage, VIN, should be between 2.7 V and 11.8 V. Lower inputs can shut down the voltage regulator;
Also gut - voll erwischt.
Die 2,7 Volt als untere Arbeitsspannung verbieten sich im 2xAA-Betrieb.
Grundsätzlich sind 1 Volt Zellenspannung bei Alkalibatterien durchaus ein Argument. Allerdings weiß ich auch nicht auswendig, ob die Zelle dann noch einen Booster bedienen kann. Muss ich klären.
Auch kritisch sind die niedrigen Zellenspannungen bezüglich "Auslaufsicherheit". Mir hat es schon Schaltungen mit Marken-Alkali-Batterien versaut, weil die Zellen einfach leergelutscht waren.
Und jetzt stelle man sich die "Pampe" in deiner Flüssig-Gummi-Ummantelung vor - lecker.
Also noch ein paar Details, die es zu klären gibt. -
Hinweise:
- Nach einigen Tests scheint der Empfänger unbedingt die NodeID 22 haben zu müssen damit es funktioniert! Wieso das so ist konnte ich bisher nicht herausfinden. Die Sender können aber nach belieben eine NodeID von 1 bis 30 haben (also insg. 29 Sender)
Nabend
Das scheint nicht (mehr) so zu sein.
-
Der S7V8A hat 300 µA im Leerlauf lt. deinem Link. Der LT3971 zieht 2,8µA.
Den Wert von 300 µA habe ich wohl gesehen. Der bezieht sich auf die ganze Schaltung und ist zudem noch abhängig von Eingangsspannung und eingestellter Ausgangspannung. Sicherlich ist auch die Impedanz der nachfolgenden Schaltung (AT-Tiny) ein Paramater.
Es bleibt daher abzuwarten, wie sich ein LT3971 in der kompletten Schaltung verhält.
Hat jemand im Forum die Ruhestromaufnahme der TinyTX4 mit Boosterbestückung gemessen. Ich finde hier im Forum keine Angabe dazu... -
Sollte es zu einer Neuauflage oder einer Weiterentwicklung der TinyTX4 Sensoren kommen wäre auch ich an einer Sammelbestellung interessiert.
Vielleicht sollte man, um die Nutzung von Akkus zu ermöglichen ohne diese zu schädigen bzw. zu zerstören, auch eine Schutzschaltung für Akkus in ein neues Layout integrieren. Meiner Recherche nach mögen es die NiMH Akkus gar nicht so gerne, wenn Sie unter 0,8 - 0,85V entladen werden.
Da ich mit der SMD Verarbeitung bisher keine Erfahrungen habe werde ich für meine TinyTX3 nun mal den Pololu U1V11F3 StepUp/StepDown Converter testen. Der hat zwar nur eine Effizienz von bis zu 90% und nicht von mindestens 90%, kostet aber nicht die Welt und ist mir einen Test wert. Batterien kann er auf bis zu 0.3V leer lutschen, wobei man die dann wohl besser in einem eigenen Gehäuse unterbringt.
-
Der U1V11F3 ist aber doch nur ein StepUP? :s
Ich glaub wir sollten mal ein Formular erstellen wo Interessierte sich für eine erneute Sammelbestellung verbindlich registrieren können - um eine Übersicht zu kriegen ob sich das überhaupt lohnt
-
Da sollte dann aber schonmal feststehen, in welchem Preisrahmen sich das ganze bewegen wir UND ob sich wieder jemand für die SMD Arbeiten findet.
Mit SMD Löten habe ich selbst noch keine Erfahrung und will mir da nicht die Hälfte der bauteile beim Zusammenbau abfackeln -.-Aber grundsätzlich habe ich da auch Interesse dran
-
Der U1V11F3 ist aber doch nur ein StepUP? :sZitatThis 3.3 V boost (step-up) voltage regulator generates higher output voltages from input voltages as low as 0.5 V, and it also automatically switches to a linear down-regulation mode when the input voltage exceeds the output. This makes it great for powering 3.3 V electronics projects from 1 to 3 NiMH, NiCd, or alkaline cells or from a single lithium-ion cell. Additionally, unlike most boost regulators, this unit offers a true shutdown option that turns off power to the load (with typical boost regulators, the input voltage will pass directly through to the output when they are disabled).
Das lese ich anders
-
wegen diesem Bild:
nehme ich an, dass die Effizienz bei niedrigen Strömen noch viel niedriger ist.
Die Sensoren brauchen IDLE 0,07mA und beim Senden so 4-5mA...
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!