====== Juhtmevaba programmeerimine ======
Kauglabori programmeerimise lahenduse tehniline kirjeldus ja kasutusjuhend.
===== Kiirjuhend =====
**Robotil**
* Laadida Wireless_bootloader HapyJTAG2 programmiga
* Kontrollida FuseBit-s Boot vector enabled (hlinit keerab selle maha)
* Fusebits: 90 F7
* Kontrollida XBee konfiguratsiooni
**Kauglabori serveris**
Koodi laadimine:
./robocop -r [roboti number] -f [hex faili nimi]
./robocop -r 3 -f atmega2561_demo.hex
Reseti tegemine
./robocop -r [roboti number] -R
./robocop -r 3 -R
ADC sisendite lugemine:
./robocop -r [roboti number] -a -i [intervall sek] -n [lugemite arv]
./robocop -r 2 -a -i 1 -n 10
**Veebiserveris**
===== Detailne juhend =====
RoboCop on Linuxi keskkonnas töötav kauglabori robotite haldamise kliendiprogramm, mis kasutab vajadusel RoboLoader-it ja RoboCharger-it. RoboLoader sisaldab bootloaderit ja Robocharger laadimisprogrammi.
{{:et:distancelab:robotite_haldamine.png?330|}}\\
\\
Mõned RoboCop programmi võimalused
* Uue programmi laadimine robotile
* XBee viikude seadistamine
* ADC andmete lugemine konsoolis ja andmete salvestamine kasutaja arvuti kõvakettale .txt formaadis
* Roboti raadiomoodulu konfiguratsiooni kontrollimine (juhtmevaba)
* Roboti raadiomooduli konfigureerimine (juhtmevaba)
* Roboti oleku jälgimine, laadima saatmine
* Kauglabori veebikeskkonnas robotit puudutava info uuendamine\\
\\
RoboLoader ehk juhtmevaba bootloader
* Arvestab raadiosidest tulenevate võimalike probleemidega
* Saadab andmeid blokkide kaupa
* Kontrollib laetud andmeblokkide õigsust kontrollsummaga
* Vea korral kasutab andmebloki kordussaatmist
* Omab mõistlikke ooteaegu\\
\\
RoboCharger ehk juhtmevaba laadimisprogramm
* Sisaldab loogikat laadimisjaama otsimiseks
* Tuvastab laadimise alguse
* Tuvastab laadimise lõpu
* Vabastab laadimisjaama\\
{{:et:distancelab:skeem.jpg?330|}}
**Robocopi oleku kontroll**
*Pärib baasist robotite loetelu, olekud, seadistused ...
*Kontrollib iga roboti aku pinget, temperatuuri
*Vajadusel muudab roboti olekut (DIO4) active -> charge
*Saadab roboti laadima, laeb robotisse RoboCharger programmi
*Muudab roboti olekut Kauglabori veebikeskkonnas
*Salvestab (ADC) parameetrid, analüüsi (graafikute) tarbeks.
**RoboCharger**
*Otsib / sõidab laadimisjaama
*Tuvastab laadimise alguse *
*Peab arvet aja üle (igaks juhuks, kui laadimine ei lõpe)
*Kontrollib akude temperatuuri (seda teeb ka RoboCop)
*Tuvastab laadimise lõpu, vabastab laadimisjaama
*Muudab roboti oleku charge -> active
==== RoboCopi kasutamine ====
Usage: robocop [options]
General options:\\
-r remote 16 bit address\\
-f flash robot\\
-R reset robot\\
-m maintenance (check batteries)\\
GPIO options\\
-g gpio num\\
-v gpio value (0|1)\\
ADC options\\
* -a read adc0 value\\
* -n read number of samples\\
* -i interval between samples\\
* -A all ADC's\\
Diagnostics options\\
-c check remote XBee configuration\\
-F fix remote XBee configuration\\
-m test MySQL connectivity\\
**Koodi laadimine**
-r3 = roboti 16 bitiine aadress
./robocop -r [roboti number] -f [hex faili nimi]
./robocop -r 3 -f atmega2561_demo.hex
\\
**ADC kasutamine**
Aku pinge pärimine
./robocop -r [roboti number] -a
./robocop -r 3 -f -a
\\
Aku pinge nomitoorimine
./robocop -r [roboti number] -a -n [näitude arv] -i [intervall (1/10 s)]
./robocop -r 3 -a -n 100 -i 1
Konsooli edastatakse 100 korda iga 0,1 sekundi järel aku pinge.
\\
ADC kõikide kanalite näidud
./robocop -r [roboti number] -a -n [näitude arv] -i [intervall (1/10 s)] -A
./robocop -r 3 -a -n 100 -i 1 -A
\\
**Muud toimingud**\\
\\
XBee seadistuse kontroll
./robocop -r [roboti number] -c
./robocop -r 3 -c
\\
XBee seadistuste parandamine
./robocop -r [roboti number] -F
./robocop -r 3 -F
\\
Robotile reseti tegemine
./robocop -r [roboti number] -R
./robocop -r 3 -R
\\
GIPO viikude seadistamine
./robocop -r [roboti number] -g [viigu number] -v [1|0]
./robocop -r 3 -g 4 -v 1
g4 tähendab XBee viiku DIO4 ja v 1 tähendab et see viik määrati kõrgeks
**Locking**
Mitme RoboCop programmi korraga kasutamine ei ole probleem.
Oodatakse viisakalt järjekorras, kuni võtk vabaneb või aeg otsa saab.
===== Probleemid-Lahendused =====
\\
**Ei saa juhtmevabalt programmeerida**
* Lae bootloader kontrollerile uuesti
* Kontrolli et fusebit oleks 0x90 0xF7