Is Arduino killing Embedded Software Skill?

By Srinivasa Moorthy S A

11105
Advertisement

I have been looking for fresh engineers and also wannabe IoT Entrepreneurs to help them bringing out their ideas as products. One thing that struck me was their lack C and Assembly programming skills. They are good to show you a prototype made out of Arduino and they claim their product is complete.

What surprises me is, most of them lack understanding of the processor architecture to start with. To test them, I have few standard questions and ask them. Only 1% have answered. They are;

How does a processor interrupts work. What happens if two interrupts come together

With a microcontroller can I measure AC signals?

Advertisement

How the accuracy of A/D conversion is decided?

How do you make your system respond fast to real-time events?

I have never got an answer to these questions. Secondly, they have no clue how a processing power is calculated. In fact, I asked one of the would be entrepreneur (who incidentally had a prototype working on Arduino) how to increase the system’s performance from the current 2-3 seconds to 10’s of milliseconds. He had no clue about the issue and told by increasing the speed! Even more hilarious was, one prototype was tested using Arduino in the lab with PC connected. He brought the prototype to me with code loaded in the Arduino and the system was behaving randomly. I suspected a grounding issue and moved my hand over the system voila! the system behaved even more funnily. Next 1 hour have to explain about how Ground is important for both digital and analogue signals.

The common things I noticed were that none of them have learnt how to bring up microcontroller from reset. They have no idea how to control the different peripherals through their code rather than Arduino IDE. Worst is that most of them have no strong basis in C that too for embedded system. Most of them didn’t know how to to do single stepping and use of debugging tools like emulators

Couple of things I noticed seem to be the reason when I use to teach for both undergraduates as well as postgraduates classes and labs are;

Labs use canned software exercises and prewired boards.

Most of the times kids just cut and paste a code rather than developing their own.

Above all complete lack of Networking Knowledge which is essential for the IoT.

What I noticed is that Arduino masks the processor complexity and architecture and the peripherals that used have networking stacks built in. This essentially prevents students learning basics. In my opinion, Arduino may be a good tool for prototyping for hobbyists but not a tool for learning.

Save Trees! Avoid taking prints…


Srinivasa Moorthy S A has over 30 years of experience in the IT industry as Head, Leader & Technocrat in the Electronic Product Design & Engineering Services and is currently working as the Chief Executive Officer of the Andhra Pradesh Electronics & IT Agency.

Advertisement


10 COMMENTS

  1. Dear Sir/Madam,

    Thank you for this post and expressing of your opinion. You can advice something for us.

    I am also a newly graduated person, and I’m aware of my lack of embedded system basics, even I took computer architecture course and I have been as a team leader/developer in a model satellite and rocket student teams. I programmed only Arduino and Teensy via Arduino IDE and PSoC 5LP via Cypress PSoC Creator. However I tried to program MSP430 boards but after simple applications, it seemed difficult to me wheb I need I2C and SPI communication. Now I finished a course on Coursera called “Introduction to Embedded Software” and I will take the second part of this course to improve my embedded skills.

    Is there anything to start to advise us to be able to change our development environment from Arduino based boards to other boards? Like books, online courses, tutorials etc.

  2. This is actually very true. I have seen people boasting about their prototype having I2C and SPI, but they dont even know how I2C works. They just use some libraries written online, that do most of the stuff. But they can’t debug the code when needed.

  3. Good article that gives a perspective of how new tools make students lose their natural intelligence and curiosity
    to understand how microcontrollers work.
    People staying in Chennai can attend our internship or classes to understand the nuts and bolts of embedded systems. We teach students the basics of assembly, C programming, hardware design and programming peripherals including SPI, I2C and CAN communications. We also sell embedded trainer kits for the Microchip family and ARM development boards for the Cortex-M0 Nuvoton family.

  4. I’m 3rd year ECE student now I do some basic project using arduino…..plzz tell me how can I improve my self in basic things about arduino..?

  5. Quite an impressive article. Thank you so much for accentuating on the fact that arduino is exclusively meant for prototyping rather than for learning. I have been working with arduino since from past one year and i completely agree with your point, but i think it completely depends upon the user that how he/she is going to make use of it. In my perspective arduino is a beautiful product, but only for testing and prototyping.

  6. I too agree with Sri Srinivasa Murthy. I wonder to see students after completion of Electronics degree, the students never used soldering iron and completed their electronics project. The students never go through the basics of working of any IC/MCU (even never happened to go though the datasheet) and circuit/code is used from internet (copy and paste), then modify a little and test on bread board and show to the professor/guide. Thats all. The project work is over.

    THE STUDENTS, WHO GO A NEW IDEA AND IMPLEMENT AS A PROJECT FROM SCRATCH (after clearly studying the basics and working principle of the components ) WILL SURELY HAVE BRIGHT FUTURE AND STAND DIFFERENT AND CONFIDENT.

    Who knows cooking of maggi is NOT A CHEF. Is’t it?

SHARE YOUR THOUGHTS & COMMENTS

Please enter your comment!
Please enter your name here