Ik heb zelf ook een projectje te showen:
Op 14 juli 2009 22:11:36 schreef Lucky luke:
0,7,3,4,5,2,6,1,1,6,2,5,4,3,7,0,6,1,5,2,3,4,0,7,7
Het project dat bij deze getallenreeks hoort is een slimme zender/ontvanger. De getallenreeks is het begin van een look up table voor de foutcorrectie. De zender leest serieel data in (hij wacht op een speciaal karakter, daarna leest 'ie 69 karakters in, om de laatste 2 daarna te overschrijven met CR en LF*), laat vervolgens hamming(7,4) encoding los op ieder nible, waardoor 1 bit per nibble zonder schade om mag vallen. Ontvanger zet 'm dan weer recht. Na de hamming(7,4) encoding past de zender ook nog manchester encoding toe om ervoor te zorgen dat de zendmodule niet te veel enen of nullen achter elkaar te zien krijgt (max. 2 dus). Daarna wordt de data verzonden, voorafgegaan door nog 2 bytes 1010101etc. om de ontvanger goed in te stellen, en een byte waarmee de ontvanger weet "nu komt mijn data". Vreselijk veel overhead, maar wel een goede verbinding.
De ontvanger wacht op het byte dat aangeeft dat er data komt, daarna leest 'ie de data in en decodeerd het weer, daarbij ook foutcorrectie toepassend.
Alle encoding en decoding wordt gedaan met look up tables (en een look down list). Dat betekend dat ik van tevoren alle mogelijkheden heb zitten uitrekenen... (voor de foutcorrectie zijn dat er 127... 5 bits...)
Zender op breadbord:
(let niet op die attiny26, die is nog van "stamptegel")
Ontvanger op breadboard:
Het kleine bruine printje zit een max232 op om 'm even aan mijn PC te kunnen hangen.
Ik heb het getest, met de gps die ook op de foto staat, en het heeft er geen last van als ik tegelijkertijd mijn klikaan/uit kloon probeer te bedienen. Andersom wel trouwens, vandaar "probeer te".
Zender zit nu in een PIC16F684A, maar dat is zwaar overkill, hij is nog geen half K code...
Ontvanger zit in een 16F628A, past ook nog redelijk ruim.
Beiden draaien op 4Mhz.
zendmodules zijn die van Niels W (sk actie).
Projectje is nog een soort staartje van CanSat, daar lukte het niet om GPS gegevens heelhuids door te zenden (en bij NSCS** ging ook temperatuur doorzenden*** fout), terwijl het toch verdorie moet kunnen.
*= Ja, dat kan ik beter in de ontvanger oplossen...
**=Nut Shell CanSat, CanSat in een notendop, letterlijk. Zie een vorig ShowYourProjects topic.
***=Maar dat werd dan ook gewoon verzonden als seriële data, zonder enige encoding of wat ook, vanaf een attiny die op interne oscilator draaide. Af en toe ging het overigens wel goed...
EDIT:
img tags rond 2e foto gezet en "let niet op de attiny" toegevoegd.