WAM
From ScribbleWiki: Cwing
| |
Wireless Ad-hoc Mesh-network
- Billy Tetrud
- Sepand Parhami
WAM is a hand-held mobile device that can connect to other WAM units to create a small-area network.
WAM features a full keyboard and monochrome graphic LCD screen used to interact with the device. The main function of the device at the moment is text messaging between both in-range units, and out-of-range units that are connected to the network. Out-of-range units can be communicated to through in-range units that forward network packets. We are attempting to provide a range-finding feature on the device that would have a granularity of about 6 meters, and would be used to create a map of other units that are in range. We also might add voice messaging and some sort of network game.
The below is the work-in-progress documentation for our project. It contains the source code, testing records, and other documentation.
Contents |
Program documentation pages
- Current program size - 19.2KB (20%) 16:06, 21 April 2008 (CDT)
Program source
Poster and presentation
Applications
- List network properties:
- Who's in range
- What range you have
- who's in your network
- next hop to each unit in the network
- Distance to each unit (could be very inaccurate)
-
11.99 meters/tick = c/(1000*1000*1000 ns/s) * 40 ns/tick = distance resolution at 24 MHz (6.24 m/tick at 48MHz) - UPDATE: 3.123 meters/tick = c/(1000*1000*1000 ns/s) * 10.4166 ns/tick = distance resolution at 96 MHz
-
- triangulation map (could be used to build routes)
- Simple text messanger (ready to testing)
- Audio messanger
- Hung up because D to A converter is on backwards
- Some network game (requires graphic programming) (MAYBE SPACE WARS!!!!)
problems
Oscillator output waveform does not look right- Key 19 connected to U07 doesn't work
LCDs are messed up a bit- fix it by tightening the securing flappy things on the back.- We figured out that what we thought was the DC to DC converter was really just a regulator. So now we know we have a .5V operating range between 4.8V and 5.3V.
What we would change if we were back in 2007
- Flip the keyboard so it is in the intended orientation
- Stagger keys on keyboard (so that they fit better)
- Wire the wireless transceiver 'ready' pin to an interrupt pin
- Get a *real* DC to DC converter
- Read the analog component data sheets much more carefully
- Move the power switch over a tad so that the wireless transceiver would fit flat on.
- Could have used a smaller oscillator or crystal, but we wanted it to be socketed in case it was a problem
- Put the battery leads somewhere on the side rather than in the middle. Make them big through holes so that we can put wires through them.
- Make sure we clearly mark the orientation of all parts
- Add LEDs to give feedback to the user such as: keyboard state(shift, caps, ctrl, etc), network status, power status
assignements
- get battery holder and connector soldered (Completed!)
- Solder on Pin header for LCDs (Completed!)
- Learn about downloading code to PIC (Completed!)
- Get proper cable (Completed!)
- Find IDE/Compiler (Completed!)
- Boot loading test (try to test output pins) (Completed!)
- get connector for lcd (Completed!)
- get presentable connector for lcd (Unassigned)
- LCD driver
(set pixel at position)(must write 8 pixels at a time at the lowest level) (includes testing of IO pins) (Completed!) - text function (write character at position) (mostly Completed!)
- console functions (
keep track of cursor, newline when needed, etc) (Completed!) - keyboard driver (Completed!)
- scheduler (Completed!)
- wireless unit tests (Completed!)
- wireless unit driver (Testing)
- wirless protocol (in progress)
- text messanger (ready to test)
- audio output driver (Completed!)
- audio input driver (Testing!)
Sepand
- get battery holder and connector soldered (Completed!)
- Solder on Pin header for LCDs (Completed!)
- Learn about downloading code to PIC (Completed!)
- Get proper cable (Completed!)
- Find IDE/Compiler (Completed!)
- Boot loading test (try to test output pins) (Completed!)
- get connector for lcd (Completed!)
- keyboard driver (Completed!)
- scheduler (Completed!)
- wireless unit tests (Completed!)
- wireless unit driver (Testing)
- audio output tests (Completed!)
- audio output driver (Completed!)
- audio input tests (Completed!)
- audio input driver (Testing!)
Billy
- LCD driver
(set pixel at position)(must write 8 pixels at a time at the lowest level) (includes testing of IO pins) (Completed!) - text function (write character at position) (mostly Completed!)
- console functions (
keep track of cursor, newline when needed, etc) (Completed!) - wirless protocol (in progress)
- text messanger (ready to test)