Share this project

Done

Share this project

Done
Built-in:{ 12x LEDs; 1x buzzer; 1x button; } �Troubleshooting made easy for educators. �Coding & Electronics made easy for students.
Built-in:{ 12x LEDs; 1x buzzer; 1x button; } �Troubleshooting made easy for educators. �Coding & Electronics made easy for students.
1,878 backers pledged $63,875 to help bring this project to life.

Solve The Problem!

Posted by Kiate
12 likes

Today we want to draw your attention to a problem (Yes, PROBLEM!) encountered by our training partners in various classrooms. During their first lesson with Maker UNO, this simple Arduino sketch is uploaded to the board. 

A simple Arduino sketch (program)
A simple Arduino sketch (program)

Take a look at the strange outcome on Maker UNO board below. All of the LEDs light up at random brightness, instead of only one LED at pin 4 which is configured in the program above.

Confused. CONFUSED!
Confused. CONFUSED!
Since digital pin 4 is configured as OUTPUT and set to HIGH, the voltage level is constant at 4.96v (~5v) regardless of noise from the environment.
Since digital pin 4 is configured as OUTPUT and set to HIGH, the voltage level is constant at 4.96v (~5v) regardless of noise from the environment.
However all the other digital pins which are not configured in the program are lighted up. Probing with a multimeter shows that the voltage level fluctuates when we touch the connection.
However all the other digital pins which are not configured in the program are lighted up. Probing with a multimeter shows that the voltage level fluctuates when we touch the connection.

What happen? Let's look into this issue right from a tutorial in Arduino's website.

Source: https://www.arduino.cc/en/Tutorial/DigitalPins
Source: https://www.arduino.cc/en/Tutorial/DigitalPins

What does it mean? This simply means that if Arduino Uno's I/O pin isn’t connected to anything, it can be either HIGH or LOW, and even any voltage level in between (and this can change randomly), because these pins are in high impedance state. You won't notice anything on the original Arduino Uno board unless you probe the pins with a multimeter. However, fred not! There's nothing wrong with the default to input configuration and in fact it's the common practice.

What does it has to do with Maker UNO? Since Maker UNO is using the same ATmega328 chip on Arduino Uno, this also affects the digital I/O pins on Maker UNO board. The situation is further exaggerated by the onboard LEDs. This random brightness of the LEDs has caused a lot of confusion to our first batch Maker UNO users who are new to Arduino. 

What do we do now? Should we adhere to Arduino Uno's convention (ignore the random voltage level) or solve the issue (incur incompatibility with original Arduino board)? So we gathered feedback from our users and cracked our heads for potential solutions.

Finally we come out with Maker UNO custom board package for Arduino IDE. By using this board package, all digital I/O pins on Maker UNO will be initialized to OUTPUT and set to LOW by default. So when an LED is programmed to blink, all other LEDs will remain turned off. Those digital I/O pins which are not turned on in the program will not light up randomly and cause confusion. After one understands the fundamental concept of I/O, he can always choose to use the default Arduino/Genuino Uno board should the need arise.

Maker UNO board will be available after successful installation of the board package.
Maker UNO board will be available after successful installation of the board package.

What is the best? Though this may not be the best engineering practice, please be assured that it is the best solution we can offer after considering user-friendliness, compatibility and fulfillment deadline. We want to uphold the initial objective for Maker UNO that it is an educational tool designed for beginners and STEM educators. These users should breeze through their first lessons with Maker UNO without confusion, yet being able to use Maker UNO for greater projects in the future.

How to install? Please follow the steps in our Maker UNO Edu Kit Module, page 13-15.

Wayne San, Joachim Svärdh, and 10 more people like this update.

Comments

