Expose your Raspberry Pi on Any Network

Everyone’s talking about the Internet of Things (IoT) these days. If you are a long-time Hackaday reader, I’d imagine you are like me and thinking: “so what?” We’ve been building network-connected embedded systems for years. Back in 2003, I wrote a book called Embedded Internet Design — save your money, it is way out of date now and the hardware it describes is all obsolete. But my point is, the Internet of Things isn’t a child of this decade. Only the name is.

The big news — if you can call it that — is that the network is virtually everywhere. That means you can connect things you never would have before. It also means you get a lot of data you have to find a reason to use. Back in 2003, it wasn’t always easy to get a board on the Internet. The TINI boards I used (later named MxTNI) had an Ethernet port. But your toaster or washing machine probably didn’t have a cable next to it in those days.

Today boards like the Raspberry Pi, the Beagle Bone, and their many imitators make it easy to get a small functioning computer on the network — wired or wireless. And wireless is everywhere. If it isn’t, you can do 3G or 4G. If you are out in the sticks, you can consider satellite. All of these options are cheaper than ever before.

The Problem

There’s still one problem. Sure, the network is everywhere. But that network is decidedly slanted at letting you get to the outside world. Want to read CNN or watch Netflix? Sure. But turning your computer into a server is a little different. Most low-cost network options are asymmetrical. They download faster than they upload. You can’t do much about that except throw more money at your network provider. But also, most inexpensive options expose one IP address to the world and then do Network Address Translation (NAT) to distribute service to local devices like PCs, phones, and tablets. What’s worse is, you share that public address with others, so your IP address is subject to change on a whim.

What do you do if you want to put a Raspberry Pi, for example, on a network and expose it? If you control the whole network, it isn’t that hard. You usually use some kind of dynamic DNS service that lets the Pi (or any computer) tell a well-known server its current IP address (see figure below).

Continue reading “Expose your Raspberry Pi on Any Network”

Distributed, Open Source Chat with Vector and Matrix

When it comes to chat, you have many choices. Facebook Messenger, Google Talk, Whatsapp, Kik, and Slack are all viable options. However, all of these choices are proprietary, and require you to use servers that you can’t run yourself. They’re highly centralized, closed source tools.

In the open source world, IRC has been the go to solution for chat for many years, and for good reason. Anyone can run a server, there’s many clients, and it’s built on open standards. But IRC comes from a pre-mobile world, and relies on clients to maintain persistent connections to the server. It’s not the best experience on a phone.

Matrix.org and Vector.im aim to be a modern solution to chat. Matrix is a standard for passing messages around, and Vector is a chat solution built on top, with support for iOS, Android, and your browser.

What makes this solution different is the concept of Homeservers. A Homeserver manages messages for users, recording them when they are received and providing them to users when they connect. Homeservers also “federate” to communicate amongst each other. This means anyone can run a Homeserver and connect it to the greater network of Matrix, providing a distributed approach to building a chat network.

Under the hood, Matrix is just HTTP. You send messages into the network with POST requests, and receive new messages by polling with GET requests. This means no persistent connections are required, which is perfect for mobile and low power devices.

On the topic of devices, Matrix is designed for general purpose messaging, not just chat. It should be pretty simple to connect hardware up to Matrix, which would provide a simple way to get data in and out of connected devices. Since it’s all HTTP, a device based on the ESP8266 could hop into your chat room with relative ease.

Matrix and Vector are very much in beta, but are definitely usable and worth a try. To get started, you can create an account on Vector.im and start chatting. We’re awaiting some of the features in the works, including end-to-end encryption, and hope to see some future hacks talking to the Matrix infrastructure.

K.I.S.S. Pi Sprinkler – Just Keep the Plants Alive

A good first step in a project is knowing what you want to do. [Ben Fino] made it clear that his Raspberry Pi Sprinkler control system for his wife’s garden had one goal: keep the plants alive. The resulting project is doing just that and no more.

The circuitry, and plumbing, is straightforward and explained well in the Instructable. All the electronics consists of is the Pi and a MOSFET to take the 3.3v GPIO to 5v to control a relay. The valve controlling the water requires 28v AC which necessitated the relay to control it. There are also three LEDs: one is for power, one to indicate when the valve is opened, and one is an extra for some future purpose.

