MangoCube

Pocket sized Arduino compatible board

Variants

MangoCube BLE

with Bluetooth 4.0 functionality

MangoCube LEO

Arduino Leonardo Compatible

MangoCube WiFi

with WiFi 802.11 b/g/n functionality

MangoCube LEO

Arduino Leonardo Compatible

It has the same MCU (ATmega32U4) and Bootloader installed as Arduino Leonardo . Pins on the boards are compatible to Leonardo, which makes it very easy to adapt this board.

Human Interface Device (HID)

It has 'USB-HID device' functionality. That means it can be used to make your own fully customised Keyboard, Mouse, Joystick or Midi device

Colourful case

It has colourful case, which makes MangoCube look cool! Apart from giving aesthetically great look, the case protects the core board from surrounding. It has holes for Lanyard/key-chain.

MangoCube BLE

Bluetooth Low Energy

It supports Bluetooth low energy (Bluetooth LE, BLE) standard. All latest smart phones and tablets including iPhone, iPad supports this Bluetooth standard.

Simple UART interface

It has simple UART connection with MCU and supports very simple AT commands to communicate/control.

All in one App

Comes with All in one App called MangoCube BLE, which is very easy to use and makes BLE communication effortless.

MangoCube WiFi

IEEE 802.11 b/g/n

Supports IEEE 802.11 b, g and n standards. It has fully self-contained small form-factor, single stream WiFi module.

Simple UART interface

It has simple UART connection with MCU and supports very simple AT commands to communicate/control.

AP, STA and AP+STA mode

Supports Access Point (AP), Station (STA) or combination of Access Point and Station mode functionalities. Which means your WiFi enabled device(Phone) can connect to MangoCube WiFi or vice versa.

Comparison

  • Arduino Compatible
  • Processor
  • USB HID
  • Plastic Case
  • Case colour
  • Bluetooth 4
  • Wi-Fi 802.11

MangoCube

LEO

.

  • Yes
  • ATmega32U4
  • Yes
  • Yes
  • Yellow
  • No
  • No

MangoCube

BLE

.

  • Yes
  • ATmega32U4
  • Yes
  • Yes
  • Blue
  • Yes
  • No

MangoCube

WiFi

.

  • Yes
  • ATmega32U4
  • Yes
  • Yes
  • Red
  • No
  • Yes

Downloads

MangoCube BLE App

BLE User Manual

BLE

WiFi User Manual

Schematic

Tutorials

Auto updating Analog pin Value to ThingSpeak!

Use following code to automatically update analog pin value to ThingSpeak

// Auto Connect to Internet using MangoCube WiFi by Bhargav Mistry

#define DEBUG false
boolean cmode = false;
String response = "";
char c;
//------------ Your WiFi settings
String sid = "Century";       // SSID : Name of Home WiFi 
String Auth = "WPA2PSK";      // Authentication  : OPEN, SHARED, WPAPSK, WPA2PSK
String Encry = "AES";         // Encryption : AES, TKIP, NONE, WEP
String Key = "yourpassword";   // key : your WiFi Internet Password

String Url = "http://api.thingspeak.com";   // URL: address of the website to connect
//String Pph ="/update?key=E7FSORWU63FL9DL5&field1=10"; // Header path
String ApiKey = "E7FSORWU63FL9DL5";         // Api key : Thingspeak's key
String FValue = "0";         // Field Value : Value to upload
String FLink;   // Full Link

