One of Vimms' main purposes is automation and control. For doing this, you need a connection between the pc and the outer world. Here we present two solutions, both extremely low cost and ready to run with Vimms for Linux. These are a digital i/o interface card and a stepper motor controller. Communication is done via RS-232, the boards can also be used by other programs with other operating systems.
Both interfaces are powered by the ATMEL AT90S2313 micro controller. We present the hardware layouts of the circuit boards including etch layouts, the necessary machine program needed for the controller, the programmer software (also realized with Vimms) and example Vimms programms to communicate with the interfaces. Both circuit boards work as application board and as a programmer board for the micro controller. In addition we give the source code for the microcontroller program. This is only to satisfy curiosity or when device behaviour should be changed. Normally only the assembled program in Intel HEX format is needed. Assembling of the source code can be done using the freeware AVR Studio 4, available for download at the ATMEL Webside. The micro controller source also stands unter the terms of the GNU General Public License.
All electronic devices for example can be bought at the german electronic distributor Reichelt Elektronik. I don't know whether the "finder relais" on the digital I/O board are world wide available. I chose them because of their input voltage of 5V. If you take other relais, the etch layout must be modified.
For both the digital i/o interface and the stepper motor controller you need the AVR programmer software, which can be downloaded here (58kb). It runs with Vimms version 2.05b or higher. This software is used to load the controller program into the ATMEL controller. Download this software, recompile the C code pieces choosing "Recompile all" from the File menu, and follow the instructions displayed on the main window. Watch out that your device /dev/ttyS0 (which corresponds to COM1) has the right user rights so that it can be written to from the AVR programmer. Otherwise change user rights using "chmod".
This AVR programmer can generally be used to load any program into the controller. The program must be given in the INTEL HEX format. Only use a RS 232 cable where all 9 pins are connected. The programmer uses the additional pins for loading the program into the micro controller. This is the only way to do the programming without an additional microprocessor on the circuit boards. Don't get impatient during programming: it can take about 20 seconds to load the program.
For everyone who doesn't have a Linux but nevertheless wants to program one of the devices below, we also made a programmer which runs with Windows (tested with Windows XP). Load it here (255kb, archive contains mainly a .exe file).
For people using windows, a good small program to test one of the devices mentioned below is the The DME Calculator. This is a small freeware calculator (actually a small programming language) that can also communicate using a RS232 port. It is based on the non publicized Vimms 1 programming language and has been made available as freeware by DME - Danish Micro Engineering A/S. It can be downloaded from their website.
The digital I/O interface has the following features:
The stepper motor controller has the following features:
This multiplexer allows up to 4 devices to be connected to one single RS232 port. Via stacked multiplexers, even an arbitrary number of devices can be controlled with one single port. An example would be connecting multiple stepper-motor controllers to a single RS232 port. The simultaneous data reception mechanism allows a simultaneous movement of all motors.
This multiplexer has the following features:
Have good luck when trying my layouts!