|
Project historyIn order to get this website done, someone has to write about the project history. So I sit here, scratching my head and trying to remember. If something ain't completely correct, well that's how it goes as memory fades... The beginningLike most kids, we all went to school. While Alexander and Marc know each other like since they were born, I (Burkart) got to know them in 11th class, I guess. For your information: In Germany there are 13 classes until you're done with school. In 12th and 13th grade we were in the same physics "Leistungskurs" and some other courses. By that time, Marc had been into amateur (ham?) radio for some years, Alexander was fiddling with Borland Delphi and I myself wrote some little, mostly unfinished assembly programs for my TI-82. Alexander had bought a TI-83 in the beginning of 12th class. The ideaSome classes are quite interesting, some aren't and some are even boring. So one day Alexander came up with the idea that it would be cool to have the ability of reading/writing e-mail during classes on the TI. To avoid looong cables all across school, the data transmission had to be done via radio. In order to allow not only one person to do this, instead of a direct connection a network would have to be established. So Alexander quickly sketched out the idea of Marc getting a radio link to work, himself doing the PC software and me writing an e-mail program on the TI. First problems...But it turned out that we underestimated the work we had to put into development of such a system. Building a radio link out of simple parts (coils, capacitors etc.) seemed impossible and would also be illegal for anyone but Marc to utilise. Transmitting data using Vasantha Crabb's nice I²C library also turned out to be impossible via radio. ...and solutionsHappily we found out about nordic's transceiver IC nRF433 which was able to send/receive digital(!) data at 9600bit/s and was relatively easy to build (compared to constructing a transceiver on your own). Also it's use was license free - perfect. To accomplish low level data transfers we decided to use good old RS232 (actually it turned out that all the nice ideas I had when I was in hospital must've been the same, the RS232 developers had :-). To implement this on the server (PC) side, we found a nice library on the internet, programming RS232 on the TI-82 was up for the near future at that time. It must have also been at this period when we decided that the server had to do most of the business (protocols and so on) while the TIs were to act as dumb terminals. Work on RS232As RS232 does not use TTL, we had to build a simple level converter (aka Interface 1.0) which is merely a modified $4 serial link (see ticalc.org for more info on this). Implementing RS232 on the TI wasn't too hard as well, but the last 5% to perfection are the hardest part. Of course serial asynchronous timing is very susceptable. In the beginning, when linking TI and PC together, we received pure garbage. As the processor inside the TI does not support RS232 by hardware, it had to be implemented with lots of waitstates (NOPs), the problem was to adjust the number of NOPs to the exact right number. And everytime we chose another calculator or when the batteries got a little empty, the adjustment had to be done again. That was really a mess. Radio linkingAbout this time we tried to get the linking to work not by cable only but via radio. In order to do so we contacted the manufacturer of the transceiver ICs. It turned out that the nRF433 had been replaced by the nRF401 and that we had to purchase at least 10 ICs for 9 EUR/US$ each. First we hesitated but with a financial supply by our school we bought them. We got the money, as from this time on we no longer did this project just for fun but with the intention of participating at the "Jugend forscht" competition. Except from the money, another benefit was that our Jufo consultant teacher helped us to find people who could help us. First of all this was Mr. Brunk, who had considered using an nRF401 based radio transmission for an own project. He had purchased 2 evaluation boards and lended them to us. The other contact was to an institute at the university where we could make PCBs. We tried to make a PCB for the nRF401, but it turned out to be very hard to solder and if I recall right, we never ever got this thing to work. Anyway, with the two evaluation boards we got basic RS232 linking to work via radio! High-level protocolAfter getting RS232 low-level transfers to work and after testing intermediate-level protocol (making packets out of bytes) we had to care for the high-level protocol which regulates which client is allowed to send at a certain time. We still donot know the definate reason why, but we didn't get it to work. Most likely this is because the TI is really occupied with doing low-level transfers, leaving no or just very little time to do high-level protocol and even displaying of data (even displaying a simple string takes really long if you're thinking in "RS232 dimensions"). Jugend forscht 2001"Jugend forscht 2001" was in winter/spring 2001 and we were rapidly moving towards the deadline. Still we hadn't been able to work out the high-level protocol and as of this weren't able to show our whole system but just a simple RS232 data transfer via radio. So when it came to horourating the winners, we assumed to be the big loosers. Actually we were the last three guys standing in front of the audience whilst all prizes had already been given away. Quite a feeling... How surprised we were when it turned out that we had been moved from category mathematics/computer sciences to technology and assumed the first prize at that category! Country fair 2001After the victory came the work. Being the best technology group from the regional fair, we were allowed to present our project at the country fair. As it was clear to us, that we have had an enormous amount of luck and that we would most likely not have that again at the next level, we worked even harder than before on getting the high-level protocol to work. However, all the sleepless nights, hours spent in front of the computer were useless - it just didn't work out. Additionally Marc got ill and therefor couldn't come to the country fair, which also messed up our presentation which had been designed for 3 persons. The result was, that we had quite some fun, but ended up without being one of the top 3 groups, but getting a special prize which was a practical course we never did due to several reasons. End of schoolBy the time Jugend forscht 2001 was over, we had to concentrate more on school, as the final exams were getting nearer: In summer 2001 we did our "Abitur". Sadly we never got to work our system while we were at school ourselves. Probably we worked a little on the project now and then, but I don't remember it to be really much. Also another difficulty was ahead as I moved to Magdeburg, to study there, from October 2001 on, while Alexander and Marc stayed in Göttingen, which means we were separated by about 200km or a 3 hours train trip. Adding a microcontrollerHowever, before civil service for Marc and Alexander and university for me started, we had some months with nothing to do, so someday we were so bored out of our minds, that we started doing something for the project again :-) As stated above, we assumed that the system didn't work as the TI couldn't do RS232 and high-level protocol altogether while still displaying data. So we came up with the idea of adding a microcontroller between radio transceiver and TI to do the business. The microcontroller should then only send that data to the TI, which this needed to get; the microcontroller can be seen as a filter. Additionally the microcontroller had to send ACKs, dummy packets and all the stuff that's needed to keep the high-level protocol working. Also microcontrollers often have an integrated UART (RS232 transceiver), therefor removing the need to emulate RS232 via software. We came up with a list of features, the microcontroller of choice should have: Hardware UART, some kilobytes of RAM to temporarily store data in, the ability to easily program it, plus it should of course be cheap and available. It turned out to be harder to find such a microcontroller, than we thought. The main problem was to find a microcontroller with enough RAM, most microcontrollers only have a few bytes, which is way too few. In the end we decided for the 8051 compatible AT89C51 with an external 32kB SRAM. Get it to workNobody of us had ever programmed a microcontroller before, so it was necessary to get some experience with it. To be able to do this, we designed a circuit and PCB with the microcontroller and the SRAM on it. As basic microcontroller programming ain't that hard, I could soon start to start writing code for the high-level protocol and the now necessary TI<->µC protocol. Not to forget: In the meantime Alexander was busy writing the server software. As he was learning Delphi by doing, he rewrote the software from scratch a few times in order to make it better every time. Also he wrote some utilities I needed to debug the microcontroller (I don't want to discourage anyone, but debugging microcontroller software is really hard). So while Alexander had the server done to a certain extent, I was still busy completing the microcontroller software, which made it hard to test the server software as it all goes hand in hand. I forgot to mention one thing: We had planned to take part at Jugend forscht 2002, so we had a deadline again. Hardware 2.0Up to now, all the development had been done using cables to transfer data between PC and microcontroller, it was time to get the radio transmission to work. To do so and to avoid having to connect several PCBs via lots of wires, we wanted to put all together on a nice single PCB. Marc and Alexander did a great deal of doing so, with the assistance of a company whose business is to produce such boards. The new PCB incorporates the microcontroller plus the external SRAM connected to the nRF401 with integrated loop antenna together with some LEDs and other fancy stuff. The bad thing was that producing the PCBs took a lot of time, actually they arrived just the day before the Jugend forscht regional fair and Marc had to work hard to get the parts soldered onto them just this night. Jugend forscht 2002 regional fairNot only haven't we been able to test the new boards, additionally again we had no completely working high-level protocol the day before the contest. As this was definately a software problem I guess that Alexander was trying hard to probably find a bug in the server, here's a little story about me: I was in Magdeburg, Jugend forscht in Braunschweig (which is almost in between Göttingen and Magdeburg), so my dad drove to Magdeburg and took me, my computer and a lot of other stuff to Braunschweig, where I slept at my sister's boyfriend's. Or better: I was supposed to sleep there. Keeping in mind, that our system was not running, I was way too nervous to fall alseep. Furthermore I discovered that one very important box was missing, but I didn't want to wake up my sister and her boyfriend. So I decided that it's better to have another look at the code than to just wander around the room like mad. But back to the topic: Next day was the competition and I have to say that neither Alexander nor me found the big bug. To make it short: We were really disappointed and thought that all our efforts were in vain. But again we had a good fortune and turned out to have one of the best projects of the regional fair. Jugend forscht 2002 country fairIn the time between regional and country fair I stayed at my parents' in Göttingen and we all spent a lot of time on the project, as everybody including ourselves said that we had like the luck of a lifetime and that it's our goddamn duty to get the system to work at the country fair. And we did! I discovered a fundamental yet hard to detect bug in the microcontroller software, some minor bugfixes in all softwares had been made and we found out why our precious Hardware 2.0 didn't work: The CAD program's socket definition of the microcontroller was wrong and because of this half of the pins were assigned wrong. As we had neither time nor money to make new PCBs, Marc had to build some "adaptors" to get the microcontrollers to work in the wrong sockets. It must have been the day before the country fair, when we met at my parents' with all our equipment to try and get the system to work as it should work at the competition. If I recall right, this was the first time that we got the system to work properly all the way, we wanted it to. That was really cool and we were ready (yet a little tired) to go to the country fair - for the first time confident. The competition itself was nice and all, just one problem arouse in the presentation: On one point the server sent an illegal packet, causing the TI to screw up by wrapping all lines around and making the bottom line the top line. Except for this all was perfect and one juror even said afterwards how he liked both the presentation and the written paper. For the first time we had the chance to get to the state fair which is the third and last level of Jugend forscht. But it turned out that we were "only" second best so you can guess, like we were happy when we we won unpredictably, we were sad when we had the chance to win but just didn't. Further storyAnyway, life goes on! But as it's not likely that we present our project at another competition, there's been really few development since spring 2002. However we have a working system and some ideas for improvements, so you might want to look at the project status or at the project future. |