Page 24 sur 25
Re: Carte universelle pour nœud MySensor
Publié : 27 mars 2017, 14:43
par pipersw
Il y a moyen que tu produises une version 3V 8MHz sur pile avec juste le SI7021 et le NRF24L01, sans pont diviseur pour relire la batterie (relecture via la mesure de la ref interne 1.1V) et sans I/O externe ni quartz.....pour consommer le moins possible sur pile et remplacer les sondes thermo Hygro en 433MHz....
Re: Carte universelle pour nœud MySensor
Publié : 27 mars 2017, 14:56
par Laregie
pipersw a écrit :Il y a moyen que tu produises une version 3V 8MHz sur pile avec juste le SI7021 et le NRF24L01, sans pont diviseur pour relire la batterie (relecture via la mesure de la ref interne 1.1V) et sans I/O externe ni quartz.....pour consommer le moins possible sur pile et remplacer les sondes thermo Hygro en 433MHz....
Sa doit être possible, il faut que je regarde cela en essayant de faire la carte la plus petite possible
Sur ma nouvelle carte, j'utilise le quartz interne à 8Mhz et je peux enlever tout ce que l'on n'a pas besoins pour faire un peu ce que tu demande avec un encombrement plus grand qu'une carte optimisée pour sonde de température et d’humidité.
Re: Carte universelle pour nœud MySensor
Publié : 27 mars 2017, 15:04
par pipersw
Laregie a écrit :pipersw a écrit :Il y a moyen que tu produises une version 3V 8MHz sur pile avec juste le SI7021 et le NRF24L01, sans pont diviseur pour relire la batterie (relecture via la mesure de la ref interne 1.1V) et sans I/O externe ni quartz.....pour consommer le moins possible sur pile et remplacer les sondes thermo Hygro en 433MHz....
Sa doit être possible, il faut que je regarde cela en essayant de faire la carte la plus petite possible
Sur ma nouvelle carte, j'utilise le quartz interne à 8Mhz et je peux enlever tout ce que l'on n'a pas besoins pour faire un peu ce que tu demande avec un encombrement plus grand qu'une carte optimisée pour sonde de température et d’humidité.
Super !! En repartant de ta UNIVMYS-PIL V2 ca fait une bonne base
Ah, oui, pour la version pile, c'est possible de mettre un MOS en protection d'inversion de polarité comme sur l'alim du RPI B+ :
https://learn.adafruit.com/introducing- ... wer-supply
Ca protège en cas d'inversion de polarité, et en passant on n'a pas la chute de tension de 0.6V comme avec une diode.
Un IRF ILRML2502 en NMOS ou un ILRML6401 en PMOS en SOT23 ca fait 80 mΩ at 2.7 V.
Re: Carte universelle pour nœud MySensor
Publié : 27 mars 2017, 15:08
par Laregie
pipersw a écrit :Laregie a écrit :pipersw a écrit :Il y a moyen que tu produises une version 3V 8MHz sur pile avec juste le SI7021 et le NRF24L01, sans pont diviseur pour relire la batterie (relecture via la mesure de la ref interne 1.1V) et sans I/O externe ni quartz.....pour consommer le moins possible sur pile et remplacer les sondes thermo Hygro en 433MHz....
Sa doit être possible, il faut que je regarde cela en essayant de faire la carte la plus petite possible
Sur ma nouvelle carte, j'utilise le quartz interne à 8Mhz et je peux enlever tout ce que l'on n'a pas besoins pour faire un peu ce que tu demande avec un encombrement plus grand qu'une carte optimisée pour sonde de température et d’humidité.
Super !! En repartant de ta UNIVMYS-PIL V2 ca fait une bonne base
Tu as un lien pour expliquer l'histoire de la relecture de la tension batterie via la mesure de la ref interne 1.1V.
Dans mon cas, je me suis basé sur ça:
https://www.mysensors.org/build/battery
Re: Carte universelle pour nœud MySensor
Publié : 27 mars 2017, 15:16
par pipersw
Je ne saus plus où j'ai trouvé le code pour la ref interne, je l'ai intégré dans un de mes capteurs :
Code : Tout sélectionner
/**
The MySensors Arduino library handles the wireless radio link and protocol
between your home built sensors/actuators and HA controller of choice.
The sensors forms a self healing radio network with optional repeaters. Each
repeater and gateway builds a routing tables in EEPROM which keeps track of the
network topology allowing messages to be routed to nodes.
Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
Copyright (C) 2013-2015 Sensnology AB
Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
Documentation: http://www.mysensors.org
Support Forum: http://forum.mysensors.org
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*******************************
Resources:
Wire.h (included with Arduino IDE)
SparkFunTMP102.h
Development environment specifics:
Arduino 1.0+
MySensors 2.0
DESCRIPTION
Capteur temperature et humidité sur pile
capteur I2C TMP102
Pro mini 8Mhz 3.3V, LDO et LED dessoudé, brown out modifié pour 1.8V
Alimentation par 2 piles AA
inversion polarité avec MOS (voir schema raspberry pi B+ sur Adafruit)
*/
// Enable debug prints to serial monitor
#define MY_DEBUG
// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69
#include <Wire.h>
#include <MySensors.h>
#include "SparkFunTMP102.h"
unsigned long SLEEP_TIME = 900000; // sleep time between reads (seconds * 1000 milliseconds)
#define RELEASE "1.0"
#define CHILD_ID_TEMP 0
#define CHILD_ID_MULTIMETER 1
int oldBatteryPcnt = 0;
float oldtemperature = 0;
TMP102 sensor0(0x48); // Initialize sensor at I2C address 0x48
// Initialize temperature message
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
MyMessage msgBatt(CHILD_ID_MULTIMETER, V_VOLTAGE);
void setup()
{
sensor0.begin(); // Join I2C bus
// Initialize sensor0 settings
// These settings are saved in the sensor, even if it loses power
// set the Conversion Rate (how quickly the sensor gets a new reading)
//0-3: 0:0.25Hz, 1:1Hz, 2:4Hz, 3:8Hz
sensor0.setConversionRate(2);
//set Extended Mode.
//0:12-bit Temperature(-55C to +128C) 1:13-bit Temperature(-55C to +150C)
sensor0.setExtendedMode(0);
}
void presentation()
{
// Send the sketch version information to the gateway and Controller
sendSketchInfo("TMP102 Temperature Sensor", "1.0");
//present sensor to controller
present(CHILD_ID_TEMP, S_TEMP);
present(CHILD_ID_MULTIMETER, S_MULTIMETER);
}
void loop()
{
#ifndef MY_OTA_FIRMWARE_FEATURE
clock_prescale_set(clock_div_8); // Switch to 1Mhz internal clock for the reminder of the sketch, save power.
#endif
//send a heartbeat to the controller (I'm alive !)
void sendHeartbeat();
// Turn sensor on to start temperature measurement.
// Current consumtion typically ~10uA.
sensor0.wakeup();
// read temperature data
float temperature = sensor0.readTempC();
// Place sensor in sleep mode to save power.
// Current consumtion typically <0.5uA.
sensor0.sleep();
// Measure battery voltage
long vcc = readVcc();
float batteryV = float(vcc)/1000.0f;
// Calculate percentage
vcc = vcc - 1900; // subtract 1.9V from vcc, as this is the lowest voltage we will operate at
long batteryPcnt = vcc / 14.0;
if (oldtemperature != temperature) {
oldtemperature = temperature;
send(msgTemp.set(temperature, 1));
send(msgBatt.set(batteryV, 3));
}
if (oldBatteryPcnt != batteryPcnt) {
// Power up radio after sleep
sendBatteryLevel(batteryPcnt);
oldBatteryPcnt = batteryPcnt;
}
sleep(SLEEP_TIME);
}
/*******************************************
*
* Internal battery ADC measuring
*
*******************************************/
long readVcc() {
// 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__)
ADcdMUX = _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; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
return result; // Vcc in millivolts
}
C'est la fonction ReadVcc.
Je crois qu'on retrouve cette fonction dans le code de ESPEASY. Ca marche très bien.
Edit : je met à jour le code ce soir : il faut désactiver le ADC avant le sleep, et le réactiver au réveil. Comme cela on gagne en conso
Re: Carte universelle pour nœud MySensor
Publié : 27 mars 2017, 15:22
par Laregie
pipersw a écrit :Je ne saus plus où j'ai trouvé le code pour la ref interne, je l'ai intégré dans un de mes capteurs :
Code : Tout sélectionner
/**
The MySensors Arduino library handles the wireless radio link and protocol
between your home built sensors/actuators and HA controller of choice.
The sensors forms a self healing radio network with optional repeaters. Each
repeater and gateway builds a routing tables in EEPROM which keeps track of the
network topology allowing messages to be routed to nodes.
Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
Copyright (C) 2013-2015 Sensnology AB
Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
Documentation: http://www.mysensors.org
Support Forum: http://forum.mysensors.org
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*******************************
Resources:
Wire.h (included with Arduino IDE)
SparkFunTMP102.h
Development environment specifics:
Arduino 1.0+
MySensors 2.0
DESCRIPTION
Capteur temperature et humidité sur pile
capteur I2C TMP102
Pro mini 8Mhz 3.3V, LDO et LED dessoudé, brown out modifié pour 1.8V
Alimentation par 2 piles AA
inversion polarité avec MOS (voir schema raspberry pi B+ sur Adafruit)
*/
// Enable debug prints to serial monitor
#define MY_DEBUG
// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69
#include <Wire.h>
#include <MySensors.h>
#include "SparkFunTMP102.h"
unsigned long SLEEP_TIME = 900000; // sleep time between reads (seconds * 1000 milliseconds)
#define RELEASE "1.0"
#define CHILD_ID_TEMP 0
#define CHILD_ID_MULTIMETER 1
int oldBatteryPcnt = 0;
float oldtemperature = 0;
TMP102 sensor0(0x48); // Initialize sensor at I2C address 0x48
// Initialize temperature message
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
MyMessage msgBatt(CHILD_ID_MULTIMETER, V_VOLTAGE);
void setup()
{
sensor0.begin(); // Join I2C bus
// Initialize sensor0 settings
// These settings are saved in the sensor, even if it loses power
// set the Conversion Rate (how quickly the sensor gets a new reading)
//0-3: 0:0.25Hz, 1:1Hz, 2:4Hz, 3:8Hz
sensor0.setConversionRate(2);
//set Extended Mode.
//0:12-bit Temperature(-55C to +128C) 1:13-bit Temperature(-55C to +150C)
sensor0.setExtendedMode(0);
}
void presentation()
{
// Send the sketch version information to the gateway and Controller
sendSketchInfo("TMP102 Temperature Sensor", "1.0");
//present sensor to controller
present(CHILD_ID_TEMP, S_TEMP);
present(CHILD_ID_MULTIMETER, S_MULTIMETER);
}
void loop()
{
#ifndef MY_OTA_FIRMWARE_FEATURE
clock_prescale_set(clock_div_8); // Switch to 1Mhz internal clock for the reminder of the sketch, save power.
#endif
//send a heartbeat to the controller (I'm alive !)
void sendHeartbeat();
// Turn sensor on to start temperature measurement.
// Current consumtion typically ~10uA.
sensor0.wakeup();
// read temperature data
float temperature = sensor0.readTempC();
// Place sensor in sleep mode to save power.
// Current consumtion typically <0.5uA.
sensor0.sleep();
// Measure battery voltage
long vcc = readVcc();
float batteryV = float(vcc)/1000.0f;
// Calculate percentage
vcc = vcc - 1900; // subtract 1.9V from vcc, as this is the lowest voltage we will operate at
long batteryPcnt = vcc / 14.0;
if (oldtemperature != temperature) {
oldtemperature = temperature;
send(msgTemp.set(temperature, 1));
send(msgBatt.set(batteryV, 3));
}
if (oldBatteryPcnt != batteryPcnt) {
// Power up radio after sleep
sendBatteryLevel(batteryPcnt);
oldBatteryPcnt = batteryPcnt;
}
sleep(SLEEP_TIME);
}
/*******************************************
*
* Internal battery ADC measuring
*
*******************************************/
long readVcc() {
// 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__)
ADcdMUX = _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; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
return result; // Vcc in millivolts
}
C'est la fonction ReadVcc.
Je crois qu'on retrouve cette fonction dans le code de ESPEASY. Ca marche très bien.
Ok merci, je vais regarder cela de plus près ainsi que la protection d'inversion de polarité.
Re: Carte universelle pour nœud MySensor
Publié : 27 mars 2017, 16:40
par pipersw
Au cas où: dernier code à jour avec mise en sommeil de l'ADC
Code : Tout sélectionner
/**
The MySensors Arduino library handles the wireless radio link and protocol
between your home built sensors/actuators and HA controller of choice.
The sensors forms a self healing radio network with optional repeaters. Each
repeater and gateway builds a routing tables in EEPROM which keeps track of the
network topology allowing messages to be routed to nodes.
Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
Copyright (C) 2013-2015 Sensnology AB
Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
Documentation: http://www.mysensors.org
Support Forum: http://forum.mysensors.org
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*******************************
Resources:
Wire.h (included with Arduino IDE)
SparkFunTMP102.h
Development environment specifics:
Arduino 1.0+
MySensors 2.0
DESCRIPTION
Capteur temperature sur pile
capteur I2C TMP102
Pro mini 8Mhz 3.3V modifié en 1MHz interne, LDO et LED dessoudé
Alimentation par 2 piles AA
inversion polarité avec MOS (voir schema raspberry pi B+ sur Adafruit)
Source pour descendre l'arduino a 1.8V et 1MHz en interne : https://forum.pimatic.org/topic/383/tips-battery-powered-sensors/2
Ajouter dans Arduino\hardware\arduino\avr\boards.txt:
## Arduino Pro or Pro Mini (1.8V, 1MHz) w/ ATmega328
## --------------------------------------------------
pro.menu.cpu.1MHzatmega328=Optiboot internal 1MHz noBOD 9600baud
pro.menu.cpu.1MHzatmega328.upload.maximum_size=32256
pro.menu.cpu.1MHzatmega328.upload.maximum_data_size=2048
pro.menu.cpu.1MHzatmega328.upload.speed=9600
pro.menu.cpu.1MHzatmega328.bootloader.low_fuses=0x62
pro.menu.cpu.1MHzatmega328.bootloader.high_fuses=0xde
pro.menu.cpu.1MHzatmega328.bootloader.extended_fuses=0x07
pro.menu.cpu.1MHzatmega328.bootloader.file=optiboot/optiboot_atmega328_pro_1MHz.hex
pro.menu.cpu.1MHzatmega328.build.mcu=atmega328p
pro.menu.cpu.1MHzatmega328.build.f_cpu=1000000L
copier le contenu suivant dans un fichier optiboot_atmega328_pro_1MHz.hex sous
/bootloaders/optiboot/:
In this file add these hex codes and save it:
:107E0000112484B714BE81FFE6D085E08093810001
:107E100082E08093C00088E18093C10086E0809377
:107E2000C2008CE08093C4008EE0BFD0259A86E02B
:107E300023EC3FEF91E0309385002093840096BBC4
:107E4000B09BFECF1D9AA8958150A9F7EE24FF2480
:107E5000AA24A394B5E0CB2EA1E1BA2EF3E0DF2E45
:107E600098D0813461F495D0082FA5D0023829F13B
:107E7000013811F485E001C083E083D07FC08234F3
:107E800011F484E103C0853419F485E09CD076C0F8
:107E9000853579F47ED0E82EFF247BD0082F10E0C2
:107EA000102F00270E291F29000F111F84D07801E1
:107EB00065C0863521F484E086D080E0DECF84364C
:107EC00009F040C066D065D0082F63D080E0E81686
:107ED00080E7F80618F4F701D7BEE895C0E0D1E0D6
:107EE00058D089930C17E1F7F0E0EF16F0E7FF06A2
:107EF00018F0F701D7BEE8955ED007B600FCFDCFBD
:107F0000A701A0E0B1E02C9130E011968C9111977F
:107F100090E0982F8827822B932B1296FA010C0160
:107F2000A7BEE89511244E5F5F4FF1E0A038BF0770
:107F300051F7F701C7BEE89507B600FCFDCFB7BE05
:107F4000E8951CC0843761F424D023D0082F21D0B9
:107F500032D0F70185917F0114D00150D1F70EC0C6
:107F6000853739F428D08EE10CD085E90AD08FE02E
:107F700084CF813511F488E018D01DD080E101D084
:107F80006FCF982F8091C00085FFFCCF9093C600E3
:107F900008958091C00087FFFCCF8091C00084FDD0
:107FA00001C0A8958091C6000895E0E6F0E098E150
:107FB000908380830895EDDF803219F088E0F5DF4B
:107FC000FFCF84E1DECF1F93182FE3DF1150E9F7D5
:107FD000F2DF1F910895282E80E0E7DFEE27FF27CC
:027FE000099402
:027FFE0000057C
:0400000300007E007B
:00000001FF
pour programmer le bootloader, telecharger le sketch ArduinoISP sur un Uno, et programmer le mini pro
connecté au Uno en SPI en choisissant le programmateur Arduino as ISP
*/
// Enable debug prints to serial monitor
#define MY_DEBUG
// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69
#include <Wire.h>
#include <MySensors.h>
#include "SparkFunTMP102.h"
//#include <avr/power.h>
unsigned long SLEEP_TIME = 900000; // sleep time between reads (seconds * 1000 milliseconds)
#define RELEASE "1.0"
#define CHILD_ID_TEMP 0
#define CHILD_ID_MULTIMETER 1
int oldBatteryPcnt = 0;
float oldtemperature = 0;
TMP102 sensor0(0x48); // Initialize sensor at I2C address 0x48
// Initialize temperature message
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
MyMessage msgBatt(CHILD_ID_MULTIMETER, V_VOLTAGE);
void setup()
{
sensor0.begin(); // Join I2C bus
// Initialize sensor0 settings
// These settings are saved in the sensor, even if it loses power
// set the Conversion Rate (how quickly the sensor gets a new reading)
//0-3: 0:0.25Hz, 1:1Hz, 2:4Hz, 3:8Hz
sensor0.setConversionRate(2);
//set Extended Mode.
//0:12-bit Temperature(-55C to +128C) 1:13-bit Temperature(-55C to +150C)
sensor0.setExtendedMode(0);
}
void presentation()
{
// Send the sketch version information to the gateway and Controller
sendSketchInfo("TMP102 Temperature Sensor", "1.0");
//present sensor to controller
present(CHILD_ID_TEMP, S_TEMP);
present(CHILD_ID_MULTIMETER, S_MULTIMETER);
}
void loop()
{
//send a heartbeat to the controller (I'm alive !)
void sendHeartbeat();
// Turn sensor on to start temperature measurement.
// Current consumtion typically ~10uA.
sensor0.wakeup();
// read temperature data
float temperature = sensor0.readTempC();
// Place sensor in sleep mode to save power.
// Current consumtion typically <0.5uA.
sensor0.sleep();
// Measure battery voltage
float batteryV = readVcc();
//convert to percent
int MIN_V = 1800; //minimum battery voltage in mV
int MAX_V = 3300; //maximum batterie voltage in mV
int batteryPcnt = min(map(batteryV, MIN_V, MAX_V, 0, 100), 100);
if (oldtemperature != temperature) {
oldtemperature = temperature;
send(msgTemp.set(temperature, 1));
send(msgBatt.set(batteryV, 3));
}
if (oldBatteryPcnt != batteryPcnt) {
// Power up radio after sleep
sendBatteryLevel(batteryPcnt);
oldBatteryPcnt = batteryPcnt;
}
//begin to sleeping cpu:
ADCSRA &= ~(1 << ADEN); // adc off
// go to sleep cpu
sleep(SLEEP_TIME);
//wake up cpu:
ADCSRA |= (1 << ADEN); // adc on
}
/*******************************************
Internal battery ADC measuring
*******************************************/
long readVcc() {
// 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__)
ADcdMUX = _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; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
return result; // Vcc in millivolts
}
Edit 19/04/2017: mise à jour du code
Re: Carte universelle pour nœud MySensor
Publié : 27 mars 2017, 21:19
par rol-rider
Je crois que pour la surveillance des piles/batterie, c'était ça.
viewtopic.php?f=35&t=2051
Avec deux solutions, celle par pont résistif et l'autre.
Envoyé de mon Nexus 7 en utilisant Tapatalk
Re: Carte universelle pour nœud MySensor
Publié : 19 avr. 2017, 12:29
par pipersw
Laregie a écrit :pipersw a écrit :Il y a moyen que tu produises une version 3V 8MHz sur pile avec juste le SI7021 et le NRF24L01, sans pont diviseur pour relire la batterie (relecture via la mesure de la ref interne 1.1V) et sans I/O externe ni quartz.....pour consommer le moins possible sur pile et remplacer les sondes thermo Hygro en 433MHz....
Sa doit être possible, il faut que je regarde cela en essayant de faire la carte la plus petite possible
Sur ma nouvelle carte, j'utilise le quartz interne à 8Mhz et je peux enlever tout ce que l'on n'a pas besoins pour faire un peu ce que tu demande avec un encombrement plus grand qu'une carte optimisée pour sonde de température et d’humidité.
Laregie, tu as pu regarder un peu ?
Tu fais le PCB sous Kicad ou sous une ancienne version de EagleCad (maintenant payante depuis le rachat) ?
Re: Carte universelle pour nœud MySensor
Publié : 20 avr. 2017, 00:18
par Laregie
pipersw a écrit :Laregie a écrit :pipersw a écrit :Il y a moyen que tu produises une version 3V 8MHz sur pile avec juste le SI7021 et le NRF24L01, sans pont diviseur pour relire la batterie (relecture via la mesure de la ref interne 1.1V) et sans I/O externe ni quartz.....pour consommer le moins possible sur pile et remplacer les sondes thermo Hygro en 433MHz....
Sa doit être possible, il faut que je regarde cela en essayant de faire la carte la plus petite possible
Sur ma nouvelle carte, j'utilise le quartz interne à 8Mhz et je peux enlever tout ce que l'on n'a pas besoins pour faire un peu ce que tu demande avec un encombrement plus grand qu'une carte optimisée pour sonde de température et d’humidité.
Laregie, tu as pu regarder un peu ?
Tu fais le PCB sous Kicad ou sous une ancienne version de EagleCad (maintenant payante depuis le rachat) ?
Je n'ai pas trop eu le temps pour l'instant.
Dès que j'ai du temps (et c'est rare en ce moment
) j'essaie de terminer mon Lametric DIY
J'utilise l'ancienne version de Kicad (celle avant la V4)
Re: Carte universelle pour nœud MySensor
Publié : 03 mai 2017, 17:22
par pipersw
Je confirme que la mesure de la tension via la référence interne (sans résistance externe) fonctionne bien
c'est juste un peu moins précis mais ça consomme rien. Du coup j'ai découvert que mon ftdi avec choix de la tension 3.3v 5v delivre tout le temps 5v
Re: Carte universelle pour nœud MySensor
Publié : 09 mai 2017, 13:47
par vandenbusschel
Bonjour
Est-il encore possible d'acheter des cartes 3v 8mhz sur pile ?
Ce serait pour une livraison vers la Belgique.
Merci
Lionel
Re: Carte universelle pour nœud MySensor
Publié : 09 mai 2017, 19:55
par Laregie
vandenbusschel a écrit : ↑09 mai 2017, 13:47
Bonjour
Est-il encore possible d'acheter des cartes 3v 8mhz sur pile ?
Ce serait pour une livraison vers la Belgique.
Merci
Lionel
Oui,
Je t'ai envoyé un mail
Re: Carte universelle pour nœud MySensor
Publié : 12 août 2017, 12:53
par YannickF
Salut
J'ai créé une carte plus ou moins universelle. Elle fonctionne avec 2 piles AA, oscillateur interne, la lecture de la tension se fait sans pont diviseur.
Je n'ai pas forcément cherché à miniaturiser au maximum.
https://oshpark.com/shared_projects/R4BmslTZ
Il y a juste un petit défaut pour les mises à jour du firmware via le port USB/Série : il manque un condensateur le long de la ligne Reset, et ça bloque le transfert. Il faut donc déconnecter la ligne RESET à la main dans la seconde qui suit le "téléversement".
Je vais mettre en ligne une version corrigée (celle là s'appelle corrigée car il y avait une erreur de sérigraphie)
Re: Carte universelle pour nœud MySensor
Publié : 13 oct. 2017, 01:06
par ludoarchi
salut
j ai malheureusement inversé les branchements alim sur ma carte UNIVMYS-5V V2
qui sent maintenant le grille !
est ce que je peux la recuperer en changeant 2 ou 3 composant?
@Laregie : est ce qu une version V3 et prevu en 5V ?
Merci
Re: Carte universelle pour nœud MySensor
Publié : 14 oct. 2017, 17:07
par Laregie
ludoarchi a écrit : ↑13 oct. 2017, 01:06
salut
j ai malheureusement inversé les branchements alim sur ma carte UNIVMYS-5V V2
qui sent maintenant le grille !
est ce que je peux la recuperer en changeant 2 ou 3 composant?
@Laregie : est ce qu une version V3 et prevu en 5V ?
Merci
La carte doit être récupérable.
Dis moi par où tu l'as alimenté ?
Pourquoi pas une version
UNIVMYS-5V V3
Ça serait intéressant de savoir quelles améliorations à apporter par rapport à la V2.
Re: Carte universelle pour nœud MySensor
Publié : 17 oct. 2017, 15:06
par ludoarchi
Par les bornes oVdc et Vin ...
Ce serait peu etre une amelioration pour une V3 la protection d inversion d alimentation !
Ainsi qu un capteur humidité température intégré. ..
Merci
Re: Carte universelle pour nœud MySensor
Publié : 21 oct. 2017, 16:28
par Laregie
ludoarchi a écrit : ↑17 oct. 2017, 15:06
Par les bornes oVdc et Vin ...
Ce serait peu etre une amelioration pour une V3 la protection d inversion d alimentation !
Ainsi qu un capteur humidité température intégré. ..
Merci
Ça doit être le régulateur de tension qui à cramé.
Je vais regarder pour faire une UNIVMYS-5V V3 avec tes remarques.
Re: Carte universelle pour nœud MySensor
Publié : 23 oct. 2017, 14:30
par ludoarchi
Re: Carte universelle pour nœud MySensor
Publié : 23 oct. 2017, 14:30
par ludoarchi