question à propos du bod
-
Je viens de regarder mon code je mets bien en input no pull-up mais je viens de voir que je fais une spéciale dont j'avais oublié l'existence aussi, regardes tu vas trouver direct
* ====================================================================== Function: disableCPUDevices Purpose : disable Atmel integrated devices (for low power) Input : - Output : - Comments: - ====================================================================== */ void ULPNode::disableCPUDevices(void) { // Disable ADC ADCSRA &= ~_BV(ADEN) ; // disable Analog comparator ACSR |= _BV(ACD); // Disable digital input buffers on all ADC0-ADC5 pins DIDR0 = 0x3F; // set I2C pin as input no pull up // this prevent current draw on I2C pins that // completly destroy our low power mode //Disable I2C interface so we can control the SDA and SCL pins directly TWCR &= ~(_BV(TWEN)); // disable I2C module this allow us to control // SCA/SCL pins and reinitialize the I2C bus at wake up TWCR = 0; pinMode(SDA, INPUT); pinMode(SCL, INPUT); digitalWrite(SDA, LOW); digitalWrite(SCL, LOW); power_all_disable(); }
-
J'imagine que tu veux aussi le WakeUp ;-). t’inquiète pas pour les traces de debug restantes, c'est parce que ce #!#!" de module th02 n'est pas compatible I2C. Tant qu'il est tout seul sur le bus tout va bien, dès qu'il est plus tout seul sur le bus I2C (dans mon cas le capteur de lumière) bien çà mettait la zone, tout plantait !!!! Et crois moi que j'ai mis un moment à comprendre que çà venait pas de mon code
Résultat : changement de capteur, exit le TH02 !!/* ====================================================================== Function: readTLS Purpose : Input : - Output : - Comments: - ====================================================================== */ uint16_t ULPNode::readTLS() { unsigned int ms, data0, data1; // Enable I2C (just in case) power_twi_enable(); // Init I2C Bus // not needed, done in _tsl.begin // Wire.begin(); //i2cScan(); DebugF("Reading TSL2561..."); _tsl.begin(); DebugF(".0."); DebugFlush(); // Set I2C 100KHz for 4MHz speed //TWBR = ((4000000L / 100000L) - 16) / 2; // The light sensor has a default integration time of 402ms, // and a default gain of low (1X). // If you would like to change either of these, you can // do so using the setTiming() command. // If gain = false (0), device is set to low gain (1X) // If gain = high (1), device is set to high gain (16X) // If time = 0, integration will be 13.7ms // If time = 1, integration will be 101ms // If time = 2, integration will be 402ms // If time = 3, use manual start / stop to perform your own integration // setTiming() will set the third parameter (ms) to the // requested integration time in ms (this will be useful later): // Gain=0, timing=1 _tsl.setTiming( 0, 1, ms); DebugF(".1."); DebugFlush(); // To start taking measurements, power up the sensor: if (!_tsl.setPowerUp()) { DebugF("Error="); Debug(_tsl.getError()); _status &= ~RF_NODE_STATE_TSL2561 ; return 0; } DebugF(".2.");DebugFlush(); // We detected the module _status |= RF_NODE_STATE_TSL2561 ; // Wait to settle DebugFlush(); sleepQuickWake( WDTO_120MS ); DebugF(".3.");DebugFlush(); // Getting data ok ? if (!_tsl.getData(data0,data1)) { DebugF("Error="); Debug(_tsl.getError()); return 0; } DebugF(".4.");DebugFlush(); double lux; // Resulting lux value boolean good; // True if neither sensor is saturated // Perform lux calculation: if (!_tsl.getLux(0,ms,data0,data1,lux)) { DebugF("getLux BAD!"); DebugF(" data0: "); Debug(data0); DebugF(" data1: "); Debug(data1); return 0; } else { // Convert to integer value, keep one digit _lux = (int16_t) lux * 10; // Print out the results: //DebugF(" lux: "); //Debugln(lux); } DebugF(".5.");DebugFlush(); // Set it to power down _tsl.setPowerDown(); // release I2C bus //Wire.endTransmission(true); //I2c.end(); DebuglnF("OK!"); DebugFlush(); return _lux; }
-
merci pour l'exclu c'est coool!
j'ai bien vu ton astuce (registres et pinmode), du coup jviens d'essayer vite fait mais ça ne m'a pas amélioré mon souci. mais c'est bizarre, pour debug, j'ai ajouté le i2cscan après le wakeup mosfet et il me trouve bien l'adresse du sensor. mais la lecture des lux me donne 0. je reboot et tout rentre dans l'ordre jsqu'au sleep. jregarde la datasheet du bh et jfais un ptit clean dans mon code pour voir si jfais pas une betise. je te redis ça.
bien vu sinon l'astuce! c'est du fin du fin tout ça! -
J'imagine que tu refais bien une init complète de ton sensor au wake up ?
-
oui, pour être sûr je l'ai mis juste avant la lecture.
jclean ça et jte montre si tu veux mais c'est simple pour l'instant. -
peut être une particularité de ton capteur, j'me suis bien fait avoir avec le TH02 aussi
-
oui c'est ce que j'envisage. faut que je test avec un autre capteur aussi. bmp180 par exemple, tu as déjà essayé en ulpnode?
-
Heu non, je crois que j'en ai un mais jamais testé !!! bonne idée dès que je m'y remets
tu as pris quelle librairie, il doit en avoir 15 tonnes comme d'hab ? -
j'utilise celle que Mysensors utilise de base dans leur sketch (Adafruit_BMP085 compatible avec le 180). en checkant jviens de voir qu'ils en ont une autre faite par sparkfun mais j'ai pas test.
https://github.com/mysensors/Arduino/tree/master/libraries -
Ah perso jamais de mauvaises surprises avec les lib de Sparkfun, et c'est assez rare pour le souligner
-
c'est vrai qu'ils sont pas mal chez sparkfun, ça fait un bout de temps qu'ils sont présents en plus.
sinon, après un ptit clean , j'arrive à lire mon sensor après power up mosfet. ouf enfin! bon maintenant jvais pouvoir checker les consos. voir si rien n'as bougé!
en tout cas merci, car je pense que c'est ton astuce plus le clean qui m'ont dbloqué.en fouinant pour trouver mon souci, je suis tombé sur cette routine pour clean le i2c. je m'en sers pas spécialement mais peut être que ça pourrait te servir un jour http://www.forward.com.au/pfod/ArduinoProgramming/I2C_ClearBus/index.html
-
au fait je t'ai pas demandé, pour ton capteur de temp/hum tu va prendre quoi comme ref? pour ma part je viens de me commander qq Si7021 sur ali pour voir. en espérant qu'ils soient bien, quasi le mm prix que les dht22, y a pas photo. c'est celui que mysensors mettent sur leur sensebender...wait&see
-
Arrfffff t'aurais du me demander, j'ai ai fait 5 grove SI7021 qui trainent au fond d'une boite
Combien et quelle réf chez ALI ? juste curieux car les prix ont doublés en qq mois pour ces trucs
-
N'y vois pas une attaque personnelle, mais perso je ne comprends cet engouement pour le NRF24L01, c'est quand même super limité (et je pèse mes mots) en portée à coté du RFM69
-
ah ben zut c'est pas grave quoique faut voir tu en vendrais un? tu en penses quoi de ces capteurs? tu les as test avec ton ulp? 2.90€ fdpi sur ali.
-
Non, non, t'inquietes, je suis completement d'accord avec toi pour le nrf vs rfm. le nrf c'est du low cost 2.4ghz bourré de fake. et petite portée comparé au rfm qui en plus embarque des fonctions interessantes.
Le truc j'ai l'impression c'est que pour beaucoup le diy ça veut dire lowcost avec pleins de fils (quelle horreur, lol). pour ma part je suis pas à 2-3 euros près si c'est plus pérein et performant. et j'aime pas la filasse dans tous les sens donc je préfère partir from scratch si c'est avantageux.
pour l'instant j'ai pas trop eu le temps de tester comme je veux ce rfm. la lib mysensors n'est compatible avec que depuis peu. et c'est la branche de dev. ça me dérange pas trop encore, mais à vrai dire vu que ça fait pas longtemps que je me lance dans la domo, j'ai pas grand chose en prod. jsuis dans mes design et liste des besoins. mais c'est sûr que pour moi ce sera rfm. c'est vrai que beaucoup sont en nrf et jpense on peut toujours leur dire rfm ils diront que c'est trop cher. en plus pas d bol s'ils en ont plein en prod!
Oulà, j'espère qu'il va pas y avoir de fervents défenseurs du nrf et fil volant sinon jvais me faire lincher, lol!!!
-
ah ah ah ils sont fort ces chinois, à ce prix là c'est pas du SI7021 c'est une certitude, d'ailleurs j'aimerais bien connaitre les différences entre le SI7021, HTU21 et le SHT21 au niveau caractéristiques.
Oui l'ULPNode fonctionne avec un SI7021 acheté chez Digikey (genre 5€ juste le capteur), mais je ne prends pas le risque de tester avec des Fakes potentiels, j'ai déjà donné avec les faux FTDI !!!!Je veux bien t'en vendre une mais je peux pas m'aligner avec les chinois lol, je peux te la faire au prix que çà m'a coûté + un timbre
Les infos que je viens de mettre rien pour toi sur mon git avec des photos
-
tu as sans doute raison. c'est vrai qu'ils sont forts. mais en plus des fois y a de la qualité en travers. pour le si7021 c'est vrai qu'à ce prix là... c'est pareil j'ai reçu la semaine dernière des acs712 5A (acheté sur ali). j'ai pas eu le temps de test. mais ça fait pas longtemps que j'ai découvert ça ali en fait. avant j'commandais toujours chez farnell,rs et les autres.
jpourrai m'amuser à comparer avec les fake du coup oui ça m'interesse une breadboard. pour le prix jme doute bien, t'inquietes. en plus c'est oshpark. et je l'aurai avant comme ça!
jviens d'aller voir ton git. merci.
c'est vraiment bien. pas bête l'idée du jumper pour les pullups. -
Hello, je t'ai répondu par chat privé pour le capteur.
-
salut,
une image valant mieux qu'un paragraphe d'explications....pourrait-tu me dire si j'ai cablé mon superviseur correctement stp??? tu me diras je le saurai quand j'aurai reçu les ncp, j'avais fait un mauvais choix avec les lm8364, ça fonctionnait pas comme je le voulais. le ncp a un schema interne bien mieux fait !
en attendant mes ncp pour test ce montage, je vais regarder ce week end comment fonctionne l'ota et la signature.. je te fera un retour si cela t'interesse.