This shows you the differences between two versions of the page.
| en:distancelab:wirelessprogram [2012/03/30 17:18] – created illo | en:distancelab:wirelessprogram [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Wireless programming ====== | ||
| + | The technical solution description and a user manual for wireless programming of Distance Lab. | ||
| + | ===== Quick Guide ===== | ||
| + | |||
| + | **The Robot** | ||
| + | * Load Wireless_bootloader with a program called HapyJTAG2 | ||
| + | * Check FuseBits –if Boot vector is enabled | ||
| + | * Fusebits: 90 F7 | ||
| + | * Check configuration of the XBee\\ | ||
| + | |||
| + | **Distancelab Server ** | ||
| + | \\ | ||
| + | \\ | ||
| + | Loading the code: | ||
| + | < | ||
| + | ./robocop -r [robot’s number] -f [the hex file name] | ||
| + | ./robocop -r 3 -f atmega2561_demo.hex | ||
| + | </ | ||
| + | \\ | ||
| + | Creating reset\\ | ||
| + | < | ||
| + | ./robocop -r [robot’s number] -R | ||
| + | ./robocop -r 3 -R | ||
| + | </ | ||
| + | \\ | ||
| + | Reading the ADC inputs: | ||
| + | < | ||
| + | ./robocop -r [robot’s number] -a -i [interval (1/10 s)] -n [numbers of readings] | ||
| + | ./robocop -r 2 -a -i 1 -n 10 | ||
| + | </ | ||
| + | \\ | ||
| + | **In webserver** | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | ===== Detailed manual ===== | ||
| + | RoboCop is Linux based client program for Distancelab robots, it uses if necessary RobotLoader and RobotCharger. The RobotLoader contains bootloader, as the RobotLoader contains a charging program.\\ | ||
| + | |||
| + | {{: | ||
| + | \\ | ||
| + | Some of the opportunities offered by RoboCop | ||
| + | * Loading the new .hex file to the robot | ||
| + | * XBee pin configuration | ||
| + | * Displaying | ||
| + | * Robot’s wireless module configuration check, check is done wireless | ||
| + | * Configuration of the robot’s wireless module, check is done wireless | ||
| + | * Monitoring the state of the robot and sending it to charge | ||
| + | * Refreshing the info about robots in the Distancelab webpage \\ | ||
| + | \\ | ||
| + | RoboLoader or wireless bootloader | ||
| + | * Takes into account possible errors arising from the radio communication | ||
| + | * Sends the data by blocks | ||
| + | * Checks the data blocks accuracy with checksum | ||
| + | * In case of error, sends the data again | ||
| + | * Has a reasonabe | ||
| + | \\ | ||
| + | RoboCharger also wireless charging program | ||
| + | * Contains algorithm for finding the charger | ||
| + | * Identifies the beginning of the charging cycle | ||
| + | * Identifies the end of the charging cycle | ||
| + | * Releases the charging station\\ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **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, | ||
| + | |||
| + | **RoboCharger** | ||
| + | *Contains algorithm for seeking the charging station | ||
| + | *Detects the beginning of charging * | ||
| + | *Takse charging time in consideration just in case if chargind doesn' | ||
| + | *Checks the tempriture of the batteries, it’s also done by RoboCop | ||
| + | *Detects the end of charging cycle, free’s the charging station in a program | ||
| + | *Changes the robot status charge -> active | ||
| + | |||
| + | ==== Use of RoboCop==== | ||
| + | |||
| + | Usage: robocop [options] | ||
| + | |||
| + | General options:\\ | ||
| + | * -r remote 16 bit address\\ | ||
| + | * -f < | ||
| + | * -R reset robot\\ | ||
| + | * -m maintenance (check batteries)\\ | ||
| + | |||
| + | GPIO options\\ | ||
| + | * -g gpio num\\ | ||
| + | * -v gpio value (0|1)\\ | ||
| + | |||
| + | ADC options\\ | ||
| + | * -a read adc0 value\\ | ||
| + | * -n < | ||
| + | * -i < | ||
| + | * -A all ADC' | ||
| + | |||
| + | Diagnostics options\\ | ||
| + | * -c check remote XBee configuration\\ | ||
| + | * -F fix remote XBee configuration\\ | ||
| + | * -m test MySQL connectivity\\ | ||
| + | |||
| + | ** Uploading the code** | ||
| + | |||
| + | -r3 = robot’s 16 bit address | ||
| + | < | ||
| + | ./robocop -r [robot’s number] -f [hex fail name] | ||
| + | ./robocop -r 3 -f atmega2561_demo.hex | ||
| + | </ | ||
| + | \\ | ||
| + | **Using the ADC ** | ||
| + | \\ | ||
| + | Reading the ADC inputs: | ||
| + | < | ||
| + | ./robocop -r [robot’s number] -a | ||
| + | ./robocop -r 3 -f -a | ||
| + | </ | ||
| + | \\ | ||
| + | Monitoring battery level | ||
| + | < | ||
| + | ./robocop -r [robot’s number] -a -n [numbers of readings] -i [interval (1/10 s)] | ||
| + | ./robocop -r 3 -a -n 100 -i 1 | ||
| + | </ | ||
| + | There will be 100 readings, taken in every 0.1 second, in a console | ||
| + | \\ | ||
| + | All input ADC readings | ||
| + | |||
| + | < | ||
| + | ./robocop -r [robot’s number] -a -n [numbers of readings] -i [interval (1/10 s)] -A | ||
| + | ./robocop -r 3 -a -n 100 -i 1 -A | ||
| + | </ | ||
| + | \\ | ||
| + | **Other operations**\\ | ||
| + | \\ | ||
| + | XBee configuration control | ||
| + | |||
| + | < | ||
| + | ./robocop -r [robot’s number] -c | ||
| + | ./robocop -r 3 -c | ||
| + | </ | ||
| + | \\ | ||
| + | Improving the XBee configuration | ||
| + | |||
| + | < | ||
| + | ./robocop -r [robot’s number] -F | ||
| + | ./robocop -r 3 -F | ||
| + | </ | ||
| + | \\ | ||
| + | Creating reset | ||
| + | |||
| + | < | ||
| + | ./robocop -r [robot’s number] -R | ||
| + | ./robocop -r 3 -R | ||
| + | </ | ||
| + | \\ | ||
| + | GIPO pin configuration | ||
| + | |||
| + | < | ||
| + | ./robocop -r [robot’s number] -g [pin number] -v [1|0] | ||
| + | ./robocop -r 3 -g 4 -v 1 | ||
| + | </ | ||
| + | g4 is XBee pin DIO4 and v1 means this pin is set to high\\ | ||
| + | \\ | ||
| + | **Locking**\\ | ||
| + | Using multiple RoboCop program is not a problem. User will wait in gueue until robot is free or time run’s out. | ||