Hi all,
I've been thinking about learning the Go programming language for
years and haven't acted on it. One thing that really dissuades me
is that the Go language doesn't really have any connection to the
gui on the pc, at least it didn't a year ago. I guess you can add
in some graphics libraries. Still, it's not a sophisticated and
seamless integration plus IDE like you'd get with something like the
MS Visual C# system, for example (as far as I know). Even if gui
support is addable, limiting my interactions to a pc screen and
keyboard isn't too exciting. What if I want to interface with the
mouse, or a temperature sensor, or a gps sensor, or a motor
controller?
Well, one thing that can interface nicely with those other things
like those I mentioned is a Raspberry Pi, or Beagle Bone, or Beagle
Board, etc. You can program many of these devices in Go, as well as
almost any other language supported by Linux. But, those devices
don't have ANY screen built in. Yes, you can attach to a composite
video device or an hdmi video device. But, if you're talking about
something like a smart thermostat, or smart weather monitor, or
robotics controller, it would be nice to have a small touch screen
attached to it.
So, then I think of using an android tablet or smart phone. But,
you cannot program those in Go, or probably not Python or Ruby
either. It's gotta be Java. I don't want to do Java. I like Go
because it's compiled and thus has really fast execution, relatively
light weight executables (I think), fast compile times, extensive
multi-threading and concurrency support (although that's not so
relevant on a Beagle Bone), and built in garbage collection.
So, here's my thought. I want to get a Raspberry Pi or something
similar, which I can program in Go, and which I can attach sensors
and motor controllers and other things to. Then, I want to use an
android tablet or smart phone to be a remote display and touch
screen interface for the Pi operating over the lan, either by wifi
or by lan cable. Actually, since most tablets and smart phones
don't have lan ports, it would probably have to be wifi, or maybe
bluetooth.
So, does anyone know how to do something like this. I don't
necessarily have to program the Android device. Just load something
on it to do the remote access.
Here are examples of the type of things you could build with a set
of devices like this. Having the touch screen be remote opens up
some interesting possibilities, although the Pi and the tablet could
be in the same enclosure.
* Smart weather station. Mount the Pi outside in an enclosure with
whatever sensors it needs. Mount the touchscreen either outside or
inside, and have full access and control of the unit which has the
sensors. You could optionally add smarts to the touch screen /
tablet to merge local weather data with stuff from the web, etc.
But, the simplest thing is just to use the tablet as a i/o device
for the Pi. You could also add those smarts into the Pi if it has
internet access, merge the data, then send it to the touch screen.
* This example will only make sense if you've seen the I Robot
movie. Detective Spooner walks up to Dr. Alfred Lannings's house
after Lanning's death. The detective holds his badge up to a smart
device on the door frame. The device scans the badge with a laser
or something, checks a database of authorized people, determines
that Detective Spooner is allowed, greets the detective with Dr.
Lannings's voice, displays "Welcome Detective Spooner" on a small
screen, and unlocks the front door.
Etc. There are thousands of cool possibilities for a device with a
non trivial amount of computing power and memory, wifi and
bluetooth, a NICE built in touch screen, AND lots of general purpose
I/O for access to cameras, laser scanners, speakers, microphones,
gps devices, motor controllers, servos, position sensors, light
sensors, even radio antennas, etc.
Any thoughts?
Sincerely,
Ron