I make things for people that can’t be bought off a shelf, and in the past several years I have gone through a lot of Arduinos. More and more, they are simply the right tool for both the job and the client. This wasn’t always the case; what changed?
My clients today still include startups and other small businesses, but more and more they’re artists, hobbyists venturing into entrepreneurship, or people who make one-offs like the interactive displays you find in museums or science centers. The type of people I work for has changed, and because of this, the right tool for their job is almost always an Arduino.
If Not Arduinos, What?
I was chatting with some new people at a local hackerspace, and we were talking about what we do. I told them I spent a lot of time making one-off devices, prototypes, or small production runs for people who know what they need, but can’t buy it off a shelf. I mentioned that I go through plenty of Arduinos as a result.
“What would you be using if it wasn’t an Arduino?” I was asked.
I thought for a moment and replied something about how I’d probably use an AVR on a board I designed, and roll that out when I needed a microcontroller to do things. I said this because that board was my go-to solution when I needed something for my own projects. There was a nod and the conversation moved on, but after thinking a moment more I realized I had to change my answer.
If I wasn’t using an Arduino, what would I use? Probably nothing. Because the job wouldn’t exist.
The Arduino is the Right Tool for Their Jobs
![Prototypes for a mesh wireless client project. Arduinos inside.](https://hackaday.com/wp-content/uploads/2016/05/client-prototypes.jpg?w=400)
A lot of my work looks like this: the client comes in with an idea but it’s not quite there, and it needs some development before it can become a product. First I build a proof of concept, but then we often move to iterative prototypes where we do a lot of testing and measuring. What is learned from one prototype is rolled into subsequent prototypes in a continuous flow of learning and refinement. (The following saying applies to this process: “Developing hardware is just like developing software, except that every time you hit ‘compile’ it takes weeks and costs thousands of dollars.”)
Eventually, we reach the end of what’s possible with the Arduino and readily available components. Then it’s time for the engineers to design a solution: something focused directly around exactly what was discovered, with minimal waste. That engineered solution is not very likely to include an Arduino.
But until we hand the job off to the engineers, the Arduino was part of the solution. And a big reason for that is the comfort level of the client during this phase of iterative refinement. A lot of clients would throw up their hands at an AVR-ISP or a hex file but they know what an Arduino is. They are often comfortable uploading sketches and making changes to them, or even following a wiring diagram. They probably even prototyped their idea with an Arduino. Using an Arduino allows them to remain hands-on with the development of their idea, even as they outsource some of the work to consultants.
The Clients have Changed
Sticking with what the client knows and expects is often the right move but there’s another, deeper reason that an Arduino is even involved in the first place. Without the Arduino and the whole ecosystem of open and accessible hardware and tools that has grown along with it, many of my clients would probably never have even begun to develop their ideas. They certainly would never have gotten to the point of hiring me for my help.
![Custom ultra-slow speed turntable used to capture high magnification video for Broken Sound by Gary James Joynes](https://hackaday.com/wp-content/uploads/2016/05/broken-sound-process-turntable-1600x1000.jpg?w=400)
The observation that I was going through a lot of Arduinos also made me realize that my clients had changed. I now work more with artists who are incorporating electronics into their work in ways that weren’t accessible just a few years ago, basement inventors who are taking the plunge to see if their idea will fly, people who need small production runs of 10-100 in a world where “small” often means thousands, and stage magicians who need someone to help them make the next great trick happen. (I hadn’t expected that last one, but you better believe that market exists.)
All of these clients need someone to handle the hard or time-consuming parts of something they otherwise grasp, or someone to make them something they can plug in to the rest of their work. They don’t always have much of a budget to work with, but they do have enthusiasm and they know what they want. They’re idea people who roll up their sleeves and get their hands dirty, and they weren’t around in the numbers that they are now.
There’s one more advantage to working with these types of folks: when people have experience with developing their own solutions and experience running into the roadblocks, they usually also have some understanding of and appreciation for the kind of time, work, detail, and costs that go into development. Those of you who have done professional development work will recognize what a boon that is.
I’ve done custom work for many people over the years, but change is constant. It’s a big world and I’ve only worked in and seen my piece of it. Have you found things to be as I described, or different? Is my experience somehow unique? Post up in the comments!
I’ve worked on a couple of industrial projects for work, micro controllers are always used. And what struck me, the single most important requirement is consistency. It seems you’re are seeing the same, the tool never changes and as you say, if it did and no longer was what it was you could not do the work you do. It’s something that is missed with a lot of hobbyist’s. A changing platform is bad.
P.s. You’ve carved out a nice little job there, nice one sir. :)
This. We use Arduinos in the lab because the students aren’t electrical engineers/programmers but with a bit of struggle can get a device to do what they need it to do, and they can teach each other (and access the galaxy of stuff on the Internet). It’s a cheap, engrossing on-ramp to the more esoteric things that HAD people like to argue about.
With the CH340 serial driver situation straightened out we can do this for a couple of dollars apiece which means if they smoke one it’s not the end of the world.
Come on, haven’t you heard esp8266? I used it a lot for my wireless mesh network projects. They’re cheaper, and have plenty room for the firmware.
Well then write up what you have done and put it on Hackaday. If no one sees it, it did not happen.
Some of us are very prolific hackers / builders of things that don’t need other peoples validation to be happy with our wares. Thanks, but no thanks.
+1
-1
Its got nothing to do with validation – it has to do with sharing ideas, helping people learn and maybe even getting some constructive feedback on how things can be improved.
“Some of us are very prolific hackers”… are you really a “hacker” if you have no interest in contributing to the hacker community ? Or worse, give backhanded insults to those that do ?
There are in fact plenty of people that don’t publish everything they do simply because they don’t feel a need to. They’re happy with their own results for their specific use-cases and don’t want or need any external validation or worse- the unsolicited critique from arm-chair experts who have no use nor desire to use what they’ve done but would rather spend their time picking it apart someone else’s work to satisfy their own need to feel better about themselves. ‘Pics or it didn’t happen’ doesn’t matter to these kinds of people because they’re perfectly fine with you assuming it didn’t happen and don’t have the desire to deal with the ‘nobody can improve in a vacuum’ mentality that some people seem to adopt when offering up their unsolicited advice, even though clearly most people are capable of realizing for themselves when something they’ve done or are working on needs or could use improvement. This occurs in all forms of the creative arts, and yes- hacking is a creative art.
That was a backhanded insult? Someone needs to develop thicker skin. My bad, I apologize because that my have been a back handed insult. People publish or don’t publish for a variety of reasons, they needn’t explain themselves to anyone. IMO it’s nonsense that this is an issue at all.
…and some of you constantly shit on these posts without having posted ANYTHING of your own.
“Some of us are very prolific hackers / builders of things that don’t need other peoples validation to be happy with our wares. Thanks, but no thanks.”
Quite. Some of us are capable of blinking an LED without needing to do a 5-page writeup on instructables and a twenty-minute Youtube video about it. A select few can even do it without using an Arduino (or five, just to be on the safe side).
+1
And how good one can have battery life using wifi? ESP eats up to 300mA when transmitting. AVR (or other low power MCU) with NRF24L01 will peak at ~ 20 mA. If you need to exchange few bytes staying off the grid then wifi chip is overkill.
The esp can go to sleep and eat little. If it is used as client it can use ~5mW to send a packet and go to sleep, can be waken up by external pin. As server eats 50mA at max polling rate, so server node should be better powered. It is still way less than a Raspberry pi with wifi.
The esp8266 was added to the Arduino IDE.
Note the esp8266 can do 160MHz (80MHz typical), supports large flash chips, and even has a valid FCC stamp on some modules. However, when you need i/o pins its limitations become clear… Most projects involve port interface chips or SPI remap hacks to free up the primary i/o pins (only possible on 12E/12D modules or custom boards).
The Arduino libs only offer very basic device support on the esp8266, but more features like native SD-Card FAT support are in progress.
The Arduino boot-loader/IDE is handy for many things, but tends to hide much of why people use low level languages.
“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.” — Bill Gates
I’m not a big fan of Bill G. Anymore, but that is an excellent quote.
Isn’t there a saying at Boeing that goes like this…
“when the weight of the paperwork equals the weight of the aircraft, it is ready for its first flight”
?
B^)
That was William Boeing himself rolling his eyes at the paperwork: “”If the Gross Weight of the Paperwork exceeds the Gross Takeoff Weight of the aircraft, then the Government has done it’s job”
“but more features like native SD-Card FAT support are in progress.” — What do you mean with “native” here? If you mean using SD-cards over SPI-bus the support has been there for a good while now, and SdFat-beta now supports long filenames, too. SDIO is missing, sure, but driving stuff over SPI is easy.
The Arduino abstractions don’t support every i/o option yet.
While doing a fun personal project, I was delighted to see the esp8266 HSPI port can overlap SPI port i/o pins:
http://bbs.espressif.com/viewtopic.php?f=15&t=56
Haven’t checked the SD-card project in awhile, but I’m unsure if long-name support would still violate Microsoft’s draconian $7/unit licensing.
http://www.esp8266.com/viewtopic.php?f=32&t=3558#p20419
I was referring to the Bootloader Modes:
UART Download Mode (Programming): GPIO 0=0,GPIO 2=1, GPIO 15=0
Flash Startup (Normal): GPIO 0=1, GPIO 2=1, GPIO 15=0
SD-Card Boot: GPIO 0=0, GPIO 2=0, GPIO 15=1
So far, I have not seen anyone successfully do a standalone SD-Card Boot for the esp28266.
I’m sure numerous people would be interested if this feature was incorrectly documented.
=)
There’s the guy who has a project here on Hackaday who uses an ESP8266 over SDIO to add WiFi to a Raspberry Pi. He probably could explain how to do it.
ESP8266 have a very low number of free pins, and this makes it unusable for most of industrial or art installations. Also, it is more expensive then an Arduino, and there are not so many programming examples.
The bare module is about $3 direct from China…
Arduino nano 328P is about 1.5 USD, with free shipping from AliExpress.
Shifters for the win! SiPo and PiSo port expanders are also useful in standard arduino projects.
wireless mesh networks? Interesting. How do you do this as I have not yet found how to put the esp into ad-hoc mode.
The mesh User Guide might be a good place to start. There are also plenty (ok, more than 1) demos out there on github etc.
http://espressif.com/en/content/esp8266-mesh-user-guide
mysensors.org is a pretty simple way to build a network.
How would you implement a slider control for a servo or light on an esp8266? I thought they were ideal for my project but real time updating of the UI is kind of essential, and serving up a webpage and updating was not working out well for me.
I settled for an arduino and HC05 to control it via app because I couldn’t find a smooth way to do it with an esp8266.
The biggest challenge is actually getting artists to pay you.
That’s the circular problem, since artists have a hard time getting people to pay them. It’s all on spec (speculation), or exposure. No one pays them, so they can’t pay you.. but they sure are excited and want to do the project. Much like everybody wants you to fix their computer or build them a website.. for free.
You also have the big problem that a lot of artists don’t want to think like a businessman, and thought art would just be fun. This was never clearer to me then when I got back to school my sophomore year of art school and found out my class of 90 shrunk to 60. Being a full time artist is MUCH more work than just getting a 9-5. Thankfully I’m seeing that shift as people realize it’s a lot of work.. but worth it.
yeah lots of so-called “artists” get some free work from hackers because, you know, “art would just be fun”, but prefer to keep for themselves the money they grab from public subsidies in exchange of “buzz art” as a business… because, you know, being a full time artist is MUCH more work than just getting real working things done, everybody knows that !
Yes, that is a problem. I’ve done a couple of art installations also, using Arduinos. They seriously are the right tool for a lot of jobs. The biggest one used line voltage switching to control 10′ lighting tubes that blinked in patterns but matched the pattern speed to the ambient music in the room. With a microphone, a bit of amp magic and some switching transistors, the Arduino did it admirably. That was back in 2014 and I haven’t seen the check yet. :)
“Getting paid” is an important part of a job, it’s true.
Artists don’t often have much of a budget, but honestly (and unfortunately) that’s something they have in *common* with many other clients, rather than being something that sets them apart.
Hi, I do many many things like this and have collaborated on a UNO compatible that I really like. It has 3-pin connectors on every I/O so it’s easy to cable to project devices. It has 4-pin connectors for I2C and Serial so LCDs plug in. It has a 2Amp switch mode power supply built in so many times a 9 to 12V wall wart will supply all the power needed. See it here:
https://arduino-info.wikispaces.com/YourDuino-RoboRED
DISCLAIMER: Mentioned stuff from my own shop…!!!
Regards, Terry King
…In The Woods in Vermont, USA
terry@yourduino.com
Looks like a VERY NICE Uno clone. I still prefer the breadboardable nanos et al. (which incidentally also cost a lot less even with the added breadboard).
Sorry. I don’t want to read Comic Sans. But the picture looks nice
I might purchase this.
.
The font sucks, but pictures are nice?
Come on, SebiR. I don’t like reading post with poor typing, but I read anyway. You forgot to end your sentence, so I gave you an extra fullstop. ^
Good looking board, I like the power supply.
The 3 pins per I/O is technically incorrect as one of each is a 5V & Gnd pin. Very useful for quick servo & sensor hookups.
Scope creep is the result of a loosely defined product specification, and or a lack of a multi-generational plan.
The product requirements will likely continue to change until you begin to charge the client for change orders, why not, it costs the client nothing to conceptualize a new idea.
Your niche is that you iterate quickly. This would help a client who does not / will not have a well defined product spec, find out what they really want. Iterating quickly means you identify dead-end ideas quickly.
This is what bread boards / break out boards, etc. are for: for developing proof-of-concepts. The accepted proof-of-concept (which is a design that does something, but how it does it is not that focus, just the result of what it does is) would the be commercialized (made smaller / cheaper / redesigned for manufacturing, etc.)
Don’t forget your niche…
I’d be sarcastic and state something like “Welcome to the era of Agile” :)
Prototype on your arduino, then implement with a Mini so you get it super small and remove the unused USB.
Or just flash the .hex to your custom board – although producing that is usually way more expensive than just buying Minis in China…
…also you can always go with BareDuino… :)
Or, just plain AVR and skirt around all the fancy names.
MicroPorn! Now I’m excited.
I used to consult on database technology and couldn’t understand initially why relational databases, which were clearly technically deficient, were taking over the world of databases at that time. Then I realized that “good enough was good enough”. Most people just wanted the simplest tool that did the job. Arduino comes under that category for a lot of tasks. They are cheap (at least mini pros and the like) and have a library for just about anything. They have limitations but for the most part they get the job done. As technology improves, I am now moving on to more capable hardware, such as ESP8266 (why can’t Arduijno have cheap Wifi?), cheap Linux SBCs, and Cypress PSOC devices for their good integration of analog and digital. It is a bit of an uphill battle as support lags behind Arduino for the newer devices and boards. My concern is that Arduino hardware seems to be stagnating but the porting of the software to other devices means that the libraries can be used with more advanced hardware.
ESP8266 is “becoming” Arduino. The libraries are the most important part, followed by pin-compatibility, I think. If you need Wifi, rather than low-current and the other stuff AVR chips do, then you need the 8266uino instead of the AVRuino.
I don’t think the AVR-based Arduino is stagnating any more than the Z80 is, which still controls millions of new products every year. The AVR is just getting better at what it’s good at, low power, cheap, handy peripherals, etc. Horses for courses innit?
Being the simplest is itself an advantage, especially when you’re debugging and trying to diagnose faults.
Agreed, the ESP8266 due to its low cost, WiFi capability, performance and Ivan’s amazing arduino port is more popular than most official Arduino WiFi boards i.e. MKR1000, Arduino WiFi shield, Arduino Zero e.t.c. It’s a shame that it doesn’t have more I/O capability. but most make do with what is on there.
The ESP32 once (or if) released would really cause a major shift in the popularity of Arduino hardware platforms…but only if the price is right (1-2x the price of the ESP8266).
The esp8266’s micropython port is also looking very good!
“The ESP32 once (or if) released” — Supposed to start shipping next month :)
I really hope that the folks at Arduino make an official ESP-based board some time in the future. Hopefully with the upcoming ESP32 for analog and better wireless reliability.
The Arduino API is the de facto standard of microcontroller programming APIs for hobbyists and makers. This has some advantages such as availability of well-supported libraries for pretty much every part/I.C. under the sun as well as a large community. The Arduino API is also very ‘easy’ to use which is really another way of saying that its somewhat ‘dumbed down’ especially when you want to do something a bit advanced. And while one can always revert to register based C/C++, most won’t because they can’t be bothered to read the manuals or simply because it’s outside the realm of there expertise.
The Arduino API is also very opinionated and that drives away some programmers. For example while the ‘setup’ & ‘loop’ function requirement might make things easier for artists to understand the ‘super loop’ programming paradigm, it can seem like an unnecessary restriction even to new programmers because it basically tries to abstract the programming language’s (C/C++) fundamental constructs i.e. the main function !!!. And don’t even get me started about the use of .ino files or the implementation of serialEvent function ughh!
In my opinion a high level abstraction API should make things simpler by embracing the constructs of the programming language that it is written in, not by trying to abstract them away as this can create really poor programming habits. In many ways the Arduino API to microcontroller development is what javascript is to server side development. Sure it makes things easier and accessible but it can get ugly, intractable and out of touch with reality real fast.
A good alternative in my mind is mbed. A true C++ HAL API for microcontrollers that embraces C/C++ yet is super easy to use and highly respected by both beginners and experts a like. Mbed is not perfect nor is it as popular as arduino, but in my mind it is the better API.
I really try to like mbed, and would be a terrific alternative for fast projects, especially since there are plenty of cheap processors / development boards with a lot of power.
However, it seems to have been made by software guys, it fails at a lot of basic hardware things that micro controllers are used for. Want to have an operating system on it, no problem. Want to change the reference voltage for the ADC? Neah, you’re on your own digging through the micro documentation, HALs and layers and layers of mbed…
The Arduino and mbed APIs are both high level abstractions intended for fast prototyping. So obviously both won’t handle things like precise PWM, fast ADC conversion, DMA, changing the reference voltage of the ADC e.t.c. To do this you definitely have to rely on either register based C or the vendor’s provided peripheral libraries.
Having said that, the mbed API is better than the Arduino API because it was designed by software guys who know how to design APIs, not by a bunch of artsy fartsy guys that wanted to make blinking an LED easy.
Most of the microcontrollers are there to control the physical world around them, and don’t even need an OS or multitasking.
That is why the peripherals like ADC, PWM and so on _must_ be the main focus when programming MCUs. MCUs are more close to the hardware world then the world of high level abstraction programming.
I don’t know who wrote the mbed, but I can tell for sure that Arduino have a lot of libraries very professionally written. Calling these peoples “a bunch of artsy fartsy guys” doesn’t make you look good.
Ok sure I apologize for the ‘artsy fartsy’ comment. But I’m not talking about the Arduino libraries so much as the Arduino core API i.e. digitalWrite digitalRead e.t.c. The Arduino API was created by Barragan (wiring) and Massimo and others i.e. students, university professors and others who had little to no understanding of proper embedded design development nor of proper API design.
The goal was simply how to make an LED blink without having to read manuals. The API was simple but had very little room to grow and develop further. But it worked! and Arduino become super popular despite its flaws and poor API design in very much the same way as Javascript.
As Arduino became more popular various functions and mechanisms were added to it to extend the API but not in an elegant fashion primarily due to the need for backwards compatibility..again just like javascript.
“very professionally written”
From the beginning, it has been an attempt to turn C++ into Java for microcontrollers. Confusing and inconsistent constructs are everywhere. Things don’t do what they claim to do, etc. Go take a look at how the “Wire.h” library is written, it sucks, they tossed somebody else’s TWI driver in the backend, added a byte limit that makes it useless for a lot of tasks, removed event hooks making it harder to implement slave, and all of this to make it look like a serial port when it’s completely different.
A lot of the good “Arduino” projects out there had to get around it by writing their own TWI driver instead.
It’s written to maximize profits by targeting the widest group of users, plain and simple.
Please don’t use the words “Arduino” and “professional” in the same sentence (or do – at your own risk…).
Yeah, that is the thing, some are very good. For example you can set a task to run at a specific interval or measure the time between 2 events with the system tick, with high level things. This eliminates a lot of the hassle of dealing with timers. But maybe it is just me that I expect some configuration for the HW. ADC reference change is something you will find on any micro.
“most won’t because they can’t be bothered to read the manuals”
That sounds extremely unprofessional. I guess you are no longer talking about doing projects for customers. I really hope people who make any money doing electronics would be bothered to read the manuals.
“A good alternative in my mind is mbed.”
Mbed’s only mistake is that their first generation product had DRM, a license key to access the compiler that’s baked into the mbed you purchased. There wasn’t any public demo. Of course this is different today, but I feel like it really hurt them, because their ecosystem is really amazing, a decade ahead of Arduino.
agreed!
Just looked at the mbed website. As of May 2016, it is not clear what their license is. Can’t take them serious considering Arduino’s open sourcing licensing.
:D !
I used to do a lot of similar things, mostly during university. I started with AVRs when there was no arduino and when it came out i had no reason for a change: i already had a code base that does most of what i needed that was better than arduino.
I also have my own codebases developed for AVR, STM32F0 & STM32F4 micros. They’re not complete but they do 85% of everything that I’d like to do and I can easily expand them to do 100% of all the things that I want to do with micros. Here’s the problem, it becomes hard to share ideas and communicate with others even if I open source my codebases.
The minute I mention to other hobbyists that I’m using my own codebase, they lose interest. Hence I can’t get others to understand what I’m doing or trying to do. This is why standard APIs such as Arduino are so successful. The minute you say oh by the way here’s the arduino code that does A or B or even better here’s an Arduino library that does A or B people will look at it and start using it and quite possibly suggest improvements. You become part of a larger community.
Also APIs such as Arduino and mbed may not be very good at doing low level hardware stuff, but they are portable, meaning that an Arduino sketch written for an ATMega328p will generally run on the Freescale/ NXP MK20DX128VLH5 micro on the teensy 3 or a SAMD21 on an arduino zero. Custom codebases are generally not designed to be portable.
Maybe I was not clear enough. I did not write the things, most of it was avr lib or other code others wrote. But by having a code base I mean that I had used it and know how to more around it with ease.
Code at that level was pretty optimized and was allowing enough complexity around.
There are good and bad things in arduino API(cannot say I have that much experience). The one that pisses me off the most is the whole renaming of pins and bad code behind it. Mostly because of the cheap ebay stuff i use from time to time.
Arduino is portable in the sense that everything is high level. Obviously, the implementation is different from platform to platform.
That’s one of the big problems – Arduino libraries are tailored to the largest common factor of all the platforms they support, and with a large number of platforms that’s a really small common factor indeed: only the stupid-simplest basic functionality. 80% of what the hardware is capable is often thrown completely away (go ahead, do compare match hardware pin toggling from library level – oh, and did you know ADC reference source changes aren’t actually applied at the time of the call?), while 80% of what remains is thrown away as performance penalty (never profile a DigitalWrite – that is meant to be a single instruction – if you want to stay sane). What remains after that is just about enough to blink an LED a.k.a. “art installations” where cost is just not an issue (at 30€ per Arduino vs. $3 per AVR) and “success” can be redefined as many times as needed, as long as at least something blinks…
arduino.org has been lately churning out a tonne of boards with onboard ESP8266’s and stm32’s and nordic i.c’s. I highly doubt that they will be getting anywhere near the traction of the Genuino/Arduino UNO.
Frankly I highly doubt that even arduino.cc’s Arduino Zero and MKR1000 are going to get as much traction as the Genuino/Arduino UNO.
Wonder how many of them will share the fate of the Arduino Due.
I foresee that in the future Arduino name will just refer to the API. Hardware is already starting to be vastly different and even the bad pinout is starting to go away.
“This advertisement was paid for by the makers of Arduino – Arduino, Because you can’t!”
“I use arduino because I am afraid of change and don’t have the skills or abilities to use something that doesn’t hold my hand throughout the entire process. In other words, I’m a poser embedded programmer”
And that’s ok.
But you know, you can install the bloatloader on your own AVR boards and have arduinos that don’t look like arduinos per say, right?
No fear here, just admit you can’t figure out what else to use because you suck at real programming and you’ve made money off of people that are too dumb to figure it out themselves. Hell, Silicon Valley runs on that principle!
Based on your two comments to this post, let me extend an invite for you to not comment in the future.
Based on the guy having a very good point, allow me reverse that invitation.
It’s quite obvious that you don’t know how to interact with other people and that’s most likely because you have a handicap of some kind. That doesn’t make your comments any more charming so please stop posting and go read something you like instead. Perhaps you can find something that suites your über cool hacker personal.
Per, please leave handicaps out of this. Regardless of what deficits there might be it seems fairly clear that OnceOnFire doesn’t need to write about his alleged projects for validation because writing bad things about other people’s work seems to be his preferred way to get that warm feeling inside.
I suck at programming. I do need someone/something to hold my hand. Thank you Arduino.
And half the people here make it do the impossible in my mind, so that invalidates a portion of your post.
“But you know, you can install the bloatloader on your own AVR boards and have arduinos that don’t look like arduinos per say, right?” I think the reason why you don’t see that is because of the super cheap arduino boards available.
I don’t use arduino as it is, but a board with a not-so-in-spec mega328 + usb-serial for less than a mega328 fron the store has found its way in a lot of things i did.
Not use if you really meant to say bloatloader, but it is funny
Wow, that is nasty.
So show us some of that “real programming” you speak of. It must be amazing.
Bah. He throws it out there and leaves!
But wouldn’t a client be just as happy with something which was equivalent to an Arduino, but closer to the final, minimal implementation of their particular project? As described at http://hackaday.com/2012/11/10/the-ultimate-low-cost-dev-board/ there are a lot of resources to make breadboarding an Arduino a comfortable and well-supported process even for novices, like… http://start.shrimping.it/project/blink/build.html
well, try beating a 3 bucks arduino nano knockoff with your own design out of a small productionrun ;)
Soldering the components costs more than the pin strip to the rasterboard, or even small run pcb.
Most of the times when people what a prototype / small scale the most important thing is time, then cost of development and only then hardware.
If they want it yesterday, need to pay you for a few days to make it do you think they would not be happy with you throwing in a $20 board instead of spending additional days making your own?
That’s very true. Sometimes I use an Arduino simply because it’s the fastest way to get something working, and no other reason.
I still breadboard AVRs for most things — for the final, I’ll just solder it to some strip board.
Arduinos are just too expensive to throw away for some random hobby thing. I suppose if it’s your day job, that’s different. But for a hobbyist, $4 per piece vs $30 per piece is a bit of a difference…
Also, did I read that right? — I wouldn’t dream of letting a client upload their own hex file — the fact that you let them upload their own firmwares to your prototypes kind of scares me a bit — like, you’re not worried that they’ll break everything? — Unless, like… if they’re writing their own firmwares, then, well… why do they need you anyway? — Did they just not know Arduino existed? O.o
Mikey, I am sure 99% of the projects you see online with arduino, people use clones. Those are like 10X cheaper.
If you need it now, you go to the electronic store nearby. If you can use it later, $20 for 10 is what you can get.
Sometimes people know enough to upload new firmware and they know enough to tweak some code, but it’s not their area of expertise. (I have found that this the only kind of client that works if we are not physically in the same city or even country, for example.)
Part of what I was bringing up in the article is that there is a type of client that knows these things but there are only so many hours in the day and sometimes they “buy time with money” by paying someone to do work. And they have become more numerous over recent years.
But more to the point, they only reason they know anything at all in this area in the first place and had the confidence to take the plunge into developing their idea is because open hardware and accessible tools (like the Arduino) got them started.
Well, mBed is far better than Arduino these days.
My industrial experience is mainly one-off solutions for very simple automation problems and if the control side of things couldn’t be done with a hand-full of relays then we went straight to a PLC. Customers didn’t usually care how solutions were implemented or what they cost as long as it worked and they didn’t have to call us back.
I did spend a few years in manufacturing and the production engineer I worked for used a PLC for any task; simple to complex. They were what he seemed most comfortable with, changes were easy to implement, it provided standardization throughout the factory, they were robust, and we always had a couple on the shelf so that made it the best choice for that facility.
I’ve played with an Arduino at home and have to say it’s a marvelous thing; inexpensive and easy. If you’re more interested in fixing a problem than feeling like Capt. James Cook, the Arduino and the body of work that’s already been done with can be a real time saver. I’d definitely use one for a side job but would careful about isolating the IO and pay extra attention to the enclosure. No matter where it was used, I’d pot it too….and not just to try hiding the fact I used an Arduino. ;)
Why would you pot it?
I’ve used Arduino clones in several one-off industrial applications. A good enclosure to protect and to shield, yes, and some attention to ensure a clean power supply, but I’ve never felt the need to pot it. Just curious.
Stormdog, interesting handle by the way, the bare board just seems so open to me and I can be a belt AND suspenders kind of guy at times. ;)
Seriously: When I worked in manufacturing (generators and air compressors) potting boards was SOP. It impressed me as a really easy way to really toughen up an installation against moisture and vibration.
General industrial controls may require potting for a variety of reasons.
Usually the reason is due to environmental considerations identified as Pollution Degree Class in a particular safety standard.
Conformal coating is usually used in environments that would oxidize exposed metal, solder pads, etc, but it’s also used to help meet dielectric breakdown, creepage & clearance requirements for safety standards, same goes for potting. This is often the case in high voltage (277VAC input) lighting electronics.
What was it again in all those fluorescent lighting ballasts that was toxic / leaking in old schools?
There is a lot of ground beyond Arduino yard, away from the flaws of its development environment and the limits of the ATMega328, but either love them or hate them, Arduinos are a great prototyping platform as they provide an easy way to perform simple tasks. That’s why it is spreading through people/groups that usually did their stuff with electricity and mechanics.
The clear trend here is that microcontrollers and microprocessors keep evolving and their use is keeps spreading. Such spread gets wider as their usage gets easier. That’s the reason why 8 bit devices are stubbornly alive and kicking the butts of newly introduced, cheaper, faster, more capable microcontrollers.
Completely agree. Although I do not use Arduino for anything, the concept of using an Arduino as a quick prototyping platform cannot be debated. It does work and people consistently prove so by the wealth of posts about Arduino based projects.
Myself, I use the Propeller for the same reason. I can do darn near any project that gets thrown at me in a few hours. I also have my own board designs that allow me to take advantage of smaller sizes when space is a concern for a project. Some may argue about the price difference, but rarely are my projects on such a tight budget that I need to squeeze every last penny out. I can spend an extra $15 on material but gain hours in overall development time.
My main beef with Arduino board usage is when I see a project that someone posts where they have been working on it for 3+ months and pictured at the heart of it is an overly hacked off the shelf Arduino board with wires soldered/jumpered everywhere and a stack of 3+ shields. That doesn’t make any sense to me.
Can anyone estimate how many arduinos are in those boxes the guy in the figure is pushing? Say consider ebay style nanos :D
Fine, I’ll do it. The nano is about 1.6×4.5×2.0cm, amusing is put in a bag and the packing density is about 0.3, it will take about 4.32cm3. Based on the guys hand, each box is about 25x25x25cm, so you can actually fit about 3600 in a box. Probably 27 boxes in the picture, that is 97.000 arduino nano in there. Maybe 100.000 can actually fit.
Haha. I love that image.
So what kind of arduino do you go through a lot of? My current favorite is the Pro Mini.
The Uno, MEGA, and Pro Mini mostly – so pretty standard stuff. I don’t normally use the more unusual boards like the Leonardo or WiFi and so on.
For most of my one off or limited run projects, the Pro-Mini has the right mix of IO. I can lay out a board with a 24 pin IC socket, add a couple more if I2C or additional analog pins are needed. Then just solder the $2.00 Pro-mini in.
I’m more interested in the $2 STM32F103 blue (blue pill) boards that you can purchase from ebay/aliexpress. They even have red boards (red pill) with a GD32 micro..an stm32 clone (same registers) than runs faster (flash has faster access times and apparently doesn’t need wait states). I don’t have them yet but order a couple of blue pills and plan to use them with mbed and/or stm32Cube.
More info here:
http://www.cnx-software.com/2016/05/17/bluepill-is-a-2-arduino-compatible-development-board-based-on-stmicro-stm32-mcu/
I got one but I give up trying to use it. Too difficult make the programming chain.
So, I’ve got a question about the legality of this. I’ve had the opportunity to build things devices that would use such products but I’ve been hesitant to do so.
I know, I know, there are naysayers out there, but as a guy who tries to do things on the up and up I am wondering the following-
I know that the arduino and various other similar devices are are very dirty as far as interference goes, Is selling a product with something like this installed in a product you manufactured OK without it being scrutinized by the fcc?
What legal risks are you, the maker, taking upon yourself or placing on your insurance company by selling these devices you build should something go wrong, like it causes something to burn down, or someone dies while using the product?
These regulations quite scare me and are what stop small business to start.when I was in Italy I could not think to make and sell something by myself. Luckily these regulations are not all over the world. Here in Thailand I can.
Unless there are statutory limits there is probably no limit to your personal liability when operating on your own, buy insurance. Better yet also spend a few dollars and file as a corporation in the state of Oregon USA, that is the best deal in the world and requires no US citizenship, residence, or even a visit.
http://sos.oregon.gov/business/Pages/register.aspx
As an employee of a corporation your liability is limited and if your corporation gets sued you can in most cases hand it over as damages and walk away, except perhaps in cases of gross negligence or worse where the corporate veil gets pierced. A corporation is a bit more paperwork, but really not much more than filing as an intendant. Pay a lawyer to properly this question as this is not legal advice, I am not a lawyer, I am not your lawyer.
As a single-owner corporation your liability shielding is very limited. It would protect you against debts incurred in the company’s name (though for real money i.e. loans you’ll have to sign a personal guarantee) but beyond that it will be easy to pierce the corporate veil.
I suppose that is a problem for people who ignore the laws and continue to operate as an individual rather than a corporation, ignoring the rules means the protection is lost, sort of using a soldering iron as a screwdriver then. Here is one of the first links a web search brought up http://smallbusiness.findlaw.com/incorporation-and-legal-structures/the-basics-of-small-business-incorporation.html
A person concerned about liability should consult an attorney and get insurance, both cost money and give varying levels of protection for the investment, a small business advisor or perhaps asking a few small business owners to point you at their lawyer and insurer. It is one of those well established cost of doing business things which like a life raft or parachute really pays off in a emergency.
There are FCC certified modules, there is still the issue of the antenna, some modules include a certified antenna, some modules just specify the db of the antenna. If you have a question call or write the FCC, not sure about CE certification.
http://esupport.fcc.gov/index.htm?job=contact_fcc_support
What exactly your liability is in those various scenarios is a question for a lawyer and your business insurance provider – I hate to give you a beating-around-the-bush kind of answer, but it’s the correct one. Tell them what you’re doing (or planning to do). Their answer will depend on what you have to tell them (as well as where you live, etc.)
FCC-certified wireless stuff exists and has that specific part taken care of as long as you’re using it as intended / specified. For example, plugging Xbee units from Digi into your board – they are FCC certified.
You must comply with the labeling requirements if you use the module.
This is listed in the back of the datasheet for certified modules.
If you are building products that have the capability to burn anything down that I suggest that you, stop and do your homework first.
Compliance with the FCC is required to sell in the US, but safety compliance you’re going to want to help limit your liability.
What does the product do?
Code of Federal Regulations, Title 47, Part 15.
http://www.ecfr.gov/cgi-bin/text-idx?SID=331340644fc4736cf01bb62e64e80a94&mc=true&node=pt47.1.15&rgn=div5
If you don’t have a radio, you are still an unintentional radiator.
Before learning to program arduino I programmed, and I still do, PIC microcontrollers in assembler. They can mostly do the same things. Programming in assembler takes much more time but it allows to squeeze out all the microcontroller resources. In few cases I could do so many things with one Pic that would require two arduino. Maybe because I do not know how to program the arduino in assembler. Anyway lately I got lazy and I really appreciate how it’s easy and fast do the same job with an arduino that if brought from eBay cost the same as some pic microcontroller.
I start with PICs in PIC assembly.
C is really just a lot easier to make changes. You can do inline assembly blocks / Macros. PIC18’s and some of the larger 16s have banked memory.
Having a C compiler handle the long jumps, etc., is a hell of a lot easier for larger programs than using assembly.
Switching to a processor with more than 1 interrupt vector and DMA will really expand your capabilities, you’ll be able to do much more, faster, and spend more time with the processor asleep for battery operation.
Anyone try the Pinguino http://pinguino.cc? (PIC chips using built in USB support with an arduino like ide to program them).
Has no one used an MSP Launchpad before? TI has a huge microcontroller line and once it’s programmed, it’s just a chip. Much smaller and more mobile than an arduino.
I do mission-critical embedded systems for a living. I have used a lot of different micros. Z80, 8080, 8086, 286, etc. Started using PICs about 20 years ago – in PICASM. CCS C compiler for the PIC16C73 wasn’t bad. The CCS C compiler for the PIC24 is *terrible* – lost 60 hours of my life to that POS, and I *know* I did not find all of the bugs.
I had a client who needed to control a couple of motors and a solenoid. I used an Arduino. Simple. Would do it again. Had to change the driver code for the timer && do an arbitrary waveform generator in an ISR, but that was easy – less than a day.
Personally, I like Teensy 2.0 (and the 2.0++) because I can go bare-iron (which is very comfortable for me), and I have personal libraries for serial devices, printf(), etc. The Teensy bootloader is a fantastic hunk of code. It just works. I can use either the Arduino or Atmel toolset. If I really want to, I can go Arduino on the Teensy.
And the Teensy has code for the USB. Driver code for Windows, Mac, Linux generic HID. Lock & load easy.
And the Atmel ATXmega line, using the eval boards and the Atmel toolset – *love* them. I have my own CLI, serial drivers, printf(). I can create prototypes quickly. (Only bitch is they will rev the chip and you need to find out the hard way. I need to find out if Microchip is going to improve that. Also, Microchip *never* obsoletes a part – I can get *exactly* the same chip today as I could 20 years ago.)
Nothing against ARMs. I have used them professionally. A few year ago the toolset required pro-level tools. The free toolsets were not up to the task. That appears to be changing for the better.
Bottom line: don’t blame the author for using Arduino. The shield selection is broad and generally solid, esp from Adafruit and Sparkfun. Stepper Motor shield from Adafruit is solid. lots of options for wireless, etc. In prototyping speed of results counts.
Interesting to scan this article in 2020. Any current thoughts now?