What is the EZIO Board?
January 16, 2001
by Paul Catanese
The EZIO (Easy Input & Output) board is a hardware interface that simplifies serial communication with devices external to the computer. The possibilities for such a device range from simple switches to complicated robotics. I have found that the largest difficulty for those who want to learn how to develop with this device is that there is no easy path to enlightenment. This is partly due to the fact that to use the board successfully one needs a working knowledge of serial communication, some basic electronics skills and an in-depth understanding of a programming environment such as Director.
This document is the closest thing to a book on this subject that you are likely to see for quite a while. However, if you have not worked with electronics before, I suggest "Getting Started in Electronics" by Forrest M. Mimms, which should be available at any neighborhood Radio Shack. The book, while not directly related to the EZIO, will at least get you up to speed on many types of electronic building blocks and how you might use them. Also, the EZIO website (www.ezio.com) is an excellent reference - you can purchase the board from there, and you can download scripts for older versions of Director, or for other environments such as MAX.
Safety
Before I go too much further, let me stress that Electricity is Dangerous. This is not the same as fumbling around with passing arguments the first time: if you do not know what you are doing, or what your intended result is - please ask someone for help.
Getting Started - Hardware
In terms of hardware, you will obviously need an EZIO board (they cost US$149, or US$99 educational). In addition, you will need a source of power. The EZIO requires 8-15V DC power, which means that you can run the board from a DC wall adapter (wall wart), or even from a 9 volt battery if you so desire. I prefer to go with the former option, as it affords continuous power. The third item that you will need is a serial cable, but the type of cable will depend on the platform from which you intend to run your application. If you are working on a PC (or Unix) platform, you will need a 9-pin serial cable with DSUB connections on either end. If you are going Macintosh, you will need a Macintosh 9-pin serial cable (round connector). The EZIO currently supports standard serial, so if a newer Mac is your platform, you will need a USB - Serial Converter. There are several of these products on the market, of which I have found the Keyspan Serial Assistant to be the least problematic. This device plugs into your USB port and creates two standard serial sorts.
Getting Started - Software
There are several options in terms of software:
- Director 6 includes several built-in serial communication tools that allow the user to communicate with any serial device, including serial modems, printers and strange yet useful EZIOs. The approach for using D6 with the EZIO has been further simplified by the fact that the EZIO website distributes the scripts that you will need to use the board.
- When Macromedia rebuilt most of Director with version 7, they removed all of the built-in functions that allowed developers to communicate with serial devices. There are scripts available from the EZIO website that allow you to work with D7 and the DirectComm Xtra in order to control the EZIO.
- (Recommended) I've included a link to a freely distributable Xtra, which was tailored for use with the EZIO board. Included is a sample movie that will show how to utilize the scripts and how to initialize the EZIO. The Xtra is D8 friendly, but it has only been compiled for the Macintosh.
Key Concepts
Serial Communication
The EZIO is only one of many types of serial devices. But what does serial communication actually mean? Essentially, it is communication of data consisting of a long string of characters. Serial communication is not specific to Mac, PC or Unix; in fact, it isn't really specific to what you might consider a computer at all. But the main point to understand is that it is a method of transferring data. Because it is character-based, there are only 256 characters that can be transmitted; and because it is a string, these characters will be transmitted one at a time. The EZIO can communicate at 56K bits per second. This is generally good enough for most applications. If anything, I have had more trouble making sure that timing is dealt with correctly on the Director end. This is one of the key reasons why Ben Chang developed an Xtra tailored for use with the EZIO. The Xtra takes care of making sure that the board is initialized correctly, among other tasks.
Flushing the device
Serial communication has a few drawbacks that you should know about. First of all, in order to communicate with a serial device, you need to tell all of the other programs that are running that you are talking to the serial device, and that no one else should use it. The term for this is locking the device, and it's taken care of for you via the Xtra. If the device isn't locked, more than one program may try to communicate with it simultaneously, and it will not be able to ascertain which program is "speaking". So, the first step in serial communication is to initialize the device, which lets all of the other programs know that you are using the device.
Of equal importance is that when you are done with the device, you relinquish lines of communication, so that other programs can use the device again. This process is frequently referred to as flushing the device. This must be done even if you know that your program is the only one that will be using the device. The reason you must do this is that each time you run your Director application, it technically functions as a separate application. If you initialize and fail to flush the device, you essentially end up with a zombie connection to the serial device that no program can access or has the authority to flush out. To further complicate this, serial devices are not hot-swappable, so you really should NOT plug & unplug them from your machine while the machine is running. In short, if you end up in this situation you will need to restart your machine.
I bring this up because the sample movie initializes the board on startmovie and flushes the device on stopmovie. Director occasionally "forgets" to run the stopmovie handler, and so, especially when in the authoring environment, I suggest stopping your movies with Command/Ctrl-period to force a stopmovie event.
There are other methods such as initializing and flushing the device on each use within the program, but I will leave setting that up to you. It is what I would do for the final product, but not necessarily what I would do if I were teaching myself how to use the board.
Signal vs. High Voltage
There is a difference between "signal" and "high voltage". A signal is a small (less than +5v) amount of current that can be used in many ways. A signal is said to be high (on) or low (off). Signals are used to communicate with small electronic components, essentially turning them on or off. High voltage can kill you in nasty ways. However, controlled correctly, high voltage can be very useful.
The EZIO is NOT a source of power for electronic devices that you will build. Great care should be taken to isolate the signal travelling through the EZIO from the current that you might use to control devices (motors, lights, etc.)
Overview
The EZIO is a middleman device that communicates with both your computer and the external electronic components that you will build. In terms of electricity, the signal that the EZIO uses to communicate with the computer should be kept separate from the signal and power used to run your devices. In order to ensure the separation of signal you should read about resistors, and in order to use high voltage at all you should read about relays.
The EZIO looks like this:
A
|
Serial Cable Connection
|
Allows communication between the EZIO and your computer. There are two connections pictured here. The upper is for Mac, the lower for PC/Unix. |
B
|
10 Digital Inputs
|
Attach basic on/off switches. |
C
|
10 Digital Outputs
|
Attach components to control lights, motors, relays, muscle wire, etc. |
D
|
Power Input
|
Attach the power here. You must use between 8-15 volts DC. There is circuitry involved that makes it possible to hook up positive and negative in any order here. |
E
|
8 Analog to Digital Ports (A2D)
|
Quantify input from variable input sources such as dimmer switches or light sensors. |
F
|
2 Pulse Width Modulation (PWM) Ports
|
Ports Allows control of standard DC motors and other devices by turning on and off a given percentage of the time. (This function is not supported by the free Xtra) |
G
|
4 +5V Reference Voltage Ports
|
You use these reference voltages when working with A2D. You DO NOT power devices with it. Nine out of 10 EZIOs die this way. |
H
|
4 Grounds
|
When connecting switches or other components, you will use ground in order to complete the circuit. |
Free EZIO Xtra & API
The sample movie for this article includes a free Xtra developed by Benjamin Chang (bchang / at / artic.edu). The Xtra is currently Mac only; if you desperately need it for the PC, you will need to speak to Ben. The movie has more explanations and examples, but I want to outline the basics of the Xtra API here:
Writeline(ezio, Line#, Value) |
Tell the EZIO to set a given line "high" (on) or "low" (off). |
Readline(ezio, Line#) |
Ask the EZIO whether a given line is "high" or "low". |
A2D(ezio, Line#) |
Ask the EZIO to quantify an analog signal into a number between 0 - 255. This allows you to hook up components such as heat sensors or pressure sensors, take their output and convert it into a numerical format. |
Electronic Components
The following electronic components are some of the first that you may want to learn more about. This is by no means a complete list of electrical components, nor are the descriptions of the functions comprehensive. Many of these devices have several purposes.
Device
|
Function |
Switch
|
Turn on and off |
Resistor
|
Isolate signal from the board |
LED
|
Visualize where power is |
Variable Resistor
|
Dimmer switch input |
Photocell
|
Variable resistance based on the amount of light |
Pressure Sensor
|
Variable resistance based on amount of pressure |
Thermostat
|
Variable resistance based on heat |
Transistor | Mini-electronic switches used to build logic circuitry |
Multi-plexer | Control more than 10 devices |
Capacitor | Store current |
Relay | Use high voltage |
Muscle Wire | Strong wire that compresses when current is applied, allowing you to lift hundreds of times its weight. Used in robotics especially, there are many kits out there that can be modified for use with the EZIO. |
Stepper Motors | Very precise motors that are used in robotics. They step forward or backward a given amount of degrees based on the order and pattern of signals fed to them. |
Summary
To learn and utilize the EZIO, one of the best places you can visit is your local thrift store. They generally have an array of "junk" that can be modified for your uses. In particular, I urge you to look through the children's toy section and the appliance section. You may find that even if the junk lives up to its name, there are scads of components inside just waiting to be salvaged. Radio Shack is another option, although the prices you might end up paying will be considerably higher than if you went to Jameco (www.jameco.com) or a similar online electronics parts store.
A sample Director 8 movie is available for download in Mac or PC format. The Mac download includes the free EZIO Xtra.
Copyright 1997-2024, Director Online. Article content copyright by respective authors.