USB2Go - Android Devices Everywhere, Arduino Extendable
USB2Go - Android Devices Everywhere, Arduino Extendable
Small USB development board for Android. Smartphone powered, USB 2.0 communication, direct connection, open sourced API.
Small USB development board for Android. Smartphone powered, USB 2.0 communication, direct connection, open sourced API. Read more
About this project
Thanks For Support!
View Blog - bit.ly/1p0EKFZ
It's an STM32 F1 ARM Cortex-M3 development board that connects directly to your Android smart phone micro USB port. It's powered from the phone so it has enough power for all sorts of applications without extra batteries, and when the device is connected to the phone the appropriate application starts up automatically.
For Who Is It?
Do you want to make a great Android external gadget like thermometer, thermal imaging, portable oscilloscope, devices for medical use or anything you ever dreamed about... Have you ever dreamed about creating your own smartphone gadget, but you don't need expensive wireless technologies which need their own batteries, or you think it's too complicated or just overkill? Than this is the perfect product for you, and the best part is… it is open sourced.
You Can Do It!
Are you an Android developer with “Hello world” experience? Do you know how to program Arduino? Are you a professional? Maybe you are looking for some DIY geek fun :) Or someone who just wants to learn?
We Have a Solution!
For Android developers, we developed USB2Go API for direct control of ARM peripherals. There is no ARM programming knowledge needed and it's really easy to use. You can control all GPIO's, ADC's, PWM, UART, I2C, SPI form our Android API.
For hobbyists, there is a graphical programming tool for simple and quick projects. Just plug it in drag a control on your screen and instantly you can control all ARM peripherals.
For professionals we have great USB API for ARM and Android for easy communication, with examples and template projects for quick start.
With specially designed male micro USB connector, you can connect USB2Go board directly to your phone without any cables. This enables very cost effective and compact solution, but if your application requires some distance, you can order a board with female connectors. It's up to you.
Just How Small Is It?
It's about the size of the USB pen drive or Arduino Mini board if that tells you more. The goal was to make it small but still large enough for easy handling and usage, that’s why it uses standard 2,54mm pitch headers so you can hook it up to anything.
Every application made with USB2Go can respond to USB events, so your application is automatically started when you plug in the device, and can automatically close when you remove it.
Powered From USB
It doesn't need external batteries or annoying recharging. USB2Go is powered from USB port which provides 5V and 500mA power supply. That amount of power can supply external sensors, lasers, LEDS, imaging sensors, motors, you name it. Because USB2Go has ARM Cortex-M3 low power, high performance core it enables standby mode. In this mode it needs only a few µA. Yes, that is micro!
Arduino extension board enables you to create Android powered Arduino projects.
USB2Go features STM32 F1 ARM Cortex-M3 microcontroller with USB Full Speed 12MB/s device controller. Our API runs on top of communication device class and uses two bulk endpoints one for data out and one for data in. Android 3.1 Honeycomb API level 12 and later already have built in USB communication support. So these two platforms together enable us to achieve high data throughput.
USB2Go can be used as a standalone device. Female version can be powered from micro USB charger from PC or phone charger.
Our preferred development tools for Android programming are Android Studio from Google and Eclipse. All open source projects are compatible with both IDE’s. For ARM programming we are using Keil uVision which you can use for free for up to 32kB program size. Projects are also compatible with IAR, CooCox and other development tools.
Included on USB2Go pinout are 18 digital IO pins, 8 analog inputs, 12 PWM, UART, SPI and I2c port.
For Android developers with application development experience we have Android API for USB2Go board. This enables you to control all GPIO’s, ADC’s, PWM, timers, RTC, USART, I2C, SPI from Java. This API sends commands to USB2Go board which processes the commands and responds to them, it’s really simple to use without any ARM core knowledge. Programming syntax is very similar to what you are used to.
Android Studio: Toggle GPIO
For professional Android and ARM developers we have API’s for USB communication. You need Android Studio or Eclipse IDE and Keil uVision which is free up to 32kB program size. This is the platform where you have no limits and you can achieve max data throughput. Because 20-pin JTAG connector is bigger than USB2Go we have JTAG 20-pin to SWD adapter that is compatible with ARM Cortex debuggers. If you have any questions about debuggers and debugging itself just contact us.
Android Studio: Data Loop
IDE for ARM: Data Loop
This is the fastest way to extend your phone with external device. Just plug in USB2Go board and use our graphical application building tools, to just drag and drop controls and create unique application without any programming. With this you can control LEDS read ADC's, switch relays on and off, or combine all of those. This is also the perfect starting point when you’ll open the USB2Go box, plug and play/test it to get the idea how easy and powerful this tool really is.
Application Builder: PWM Servo Control
Extensions and Accessories
When you are developing your own prototype, it’s easier if you can use some general extensions. To help you, we created a few extension boards and a break out board for Arduino compatibility. If you have any existing Arduino projects, you can easily port them to USB2Go platform and control them with your Smartphone.
USB2Go features STM32 F1 ARM Cortex-M3 microcontroller with USB Full Speed 12MB/s device controller. Our API runs on top of communication device class and uses two bulk endpoints one for data out and one for data in. Android 3.1 Honeycomb API level 12 and later already have built in USB communication support. So these two platforms together enable us to achieve high data throughput at 8Mb/s on our tests.
- USB2Go Mini -Connects directly to your phone.
- USB2Go Female -Connects to the phone with adapter or it can be a standalone device powered from USB charger.
- USB2Go Adapter -Adapter for USB2Go female.
- Arduino 2Go -Arduino extension board. It enables you to create Android powered Arduino projects.
- Relay 2Go -Control high power devices with relay extension for USB2Go.
- RGB LED 2Go -This is a simple demo device, to add RGB flashlight to smartphone.
- JTAG 2Go -Extension for debuging, JTAG/SWD.
Powered by Cortex ARM
- STM32 F1 ARM 32-bit Cortex™-M3 CPU
- 72 MHz maximum frequency, 1.25 DMIPS/MHz (Dhrystone 2.1)
- 128 Kbytes of Flash memory
- 64 Kbytes of SRAM
- Sleep, Stop and Standby modes
- Temperature sensor 2 × 12-bit D/A converters
- DMA: 12-channel DMA controller
- Supported peripherals: timers, ADCs, DAC, SDIO, I2Ss, SPIs, I2Cs and USARTs
These are very simple examples of USB2Go usage. They are all developed on top of our Android API for peripheral control. That means that all applications are developed without ARM programming, which is ideal if you are Android developer. These examples have a purpose, they are meant to be downloaded with all source code, for you to learn.
This example shows how you can extend your android phone with RGB flashlight. When the RGB LED is connected to the phone it starts up RGB application so you can change the color with your finger on color wheel.
USB2Go has hardware support for pulse width modulation PWM. In this example we are using this feature to control servo motors. To create such an application you have to add two lines of code to Android application that contains a slider control. First one for initializing PWM and second one to set duty cycle.
One word about this project: “OneWire!” This example shows you how to implement one wire protocol and read a temperature from a digital sensor.
“Early days” and where are we now
The idea for the project came when we tried to connect our smartphone to the external device. We tried to use audio jack, but it didn’t have enough power and data rate for a general application. We also considered different wireless communications (WiFi and Bluetooth), but the drawbacks were the cost of such solution and the need for external power supply. That is how we came to the idea to use USB. But searching the Internet did not give us a satisfactory solution, so we decided to extend our concept and bring it to the community.
The next thing to do was to proof our concept.
After that we designed and manufactured first prototype. From the first moment on it was designed for quality and production – as we are developing stuff for industry and automotive segment for several years.
And the USB2Go was born. To make it work, we developed software with different functionality, test it and improve it several times.
After testing we made some changes to USB2Go hardware for industrialization and we also used this run to bring the USB2Go family to life.
The whole project was also negotiated with selected production facilities and now we are ready to ramp up the production. So we need the Kickstarter community to kick off.
The Android and ARM platforms have a huge friendly and helpful community, and we want to be a part of it. USB2Go will be open source, and it will have its own forums and community center, where we will answer your questions, other developers can help you, and you can show your projects to the world. We are creating USB2Go site, where you will get all the links, source, software and quick start guides.
We Love Feedback
What type of connector do you prefer? What colors should the PCB and user LEDs be? Help us make this product even better by being a part of it, we will provide some surveys and we will answer all your questions so don’t hesitate to contact us.
Risks and challenges
We have many years of experience in electronic design and software development - also in some huge metering and automotive projects. USB2Go is a working prototype which we showed throughout the video and in this presentation. We have different connection options, Arduino extension board, relay and RGB shields JTAG adapter and they are all working products.
Software is fully functional and ready to go from home and explore the world. We will share it on one of the mayor open source forums for you to use it or to contribute to it.
We have calculated the delivery times for the components in the BOM and our pcb manufacturer is ready for pcb production, assembly and testing.
However there is always a possibility that something goes wrong - for example some component or its delivery time can be changed. We were thinking about that from the start, so we designed our product with pin-to-pin compatible components that can "jump in" in case of emergency. Also a second source for production is available. You - our contributors - will decide what color the boards will be.Then we will arrange packaging and shipping.
Yes, USB2Go acts as USB device.
No, USB communication in supported in stock Android system.
Yes, source code is ~10kB and there is no need for full license until 32kB
USB2Go will be preprogramed to work with program builder and Android API out of the box.
Support this project
- (30 days)