Need an Arduino developer? Post a new job.

Connect with Arduino developers looking to get your programming job opportunity to their inboxes.

Post a new Arduino job for Free

Are you an Arduino Developer?

ArduinoExperts provides skilled Arduino developers a way to get freelance gigs or a Full-Time job doing what they love - Arduino programming!

RFBee + Arduino 915MHz module

Posted by | July 4, 2013 | Arduino, Xbee

I recently discovered a sweet little module we’ll be evaluating at the SensorSuite lab.  This one uses 915Mhz (or 868Mhz for europe) and has an arduino built in.

I find this interesting because unlike the Digi Xbee, you can load your own intelligence on board this module and it’s a full wireless cpu.
The RFBee is a RF module providing easy and flexible wireless data transmission between devices. It is based on a AVR Atmega168 working as a fully functional Arduino connected via SPI to a TI CC1101 RF transceiver.

  • Range: indoor/Urban: up to 50m; Outdoor line-of-sight: up to 120m;
  • Receiver sensitivity: -95dBm
  • RF data transmission rate: 4,800bps; 76,800bps
  • Working frequency : 868MHz & 915MHz
  • Communication type: Point to Point, or Point to Multipoint.
  • Easy-to-Use serial interface and rich extendable ports
  • Easy-to-Use AT command: Set working mode, Serial Baud Rate, etc.
  • Open source hardware and firmware
  • Socket compatible with the Xbee, so you can plug it into any Xbee socket as a quick replacement.
only the Rx,Tx, VCC, GND pins are identical to the Xbee. RFbee will not communicate with Xbee, so RFbee need to be used on both ends of the wireless connection.



Arduino Yún wifi arduino

Arduino Yún wifi arduino


Arduino has launched the first member of a series of wifi products combining Arduino with Linux!

Yún means “cloud” in chinese language,  as the purpose of this board to make it simple to connect to complex web services directly from Arduino.

Massimo Banzi announced it some minutes ago during his annual “The state of Arduino” presentation at Maker Faire Bay Area:  Arduino Yún  is the first of a revolutionary family of wifi products combining Arduino with Linux.


Designed in collaboration with Dog Hunter, a company with extensive experience with Linux, the board adopts the Linino distribution which provides signed packages to ensure the authenticity of the software installed on the device.

Historically, interfacing Arduino with complex web services has been quite a challenge due to the limited memory available and they tend to use verbose text based formats like XML that require quite a lot or ram to parse. On the Arduino Yún we have created the Bridge library which delegates all network connections and processing of HTTP transactions to the Linux machine.

Arduino Yún is the combination of a classic Arduino Leonardo (based on the Atmega32U4 processor) with a Wifi system-on-a-chip running Linino (a MIPS GNU/Linux based on OpenWRT). It’s based on the ATMega32u4 microcontroller and on the Atheros AR9331, a system on a chip running Linino, a customized version of OpenWRT, the most used Linux distribution for embedded devices.

Like a Leonardo, it has 14 digital input/output pins (of which 7 can be used as PWM outputs and 12 as analog inputs), a 16 MHz crystal oscillator and a micro USB connector.

Arduino_Yun Wifi Arduino with Linux

Arduino_Yun Wifi Arduino with Linux


Like any modern computer, it’s Wi-Fi enabled, it has a Standard-A type USB connector to which you can connect your USB devices and it has a micro-SD card plug, for additional storage.

The Yún ATMega32u4 can be programmed as a standard Arduino board by plugging it to your computer with the micro USB connector. And you can also program it via Wi-Fi.

When the Yún is turned on for the first time, it becomes an Access Point, creating a Wi-Fi network named “Arduino”. Open your browser and go to the webpanel: configure the board by entering your Wi-Fi network name, type and password. Click the “Configure” button to restart the board and have it join your home network. Opening the IDE, you’ll see it listed in the “Port” sub menu with its IP address instead of the serial port name.

Using the Bridge library in your sketches, you can link the 32u4 to Linux, launching programs and scripts, passing them parameters (sensor readings for example) and reading their output, thus creating a strong integration between the creativity of your sketch and the power of Linux. The Yún supports Shell and Python scripts out-of-the-box but you can install a wide range of open source software and tools.

