1055 User Guide: Difference between revisions

From Phidgets Support
No edit summary
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
__NOINDEX__
<metadesc>Send and receive IR data to your computer with the PhidgetIR. It can learn and reproduce signals from common devices like your TV remote.</metadesc>
[[Category:UserGuide]]
[[Category:UserGuide]]
{{UserguideTOC|1055.jpg|1055}}
==Getting Started==
==Getting Started==
{{UGIntro|1055}}
*[{{SERVER}}/products.php?product_id=1055 1055 PhidgetIR]
*USB cable and computer
*something to use with the 1055 (e.g. an IR remote control and the appliance it controls)


===Checking the Contents===
{{UGbox|
'''You should have received:'''
* A PhidgetIR Board
* A Mini-USB Cable
* A mounting hardware kit
|
'''In order to test your new Phidget you will also need:'''
* Any IR Remote control
* Something that’s controlled via IR
||}}


===Connecting the Pieces===
Next, you will need to connect the pieces:
{{UGbox|
[[Image:1055_0_Connecting_The_Hardware.jpg|500px|right|link=]]
Connect the PhidgetIR to your computer using the Mini-USB cable.
# Connect the PhidgetIR to your computer using the USB cable.
|
[[File:1055_0_Connecting_The_Hardware.jpg|400px|link=]]
||}}


===Testing Using Windows 2000 / XP / Vista / 7===
<br clear="all">
{{UGIntroDone|1055}}


{{UGwin}}
==Using the 1055==
{{UGcontrolpanel|1055}}


===Running Phidgets Sample Program===
{{ugIR|1055}}


{{UGwin2|'''IR-full'''}}
{{ugAddressingInformation}}


{{UGbox|
{{ugUsingYourOwnProgram|1055}}
Double Click on the [[File:Ph.jpg|link=]] icon to activate the Phidget Control Panel and make sure that the '''Phidget IR Receiver Transmitter''' is properly attached to your PC.
|[[File:1055_0_Control_Panel_Screen.jpg|400px|link=]]
|
'''Learn Mode'''
# Double Click on Phidget IR Receiver Transmitter in the Phidget Control Panel to bring up IR-full and check that the box labelled Attached contains the word True, as in the image to the right.
# Point your remote at the PhidgetIR and press a button. If a code is received, it will be shown in the code box.
# Press and hold a button. The repeat count should start to count up. After about 4 repeats, the Learn section should be filled in - the code has now been learned by the PhidgetIR. When in learning mode, try to minimize possible interference from other sources such as fluorescent lights.
# Press the ReTransmit button to retransmit the code. It will function just as if you were pushing the same button on the actual remote.
 
 
'''Raw Data Mode'''
 
[[File:1055_0_IR_Raw_Data_Screen.jpg|800px|link=]]
 
# If the PhidgetIR cannot decode the data automatically, you can access the raw data stream directly.
# You can access this data using an event or a polling function.
# For the purpose of the example, the raw data that is sent by pushing the SendRAWData button will adjust the volume on a Mac Laptop computer.
 
 
 
|[[File:1055_0_IR_Screen.jpg|400px|link=]]
}}
 
===Testing Using Mac OS X===
 
{{UGmac|Phidget IR Receiver Transmitter|IR-full}}
 
===Using Linux===
 
{{UGlinux}}
 
===Using Windows Mobile / CE 5.0 / CE 6.0===
 
{{UGce}}


==Technical Details==
==Technical Details==
===Consumer IR===
===Consumer IR===
The 1055 can send and receive data encoded in various fashions as pulses of infrared light. The various encoding that the 1055 supports are grouped under the general term ''Consumer IR'' or ''CIR''. CIR is generally used to control consumer products such as TVs, DVD players, etc. with a wireless remote control, but in general can be used for any application that needs to transmit low speed data wirelessly.


The PhidgetIR can send and receive data encoded in various fashions as pulses of infrared light. The various encoding that the PhidgetIR supports are grouped under the general term ‘Consumer IR’ or CIR. CIR is generally used to control consumer products such as TVs, DVD players, etc. with a wireless remote control, but in general can be used for any application that needs to transmit low speed data wirelessly.


CIR is a low speed protocol - commands generally contain no more then 32-bits of data with a bit rate of at the most 4000 bits/second, but usually much less. There is no concession for anti-collision, so only one code can be transmitting at any time. Transmission distance depends on the power of the transmitter, but needs to be line of sight - though generally this can include bouncing off walls/ceilings, etc.
CIR is a low speed protocol - commands generally contain no more then 32-bits of data with a bit rate of at the most 4000 bits/second, but usually much less. There is no concession for anti-collision, so only one code can be transmitting at any time. Transmission distance depends on the power of the transmitter, but needs to be line of sight - though generally this can include bouncing off walls/ceilings, etc.


