no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | cybiko:ideas [2009/11/27 17:54] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | =======Cybiko Project Ideas====== | ||
+ | =====Dual-Redundant Cybikos for a reliable data link===== | ||
+ | We know that the reliability issues with the RF/RS232 subsystems on the Cybiko will eventually cause lockup on a Cybiko unit. In order to circumvent this, the following is proposed ... | ||
+ | |||
+ | Have a co-located pair of Cybikos dedicated to running an RS232 to RF link. RF data would be sent/ | ||
+ | |||
+ | The following diagram illustrates the setup for one resilient node: | ||
+ | |||
+ | {{cybiko: | ||
+ | |||
+ | |||
+ | Another thought. Rather than having both Cybikos transmit and receive at the same time, it might be better to run a ' | ||
+ | |||
+ | AVR would talk to the subsystem using its internal UART. The Cybikos RS232 would be connected to 'bit banged' | ||
+ | |||
+ | Remember that, when booting, the Cybikos throw out a load of debug data onto the RS232 port. The AVR code will have to ignore this. | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | <code basic> | ||
+ | Init all three ports to 9600baud 8 bits, 1 start, 1 stop , no parity. | ||
+ | do | ||
+ | wait for heartbeat from Cybiko1 | ||
+ | if good Cybiko1 heartbeat, select Cybiko1 as master, exit loop | ||
+ | else reset Cybiko1 | ||
+ | if good Cybiko2 heartbeat, select Cybiko2 as master, exit loop | ||
+ | else reset Cybiko2 | ||
+ | loop | ||
+ | |||
+ | do | ||
+ | check for heartbeat from master, if no heartbeat swap master/ | ||
+ | check for incoming byte from subsystem, send to master | ||
+ | check for incoming byte from master, send to subsystem | ||
+ | loop | ||
+ | </ | ||
+ | |||
+ | =====Smart Terminal===== | ||
+ | |||
+ | A general purpose ' | ||
+ | |||
+ | Connects via the Cybiko serial port to micro UART at a user configurable baud rate | ||
+ | |||
+ | Cybiko runs a custom written Command Interpreter that exposes the features of the Cybiko in order that they can be easily used by the micro. Idea is to have the Cybiko act as an ''' | ||
+ | |||
+ | Ideally, the command protocol should be reasonably ' | ||
+ | |||
+ | Investigation into the threading models within CyOS might be interesting. | ||
+ | |||
+ | |||
+ | Features: | ||
+ | |||
+ | * Keyboard | ||
+ | - All keyboard input to be re-directed to the Cybiko serial port. | ||
+ | - Support an ' | ||
+ | * Screen - Micro can direct its output onto the Cybiko screen. Perhaps implement VT100 style control codes. | ||
+ | * Sounder - Micro can activate the sounder on the Cybiko. | ||
+ | * Vibrator - Micro can activate the vibrator on the Cybiko. | ||
+ | * Wireless - Micro can: | ||
+ | - scan for other Cybikos in range and get a list of their Ids | ||
+ | - send a message to another Cybiko | ||
+ | - be notified of incoming messages to the attached Cybiko | ||
+ | * Datalog - Micro can open a named file & subsequently store gathered data to this file. | ||
+ | * Dataread - Open a named file & read data items from it (e.g. a pool of string resources) | ||
+ | * Date/Time - Micro can retrieve the Date/Time from the Cybiko | ||
+ | * Id - recover the CyId and nickname of the attached Cybiko. | ||
+ | |||
+ | Advanced idea. Have a PC based program to allow a UI for the Cybiko to be designed. This might be as simple as " | ||
+ | |||
+ | Note: Recently, the RFTerminal program has been further developed. It now has quite a lot of the sort of functionality that is mentioned in this idea. | ||
+ | |||
+ | =====Data Generator===== | ||
+ | |||
+ | This would be a useful utility that would could be used to verify that various programs in the messaging suite are working. | ||
+ | |||
+ | Useful options might be | ||
+ | * Max/Min length of message | ||
+ | * Transmit pace - How may messages per minute should be generated. | ||
+ | * Timeout period - After running for a given number of minutes the unit should halt for a period. | ||
+ | * Halt period - Amount of time to suspend transmision during a timeout. | ||
+ | |||
+ | |||
+ | =====Smartcard filestore===== | ||
+ | |||
+ | The addition of a MP3 player and associated smartcard to a Classic unit would allow a smart 'RS232 based disk storage subsystem' | ||
+ | |||
+ | |||
+ | =====.dl for common functions===== | ||
+ | |||
+ | The current application suite is now quite extensive. In order to save code space and reduce the burden on code maintanance, | ||
+ | |||
+ | |||
+ | |||
+ | ===== epforms.dl ===== | ||
+ | |||
+ | Here is the first user-created .dl for use in programs. It ties together 4 of Ernest Pazera' | ||
+ | |||
+ | {{cybiko: | ||
+ | |||
+ | The functions are: | ||
+ | |||
+ | FileListForm gets a list of files according to the wildcard filter | ||
+ | (ex. *.txt) that you provide when calling it in a form that you | ||
+ | can simply scroll through and select. The other parameters are easy | ||
+ | to figure out from the prototype: | ||
+ | <code c> | ||
+ | int FileListForm( | ||
+ | char* title, | ||
+ | char* filter, | ||
+ | char* filename, // (OUT) Filename selected | ||
+ | | ||
+ | int x, // Upper left corner, x pos | ||
+ | int y, // Upper left corner, y pos | ||
+ | int w, // Width of form | ||
+ | int h // Height of form | ||
+ | )</ | ||
+ | SimpleMenuForm pops up a form with text line options that you can scroll | ||
+ | through and select. Here's the prototype: | ||
+ | <code c> | ||
+ | int SimpleMenuForm( | ||
+ | char* title, | ||
+ | | ||
+ | int x, // (IN) X coordinate of upperleft | ||
+ | int y, // (IN) Y coordinate of upperleft | ||
+ | int width, | ||
+ | int height, | ||
+ | bool round, | ||
+ | | ||
+ | )</ | ||
+ | MessageBox is the easiest to use and it is your standard pop up message | ||
+ | with buttons to press. It's prototype is: | ||
+ | <code c> | ||
+ | int MessageBox( | ||
+ | char *title, | ||
+ | char *message, // (IN) Message for this message box | ||
+ | long style, | ||
+ | | ||
+ | )</ | ||
+ | InputBox is similar is MessageBox except that it has an input | ||
+ | area to enter a line of text. It's prototype is: | ||
+ | <code c> | ||
+ | int InputBox( | ||
+ | char* title, | ||
+ | char* message, | ||
+ | long style, | ||
+ | int edit_size, | ||
+ | char* edit_text, // (IN/OUT) Input box text | ||
+ | | ||
+ | )</ | ||
+ | |||
+ | |||
+ | =====Another Gateway possibility===== | ||
+ | |||
+ | Right now, the only way that we have to connect a Cybiko to a ' | ||
+ | |||
+ | Update ... looks like this won't work. Whenever the USB cable is in place, access from the Cybiko to the smartcard seems to be disabled! | ||
+ | |||
+ | A possible workaround for this problem would be to use some sort of wireless transfer application to access the information on the smartcard. | ||
+ | |||
+ | |||
+ | =====Motor Driver / Processor===== | ||
+ | |||
+ | A driver and processor for a motor, such as in a model Chinook. Uses RS232 to communicate with external microprocessor (PIC?) which sends and recieves data about pitch, yaw, motor speeds, and possibly expandability for landing, roll, turning. | ||
+ | Gui on remote cybiko to display the information, | ||
+ | |||
+ | =====I2C Bus investigation===== | ||
+ | |||
+ | The cybiko incorporates an I2C bus for the internal clock. If this were tapped into then several extra functions could be obtained, such as parallel output or digital potentiometer. There are also functions like temperature sensors and sound control, such as volume and tone. |