For the Linux geek in you, Yún can be reached with SSH:  that means you’ll be able to customize it in whatever way. And you’ll always be able to reset it to its factory settings.


Arduino Yún will be available at the end of June at the price of 69$ + taxes.

Arduino Esplora now shipping

Posted by | May 9, 2013 | Arduino


The Arduino Esplora Is the Perfect Beginner Arduino, No Electronics Experience Required
The Arduino Esplora is a ready-to-use, easy-to-hold controller that lets you explore the infinitive possibilities you have in the world of sensor and actuators, without having to deal with breadboards, soldering or cable.


There is no limit to the applications-amusing, educational, useful – you can program. You can even add a couple of extra sensor and actuators if you need them. Add a colour LCD module and you’ll be able to create original game on your very own open-source console!


One of the most difficult parts of any Arduino project is coming up with a way to actually interact with your creations. The Arduino Esplora is a new device that remedies that, and works as an open source controller for all types of projects.

At a glance, the Esplora looks just like a game controller, but it can be used for a wide variety of means. It has a built-in joystick, four buttons, a light sensor, slider, microphone, temperature sensor, and an accelerometer. It also connects easily with a USB cable, and works essentially like a keyboard or mouse input on your computer. As you’d expect, the Esplora launches with a library of code to get you started. The Esplora certainly looks like a game controller, but since it’s the only Arduino that comes with a bunch of different input options it’s also a great way to get started with Arduino without worrying about soldering or breadboards.







This is the first time that makers from all over Europe are gathering and it’s called MakerFaire Rome.   Call for Makers closes on June 2nd so make sure to apply if you’re interested.

If you are one of them and you think that makers from your city in Europe would be interested in  joining the event and submitting a project to the call, we can send you a package full of flyers, postcards, stickers and support you into organizing a local event about it.

There’s only 50 kits so apply quickl .. The MakerFaire Rome Ambassador Kit includes:

Small stickers




The new Beagle Bone black has arrived and it’s awesome.  Half the price of the first version and more power than the Raspberry PI and Arduino.

First off, the power and ethernet port are placed in a smart way.  The Raspberry PI is a mess of ports that go the whole way around the board.. Beagle Bone has the 2 most important ports exposed in a way that can easily be mounted in any enclosure.


The 2nd important point is that it has 2GB of internal flash memory.. so unlike the raspberry pi, you can actually load code on this thing with some safety.  It’s a hell of alot better than an SD card sticking out the side like the rpi.



I’m excited to start deploying these things and see how trusty they are.

What is BeagleBone Black?

BeagleBone Black is a $45 MSRP community-supported development platform for developers and hobbyists. Boot Linux in under 10 seconds and get started on development in less than 5 minutes with just a single USB cable.

Processor: AM335x 1GHz ARM® Cortex-A8

  • 3D graphics accelerator
  • NEON floating-point accelerator
  • 2x PRU 32-bit microcontrollers


  • USB client for power & debug
  • USB host
  • Ethernet
  • HDMI
  • 2x 46 pin headers

Software Compatibility

  • Ångström Linux
  • Android
  • Ubuntu
  • Cloud9 IDE on Node.js w/ BoneScript library
  • plus much more

Simple Data Logging using Arduino

Posted by | March 2, 2013 | Arduino

simple datalogging with arduino

simple datalogging with arduino


The project itself is not complex less than familiar with some concepts such as I2C and SPI, In fact, I decided to use a shield SD Card to write my data to an SD card 64GB, more than sufficient for some line of log in a text file, and an RTC to maintain the time of acquisition of the log.

Proceed in order starting from the material needed for the project data logging with Arduino:

  • 1 Arduino Uno
  • 1 RTC Shield or another based on RTC DS1307
  • n.1 SD Card shield
  • # 5 buttons n.a. ( normally open )
  • # 5 330ohm resistors
  • n.1 breadboard
  • for some cable connections

Defined the material must bear in mind that the RTC used as the communication protocol I2C Bus ie pin SDA ( pin A4 ) and SCL ( pin A5 ) Arduino, Shield some have the possibility to use the 2 additional pins SDA and SCl present on the Arduino Uno R3, however, these pins are connected, level arduino, to the same pin A4 and A5, for which the corresponding Analog inputs are still usable.

The scield SD card using the SPI bus consists of the pins:


