Eggbot

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