[Proposal] Processing for ARM devices (such as Raspberry Pi)

edited March 2018 in Summer of Code 2018

Proposal topic: Processing for ARM devices (such as Raspberry Pi)

[Maksim Surguy, @msurguy on twitter and github]

Project Abstract

I want to make a set of 4-5 complete projects using Processing and Raspberry Pi and will publish tutorials, schematics, videos and code for all projects.


Project Description

In order for new or existing users to get started using Processing with Raspberry Pi, more visual resources that are project-based have to be presented in one central location. I will prepare 4-5 projects that integrate Processing functionality with the IO of the Raspberry Pi in a way that benefits and educates users.

My goal is to continue where others left off, building on top of these works and making more advanced users also happy: https://github.com/processing/processing/wiki/Raspberry-Pi

https://projects.raspberrypi.org/en/projects/introduction-to-processing

Here are some of the projects I propose as the ones demonstrating Processing and Raspberry Pi Integration:

  1. MIDI - like input via potentiometers and buttons affecting a Processing Sketch. Physical interactions will change the graphics in the Processing Sketch. Take for example my Codepen and make it controllable with potentiometers and buttons: https://codepen.io/msurguy/full/eeZgww/
  2. Controlling servos and graphing the PWM wave representations that helps understand the signal being generated by the Raspberry Pi to drive the servos
  3. Capturing PiCamera images and processing them into various filters, creating images like these: https://github.com/msurguy/SquiggleCam/
  4. Controlling Neopixels RGB LEDs from Processing
  5. Graphing and saving Accelerometer/gyro data from I2C sensors or motion controllers like PSMove (I have gotten this to work rather well)
  6. Stretch goal - machine learning with MXNet and Processing

Development Process

(Describe your development process. What is your proposed timeline? What do you expect to have completed by midterm and final?)

I have a lot of experience writing tutorials, e-books and documentation with diagrams, charts and various explainers. For this project, I would prepare and troubleshoot projects starting next week and during the official timeline I will publish the complete tutorials and resources.

By the midterm I plan to have published 3 projects. By the final deadline I plan to have 5 projects published with compete instructions and code. After the deadline I would like to contribute more!


More about you

(What are your interests and experience? Which of the Processing software projects have you used and what was your experience like? Have you contributed to other open source projects? If you have an online portfolio, github account, or other relevant documentation of your work, please include links.)

My online presence:

Couple of recent works that involve me documenting projects with Raspberry Pi:

My interests are generative arts, robots (CNC machines like 3D printers and plotters), IoT (devices like ESP8266 / ESP32, Arduino), augmented creativity.

I’ve been familiar with Processing dating back to 2005 and have used it in quite a few personal projects, mainly for visualizing data and interacting with accelerometers.

One of my most prominent contributions to open source is a website called Bootsnipp that I created over 5 years ago and created over a hundred of initial code snippets. Since then it gathered over 2,000 code snippets for Bootstrap framework that are freely available.

I’m an avid contributor to hundreds of open source projects, from machine learning projects, to Web Development frameworks to data visualization projects.

Comments

  • Hi @msurguy - thank you for your very concrete proposal. All of this sounds great, and I feel good seeing that you are already involved in a couple of community-facing projects!

    Do you have any questions, or things that you are not yet sure about, about the project, or the process in general?

    I'd be interested in seeing your ideas for how exactly you plan to present those projects to the reader - is it e.g. more a long-form video (à la Dan's Coding Train) with additional resources, or rather a step-by-step guide? Do you have any particular example that you think works well in that space, and is worth replicating?

    As for the platform for hosting this content: I am planning to build a "Processing for Pi" micro-site - similar like what is already available for the other Processing language variants. I also have about 200 pages of content that I want to make available through this page. This goes over many related topics, such as a more in-depth introduction and reference for the Hardware I/O library, but also chapters on using the camera, using networking, and the like.

    I feel your proposed learning resources could be a nice addition to this - i.e. in the same space, yet "out-of-band" to the regular content. Video would obviously be very nice, because it is rather orthogonal, and probably aimed at different modes of learning. (A very basic: here is how you get started with all of this resource could also be useful btw)

    I am highly interested in your project and contributions - and look forward to seeing your proposal.

  • @gohai I do have some questions about deadlines and the process of working together. For example, since all of this work is done remotely, what was the process from some of the last year's participants? What kind of communication channels are used and how often? What are the dates for the deadlines?

    As far as the style of deliverables, I am not as experienced in making full length videos as Dan Shiffman and don't see myself doing same style of videos but I do have nice camera gear and experience shooting videos of the end products and making lots of static visuals that aid in learning.

    I believe this style of content might work well for the learning resource, for each project:

    • Intro video for the project with an overview of components, code and the result
    • Diagrams, schematics, screenshots
    • Code
    • Some more videos and/or GIFs demonstrating interactive features implemented in Processing
    • Conclusion, with summary of what topics and which keywords were learned
    • "What to do next" with a list of resources that people can look at, to advance beyond the project

    For examples of diagrams, please look at the free chapters of one of my eBooks: https://leanpub.com/frontend/read

    I would love to see the table of contents of the resource that you're preparing as I'd like to make complimentary and/or more in depth content.

  • Thank you for your response, @msurguy.

    Regarding process: much of this is shaped by the specific interaction between you and your mentor, although there are some fixed constrains, largely deadlines imposed by GSoC. Normally, we'd try to get everyone on the same page, through Skype-calls or similar during the "bonding period", and develop the proposal into a concrete plan. Then one would have some sort of regular contact to review and discuss. Specific questions (e.g. of technical nature) are most of the time handled immediately, so your mentor will be trying to unblock any issues you might be having.

    Communication channels vary between participants and mentors. (I personally had good experiences with email, GitHub PRs, and occasional calls or chat.)

    You find the overall GSoC deadlines here. There is no specific timeline as to when or how this specific project would be released to the world - but we'd want to get this information out as soon as we can. (Better iterate over it out in the open.)

    I'll be sending you materials via email - looking forward to seeing your proposal over at the GSoC site!

Sign In or Register to comment.