El firmware que m’ha funcionat amb el CNC Shield d’Arduino és aquest:
https://github.com/Thingibox/EggBot/tree/master/Firmware
En aquest el servo ha d’anar al pin SpnEn
El motor que mou l’ou va al X i el motor que mou el rotulador al Y
Normalment si fas un Eggbot amb la versió free anomenada Eggduino, les extensions de Inkscape no reconeixen la placa. Cal fer això:
Editem el fitxer ebb_serial.py que trobarem al directori de les extensions de Inkscape extensions/axidraw_deps/plotink i busquem aquestes línies
ebb_port = None
for port in com_ports_list:
if port[1].startswith("EiBotBoard"):
ebb_port = port[0] # Success; EBB found by name match.
break # stop searching-- we are done.
if ebb_port is None:
for port in com_ports_list:
if port[2].startswith("USB VID:PID=04D8:FD92"):
ebb_port = port[0] # Success; EBB found by VID/PID match.
break # stop searching-- we are done.
return ebb_port
i fem aquests canvis:
ebb_port = "/dev/cu.usbserial-1420"
# for port in com_ports_list:
# if port[1].startswith("EiBotBoard"):
# ebb_port = port[0] # Success; EBB found by name match.
# break # stop searching-- we are done.
#if ebb_port is None:
# for port in com_ports_list:
# if port[2].startswith("USB VID:PID=04D8:FD92"):
# ebb_port = port[0] # Success; EBB found by VID/PID match.
# break # stop searching-- we are done.
return ebb_port
On si és un Linux posarem /dev/ttyUSB0 en la primera línia
Quan l’extensió busca l’eggbot li envia un caràcter “v” i espera resposta de la versió de firmware instal·lada. Doncs, en algunes combinacions d’Arduino i Firmware, la primera vegada no respon i no detecta la placa. Però si dupliquem la comprovació, la segona vegada funciona i tira endavant. Caldrà tocar aquestes línies del mateix miter ebb_serial.py del cas anterior.
Hem de buscar la funció testPort i buscar aquestes línies:
serial_port.write('v\r'.encode('ascii'))
str_version = serial_port.readline()
if str_version and str_version.startswith("EBB".encode('ascii')):
return serial_port
Només hem de duplicar les 2 primeres:
serial_port.write('v\r'.encode('ascii'))
str_version = serial_port.readline()
serial_port.write('v\r'.encode('ascii'))
str_version = serial_port.readline()
if str_version and str_version.startswith("EBB".encode('ascii')):
return serial_port
Amb això sembla que funciona en tots els casos. Weid, but true