Via PubNub
Since the Raspberry Pi was released in 2012, the capabilities of low-power, low-cost embedded computing devices have grown tremendously. It is now quite common to see smart devices (thermostats, lighting, locks, cameras) in homes as well as real-time updates in industrial settings such as package delivery services. As ride sharing services like Uber and Lyft gain popularity and autonomous vehicles loom closer on the technical horizon, the most important applications of mobile devices in smart car settings are becoming clearer and clearer. In this blog entry, we create a DIY “always on” live dashboard camera broadcast using the Raspberry Pi 2 Model B and the Raspberry Pi 8MP Camera Module. With this platform, we can broadcast high- or low-quality images at a fixed interval and have them immediately picked up by our receiver user interface (which we’ll cover in the upcoming Part 2 entry).
When designing a live dashboard camera, the first technical hurdle is ubiquitous network connectivity. As 4G/LTE permeates throughout the United States, most drivers have Internet access in their vehicles via an embedded hotspot (such as OnStar Wifi), portable hotspot (such as a Verizon MiFi), or personal hotspot using a smartphone (such as the iPhone 6S or Nexus 6P).
The second technical hurdle is availability of sensors and control in vehicle setting. Power is already relatively easy using a car charger with micro-USB plug and/or a USB battery pack. As platforms like Raspberry Pi, Arduino and Tessel have matured over the past few years, the availability of low-cost sensors with easy configuration has become more and more widespread. It is now very easy to acquire and set up Wifi, Bluetooth Low Energy (BLE), Camera and GPS connectivity on embedded computing platforms.
The last major hurdle (one which is still being addressed as a strategic challenge of these platforms) is the difficulty of programming embedded devices. Of the three platforms previously mentioned, Tessel is the most user-friendly because it uses a JavaScript interface that most developers can easily manage. Arduino tends to be more challenging because it involves coding in C or C++. Raspberry Pi is my personal favorite because it runs a full Linux ARM distribution, enabling the developer to choose JavaScript (node.js), Python, C/C++, or even Erlang based on the use case (other languages such as Ruby, R and Go are also readily accessible).
So, given all these tools and techniques, we can assemble a complete platform for vehicle-based computing within a couple hours. Although our first application is a connected camera feed, it is easy to imagine extending it with GPS location and speed data for geolocation and geofencing, or even advanced image processing capabilities such as facial recognition or license plate recognition. It’s also worth mentioning that once you have a self-contained platform with network and power, you can also apply it to use cases such as wearable or drone-based cameras.
Each Friday is PiDay here at Adafruit! Be sure to check out our posts, tutorials and new Raspberry Pi related products. Adafruit has the largest and best selection of Raspberry Pi accessories and all the code & tutorials to get you up and running in no time!