Project Overview: PlottyBot - CodeClubLuxembourg/plottybot-toolkit-web GitHub Wiki

Project Overview: PlottyBot

What it is: PlottyBot is an educational XY plotter designed to be controlled through a combination of Scratch (visual programming language) and a web-based interface. It allows users, especially children and learners, to create drawings and engage with basic coding concepts interactively.

Key Project Components and Progress

  1. Layers and Interconnections:

    • Frontend (Scratch Interface): A customized version of Scratch is used to send drawing commands to PlottyBot. When users create lines or shapes, commands are transmitted to the hardware.

    • Backend (Raspberry Pi): The Raspberry Pi acts as the control hub, running essential scripts that handle Scratch commands and execute motor movements accordingly.

    • System Configuration: Key system files (like /etc/rc.local and various setup scripts) configure the Raspberry Pi to boot with the necessary services, manage GPIO for motor control, and enable network connectivity.

  2. Current Progress on Scratch:

    • Modified Scratch Repositories: The Scratch source is customized with a preloaded plugin that captures drawing commands as XY start and end points, which are then sent to the Raspberry Pi for execution.

    • Deployment Locations:

      • GitHub: Core Scratch modifications are version-controlled on GitHub for collaboration and backup.

      • Linux Server (Nestor): Scratch is also set up on a Linux server named "Nestor," where specific npm versions and dependencies are managed for consistency and compatibility with Scratch’s customization.

  3. Development Environment:

    • Primary Editor: Development primarily takes place on Windows using Visual Studio Code as the IDE.

    • Version Control: GitHub is used to manage multiple repositories, with specific repositories dedicated to different aspects of the PlottyBot setup (e.g., plottybot-driver, plottybot-toolkit-web, plottybot-scratch-bridge).

    • Hardware Control: Raspberry Pi serves as the main controller, interfacing with motor hardware and GPIO through the plottybot-driver and system configuration scripts.

  4. Hardware and System Configuration:

    • Raspberry Pi: Receives commands via a Python server script and communicates with motor controllers to execute drawing commands.

    • WiFi and Boot Configuration: The system is set to auto-start essential services at boot and can create a local WiFi network for easier connectivity and control access.

    • PlottyBot Repositories: Multiple repositories manage different project layers, such as plottybot-system-files for system configuration and plottybot-toolkit-web for the web interface.

Quick Points for Session Continuity:

  • Project Goal: Develop an educational, interactive plotter controllable via Scratch and a web interface.

  • Development Tools: Visual Studio Code on Windows; GitHub for version control.

  • Deployment & Testing: Scratch source and customizations are hosted on a Linux server (Nestor) and Raspberry Pi for hardware interfacing.

  • Current Needs: Assistance in finalizing interconnections, optimizing Scratch commands, or potentially automating parts of the setup.