Repository files navigation

WebTurtle

An ESP8266 version of the Arduino Drawing Robot (http://www.instructables.com/id/Arduino-Drawing-Robot/) allowing control via WiFi and storage of logo procedures in its own (SPIFFS) file system.

Hardware used:

Software used:

  • Arduino development environment for ESP8266

Work Flow

  1. Install the development environment (see https://github.com/esp8266/Arduino). I used version 1.6.11 in this project.

    a. set the development board to NodeMCU 1.0 (Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)

    b. Upload the contents of the data directory to the module (see https://github.com/esp8266/Arduino/blob/master/doc/filesystem.rst#uploading-files-to-file-system)

  2. Load webturtle4.ino into the development environment and change the file accordingly. The robot acts as its own wireless access point with the following parameters:

    a. ssid (currently set to "Turtle")

    b. password (currently set to "LogoTurtle")

    c. host (currently set to "turtle")

  3. Program the NodeMCU module.

    a. Connect the NodeMCU to the development computer via the micro usb connector

    b. Hold down the flash button on the NodeMCU while pushing its rest button to put it into programming mode

    c. Upload the program to the module.

  4. Build the chassis according to the instructable (Steps 1, 3-13)

    a. In step 7, this version uses the breadboard to mount the NodeMCU according to board_layout.jpg, so all other parts are shifted to accommodate it.

    b. In steps 8-12, the wiring is changed according to schematic.pdf

  5. Turn on the robot. Then, with your computer, look for a WiFi access point with the ssid you assigned to your robot (e.g. Turtle). Connect to that ssid with the password you assigned (e.g. LogoTurtle).

  6. In your computer's web browser, go to page http://turtle/ (or the host name you assigned the robot). If your browser fails to recognize the host name, go to http://192.168.4.1/ where you should see a text box and a Submit button.

  7. In steps 14 and 15 of the instructable, you would have flashed firmware that drew a series of squares to aid you in calibration. You can draw the same four calibration boxes at this point by entering the following logo commands and then clicking the Submit button:

    pd rpt 16 [fd 100 lt 90] pu

    The commands do the following:

    • pd - Move the pen down
    • rpt 16 - Repeat the commands enclosed in brackets 16 times
    • fd 100 - Move forward 100 mm
    • lt 90 - Turn left 90 degrees
    • pu - Move the pen up
  8. Step 16 of the instructable calibrates the raising and lowering of the pen. As you saw previously, you can enter pu for pen up and pd for pen down to control the servo.

Command Set

The robot implements a very restricted set of logo commands. They are:

  • fd - value - Move forward value mm, where value can be integer or decimal
  • bk - value - Move backward value mm, where value can be integer or decimal
  • rt - value - Turn right value degrees, where value can be integer or decimal
  • lt - value - Turn left value degrees, where value can be integer or decimal
  • pu - Move the pen up
  • pd - Move the pen down
  • rpt - value [cmd1 cmd2..] - Repeat the bracketed commands value times, where value is an integer (e.g. rpt 16 [fd 100 rt 90])
  • to function_name :variable_name1 :variable_name2.. cmd1 cmd2.. end - Define a function (e.g to square :side rpt 4 [fd :side rt 90] end) (The function is called like this: square 100)
  • file file_name - Read input from file file_name in the robot's file system

Using the robot's file system

There is a 500 character limit on the commands that can be entered into the text box. That may seem like a lot, but it's not. The ability to upload, list, and delete files is provided by going to http://host/edit (or http://192.168.4.1/edit). Once you've uploaded a file, you can have the robot read from it by including the file command. For example, typing

pd fd 50.5 file myinput pu

into the text box and clicking Submit will move the pen down, move forward 50.5 mm, and then read all the commands in the file. Lastly, the pen is moved up

Webturtle uses the file system even when you don't upload files. For example, if you had typed

to circle rpt 24 [fd 20 rt 15] end pd circle pu

into the text box and clicked Submit, you would see a file called circle in directory p. Every function you define will be stored in the p directory (in a tokenized form) until you delete it.

About

ESP8266 version of the Arduino Drawing Robot

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

WebTurtle

An ESP8266 version of the Arduino Drawing Robot (http://www.instructables.com/id/Arduino-Drawing-Robot/) allowing control via WiFi and storage of logo procedures in its own (SPIFFS) file system.

Hardware used:

Software used:

  • Arduino development environment for ESP8266

Work Flow

  1. Install the development environment (see https://github.com/esp8266/Arduino). I used version 1.6.11 in this project.

    a. set the development board to NodeMCU 1.0 (Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)

    b. Upload the contents of the data directory to the module (see https://github.com/esp8266/Arduino/blob/master/doc/filesystem.rst#uploading-files-to-file-system)

  2. Load webturtle4.ino into the development environment and change the file accordingly. The robot acts as its own wireless access point with the following parameters:

    a. ssid (currently set to "Turtle")

    b. password (currently set to "LogoTurtle")

    c. host (currently set to "turtle")

  3. Program the NodeMCU module.

    a. Connect the NodeMCU to the development computer via the micro usb connector

    b. Hold down the flash button on the NodeMCU while pushing its rest button to put it into programming mode

    c. Upload the program to the module.

  4. Build the chassis according to the instructable (Steps 1, 3-13)

    a. In step 7, this version uses the breadboard to mount the NodeMCU according to board_layout.jpg, so all other parts are shifted to accommodate it.

    b. In steps 8-12, the wiring is changed according to schematic.pdf

  5. Turn on the robot. Then, with your computer, look for a WiFi access point with the ssid you assigned to your robot (e.g. Turtle). Connect to that ssid with the password you assigned (e.g. LogoTurtle).

  6. In your computer's web browser, go to page http://turtle/ (or the host name you assigned the robot). If your browser fails to recognize the host name, go to http://192.168.4.1/ where you should see a text box and a Submit button.

  7. In steps 14 and 15 of the instructable, you would have flashed firmware that drew a series of squares to aid you in calibration. You can draw the same four calibration boxes at this point by entering the following logo commands and then clicking the Submit button:

    pd rpt 16 [fd 100 lt 90] pu

    The commands do the following:

    • pd - Move the pen down
    • rpt 16 - Repeat the commands enclosed in brackets 16 times
    • fd 100 - Move forward 100 mm
    • lt 90 - Turn left 90 degrees
    • pu - Move the pen up
  8. Step 16 of the instructable calibrates the raising and lowering of the pen. As you saw previously, you can enter pu for pen up and pd for pen down to control the servo.

Command Set

The robot implements a very restricted set of logo commands. They are:

  • fd - value - Move forward value mm, where value can be integer or decimal
  • bk - value - Move backward value mm, where value can be integer or decimal
  • rt - value - Turn right value degrees, where value can be integer or decimal
  • lt - value - Turn left value degrees, where value can be integer or decimal
  • pu - Move the pen up
  • pd - Move the pen down
  • rpt - value [cmd1 cmd2..] - Repeat the bracketed commands value times, where value is an integer (e.g. rpt 16 [fd 100 rt 90])
  • to function_name :variable_name1 :variable_name2.. cmd1 cmd2.. end - Define a function (e.g to square :side rpt 4 [fd :side rt 90] end) (The function is called like this: square 100)
  • file file_name - Read input from file file_name in the robot's file system

Using the robot's file system

There is a 500 character limit on the commands that can be entered into the text box. That may seem like a lot, but it's not. The ability to upload, list, and delete files is provided by going to http://host/edit (or http://192.168.4.1/edit). Once you've uploaded a file, you can have the robot read from it by including the file command. For example, typing

pd fd 50.5 file myinput pu

into the text box and clicking Submit will move the pen down, move forward 50.5 mm, and then read all the commands in the file. Lastly, the pen is moved up

Webturtle uses the file system even when you don't upload files. For example, if you had typed

to circle rpt 24 [fd 20 rt 15] end pd circle pu

into the text box and clicked Submit, you would see a file called circle in directory p. Every function you define will be stored in the p directory (in a tokenized form) until you delete it.

About

ESP8266 version of the Arduino Drawing Robot

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebTurtle

An ESP8266 version of the Arduino Drawing Robot (http://www.instructables.com/id/Arduino-Drawing-Robot/) allowing control via WiFi and storage of logo procedures in its own (SPIFFS) file system.

Hardware used:

Software used:

  • Arduino development environment for ESP8266

Work Flow

  1. Install the development environment (see https://github.com/esp8266/Arduino). I used version 1.6.11 in this project.

    a. set the development board to NodeMCU 1.0 (Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)

    b. Upload the contents of the data directory to the module (see https://github.com/esp8266/Arduino/blob/master/doc/filesystem.rst#uploading-files-to-file-system)

  2. Load webturtle4.ino into the development environment and change the file accordingly. The robot acts as its own wireless access point with the following parameters:

    a. ssid (currently set to "Turtle")

    b. password (currently set to "LogoTurtle")

    c. host (currently set to "turtle")

  3. Program the NodeMCU module.

    a. Connect the NodeMCU to the development computer via the micro usb connector

    b. Hold down the flash button on the NodeMCU while pushing its rest button to put it into programming mode

    c. Upload the program to the module.

  4. Build the chassis according to the instructable (Steps 1, 3-13)

    a. In step 7, this version uses the breadboard to mount the NodeMCU according to board_layout.jpg, so all other parts are shifted to accommodate it.

    b. In steps 8-12, the wiring is changed according to schematic.pdf

  5. Turn on the robot. Then, with your computer, look for a WiFi access point with the ssid you assigned to your robot (e.g. Turtle). Connect to that ssid with the password you assigned (e.g. LogoTurtle).

  6. In your computer's web browser, go to page http://turtle/ (or the host name you assigned the robot). If your browser fails to recognize the host name, go to http://192.168.4.1/ where you should see a text box and a Submit button.

  7. In steps 14 and 15 of the instructable, you would have flashed firmware that drew a series of squares to aid you in calibration. You can draw the same four calibration boxes at this point by entering the following logo commands and then clicking the Submit button:

    pd rpt 16 [fd 100 lt 90] pu

    The commands do the following:

    • pd - Move the pen down
    • rpt 16 - Repeat the commands enclosed in brackets 16 times
    • fd 100 - Move forward 100 mm
    • lt 90 - Turn left 90 degrees
    • pu - Move the pen up
  8. Step 16 of the instructable calibrates the raising and lowering of the pen. As you saw previously, you can enter pu for pen up and pd for pen down to control the servo.

Command Set

The robot implements a very restricted set of logo commands. They are:

  • fd - value - Move forward value mm, where value can be integer or decimal
  • bk - value - Move backward value mm, where value can be integer or decimal
  • rt - value - Turn right value degrees, where value can be integer or decimal
  • lt - value - Turn left value degrees, where value can be integer or decimal
  • pu - Move the pen up
  • pd - Move the pen down
  • rpt - value [cmd1 cmd2..] - Repeat the bracketed commands value times, where value is an integer (e.g. rpt 16 [fd 100 rt 90])
  • to function_name :variable_name1 :variable_name2.. cmd1 cmd2.. end - Define a function (e.g to square :side rpt 4 [fd :side rt 90] end) (The function is called like this: square 100)
  • file file_name - Read input from file file_name in the robot's file system

Using the robot's file system

There is a 500 character limit on the commands that can be entered into the text box. That may seem like a lot, but it's not. The ability to upload, list, and delete files is provided by going to http://host/edit (or http://192.168.4.1/edit). Once you've uploaded a file, you can have the robot read from it by including the file command. For example, typing

pd fd 50.5 file myinput pu

into the text box and clicking Submit will move the pen down, move forward 50.5 mm, and then read all the commands in the file. Lastly, the pen is moved up

Webturtle uses the file system even when you don't upload files. For example, if you had typed

to circle rpt 24 [fd 20 rt 15] end pd circle pu

into the text box and clicked Submit, you would see a file called circle in directory p. Every function you define will be stored in the p directory (in a tokenized form) until you delete it.

About

ESP8266 version of the Arduino Drawing Robot

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebTurtle

An ESP8266 version of the Arduino Drawing Robot (http://www.instructables.com/id/Arduino-Drawing-Robot/) allowing control via WiFi and storage of logo procedures in its own (SPIFFS) file system.

Hardware used:

Software used:

  • Arduino development environment for ESP8266

Work Flow

  1. Install the development environment (see https://github.com/esp8266/Arduino). I used version 1.6.11 in this project.

    a. set the development board to NodeMCU 1.0 (Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)

    b. Upload the contents of the data directory to the module (see https://github.com/esp8266/Arduino/blob/master/doc/filesystem.rst#uploading-files-to-file-system)

  2. Load webturtle4.ino into the development environment and change the file accordingly. The robot acts as its own wireless access point with the following parameters:

    a. ssid (currently set to "Turtle")

    b. password (currently set to "LogoTurtle")

    c. host (currently set to "turtle")

  3. Program the NodeMCU module.

    a. Connect the NodeMCU to the development computer via the micro usb connector

    b. Hold down the flash button on the NodeMCU while pushing its rest button to put it into programming mode

    c. Upload the program to the module.

  4. Build the chassis according to the instructable (Steps 1, 3-13)

    a. In step 7, this version uses the breadboard to mount the NodeMCU according to board_layout.jpg, so all other parts are shifted to accommodate it.

    b. In steps 8-12, the wiring is changed according to schematic.pdf

  5. Turn on the robot. Then, with your computer, look for a WiFi access point with the ssid you assigned to your robot (e.g. Turtle). Connect to that ssid with the password you assigned (e.g. LogoTurtle).

  6. In your computer's web browser, go to page http://turtle/ (or the host name you assigned the robot). If your browser fails to recognize the host name, go to http://192.168.4.1/ where you should see a text box and a Submit button.

  7. In steps 14 and 15 of the instructable, you would have flashed firmware that drew a series of squares to aid you in calibration. You can draw the same four calibration boxes at this point by entering the following logo commands and then clicking the Submit button:

    pd rpt 16 [fd 100 lt 90] pu

    The commands do the following:

    • pd - Move the pen down
    • rpt 16 - Repeat the commands enclosed in brackets 16 times
    • fd 100 - Move forward 100 mm
    • lt 90 - Turn left 90 degrees
    • pu - Move the pen up
  8. Step 16 of the instructable calibrates the raising and lowering of the pen. As you saw previously, you can enter pu for pen up and pd for pen down to control the servo.

Command Set

The robot implements a very restricted set of logo commands. They are:

  • fd - value - Move forward value mm, where value can be integer or decimal
  • bk - value - Move backward value mm, where value can be integer or decimal
  • rt - value - Turn right value degrees, where value can be integer or decimal
  • lt - value - Turn left value degrees, where value can be integer or decimal
  • pu - Move the pen up
  • pd - Move the pen down
  • rpt - value [cmd1 cmd2..] - Repeat the bracketed commands value times, where value is an integer (e.g. rpt 16 [fd 100 rt 90])
  • to function_name :variable_name1 :variable_name2.. cmd1 cmd2.. end - Define a function (e.g to square :side rpt 4 [fd :side rt 90] end) (The function is called like this: square 100)
  • file file_name - Read input from file file_name in the robot's file system

Using the robot's file system

There is a 500 character limit on the commands that can be entered into the text box. That may seem like a lot, but it's not. The ability to upload, list, and delete files is provided by going to http://host/edit (or http://192.168.4.1/edit). Once you've uploaded a file, you can have the robot read from it by including the file command. For example, typing

pd fd 50.5 file myinput pu

into the text box and clicking Submit will move the pen down, move forward 50.5 mm, and then read all the commands in the file. Lastly, the pen is moved up

Webturtle uses the file system even when you don't upload files. For example, if you had typed

to circle rpt 24 [fd 20 rt 15] end pd circle pu

into the text box and clicked Submit, you would see a file called circle in directory p. Every function you define will be stored in the p directory (in a tokenized form) until you delete it.

About

ESP8266 version of the Arduino Drawing Robot

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

WebTurtle

An ESP8266 version of the Arduino Drawing Robot (http://www.instructables.com/id/Arduino-Drawing-Robot/) allowing control via WiFi and storage of logo procedures in its own (SPIFFS) file system.

Hardware used:

Software used:

  • Arduino development environment for ESP8266

Work Flow

  1. Install the development environment (see https://github.com/esp8266/Arduino). I used version 1.6.11 in this project.

    a. set the development board to NodeMCU 1.0 (Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)

    b. Upload the contents of the data directory to the module (see https://github.com/esp8266/Arduino/blob/master/doc/filesystem.rst#uploading-files-to-file-system)

  2. Load webturtle4.ino into the development environment and change the file accordingly. The robot acts as its own wireless access point with the following parameters:

    a. ssid (currently set to "Turtle")

    b. password (currently set to "LogoTurtle")

    c. host (currently set to "turtle")

  3. Program the NodeMCU module.

    a. Connect the NodeMCU to the development computer via the micro usb connector

    b. Hold down the flash button on the NodeMCU while pushing its rest button to put it into programming mode

    c. Upload the program to the module.

  4. Build the chassis according to the instructable (Steps 1, 3-13)

    a. In step 7, this version uses the breadboard to mount the NodeMCU according to board_layout.jpg, so all other parts are shifted to accommodate it.

    b. In steps 8-12, the wiring is changed according to schematic.pdf

  5. Turn on the robot. Then, with your computer, look for a WiFi access point with the ssid you assigned to your robot (e.g. Turtle). Connect to that ssid with the password you assigned (e.g. LogoTurtle).

  6. In your computer's web browser, go to page http://turtle/ (or the host name you assigned the robot). If your browser fails to recognize the host name, go to http://192.168.4.1/ where you should see a text box and a Submit button.

  7. In steps 14 and 15 of the instructable, you would have flashed firmware that drew a series of squares to aid you in calibration. You can draw the same four calibration boxes at this point by entering the following logo commands and then clicking the Submit button:

    pd rpt 16 [fd 100 lt 90] pu

    The commands do the following:

    • pd - Move the pen down
    • rpt 16 - Repeat the commands enclosed in brackets 16 times
    • fd 100 - Move forward 100 mm
    • lt 90 - Turn left 90 degrees
    • pu - Move the pen up
  8. Step 16 of the instructable calibrates the raising and lowering of the pen. As you saw previously, you can enter pu for pen up and pd for pen down to control the servo.

Command Set

The robot implements a very restricted set of logo commands. They are:

  • fd - value - Move forward value mm, where value can be integer or decimal
  • bk - value - Move backward value mm, where value can be integer or decimal
  • rt - value - Turn right value degrees, where value can be integer or decimal
  • lt - value - Turn left value degrees, where value can be integer or decimal
  • pu - Move the pen up
  • pd - Move the pen down
  • rpt - value [cmd1 cmd2..] - Repeat the bracketed commands value times, where value is an integer (e.g. rpt 16 [fd 100 rt 90])
  • to function_name :variable_name1 :variable_name2.. cmd1 cmd2.. end - Define a function (e.g to square :side rpt 4 [fd :side rt 90] end) (The function is called like this: square 100)
  • file file_name - Read input from file file_name in the robot's file system

Using the robot's file system

There is a 500 character limit on the commands that can be entered into the text box. That may seem like a lot, but it's not. The ability to upload, list, and delete files is provided by going to http://host/edit (or http://192.168.4.1/edit). Once you've uploaded a file, you can have the robot read from it by including the file command. For example, typing

pd fd 50.5 file myinput pu

into the text box and clicking Submit will move the pen down, move forward 50.5 mm, and then read all the commands in the file. Lastly, the pen is moved up

Webturtle uses the file system even when you don't upload files. For example, if you had typed

to circle rpt 24 [fd 20 rt 15] end pd circle pu

into the text box and clicked Submit, you would see a file called circle in directory p. Every function you define will be stored in the p directory (in a tokenized form) until you delete it.

About

ESP8266 version of the Arduino Drawing Robot

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebTurtle

An ESP8266 version of the Arduino Drawing Robot (http://www.instructables.com/id/Arduino-Drawing-Robot/) allowing control via WiFi and storage of logo procedures in its own (SPIFFS) file system.

Hardware used:

Software used:

  • Arduino development environment for ESP8266

Work Flow

  1. Install the development environment (see https://github.com/esp8266/Arduino). I used version 1.6.11 in this project.

    a. set the development board to NodeMCU 1.0 (Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)

    b. Upload the contents of the data directory to the module (see https://github.com/esp8266/Arduino/blob/master/doc/filesystem.rst#uploading-files-to-file-system)

  2. Load webturtle4.ino into the development environment and change the file accordingly. The robot acts as its own wireless access point with the following parameters:

    a. ssid (currently set to "Turtle")

    b. password (currently set to "LogoTurtle")

    c. host (currently set to "turtle")

  3. Program the NodeMCU module.

    a. Connect the NodeMCU to the development computer via the micro usb connector

    b. Hold down the flash button on the NodeMCU while pushing its rest button to put it into programming mode

    c. Upload the program to the module.

  4. Build the chassis according to the instructable (Steps 1, 3-13)

    a. In step 7, this version uses the breadboard to mount the NodeMCU according to board_layout.jpg, so all other parts are shifted to accommodate it.

    b. In steps 8-12, the wiring is changed according to schematic.pdf

  5. Turn on the robot. Then, with your computer, look for a WiFi access point with the ssid you assigned to your robot (e.g. Turtle). Connect to that ssid with the password you assigned (e.g. LogoTurtle).

  6. In your computer's web browser, go to page http://turtle/ (or the host name you assigned the robot). If your browser fails to recognize the host name, go to http://192.168.4.1/ where you should see a text box and a Submit button.

  7. In steps 14 and 15 of the instructable, you would have flashed firmware that drew a series of squares to aid you in calibration. You can draw the same four calibration boxes at this point by entering the following logo commands and then clicking the Submit button:

    pd rpt 16 [fd 100 lt 90] pu

    The commands do the following:

    • pd - Move the pen down
    • rpt 16 - Repeat the commands enclosed in brackets 16 times
    • fd 100 - Move forward 100 mm
    • lt 90 - Turn left 90 degrees
    • pu - Move the pen up
  8. Step 16 of the instructable calibrates the raising and lowering of the pen. As you saw previously, you can enter pu for pen up and pd for pen down to control the servo.

Command Set

The robot implements a very restricted set of logo commands. They are:

  • fd - value - Move forward value mm, where value can be integer or decimal
  • bk - value - Move backward value mm, where value can be integer or decimal
  • rt - value - Turn right value degrees, where value can be integer or decimal
  • lt - value - Turn left value degrees, where value can be integer or decimal
  • pu - Move the pen up
  • pd - Move the pen down
  • rpt - value [cmd1 cmd2..] - Repeat the bracketed commands value times, where value is an integer (e.g. rpt 16 [fd 100 rt 90])
  • to function_name :variable_name1 :variable_name2.. cmd1 cmd2.. end - Define a function (e.g to square :side rpt 4 [fd :side rt 90] end) (The function is called like this: square 100)
  • file file_name - Read input from file file_name in the robot's file system

Using the robot's file system

There is a 500 character limit on the commands that can be entered into the text box. That may seem like a lot, but it's not. The ability to upload, list, and delete files is provided by going to http://host/edit (or http://192.168.4.1/edit). Once you've uploaded a file, you can have the robot read from it by including the file command. For example, typing

pd fd 50.5 file myinput pu

into the text box and clicking Submit will move the pen down, move forward 50.5 mm, and then read all the commands in the file. Lastly, the pen is moved up

Webturtle uses the file system even when you don't upload files. For example, if you had typed

to circle rpt 24 [fd 20 rt 15] end pd circle pu

into the text box and clicked Submit, you would see a file called circle in directory p. Every function you define will be stored in the p directory (in a tokenized form) until you delete it.

About

ESP8266 version of the Arduino Drawing Robot

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebTurtle

An ESP8266 version of the Arduino Drawing Robot (http://www.instructables.com/id/Arduino-Drawing-Robot/) allowing control via WiFi and storage of logo procedures in its own (SPIFFS) file system.

Hardware used:

Software used:

  • Arduino development environment for ESP8266

Work Flow

  1. Install the development environment (see https://github.com/esp8266/Arduino). I used version 1.6.11 in this project.

    a. set the development board to NodeMCU 1.0 (Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)

    b. Upload the contents of the data directory to the module (see https://github.com/esp8266/Arduino/blob/master/doc/filesystem.rst#uploading-files-to-file-system)

  2. Load webturtle4.ino into the development environment and change the file accordingly. The robot acts as its own wireless access point with the following parameters:

    a. ssid (currently set to "Turtle")

    b. password (currently set to "LogoTurtle")

    c. host (currently set to "turtle")

  3. Program the NodeMCU module.

    a. Connect the NodeMCU to the development computer via the micro usb connector

    b. Hold down the flash button on the NodeMCU while pushing its rest button to put it into programming mode

    c. Upload the program to the module.

  4. Build the chassis according to the instructable (Steps 1, 3-13)

    a. In step 7, this version uses the breadboard to mount the NodeMCU according to board_layout.jpg, so all other parts are shifted to accommodate it.

    b. In steps 8-12, the wiring is changed according to schematic.pdf

  5. Turn on the robot. Then, with your computer, look for a WiFi access point with the ssid you assigned to your robot (e.g. Turtle). Connect to that ssid with the password you assigned (e.g. LogoTurtle).

  6. In your computer's web browser, go to page http://turtle/ (or the host name you assigned the robot). If your browser fails to recognize the host name, go to http://192.168.4.1/ where you should see a text box and a Submit button.

  7. In steps 14 and 15 of the instructable, you would have flashed firmware that drew a series of squares to aid you in calibration. You can draw the same four calibration boxes at this point by entering the following logo commands and then clicking the Submit button:

    pd rpt 16 [fd 100 lt 90] pu

    The commands do the following:

    • pd - Move the pen down
    • rpt 16 - Repeat the commands enclosed in brackets 16 times
    • fd 100 - Move forward 100 mm
    • lt 90 - Turn left 90 degrees
    • pu - Move the pen up
  8. Step 16 of the instructable calibrates the raising and lowering of the pen. As you saw previously, you can enter pu for pen up and pd for pen down to control the servo.

Command Set

The robot implements a very restricted set of logo commands. They are:

  • fd - value - Move forward value mm, where value can be integer or decimal
  • bk - value - Move backward value mm, where value can be integer or decimal
  • rt - value - Turn right value degrees, where value can be integer or decimal
  • lt - value - Turn left value degrees, where value can be integer or decimal
  • pu - Move the pen up
  • pd - Move the pen down
  • rpt - value [cmd1 cmd2..] - Repeat the bracketed commands value times, where value is an integer (e.g. rpt 16 [fd 100 rt 90])
  • to function_name :variable_name1 :variable_name2.. cmd1 cmd2.. end - Define a function (e.g to square :side rpt 4 [fd :side rt 90] end) (The function is called like this: square 100)
  • file file_name - Read input from file file_name in the robot's file system

Using the robot's file system

There is a 500 character limit on the commands that can be entered into the text box. That may seem like a lot, but it's not. The ability to upload, list, and delete files is provided by going to http://host/edit (or http://192.168.4.1/edit). Once you've uploaded a file, you can have the robot read from it by including the file command. For example, typing

pd fd 50.5 file myinput pu

into the text box and clicking Submit will move the pen down, move forward 50.5 mm, and then read all the commands in the file. Lastly, the pen is moved up

Webturtle uses the file system even when you don't upload files. For example, if you had typed

to circle rpt 24 [fd 20 rt 15] end pd circle pu

into the text box and clicked Submit, you would see a file called circle in directory p. Every function you define will be stored in the p directory (in a tokenized form) until you delete it.

About

ESP8266 version of the Arduino Drawing Robot

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

WebTurtle

An ESP8266 version of the Arduino Drawing Robot (http://www.instructables.com/id/Arduino-Drawing-Robot/) allowing control via WiFi and storage of logo procedures in its own (SPIFFS) file system.

Hardware used:

Software used:

  • Arduino development environment for ESP8266

Work Flow

  1. Install the development environment (see https://github.com/esp8266/Arduino). I used version 1.6.11 in this project.

    a. set the development board to NodeMCU 1.0 (Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)

    b. Upload the contents of the data directory to the module (see https://github.com/esp8266/Arduino/blob/master/doc/filesystem.rst#uploading-files-to-file-system)

  2. Load webturtle4.ino into the development environment and change the file accordingly. The robot acts as its own wireless access point with the following parameters:

    a. ssid (currently set to "Turtle")

    b. password (currently set to "LogoTurtle")

    c. host (currently set to "turtle")

  3. Program the NodeMCU module.

    a. Connect the NodeMCU to the development computer via the micro usb connector

    b. Hold down the flash button on the NodeMCU while pushing its rest button to put it into programming mode

    c. Upload the program to the module.

  4. Build the chassis according to the instructable (Steps 1, 3-13)

    a. In step 7, this version uses the breadboard to mount the NodeMCU according to board_layout.jpg, so all other parts are shifted to accommodate it.

    b. In steps 8-12, the wiring is changed according to schematic.pdf

  5. Turn on the robot. Then, with your computer, look for a WiFi access point with the ssid you assigned to your robot (e.g. Turtle). Connect to that ssid with the password you assigned (e.g. LogoTurtle).

  6. In your computer's web browser, go to page http://turtle/ (or the host name you assigned the robot). If your browser fails to recognize the host name, go to http://192.168.4.1/ where you should see a text box and a Submit button.

  7. In steps 14 and 15 of the instructable, you would have flashed firmware that drew a series of squares to aid you in calibration. You can draw the same four calibration boxes at this point by entering the following logo commands and then clicking the Submit button:

    pd rpt 16 [fd 100 lt 90] pu

    The commands do the following:

    • pd - Move the pen down
    • rpt 16 - Repeat the commands enclosed in brackets 16 times
    • fd 100 - Move forward 100 mm
    • lt 90 - Turn left 90 degrees
    • pu - Move the pen up
  8. Step 16 of the instructable calibrates the raising and lowering of the pen. As you saw previously, you can enter pu for pen up and pd for pen down to control the servo.

Command Set

The robot implements a very restricted set of logo commands. They are:

  • fd - value - Move forward value mm, where value can be integer or decimal
  • bk - value - Move backward value mm, where value can be integer or decimal
  • rt - value - Turn right value degrees, where value can be integer or decimal
  • lt - value - Turn left value degrees, where value can be integer or decimal
  • pu - Move the pen up
  • pd - Move the pen down
  • rpt - value [cmd1 cmd2..] - Repeat the bracketed commands value times, where value is an integer (e.g. rpt 16 [fd 100 rt 90])
  • to function_name :variable_name1 :variable_name2.. cmd1 cmd2.. end - Define a function (e.g to square :side rpt 4 [fd :side rt 90] end) (The function is called like this: square 100)
  • file file_name - Read input from file file_name in the robot's file system

Using the robot's file system

There is a 500 character limit on the commands that can be entered into the text box. That may seem like a lot, but it's not. The ability to upload, list, and delete files is provided by going to http://host/edit (or http://192.168.4.1/edit). Once you've uploaded a file, you can have the robot read from it by including the file command. For example, typing

pd fd 50.5 file myinput pu

into the text box and clicking Submit will move the pen down, move forward 50.5 mm, and then read all the commands in the file. Lastly, the pen is moved up

Webturtle uses the file system even when you don't upload files. For example, if you had typed

to circle rpt 24 [fd 20 rt 15] end pd circle pu

into the text box and clicked Submit, you would see a file called circle in directory p. Every function you define will be stored in the p directory (in a tokenized form) until you delete it.

About

ESP8266 version of the Arduino Drawing Robot

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages