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