Now- I'm DEFINITELY not an expert, probably barely mediocre with the EE fundamentals, but I did take a lot of EE and some robotics at Uni to get my degree in Computer Engineering. I am nothing more than a hobbyist but some of my cooler projects have been:
- Autonomous 4WD robot
- Quadcopter
- A USB nerf gun that shoots at the developer who broke the Jenkins build
- Used an electronic photo frame as a display to show happy birthday tweets and Facebook posts to my wife from all the friends and family on her birthday
- WiFi/Proximity garage door opener (before they were cool)
- Garage freezer monitor (after an accidental unplug that spoiled a season's worth of salmon and elk)
- A vending machine that let you pay with your work badge from 'points' you earned (this involved a Raspbery Pi and a surface tablet as well, but the Arduino was what actually controlled the vending machine)
I've done a ton of random home automation IoT gizmos, mostly just for the fun of it, and a lot of robot builds for the boys. But the reason I use a lot of Arduino is that they are pretty friendly to use, there's a lot of help when I'm stuck, and I often don't need more. When I do, sometimes I just add another Arduino (or 4) and use serial or SPI communications between them. I've got some PIC chips for stuff, and some other random chips laying around, but I get more done quickly with the Arduino.
Now, if I ever got on to an idea I wanted to make more permanent I would look elsewhere, but for a hobby, everything else provides more friction and ramp up in the few hours a month I can free up to work on stuff.
EDIT: I'll add I've gotten some ESP8266 chips/breakouts that I've gotten more used to and I may start using them in a lot of places I've previously used Arduino + WiFi because the WiFi breakouts use a LOT of the available I/O and are usually the most expensive part of a build. I think I have 2 or 3 that I reuse.
Anywhere I can read any more about this?
The main loop was just the standard socket server you'd find in a Ethernet module example and I wrote a Jenkins plugin that would connect on break and send the offending username over the socket.
There were at the time a number of examples showing how to control the USB launcher from Geekwire w/ an Arduino that I pretty much just copied.
Then again, you might work in one of those weird offices where trying to measure the distance from your desk to theirs is more awkward than repeatedly attempting to shoot your coworkers while you fine-tuned the numbers.
Neat project!
I tried some basic calculations, but as you could guess with a nerf dart, building HVAC, and all the other things going on it wound up being faster and easier (and again, more fun) just shooting until I was on target a couple of times.
After the first few desks it was pretty easy to get close on the first shot because you could generally know that 4ft left or right was about an adjustment value of +/- whatever from the last coordinate you had dialed in.
I was thinking a flat thermistor. Then I started thinking - what if it's not the power, but the freezer itself?
Now I'm getting into a battery to log when power is out, save that state, continue logging temps, then transmit after the wifi (assuming loss of power - although I have a UPS for the modem/wifi that will last a few hours) is available again. This obviously adds complexity.
Would love to hear your approach to that project....
Pretty sure it was my great-grandpa who taught me that.
Side note: Is it just me or does it seem like you get asked this question frequently?
I have the 'button' circuit wired into an Arduino I/O pin just like you would an old normally open button. When the 'button' circuit closes the Arduino triggers a VERY audible siren I cut out of an old water leak detector. If I have 5 minutes above my temp threshold the siren goes off. I upgraded it over time to use a small LiOn battery and got a circuit to switch to it when incoming power is cut for whatever reason, and basically when in battery mode it's also siren time. I got through 10 minutes of siren battery testing before deciding it was good enough and I was tired of hearing it.
We've talked about doing something similar for the propane fridge and an activity sensor in my friend's cabin in remote central Oregon using a 3G breakout for communications but we've run into the issue that the 3G there is really spotty and we just couldn't reliably get a data connection out there. Also debugging electronics with no internet, running off generator and batteries, and in the dark because we were fishing all day doesn't lend itself to really getting the job done.
Since you have WiFi you may have what you need to do it more simply, although the 3G might be a safety net for the safety net once you get your solution done. My biggest problem at the cabin, besides the lack of cell coverage, is the lack of constant power. There's barely any solar power, and it's used to keep the batteries conditioned, and it's often weeks or months between people getting out there. I would think at your place you could pretty much just use my approach and add WiFi, or just use an ESP8266 instead of an Arduino and do everything else the same. The battery switchover stuff was the biggest pain in my butt, mostly just because I've not got a ton of LiOn experience.
EDIT: On the RTC and temp logging, it's really not necessary. I just did it to do it. You can use the oscillation ticks and a counter to get close enough. Hell, you can just bump the threshold up a little and raise the alarm as soon as you see it without logging anything and get a drastically simpler circuit.
The 2 biggest constraints I found were power and communication from within the freezer.
One promising approach was - a BLE enabled temp. sensor beacon with a coin lion battery - a nearby externally mounted unit (RaspberryPi) plugged into a wall socket as a relay - a small central 'black box' SSD/Wifi/router ground-station to collect, store and push the data to the internet
The biggest question was whether the beacon signal could get through the freezer walls. If not then I was going to look into the idea of some super flat cable to enable a wired sensor connection without compromising the freezer seal (like a meat thermometer in an oven)
That being said, I didn't exactly exhaustively detail the before and after performance of the freezer either. I used the smallest drill bit possible that would let me get a probe in there and everything else is external of the freezer down by the compressor motor where there is a lot of extra room- and input power to tap in to.
http://davenewson.com/posts/2013/ambilight-with-teensy-2.htm...
Also works with e.g. XBMC. I'm hoping to get mine working with my FireTV.
That said, I think there are other MCs aside from the Arduino that are more interesting today, because they have WiFi or Ethernet on-board, and you get into a much more interesting class of project when you add networking as a core feature rather than something that needs to be bolted on.
> The ESP8266 is a low-cost Wi-Fi chip with full TCP/IP stack and microcontroller capability...
Still, it's pretty cool you can buy one for like $2 and basically have a computer that runs Python with some minimal microcontroller functionality.
I've only used the Arduino libraries, but I haven't had a problem yet.
Funny that a 160MHz board with wifi built-in can be referred to as "minimal microcontroller functionality" nowadays.
If you go into real computers, the C.H.I.P.[1] is quite an interesting device. It's $9, which is price competitive with the ATMega644 chip (in single quantities), has WiFi, Bluetooth, and runs Linux. It's also got lots of GPIO, like the Raspberry Pi, so it can be used in places where a microcontroller might normally be used.
I'm sure there are others, but these are the two that are on my radar at the moment.
Program in JavaScript, from a web IDE even. Wireless uploads to the board. $19.
They are a really interesting IoT play becoming and MVNO and all!
Also -- they had one of the funniest kickstarter video's i've seen: https://youtu.be/-sP5hn6VDgE
This allows you to port real operating systems to it:
http://cowlark.com/2015-10-27-fuzix
It's also a really elegant architecture which is a pleasure to write assembly for, and it consumes absurdly small amounts of power.
The peripherals are so much better it's comical. Basically all pins capable of 16-bit PWM, having dual 12-bit ADCs, a real DAC, and removing most of the extra junk? Amazing.
Now I just use it as a plug in brain for my custom boards, since it takes all the hardest to solder parts for an entire SoC and puts them in a form factor that's quite small and appropriate power for anything I've wanted to do so far.
I do want to do a project using a teensy with the audio board for beat detection eventually, but the teensy audio library still doesn't suppert beat detection. Paul posted that he would be adding it a couple of years ago I think, but it currently isn't implemented.
ESP8266 for ~$3 at 160MHz with wifi built-in is such a bargain I can't go past it most of the time, and when I don't need wifi and want to use the Arduino libraries, Arduino pro micros are about the same price and have USB HID support.
It's so great that there are so many great and well-documented options out there nowadays!
[1] http://www.instructables.com/id/Ultra-bright-LED-Color-Chang... (things have come a long way since 2010!)
The toy projects are a journey, not a destination. Compare them to all those people typing in listings for Breakout games in the '80s computer magazines.
It's also a means of doing "IoT" home automation and monitoring without getting locked into someone else's surveillance ecosystem. I have a Raspberry Pi reading my electricity meter, for example.
The meter has a (standardised) red LED that flashes once for each watt-hour. The Pi has a phototransistor that turns flashes into a GPIO transition interrupt. I've put it on my solar panel generation meter, and plan to build another (slightly improved) unit to monitor the mains input meter.
Just think of something you might do with a traditional embedded systems approach, then google "arduino for ________" or "arduino shield for _______" and see what you'll find. Its can be pretty amazing. Its much broader that the surface stuff of LEDs and basic sensor / actuator tasks.
As someone who's done production embedded systems work, what I build from arduino (and the fairly large arduino ecosystem) is not for high volume product, its for proof of concept, small run pilots and show and tell (and fun).
Off topic a little: One thing I've done to convince colleagues of the a plausible story of arduino POC to Production is collect a bunch of arduino gear (simply through web search and amazon) and build a paper-product with all the cobbled together parts. Then pose the question "if these cobbled together things cost _______ in single quantities, is there a plausible story for them to be 10x (or 100x) less on a cost optimized board with a proper contract mfg"?
If the answer is yes, then you cobble together your arduino thing and go show and tell with customers.
[1] - http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontr...
The next version is probably going to have a Raspberry Pi replace both the laptop and the Arduinos, but they were a good starting point to get the project up and running.
For less than a tank of gas, I just built a retro ROM console, and the new version 3 boards are beefy enough to run video through Kodi without missing a beat or play any old console games I've tried up through the PS1/N64 era.
Arduino/Genuinos on the other hand are easily available on our version of eBay and can be purchased as low as USD 30 which is an order of magnitude difference between the prices, and yes, one is a real computer and the other a microcontroller but sometimes you get what you can afford.
this schism between arduino people is completely ignored here and we'll buy the cheapest chinese knockoff if it is available.
Now the cost is higher due to low volume imports, so you end up paying more for shipping the boards. Also, taxes are higher if an individual is importing stuff, as customs use a simplified 60% tax over the retail price vs using the specific import tax (around 45% for the Pi) over the reseller price.
That page has a few anecdotes. In summmary:
Case one: $35 (product cost) + $40 (international UPS shipping) + $100 (import and administration taxes)
Case two: "I bought one R-Pi from Farnell Brazil (http://www.farnell.com.br/) and I paid R$185,50 ( ~ U$90) with taxes and postage."
I remember trying to help some Brazilian users find the cheapest way to get a hold of one a couple of years ago, and I heard similar stories: high import taxes even when there were official distributors operating in the country, and high shipping charges when there weren't and they needed to order the devices internationally. I don't think that it's resellers trying to fleece their customers. I think it's just a fact of the Brazilian government's policies.
The thing is: most of electronic projects needs some way to control things and it is great to take shortcuts. In my case all analog section was custom made to the point of 16bit ADC and used Arduino/Teensy as a way to react to clicks on button, transfer data to computer and stuff like that.
Also, many 3D printers, laser cutting tools, and CNC routing tools use Arduino as their microcontroller of choice. It represents a huge community and is one of the most basic of tools in any new or seasoned maker's toolbelt.
Schematic and code: https://github.com/PeanutNore/guitarduino
Now I'm using the Due and Teensy (Cortex M3 / M4) because of the hardware DAC and 32 bit processor. I haven't gotten filters working yet either, they are my next goal. IIR first, and then FIR if the Due can handle it. But I have gotten a cool resonant filter simulation by using a hard-sync as described here [0]. You get some neat variations by changing the waveshapes used and the windowing function. I might not even have subtractive filters in my final design, just because of how cool it sounds to approach it differently, but I still want to understand how to implement them.
Nothing on Github to share at the moment, unfortunately. I'm too embarassed by the state of the code, lol. But I will be checking out your project this weekend, so thanks for sharing!
[0] https://en.wikipedia.org/wiki/Phase_distortion_synthesis#Sim...
Getting the best sound quality out of it also depends on finding the sweet spot on the input gain to get the best dynamic range from the DAC without clipping, although I designed the preamp to sound pleasant when overdriven, mostly using JFETs.
They’re very cheap to build (we only use the project boards to prototype, final builds are on PCBs) and they can be run on small batteries when they’re just doing simple data collection.
I use OSH Park for the actual PCB production[2], they're pretty cheap and good quality boards but be prepared for a bit of a wait. There's also a good price comparison site[3] for alternate suppliers.
[1]https://www.youtube.com/playlist?list=PLy2022BX6Esr6yxwDzhqY...
I got stuck at the point of making my own footprints for custom devices, which I needed to do because the library doesn't seem to include all that much (or maybe I couldn't find devices I was using because I couldn't work out the UI for searching well enough.
Might have another go at some stage.
These days, though, that's becoming less and less true. You can pick up an ESP8266-based board complete with USB-serial built in and motherfucking Wi-Fi for 15 bucks from Adafruit, and it's identical to an Arduino code-wise (i.e. you can use nearly all the nice fuzzy constructs that the Arduino version of Processing provides), plus motherfucking Wi-Fi. I've been prototyping something with one the last couple of weeks, and it's great.
Compared to, for example, my senior design project in college, which predominantly involved writing shitty C code for ATMega-series microcontrollers, it's a breeze. I get C++, a huge standard library, consistent types, a Java-esque wrapper around std::string, and all the register ops to toggle or read pins and enable/disable features are completely abstracted away. It's like comparing writing an app server in Node.JS to writing it using Java EE. Obviously, equally possible in both languages, but one just feels so much nicer than the other.
In my opinion, the Wemos D1 Mini seems like the best ESP8266 board at the moment.
Fits on a breadboard nicely, lots of GPIO, obviously wifi, all nicely set up with a reset button and auto programming mode on a built-in usb serial.
And the best part, I just bought one for AU$3.34 (US$2.57) on Aliexpress!!
Also the dropout voltage is only 250mV compared to about 1V for the LM1117. You couldn't use a LiPoly battery to power it with an LM1117 because of the high dropout voltage.
Arduino is "the next big thing" mainly because of the community that's sprung up around it: tons of libraries (of varying quality...), lots of cheap hardware and online resources make it easy to get started and continue past the beginner stage. Previous attempts (BASIC Stamp, etc) never made it to remotely this level of popularity.
e.g., I'm an experienced electrical/firmware engineer and I do Arduino prototype consulting on the side.
One of my recent projects was a downhole scanner for measuring well diameter. I also have a set of ongoing automation projects that are specific to a particular customer in the entertainment industry. Arduino turns out to be perfect for this kind of work.
This is the CRUD work of the Arduino world: basic automation that's not exciting or even difficult, but fills a real need.
[1] http://www.freetronics.com.au/products/leostick
[2] http://www.instructables.com/id/Simple-Arduino-and-HC-SR04-E...
The main reason we used the arduino was compared to all the alternatives (other similar hacker boards, and FPGAS say) it gave us a flexible toolkit, easy deployments to a board, and a very simple way of interacting directly with sensors throuhg a fairly convenient API.
arduinos are cool because they make physical computing really easy. they're just a nice tool.
(I've read about gas sensors in the past and it seemed like they are either extremely inaccurate or hideously expensive)
We're working with the guy that makes these: http://www.maskau.dk/projects/electronic-nose -- he's super thorough and has lots of interesting data.
Last week I needed to convert an analog voltage to a pulse width -- I had a potentiometer and I wanted to control an ESC. It took me less than 10 minutes to breadboard and code that on an Arduino clone (Teensy).
The week before, I needed a frequency counter. Again, it took less than 10 minutes.
I've done more elaborate projects, but the point is that the overhead to get started is tiny.
I looked for some time trying to find a good egg timer, but there are really just two options, and neither are that great. You can have a nice, intuitive analog interface (the classic dial timer), but you lack precision and many are very poorly constructed and unreliable (seriously, look at Amazon reviews for this type). There's also no way to fine-tune the alarm; some are horrendous, while other are inaudible. The digital ones solve some of this issue, but have terrible UI requiring many button clicks.
I used a digispark ($1 for ebay clones), two rotary switches set up as voltage dividers, an arcade button, and an addressable LED strip to make a better timer. You input minutes with one knob, and seconds with the other. This has wonderful tactile feedback, is completely precise, and entirely intuitive. The LED strip counts up (and shifts red to green) as the timer passes, does a rainbow swipe/strobe for a few seconds to alert, and then 'cools down' so you can get a sense of how badly you overshot. There's also a buzzer. It's good for the kitchen, but I actually find it best as a rest-period timer for weightlifting. The visual display is great for loud gyms.
It's 100% a better timer than anything else on the market, and I absolutely love it.
1. A mechanical/environmental monitor/display for a grinding/polishing machine for telescope mirrors. It measures the rotation speed of two key machine parts; also measures ambiental temperature and humidity. It displays all these parameters on a front panel.
http://florin.myip.org/blog/making-tachometer-grinding-polis...
2. Lights control for an aquarium
Regular fish tank, LED lights with timer. The lights would turn on or off suddenly, scaring the fish. :) I used pulse-width modulation and a MOS-FET to gradually fade the lights in and out over 1 hour.
3. PC clock
I've setup time limits on PC usage for my kids. But before Windows 10 the login screen on Windows 7 didn't have the time displayed, so they didn't know when their accounts would actually let them log in. I've found a big LED display that fits almost exactly in a CD-ROM bay, and built a clock with it. It's synced to the PC every time the OS boots up.
Arduino is a C Framework for interacting with hardware that is portable across microprocessors. Arduino also offers an IDE that's modular and allows vendors to package up their Workflows for programming their Microprocessors and easily integrate it.
What this means is that a naive user can pickup any Arduino compatible board, configure the IDE to be able to program that board via a single URI from the vendor, write some code in C using the Arduino framework, and push it to the board with the click of a button.
So if you have had an idea for a piece of hardware, Arduino makes it ridiculously easy to prototype it. And since it's based on standard microprocessors, if the overhead of Arduino is too much then you can replace it with the microprocessor OEM's workflow and port your code over. It's a very accessible RAD environment.
- Garage opener/security (door sensing / camera & push notificaitons to cellphone) (Pi)
- 2-axis solar tracker with manual control & wind speed sensing (Arduino)
- Home VPN Server (Pi)
- Sump water level monitor (Pi)
- Industrial temperature cable sensing and reporting device for reading from ~140 cables (http://www.advancedgrainmanagement.com/products/temperature-...) (Pi)
So as others have said, if you have the ability to do it you're limited by what you can imagine. If you treat the output in the same way you would any industrial automation you're virtually only limited by what you can imagine you want to do with the device. I've set up a Pi as a home media server (though that's extremely common). I've got a friend using Pi for underground sprinkler control.
Here are couple rather uncommon examples:
- a greeting card with an integrated mobile baseband that calls a certain number once opened ("hey grandma!")
- a tea-timer that automatically pulls out the teabag after a set amount of time
- a UV-dosimeter that measures the actual amount of UV exposure and connects to your smartphone to track the data and warn of potential damage (with respect to your skin-type).
- the DIY-cellphone by David Mellis modified to display reading from arbitrary sensors
Your imagination is the limit. ;)Personally, I've been learning how to utilise my software skills to controlling hardware. Lots of fun.
Also opens up a new horizon of ideas.
The Arduino IDE and all the ecosystem of libraries and community could be the actual "big thing", because the Arduino is just a convenient development board; but you can get those from the chip manufacturers themselves (OK, may be now those are nicer because the Arduino boards).
I think the IDE is making the hobbyists able to work with microcontrollers in a very easy way; compared with all the tooling and docs you have to read to build your own dev board and program the MCU yourself.
Was fun until it crashed into a pond after a stupid code update that had the IR sensors invert the sky and ground.
The communities are large and it makes it very easy to find beginner and intermediate projects. I like them both and recommend them. They may not Be the perfect base for a robust IoT project but one can do a lot of interesting things and learn a lot doing beginner and intermediate level projects
Some day we might move to a standard uC approach but that'll be when we have many more employees.
Note: I am using a Teensy instead of an Arduino, but using the Teensyduino Arduino IDE plugin.
Another friend and I created a lighting controller that did realtime signal processing and MIDI-controlled lighting, which relied heavily on Arduino.
https://www.diyspaceexploration.com/ardusat-your-personal-sa...
It's cheap and you can easily connect leds, motors, etc. and control them via Python scripts. It's also frequently used to create home entertainment units for music, films or video games (emulators in particular), since there's an HDMI port that you can connect to your TV.