Node.js Robotics Software Suite

Multithreaded JavaScript has been published with O'Reilly!

One thing I've been working a lot on lately is my node-wireless Node.js NPM module. This tool, when done, will allow node apps to fully control all aspects of one or many wireless connections. This includes connecting to a network, disconnecting, discovering networks, handling authentication. Everything will be event based, e.g. an event will happen when a network appears or disappears.

Now, you are probably wondering, why would anyone want to use this? Surely, I can just use my network manager to connect to my own wireless.

The purpose of this tool isn't so that you can manually connect to a network, but so that a computing device which is put into an unknown environment can itself connect to a wireless network automatically!

But, this is just the first tool of many. I plan on building an entire suite of Node.js modules, each handling different aspects of what a computer is capable of doing when interacting with the outside world. Here are some of the other tools I will be building:

  • Webcam – Take pictures, video, trigger events on movement, OCR
  • Microphone – Listen to audio, dictation?
  • Wireless – Detailed above
  • Bluetooth – Similar to wireless module
  • GPS – Get GPS coordinates, get events when moving a certain threshold
  • Audio – Text to speech synthesis, play MP3's, possibly play streams of audio
  • Time – CRON like things
  • Compass – Get inputs based on the current direction
  • Other – Temperature, altitude, moisture readings, light sensors, motor control

Some more complex stuff I would like to build one day would be battery / solar panel management stuff, where if the system detects it is going to run out of power soon it will shut off a battery and enable a solar panel for recharging it. Other things it would do is establish a connection home and call out for help if need be.

All of the modules I build will be compatible with the ARM processor, so that small robots can be built using the Raspberry Pi (or similar) computer. Node.js itself isn't tied to any particular platform, but some of these modules will likely require some sort of binary to make them work.

The picture above is going to be a prototype machine I am working on. You can see two of the wireless adapters it will use. Eventually it will contain a Raspberry Pi, a batter, and a bunch of other devices which can interact with the physical world. Later machines will have wheels and look more like toys than a boring box.

Thomas Hunter II Avatar

Thomas has contributed to dozens of enterprise Node.js services and has worked for a company dedicated to securing Node.js. He has spoken at several conferences on Node.js and JavaScript and is an O'Reilly published author.