mirror of
https://github.com/OSURoboticsClub/Rover_2017_2018.git
synced 2025-11-08 10:11:14 +00:00
Added mining testing firmware
This commit is contained in:
@@ -28,44 +28,26 @@ DEFAULT_PAN_TILT_CONTROL_TOPIC = "chassis/pan_tilt/control"
|
|||||||
|
|
||||||
PAN_TILT_NODE_ID = 1
|
PAN_TILT_NODE_ID = 1
|
||||||
|
|
||||||
COMMUNICATIONS_TIMEOUT = 0.01 # Seconds
|
COMMUNICATIONS_TIMEOUT = 0.15
|
||||||
|
# Seconds
|
||||||
|
|
||||||
RX_DELAY = 0.01
|
RX_DELAY = 0.01
|
||||||
TX_DELAY = 0.01
|
TX_DELAY = 0.01
|
||||||
|
|
||||||
DEFAULT_HERTZ = 20
|
DEFAULT_HERTZ = 20
|
||||||
|
|
||||||
PAN_TILT_MODBUS_REGISTERS = {
|
MINING_MODBUS_REGISTERS = {
|
||||||
"CENTER_ALL": 0,
|
"LIFT_SET": 0,
|
||||||
|
"TILT_SET": 1,
|
||||||
|
"TARE": 2,
|
||||||
|
"CAL_FACTOR": 3,
|
||||||
|
|
||||||
"PAN_ADJUST_POSITIVE": 1,
|
"LIFT_POSITION": 4,
|
||||||
"PAN_ADJUST_NEGATIVE": 2,
|
"TILT_POSITION": 5,
|
||||||
"TILT_ADJUST_POSITIVE": 3,
|
"MEASURED_WEIGHT": 6
|
||||||
"TILT_ADJUST_NEGATIVE": 4
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PAN_TILT_CONTROL_DEFAULT_MESSAGE = [
|
POSITIONAL_THRESHOLD = 20
|
||||||
0, # No centering
|
|
||||||
0, # No pan positive adjustment
|
|
||||||
0, # No pan negative adjustment
|
|
||||||
0, # No tilt positive adjustment
|
|
||||||
0 # No tilt negative adjustement
|
|
||||||
]
|
|
||||||
|
|
||||||
self.mining_node.serial = serial.rs485.RS485(self.port, baudrate=self.baud, timeout=COMMUNICATIONS_TIMEOUT)
|
|
||||||
self.mining_node.serial.rs485_mode = serial.rs485.RS485Settings(rts_level_for_rx=1, rts_level_for_tx=0,
|
|
||||||
delay_before_rx=RX_DELAY,
|
|
||||||
delay_before_tx=TX_DELAY)
|
|
||||||
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
print(self.mining_node.read_registers(0, 7))
|
|
||||||
|
|
||||||
|
|
||||||
def connect_to_pan_tilt_and_tower(self):
|
|
||||||
self.mining_node = minimalmodbus.Instrument(self.port, int(2))
|
|
||||||
self.__setup_minimalmodbus_for_485()
|
|
||||||
|
|
||||||
|
|
||||||
NODE_LAST_SEEN_TIMEOUT = 2 # seconds
|
NODE_LAST_SEEN_TIMEOUT = 2 # seconds
|
||||||
|
|
||||||
@@ -75,7 +57,7 @@ NODE_LAST_SEEN_TIMEOUT = 2 # seconds
|
|||||||
#####################################
|
#####################################
|
||||||
class MiningControl(object):
|
class MiningControl(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.port = "COM22"
|
self.port = "/dev/ttyUSB0"
|
||||||
self.baud = 115200
|
self.baud = 115200
|
||||||
|
|
||||||
self.mining_node = None
|
self.mining_node = None
|
||||||
@@ -88,8 +70,61 @@ class MiningControl(object):
|
|||||||
|
|
||||||
self.modbus_nodes_seen_time = time()
|
self.modbus_nodes_seen_time = time()
|
||||||
|
|
||||||
|
self.mining_registers = [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
|
||||||
self.run()
|
self.run()
|
||||||
|
|
||||||
def __setup_minimalmodbus_for_485(self):
|
def __setup_minimalmodbus_for_485(self):
|
||||||
|
self.mining_node.serial = serial.rs485.RS485(self.port, baudrate=self.baud, timeout=COMMUNICATIONS_TIMEOUT)
|
||||||
|
self.mining_node.serial.rs485_mode = serial.rs485.RS485Settings(rts_level_for_rx=1, rts_level_for_tx=0,
|
||||||
|
delay_before_rx=RX_DELAY,
|
||||||
|
delay_before_tx=TX_DELAY)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.initialize_mining_system()
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
print self.mining_node.read_registers(0, 7)
|
||||||
|
# self.mining_registers[MINING_MODBUS_REGISTERS["CAL_FACTOR"]] = int(input("Enter new cal value:"))
|
||||||
|
# self.mining_node.write_registers(0, self.mining_registers)
|
||||||
|
|
||||||
|
except Exception, e:
|
||||||
|
print e
|
||||||
|
|
||||||
|
def connect_to_pan_tilt_and_tower(self):
|
||||||
|
self.mining_node = minimalmodbus.Instrument(self.port, int(2))
|
||||||
|
self.__setup_minimalmodbus_for_485()
|
||||||
|
|
||||||
|
def initialize_mining_system(self):
|
||||||
|
self.mining_registers[MINING_MODBUS_REGISTERS["LIFT_SET"]] = 1023
|
||||||
|
self.mining_registers[MINING_MODBUS_REGISTERS["TILT_SET"]] = 350
|
||||||
|
self.mining_registers[MINING_MODBUS_REGISTERS["CAL_FACTOR"]] = 114
|
||||||
|
|
||||||
|
lift_current = 0
|
||||||
|
tilt_current = 0
|
||||||
|
|
||||||
|
while abs(self.mining_registers[MINING_MODBUS_REGISTERS["LIFT_POSITION"]] - self.mining_registers[MINING_MODBUS_REGISTERS["LIFT_SET"]]) > POSITIONAL_THRESHOLD or abs(self.mining_registers[MINING_MODBUS_REGISTERS["TILT_POSITION"]] - self.mining_registers[MINING_MODBUS_REGISTERS["TILT_SET"]]) > POSITIONAL_THRESHOLD:
|
||||||
|
try:
|
||||||
|
self.mining_node.write_registers(0, self.mining_registers)
|
||||||
|
self.mining_registers = self.mining_node.read_registers(0, 7)
|
||||||
|
except Exception, e:
|
||||||
|
print "Had trouble communicating:", e
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.mining_registers[MINING_MODBUS_REGISTERS["TARE"]] = 1
|
||||||
|
self.mining_node.write_registers(0, self.mining_registers)
|
||||||
|
self.mining_registers[MINING_MODBUS_REGISTERS["TARE"]] = 0
|
||||||
|
except:
|
||||||
|
print "Had trouble communicating: no tare: ", e
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
MiningControl()
|
MiningControl()
|
||||||
|
|||||||
Reference in New Issue
Block a user