in addition to 3.3v and Gnd, some SD card used as pin CS pin 4, is the case of Ethernet Shield Journal Arduino that in addition to the pins 13,12,11 use the pin 4 come CS.

The circuit data logging with Arduino

To connect the Arduino shield, you should not use it if it, as I did, the shield stacked to make your data logging, the only connections to concern 5 buttons that are connected as usual through a pull-down ( to Gnd ) da 330ohm.

The first 4 buttons, use them to simulate the change of data on inputs A0, A1, A2 and A3 and the fifth button will use it to indicate that you want to reload the sketch and read the file on the SD Card, I call it READ button, here is a picture of the buttons

data logging

and one of the connections to the analog inputs

data logging valori analogici

while the fifth button ( Read ) you must connect to pin 9 data logging with arduino

data logging read

Operation of the data logging

The data logging with Arduino is an experiment, so I decided to use the 4 buttons to simulate the change of values ​​detected by the ADC ( analog to digital converter ) Arduino, considers that each value converted by the ADC sull’Arduino One can vary from 0 a 1023 ( 10bit ) and will be 0 when the button is not pressed through a 1023 when you press one of the buttons.

The data logging simultaneously write to the log file and the monitor serial data collected from 4 analog pin in addition to the date and time at which the data was collected.

You can replace each of the 4 buttons with the sensor you see fit, I deliberately used the analog inputs to allow you to be able to detect 1024 signal levels from each pin, if you used the pin digital I could only detect the transition from LOW to HIGH state is and vice versa.


You can not use pins A4 and A5 as they are used for the I2C Bus RTC shield.


Download sketch del data logging

You can download the sketch and the RTC library that I used for this project directly from GitHub.


