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. General Discussion
  3. Bootloader for 168V 8Mhz 1.9v bod anyone?

Bootloader for 168V 8Mhz 1.9v bod anyone?

Scheduled Pinned Locked Moved General Discussion
6 Posts 2 Posters 105 Views 2 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.
  • skywatchS Offline
    skywatchS Offline
    skywatch
    wrote on last edited by skywatch
    #1

    Does anyone know where I might find bootloaders for 168v? I have a few prominis with this chip and plan to use them as battery nodes for door/window. Any help gratefully received!

    BearWithBeardB 1 Reply Last reply
    0
    • skywatchS skywatch

      Does anyone know where I might find bootloaders for 168v? I have a few prominis with this chip and plan to use them as battery nodes for door/window. Any help gratefully received!

      BearWithBeardB Offline
      BearWithBeardB Offline
      BearWithBeard
      wrote on last edited by BearWithBeard
      #2

      @skywatch Huh! I didn't know there was a ATmega168 with a V and had to look it up.

      Maybe I'm wrong, but comparing datasheets of both 168-variants and looking at some of the older Arduinos, I guess you could use a regular ATmega168 bootloader without any suffix. The Arduino folks seem to have done that with the 168V-based Lillypad for example.

      MiniCore for example provides a bootloader for a 1MHz 168 and the fuse settings (for BOD) seem to match as well.

      You may have a look at that unless you found a suitable 168V bootloader in the meantime.

      Edit: replaced all 186 with 168. :blush:

      skywatchS 1 Reply Last reply
      1
      • BearWithBeardB BearWithBeard

        @skywatch Huh! I didn't know there was a ATmega168 with a V and had to look it up.

        Maybe I'm wrong, but comparing datasheets of both 168-variants and looking at some of the older Arduinos, I guess you could use a regular ATmega168 bootloader without any suffix. The Arduino folks seem to have done that with the 168V-based Lillypad for example.

        MiniCore for example provides a bootloader for a 1MHz 168 and the fuse settings (for BOD) seem to match as well.

        You may have a look at that unless you found a suitable 168V bootloader in the meantime.

        Edit: replaced all 186 with 168. :blush:

        skywatchS Offline
        skywatchS Offline
        skywatch
        wrote on last edited by
        #3

        @BearWithBeard said in Bootloader for 168V 8Mhz 1.9v bod anyone?:

        @skywatch Huh! I didn't know there was a ATmega186 with a V and had to look it up.

        I didn't know they made a 186! ;)

        Joking aside, thank you very much for taking some time to help me out here. It is kind of you to do that! - I just downloaded minicore (which I looked at a week ago but never really got that far with it as had other issues to fix first).

        As luck would have it I only found 1 of the 10x 168 boards and can't find the others anywhere! - But I can ecperiment with the one I have and when the rest of them turn up I can move things quickly. They were an unintentional purchase but with goods from Aliexpress now 20% more expensive for us in UK, I have to make do with what I have!

        Next few days I hope to play with it some more and I'll be sure to let you know how I get on! :)

        skywatchS 1 Reply Last reply
        1
        • skywatchS skywatch

          @BearWithBeard said in Bootloader for 168V 8Mhz 1.9v bod anyone?:

          @skywatch Huh! I didn't know there was a ATmega186 with a V and had to look it up.

          I didn't know they made a 186! ;)

          Joking aside, thank you very much for taking some time to help me out here. It is kind of you to do that! - I just downloaded minicore (which I looked at a week ago but never really got that far with it as had other issues to fix first).

          As luck would have it I only found 1 of the 10x 168 boards and can't find the others anywhere! - But I can ecperiment with the one I have and when the rest of them turn up I can move things quickly. They were an unintentional purchase but with goods from Aliexpress now 20% more expensive for us in UK, I have to make do with what I have!

          Next few days I hope to play with it some more and I'll be sure to let you know how I get on! :)

          skywatchS Offline
          skywatchS Offline
          skywatch
          wrote on last edited by skywatch
          #4

          @skywatch OK - so I burned the 2MHz minicore bootloader (9600 baud) and then a sleeping sketch. Removed the regulator and series resistor for the led. Connected power with no radio connected and I am getting 1.78mA drawn at 3.00V in sleep mode.

          Methinks something not quite right here, will try another module soon.

          1 Reply Last reply
          0
          • skywatchS Offline
            skywatchS Offline
            skywatch
            wrote on last edited by skywatch
            #5

            A thought occured to me last night that without a radio connected the node may not be going to sleep - A test today with debug confirmed that, so I soldered a NRF24 to the pro mini. Wow! - what an improvement. Now in sleep mode it is using just 24.4uA - I am very pleased with this and just need to test it down to 1.8V, test the contact sensing is working OK and then I am done with the door/window sensors (apart from actually building and installing them!).

            I have chosen reed relays with NO and NC contacts. This means that contact for the pull down will only happen when the door is open. This should reduce the quiescent current through the pullup resistor when the door is shut. I just need to reverse the trigger logic which is trivial. It might be a small difference, but it all helps! ;)

            Thanks again to @BearWithBeard for the hint about minicore. It's easy for beginners and perhaps should get a mention in the bootloaders section.

            skywatchS 1 Reply Last reply
            1
            • skywatchS skywatch

              A thought occured to me last night that without a radio connected the node may not be going to sleep - A test today with debug confirmed that, so I soldered a NRF24 to the pro mini. Wow! - what an improvement. Now in sleep mode it is using just 24.4uA - I am very pleased with this and just need to test it down to 1.8V, test the contact sensing is working OK and then I am done with the door/window sensors (apart from actually building and installing them!).

              I have chosen reed relays with NO and NC contacts. This means that contact for the pull down will only happen when the door is open. This should reduce the quiescent current through the pullup resistor when the door is shut. I just need to reverse the trigger logic which is trivial. It might be a small difference, but it all helps! ;)

              Thanks again to @BearWithBeard for the hint about minicore. It's easy for beginners and perhaps should get a mention in the bootloaders section.

              skywatchS Offline
              skywatchS Offline
              skywatch
              wrote on last edited by skywatch
              #6

              AFter more testing it just got better. It seems that the atmel 168 has enough memory (just) for mysensors running nrf24, 2x interrupts and a HTU21D temp and humidity sensor. I tested overnight and it is working as expected. I didn't think the chip was as capable as it appears to be!

              Also good is that I have tested it working down to 1.64V. This works even sending the temp and hum values, but at 1.63V it no longer transmits anything.

              Looking at the standard mysensors battery page it seems that the battery percentage is sent using 0V as 0% and Vcc as 100%. In practice the battery levels will be unlikely to go below 50% giving a false reading of how much drop in voltage has actually occured.

              To make it more accurate I have set brown out voltage as 0% and Vcc as 100% giving the full range to the expected battery life which is a more accurate reflection of battery usage and time left.

              Here is the code I used to do it...Only the bits added for this to work, include in your own sketch if you want.

              
              int oldBatteryPcnt = 0;
              int batteryPcnt = 0;
              long result = 0;
              float vSend = 0.;
              
              float BattMax = 3.00;             //  Maximum battery voltage (take reading before using or use battery rated value...)
              float brown_out_voltage = 1.7;    //lowest battery voltage equating to 0% battery power (ie battery empty). 
              float brown_out = 0.;
              float divisor = 0.;
              
              void setup()
              {
                divisor = BattMax / 1024;                    //Set batt 100% - here it is 3V/1024
                brown_out = brown_out_voltage / divisor;     //Set batt 0% to brown out voltage
               }
              
              
              void loop()
              {
                
                  readVcc();  //only if using internal method, if not replace with external value.
              
                 
                  vSend = float((result) / 1000.0);
              
                  //calc and send batt percent to controller...
                  float sensorValue = vSend / divisor;                                          //Get voltage %
                  int sensorVal = constrain(sensorValue, brown_out, 1023);        //constrain values.
                  batteryPcnt = map (sensorVal, brown_out, 1023, 0, 100);         //Integer pcnt value.
              
                  if (oldBatteryPcnt != batteryPcnt) {
                    sendBatteryLevel(batteryPcnt);
                    oldBatteryPcnt = batteryPcnt;
                  }
              }
              

              Now you have percentage between brown out voltage (either measured with volt meter or using the fuse value set on node) as 0% and Vcc (either measured with a volt meter or set for the battery type/combination) as 100% at new.

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


              33

              Online

              11.7k

              Users

              11.2k

              Topics

              113.1k

              Posts


              Copyright 2025 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