Arduino powered device that pushes buttons in predetermined sequence

Discussion in 'The Projects Forum' started by hedgehog90, Sep 10, 2013.

  1. hedgehog90

    Thread Starter Member

    Sep 6, 2012
    41
    0
    I have a handheld RF communicating device that I use for finding my cats when they need to come in (they have tags on their collars), but so often I cannot find them and instead just check from my window every 10 minutes until I get them.

    [​IMG]

    To locate a single cat repeatedly I press the grey button, then the centre button, wait 90 seconds until it times out, then repeat.

    To locate a different cat each time I press grey, down, centre, wait 90 seconds, repeat.

    So this morning, I had the ingenious idea of building a device that could do this automatically with my old arduino I bought a year ago but never used.
    It would consist of a wooden cradle to hold the device and 3 or more arms above the buttons which will push down when given the signal.
    All of this will be controlled by an arduino, and depending on which of the 2 cat's I've found I want 2 push buttons on the arduino which will set a mode (ie, the sequences I stated above)

    I guess all I need to know is what can I use that will push the buttons via a boolean input?
    I'm hoping there is a common component that is small, lightweight and cheap that I can buy several of which I can operate with an arduino.

    I need the buttons to stay intact because I want to be able to remove it from the cradle and use it outside when I want to.


    Here's a very basic picture of what I have in mind:
    [​IMG]
    Oops, just noticed my embarrassing spelling mistake!
    For my idea I only need 3 button pushers but if they're cheap and small I might as well cover every button.

    Also, if all goes well I might want to be able to operate it through a computer via the wired network/wi-fi/Bluetooth.
     
  2. Brownout

    Well-Known Member

    Jan 10, 2012
    2,375
    998
    It's called a soliniod, they are made in a variety of sizes and push force. You'll need a driver for each one you use. You won't be able to drive them directly from your Arduino.
     
  3. djsfantasi

    AAC Fanatic!

    Apr 11, 2010
    2,802
    832
    There are plenty of posts available online on how to drive a solenoid from a microprocessor, such as an Arduino. The important components are a transistor (BJT or MOSFET), a diode to prevent back EMF from the solenoid, and the solenoid itself, and a couple of resistors. Sorry, I don't have the circuit ready for you - but you should be able to find one easily. (Update: the product link below contains this circuit link http://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf )

    Also, note that if you have trouble mounting the solenoids directly above the buttons for space reasons, may I suggest the following. You can use the solenoids to drive a small push/pull cable that presses the buttons.

    Also note that the buttons may not have enough force to return the solenoids to an "off" position. You may need a push/pull solenoid.

    Interestingly, this product from Adafruit is the type you might be able to use and includes a link to how to drive it from an Arduino.
    http://www.adafruit.com/products/412
     
  4. mcgyvr

    AAC Fanatic!

    Oct 15, 2009
    4,769
    969
  5. hedgehog90

    Thread Starter Member

    Sep 6, 2012
    41
    0
    Thanks for the help everybody.

    I would like to do that but it would need to communicate with pre-made Loc8tor tags (http://www.loc8tor.com/uk/2-mini-homing-tags.html?___store=ukview)

    They probably communicate in a very particular way. For instance, each tag is registered on the handset separately, so I can only search for one at a time. It must send out a different message depending on which tag you are searching for)
    Also, if I were to build my own it would have to be directional (like the loc8tor sort of is, but not really)

    Would there be some way of decoding it and working out how to send the correct signal to get both of them at once for instance?
    Maybe this is the correct path, creating an RF transceiver that can communicate with the tags.
    And maybe I could make my own tags that have better RF amplification and can communicate with this new device I might build?

    Thoughts?
     
  6. mcgyvr

    AAC Fanatic!

    Oct 15, 2009
    4,769
    969
    All I was saying is to use the arduino to send the RF commands for the button presses instead of solenoids.. Thats it.. No other communication is required.

    The tags will still communicate with the base unit as is. You just don't need to build this solenoid box adapter.
     
  7. joeyd999

    AAC Fanatic!

    Jun 6, 2011
    2,675
    2,724
  8. hedgehog90

    Thread Starter Member

    Sep 6, 2012
    41
    0
    I'm not sure why you assume that's possible.
    As far as I know the only way of inputting any signals into the handset is via the buttons. It would be a little odd if the manufacturer made it so the handset can be hi-jacked by other RF signals.

    That's awesome :D
     
  9. hedgehog90

    Thread Starter Member

    Sep 6, 2012
    41
    0
    I've just had a thought. If I set up an rf transciever with the same frequency as the loc8tor and I made it listen to the actual loc8tor sending out a signal, I should be able to get a hold of that message. Once I know it, I can program my rf transceiver send out the same message, right? Then it's just a matter of detecting the signal strength coming back from the tag.
     
  10. mcgyvr

    AAC Fanatic!

    Oct 15, 2009
    4,769
    969
    Ok..Lets try this again.. as you aren't understanding..

    You first setup the arduino to "listen" for the RF commands (like pressing the gray button).
    And you can record that code..
    Then you press the center button and the arduino "listens" and records that.

    Then all you do is simply create a program for the arduino to "repeat" those commands when you do something (like press Mode 1 button on the arduino)..
    So instead of actually having to physically press the buttons on the base unit. The arduino will send that specific series of commands to the collars when you tell it to.
    So 1 simple press of a button on the arduino would automatically send out the code for the gray button and the center button press.

    Which I believe is EXACTLY what you wanted to do in your first post but I just told you how to do it without any modifications to the base unit at all.. No button pushers required..
     
  11. sirch2

    Well-Known Member

    Jan 21, 2013
    1,008
    351
    Have you taken the lid off it to see how easy it would be to run wires to the button switches directly? I did try to do this with a different kind of device but connecting directly to the PCB proved too difficult, however you never know until you look.

    That said I do like mcgyver's idea.
     
  12. hedgehog90

    Thread Starter Member

    Sep 6, 2012
    41
    0
    I think I said more or less the exact same thing in my last post, unless you're saying that each button (ie, up down left right centre etc.) sends out a specific RF signal, which the device almost definitely doesn't do. It only outputs an RF signal when I search for a tag, which is done by scrolling through a list of tags on the loc8tor's display. It's not as simple as grey = tag 1 and red = tag 2 like the garage door example in the link you sent me.

    So, I think you're saying I should listen for the signal it outputs when I search for a tag usng an RF transceiver and an arduino, once it's noted down I re-program the arduino so that it outputs the exact same signal and then waits for a response from the tags.
    But there is no way of operating the loc8tor remotely as far as I'm aware, but that doesn't matter when I have an RF transceiver that can send and receive signals with.
    Anyway, it's better this way because I could get a really nice long range transceiver and maybe work on making some really small ones for the tags.
    There are many things I dislike about the tags, so redesigning them and giving them a bit more oomf would be ideal.
     
    Last edited: Sep 10, 2013
  13. hedgehog90

    Thread Starter Member

    Sep 6, 2012
    41
    0
    Just found the patent for the Loc8tor:
    http://www.faqs.org/patents/app/20110012775

    It mentions an omni-directional aerial. Is this important?
    I've just bought a cheap little rf module from eBay to test this stuff out.
    http://www.ebay.co.uk/itm/24GHz-NRF...r-Arduino-Raspberry-Pi-UK-Stock-/111065018223
    Does that have an omni-directional aerial? What is it?

    [Edit]
    Ooh just did some searching for some amplified rf transceivers, this looks good: http://yourduino.com/sunshop2/index.php?l=product_detail&p=190
    250kbps, 1km range.
     
    Last edited: Sep 10, 2013
  14. mcgyvr

    AAC Fanatic!

    Oct 15, 2009
    4,769
    969
    What each button does is sort of irrelevant..
    The point is that when a certain sequence of buttons is pressed the base unit will sent out a unique RF code.. You should just need to capture that code and be able to send it out via the arduino..

    I'm not even really sure what really happens or how this thing functions but I'd expect some sort of signal might be sent back by the collar units and I'd expect that even though the buttons on the base unit haven't been pressed (assuming you are sending the "hello collar unit #1" codes with the arduino) that when a signal is "heard" on the base unit it will put it into the correct mode to do whatever it does..

    So sending codes via the Arduino should be simple.. But the problem comes if the base unit "must" have its buttons pressed to even make it listen. But I'd give it a shot anyways as IMO is a much more elegant solution vs button presser solenoids.
     
  15. Brownout

    Well-Known Member

    Jan 10, 2012
    2,375
    998
    How can you decode/encode RF commands with an Arduino. It's not a radio.
     
  16. mcgyvr

    AAC Fanatic!

    Oct 15, 2009
    4,769
    969
  17. hedgehog90

    Thread Starter Member

    Sep 6, 2012
    41
    0
    Ok, I get you fully now, but your way doesn't quite work.
    So, you send out a message with the RF transceiver connected to arduino and the tag responds... however, if the loc8tor hasn't been prompted to listen (ie by pressing buttons) it won't do a thing, even if it's a recognized tag. I know this because there is a bug in the tags where if you go out of range while detecting, they'll keep on beeping/flashing/sending out signals (I'm assuming this). When I eventually come back into range, my loc8tor won't suddenly wake up and start locating, it does nothing, unless I've set it to listen obviously. So with your idea I'm almost 100% sure that it won't respond, unless I prompt it to with buttons, but the whole point of this exercise is to get something that will work automatically.
    Also it goes into standby after 30 seconds if you haven't pushed a button.

    So... My idea is that I do the first bit of what you said, I find out the messages sent from the loc8tor and tags, and with the RF transceiver/arduino I mimic the loc8tor and then check for a tag message.
    Then I have to be notified in some way that it's being detected (sound, visual, maybe I can use an old unused bluetooth module I have lying around and communicate with my android phone)
    I consider this to be a better solution anyway, because it means I can use the loc8tor as a second unit, and I can employ the use of some amazing long range amped up transceivers and potentially (if all goes well) create some little amped up tags to get the message back to my base unit.

    I understand what I need to do to make this work.
    Now it's just a matter of finding the right parts, and getting my head around circuitry.

    I did some research earlier and realised that RSSI is not an output of all RF receivers/transceivers, and all of the long range modules I was looking at don't have this.
    I need someone who's badass at RF stuff and can point me in the right direction.




    By connecting an RF transceiver obviously.
     
Loading...