data logging sketch

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
#include <SD.h>
#define readButton 9
#define CS 10
char buffer[40];
File myFile;
void setup () {
    Serial.print("Initializing SD card...");
    pinMode(CS, OUTPUT);
    pinMode(readButton, INPUT);
    if (!SD.begin(CS)) {
      Serial.println("initialization failed!");
    Serial.println("initialization done.");
    RTC.sqw(1);     //0 Led off - 1 Freq 1Hz - 2 Freq 4096kHz - 3 Freq 8192kHz - 4 Freq 32768kHz
    if (! RTC.isrunning()) {
      Serial.println("RTC is NOT running!");
      // following line sets the RTC to the date & time this sketch was compiled
      RTC.adjust(DateTime(__DATE__, __TIME__));
void loop () {
    DateTime now =;
    sprintf(buffer,  "%02d/d/%d d:%02d:%02d %d %d %d %d",, now.month(), now.year(), now.hour(), now.minute(), now.second(), analogRead( A0 ), analogRead( A1 ), analogRead( A2 ), analogRead( A3 ) );
    Serial.println( buffer );
    myFile ="dati.log", FILE_WRITE);
    if (myFile) {
      myFile.println(buffbuffer     myFile.close();
    } else {
      Serial.println("error opening dati.log");
    if ( digitalRead( readreadButton= HIGH ) {
        Serial.println(" ");
        Serial.println("Log Reading Saved ----------- ");
        mymyFile = SD.opendadati.log;
        if (myifFile{
          while (myFile.available()) {
        delay( 5000 );


the sketch of the data logging includes both classes needed to communicate with the RTC and those to use the SD Card shield:

lines 03-04: Wire include the class and the class to communicate with the RTC DS1307 through the I2C protocol;

line 05: include the class to read and write to the SD Card with SD SPI protocol;

lines 07-08: define in which pins you have connected the button you will use to re-read the log data logging and pin CS that your SD Card uses;

line 10: initializes the RTC;

line 11: define a buffer in which to memorize the time and the detected values. To calculate the length of the buffer can count the maximum number of characters that may contain, you know that the date is made 10 caratteri ( gg / mm / aaaa ) and time to 8 caratteri ( hh:mm:ss ) and that between the two there is a space, then you know that each value is separated by a space to allow you to easily read and the highest value of each pin is 1023 ( 4 caratteri ) for which tcharactersation is: 10 + 1 + 8 + 1 + 4 + 1 + 4 + 1 + 4 + 1 +4 = 39 for which you can define the buffer 40 ( considering a margin of 1 value )

lines 16-17: sets the communication with the serial monitor 57600 baud and write on the serial monitor the string “Inizializing SD card …”

lines 18-19: sets the operation mode to the CS pin and the pin connected to the button reading ( pin 9 );

lines 21-24: initializes the object with the SD method beginand passing the value of the pin CS, if it fails to initialize the SD Card writes the serial monitor “Initialization failed” and exits the setup function using the command return;

lines 27-34: Wire and initializes the RTC, tax 1 according to the flashing frequency of the SQW LEDs present on the RTC Shield and if time is not configured sets the current time of the RTC Pc, for the procedure read the articleTutorial: RTC Shield con DS1307;

line 38: sets an instance of type DateTime as;

line 40: compose the line buffer using the command sprintf( buffer, format, val1, val2 ….walnuts )where buffer is the variable in which to store the entire string, the format is that of the command sprintf ( see manual ), and subsequent values ​​are the ones you want to buffer;

line 41: write the serial monitor the value of buffer;

line 43: Open the file in write mode “dati.log” on the SD Card data logging

lines 44-46: if the file pointer dati.logthere, ie if you are unable to open communication with the SD card inserted in the SD Card Shield write the string bufferand close the file;

lines 47-49: in the event of failure to open a file dati.logwrite the string on the serial monitor “error opening dati.log”;

line 51: check that the value detected on pin buttonReadsia HIGHmeans that the pushbutton connected to this pin has been pressed;

lines 52-54: write a blank line on the serial monitor, la stringa “Log Reading Saved ————–” and an additional blank line, only serves to separate lines written by the normal operation from those read from the SD Card of the data logging;

line 55: open the file dati.login read mode, In fact you do not specify any parameters as the second argument of the method open;

lines 56-61: If the file has been successfully opened read line by line the log file and write the result of each line on the serial monitor;

line 62: set a delay 5 second ( 5000 milliseconds ) before returning to normal operation log;

line 65: sets a delay of 1 second between one cycle of the function loop()and the following.

The video data logging with Arduino

In order to show how the data logging you just realized you can watch the video that I made during my test with data logging:


Full post:

Arduino and ATMega Pinout Diagrams

Posted by | March 2, 2013 | Arduino

Thanks to Pighixxx from the Arduino forum for creating beautiful pinout diagrams for the Arduino UNO and for several ATMega microcontrollers, such as the ATMega 328 and the ATMega 1284p.


Arduino Uno pinout

Arduino Uno pinout


ATMega328 Pinout

ATMega328 Pinout Diagram

ATMega328 Pinout Diagram


Arduino Esplora

Posted by | December 10, 2012 | Arduino



Arduino is the go to board for most folks looking for an introduction to microcontrollers. That’s largely thanks to its sizable community, ease of use and surprising versatility. But, there is one small stumbling block for those just looking to dip their toes in the ATmega-powered waters: you’ll need to provide your own sensors, components and breadboard. (At least you will unless you’re satisfied just making the built-in LED blink.) The Esplora bakes some of those essential bits and pieces right on to the board. It’s crafted around the same core as the Leonardo, but adds an accelerometer, microphone, analog joystick, four buttons, a light sensor, temperature sensor, linear potentiometer and a buzzer to the mix. While the gamepad-like layout means you wont be able to connect to any of the dozens of Arduino shields out there, it does have a pair of TinkerKit inputs and outputs for expanding the Esplora’s capabilities. There’s also a place to connect an upcoming LCD module. The Esplora is available now direct from Arduino for €41.90.


Here’s a new piece of hardware from your beloved OSHW project. The Arduino Esplora is meant for newbies and anybody willing to enter in the world of Arduino, without having to deal with breadboards or soldering. Shaped like a game controller, it’s designed to be used out of the box without extra parts since it comes with many sensors and actuators already on it.

Arduino Due is here!

Posted by | October 22, 2012 | Arduino

Arduino Due

Arduino Due

Arduino has debuted a new board dubbed the Arduino Due. The device is powered by an ARM Cortex M3 processor and is targered at modders interested in projects requiring higher computing power. To be sure, Arduino specifically highlights the Due as an ideal piece of hardware for projects such as remote-controlled drones that need to process heavy loads of sensor data to fly.

The Arduino Due is a microcontroller board based on the Atmel SAM3X8E ARM Cortex-M3 CPU (datasheet). It is the first Arduino board based on a 32-bit ARM core microcontroller. It has 54 digital input/output pins (of which 12 can be used as PWM outputs), 12 analog inputs, 4 UARTs (hardware serial ports), a 84 MHz clock, an USB OTG capable connection, 2 DAC (digital to analog), 2 TWI, a power jack, an SPI header, a JTAG header, a reset button and an erase button.

Warning: Unlike other Arduino boards, the Arduino Due board runs at 3.3V. The maximum voltage that the I/O pins can tolerate is 3.3V. Providing higher voltages, like 5V to an I/O pin could damage the board.


The board contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started. The Due is compatible with all Arduino shields that work at 3.3V and are compliant with the 1.0 Arduino pinout.


Arduino says that the Due is also perfect for students who want to learn the inner workings of the ARM processor in a cheaper and easier way than before. Of course, the Due can also be used for scientific projects that require the rapid and accurate acquisition of data. In addition, the board offers devs a viable platform for the creation of open-source tools.

Indeed, the new platform is designed to help the open-source digital fabrication community achieve higher resolutions and faster speeds with fewer components than was previously required. Meaning, using the new Due board, 3-D printers, laser cutters, and CNC milling machines will be able to operate more efficiently than in the past.

The specific processor the board uses is a SAM3X8E from Atmel based on a 32-bit Cortex M3 operating 84 MHz. The Arduino Due also features USB 2.0 interface operating at 480 Mb that allows the board to act as a USB host. That means you can interface other USB devices with the board such as mice, keyboards, cameras, and more.

The Due also supports the Android ADK 2012 protocol and has 12 analog inputs 12-bit resolution, along with four high-speed serial communications ports, 70 input/output pins, a high-speed CAN interface, 12 PWM channels and two i2C bus.

ARM Core benefits

The Due has a 32-bit ARM core that can outperform typical 8-bit microcontroller boards. The most significant differences are:


  • A 32-bit core, that allows operations on 4 bytes wide data within a single CPU clock. (for more information look int typepage).
  • CPU Clock at 84Mhz.
  • 96 KBytes of SRAM.
  • 512 KBytes of Flash memory for code.
  • a DMA controller, that can relieve the CPU from doing memory intensive tasks.


Schematic, Reference Design & Pin Mapping

EAGLE files:


Schematic: arduino-Due-schematic.pdf


Pin Mapping: SAM3X Pin Mapping page



Microcontroller AT91SAM3X8E
Operating Voltage 3.3V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 54 (of which 12 provide PWM output)
Analog Input Pins 12
Analog Outputs Pins 2 (DAC)
Total DC Output Current on all I/O lines 130 mA
DC Current for 3.3V Pin 800 mA
DC Current for 5V Pin 800 mA
Flash Memory 512 KB all available for the user applications
SRAM 96 KB (two banks: 64KB and 32KB)
Clock Speed 84 MHz



The Arduino Due can be powered via the USB connector or with an external power supply. The power source is selected automatically.


External (non-USB) power can come either from an AC-to-DC adapter (wall-wart) or battery. The adapter can be connected by plugging a 2.1mm center-positive plug into the board’s power jack. Leads from a battery can be inserted in the Gnd and Vin pin headers of the POWER connector.


The board can operate on an external supply of 6 to 20 volts. If supplied with less than 7V, however, the 5V pin may supply less than five volts and the board may be unstable. If using more than 12V, the voltage regulator may overheat and damage the board. The recommended range is 7 to 12 volts.


The power pins are as follows:


  • VIN. The input voltage to the Arduino board when it’s using an external power source (as opposed to 5 volts from the USB connection or other regulated power source). You can supply voltage through this pin, or if supplying voltage via the power jack, access it through this pin. 
  • 5V. This pin outputs a regulated 5V from the regulator on the board. The board can be supplied with power either from the DC power jack (7 – 12V), the USB connector (5V), or the VIN pin of the board (7-12V). Supplying voltage via the 5V or 3.3V pins bypasses the regulator, and can damage your board. We don’t advise it. 
  • 3.3V. A 3.3 volt supply generated by the on-board regulator. Maximum current draw is 800 mA. This regulator also provides the power supply to the SAM3X microcontroller. 
  • GND. Ground pins. 
  • IOREF. This pin on the Arduino board provides the voltage reference with which the microcontroller operates. A properly configured shield can read the IOREF pin voltage and select the appropriate power source or enable voltage translators on the outputs for working with the 5V or 3.3V.



The SAM3X has 512 KB (2 blocks of 256 KB) of flash memory for storing code. The bootloader is preburned in factory from Atmel and is stored in a dedicated ROM memory. The available SRAM is 96 KB in two contiguous bank of 64 KB and 32 KB. All the available memory (Flash, RAM and ROM) can be accessed directly as a flat addressing space.


It is possible to erase the Flash memory of the SAM3X with the onboard erase button. This will remove the currently loaded sketch from the MCU. To erase, press and hold the Erase button for a few seconds while the board is powered.


Input and Output

  • Digital I/O: pins from 0 to 53
    Each of the 54 digital pins on the Due can be used as an input or output, using pinMode()digitalWrite(), and digitalRead()functions. They operate at 3.3 volts. Each pin can provide (source) a current of 3 mA or 15 mA, depending on the pin, or receive (sink) a current of 6 mA or 9 mA, depending on the pin. They also have an internal pull-up resistor (disconnected by default) of 100 KOhm. In addition, some pins have specialized functions: 
  • Serial: 0 (RX) and 1 (TX)
  • Serial 1: 19 (RX) and 18 (TX)
  • Serial 2: 17 (RX) and 16 (TX)
  • Serial 3: 15 (RX) and 14 (TX)
    Used to receive (RX) and transmit (TX) TTL serial data (with 3.3 V level). Pins 0 and 1 are connected to the corresponding pins of the ATmega16U2 USB-to-TTL Serial chip. 
  • PWM: Pins 2 to 13
    Provide 8-bit PWM output with the analogWrite() function. the resolution of the PWM can be changed with theanalogWriteResolution() function. 
  • SPI: SPI header (ICSP header on other Arduino boards)
    These pins support SPI communication using the SPI library. The SPI pins are broken out on the central 6-pin header, which is physically compatible with the Uno, Leonardo and Mega2560. The SPI header can be used only to communicate with other SPI devices, not for programming the SAM3X with the In-Circuit-Serial-Programming technique. The SPI of the Due has also advanced features that can be used with the Extended SPI methods for Due
    These pins support the CAN communication protocol but are not not yet supported by Arduino APIs. 
  • “L” LED: 13
    There is a built-in LED connected to digital pin 13. When the pin is HIGH, the LED is on, when the pin is LOW, it’s off. It is also possible to dim the LED because the digital pin 13 is also a PWM outuput. 
  • TWI 1: 20 (SDA) and 21 (SCL)
  • TWI 2: SDA1 and SCL1.
    Support TWI communication using the Wire library
  • Analog Inputs: pins from A0 to A11
    The Due has 12 analog inputs, each of which can provide 12 bits of resolution (i.e. 4096 different values). By default, the resolution of the readings is set at 10 bits, for compatibility with other Arduino boards. It is possible to change the resolution of the ADC with analogReadResolution(). The Due’s analog inputs pins measure from ground to a maximum value of 3.3V. Applying more then 3.3V on the Due’s pins will damage the SAM3X chip. The analogReference() function is ignored on the Due.


The AREF pin is connected to the SAM3X analog reference pin through a resistor bridge. To use the AREF pin, resistor BR1must be desoldered from the PCB.


  • DAC1 and DAC2
    These pins provides true analog outputs with 12-bits resolution (4096 levels) with the analogWrite() function. These pins can be used to create an audio output using the Audio library.


Other pins on the board:


  • AREF
    Reference voltage for the analog inputs. Used with analogReference(). 
  • Reset
    Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.



The Arduino Due has a number of facilities for communicating with a computer, another Arduino or other microcontrollers, and different devices like phones, tablets, cameras and so on. The SAM3X provides one hardware UART and three hardware USARTs for TTL (3.3V) serial communication.


The Programming port is connected to an ATmega16U2, which provides a virtual COM port to software on a connected computer (To recognize the device, Windows machines will need a .inf file, but OSX and Linux machines will recognize the board as a COM port automatically.). The 16U2 is also connected to the SAM3X hardware UART. Serial on pins RX0 andTX0 provides Serial-to-USB communication for programming the board through the ATmega16U2 microcontroller. The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the board. The RX and TX LEDs on the board will flash when data is being transmitted via the ATmega16U2 chip and USB connection to the computer (but not for serial communication on pins 0 and 1).


The Native USB port is connected to the SAM3X. It allows for serial (CDC) communication over USB. This provides a serial connection to the Serial Monitor or other applications on your computer. It also enables the Due to emulate a USB mouse or keyboard to an attached computer. To use these features, see the Mouse and Keyboard library reference pages.


The Native USB port can also act as a USB host for connected peripherals such as mice, keyboards, and smartphones. To use these features, see the USBHost reference pages.


The SAM3X also supports TWI and SPI communication. The Arduino software includes a Wire library to simplify use of the TWI bus; see the documentation for details. For SPI communication, use the SPI library.



The Arduino Due can be programmed with the Arduino software (download). For details, see the reference and tutorials.


Uploading sketches to the SAM3X is different than the AVR microcontrollers found in other Arduino boards because the flash memory needs to be erased before being re-programmed. Upload to the chip is managed by ROM on the SAM3X, which is run only when the chip’s flash memory is empty.



Either of the USB ports can be used for programming the board, though it is recommended to use the Programming port due to the way the erasing of the chip is handled :


  • Programming port: To use this port, select “Arduino Due (Programming Port)” as your board in the Arduino IDE. Connect the Due’s programming port (the one closest to the DC power jack) to your computer. The programming port uses the 16U2 as a USB-to-serial chip connected to the first UART of the SAM3X (RX0 and TX0). The 16U2 has two pins connected to the Reset and Erase pins of the SAM3X. Opening and closing the Programming port connected at 1200bps triggers a “hard erase” procedure of the SAM3X chip, activating the Erase and Reset pins on the SAM3X before communicating with the UART. This is the recommended port for programming the Due. It is more reliable than the “soft erase” that occurs on the Native port, and it should work even if the main MCU has crashed. 
  • Native port: To use this port, select “Arduino Due (Native USB Port)” as your board in the Arduino IDE. The Native USB port is connected directly to the SAM3X. Connect the Due’s Native USB port (the one closest to the reset button) to your computer. Opening and closing the Native port at 1200bps triggers a ‘soft erase’ procedure: the flash memory is erased and the board is restarted with the bootloader. If the MCU crashed for some reason it is likely that the soft erase procedure won’t work as this procedure happens entirely in software on the SAM3X. Opening and closing the native port at a different baudrate will not reset the SAM3X.


Unlike other Arduino boards which use avrdude for uploading, the Due relies on bossac.


The ATmega16U2 firmware source code is available in the Arduino repository. You can use the ISP header with an external programmer (overwriting the DFU bootloader). See this user-contributed tutorial for more information.


USB Overcurrent Protection

The Arduino Due has a resettable polyfuse that protects your computer’s USB ports from shorts and overcurrent. Although most computers provide their own internal protection, the fuse provides an extra layer of protection. If more than 500 mA is applied to the USB port, the fuse will automatically break the connection until the short or overload is removed.


Physical Characteristics and Shield Compatibility

The maximum length and width of the Arduino Due PCB are 4 and 2.1 inches respectively, with the USB connectors and power jack extending beyond the former dimension. Three screw holes allow the board to be attached to a surface or case. Note that the distance between digital pins 7 and 8 is 160 mil (0.16″), not an even multiple of the 100 mil spacing of the other pins.

Our friends at Social Wire Inc. have started accepting gigs to build your next IoT project!

These guys have built an awesome product around wireless sensor networks using the hottest new technology.. They do:

- Arduino Development

- Raspberry Pi Development (Linux/Android)

- Wireless Sensor Network development (Zigbee/Xbee/ low level wireless design using TI cc2530)


>> Get a quote from Social Wire to build your next IoT project


They designed the wireless sensor hardware as well as the node manager hub and all the software to transport the data to the cloud..

Wireless sensor developer arduino

Wireless sensor developer arduino


Here’s a screen shot of their cloud dashboard in action:

Social Wire -Arduino developers toronto

Social Wire -Arduino developers toronto