BASIC Programmability 

Freedom of Programming Expression

Programmable Controllers

See our
Code Tips

 
Code & Applications

This page lists available sample projects. Some are "major", and some are just examples of what's possible.
You can freely reuse all published code (subject to this disclaimer).

This is a new project page. Each project that gets on the new page is retested and reevaluated for relevance.
Old projects page is here.

TPS Official Demo

TPP2W | TPP3W

More Info

This is the official demo project for the Tibbo Project System, will work with TPS2, TPS2L and TPS3.

Test Projects for I2C Tibbits

TPP2W | TPP3W

More Info

This is a collection of small projects for testing Tibbits with I2C interface. These are the following devices: #13 (ADC), #14 (DAC), #29 (temperature sensor), #30 (humidity and temperature sensor), #35 (pressure sensor), and 36 (3-axis accelerometer).

Serial-over-IP Application

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

Many Tibbo customers first came to know us by our fixed-function device servers and modules. This project is a serial-over-IP (SOI) application written in Tibbo BASIC. The application is nearly 100% compatible with our fixed SOI firmware.

DS10x4 Remote I/O

EM1000 | DS10x4

More Info

The DS10x4 is a rugged BASIC-programmable industrial controller featuring with eight A/D channels, four D/A channels, two low-power relays, and one RS232/485 port.

DS10x5 Remote I/O

EM1000 | DS10x5

More Info

The DS10x5 is a rugged BASIC-programmable industrial controller featuring eight opto-isolated digital sensor inputs, six high-power relays, and one RS232/485 port.

TPS2L LCD and Keypad Demo

TPS2L | TPP2W

More Info

This is a simple demo on how to work with the LCD and keypad on the TPS2L.

Terminal Application Demo

EM1000 | EM100-TEV

More Info

This demo utilizes the EM1000-TEV and works as a data collection terminal, or more specifically, a time recorder. The IDs used for access are punched in using the keypad, though this can be easily changed to using a card reader.

TR610 Time and Attendance Terminal (OEM Project)

EM1000 | TR610 Time and Attendance Terminal

More Info

When GigaTMS approached us to design a top-of-the-line Time and Attendance Terminal for them, we immediately reached for our EM1000 module.

Wln Library Example

EM500W | EM1000W | EM1202W | EM1206W | NB1010 | DS1101 | DS1102

More Info

Wln (Wireless LAN) Library Demo

DHCP Library Example

EM500W | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This download contains four separate demo projects, corresponding to those described in the DHCP library documentation.

STG (Settings) Library Demo

EM500W | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This download contains four separate demo projects, corresponding to those described in the WLN (Wi-Fi Association) library documentation.

Test Application for the AggreGate (AGG) Library

EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This is the test application described in the AggreGate library documentation. The ZIP archive you'll download contains seven separate projects that correspond to seven steps of creating the application (as narrated by the documentation).

Dehumidifier Control

TPS2L | TPP2W

More Info

This application is described in our Instructables post titled "Controlling 3M dehumidifier with Tibbo Project System".

PPPoE Demo

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This demo application contains the minimum amount of code needed to demonstrate the PPPoE object. With it, your programmable Tibbo device should be able to dial an ADSL modem and get a connection to the Internet.

LED Blinker

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This is one of the simplest demos of Tibbo BASIC. The red LED blinks 3 times when you push the button. At all other times the LED is green. Also, at power-up both Green and Red LEDs blink together 3 times.

Hello World in Morse Code

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This project uses LEDs to send "HELLO WORLD!" in morse code. It builds on the LED blinker project and shows how a long LED pattern (that cannot be set in pat.play in one "go") is split and loaded based on the on_pat event.

Controlling LED (Inband Command)

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This demo shows how simple it is to implement inband commands. Using the $ and % characters as delimiters, you can control the LEDs of your device with a telnet connection, and also transfer data.

CRC-16 Library

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

CRC is a type of hash function used to produce a checksum of a small, fixed number of bits checked against a block of data, such as a packet of network traffic or a block of a computer file. The checksum is used to detect errors after transmission or storage.

Device Memory Wipe

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

Some Tibbo BASIC projects save data to device memory; then, when you upload another project, the data is still there. Or perhaps you want to upload the same project again, but test your setting initialization code. In other words, you want the device to be wiped clean before you upload your project, so you can see what your code does on a brand-new device.

Cellular Phone Keypad

EM1000 | EM1000-TEV

More Info

This project implements cellphone-like text entry using a keypad, including special behaviour for long key presses and changing between alphabetical and numerical modes.

Host Check (ping)

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This function is useful for checking whether or not a host is available on the network. This is not necessarily the same device with which your application eventually tries to communicate; for example, perhaps you just want to verify that a certain router along the way is alive. Or perhaps you want your application to scan several IP addresses and issue an alert if any of them drops off the network.