The intriguing part is the use of weather data from the web to determine if it’s rained recently. Python scripts provided by [Ben’s] friend [Mark Veillette] use a weather site API to get the rainfall data. The main script is set to run once every 24 hours. [Ben] set his system to water unless the previous day had sufficient rain. How much rain and the number of look-back days is programmable.

What a great application of the KISS principle: keep it simple, stupid – except for that third LED without a purpose.

The Long and Bumpy Road to Internet in Serbia

Internet is taken for granted. These days you assume there is Internet and only wonder if there is free WiFi to get onto it. But in the early days, connecting to a network could be tough and this was particularly true in Serbia. The country’s Internet revolution was complicated by both technology and politics, but the vibrance of the tech community always found a way.

The story is a fascinating one shared by Dejan Ristanovic at the Hackaday | Belgrade conference. He is now the Editor-in-Chief of PC Press computer magazine and played an integral part in providing global email access to Serbia. Enjoy the video of his talk below and join me after the break for a few highlights.

Continue reading “The Long and Bumpy Road to Internet in Serbia”

Death, Taxes, and Laundry

There’s an old saying that the only two things that are certain are death and taxes. However, unless you live in a nudist colony, there’s probably also laundry. [Darpan Bajaj] and some friends were at a hackathon and decided to put their washing machine on the Internet.

Most of us here at Hackaday — and many Hackaday readers, judging by the comments — are a little suspicious about how much we really need everything attached to the Internet. However, a washing machine is probably not a bad idea: you use it often, you need to know when it is done, and you probably don’t want to just sit and watch it spin. Besides, the intended installation is in a hostel where there are multiple machines and many potential users.

Continue reading “Death, Taxes, and Laundry”

Presenting the Internet of Trash Cans !

This was gonna happen – sooner or later. [matthewhallberg] built a “Smart” trash can that is connected to the Internet and can be controlled by its own Android App. We’re not sure if the world needs it, but he wanted one and so built it. He started it out on a serious note, but quickly realized the fun part of this build – check out his funny Infomercial style video after the break.

trash_can_02The build itself is uncomplicated and can be replicated with ease. A servo motor helps flip the lid open and close. This is triggered by an ultrasonic ping sensor, which responds when someone waves a hand in front of the trash can. A second ping sensor helps inform the user when it is full and needs to be emptied. A Leonardo with the Idunio Yun shield helps connect the trash can to the internet. An mp3 shield connected to a set of powered computer speakers adds voice capability to the trash can, allowing it to play back pre-recorded sound clips. Finally, a Bluetooth module lets him connect it to an Android phone and the companion app controls the trash can remotely.

For the IoT side of things, [matthewhallberg] uses a Temboo account to send an email to the user when the trash can is full. The Arduino sketch, a header file to configure the Temboo account, and the Android application can all be downloaded from his blog. If this project inspires you, try building this awesome Robotic trash can which catches anything that you throw near it  or read the barcodes off the trash being thrown out and update the grocery list.

Continue reading “Presenting the Internet of Trash Cans !”

Let Alexa Control Your Life; Guide to Voice-Enable Everything

Let’s face it, automation doesn’t feel quite as futuristic unless you can just say what you want out loud and have the machines flawlessly obey. That is totally possible now — and on the cheap. Well, cheap as far as money goes. It can be an expensive learning curve to get it all working. This will help. [Lindo St. Angel] has put together a guide to navigate voice control of hardware using Amazon’s Alexa SDK.

We previously reported that Amazon’s AI had escaped its hardware prison in the form of the Alexa Skills Kit. Yes, calling it the Alexa SDK above is wrong it’s actually the ASK but nobody knows what that acronym is while most recognize the gist of an SDK. It gives you the hooks and the documentation necessary to leverage the functionality in your own applications. The core functionality of Alexa is voice recognition. Even so, it’s still a tall hill to climb.

[Lindo] has broken down the problem into a very manageable example. The Amazon Voice Service (part of ASK) is used for voice recognition and control. Amazon’s Lambda service connects the ASK to your piece of hardware; in this case he’s using a Raspberry Pi as the server. The final step is to connect your hardware to the Pi. [Lindo] is interfacing a keypad-based home automation system with the Pi but the sky’s the limit at this point.

With all the authentication and connectivity laid bare, this is a lot more approachable. The question is no longer can you connect everything to voice control. The question becomes should you give control of everything over to one single online service?