CIR data is transmitted using a modulated bit stream. Data is encoded in the length of the pulses / spaces between pulses, of IR light. The pulses of IR light are themselves modulated at a much higher frequency (usually ~38kHz) in order for the receiver to distinguish CIR data from ambient room light.
CIR data is transmitted using a modulated bit stream. Data is encoded in the length of the pulses / spaces between pulses, of IR light. The pulses of IR light are themselves modulated at a much higher frequency (usually ~38kHz) in order for the receiver to distinguish CIR data from ambient room light.


===Further Reading===
{{UGnext|}}
 
You can read more about IR remote controls in our [[IR Remote Control Primer]].
 
==API==
{{UGapih}}
 
===Data Structures===
 
IR_CodeInfo <nowiki>{</nowiki>
:int    dataLength;
:IR_Encoding  encoding;
:IR_Length  length;
:int    gap;
:int trail;
:int header[2];
:int one[2];
:int zero[2];
:int repeat[MAX_REPEAT_LENGTH];
:int min_repeat;
:byte    toggle_mask[MAX_DATA_LENGTH];
:int    carrierFrequency;
:int dutyCycle;
<nowiki>}</nowiki>
 
The CodeInfo Structure/Class represents all aspects of a code except for the data. This is used when learning and when transmitting codes.
 
* '''dataLength:'''      The length of the code data in bits
* '''encoding:'''        The encoding used for the data. Possible values are: Space, Pulse, Bi-Phase, RC5 and RC6
* '''length:'''          Whether the code length (including gap) is constant or variable.
* '''gap:'''              The gap time. For constant length codes this is the entire code time including the data and the gap, for variable length codes, this is the gap time only.
* '''trail: '''          Trailing bit time.
* '''header:'''          Header pulse and space. Specify 0 for no header.
* '''zero:'''            The pulse and space used to identify a ‘0’ in the bit stream.
* '''one:'''              The pulse and space used to identify a ‘1’ in the bit stream.
* '''repeat:'''          The repeat code. This must start and end with a pulse and be terminated with a 0 (null).
* '''min_repeat:'''      Minimum number of times to repeat the code.
* '''toggle_mask:'''      The toggle mask. These bits are toggled when transmitting.
* '''carrierFrequency:''' The carrier frequency in Hz. Default is 38000. Range is 10kHz - 1MHz
* '''dutyCycle:'''        The period of the carrier frequency. Default is 50. Range is 10-50.
 
Depending on the encoding used, most of these can be set to 0/null to select default values.
 
===Functions===
 
{{UGapi|Transmit(Byte[] data, IR_CodeInfo codeInfo)
|Transmits a code.
}}
 
{{UGapi|TransmitRepeat()
|Transmits a repeat for the last transmitted code. Note that this function must be called before the gap time has elapsed since the original code transmission, or the repeat code will be transmitted too late.
}}
 
{{UGapi|TransmitRaw(int[] data, int offset, int count, int carrier, in dutyCycle, int gap)
|Transmits a raw data stream of length count starting at offset, at a specific carrier frequency and duty cycle, with a microsecond gap after the data is sent. Carrier, duty cycle, gap, count, and offset can be set to 0 to specify default values. The data array must start and end with a pulse (have an uneven number of values).
}}
 
{{UGapi|int ReadRaw(int[] data, int length)
|Reads up to a specified amount of raw data in the data buffer. If no data is available, returns 0, else returns number of ints read. Read data always starts with a space and ends with a pulse.
}}
 
{{UGapi|Byte[] LastCode() [get]
|Gets the last code received. If there is no last code, this will throw the EPHIDGET_UNKOWNVAL exception.
}}
 
{{UGapi|(Byte[], IR_CodeInfo) LastLearnedCode() [get]
|Gets the last learned code. Returns both the code and a CodeInfo structure/object. If there is no last code, throws the EPHIDGET_UNKNOWNVAL exception.
}}
 
===Events===
 
{{UGapi|Code(Byte[] data, int bitLength, Bool repeat)
|The code event is fired every time a code is received and correctly decoded. The data array has a length 1/8 of bitLength with the MSB being in position 0. MSB is considered to be the first bit received. Repeat will be true if a repeat is detected - either timing wise or via a repeat code. False repeats can happen if two separate button presses happen close together.
}}
{{UGapi|Learn(Byte[] data IR_CodeInfo codeInfo)
|The Learn event fires when a button has been held down long enough for PhidgetIR to have learned the CodeInfo values - usually about 1 seconds, or after 4 repeats.
}}
{{UGapi|RawData(int[] data)
|The Raw Data event will fire every time the PhidgetIR gets more data - at most once every 8ms.
}}
==Product History==
{{UGhist}}
{{UGrow|May 2010|0|100|Product Release}}
{{UGrow|May 2011|0|101|getLabelString fixed for labels longer than 7 characters}}

Latest revision as of 16:13, 17 October 2019


