Barnabas Robotics - Interactive Curriculum

Curriculum beyond worksheets

Similar projects worth following
As an instructor it is important to have your tools at your fingertips. Over time our documents can be found all over the place. This project is about my journey to bring it all together and add in interactive tools. I am hoping to allow our students to write block code and to upload it to their Arduino directly through our online portal. I plan to do this by combining code from the Chromeduino and Blocklyduino open-source projects.
  • Serial Connection over browser

    Andrew Thomas06/05/2020 at 17:10 0 comments

    I recently was able to use the experimental features in chrome to make a serial connection to my Arduino Uno. The first thing I had to do was turn it on by going to `chrome://flags`  and enabling Experimental Web Platform features.  Next I had to write some code to talk to my device and fortunately there is an excellent tutorial at codelabs where you can work your way through a glitch example using a BBC micro:bit, a nifty little learning device. "But Coach Andrew,

    Read more »

  • Chromebooks - Chromeduino

    Andrew Thomas07/05/2019 at 20:19 0 comments

    Since my earlier struggle with BlocklyDuino and the python server I thought maybe I might discover some amazing techniques to communicate with arduino from ChromeDuino. To access a working version I had to find a chromebook and thankfully we have one in the house. On the chromebook I add the app from the chrome web store, set the server to, and attempted to upload the intro file. On the nano I had connected to the chromebook I saw the Rx SMD flicker like last night's fireworks but unfortunately the behavior did not seem to change. So something is happening but without any feedback I am not sure what happened. As far as ChromeDuino was concerned, it worked with the message "Upload Complete! Have a nice day! :) " 

    This did not help me much. I opened the Serial Com port and the lack of messages there confirmed the upload failed but with a stubborn desire to get it to work and undying hope I tried a different server. Sadly I received the same results. 

  • Digging into the existing options

    Andrew Thomas07/05/2019 at 19:26 0 comments

    With my goal being something along the lines of allowing students to directly upload to arduino from a curriculum portal, today I will try to at least upload from a web browser. Let's start with BlocklyDuino since visual programmers can reduce the barrier of entry and are used more frequently in younger classrooms. You can try BlocklyDuino out here and you will see an upload option. Here it expects a local web server running at localhost:8080 ( and more specifically a small python server that will

    1. attempt to find arduino on the host 
    2. attempt to find the connected USB
    3. parse out the command 
    4. send the converted c code to arduino

    This file had to be edited to work properly on linux, arduino had to be installed, and the user had to be added to the appropriate arduino groups (lock and dialout) I could not connect to the USB on SilverBlue and my assumption is because I am sandboxed behind the devices so I am going to try this on a normal Fedora workstation where arduino is already installed and I have successfully uploaded files in the past. 


    Discovered that Fedora 30 drops python 2 so BlocklyDuino is is out of date.  Tried to convert to Python 3 and was almost successful. There were too many changes to the http.server module s I moved over to an Ubuntu 18.04 machine. Once I had the pyhton server loaded I realized I had to

    sudo apt install arduino

    and add user to the `dialout` group. Almost there and bam I hit a bad file selected -> ! "Processing can only open its own sketches and other files ending in .ino or .pde" which looks like a Java (Arduino IDE) error message showing 

     java.lang.NullPointerException thrown while loading

    Well now, I am not sure which laptop I actually got further but it is apparent that uploading to a USB from the browser is difficult. After saying that, I guess  my search moves to how to communicate to a usb device from the browser. 

  • grounding my thoughts on the project

    Andrew Thomas07/03/2019 at 21:17 0 comments

    I have been struggling with Arduino uploading from Chromebooks in a school network. Technical issues elevate discouragement in the classroom so I am looking to improve the experience for students and instructors. The arduino web editor presented me with challenges that have encouraged me to look for other options and while I attempt to put resources into a common location I thought it might be beneficial to have them all work together. One piece at a time I am learning about many technologies that may or may not cohere. 

    Currently chromeduino only works as a Chrome app on chromebooks but, late to the game, I have learned that support for this was deprecated / discontinued 2 years ago. You can look this up in a web search and most articles like this one on Ars Technica suggest that Progressive Web Apps are the future and since I am, like I said, late to the game, the future is already here. Sigh. 

    As I am learning about podman, and containers in general, on my recent install of Fedora Silverblue I thought I would give caterpillar a try. Caterpillar is an "experimental project" [that] "investigates whether it is feasible to automatically port Chrome Apps to web sites".

    I did not get very far and the project makes no promises. So... here I am pondering my next steps. 

    My goal is to have "try it" break outs or on-page sections that allow students to not only follow along with curriculum but upload it to their device. This is exciting to me and might be a ridiculous way to solve a simple problem but that is the direction I am headed. Until then, I will eat the elephant one bite at a time learning about all the exciting tools in the open source universe. 

View all 4 project logs

  • 1
    Turn on Experimental Features in chrome*

    Enter the following line in your chrome (browser) address bar


    Click the Disabled dropdown for Experimental Web Platform features and select Enabled


    I am curious about the firefox skepticism

  • 2
    Upload code to Arduino

    Use this code to prepare your Arduino for serial communication with the browser:

    String incoming = "";
    void setup()
      pinMode(LED_BUILTIN, OUTPUT);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      Serial.println("Serial is READY");
    void loop()
      if (Serial.available() > 0) {
        incoming = Serial.readString();    
        if (incoming == "LON" || incoming == "1") {
          digitalWrite(LED_BUILTIN, HIGH);
          Serial.println("LED is ON");
        if (incoming == "LOFF" || incoming == "0") {
          digitalWrite(LED_BUILTIN, LOW);
          Serial.println("LED is OFF");
        Serial.print("Serial READ: ");

     You will need to use a current Arduino IDE or other methods to flash this to your board at this time but feel free to make your own customization.

  • 3
    Go to

    Check out to test the functionality. You can even remix your own interface from there.

View all 6 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates