Slides from SCREENS 2011 in Toronto, Canada. Covers the Android Open Accessory support released for 3.1+ or 2.3.4+ devices, and the Android Development Kit (ADK)
Slides from SCREENS 2011 in Toronto, Canada. Covers the Android Open Accessory support released for 3.1+ or 2.3.4+ devices, and the Android Development Kit (ADK)
A summary of my work on an Android controller for specially programmed Arduino boards. It walks through the resources, methods, and trade-offs of the process.
Celebrating Arduino Day in Federal University of Technology, Minna, Nigeria.
This slides gives a basic introduction to what arduino is and gives a picture tour of what has been done with arduino in Federal University of Technology, Minna
This project is done for partial fulfillment of Bachelor's Degree, IOE, TU, Nepal on the year 2066. We can control movement of robot.At the same time we know temperature and humidity of the surrounding in web page..
This presentation introduces to the world of hardware everyone can use to get stated with Internet of Things (IoT) such as Arduino, Raspberry Pi and ESP8266.
Introducing the Android Development Kit (adk) and showing developers how easy it is to control physical objects with their Android device.
For all the links see https://github.com/amirlazarovich/codelab-adk-leds
Arduino is an open-source electronics platform based on easy-to-use hardware and software. Arduino boards are able to read inputs - light on a sensor, a finger on a button, or a Twitter message - and turn it into an output - activating a motor, turning on an LED, publishing something online.
Wireless and wired controllers for nintendo switchEsourceparts
We are just letting you know about some of the best Nintendo Switch wireless or wired controllers. However, there are so many Nintendo Switch controllers with different styles and characteristics that you can buy from Esource Parts.
A summary of my work on an Android controller for specially programmed Arduino boards. It walks through the resources, methods, and trade-offs of the process.
Celebrating Arduino Day in Federal University of Technology, Minna, Nigeria.
This slides gives a basic introduction to what arduino is and gives a picture tour of what has been done with arduino in Federal University of Technology, Minna
This project is done for partial fulfillment of Bachelor's Degree, IOE, TU, Nepal on the year 2066. We can control movement of robot.At the same time we know temperature and humidity of the surrounding in web page..
This presentation introduces to the world of hardware everyone can use to get stated with Internet of Things (IoT) such as Arduino, Raspberry Pi and ESP8266.
Introducing the Android Development Kit (adk) and showing developers how easy it is to control physical objects with their Android device.
For all the links see https://github.com/amirlazarovich/codelab-adk-leds
Arduino is an open-source electronics platform based on easy-to-use hardware and software. Arduino boards are able to read inputs - light on a sensor, a finger on a button, or a Twitter message - and turn it into an output - activating a motor, turning on an LED, publishing something online.
Wireless and wired controllers for nintendo switchEsourceparts
We are just letting you know about some of the best Nintendo Switch wireless or wired controllers. However, there are so many Nintendo Switch controllers with different styles and characteristics that you can buy from Esource Parts.
Workflows are a key component of server side of IoT solution along with Analytics, Rule Engine and IoT device management. IoT focused Workflow tools draw their inspiration of classical workflow tools that exist in market, but focus more on IoT use cases. For example they are able to connect with IoT devices using IoT specific protocols like CoAP or MQTT. Node-RED is a visual tool for wiring together hardware devices, APIs and online services in new and interesting ways. It’s build by IBM Emerging Technology team from group for IoT, though it’s not limited only to IoT.
Linux has become integral part of Embedded systems. This three part presentation gives deeper perspective of Linux from system programming perspective. Stating with basics of Linux it goes on till advanced aspects like thread and IPC programming.
This third part of Linux internals talks about Thread programming and using various synchronization mechanisms like mutex and semaphores. These constructs helps users to write efficient programs in Linux environment
The second part of Linux Internals covers system calls, process subsystem and inter process communication mechanisms. Understanding these services provided by Linux are essential for embedded systems engineer.
Getting started with setting up embedded platform requires audience to understand some of the key aspects of Linux. Starting with basics of Linux this presentation talks about basic commands, vi editor, shell scripting and advanced commands
Embedded Android system development workshop is focused on integrating new device with Android framework. Our hands-on approach makes Emertxe as the best institute to learn android system development training. This workshop deep dives into Android porting, Android Hardware Abstraction Layer (HAL), Android Services and Linux device driver ecosystem. This workshop based training program will enable you to efficiently integrate new hardware with Android HAL / Framework.
Data Structures, which is also called as Abstract Data Types (ADT) provide powerful options for programmer. Here is a tutorial which talks about various ADTs - Linked Lists, Stacks, Queues and Sorting Algorithms
There is a surge in number of sensors / devices that are getting connected under the umbrella of Internet-Of-Things (IoT). These devices need to be integrated into the Android system and accessed via applications, which is covered in the course. Our Android system development course curriculum over weekends with practicals ensures you learn all critical components to get started.
Lab Handson: Power your Creations with Intel Edison!Codemotion
by Francesco Baldassarri - Come along and play with Intel Edison, for the Internet of Things? Learn about the Developer Kit for IoT, chose your preferred environment and test it – or test all the possibilities? We will be providing information and hands on training for developers interested in testing our solutions in C/C++, Javascript, Arduino, Wyliodrin and Python. Just bring you laptop and we will help you to get started. We will also provide information about our Cloud Analytics platform, and test hardware samples with the Grove Starter Kit – Intel IoT Edition. Visit us anytime and start making! What will you make?
At the webinar you can learn to:
create projects in iRidium Studio, use sample GUIs
set up cameras and use gestures in your projects;
upload projects on different control panels;
work with HDL equipment: relays, dimmers (DMX, Dali interfaces);
set up shutter modules, climate and floor heating via DLP panel;
control Z-Audio.
More about iRidium 3.0 here http://www.iridiummobile.net/?utm_source=HDL%20webinar%20in%20Slideshare&utm_medium=HDL%20webinar%20in%20Slideshare&utm_campaign=HDL%20webinar%20in%20Slideshare
B.E/Engineer with 9.9yr experience in Kernel, Device Driver and Embedded System Software Design and Development in Linux, Android, RTOS(QNX) and Windows
Android Things, from mobile apps to physical world - Stefano Sanna - Giovanni...Codemotion
The large and vibrant community of Android developers can now leverage all the libraries, services and knowledge to move from mobile towards the IoT world. The key for success is that even the existing code could be shared in the same project to target mobile, wearables and now embedded boards. This talk will explain what Android Things is and many of its features, giving some practical example on how to integrate code for mobile platform.
Android Things, from mobile apps to physical world by Giovanni Di Gialluca an...Codemotion
#Codemotion Rome 2018 - The large and vibrant community of Android developers can now leverage all the libraries, services and knowledge to move from mobile towards the IoT world. The key for success is that even the existing code could be shared in the same project to target mobile, wearables and now embedded boards. This talk will explain what Android Things is and many of its features, giving some practical example on how to integrate code for mobile platform.
The IoT is becoming extremely popular keyword in the industries while there are many different interpretations or various definitions. However, one common requirement is that it requires many Sensor devices connected to Linux devices. The user space drivers for GPIO, I2C/SPI and UART sensors in the past were implemented separately from scratch delicately for each product. This will cause significant challenge of software engineering overhead while GPIO, I2C/SPI and UART sensors are dramatically increasing which have to be supported. The IoTDK is one of the library to provide portability of sensors' driver to solve the situation.
The talk will includes guide of IoTDK and 96Boards and tutorial of programing I2C and GPIO devices. Targeted audiences are who are interested in IoT sensors or who would like to move from Arduino and Raspberry Pi to modern ARM CPU effectively.
This presentation was delivered at LinuxCon Japan 2016 by Akira Tsukamoto.
Android Things, from mobile apps to physical worldStefano Sanna
Presented at CODEMOTION 2018 - Rome.
The large and vibrant community of Android developers can now leverage all the libraries, services and knowledge to move from mobile towards the IoT world. The key for success is that even the existing code could be shared in the same project to target mobile, wearables and now embedded boards. This talk will explain what Android Things is and many of its features, giving some practical example on how to integrate code for mobile platform.
WSO2 IoT Server is one of the most adaptive Apache licensed open source IoT platforms available today. It provides best of breed technologies for device manufacturers to develop connected products as well as rich integration and smart analytics capabilities for system integrators to adopt devices into systems they build.
WSO2 IoT Server continues to evolve and introduces key capabilities in its upcoming release: version 3.1.0 Join Sumedha as he explores these new features which include.
A complete API-driven device type definition eliminating the necessity to create deployable plugins
Support for location based services such as Geo-fencing and alerting as a reusable functionality
A redesigned device overview page for better user experience
Improved product profiles for scalable deployment
Performance enhancements
Enhancements to prebuilt agents
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2023/07/a-new-open-standards-based-open-source-programming-model-for-all-accelerators-a-presentation-from-codeplay-software/
Charles Macfarlane, Chief Business Officer at Codeplay Software, presents the “New, Open-standards-based, Open-source Programming Model for All Accelerators” tutorial at the May 2023 Embedded Vision Summit.
As demand for AI grows, developers are attempting to squeeze more and more performance from accelerators. Ideally, developers would choose the accelerators best suited to their applications. Unfortunately, today many developers are locked into limited hardware choices because they use proprietary programming models like NVIDIA’s CUDA. The oneAPI project was launched to create an open specification and open-source software that enables developers to write software using standard C++ code and deploy to GPUs from multiple vendors.
OneAPI is an open-source ecosystem based on the Khronos open-standard SYCL with libraries for enabling AI and HPC applications. OneAPI-enabled software is currently deployed on numerous supercomputers, with plans to extend into other market segments. OneAPI is evolving rapidly and the whole community of hardware and software developers is invited to contribute. In this presentation, Macfarlane introduces how oneAPI enables developers to write multi-target software and highlights opportunities for developers to contribute to making oneAPI available for all accelerators.
Android Things - The IoT platform from GoogleEmmanuel Obot
Android Things - The IoT platform from Google, it's easy to learn.
Follow the presentation and learn.
With Android things base project to remotely control appliances and monitor or get alert of an intruder via mobile phone.
1. Android Open Accessory Protocol
Turn Your Linux machine as ADK
By
Rajesh Sola,
CDAC ACTS,Pune
`
OSI Days 2014,
Nimhans Convention
Centre, Bengaluru
2. Outline
● Need for AOA Protocol/ADK
● Introduction,History
● Available ADK hardware
● Initializing Android device
● Using driver skeleton
● Communication – ADK Side
● Sample Apps
● Developing your own apps
● Communication – Android Side
3. Need for AOA Protocol/ADK Host
● Peripheral support of typical android gadget
● Adding more peripherals like temperature
sensor,CANBus support,SPI,I2C,PWM etc?
● With/wthout rooting of android device
● Scope of Android USB Host capabilities
● USB device capabilities of android gadget
● Alternatives for USB – Bluetooth,WiFi etc.
● Designing rich UI for your hardware control.
● Lets talk about the solution for all...
4. ADK Host
● In this protocol android gadget is kept in device mode
and external hardware will be chosen in host mode
● Any hardware with USB host capabilities and capable
of supplying a power of 5V@500mA to the android
device can be chosen for this purpose,which is called
as Android Accessory Development Kit(ADK) or
Accessory Host
● Simple USB communication with two bulk end
points
5. History
● AOA v1.0
– Supported from Android 3.1(API Level 12) onwards
– With add on library from Android 2.3.4(API level 10)
– Announced in Google I/O 2011
– Demonstrated through Custom shield for Arduino
Mega board
● AOA v2.0
– Supported from Android 4.1(API Level 16) onwards
– Comes with additional features like audio,hid
support and bluetooth connectivity
– Announced in Google I/O 2012
– Demonstrated through Arduino Due based custom
board
6. Available Hardware for ADK
● Arduino Mega
● Arduino Due
● AOA kit from Embedded Artists
● FTDI Vinculum II
● Microchip PIC24F ADK
● Sparkfun IOIO
● BeagleBone powered with TI Starterware
Any Linux machine with USB Host support
Not limited to this hardware,any
board with USB Host support can
be designed as ADK with suitable
USB Host APIs. The only advantage
with this listing is availability of some
sample code and certain tested apps.
7. Initialization
Step1:-
● Send Control request 51(0x33) to get the protocol
version
● Returns 1 for AOA 1.0, 2 for AOA 2.0
bmRequestType TYPE_VENDOR|
DIR_DEVICE_TO_HOST
bRequest 51
wValue 0
wIndex 0
Data Address of two byte buffer
wLength 2
8. Initialization
Step2:-
● Send identity strings through control request 52
● Essentially one should send manufacturer, model,
version to communicate ADK with an app
● Rest all are optional
bmRequestTyp
e
TYPE_VENDOR|
DIR_HOST_TO_DEVICE
bRequest 52
wValue 0
wIndex String id
Data Address of string
wLength Length of the string
String IDs
Manufacturer 0
Model 1
Description 2
Version 3
Url 4
Serial id 5
9. Initialization
Step3:-
● Start in accessory mode through control request
53(0x35)
● Launch an app matched by essential identity strings
or start without app just for audio/hid support.
bmRequestType TYPE_VENDOR|
DIR_HOST_TO_DEVICE
bRequest 53
wValue 0
wIndex 0
Data NULL
wLength 0
10. Audio Support
● Send control request 0x58 for audio support with
value=1 for 2 channel 16 bit PCM @ 44100 Kh`z
● If you are requesting for audio support,this must be
done before starting in accessory mode
● If manufacturer,model identity strings are not
supplied device goes to audio only mode
bmRequestType TYPE_VENDOR|
DIR_HOST_TO_DEVICE
bRequest 53
wValue 1
wIndex 0
Data NULL
wLength 0
11. HID Support
● ADK can acts as HID event source or HID proxy to
your android device
● The following request codes are used for HID support
Register HID 54
Unregister HID 55
Set HID Report 56
Send HID Event 57
12. Configuration
0x18D1:0x2D00 Accessory only
0x18D1:0x2D01 Accessory+ADB
0x18D1:0x2D02 Audio only
0x18D1:0x2D03 Audio + ADB
0x18D1:0x2D04 Accessory + Audio
0x18D1:0x2D05 Accessory + Audio + ADB
● Upon initialization android device switches to
accessory mode from MTP/PTP mode and re-
enumerated by ADK Host with one of the following
vendor id,product id combinations and interface 0
with two bulk end points for communication
13. Using driver skeleton
● Hosted on github.com/rajeshsola/adk-driver-skeleton
based on Gary Bisson's libusb based linux-adk code
● Load the driver,optionally with module parameters
my_dev_vid, my_dev_pid
● Initialize using simple shell commands
cat /sys/kernel/adk_linux/aoa_init/version
echo “Manu=OSI Days” > /sys/kernel/adk_linux/aoa_init/identity
echo “Model=uisample” > /sys/kernel/adk_linux/aoa_init/identity
echo “version=1.0” > /sys/kernel/adk_linux/aoa_init/identity
echo “accessory” > /sys/kernel/adk_linux/aoa_init/start
● Alternatives for initialization
ioctl code
module parametet init_on_probe=1
14. Communication – ADK side
● Simple userspace file operations on linux(ADK) side to talk to
the app
● Start the communication
fd=open(“/dev/aoa-skel0”,O_RDWR);
● For output peripherals(Android to ADK), eg:- LEDs,Volume
read(fd,buf,len);
//process the buffer and control peripherals
● For input peripherals(ADK to Android), eg:- Sensors, RTC
//fill the buffer with state of peripherals
write(fd,str,len);
● Stop the communication
close(fd);
● can go for threaded design for Asynchronous transfer
15. Sample Apps
● From Google Playstore
– ADK 2012 from Google
– Basic Accessory Demo from Microchip
● From other repositories with source code
– SimpleAccessory Demo
– Examples for AOA Kit from Embedded Artists
– ADK Demo from rowboat project for beagle bone
– TinyAccessory Demo
– FTDI Android examples
16. Developing Your own Apps
● intent-filter section and other changes in Manifest file
● Getting the reference of USB service manager
● Getting the reference for connected accessory
● Checking/Obtaining permissions
● Getting references of file streams
● Steps to take care during Activity life cycle
– OnCreate
– OnPause
– OnResume
– OnDestroy
● A walk through of skeleton code ADKControl class
17. Communication – Android App side
● Add the skeleton class ADKControl to your project
● Create an instance of ADKControl in MainActivity
by passing the reference of same,if necessary pass the
reference of ADKControl to other activities or
fragments or retrieve through getInstance(null)
ADKControl adk=ADKControl.getInstance(this)
● Use sendCommand method for output activity,in
appropriate listeners
● Use readData method for input activity, preferably in
a different thread for asynchronous read
● Can obtain references for Input,Output references
using methods getInputStream,getOutputStream
18. An Example – App to ADK
Peripheral
Type
Peripheral
Id
Peripheral
State/Data
Peripheral
Data
Peripheral
Data
Byte buffer
0 1 2 3 4
--------------->
19. An Example – ADK to App
Input
Type
DataData DataData DataData --------------->
0x46 hours mins secs