Getting Started

Welcome to the 1055 user guide! In order to get started, make sure you have the following hardware on hand:

  • 1055 PhidgetIR
  • USB cable and computer
  • something to use with the 1055 (e.g. an IR remote control and the appliance it controls)


Next, you will need to connect the pieces:

1055 0 Connecting The Hardware.jpg
  1. Connect the PhidgetIR to your computer using the USB cable.


Now that you have everything together, let's start using the 1055!

Using the 1055

Phidget Control Panel

In order to demonstrate the functionality of the 1055, the Phidget Control Panel running on a Windows machine will be used.


The Phidget Control Panel is available for use on both macOS and Windows machines.

Windows

To open the Phidget Control Panel on Windows, find the Ph.jpg icon in the taskbar. If it is not there, open up the start menu and search for Phidget Control Panel

Windows PhidgetTaskbar.PNG

macOS

To open the Phidget Control Panel on macOS, open Finder and navigate to the Phidget Control Panel in the Applications list. Double click on the Ph.jpg icon to bring up the Phidget Control Panel.


For more information, take a look at the getting started guide for your operating system:


Linux users can follow the getting started with Linux guide and continue reading here for more information about the 1055.

First Look

After plugging the 1055 into your computer and opening the Phidget Control Panel, you will see something like this:

1055 Panel.jpg


The Phidget Control Panel will list all connected Phidgets and associated objects, as well as the following information:

  • Serial number: allows you to differentiate between similar Phidgets.
  • Channel: allows you to differentiate between similar objects on a Phidget.
  • Version number: corresponds to the firmware version your Phidget is running. If your Phidget is listed in red, your firmware is out of date. Update the firmware by double-clicking the entry.


The Phidget Control Panel can also be used to test your device. Double-clicking on an object will open an example.

IR

Double-click on the IR object, labelled PhidgetIR, in order to run the example:

IR Example.jpg


General information about the selected object will be displayed at the top of the window. You can also experiment with the following functionality:

  • The Show RAW Data checkbox toggles the RAW data window. This window lets you see incoming codes as pulses and gaps (expressed as numbers in milliseconds). You can also re-transmit this raw data.
  • IR Code: the hexadecimal code corresponding to the signal just received.
  • Repeat Count: how many times the same code has been received in a row. If you hold down a button on most remote controllers, it will continually transmit repeat codes.
  • Bit Length: the length of the code in bits.
  • When a code is repeated multiple times, the 1055 will learn the code. It will display the relevant information in the Learn box. For more information, see the technical section.


You can read more about IR remote controls in our IR Remote Control Primer.

Finding The Addressing Information

Before you can access the device in your own code, and from our examples, you'll need to take note of the addressing parameters for your Phidget. These will indicate how the Phidget is physically connected to your application. For simplicity, these parameters can be found by clicking the button at the top of the Control Panel example for that Phidget.

The locate Phidget button is found in the device information box

In the Addressing Information window, the section above the line displays information you will need to connect to your Phidget from any application. In particular, note the Channel Class field as this will be the API you will need to use with your Phidget, and the type of example you should use to get started with it. The section below the line provides information about the network the Phidget is connected on if it is attached remotely. Keep track of these parameters moving forward, as you will need them once you start running our examples or your own code.

All the information you need to address your Phidget

Using Your Own Program

You are now ready to start writing your own code for the device. The best way to do that is to start from our Code Samples.

Select your programming language of choice from the drop-down list to get an example for your device. You can use the options provided to further customize the example to best suit your needs.

Code Sample Choose Language.png


Once you have your example, you will need to follow the instructions on the page for your programming language to get it running. To find these instructions, select your programming language from the Programming Languages page.

Technical Details

Consumer IR

The 1055 can send and receive data encoded in various fashions as pulses of infrared light. The various encoding that the 1055 supports are grouped under the general term Consumer IR or CIR. CIR is generally used to control consumer products such as TVs, DVD players, etc. with a wireless remote control, but in general can be used for any application that needs to transmit low speed data wirelessly.


CIR is a low speed protocol - commands generally contain no more then 32-bits of data with a bit rate of at the most 4000 bits/second, but usually much less. There is no concession for anti-collision, so only one code can be transmitting at any time. Transmission distance depends on the power of the transmitter, but needs to be line of sight - though generally this can include bouncing off walls/ceilings, etc.


CIR data is transmitted using a modulated bit stream. Data is encoded in the length of the pulses / spaces between pulses, of IR light. The pulses of IR light are themselves modulated at a much higher frequency (usually ~38kHz) in order for the receiver to distinguish CIR data from ambient room light.

What to do Next

  • Programming Languages - Find your preferred programming language here and learn how to write your own code with Phidgets!
  • Phidget Programming Basics - Once you have set up Phidgets to work with your programming environment, we recommend you read our page on to learn the fundamentals of programming with Phidgets.