Only backers can post comments. Log In
    1. Kiate Collaborator on

      Thank you, @Harry. Yes, that's one of the fixes we offered to teachers during the pilot run. However, most of them prefer to maintain their teaching materials without adding in the extra code, which is understandable from the point of STEM education for beginners.

    2. Harry Chilinguerian on

      Instead of using a custom board why not just add a function to the bottom of any file or a library that initializes all the digital pins 2-13 to OUTPUT and LOW then call that function in the setup.

      Exp.:

      void MakerUNOInit() {
      for(int i=2;i<=13;++i) {
      pinMode(i, OUTPUT);
      digitalWrite(i, LOW);
      }
      }

      In the setup just call this first to initialize all the pins

      void setup() {
      MakerUNOInit();
      }

    3. Idris Zainal Abidin Collaborator on

      @Mark D FYI our first prototype is without MOSFET, direct from IO pin - LED - resistor - GND. No problem if set to input/output. But the problem comes when we set to internal pull up, the voltage divides. Then we finalise to do not change the originality of the IO, no resistor at all.

      We don't see this as a problem because we engineer understand the behaviour of unconnected input pin. Later we received feedback and realise this become a problem for educator to explain to the student learning microcontroller for the first time. That's why we come out with the board package to cater on early lesson and hope they can switch back to Arduino Uno (as a board in Arduino IDE) once they understand the concept.

      And now we received feedback from you guys internationally! We really appreciate it. :)

    4. Idris Zainal Abidin Collaborator on

      @Jon Raymond

      "The standard UNO has an LED and resistor in parallel with D13 with no ill effect. "

      I try to upload a sketch to original Arduino Uno with pin 13 as INPUT, the LED light up! Then I touch the pin 13, same behaviour happen on Maker UNO's LEDs.

      Anyway, we will try to find the best solution for this. Thanks for the feedback. :)

    5. Kiate Collaborator on

      @Jon & @Mark Thank you so much for pointing out the oversight!

      Thanks again to all of you for helping us to make Maker UNO a better product! Our team will surely work towards a solution which helps the beginners in learning Arduino and enable the educators to better deliver the knowledge in class.

      You’re going to get your Maker UNO, and it’s going to be awesome!

    6. Missing avatar

      Mark D on

      @Kiate I agree with Jon. By making the pins a low output you risk damage to the chip. Since these are designed for children to learn on they will hook up an input and forget to change it in the code. I've been an electrical engineer for almost 20 years. You need to use a pull down resistor if you want to keep the MOSFET. Since I don't know the specs on the MOSFET in use I can't tell you the value. This value is likely to be 100k or more witch will have little effect on the signals. I showed the circuit to my coworker who is more involved with the hardware design (I mostly do software, but review the hardware designs) and we agreed that you might not need the MOSFET at all. I would rather you get it correct and slip the schedule than have a work around that will potentially damage the board. I want these to work with the Boy Scouts on their merit badges. I know they will make the mistake Jon talked about.

    7. Jon Raymond on

      @Kiate
      "We need to preserve the original function of these pins."

      You must not understand how pull-down resistors work? A properly sized pull-down will not affect the function of the pin. They are used to bias the voltage level to a known state. The digital pin will work the same. To size the resistor you need to consider the current saturation point of your MOSFETs and the 328's internal pull-up resistors.

      Your suggested "work around" to set all the pins low is a very dangerous one. There are no inline current limiting resistors between the pin and the board header in your design. If someone connects 5 volts to any of the pins in the "low" state they will destroy that pin as it is a short circuit.

      In my opinion you have 2 options to fix this problem. Add appropriately sized pulled-down resistors to the MOSFET gates or remove the MOSFETs all together. Being this project is a "$6" development board you might be best with the second option. I'm not entirely sure why the MOSFET's were deemed necessary? The standard UNO has an LED and resistor in parallel with D13 with no ill effect. The forward voltage of the LED mitigates the issue of a floating pin.

    8. Kiate Collaborator on

      @Alvaro Really appreciate that you understand. We will definitely continue to look for a solution that better serves the educators and beginners. In the meantime, this is the best we can offer.

    9. Kiate Collaborator on

      @Kelley we are truly sorry to hear that you are leaving... Thanks again for considering Maker UNO in the first place.

    10. Kiate Collaborator on

      @L. Christopher Yes, but I would say it's very unnoticeable compared to the total memory size. This is the code added:

      // Set all digital pins LED at Maker Uno to LOW
      for (int pin = 2; pin < 14; pin++) {
      pinMode(pin, OUTPUT);
      }

    11. Kiate Collaborator on

      @Jon the gates of the N-mos are all connected to the digital I/O pins on the Maker UNO. We need to preserve the original function of these pins. We wouldn't know what will the users connect on these pins.

    12. Missing avatar

      Alvaro Bravo on

      I will stay with you, seems this unexpected behavior is quite an outcome when you have simple design and beside or any explanation I like the project to simplify teaching Arduino the workaround is valid and not necessarily elegant but works and that’s what matter

    13. Kelley Hendrix
      Superbacker
      on

      Sounds like you decided to go with a work around solution rather that fixing the issue. Sorry to say, I'm cancelling my pledge because I now worry about other incompetence that may have been introduced into the board. I hope I'm wrong and everyone gets a great reward. Good luck.

    14. L. Christopher Bird on

      Does the Maker Uno board package take up more memory in sketches by initializing all the pins?

    15. Jon Raymond on

      Is there a reason you didn't use pulldown resistors on the gates of the n-channel mosfets? This is standard practice and when sized correctly will solve this problem.

    16. Kiate Collaborator on

      The LEDs on Maker UNO digital pins are driven with MOSFETs to preserve the original functions on these pins. If you use these pins on Maker UNO as digital inputs, they will have no problem to return the HIGH state when 5V is fed to them because the onboard LEDs are not wired with series resistors which will pull the voltage level down. Hence it won't affect the original functions of the I/O pins.

    17. Kiate Collaborator on

      The LEDs are driven with MOSFETs. Schematic is available here https://cdn.cytron.io/makeruno/MAKER-UNO.pdf

    18. Curt Gridley on

      I suppose you may be using a separate buffer chip to drive the LEDs. So an ATmega328 pin configured for input would leave the associated input to the buffer chip floating, which could cause the problem you reported.

      Is there a schematic of the Maker UNO board available?

    19. Curt Gridley on

      I find this explanation a little hard to believe. While an input that isn't being driven can go to random state of input, I wouldn't expect it to drive out the milliamps of current required to turn an LED on.