IP-Based Access Control

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This Access Control demo uses an IP Look-up table to determine if a connection should be allowed. Connections that are not allowed are dropped, an easy but effective way to make your DS selectively inaccessible.

KLM610 Burn-in Test

EM1000 | EM1000-TEV

More Info

This is a little program we developed in-house to test our KLM610 devices. It keeps sending a command string over and over again, and then measures how long the KLM610 takes to respond. If the KLM610 doesn't respond on time, the burn-in test causes the buzzer to beep.

Quote Machine

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This project will turn your device into a Quote Machine -- it will output selected quotes from Star Wars (TM) whenever you push the button. There's even a special mode for Wookiees!

Screen Capture Demo

EM1000 | EM1000-TEV

More Info

This project produces screen captures of what is currently on the LCD and display it on the web page. This is useful when creating the user manual for a new product. It obviates the need to take (and post-process) photos of the display.

Simple Device Server

EM500 | EM1000 | EM1202 | EM1206 | NB1010 | DS1202 | DS1206 | DS1101 | DS1102

More Info

This project implements the simplest "serial device server" possible. There is a single TCP connection. Once this connection is established, whatever is received through TCP is sent out via the serial port and vice versa.

TCP Server

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

A simple TCP server implementation. This demo utilizes all 16 sockets and sends a welcome message when a connection is made.

EEPROM & Resource File

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This demo shows how romfiles and EEPROM memory work. These are the two places used for persistent data storage.

Self Upgrades With Compressed Files

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This demo shows how to use the built-in fd.copyfirmwarelzo method for unzipping a compressed ROM image and flashing your device.

Asynchronous Serial Data Splitter

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This application demonstrates asynchronous data transfer between serial ports using the ser.notifysent syscall. The idea is to emulate the data flow in a system with one master serial port and multiple slave ports.

FTP Server

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This lightweight FTP server demo was designed to showcase the possibility of implementing FTP server.

Modbus Energy Meter

EM1000 | EM1000-TEV |

More Info

This is a quick demo we've put together to allow network access to the CAPTECH PM390 Multifunction Power Meter.

MySQL Client

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

The MySQL Client demo showcase the possibility to implement MySQL client on any EM1000-based Tibbo device. This library was created by Ivan Korposh of SCANCODE Russia.

Virtually Unlimited Math and Conversion

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This demo's mission in life is to help you convert very large numbers between different bases, as well as perform simple calculations on very large numbers. This can be very handy for hashing algorithms, encryption, and all sorts of other tasks that require number conversion.

DNS demo

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This is a pretty complex reusable code. It allows the device to lease a dynamic IP from a DHCP server, and also register a device name with the server.

FTP Client - V2

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This demo transforms a Tibbo device into an FTP client. This effectively lets you publish data on an external webserver directly. It was originally developed by Carlo Tauraso to interface a DS202 with a WS2300 Professional Weather Station and submit the station's sensor data to an FTP server.

Modbus Converter

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This is a bridge demo between Modbus/ASCII/RTU and MODBUS/TCPIP. The serial port is connected to a Modbus/ASCII or MODBUS/RTU device, while the Ethernet port is connected to the server. Commands are sent from the server via Ethernet, and the slave device gets these after they've been converted.

NetBIOS Naming Service

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This project shows the basics of interfacing with NBNS. When a network device searches using a certain NetBIOS name, the demo will reply with the proper answer.

HTML Form

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This project implements a simple HTML login form. Enter a username and password in /index.html, then click login. The result is displayed on the next HTML page (/login.html).

LED and Webserver

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This program sets up a simple web page on the device, with a form which is used to control the LEDs of the device. The form can be used for turning on either of the two LEDs, and also for entering a complex sequence of LED flashes. After entering a complex sequence and submitting the form, the sequence can be played by pressing the button on the device itself.

SNTP Client (Internet Time)

EM500 | EM1000W | EM1202W | EM1206W | DS1202 | DS1206 | DS1100 | DS1101 | DS1102

More Info

This project shows how to get the current time from an SNTP (Simple Network Time Protocol) server. It also incorporates the DNS demo, because the IP address of SNTP servers may change from time to time.

Segment LED Display with SSI Object

EM1000 | EM1000-TEV

More Info

This application shows how to use the SSI object to communicate with a MAX7219 IC driving an 8-digit LED display.

Read/Write from External Serial EEPROM

EM500 | EM1000W | EM1202W | EM1206W |

More Info

This demo project was created by Sebastjan Vodopivec. It allows a Taiko device to read and write data from an external EEPROM. To try the demo, you would need serial EEPROMs from the 24Cxx family (such as 24C16, 2kbytes EEPROM).

I2C communication with a Philips PCA9555 IC

EM1000W | EM1202W | EM1206W |

More Info

The PCA9555 is a 16-bit I2C bus expander. This project shows how to communicate with it, and was created by Tibbo user Seulater.

Old projects page is here.