Home › Forums › DIY Sand Table › Hello! Trying to get up and running!
Tagged: Newb, Troubleshooting
- This topic has 0 replies, 1 voice, and was last updated 8 months, 2 weeks ago by moondogg.
-
AuthorPosts
-
January 29, 2025 at 2:18 am #1111moondoggParticipant
Hello! I am attempting to build a sand art table like yours, and I’ve gotten as far as building a PCB using a Sparkfun ESP32 Thing Plus (USB C) as my microcontroller. Using simple arduino sketches I was able to confirm functionality of the stepper motor drivers and stepper motors. I then went on to try and follow your tutorial to get the code on the bot, which, worked for me once I changed the PlatformIO.ini to properly address the board I’m using, as well as having to change the name of random() in tinyexpr.h.
So far I’ve been able to upload Rob’s code and navigate to the cnc.html file on the webserver it is hosting on my wifi. As I’m building your version of the bot, I simply modified your config with the pins that I’m using. However, when I try to configure it with the SandTableScaraMatt config, sand.html doesn’t properly load in my browser. If I change it to say, SandTableScaraPiHat2, sand.html loads just fine. There seems to be some problem in my ability to configure the robot through the HTML server.
Any ideas as to how to resolve this?
Here’s the serial monitor when I (seemingly successfully) use the PiHat2 config and save:
I: RestAPIRobot: RobotConfiguration
I: RobotConfigurations: Requesting SandTableScaraPiHat2, there are 8 default types
T: RobotConfigurations: Config for SandTableScaraPiHat2 found
T: RobotConfigurations: config str { “robotType”: “SandTableScaraPiHat2”, “cmdsAtStart”: “”, “webui”:”sand”, “evaluators”: { “thrContinue”: 0 } , “robotGeom”: { “model”: “SingleArmScara”, “homing”: { “homingSeq”: “A-10000n;B10000;#;A+10000N;B-10000;#;A+500;B-500;#;B+10000n;#;B-10000N;#;B-1050;#;A=h;B=h;$”, “maxHomingSecs”: 120 } , “blockDistanceMM”: 1, “allowOutOfBounds”: 0, “stepEnablePin”: “4”, “stepEnLev”: 1, “stepDisableSecs”: 10, “axis0”: { “maxSpeed”: 75, “maxAcc”: 150, “maxRPM”: 30, “stepsPerRot”: 9600, “maxVal”: 92.5, “stepPin”: “14”, “dirnPin”: “13”, “endStop0”: { “sensePin”: I: RestAPIRobot: PostSettingsBody len 1040
T: WorkManager: setRobotConfig len 1040
I: Constructing SingleArmScara
I: MotionHelper: configMotionPipeline len 100, blockDistMM 1.00 (0=no-max), allowOoB N, jnDev 0.05
I: Axis0 params maxSpeed 75.00, acceleration 150.00, stepsPerRot 9600.00, unitsPerRot 1.00, maxRPM 30.00
I: Axis0 params minVal 0.00 (0), maxVal 92.50 (1), isDominant 0, isServo 0, homeOffVal 0.00, homeOffSteps 0
I: RampGenIO: Axis0 (step pin 14, dirn pin 13)
I: Axis0EndStop0 (sense 36, level 0, type 5)
I: TrinamicsController: Axis0 reversed N chipDriverIdx 0
T: TrinamicsController: TMC5072 Init axisIdx 0 CHOPCONF 10135 IHOLDRUN 71805 iHoldPower 5 iRunPower 24 iHoldDelay 7
T: TrinamicsController: TMC5072 Init axisIdx 1 CHOPCONF 10135 IHOLDRUN 71805 iHoldPower 5 iRunPower 24 iHoldDelay 7
T: TrinamicsController: TMC5072 Init axisIdx 2 CHOPCONF 10135 IHOLDRUN 71805 iHoldPower 5 iRunPower 24 iHoldDelay 7
T: TrinamicsController: TMC5072 Chip0Init retVal 0,0 GCONF 0
T: TrinamicsController: TMC5072 Chip1Init retVal 0,0 GCONF 0
I: Axis1 params maxSpeed 75.00, acceleration 150.00, stepsPerRot 9600.00, unitsPerRot 1.00, maxRPM 30.00
I: Axis1 params minVal 0.00 (0), maxVal 92.50 (1), isDominant 0, isServo 0, homeOffVal 0.00, homeOffSteps 0
I: RampGenIO: Axis1 (step pin 15, dirn pin 21)
I: Axis1EndStop0 (sense 39, level 0, type 5)
I: TrinamicsController: Axis1 reversed N chipDriverIdx 1
T: TrinamicsController: TMC5072 Init axisIdx 0 CHOPCONF 10135 IHOLDRUN 71805 iHoldPower 5 iRunPower 24 iHoldDelay 7
T: TrinamicsController: TMC5072 Init axisIdx 1 CHOPCONF 10135 IHOLDRUN 71805 iHoldPower 5 iRunPower 24 iHoldDelay 7
T: TrinamicsController: TMC5072 Init axisIdx 2 CHOPCONF 10135 IHOLDRUN 71805 iHoldPower 5 iRunPower 24 iHoldDelay 7
T: TrinamicsController: TMC5072 Chip0Init retVal 0,0 GCONF 0
T: TrinamicsController: TMC5072 Chip1Init retVal 0,0 GCONF 0
I: MotionHoming: config sequence A-10000n;B10000;#;A+10000N;B-10000;#;A+500;B-500;#;B+10000n;#;B-10000N;#;B-1050;#;A=h;B=h;$
T: TrinamicsController: configure motionController NONE chip NONE
I: MotorEnabler: (pin 4, actLvl 1, disableAfter 10.00s)
I: RampGenerator: Starting ISR timer for direct stepping
[2789111][E][esp32-hal-cpu.c:110] addApbChangeCallback(): duplicate func=0x400f386c arg=0x3ffbddc0
E (2789116) timer_group: timer_isr_callback_add(236): register interrupt service failed
T: EvaluatorSequences: setConfig defaultShuffleMode N defaultRepeatMode N
T: EvaluatorThetaRhoLine: setConfig StepAngleDegrees 0.05 StepAdaptation Y continueFromPrevious N radiusMM 185.00mm offsetX 0.00 offsetY 0.00
T: ConfigNVS: Writing robot config len: 1040
T: ConfigNVS: Write ok written = 1040
T: StatusIndicator: configChanged
T: StatusIndicator: setup name robotConfig/wifiLed configStr {“hwPin”:”14″,”onLevel”:1,”onMs”:200,”shortOffMs”:200,”longOffMs”:750}
I: StatusIndicator: robotConfig/wifiLed pin 14(14) onLevel 1 onMs 200 shortMs 200 longMs 750
T: StatusIndicator: robotConfig/wifiLedNo change
T: CommandScheduler: configChanged
I: CommandScheduler: config(s) {“jobs”:[]},
T: LedStrip: configChanged
T: LedStrip: setup name robotConfig/ledStrip configStr {“ledPin”:”32″,”sensorPin”:”33″}
I: LedStrip: LED pin 32 Sensor pin 33
T: LedStrip: LED Setup from JSON: {“ledOn”:1,”ledValue”:127,”autoDim”:0} On: 1, Value: 127, Auto Dim: 0
T: LedStrip: LED Configured: On: 1, Value: 127, AutoDim: 0
I: RestAPIRobot: PostSettings /postsettings/
T: Writing LED Value: 0x7FAnd here’s the serial monitor when I try to (seemingly unsuccessfully) use the modified Matt config and save:
I: RestAPIRobot: RobotConfiguration
I: RobotConfigurations: Requesting SandTableScaraMatt, there are 8 default types
T: RobotConfigurations: Config for SandTableScaraMatt found
T: RobotConfigurations: config str { “robotType”: “SandTableScaraMatt”, “cmdsAtStart”: “”, “webui”:”sand”, “evaluators”: { “thrContinue”: 0 } , “robotGeom”: { “model”: “SingleArmScara”, “homing”: { “homingSeq”:”FR3;A-10000N;B+10000;#;A-10000n;B+10000;#;A+460;B-460;#;B-10000N;#;B-10000n;#;B+850;#;A=h;B=h;$”, “maxHomingSecs”: 120 } , “blockDistanceMM”: 1, “allowOutOfBounds”: 0, “stepEnablePin”: “12”, “stepEnLev”: 0, “stepDisableSecs”: 10, “axis0”: { “maxSpeed”: 25, “maxAcc”: 50, “maxRPM”: 20, “stepsPerRot”: 9600, “unitsPerRot”: 628.318, “maxVal”: 190, “stepPin”: “14”, “dirnPin”: “25”, “endStop0”: { “sensePin”: “34”, “actLvl”: 0, “inputType”: “INPUT_PULLUP” } } , “axis1”: { “maxSpeed”: 25, “maxAcc”: 50, “stepsPerRot”: 9600, “unitsPerRot”: 628.318, “maxRPM”: 20, “maxVal”: 190, “stepPin”: “15”, “dirnPin”: “32”, “endStop0”: { “sensePin”: “39”, “actLvl”: 0, “inputType”: “INPUT_PULLUP” } } } , “fileManager”: { “spiffsEnabled”: 1, “spiffsFormatIfCorrupt”: 1, “sdEnabled”: 1, “sdMOSI”: “23”, “sdMISO”: “19”, “sdCLK”: “18”, “sdCS”: “5” } , “wifiLed”: { “hwPin”: “13”, “onLevel”: 1, “onMs”: 200, “shortOffMs”: 200, “longOffMs”: 750 } , “ledStrip”: { “ledPin”: “33”, “sensorPin”: “36” }}
I: 2821456 SCULLYSANDBOT V2.028.002 SSID POD IP 192.168.86.25 Heap 152656 QOK:0 Avg 209.86uS Max 128393uS Min 190uS Slowest Console 126452, Status 9272
I: RestAPIRobot: PostSettingsBody len 1048
T: WorkManager: setRobotConfig len 1048
T: RdJson: parseJson result -3 maxTokens 10000 jsonLen 1048
T: RdJson: jsonStrT: {“robotConfig”:{“robotType”:”SandTableScaraMatt”,”cmdsAtStart”:””,”webui”:”sand”T: ,”evaluators”:{“thrContinue”:0},”robotGeom”:{“model”:”SingleArmScara”,”homing”:{T: “homingSeq”:”FR3;A-10000N;B+10000;#;A-10000n;B+10000;#;A+460;B-460;#;B-10000N;#;T: B-10000n;#;B+850;#;A=h;B=h;$”,”maxHomingSecs”:120},”blockDistanceMM”:1,”allowOutT: OfBounds”:0,”stepEnablePin”:”12″,”stepEnLev”:0,”stepDisableSecs”:10,”axis0″:{“maT: xSpeed”:25,”maxAcc”:50,”maxRPM”:20,”stepsPerRot”:9600,”unitsPerRot”:628.318,”maxT: Val”:190,”stepPin”:”14″,”dirnPin”:”25″,”endStop0″:{“sensePin”:”34″,”actLvl”:0,”iT: nputType”:”INPUT_PULLUP”}},”axis1″:{“maxSpeed”:25,”maxAcc”:50,”stepsPerRot”:9600T: ,”unitsPerRot”:628.318,”maxRPM”:20,”maxVal”:190,”stepPin”:”15″,”dirnPin”:”32″,”eT: ndStop0″:{“sensePin”:”39″,”actLvl”:0,”inputType”:”INPUT_PULLUP”}}},”fileManager”T: :{“spiffsEnabled”:1,”spiffsFormatIfCorrupt”:1,”sdEnabled”:1,”sdMOSI”:”23″,”sdMIST: O”:”19″,”sdCLK”:”18″,”sdCS”:”5″},”wifiLed”:{“hwPin”:”13″,”onLevel”:1,”onMs”:200,T: “shortOffMs”:200,”longOffMs”:750},”ledStrip”:{“ledPin”:”33″,”sensorPin”:”36″}},”T: cmdSchedI: WorkManager: No robotConfig found – defaulting
T: RdJson: parseJson result -3 maxTokens 10000 jsonLen 1048
T: RdJson: jsonStrT: {“robotConfig”:{“robotType”:”SandTableScaraMatt”,”cmdsAtStart”:””,”webui”:”sand”T: ,”evaluators”:{“thrContinue”:0},”robotGeom”:{“model”:”SingleArmScara”,”homing”:{T: “homingSeq”:”FR3;A-10000N;B+10000;#;A-10000n;B+10000;#;A+460;B-460;#;B-10000N;#;T: B-10000n;#;B+850;#;A=h;B=h;$”,”maxHomingSecs”:120},”blockDistanceMM”:1,”allowOutT: OfBounds”:0,”stepEnablePin”:”12″,”stepEnLev”:0,”stepDisableSecs”:10,”axis0″:{“maT: xSpeed”:25,”maxAcc”:50,”maxRPM”:20,”stepsPerRot”:9600,”unitsPerRot”:628.318,”maxT: Val”:190,”stepPin”:”14″,”dirnPin”:”25″,”endStop0″:{“sensePin”:”34″,”actLvl”:0,”iT: nputType”:”INPUT_PULLUP”}},”axis1″:{“maxSpeed”:25,”maxAcc”:50,”stepsPerRot”:9600T: ,”unitsPerRot”:628.318,”maxRPM”:20,”maxVal”:190,”stepPin”:”15″,”dirnPin”:”32″,”eT: ndStop0″:{“sensePin”:”39″,”actLvl”:0,”inputType”:”INPUT_PULLUP”}}},”fileManager”T: :{“spiffsEnabled”:1,”spiffsFormatIfCorrupt”:1,”sdEnabled”:1,”sdMOSI”:”23″,”sdMIST: O”:”19″,”sdCLK”:”18″,”sdCS”:”5″},”wifiLed”:{“hwPin”:”13″,”onLevel”:1,”onMs”:200,T: “shortOffMs”:200,”longOffMs”:750},”ledStrip”:{“ledPin”:”33″,”sensorPin”:”36″}},”T: cmdSchedI: RobotConfigurations: Requesting SandTableScara, there are 8 default types
T: RobotConfigurations: Config for SandTableScara not found
I: Cannot determine robotModel
T: EvaluatorSequences: setConfig defaultShuffleMode N defaultRepeatMode N
T: EvaluatorThetaRhoLine: setConfig StepAngleDegrees 0.05 StepAdaptation Y continueFromPrevious Y radiusMM 0.00mm offsetX 0.00 offsetY 0.00
T: ConfigNVS: Writing robot config len: 1048
T: ConfigNVS: Write ok written = 1048
T: StatusIndicator: configChanged
T: RdJson: parseJson result -3 maxTokens 10000 jsonLen 1048
T: RdJson: jsonStrT: {“robotConfig”:{“robotType”:”SandTableScaraMatt”,”cmdsAtStart”:””,”webui”:”sand”T: ,”evaluators”:{“thrContinue”:0},”robotGeom”:{“model”:”SingleArmScara”,”homing”:{T: “homingSeq”:”FR3;A-10000N;B+10000;#;A-10000n;B+10000;#;A+460;B-460;#;B-10000N;#;T: B-10000n;#;B+850;#;A=h;B=h;$”,”maxHomingSecs”:120},”blockDistanceMM”:1,”allowOutT: OfBounds”:0,”stepEnablePin”:”12″,”stepEnLev”:0,”stepDisableSecs”:10,”axis0″:{“maT: xSpeed”:25,”maxAcc”:50,”maxRPM”:20,”stepsPerRot”:9600,”unitsPerRot”:628.318,”maxT: Val”:190,”stepPin”:”14″,”dirnPin”:”25″,”endStop0″:{“sensePin”:”34″,”actLvl”:0,”iT: nputType”:”INPUT_PULLUP”}},”axis1″:{“maxSpeed”:25,”maxAcc”:50,”stepsPerRot”:9600T: ,”unitsPerRot”:628.318,”maxRPM”:20,”maxVal”:190,”stepPin”:”15″,”dirnPin”:”32″,”eT: ndStop0″:{“sensePin”:”39″,”actLvl”:0,”inputType”:”INPUT_PULLUP”}}},”fileManager”T: :{“spiffsEnabled”:1,”spiffsFormatIfCorrupt”:1,”sdEnabled”:1,”sdMOSI”:”23″,”sdMIST: O”:”19″,”sdCLK”:”18″,”sdCS”:”5″},”wifiLed”:{“hwPin”:”13″,”onLevel”:1,”onMs”:200,T: “shortOffMs”:200,”longOffMs”:750},”ledStrip”:{“ledPin”:”33″,”sensorPin”:”36″}},”T: cmdSchedT: StatusIndicator: setup name robotConfig/wifiLed configStr {}
I: StatusIndicator: robotConfig/wifiLed pin -1() onLevel 1 onMs 500 shortMs 500 longMs 1000
T: CommandScheduler: configChanged
T: RdJson: parseJson result -3 maxTokens 10000 jsonLen 1048
T: RdJson: jsonStrT: {“robotConfig”:{“robotType”:”SandTableScaraMatt”,”cmdsAtStart”:””,”webui”:”sand”T: ,”evaluators”:{“thrContinue”:0},”robotGeom”:{“model”:”SingleArmScara”,”homing”:{T: “homingSeq”:”FR3;A-10000N;B+10000;#;A-10000n;B+10000;#;A+460;B-460;#;B-10000N;#;T: B-10000n;#;B+850;#;A=h;B=h;$”,”maxHomingSecs”:120},”blockDistanceMM”:1,”allowOutT: OfBounds”:0,”stepEnablePin”:”12″,”stepEnLev”:0,”stepDisableSecs”:10,”axis0″:{“maT: xSpeed”:25,”maxAcc”:50,”maxRPM”:20,”stepsPerRot”:9600,”unitsPerRot”:628.318,”maxT: Val”:190,”stepPin”:”14″,”dirnPin”:”25″,”endStop0″:{“sensePin”:”34″,”actLvl”:0,”iT: nputType”:”INPUT_PULLUP”}},”axis1″:{“maxSpeed”:25,”maxAcc”:50,”stepsPerRot”:9600T: ,”unitsPerRot”:628.318,”maxRPM”:20,”maxVal”:190,”stepPin”:”15″,”dirnPin”:”32″,”eT: ndStop0″:{“sensePin”:”39″,”actLvl”:0,”inputType”:”INPUT_PULLUP”}}},”fileManager”T: :{“spiffsEnabled”:1,”spiffsFormatIfCorrupt”:1,”sdEnabled”:1,”sdMOSI”:”23″,”sdMIST: O”:”19″,”sdCLK”:”18″,”sdCS”:”5″},”wifiLed”:{“hwPin”:”13″,”onLevel”:1,”onMs”:200,T: “shortOffMs”:200,”longOffMs”:750},”ledStrip”:{“ledPin”:”33″,”sensorPin”:”36″}},”T: cmdSchedI: CommandScheduler: config(s) {},
T: LedStrip: configChanged
T: RdJson: parseJson result -3 maxTokens 10000 jsonLen 1048
T: RdJson: jsonStrT: {“robotConfig”:{“robotType”:”SandTableScaraMatt”,”cmdsAtStart”:””,”webui”:”sand”T: ,”evaluators”:{“thrContinue”:0},”robotGeom”:{“model”:”SingleArmScara”,”homing”:{T: “homingSeq”:”FR3;A-10000N;B+10000;#;A-10000n;B+10000;#;A+460;B-460;#;B-10000N;#;T: B-10000n;#;B+850;#;A=h;B=h;$”,”maxHomingSecs”:120},”blockDistanceMM”:1,”allowOutT: OfBounds”:0,”stepEnablePin”:”12″,”stepEnLev”:0,”stepDisableSecs”:10,”axis0″:{“maT: xSpeed”:25,”maxAcc”:50,”maxRPM”:20,”stepsPerRot”:9600,”unitsPerRot”:628.318,”maxT: Val”:190,”stepPin”:”14″,”dirnPin”:”25″,”endStop0″:{“sensePin”:”34″,”actLvl”:0,”iT: nputType”:”INPUT_PULLUP”}},”axis1″:{“maxSpeed”:25,”maxAcc”:50,”stepsPerRot”:9600T: ,”unitsPerRot”:628.318,”maxRPM”:20,”maxVal”:190,”stepPin”:”15″,”dirnPin”:”32″,”eT: ndStop0″:{“sensePin”:”39″,”actLvl”:0,”inputType”:”INPUT_PULLUP”}}},”fileManager”T: :{“spiffsEnabled”:1,”spiffsFormatIfCorrupt”:1,”sdEnabled”:1,”sdMOSI”:”23″,”sdMIST: O”:”19″,”sdCLK”:”18″,”sdCS”:”5″},”wifiLed”:{“hwPin”:”13″,”onLevel”:1,”onMs”:200,T: “shortOffMs”:200,”longOffMs”:750},”ledStrip”:{“ledPin”:”33″,”sensorPin”:”36″}},”T: cmdSchedT: LedStrip: setup name robotConfig/ledStrip configStr {}
I: LedStrip: LED pin -1 Sensor pin -1
I: RestAPIRobot: PostSettingsBody len 35
T: WorkManager: setRobotConfig len 35
I: JSMNR_ERROR_INVAL unmatchedbrace pos 12 ch 125 toknext 3 type 1
I: JSMN: parse inputI: “:{“jobs”:[]},”name”:”MoondoggBot”}I: parseJson result: -2
T: jsonStr “:{“jobs”:[]},”name”:”MoondoggBot”} numTok 0 maxTok 10000
I: WorkManager: No robotConfig found – defaulting
I: JSMNR_ERROR_INVAL unmatchedbrace pos 12 ch 125 toknext 3 type 1
I: JSMN: parse inputI: “:{“jobs”:[]},”name”:”MoondoggBot”}I: parseJson result: -2
T: jsonStr “:{“jobs”:[]},”name”:”MoondoggBot”} numTok 0 maxTok 10000
I: RobotConfigurations: Requesting SandTableScara, there are 8 default types
T: RobotConfigurations: Config for SandTableScara not found
I: Cannot determine robotModel
T: EvaluatorSequences: setConfig defaultShuffleMode N defaultRepeatMode N
T: EvaluatorThetaRhoLine: setConfig StepAngleDegrees 0.05 StepAdaptation Y continueFromPrevious Y radiusMM 0.00mm offsetX 0.00 offsetY 0.00
T: ConfigNVS: Writing robot config len: 35
T: ConfigNVS: Write ok written = 35
T: StatusIndicator: configChanged
I: JSMNR_ERROR_INVAL unmatchedbrace pos 12 ch 125 toknext 3 type 1
I: JSMN: parse inputI: “:{“jobs”:[]},”name”:”MoondoggBot”}I: parseJson result: -2
T: jsonStr “:{“jobs”:[]},”name”:”MoondoggBot”} numTok 0 maxTok 10000
T: StatusIndicator: setup name robotConfig/wifiLed configStr {}
I: StatusIndicator: robotConfig/wifiLed pin -1() onLevel 1 onMs 500 shortMs 500 longMs 1000
T: CommandScheduler: configChanged
I: JSMNR_ERROR_INVAL unmatchedbrace pos 12 ch 125 toknext 3 type 1
I: JSMN: parse inputI: “:{“jobs”:[]},”name”:”MoondoggBot”}I: parseJson result: -2
T: jsonStr “:{“jobs”:[]},”name”:”MoondoggBot”} numTok 0 maxTok 10000
I: CommandScheduler: config(s) {},
T: LedStrip: configChanged
I: JSMNR_ERROR_INVAL unmatchedbrace pos 12 ch 125 toknext 3 type 1
I: JSMN: parse inputI: “:{“jobs”:[]},”name”:”MoondoggBot”}I: parseJson result: -2
T: jsonStr “:{“jobs”:[]},”name”:”MoondoggBot”} numTok 0 maxTok 10000
T: LedStrip: setup name robotConfig/ledStrip configStr {}
I: LedStrip: LED pin -1 Sensor pin -1
I: RestAPIRobot: PostSettings /postsettings/ -
AuthorPosts
- You must be logged in to reply to this topic.