Go to file
Rick Carlino b775cf55fe Updated README in response to support email.
Some users were unaware that they needed to clone the firmware repo and cd into it before running ino tool. This is a clarification.
2015-08-28 10:14:40 -05: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
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)