Propeller PDA.....thoughts
Ravenkallen
Posts: 1,057
I am starting to construct a Propeller PDA( Propeller digital assistant, haha). It will use two 64 Kilobyte EEPROM's(One for the boot menu/ BIOS and the other will store the program booted up from the uSD). Both EEPROM's will have the same data/ clock lines and a dip switch that controls power to the EEPROM's. Upon power up (with the first switch on), the system will boot the main control program, which will include a very basic function that will check the whole system for integrity, a function that will allow boot up parameters to be changed( A BIOS setup utility of sorts), and finally a menu that will allow you to do things like, boot up another program, change preferences, reboot the system, check the system for a file...ect. If you chose to run another program, you will simply turn the first switch off and then turn the second one on. You will then type in the name of the file and it will load it into the second EEPROM and then finally, reboot the system...
It will(of course) have a uSD card for storage of data and programs. It will have a PS/2 keyboard input and a 6 button chording keyboard(for portability). It will use a 128x64 graphic lcd( Which uses a sparkfun serial graphic backpack) for it's main display. Because the display uses 6-7 volts i was thinking about using a 9 volt battery(or maybe two), but its low current capacity would make the device use them up fast...
I have the basic hardware setup and am working on the software now. The main programs to be included would be things like, a word processor, a journal, a calculator, maybe a clock(it would need a better power source then), a calender, some games(I am working on a low res side scrolling shooter game), a small programing environment(using a language that i creating) and a few other like features. It's main benefit is portability and ease of use.....Thoughts?
Update: 9/14/10 Here is a picture of the finished propeller PDA protoypte. There are a few changes... Most of the hardware is now hooked up to pins 0-7, so i will change the software to adjust for these changes.... The main software is almost ready for beta test. I just need to make the loading of programs a little faster(Right now it takes like 3 minutes to load a program) i should cut the time down to 45 seconds...
Update 9/23/10 AHHH!!! the beta program is ready for testers. The pdaboot - archive file has all of the necessary objects to get the main program working. It is not commented and any suggestions will be greatly appreciated. You can also change the pin numbers if you like, but i must warn you, future programs will be made using the original scheme...The file sample1.txt is a program that you put on your SD card. Just save it directly to the SD card. It will simply blink a led on and off on prop pin 11...When you are in the main menu press "p" to run a program. Then type in the name(in this case sample1.txt) then press enter. Watch as a number on the screen increments. Once it reaches 32,000 the system will reboot and the new program will load....MAKE SURE to toggle the power switches for the EEPROMS. You don't want to overwrite the main one by accident...This is VERY basic. It is still a work in progress cut me a little slack. The BIOS block of code will be expanded in future versions to allow more customization....ANY Comments? any at all?
Update 10/6/10...
The new display standard will be the 4D systems uOLED-96-G1. I have chosen this display due to cost and ease of use. I am developing a driver for it.
I have also added a percentage system that will indicate the program's loading progress...
I am working on the system's first real "APP"
I am working on support for a new Chording keyboard. The system will support both the chord keyboard and PS/2 keyboard at the same time..
Due to the new display, power requirements will be lowered to about 4 volts, enabling truer portability.
Update 11/6/10...
Well, i am working on a few major upgrades...First off is the increased speed of the loader
The program loader(aka, main control program/ OS) is capable of booting up programs from external memory...FAST
it loads a 32 kilobyte program in a few seconds...
I have finished the OLED driver and the OLED seems to be playing nice with the Prop...
The new standard for human input is a mini ps/2 keyboard(and when i say small i mean small)..
The menu interface is slightly more streamlined. I am adding a function that will enable the user to check the uSD card for program
files then simply type the appropriate number and it will launch it(that is cool because you will not need to remember the name of a program because the system will search the uSD automatically and look for programs)...
The percentage indicator is redundant due to the high speed of the loader...
I am still searching for a good battery... I am thinking rechargeable AA's or AAA's
Here is a link to the new keyboard...I really like it
http://cgi.ebay.com/SUPER-MINI-SIZE-USB-PS2-SLIM-KEYBOARD-W-7-HOT-KEYS-2-/320528390857?pt=PCA_Mice_Trackballs&hash=item4aa0fb1ac9
It will(of course) have a uSD card for storage of data and programs. It will have a PS/2 keyboard input and a 6 button chording keyboard(for portability). It will use a 128x64 graphic lcd( Which uses a sparkfun serial graphic backpack) for it's main display. Because the display uses 6-7 volts i was thinking about using a 9 volt battery(or maybe two), but its low current capacity would make the device use them up fast...
I have the basic hardware setup and am working on the software now. The main programs to be included would be things like, a word processor, a journal, a calculator, maybe a clock(it would need a better power source then), a calender, some games(I am working on a low res side scrolling shooter game), a small programing environment(using a language that i creating) and a few other like features. It's main benefit is portability and ease of use.....Thoughts?
Update: 9/14/10 Here is a picture of the finished propeller PDA protoypte. There are a few changes... Most of the hardware is now hooked up to pins 0-7, so i will change the software to adjust for these changes.... The main software is almost ready for beta test. I just need to make the loading of programs a little faster(Right now it takes like 3 minutes to load a program) i should cut the time down to 45 seconds...
Update 9/23/10 AHHH!!! the beta program is ready for testers. The pdaboot - archive file has all of the necessary objects to get the main program working. It is not commented and any suggestions will be greatly appreciated. You can also change the pin numbers if you like, but i must warn you, future programs will be made using the original scheme...The file sample1.txt is a program that you put on your SD card. Just save it directly to the SD card. It will simply blink a led on and off on prop pin 11...When you are in the main menu press "p" to run a program. Then type in the name(in this case sample1.txt) then press enter. Watch as a number on the screen increments. Once it reaches 32,000 the system will reboot and the new program will load....MAKE SURE to toggle the power switches for the EEPROMS. You don't want to overwrite the main one by accident...This is VERY basic. It is still a work in progress cut me a little slack. The BIOS block of code will be expanded in future versions to allow more customization....ANY Comments? any at all?
Update 10/6/10...
The new display standard will be the 4D systems uOLED-96-G1. I have chosen this display due to cost and ease of use. I am developing a driver for it.
I have also added a percentage system that will indicate the program's loading progress...
I am working on the system's first real "APP"
I am working on support for a new Chording keyboard. The system will support both the chord keyboard and PS/2 keyboard at the same time..
Due to the new display, power requirements will be lowered to about 4 volts, enabling truer portability.
Update 11/6/10...
Well, i am working on a few major upgrades...First off is the increased speed of the loader
The program loader(aka, main control program/ OS) is capable of booting up programs from external memory...FAST
it loads a 32 kilobyte program in a few seconds...
I have finished the OLED driver and the OLED seems to be playing nice with the Prop...
The new standard for human input is a mini ps/2 keyboard(and when i say small i mean small)..
The menu interface is slightly more streamlined. I am adding a function that will enable the user to check the uSD card for program
files then simply type the appropriate number and it will launch it(that is cool because you will not need to remember the name of a program because the system will search the uSD automatically and look for programs)...
The percentage indicator is redundant due to the high speed of the loader...
I am still searching for a good battery... I am thinking rechargeable AA's or AAA's
Here is a link to the new keyboard...I really like it
http://cgi.ebay.com/SUPER-MINI-SIZE-USB-PS2-SLIM-KEYBOARD-W-7-HOT-KEYS-2-/320528390857?pt=PCA_Mice_Trackballs&hash=item4aa0fb1ac9
Comments
Two LiPos in serial would be around 7.4V. There are lots of different sizes of LiPos so you should be able to find a set (you might need to lay them side by side instead of stacked on top of each other) that would fit you enclosure.
Do you have a menu program? I've been working on a menu program for Rayman's Propeller Touchscreen Platform (PTP). I posted my recent attempt in the thread "Trying to understand using colors!"
I like the idea of having complete control over a PDA and the ability to easily write my own programs for it.
I think some of the database programs would take a bit of work to get them to work with a Prop. How far out to have calendar item?
I'd be very interested in seeing what you come up with.
Duane
I would use an ARM uC running Linux for
something like this.
Here is a suitable board design.
http://www.compulab.co.il/t3530/html/t3530-cm-datasheet.htm
Using Linux means the software you need
will all be available for free. You would not
have to do much coding at all to get a PDA
up and running.
You could also place a sm Prop onto an ARM
board and use it for custom tasks...best of
everything that way.
You know, I'm not totally convinced that is true.
I always try really hard to come in on or below
budget and get the job done ahead of schedule.
I failed a few times but lately I'm not doing too
bad. I hate when I get almost finished on the code
and they ask for some new features !@#$%
I code alone, I can't get anything done working
in a group. On my current project I write the code
and 4 people inspect my code looking for errors.
This is working out really well, it's sort of like working
in a group but better because I'm coding alone
and meet with the group every day to discuss what
they might have found that needs more attention.
This code has to be bug free because if it fails
the result can be injury or even worse. You can
break out in a cold sweat just thinking about what
the result of a serious bug could be. The cost per
line of code has to be pretty high for this project
but cost is secondary in this case to quality and
meeting the deadline.
Humanoido
@Duane....Yeah, i thought 9 volts might be a bad idea. Especially seeing as the LCD can pull 220 mA's at full backlit duty cycle. are these LIPO batteries expensive?
uh. for some of the other questions. The calendar would probably be one of the last features i would implement. And for a menu system. I have a menu system that eliminates all recursive calling. so the stack should be very small. i can show you a small demo of it if you would like...
@Jazzed....Uh the LCD i am using is going to be a monochrome lcd, so the graphics are not going to be that good...But the display does have its own RAM so i will not need a internal display buffer
@Humanido...The programming environment that i am creating would include a very simple, almost cryptic language and it would be stored on the SD card. If the program was run, it would load it from the SD into the hub ram and run it from there. I did a basic speed test on a similar program and i don't thnk that 4,000 instructions per second is unreasonable. I will upload a pic today sometime
Thanks guys
http://www.mouser.com/Search/include/LargeProductImage.aspx?path=busboardprototypesystems/lrg/BPS-IMG-BR1.jpg
They require special chargers but there is a chip made exclusively for charging LiPos (only one cell at a time though).
You said . . . Is this what you mean by recursive calling?
(You can skip the code an see my English discription of "recursive calling" under it.)
Where each menu calls its own submenus? Which means the program can easily be several methods deep.
Is this non-recursive?
(Again you can skip the code and read my discription under it.)
Where all menus and submenus are called from one method. Instead of a menu method calling the method holding the submenu directly if returns to the top method with the instruction to call the submenu method.
The link I gave earlier in this thread has my attempt at "non recursive" menus. I would like to see an example of how you do it.
I'm not totally pleased with my program. What I really need are pointers to methods. I don't think Spin has such a thing. I remember reading about pointers to subroutines (is that what they are called in C?) and wondering why anyone would ever want such a thing. Now that I could use them they're not available (are they?).
In my menu program I have a data structure holding the location of the menu button, its color, the action it triggers and its text. I think it's pretty neat myself. I also keep the list of all the buttons in each menu in the DAT section. I find it makes changing menus around a lot easier.
As I mentioned previously (at least I think I did), I'm using Rayman's PTP with his 3.5" touchscreen. I'm trying to make an input device for my lab data gathering equipment. I think it's a little too big to use as a PDA.
I'm sure Holly is right about other platforms being better matches for PDA hardware but I don't want to learn how to program other chips. I've spent a lot of time learning the Propeller and if making a PDA required a different chip, I wouldn't be interested in it. I am interested in a Propeller PDA.
I think space will be a premium in a PDA. You might want to consider surface mount. I've used this board many times. By slicing the pads on the back in half, I can use a SOIC EEPROM and keep the whole thing small.
Duane
I am actually looking at a couple of projects, one long-term which has shifted gears several times involving the regutting of a NEC PC8201A (Tandy Model 100 clone from back in the day); the other I recently thought of when I got the propmod-us's with the bonus touch display and driver. Both will probably be awhile coming because I only have time to work on them intermittently, though :-(
@Local roger. I would need a pretty hefty(and expensive) converter. It would need to be able to supply at least 500mA's.
@All... i might make a basic schematic when i get some time
i'm sure they would have a good selection of screens there to choose from
Switchers don't really care what input volts you use (within reason!). The only catch is the inductor is a little hard to find - 330uH at 500mA. I got a whole lot for $2 each and they are about the same size as the DIP8 chip.
@Dr_acula/ Local roger.... I feel kinda of sheepish but, I have never even heard of a "switcher". I thought you guys were talking about DC to DC converters. Does a switcher do the same thing? I am going to go look it up on google, haha
but keeping on topic Ravenkallen the supplies are fairly cheap ... atleast I think so
The beta release of the main program should be ready in a few days. I will also release a small program that can be launched from the SD card... For hardware, you will need...
A keyboard on prop pins 6 and 5, pulled up by resistors...
2 64KB EEPROMs on pin 29(For data) and pin 28 (for clock). This is the same hookup as the normal boot EEPROM. I have pullups on both lines. You will need to have a switch on each one of the positive power lines. so when the first switch is on, the main program will boot. Then, once you want to load another program, you simply turn off the first switch and turn on the second( Which is connected to the second EEPROM). After the data is transferred from the SD card to the second EEPROM, the whole system will reboot and load up the new program. Although this method uses 2 EEPROMs, it will keep the main program safe....
You will need a SD card on Prop pins 0(DO), 1(CLK), 2(DI) and 3(CS). I didn't use any pullups and it has worked fine(so far)
And lastly, you will need the Sparkfun 128x64 display on Prop pin 4. If you want to modify the code to work on Parallax Serial terminal you could(Put i guess that would kinda defeat the whole purpose of it being portable).....
And this project is completely open source, so feel free to modify it to your liking.....
If you can get a good speed pulling the instructions off the card as you need them your programs could be larger. Make a simple command set for the graphics set for displaying the results like an old Commodore 64 or TI-99/4A. The only issue with pulling straight from the card (besides possible speed problems) would probably be making some sort of variable system it wouldn't be very practical to keep writing a variable to the sd card and I don't think you can dynamically create variables in the Prop's code so it'll have to be a bunch of premade variables maybe a large array.
Yah I'm just rambling at this point...
It would be pretty cool if we could get a dead IPAQ from Ebay and resurrect it with a brain transplant :idea:.
Just think...
I cant hold her; shes breaking up! Shes breaking
"Gentlemen, we can rebuild him. We have the technology. We have the capability to build the world's first bionic PDA. The PropPAQ will be that man; better than he was before. Better, stronger, faster."
Art