Editor Review
Ease of Set-Up:
Documentation Completeness and Clarity:
Hardware Completeness and Quality:
Meets Expectations:
Overall rating:
Time to Complete
About an hour to set up and experiment with the passive infrared (IR) Zdots sensor module. I spent several hours going through the demonstration and m
Prerequisite Skills
None. But C-language skills needed to modify the sensor module's code.
What We Liked
Easy to set up kit and experiment with the passive infrared (PIR) sensor. Good tools and documentation. The options on the sensor module make it attractive for many sensing devices.
What we Didn't Like
The demo software has two flaws that make the Serial Interface Mode difficult to use. Serial-command descriptions could use several examples. Lack of a flow chart for the demo program. No explanations of header or include files.
Full Review
The Zilog passive IR development kit includes an ePIR Motion Detector Single-Board Computer (SBC), along with a baseboard, power supply, 9-pin serial cable, USBSmartCable, two CD-ROMs, and a printed Quick Start Guide.
The small 8-pin PIR module, Zilog part number ZEPIR0AAS01SBCG, includes a Fresnel lens, infrared sensor, and 8-bit microcontroller. The MCU's code operates the IR sensor and reports information to an external host--probably another MCU in a final product--via an output pin. Users can set sensor sensitivity and a detection time delay through external potentiometers (on the baseboard) or via a serial-input pin. An external cadmium-sulfide (CdS) photocell can provide information about ambient radiation so the module can take it into account. The baseboard also includes a CdS photocell and an ambient-light adjustment potentiometer.
Serial commands use standard ASCII character codes to elicit a response from the module or to control internal module settings. If you use potentiometers to set the sensitivity and time delay in a design, you might simply use the module's motion-detect logic output rather that monitor serial output information. The capability to use the module under either hardware or software control gives developers a lot of flexibility in how they use infrared detection in a product. For more product information, visit: http://www.zilog.com/docs/PB0223.pdf. Zilog calls the ePIR module a Zdots module.
Keep in mind that the baseboard serves only as a way to test and prototype with a module. The baseboard does not go into a product. Individual ZEPIR0AAS01SBCG modules sell for less than $US 10 each in small quantities.
It took little time to set up the baseboard, drop in the PIR module, connect power and connect the USBSmartCable to my lab PC. Although the Qucik Start Guide recommends the Professional version of Windows XP, I used the Home edition without problems. You also can run the Zilog software tools with Windows 2000 or 98SE.
The Quick Start Guide provides the basic setup information needed to test the PIR module. Look carefully at the color illustration of the cable between the USBSmartCable and the baseboard. The cable connector has a key that prevents a misconnection with the USBSmartCable pod, but there's no key on the baseboard. The red stripe on the flat cable should point toward resistor R10, or pin 1 on the DBG Interface connector.
The first demonstration requires that developers install the USBSmartCable USB driver, as detailed in the Quick Start Guide. Then they must install the Zilog Developer Studio II (ZDS II). The kit arrived with ZDSII version 4.10.1 on the CD-ROM. I recommend you install the tools from the CD-ROM first and upgrade later to ZDS II version 4.11.0. You can download version 4.11.0 from the Zilog Web site. Look under the "Tools and Software" heading and select "Software Downloads." (You want the ZDS II tools for the Z8 Encore! series of MCUs.) Version 4.11.0 works with Windows Vista.
Please read my review of the Zilog Z8 Encore! XP kit, Z8F16800128ZCOG on the evalkits.com Web site for more information about, and how to overcome a couple of glitches in the ZDS II tools. Without this information, you might get stuck with software that doesn't seem to work.
I recommend users print a copy of the "ePIR Motion Detection Zdots SBC Development Kit User Manual," (UM022302) provided on the documentation CD. This manual includes information about the PIR module, board schematics, signal information, and references to other information sources.
The Quick Start Guide includes instructions about how to locate the ZDOT1_App project folder on the "Source Code and Documentation" CD-ROM and then move it to the "samples" folder in the directory that holds the Zilog tools. On my lab computer the ZDOT1_App folder went into the "samples" folder at:
C:\Program Files\Zilog\ZDSII_Z8Encore!_version\samples.
The directions explain how to establish the correct debug settings. When I opened the Project Settings window, the PIR module wasn't listed in the Debugger sub-window under target name. I clicked on "Add" and typed in ZEPIR0AAS01SBCG. That alerted the debugger that I had the PIR module as my target.
The remaining instructions explained how to build the code for the PIR module's MCU, download it to the module, and run it. The demonstration turns on a blue LED when the IR sensor detects a change in IR radiation. You can adjust the sensitivity of the IR sensor and the delay time--the time it takes the sensor to indicate a change.
When I built the code, the ZDSII software displayed a "warning" message:
The silicon [A] on the board is not the latest version [B] supported by this release of ZDSII."
I had no idea what that meant and just clicked OK. The warning didn't stop the demo code build.
After I loaded the code into the PIR module I expected the blue LED to turn on as soon as I moved my hand in front of the sensor. But the detector's MCU will not start in Debug mode until I click on the "Go" icon at the top of the ZDSII screen. After the ZDSII Debug window at the bottom of the screen displays, "Target is in HALT/SLEEP mode!" the module detects IR changes. After that message appeared, the demo ran well and I easily adjusted the sensitivity so I could detect my presence several feet away. Under ideal conditions, the module can detect a change in IR radiation out to 5 meters or about 16 feet.
In my lab area, the PIR module easily detected me at a distance of 15 feet. But the sensor did not detect a hot point source (a BernzOmatic MAPP-gas torch) until I moved it to within about three feet of the module on the module's central axis.
The second demo involves connecting a host PC to the baseboard through a serial cable. Thankfully my older lab PC has a serial port. Refer to the "ePIR Motion Detection Zdots SBC Development Kit User Manual" for basic information about how to set up the Serial Interface Mode (pg 9). Then, open or print the document, "ePIR Motion Detection Zdots SBC, Product Specification," (PS028402) that describes the Serial Interface Mode in detail (pg 10, etc.). The serial mode uses the same code downloaded to the PIR module for the first demonstration.
Note: The Product Specification manual noted above has a typographical error. On page 14 the text shows: 0x69 - "l" Read SBC... with a lowercase L (ell) in quotes. This line should read: 0x69 - "i" Read SBC... with a lowercase i (eye) in quotes. The information on page 40 uses the proper character.
The serial mode relies on a terminal program such as Windows HyperTerminal to send and receive ASCII codes to and from the PIR module. Twenty seven commands let you read motion status, write a light-gate threshold value, set the write sensitivity, reset the module, and so on. Transmit a lowercase "a" (without the quotes) to the module and it responds with an N if it detects no motion, or a Y if it detects motion. (The module sends a U if it hasn't yet become stable after power up.)
If you want to try the serial mode, stop the PIR code: Click on Debug-->Stop Debugging, or press Shift + F5. Then, change the baseboard switch (SW1) from HARDWARE to SERIAL, start HyperTerminal with the correct settings (9600 bps, no parity, 8 data bits, one stop bit, no flow control), and restart the PIR code (click on the Go icon).
In serial mode, the module also sends an "acknowledge" code (ACK) or a "no-acknowledge" code (NACK) ASCII code back to the host computer within some command sequences. This arrangement leads to the first of two problems with the demo code.
Neither the ACK (0x06) nor the NACK (0x15) ASCII codes show anything on a HyperTerminal screen. They are non-printing ASCII codes! So a kit user will not see anything happen in response to many commands. I changed these two codes to an asterisk (*, 0x2A) for the ACK and to an exclamation point (!, 0x21) for the NACK. Then I could see results on my HyperTerminal screen. (Find the related code at approximately line 100 in main.h.)
The second software glitch involves commands that cause the PIR module to send the host computer an 8-bit value, 0 to 255. That byte doesn't do anything you can see on the HyperTerminal display unless by chance the value represents a printing ASCII character. A value of 90, for example, would cause HyperTerminal to display a Z. That's not helpful and it could cause you to think there's a problem with the kit or its software.
Someone at Zilog should have included a function to convert each byte value into three ASCII characters for the hundreds, tens, and units digits and then send them to the host computer. Then, the value of 90 would appear properly in the screen as 090, sent as ASCII characters, 0x30, 0x39, and 0x30. I wrote a binary-to-ASCII routine and added it to the code for the PIR modules MCU. Then 8-bit values became readable. For copies of my modified main.h and main.c files, download ePIR_main.zip at:
www.hendrielane.com/ePIR/ePIR_main.zip. Substitute these files for the main.h and main.c files in the ZDOT1_App project folder.
The added ASCII_OUT routine does not convert the version number transmitted to HyperTerminal when you send the "i" command to the module. Instead, you see two "smiley" faces (they both correspond to the extended ASCII character for 0x01) sent twice for version 1.1 (less the period).
By the way, you can write values to the PIR module, but you must choose an ASCII code with the proper 8-bit value. To send the value 64 to the module, for example, type @. That's a pain. You could write code for the host PC or the PIR MCU to decode three ASCII characters into the corresponding 8-bit value. I didn't have time to proceed with either. Perhaps Zilog could offer demo code for this kit in two forms--one for use with HyperTerminal (ASCII codes and characters) and one with binary values for direct MCU communications.
The Product Specification manual provides information that describes what each command does and how to use it. But some specific examples would help. For example, why would a developer need to change the Current Active Output Time? Would the output time for an outdoor kiosk device vary from the time used for an indoor vending machine? And if so, why? The Zilog engineers give developers a lot of flexibility but didn't explain how to take advantage of it without a lot of cut-and-try lab time.
Overall, the kit performed well although the demo software could use some work. The lack of a flow chart can slow any effort to understand the main.c code. Also, the documentation fails to provide an explanation of what the 10 include and header files do any why the project uses an assembly-language file.