Go to file
Rory Aronson 8689c99d51 Add CLA 2015-09-18 22:57:18 -07:00
lib moving source for command line tool compatibility 2014-05-22 20:22:40 -01:00
src Merge pull request #29 from TimEvWw/master 2015-08-13 23:15:05 +02:00
.gitignore ignoring build directory 2014-07-13 20:13:28 -01:00
CONTRIBUTING.md Add CLA 2015-09-18 22:57:18 -07:00
LICENSE Initial commit 2014-05-04 14:52:02 -07:00
README.md Updated README in response to support email. 2015-08-28 10:14:40 -05:00
ino.ini moving source for command line tool compatibility 2014-05-22 20:22:40 -01:00

README.md

farmbot-arduino-controller

This software is responsible for receiving G-Codes from the Raspberry Pi, execute them and report back the results.

Technicals

Created with eclipseArduino V2 - For more details see http://www.baeyens.it/eclipse/

Command line flash tool installation

sudo apt-get install gcc-avr avr-libc avrdude python-configobj python-jinja2 python-serial
mkdir tmp
cd tmp
git clone https://github.com/miracle2k/python-glob2
cd python-glob2
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo python setup.py install
git clone git://github.com/amperka/ino.git
cd ino
sudo make install

Command line flash tool use

To flash the firmware onto the device, run this:

git clone https://github.com/FarmBot/farmbot-arduino-firmware.git
cd farmbot-arduino-firmware
ino build
ino upload

Software overview

All files are in /src

Farmbot_arduino_controller contains the setup() and main(). This the main sequence:

     +--------------------------+
     |farmbot_arduino_controller|
     +-----------+--------------+
                 v
     +--------------------------+
     |Command                   |
     +-----------+--------------+
                 v
     +--------------------------+
     |GCodeProcessor            |
     +-----------+--------------+
                 v
     +--------------------------+
     |***Handler                |
     +-------+-----------+------+
             |           |
             |           +---+
             v               v
     +--------------+   +-----------+
     |StepperControl|   | PinControl|
     +--------------+   +-----------+

Codes used for communication

G-Codes

Code type Number Parameters Function
Codes send to the arduino
G G-Code, the codes working the same as a 3D printer
G 00 X Y Z S Move to location at given speed for axis (don't have to be a straight line), in absolute coordinates
G 01 X Y Z S Move to location on a straight line
G 28 Move home all axis
F Farm commands, commands specially added for the farmbot
F 01 T Dose amount of water using time in millisecond
F 02 N Dose amount of water using flow meter that measures pulses
F 11 Home X axis
F 12 Home Y axis
F 13 Home Z axis
F 14 Calibrate X axis
F 15 Calibrate Y axis
F 16 Calibrate Z axis
F 21 P Read parameter
F 22 P V Write parameter
F 23 P V Update parameter (during calibration)
F 31 P Read status
F 32 P V Write status
F 41 P V M Set a value on an arduino pin (digital/analog)
F 42 P M Read a value from an arduino pin (digital/analog)
F 43 P M Set the mode of a pin in arduino (input/output)
F 44 P V W T M Set the value V on an arduino pin, wait for time T, set value W on the arduino pin (d/a)
F 51 E P V Set a value on the tool mount with I2C
F 52 E P Read value from the tool mount with I2C
F 61 P V Set the servo on the pin (only pin 4 and 5) to the requested angle
F 81 Report end stop
F 82 Report current position
F 83 Report software version
E Emergency stop
Codes received from the arduino
R Report messages
R 01 Current command started
R 02 Current command finished succesfully
R 03 Current command finished with error
R 04 Current command running
R 21 P V Report parameter value
R 31 P V Report status value
R 41 P V Report pin value
R 81 X1 X2 Y1 Y2 Z1 Z2 Reporting end stops - parameters: X1 (end stop x axis min) X2 (end stop x axis max) Y1 Y2 Z1 Z2
R 82 X Y Z Report current position
R 83 C Report software version
R 99 C Debug message

Parameters for commands

Parameters Description Unit of Measurement
X X movement steps
Y Y movement steps
Z Z movement steps
S Speed steps/second
Q Quanity counter ticks
T Time seconds
C Comment text
P Parameter/pin number #
V Value number #
W Secondary value #
L Number #
E Element (in tool mount) #
M Mode (set pin mode) 0 = output / 1 = input
M Mode (read/write) 0 = digital / 1 = analog
XA End stop 1 on x axis 0/1
XB End stop 2 on x axis 0/1
YA End stop 1 on y axis 0/1
YB End stop 2 on y axis 0/1
ZA End stop 1 on z axis 0/1
ZB End stop 2 on z axis 0/1

Arduino paramter numbers

Parameter name Parameter id
PARAM_VERSION 0
MOVEMENT_TIMEOUT_X 11
MOVEMENT_TIMEOUT_Y 12
MOVEMENT_TIMEOUT_Z 13
MOVEMENT_INVERT_ENDPOINTS_X 21
MOVEMENT_INVERT_ENDPOINTS_Y 22
MOVEMENT_INVERT_ENDPOINTS_Z 23
MOVEMENT_INVERT_MOTOR_X 31
MOVEMENT_INVERT_MOTOR_Y 32
MOVEMENT_INVERT_MOTOR_Z 33
MOVEMENT_STEPS_ACC_DEC_X 41
MOVEMENT_STEPS_ACC_DEC_Y 42
MOVEMENT_STEPS_ACC_DEC_Z 43
MOVEMENT_HOME_UP_X 51
MOVEMENT_HOME_UP_Y 52
MOVEMENT_HOME_UP_Z 53
MOVEMENT_MIN_SPD_X 61
MOVEMENT_MIN_SPD_Y 62
MOVEMENT_MIN_SPD_Z 63
MOVEMENT_MAX_SPD_X 71
MOVEMENT_MAX_SPD_Y 72
MOVEMENT_MAX_SPD_Z 73
MOVEMENT_STEPS_PER_UNIT_X 901 (not in arduino)
MOVEMENT_STEPS_PER_UNIT_Y 902 (not in arduino)
MOVEMENT_STEPS_PER_UNIT_Z 903 (not in arduino)