Posts

Showing posts with the label IOIO

C# IOIO and I2C devices

Image
The IOIO C# library on GitHub now has basic I2C support.  Protocol support and resource management is lifted from the Java library.  The upper API is message based rather than object based. TWI/I2C/SPI is managed via outbound messages. Data from I2C devices and message acknowledgements from the IOIO come back asynchronously via inbound Messages. Hardware This was tested with an IOIO V1, Bluetooth module, a  JeeLabs Expander Plug  and an old Computer power LED.   I2C device The Expander Plug is based on the  MicroChip MCP23008  port expander.  Programming examples are available on the Jee Labs web site. The Microchip web site has the chip programming guide. The LED assembly already had a current limiting resistor. I just plugged it in across the "+" pin on the expansion port and the port pin next to the power pin. The port expander default address is 0x20.  It has 10 registers that control behavior and transfer data. ...

Controlling a Servo attached to an IOIO from Windows WPF application

Image
The IOIO C# library on GitHub now includes a very basic Windows WPF application that lets you control a Servo with your mouse. The program assumes your IOIO is attached to your PC via Bluetooth and that you have a servo on Pin 3. Run the program from inside Visual Studio. Step through the disconnect exception if you run this with debugging enabled.

Extremely Rough Cut at C# based IOIO Library

Image
I've pushed a very rough C# port of the Java IOIO library to GitHub github.com/freemansoft/IOIODotNet/   It communicates with the IOIO as a COM device over Bluetooth. IOIODotNet is a plain old Windows Library. I tried making it a Portable library but .Net portable libraries to don't support Serial devices. The library is a mess of pieces-parts right now with some unit tests that show how it works. There is also a WPF app. Tests and the WPF app poll serial ports to find a Bluetooth attached IOIO. This is a message based API Inbound traffic packed into messages and  routed to inbound handlers. You can add your own or you can poll the ones that exist. Outbound traffic can be sent directly via the API or through a message based API.  I intend that the Message API is the future of the library once resource management has been added. Look at the Integration tests to play with it. They expect at least one IOIO V5xx on a COM port with pins 31 and 32 tied togethe...

IOIO Bluetooth and Windows 8 / 8.1

Image
Notes on using the IOIO with Windows 8 over Bluetooth This post describes the results of controlling various versions of the IOIO Firmware from Windows 8 over Bluetooth.  Initial content was extracted from  http://joe.blog.freemansoft.com/2014/04/ioio-v1-dealing-with-firmware-versions.html  and expanded with additional content. I used the HelloIOIOConsole.jar  sample program to test connectivity between Windows 8 and an IOIO V1 running different Application firmware.  I also tested Mac OS/X Mavericks. HelloIOIOConsole.jar results 4/2014 Java Application V1 3.03/3.23 V1 3.26/4.0 V1 ?.00/5.00 Windows 8.1 3.30 No Communication Constant reconnects Works Not Tested Windows 8.1 4.00 No Communication Constant reconnects Fails handshake without patch Works with patch described below Not Tested Windows 8.1 5.03 No Communication Constant reconnects Fails with Version Mismatch (as expected) Not Tested OS/X Mavericks 3.30 Wo...

IOIO V1 Dealing with Firmware Versions and Android, PC and Mac

Image
Last updated 4/18/2013 IOIO programs run on Android devices, PCs or other types of computers. They communicate over USB or Bluetooth to firmware programmed  into the IOIO Pic chip.   Control programs are built using an IOIOlib library that knows the communication protocol between the program machine and the IOIO board.  Both sides of this communication must agree on the protocol and payload of this communication. Each version of the IOIO firmware comes with its own library that was built for that firmware. Host programs must  be linked to an IOIO library whose major version number is less than or equal to the major version of the your device's firmware. This works because Ytai tries to make sure that firmware is backwards compatible with previous versions. Programs compiled against any version 3.yy IOIOlib should be able to communicate with any 3.xx Firmware devices. EX: Programs built against 3.23 can talk with IOIO devices running Firmware 3.26. ...