Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Announcements
  3. Sensebender Micro

Sensebender Micro

Scheduled Pinned Locked Moved Announcements
584 Posts 84 Posters 401.8k Views 35 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • tbowmoT Offline
    tbowmoT Offline
    tbowmo
    Admin
    wrote on last edited by
    #333

    @petoulachi said:

    But I don't really understand this ; highfreq is initialized to true in the declaration, and never again. So, does this clock_prescale_set is call only once, meangin that the sensor will run at 1Mhz all the time ?
    It is the 5 first mesure that are running at normal speed, and then the sensor goes into a "battery efficient" mode ?
    Why waiting for 5 mesure to do so, and not doing it at startup ?

    Thanks for your explanation !

    It's waiting with switching to lower frequency, because it is dumping debug information to the serial port. And when you switch to 1Mhz, the baudrate is "screwed".

    When that's said, my opinion is that there is not much power to save, with switching to 1Mhz. This is because the MCU is sleeping most of the time, with the RC oscillator switched off. I am thinking that the freq. scaling should be removed in the comming releases

    1 Reply Last reply
    0
    • petoulachiP Offline
      petoulachiP Offline
      petoulachi
      wrote on last edited by
      #334

      Oooh so I guess that also explain why I have strange output on the serial using the default sketch ?

      Well, I'll start without touching frequency and see how it behave in the next month. This is the sketch I use (not tested yet !). Sleeping all the time, awake but interrupt. When awake, send the Battery % if different from last mesure.

      /**
       * 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.
       *
       *******************************
       *
       * REVISION HISTORY
       * Version 1.0 - Henrik Ekblad
       * 
       * DESCRIPTION
       * Default sensor sketch for Sensebender Micro module
       * Act as a temperature / humidity sensor by default.
       *
       * If A0 is held low while powering on, it will enter testmode, which verifies all on-board peripherals
       *  
       * Battery voltage is as battery percentage (Internal message), and optionally as a sensor value (See defines below)
       *
       */
      
      
      #include <MySensor.h>
      #include <Wire.h>
      #include <SPI.h>
      #include "utility/SPIFlash.h"
      #include <EEPROM.h>  
      #include <avr/power.h>
      
      
      #define RELEASE "1.0"
      
      // Child sensor ID's
      
      #define DIGITAL_INPUT_SENSOR 3   // The digital input you attached your motion sensor.  (Only 2 and 3 generates interrupt!)
      #define INTERRUPT DIGITAL_INPUT_SENSOR-2 // Usually the interrupt = pin -2 (on uno/nano anyway)
      #define CHILD_ID_DOOR 1   // Id of the sensor child
      
      
      MySensor gw;
      
      // Sensor messages
      MyMessage msgDoor(CHILD_ID_DOOR, V_TRIPPED);
      
      // Global settings
      int measureCount = 0;
      int sendBattery = 0;
      boolean highfreq = true;
      
      // Storage of old measurements
      long lastBattery = -100;
      boolean oldDoorValue;
      
      /****************************************************
       *
       * Setup code 
       *
       ****************************************************/
      void setup() {
        Serial.begin(115200);
        Serial.print(F("Sensebender Micro FW "));
        Serial.print(RELEASE);
        Serial.flush();
        
        gw.begin();
      
        Serial.flush();
        Serial.println(F(" - Online!"));
        gw.sendSketchInfo("Battery Door", RELEASE);
      
        // sets the motion sensor digital pin as input
        pinMode(DIGITAL_INPUT_SENSOR, INPUT);     
        // Activate internal pull-ups
        digitalWrite(DIGITAL_INPUT_SENSOR, HIGH);
        
         // Register all sensors to gw (they will be created as child devices)
        gw.present(CHILD_ID_DOOR, S_DOOR);
      }
      
      
      /***********************************************
       *
       *  Main loop function
       *
       ***********************************************/
      void loop() {
        gw.process();
      
        sendBattLevel(false); 
        door(false);
        
        gw.sleep(INTERRUPT, CHANGE, 0);
      }
      
      //  Check if digital input has changed and send in new value
      void door(bool force) 
      {
        // Short delay to allow buttons to properly settle
        sensor_node.sleep(5);
        
        bool tx = force;
        
        boolean tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH; 
        
        if (tripped != oldDoorValue) 
        {
          tx = true;
          oldDoorValue = tripped;
        }
        if (tx)
        {
           // Send in the new value
           gw.send(msgDoor.set(tripped ?  1 : 0));  // Send tripped value to gw 
        }
      } 
      
      
      
      /********************************************
       *
       * Sends battery information (battery percentage)
       *
       * Parameters
       * - force : Forces transmission of a value
       *
       *******************************************/
      void sendBattLevel(bool force)
      {
        if (force) lastBattery = -1;
        
        long vcc = readVcc();
        
        if (vcc != lastBattery) 
        {
          lastBattery = vcc;
      
          // Calculate percentage
          vcc = vcc - 1900; // subtract 1.9V from vcc, as this is the lowest voltage we will operate at
          long percent = vcc / 14.0;
          gw.sendBatteryLevel(percent);
        }
      }
      
      /*******************************************
       *
       * 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
      }
      
      

      BTW, what is the F() function ? instead of Serial.print("Sensebender Micro FW "); why using Serial.print(F("Sensebender Micro FW ")); ?

      Thanks !

      1 Reply Last reply
      0
      • petoulachiP Offline
        petoulachiP Offline
        petoulachi
        wrote on last edited by
        #335

        Started to solder my 6 sensebender. I've noticed that if I set it to 1Mhz directly, the sensor cannot register itself on the gateway (but unfortunately I dont know why because there's no serial). Putting it at 8Mhz, being detected by the GW with an ID, and I can set it back to 1mhz. Weird.

        1 Reply Last reply
        0
        • petoulachiP Offline
          petoulachiP Offline
          petoulachi
          wrote on last edited by
          #336

          Oh and BTW, which boxes are you using with your Sensebender ? I guess it's maybe the most difficult part of the entire project, finding the perfect box :D

          tbowmoT 1 Reply Last reply
          0
          • F Offline
            F Offline
            finge
            wrote on last edited by
            #337

            No, finding a box is the easiest part. This is the "box" for my outdoor temperature. :satisfied:
            sensebender.jpg

            1 Reply Last reply
            1
            • hekH Offline
              hekH Offline
              hek
              Admin
              wrote on last edited by
              #338

              Wonder how well the hum-sensors work in that enclosure :)

              1 Reply Last reply
              0
              • F Offline
                F Offline
                finge
                wrote on last edited by
                #339

                Hmm, would Gore-Tex work? I will try find a Gore-Tex bag for the next version :)

                1 Reply Last reply
                0
                • F Fabien

                  @5546dug said:

                  @fabian how is the box working out were there any mods and are the stl files ready yet?

                  Sorry, my 3D printer is out of service, I'm waiting for chinese parts ... I will post correct STL files in 1 or 2 weeks.

                  alexsh1A Offline
                  alexsh1A Offline
                  alexsh1
                  wrote on last edited by
                  #340

                  @Fabien said:

                  @5546dug said:

                  @fabian how is the box working out were there any mods and are the stl files ready yet?

                  Sorry, my 3D printer is out of service, I'm waiting for chinese parts ... I will post correct STL files in 1 or 2 weeks.

                  @Fabien @5546dug
                  Hi, any news on this please? I would be good to get a box by Christmas.

                  1 Reply Last reply
                  0
                  • petoulachiP petoulachi

                    Oh and BTW, which boxes are you using with your Sensebender ? I guess it's maybe the most difficult part of the entire project, finding the perfect box :D

                    tbowmoT Offline
                    tbowmoT Offline
                    tbowmo
                    Admin
                    wrote on last edited by
                    #341

                    @petoulachi

                    The sketch have improved a lot since we released the sensebender, mostly on determining when to power up the radio and transmit. This should save more power. I've got one running with latest development, without hiccups for the last couple of months (it also have Ota fw upgrade enabled by default now).

                    So if you are "adventurous" I would recommend to put that into your sensebenders

                    1 Reply Last reply
                    0
                    • petoulachiP Offline
                      petoulachiP Offline
                      petoulachi
                      wrote on last edited by
                      #342

                      I am adventurous !

                      Were can I find the beta version of the sketch ?

                      1 Reply Last reply
                      0
                      • korttomaK Offline
                        korttomaK Offline
                        korttoma
                        Hero Member
                        wrote on last edited by
                        #343

                        https://github.com/mysensors/Arduino/tree/development/libraries/MySensors/examples/SensebenderMicro

                        • Tomas
                        1 Reply Last reply
                        0
                        • petoulachiP Offline
                          petoulachiP Offline
                          petoulachi
                          wrote on last edited by
                          #344

                          Thanks !

                          I took a look at the sketch, I didn't know there was a presentation() method to implement to present the different sensor's ID; is this new ? when is it called? I guess after setup() ?

                          tbowmoT 1 Reply Last reply
                          0
                          • petoulachiP petoulachi

                            Thanks !

                            I took a look at the sketch, I didn't know there was a presentation() method to implement to present the different sensor's ID; is this new ? when is it called? I guess after setup() ?

                            tbowmoT Offline
                            tbowmoT Offline
                            tbowmo
                            Admin
                            wrote on last edited by
                            #345

                            @petoulachi

                            That's a part of the development. Things are re-arranged in the sketches, to make things more configurable (from within the sketch itself).

                            It will be part of the next release (I don't know when that is happening)

                            1 Reply Last reply
                            0
                            • petoulachiP Offline
                              petoulachiP Offline
                              petoulachi
                              wrote on last edited by
                              #346

                              Ok, related to MySensors 1.6 tehen, that explain why I never seen this !

                              1 Reply Last reply
                              0
                              • magpernM Offline
                                magpernM Offline
                                magpern
                                wrote on last edited by
                                #347

                                HI, I'm about to experiment with a modded version of the sensebender and I while looking at the schematics of the original sensebender, I see that the crystal does not have any pf capasitors and not connected to GND. Why is that?

                                All other schematics of atmega or any microprocessor I've seen has dual 22pf caps over the crystal and connected to ground.

                                1 Reply Last reply
                                0
                                • tbowmoT Offline
                                  tbowmoT Offline
                                  tbowmo
                                  Admin
                                  wrote on last edited by
                                  #348

                                  @Magnus-Pernemark

                                  The sensebender was designed to use a 32Khz oscillator for lowpower operation. According to the datasheet (page 33) it is not necessary to have external load capacitors if the crystals datasheet specifies cL below 6pF.

                                  However, we decided early on that an external crystal is not necessary in our application. So that is why it is not mounted, but the pads are still there, in case someone would use it.

                                  magpernM 1 Reply Last reply
                                  0
                                  • tbowmoT tbowmo

                                    @Magnus-Pernemark

                                    The sensebender was designed to use a 32Khz oscillator for lowpower operation. According to the datasheet (page 33) it is not necessary to have external load capacitors if the crystals datasheet specifies cL below 6pF.

                                    However, we decided early on that an external crystal is not necessary in our application. So that is why it is not mounted, but the pads are still there, in case someone would use it.

                                    magpernM Offline
                                    magpernM Offline
                                    magpern
                                    wrote on last edited by
                                    #349

                                    @tbowmo Thanks! Yes. I read that it was not needed, but since it said "if you want higher precision" I though that, higher is good, and it would not hurt to place one there. But the crystals I have are 12.5pf so I guess I can't use them, but on the other hand I don't need to buy any other

                                    1 Reply Last reply
                                    0
                                    • nivocN Offline
                                      nivocN Offline
                                      nivoc
                                      wrote on last edited by nivoc
                                      #350

                                      Did someone "test" the humidity precision of the Si7021on the sensbender? Of corse the datasheet says max 3% off but how reliable is that?

                                      I have other sensors here and they differ by about 10%. So I did a "Salt-Calibration-Test" and there my two sensbenders or better Si7021 are 6% over the reference value. They report 81% and it should be 75%.

                                      Note: It's my first time that I performed this test and I'm not 100% sure that the (water-salt-ratio) is correct - thats why I'm interested if someone else tested the values?

                                      1 Reply Last reply
                                      0
                                      • tbowmoT Offline
                                        tbowmoT Offline
                                        tbowmo
                                        Admin
                                        wrote on last edited by tbowmo
                                        #351

                                        @nivoc

                                        Salt and electronics isn't a good combination, it will cause corrosion of the copper tracks..

                                        Just to warn you a little bit :)

                                        1 Reply Last reply
                                        0
                                        • nivocN Offline
                                          nivocN Offline
                                          nivoc
                                          wrote on last edited by
                                          #352

                                          @tbowmo Thanks. No worries the electronic won't touch the salt or water. The salt/water is just within the same closed container to bring the enclosed air to exactly 75.3% rel hum (at 25C).

                                          I followed this howto: But there are many other similar ones.
                                          http://www.kingofthehouse.com/hygrometer/

                                          DwaltD 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          15

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.0k

                                          Posts


                                          Copyright 2019 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • MySensors
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular