Visual Programming Guide
An overview of available graphical programming software tools. From supported languages to overviews of tools for Arduino and Raspberry Pi.
It wasn’t many years ago that using a computer meant literally learning a new language.
Innovations like the graphical user interface exposed basic elements like the filesystem to a wider audience, and the Internet has become increasingly democratized as user-friendly tools like WordPress, Youtube and Soundcloud allow anyone to create, publish and distribute content without writing a line of code. Today an explosion of accessible prototyping kits is making it possible for amateurs and hobbyists to sink their teeth into the growing Internet of Things by cobbling together connected computing projects.
But when it comes to making that hardware do your bidding, most tinkerers will still encounter a “language barrier”. Even the most user-friendly development boards need to be programmed; and even the simplest programming languages still look like alphabet soup to the uninitiated.
Fortunately, some developers have started to step in and provide user-friendly, visual programming tools. These platforms abstract away the functions, variables and idiosyncratic syntax rules of the underlying code and give users a simple drag-and-drop interface for building apps out of discrete chunks of logic (“When this happens, do that”) and widgets that can apply settings tailored to any specific piece of hardware.
Here’s a roundup of visual programming platforms that have some application to the Internet of Things—either because they’re tailor-made for programming sensors and embedded computers, or because they’re general-purpose platforms for programming in the languages that are compatible with those devices.
Free / Open Source
“A visual tool for wiring the Internet of Things"
"Drag and drop the Internet of Things”
The NETLab Toolkit, or NTK, displays its prebuilt chunks of code as widgets — little boxes full of input fields, sliders, toggles, and other on-screen controls. Users choose widgets suited to the task at hand, set the parameters for each one, and connect them together in a logical sequence to create a program. NTK programs are compatible with the original Arduino and similar Linux-based embedded computing hardware. Philip van Allen, a professor at the Art Center College of Design, created NTK as a teaching tool and continues to expand the platform by releasing new widgets.
Programming Environment: Browser
Hardware Support: Arduino, Range of Linux Microscontrollers (Raspi, Galileo)
Project Page: Github
ArduBlock is a Block Programming Language for Arduino.
"The Ardublock software is a plugin which is added to the IDE of arduino and which allows the user to program in blocks of functions, a little as scracth4arduino, or to appinventor for android."
Programming Environment: Destop Arduino IDE
License: GNU General Public License
Project Page: Github
Commercial / Enterprise Focused
“Modern Toolsets. One Workspace. Data-Driven. All Yours.”
"DGLux5, our “drag & drop” rapid application development and visualization platform enables individuals and teams to design real-time, data-driven applications and dashboards without ever writing a single line of code. It maximizes analysis efficiency and enables faster communication through real-time, data-driven dashboards for web, desktop and mobile devices."
“Unlock the power of your IoT data by prototyping, building and hosting applications with Flow Designer"
"AT&T Flow Designer is an intuitive visual tool that enables you, the IoT developer, to create your prototype, iterate and improve through multiple versions, then deploy your application.
Flow Designer IDE: fully hosted, Node-RED based programming environment with ability to maintain versioning, publish and run solution on AT&T IoT PaaS. 'Do something' with the data, create an application that is ready for end users to consume"
“A professional tool to build robust IoT applications”
Reactive Blocks is distributed as a plug-in for the Eclipse integrated development environment. Its preprogrammed code blocks are designed around large-scale Internet of Things applications, such as sensor networks, home automation and industrial monitoring. Reactive Blocks also touts itself as an ideal solution for “gateway” applications — programs, running on hardware like wireless routers, that process incoming data from local sensors and devices. These gateway apps can then make decisions without having to pass all of the raw data on to a remote cloud server, a concept known as “edge” or “fog” computing.
Programming Environment: Eclipse
Underlying Code: Java
Hardware Connections: Modbus, Serial I/O, Raspberry Pi GPIO, Berryclip for Raspberry Pi, Gertboard for Raspberry Pi, USB Camera
License: Eclipse Public License (EPL) - Details
Additional: Reference Docs
"Drag, Drop, Build.”
"Introducing GraspIO part hardware and part software with drag and drop way to program electronics using iPhone, iPad or Android. GraspIO is a smart development board that makes building electronics projects easy, fun and accessible."
Programming Environment: Cloud
Hardware Support: Arduino, RasPi
“Ideas in real time”
Wyliodrin is a web-based service that aims to be sort of a one-stop shop for easily programming IoT devices. Users can select from a variety of programming languages, then use the visual drag-and-drop interface to build their code. Like Scratch, Wyliodrin’s code snippets fit together like puzzle pieces. The platform is compatible with many popular kinds of prototyping hardware, including Arduino, Raspberry Pi, Beaglebone, Grove, and several Intel products.
Programming Environment: Browser
Hardware Support: Raspberry Pi and Intel Galileo
Price: Free account: uses one board and create 3 applications >> Ultimate account ($50/m): use 250 boards and create 250 applications
“The easiest way to create a powerful Internet of Things”
"Visual App is a visual development tool that enables your own or 3rd party hardware, services, data, devices, APIs, protocols and applications to interact easily. They come in the form of elements and act on the same level. Simply drag and drop the elements and make inter-connections to make things play."
"An open source graphical programming environment for Multiplo™, Arduino™, physical computing devices and robots."
"Blockly is a library for building visual programming editors"
" RaspLogic is a software that want to make a simple, user friendly and cheap way to control things in every building."
"A design tool for interactive experiences"