Why I stopped hacking the Amazon Dash button and learned to solder
medium.com
medium.com
I'm also a R-Pi fan, so I rigged one up which allows me to have mplayer start playing the album via a simple webpage which I access from my mobile phone. That is excellent for the middle of the night times, but when we put the child into bed at night I wanted a simple button to press to do the same thing.
I hunted around and just could not bring myself to pay $50 to $100 for a damn button! Especially if I had to rely on some web service... It just seemed ridiculous.
In the end I realised that I could just use a cheap wireless mouse. It is stuck onto the change table; we left click to trigger playback, right click to stop, mouse wheel to volume up or down.
Mine is based on an R-Pi that I've got an RFID card reader hanging off, which triggers playback of music in Kodi (aka XBMC)
Here's a video demo I made ages ago of a very early version (before I learned how to capture the RFID reader prior to Kodi/XBMC grabbing it, which allowed me to eliminate the MK802 device): https://www.youtube.com/watch?v=kwyq2xqjHW0
My toddler loves it and thinks that the standard interface for playing music is to select a card from the magnetic board and swipe it against the reader.
As a special bit of fun, I've also cut open some cards and bit the RFID loop into a few of her toys. When she swipes them the appropriate theme tune plays.
I worked on the system recently to add a web interface to manage the playlists and cards, but I haven't made the code available on github yet. Though I do have a repo with the old version here: https://github.com/Fuzzwah/xbmc-rfid-music
Another option would be a Wordpress, with lax rules on posting, akin to how ludumdare.com is setup.
The plan will be to use gh-pages to allow people to submit articles (write-ups of neat dad-hacks) and then something like disqus for comments. Help welcome!
FWIW that's super creepy and dystopian. In fact, now that I think of it, more and more posts and comments on HN are really dystopianically unsettling lately.
Otoh, we've reached the point where you can reasonably run an entire Linux server just to watch a button! Awesome.
I'm old-school embedded. So yeah, get off my lawn you kids that need an RPi, 700Mhz of clock, and a multitasking O/S to read a GPIO pin and send 10 bytes to a server.
But man, you can pretty much run Linux on a single chip now[1], so why mess with anything else? You can tangle with some other the other embedded O/Ses out there for months, or spin up something in Linux in an afternoon.
[1] almost. I've run Linux from an RZ/A1 but with a little bit of external QSPI NOR. I'm guessing the next generation of A9/A15 SoCs will stack more DRAM and NAND flash on top to make this a no-brainer.
Here's a link: http://octavosystems.com/2016/05/09/osd3358-new-era-integrat...
The schematics for all of their reference boards (aka Beaglebone Black/Green) are freely available, the chip has solid documentation, TI has a good Github+Linux repository, and you can make a really nice system out of it.
The Octavio part is nice, I'm also really interested in what NXP (cough cough Freescale) is doing with turning the iMX into a module. These are both pretty rare birds though. When I can get trays from DigiKey, we'll be cooking.
http://www.cnx-software.com/2015/06/24/freescale-introduces-...
http://cache.nxp.com/files/32bit/doc/support_info/SINGLE-CHI...
Dual-A9 is overkill for making an IoT device node, but hey if you're going to run Azure/Python/Node.js to send your 10-byte report, what the hell.
I don't think I will ever forgive TI for abandoning the Galaxy Nexus when they decided to abruptly exit the Android business. Since they chose not to update the drivers, Google couldn't update the GNex later Android versions despite being a Nexus phone. Google Glass had a TI chipset and Google managed to deploy a new Android version to it (I guess via some driver-compat work-around) but I hear the setup wasn't stable. I now avoid TI wherever possible.
I've since switched to the NXP/Freescale iMX family and it's pretty similar in a lot of ways.
I hadn't heard of them before, I just noticed the link you posted said octavosystems.com in the url, not octavio.
Probably a personal character fault. You're right that it is overkill. And I'll probably be tossing some more money towards SparkFun soon too - but the just from being a pure-software guy to buying/assembling the raw parts just shut me down :-(
Welcome to engineering. Pick one and finish the project. Then look back.
Yes, running an RPi Zero to watch a button press is overkill. So what? It optimizes delivery time over efficiency. You can optimize for cost or power later if you feel like it.
Anyhow, nice job.
At some point you'll want to use the Pi Zero for something else, and at that point you'll be able to use some other IoT package.
While the ESP8266 would save some power, the Pi reportedly uses around 0.7W with a USB Wifi adapter, or around 6KWh/year -- so would cost less than a dollar a year to operate. So he wouldn't save huge amounts of power.
http://www.jeffgeerling.com/blogs/jeff-geerling/raspberry-pi...
Meanwhile, I just bought ten of these for $46.5:
http://m.aliexpress.com/item/32684725642.html
Let's not kid ourselves. The Pi0 is not $5. It just pretends to be $5 for marketing.
Also check out this one. A wemos made in the shape of a Uno so you can use shields and everything for only $6.
http://www.aliexpress.com/item/New-WeMos-D1-R2-WiFi-uno-base...
I also designed a tiny breakout board that's pretty much the size of the ESP8266 12E plus some pins (https://github.com/skorokithakis/tiny-ESP8266-breakout), but it's just that, a breakout. I definitely prefer the WeMos for most things, nowadays.
Been meaning to have a go at rolling one of these myself using the mighty microchip MCP2221 instead.
I'm glad it's a CH340 - I've had no problems with those, unlike Prolific or (fake) FTDI devices.
https://www.adafruit.com/products/2885
No free shipping, but their ESP8266 modules don't come with free shipping either.
Non-starter. Doesn't even matter if its free if I can only get one. If its "the" pi zero on my bench it means it gets used much differently than if its "a" pi zero.
The point is, the Raspberry Pi Zero is $5 and stores sell them for that amount. There is more than one vendor out there. There's also a large demand and shortage of them.
So I was pointing out that you can find one for that price, even if not at quantity.
I can buy a nearly endless supply of $5 Zeros at my local Microcenter, so it's not all marketing. They are manufactured in-house and for various reasons haven't kept up with demand.
This sounds odd, I regularly see them going for $10+ on eBay. Why don't people just go to a Microcenter and get a few?
Not everyone is near a Microcenter, but there's an entire subreddit dedicated to people buying and shipping them out for people. Supposedly they don't make much if any money off it, mostly just covers gas+shipping+$5.
I don't mind paying for shipping, as the shipping isn't the computer.
I agree that they should be ramping up production to meet the demand there is. I also find given the educational angle that 1 per order is a quite fair way to go about distribuing them given the lack of supply.
The point on the delivered cost being the key is that many of the boards that would also be suitable for simple tasks like this are either free/very cheap shipping, or at the worst case you can amortize the $5-10 shipping charge across 10 units instead of 1.
What are you looking to do with them out of interest?
I just make weird things out of them. My latest one is an RC car that I was hoping could get some mapping software onto, and turn fully autonomous, although an ESP8266 talking to a laptop is acceptable (and what I'm currently doing).
And a $4 USB micro adapter.
And presumably a flash chip for the FS.
Add that to the fact that I've never been able to get a Zero into my hands for less than about $15 after shipping and all that when I can find one at all. (Sparkfun's shipping is only $5 for the ESP)
Its worth learning how to use the ESP8266. Once you've mastered it, you can get them for about $2 each with free shipping on ebay and aliexpress.
The ESP8266 works great as a standalone device and you can even flash it with the Arduino firmware, though I prefer NodeMCU.
https://learn.sparkfun.com/tutorials/esp8266-thing-hookup-gu...
For Lua, nodeMCU's got your back.
Documentation: https://nodemcu.readthedocs.io/en/dev/ esp8266 flash utility: https://github.com/nodemcu/nodemcu-flasher IDE: http://esp8266.ru/esplorer/
Tips: The cpu is responsible for everything, so if you crash it or get it into a loop the serial output will stop. Be careful with what you put in the init.lua, since it will run on startup. If you do get stuck in a boot loop simply hold down the button while pressing reset, and it will get into a recovery mode. Then use the nodemcu-flasher to reflash the chip.
If LiFi can work, surely IR should be good enough for simple signaling? Maybe there could be also a repeater in every room connected to mains for power and WiFi to signal each other?
It maybe interesting to have IR signals somehow encrypted.
Although the Dash is still much over-engineered: for every activation it has to establish (I believe) an HTTPS session and exchange a few requests with Amazon servers. A much dumber wifi button sending a single packet should be able to use 1/10th of this energy.
I suppose in the article I should have mentioned that I expected the button to be able to fire whatever HTTP payload that I wanted. Probably an odd expectation of mine, but that's the price I pay for my day job seeping into my night life.
I like the dash buttons because for the price you actually get decent value. Compared to an ESP8266 board, you also get the button, the case, and the battery. The interface for it is not th best, but this actually lets you monitor for many button presses from a single Linux node, so I think this is the cheapest solution.
That is not to discourage anyone from learning how to solder, or make their own electronics, but in case you have a bunch of these Dash buttons around already.
I too am a "pure software" guy. A few years ago I was really into hardware but started to go with buying finished solutions instead of building things on my own to save time and concentrate on the software.
I had no idea it's this simple to solder something together and speak to it.
Now I'd love to know how to do the same with a arduino or similar "less heavy" build. Does anyone have links to resources in how to do that and how to get started?
If you don't mind spending a little money (less than $100), get one of those "starter kits" for electronics that come with an Arduino (or similar) and a bunch of leds, resistors, caps and chips to tinker with.
From there on, it's really easy. There should be tutorials that work with the kit you get or find a set of tutorials and get a kit to match.
If you want to build things that talk to the Internet, a Raspberry might be a better starting point than an Arduino (for which you need an Ethernet or Wifi shield, but they should be easy to use too).
I can wield a soldering iron but I've only dealed with analog audio electronics before, but I was able to whip up a custom gaming controller for flight simulator use using shift registers, multiplexers and LEDs (and 64 buttons) in just a few nights of tinkering.
I would love to read about that!
Basically it was just a big ass 8x8 switch matrix made with multiplexers and shift registers and cobbled together with some diode logic. This gives 64 "buttons", some of which are wired to rotary encoders and the rest are buttons and switches.
It's got enough knobs and buttons to deal with all the navigation and communication instruments in a small civilian aircraft. Alternatively, I've thought of using it as a MIDI or similar controller for my software synth projects.
The coolest feature was that there is a row of backlit buttons that have two colored, two wire LEDs. Current goes one way -> LED is red, current goes opposite, LED is green. Alternate the current direction quickly and you get yellow. This is used for autopilot status indicator, e.g. when running in heading hold (HDG) mode and going to intercept a VOR or ILS beam, the HDG led is green and VOR led is yellow. When you intercept and autopilot changes mode, the HDG goes off and VOR goes green.
Right now it's gathering dust, which is a shame but I haven't had time for flight simming in ages. Building this thing cost me a lot of money since I bought all the hardware new, and big beefy switches are damn expensive.
I learned a lot when doing it. Like that electrical current flows both ways in a copper wire. I felt really stupid when I realized that I must use some diodes to get my switches working.
They're the best part about projects like this, though :) Right now I'm working on the most overbuilt egg-timer known to man with big chunky rotary switches to input the time.
The only issues I had were getting the LUFA firmware built to make the device work as a USB HID game controller.
Commercial lights with timers are available, but they often use blue for night time and I'm not sure if that interferes with sleep or not.
It's a gentle way to sleep train.
New one also uses 4x less power, cheaper battery lasts twice as long
No, that's not how this works at all. You're just querying some bit in memory. Nobody is "sending power".
BUT, notice how even this slightly incorrect theory of how its working still gives him 100% predictive power on how his system is going to work in this case... so meh? Plenty of time to be less wrong later.
Yes it'll be more expensive than 15$ or whatever, but he claims he 'just wanted someone to take my money' in the post.
>If you think tech that was in the PPC in '05 was revolutionary, that is...
SHUT UP!
goes to sob in corner
Perhaps I should just find some time to make my own on and off buttons?
Depending on your definition of expensive you might like to look at Fibaro's z-wave switches. They're small wireless modules that go inside the switch box, sitting between the switch itself and the light circuit, allowing wireless control and monitoring of the switch. They effectively decouple the physical switch from the act of turning a light on and off.
You'll need a z-wave controller as well, and a bit of time to learn how it all fits together, but the flexibility it gives you is pretty impressive.
But I'm learning a whole lot of neat stuff in the process. I've spent my entire professional career in software, dealing with hardware only at a high level. So this kind of low level stuff - wiring, soldering, etc - is new to me and something I've wanted to really dive into for awhile.
The point of the exercise is not because the cats need feeding, or that I couldn't buy a programmable feeder already on the market. It's a pretext to learn a new skill and actually create something physical that I can interact with. So much of what I do every day is ephemeral - it exists and bits stored on various computers. This will be something that I can touch and see and interact with. I can look at it and say, "I made that, hardware and software."
And my cats will be happy too. :)
I'd like to find a nice big & cheap auger that could pull or push to dispense, and have a lot more control.
The other suggestion someone made was a hopper with a close-toleranced vibratory table/spout to bounce the appropriate amount out.
All this assumes you want arbitrary duration/portion dispensing, otherwise you just need N bowls, and a rotary cover that opens each at a set time (which is most commercial ones I've seen).
Mine current design will allow some level of arbitrary feeds and duration.
My current plans call for a sealed rotating drum with an opening that contains ~1/2 cup of kibbles, so each spin of the drum will dispense that much. Using door brush to seal around the bottom of the hopper and the drum to keep kibbles from escaping. The servo will rotate it from 0 to 180 and back, allowing the kibbles to fall down a small ramp and into the bowl. My concern with this design is that I may not be able to rotate the drum fast enough, but I'll see if that's an issue when I get there.
Just spin it X times for X/2 cups of kibbles. I figure 1/2 a cup is good resolution for a home project.
(Not to mention the Rube Goldberginess of needlessly using wifi when you could use a few million fewer transistors on existing wiring.)
100W * 5% * 24 Hours = 120Wh
1W * 24 Hours + 5W * 5% * 24 Hours = 30Wh
So it does depend on the duty cycle - As long as the 5W lightbulb with a 1W computer is used less than ~19 hours a day (80%) you'd still have savings:
1W * 24 Hours + 5W * 80% * 24 Hours = 120Wh