If you go to buy a sofa these days you’ll not only be greeted with the option of one or more reclining positions, but a fully modern unit comes with motorized reclining. That simply wasn’t convenient enough for [Nicki] and [Kevin] who wanted to control the feature from a smartphone rather than a physical interface (buttons) on the side of the furniture. What resulted is the PiSofa, a Raspberry Pi connected to the furniture’s electronics with the help of a relay board.
This is most certainly a hack, but no doubt one with a lot of finesse. Check out that white PCB. That’s right, it’s a factory spun board to keep things nice and neat. They went with one of our favorite tricks by housing everything inside of a food storage container. After some Ruby coding the Pi now has complete control of the sofa. We’re not overstating this. It literally is the only way to control it because the original buttons no longer work. But that’s okay, turns out not only does it work with their smartphones, but with a [Kevin’s] Pebble watch as well.
We can’t think of any past hacks that specifically targeted the couch. But here’s a hammock that you can drive down the street.
Because reaching down to control the seat that you are already sitting on was waaaay too easy.
We need electronics…lots of it.
Kudos on the puzzling yet obviously successful project.
I suppose they never have guests over either?
Or perhaps, they don’t want guests getting to comfortable.
Seems kinda less convenient. Can’t understand why the buttons have to be disabled, if they’re smart enough for this, they must be smart enough to wire in the existing buttons!
Don’t tell me Bluetooth is now easier than wiring!
The article is incorrect. The buttons are wired into the Pi. The 3 motors are wired into the relay board and the 3 switches are plugged into the PiSofa board using the DIN connectors.
The original idea was to leave the switches plugged into the motors as a backup. But as the switches keep both wires to the motors earthed until a button is pressed it wasn’t possible. The buttons were then plugged into the Pi using the optocouplers as shown due to the sofa running on 32V DC which the Pi wouldn’t appreciate. This turned out to be a far better solution but the being able to move the seat is dependent on the Pi which is very reliable so didn’t turn out to be an issue.
Yes just found this out today. You have to remove the micro switch for any action to work
I FOUND A CLUE!
The original idea was to leave the buttons connected but due to the switches always being earthed until pressed it wasn’t possible.
Instead the buttons are wired directly to the pi. So they still work and allows the Pi to keep track of the position if you use the app or buttons. This also adds the ability to single click to favorite position and double click to go fully upright or flat.
The smartphone app doesn’t get used much but the pebble app is very handy. When you want to lie down across all three seats you can press 1 button to send all seats to the same level.
The next board will combine the relay board and extra electronics into a single board the same size of the pi that will plug straight into it.
Thanks for the feature!
For the next version I would recommend some sort of feedback for the pi. Either a limit switch or a potentiometer. Or the pi is very likely to lose track of the position, unless the motors of course already have limit switches built in.
The motor has limit sensors (hall effect) built in so it’s not possible to over drive the motors. Using the time for the position isn’t very accurate and as each seat moves at a different speed I’ve had to measure the time each seat takes to move. The new board has extra long pins so it would be possible to plug sensors into the board later if I figure out a good way to do it.
“Using the time for the position isn’t very accurate and as each seat moves at a different speed I’ve had to measure the time each seat takes to move.”
I’m willing to bet it moves at different speeds depending on the weight of the person sitting in it.
“This is most certainly a hack, but no doubt one with a lot of finesse.”
How is finesse involved in this hack at all? It was sloppily done the entire time. He used the wrong relays initially, doesnt have any sort of feed back, and they went out of their way to waste resources to implement features such as a “crazy” mode.
“They went with one of our favorite tricks by housing everything inside of a food storage container.”
How is this a trick? Also if they spent the money to get a PCB manufactured, you really gota wonder why they skimped on things such as a proper enclosure which can be had for ~$20 or less, or a feedback system.
And this article is yet more evidence of how the RasPi is a solution looking for a problem. Is a 700Mhz processor with a GPU really needed to control a handful of switches?
With regards to using the Pi, and out of genuine curiosity, how would you handle the smartphone to chair interface for less money?
Any MCU and a BlueTooth or WiFi interface. You could also do a analog solution and skip the MCU all together I suppose. Is wireless module cost with that an issue with my solution? If so, then simply interface a cheap BlueTooth headset with the MCU to receive the commands from the chairs.
Also if he has at least 3 of these units for 3 different chairs with custom PCBs, aftermarket add on relay boards and whatnot, when did cost become a factor? The after market relay board was completely unnecessary, it isnt that hard to make your own, especially if you are all ready making a custom PCB like he did. They could have skipped the board will all the (DIN?) connectors and simply wired the motor and switch controls directly to the screw terminals on the relay board and the 0.1 headers on the RasPi. And instead of buying a 3 (or more) RasPi, you could request free samples of a MCU from someone like Microchip.
I’m only using 1 Pi and 1 custom board. The V1 board is being greatly improved with V2 but it was a great introduction to creating circuit boards.
I am not at a level to be using an MCU and adding bluetooth / wifi modules. 3 weeks ago I was googling “what is a transistor”. The V2 board has the relays built into it and is the same size as the Pi so will plug straight into it, which is now housed in a PiBow case minus the lid. It’s going to look a lot tidier. Using the DIN connectors was also a mistake as they take up too much real-estate on the board. The V2 is using plugable screw terminals.
You say the raspberrypi is overkill but it enables someone like me who doesn’t know how to program a micro-controller but knows Linux/Ruby to make this type of solution. It maybe overkill but without it this project and countless others wouldn’t exist. This is HACK a day after-all so just because the project isn’t ready for production/public use doesn’t make it a bad design.
“How is finesse involved in this hack at all? It was sloppily done the entire time. He used the wrong relays initially”
Lastly since when did making a mistake define the outcome of the project?
Using a MCU with BT/WiFi with some MCUs such as Audrinos isnt difficult at all:
http://arduinobasics.blogspot.com/2013/01/arduino-basics-bluetooth-tutorial.html
Regarding Ruby… why?
Its not that “this project and countless others wouldn’t exist”, it is you’d have to learn something which youre unfamiliar with, ya know, the type of stuff you normally do when you hack things together.
Regarding your ‘something not ready for production doesnt make it a bad design’ comment, that makes no sense, products with bad designs are produced all the time. And just because something isnt ready for production doesnt mean it is a bad design. Consider this, would it be a good design for a mass transportation system in a urban environment if everyone drove their own full sized bus by themselves? Would it magically become a good design if something implemented it? Anyways using a 700Mhz CPU with a GPU to interface with a handful of switches and relays is a bad design.
Regarding your last question, it doesnt define the outcome of the project. Read my quote again and afterwards tell me how making mistakes qualifies this project being designed/executed “with a lot of finesse”. Finesse is the exact opposite of making mistakes and using a overkill dev board to accomplish a simple task:
“Full Definition of FINESSE
1: refinement or delicacy of workmanship, structure, or texture”
And if making mistakes didnt define the outcome of the project, please read this
http://hackaday.com/2013/08/05/have-you-failed-hard-enough-to-be-on-hackaday-2/
I’m very pleased for you that you feel you could have made this is a better way. For me this was difficult, I’ve learned a lot, and have a working system that I’m proud of.
Unlike badly designing a mass transport system the only negative to me using a 700Mhz CPU is it will cost me slightly more in electricity to run.
Can I politely advise you not to reply to other people’s projects with only negative comments. It’s very unnecessary and unhelpful. Take a moment to consider that like I am with this project, other people will be extremely proud of what they’ve achieved. Any project can be made better and improved on. The important part is achieving something that your proud of and you feel was the best you could do at the time. That’s how I feel about this project.
How was this difficult? You used a bunch of COTS components, and likely a reference design for a optoisolator. You used a OS/language you presumably all ready know as well.
There are far more negatives than just a slightly larger electric bill. You didnt really learn anything with this exercise. As I said above, you used a bunch of COTS components and a reference design. Think of it this way, are you going to learn a lot about how furniture is designed or manufactured by assembling a bookcase from Ikea? Or are you going to learn by getting some wood, screws, stain, a saw, router and sander and actually making a bookcase.
Oh noes, a negative comment! You mean HaD isnt a circlejerk hug fest like reddit where criticism is hidden from view because it might damage your oh so fragile ego? This is the comment section, the very purpose of which is for other people to provide commentary such as criticism. Instead of taking it personally and getting all butthurt over someone doing this, you could take their feedback in to consideration and actually figure out how to improve project and more importantly your skillset. Instead you’ve chosen to tell people to censor themselves so you can continue to be proud of a mediocre accomplishment.
I done this with a simple dual relay with esp8266 flashed with esphome on home assistant at a cost of about £5. This version seems rather elaborate and frankly ott.
John, I’m looking for a simpler solution. I just need to control one chair leg lumbar headrest but can’t reach controls for six weeks after surgery on right arm–need remote. Could be wired or something like above.
Have you posted your project anywhere? Thanks!