// the setup routine runs once when you press reset:
void setup() {

  pinMode(13, OUTPUT); 
  digitalWrite(13,LOW); 

  Serial.begin(115200); 
  while (!Serial) {    ; // wait for serial port to connect. Needed for Leonardo only
  }
  Serial1.begin(115200);
  delay(3000);        // delay after reboot, enough time to open serial moitor
  
  sendData("+++",500,DEBUG);                 // send +++
  if(response == "a")                        // if response is a 
      {
        sendData("a",500,DEBUG);             // send  a
        if(response == "+ok\r\n\r\n")       // if response is a+ok 
        {
          Serial.println("In Command mode");   // Command Mode
          cmode = true;
        }
      }
   
   sendData("AT+E=off\r",500,DEBUG);          // Hide Echo
   if(response =="AT+E=off\n\r+ok\r\n\r\n")   // if response is a+ok 
   {     Serial.println("Echo Off");    }  
    
    sendData("AT+WMODE=STA\r",500,DEBUG);     // Set STA mode
    if(response =="+ok\r\n\r\n")              // if response is a+ok 
    {     Serial.println("STA Mode");    }
        
    sendData("AT+HTTPURL="+Url+",80\r",500,DEBUG); // Set Url
    if(response =="+ok\r\n\r\n")               // if response is a+ok 
    {     Serial.println("URL is set :"+ Url); }
    
    sendData("AT+WSSSID="+sid+"\r",500,DEBUG); // Set SSID
    if(response =="+ok\r\n\r\n")               // if response is a+ok 
    {     Serial.println("SSID is set :"+ sid); }
     
    
    sendData("AT+WSKEY="+Auth+","+Encry+","+Key+"\r",500,DEBUG); // Set Security Key
    if(response =="+ok\r\n\r\n")               // if response is a+ok 
    {     Serial.println("SKEY is set :"+Auth+","+Encry+", *****"); }
    
    delay(100); 
    Serial1.print("AT+Z\r");          // Restart WiFi module 
    delay(7000);
    
    // enter command mode again.......................................
    sendData("+++",500,DEBUG);                 // send +++
    if(response == "a")                        // if response is a 
        {
          sendData("a",500,DEBUG);             // send  a
          if(response == "+ok\r\n\r\n")       // if response is a+ok 
          {
            Serial.println("In Command mode");   // Command Mode
            cmode = true;
          }
        }    
   sendData("AT+E=off\r",500,DEBUG);          // Hide Echo
   if(response =="AT+E=off\n\r+ok\r\n\r\n")   // if response is a+ok 
   {     Serial.println("Echo Off");    } 
     
   sendData("AT+WIFI\r",500,DEBUG);     // Set STA mode
}

void loop() 
{
  if(cmode)
  {
    sendData("AT+WIFI\r",500,DEBUG);     //Check if connected to WiFi
    if(response =="+ok=UP\r\n\r\n")              // if response is a+ok 
    {     Serial.println("Connected to Internet!");    }
    delay(1000);
    }
    
    // Use this code to upload different value of Val.  Tip: assign Val to Analog pin value!!
    for(int Val=0; Val<15; Val=Val+2)
    {
        
        FLink = "AT+HTTPPH=/update?key="+ApiKey+"&field1="+Val;
        Serial.println(FLink);
        sendData(FLink+"\r",500,DEBUG); // Set Header path
        Serial.println(response);
        if(response =="+ok\r\n\r\n")           // if response is a+ok 
        {             
              sendData("AT+HTTPDT\r",5000,DEBUG); // Set Header path
              Serial.print(response);     
        }
        delay(11000);
    }
    for(int Val=13; Val>0; Val=Val-2)
    {
        FLink = "AT+HTTPPH=/update?key="+ApiKey+"&field1="+Val;
        Serial.println(FLink);
        sendData(FLink+"\r",500,DEBUG); // Set Header path
        Serial.println(response);
        if(response =="+ok\r\n\r\n")           // if response is a+ok 
        {             
              sendData("AT+HTTPDT\r",5000,DEBUG); // Set Header path
              Serial.print(response);     
        }
        delay(11000);
    }
    
  // Your code here....
  //

}

// Do not change the following...important..!!
String sendData(String command, const int timeout, boolean debug)
{
    response = "";
    Serial1.print(command);     
    long int time = millis();    
    while( (time+timeout) > millis())
    {
      while(Serial1.available())
      {
        c = Serial1.read(); // read the next character.
        response+=c;        // combined all the character together
      }  
    }  
    if(debug)
    { Serial.print(response);    }  
    return response;
}

Connect to Internet with MangoCube WiFi and simple Arduino code!

Use following arduino code to connect with your Home Wi-Fi network using nothing else but just MangoCube WiFi! Once uploaded open Arduino serial monitor within 3 sec and you should see the above response :)

Upload sensor data to a remote website (thingspeak)

Imaging you want to read temperature sensor (DHT11 and 22 are very common!) data and want to upload to a website in order to create database of temperature with specific locations. Here is a simple tutorial on how to achieve that...(this tutorial is under process..)

Control LED light with MangoCube BLE App

Here is the tutorial which shows how to connect to BLE board via MangoCube BLE App on Android and how to control LED light on your Arduino board...