Raspberry Pi, Send Me A Letter

The abundance of small networked boards running Linux — like the Raspberry Pi — is a boon for developers. It is easy enough to put a small cheap computer on the network. The fact that Linux has a lot of software is a double-edged sword. On the one hand, it is a good bet that anything you want to do has been done. On the other hand, some of the solutions are a bit large for a tiny embedded system.

Take, for example, e-mail. Historically, Linux hosts operate as mail transfer agents that can send and receive mail for all their users and possibly even relay mail to others. In today’s world, that’s usually overkill, but the capability is there. It is possible to install big mail transfer agents into a Raspberry Pi. The question is: should you?

What Do You Want?

The answer, of course, depends on what you want to do. If you have a dedicated board sending out text and maybe even files using an external mail server (like, say, Gmail), then the answer is no. You don’t need a piece of software listening for incoming connections, sorting through multiple users, and so on.

Luckily, there are some simple solutions if you know how to set up and configure them. The key is to avoid the big mail programs that do everything you don’t need.

Mail Front Ends

Let’s tackle sending mail first. If you try to grab the mailutils package, you’ll see it drags along a lot of stuff including mysql. Keep in mind, none of this will actually send mail. It just gives you some tools to get mail ready to send.

Luckily, the bsd-mailx package has a lot less overhead and will do the job. Look at the man page to see what options you have with mailx; you can do things like attach files, set a subject, and specify addresses.

It is a little difficult to set up for Gmail, though, thanks to Google’s security. You’ll need the certutil tool from the libnss3-tools package. You’ll need to create a certificate store, import Google’s certificate, and then set up a lot of options to mailx. I don’t suggest it. If you insist, though, you can find directions on the Web.

SSMTP

By default, programs like mailx and other Linux mail commands rely on a backend (often sendmail). Not only does that drag around too much overhead, it is also a full mail system, sending and receiving and relaying–overkill for our little Pi computers.

Luckily, SSMTP is available which only sends mail and is relatively lightweight. You need a configuration file to point it to your mail server. For Gmail, it would look like this:

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
rewriteDomain=yourdomain.com

# The full hostname
hostname=yourhostname
AuthUser=YourGmailUserID
AuthPass=YourGmailPassword
UseTLS=Yes
UseSTARTTLS=YES
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

You can use a mail agent like mailx or you can just use ssmtp directly:

ssmtp someone@somewhere.com

Enter a message on the standard input and end it with a Control+D (standard end of file for Linux).

Google Authentication

There’s only one catch. If you are using Gmail, you’ll find that Google wants you to use stronger authentication. If you are using two-factor (that is, Google Authenticator), this isn’t going to work at all. You’ll need to generate an app password. Even if you aren’t, you will probably need to relax Google’s fear of spammers on your account. You need to turn on the “Access for less secure apps” setting. If you don’t want to do this on your primary e-mail account, considering making an account that you only use for sending data from the Pi.

Sending Files

Depending on the mail software you use, there are a few ways you can attach a file. However, the mpack program makes it very easy:

mpack -a -s 'Data File' datafile.csv me@hackaday.com

The above command will send datafile.csv as an attachment with the subject “Data File.” Pretty simple.

Receiving Mail

What if you want to reverse the process and receive mail on the Pi? There is a program called fetchmail that can grab e-mails from an IMAP or POP3 server. It is possible to make it only read the first unread message and send it to a script or program of your choosing.

You have to build a configuration file (or use the fetchmailconf program to build it). For example, here’s a simple .fetchmailrc file:

poll imap.gmail.com
protocol IMAP
user "user@gmail.com" with password "yourpassword" mda "/home/pi/mailscript.sh"
folder 'INBOX'
fetchlimit 1
keep
ssl

You can leave the “keep” line out if you don’t mind fetchmail deleting the mail after processing. The file should be in your home directory (unless you specify with the -f option) and it needs to not be readable and writable by other users (e.g., chmod 600 .fetchmailrc). According to the fetchmail FAQ, there are some issues with Gmail, so you might want to consider some of the suggestions provided. However, for simple tasks like this, you should be able to work it all out.

In particular, the mailscript.sh file is where you can process the e-mail. You might, for example, look for certain keyword commands and take some action (perhaps replying using ssmtp).

Special Delivery

You might not think of the Raspberry Pi as an e-mail machine. However, the fact that it is a pretty vanilla Linux setup means you can use all sorts of interesting tools meant for bigger computers. You just have to know they exist.

$12 Quadcopter Frame From PVC Pipe

Flying ready-made quadcopters is fun. Eventually, though, most hackers get the urge to build their own. One of the most challenging parts is building a robust airframe. [Thomas Jarrett] has an interesting approach: he uses schedule 21 PVC pipe to build a sturdy airframe that is inexpensive and can house the craft’s electronics to boot. You can see a video of the sizeable aircraft, below.

The 1″ pipe is lightweight but sturdy and big enough to hold some circuitry. The rest is secured with Lexan. [Thomas] used off the shelf avionics, but it is obvious you could use the frame with your own choice of flight systems easily.

Perhaps the trickiest part is flattening the PVC for the motor mounts over a stove. The landing gear are also PVC, and formed in boiling water. Just be careful since hot PVC can give off nasty fumes (we aren’t experts on that, but it makes sense that it would be; you can watch a video about safety when heating PVC pipe). The total cost, including some prototyping parts, was under $300.

We’ve talked about building up drones in the past. If you don’t like PVC, you could always try old motherboards.

Continue reading “$12 Quadcopter Frame From PVC Pipe”

Multimeter Probe Goes Full Circle

You’ve probably seen tweezers act as test probes for a multimeter or other instrument. Some electronics testing tweezers even have the multimeter built right in. Tools like these are especially handy for working with surface mount components. [Bweed2] found a probe made by E-Z hook that kept a fixed distance you can set with a thumbwheel. It looked good, but the $70-$80 price tag seemed too much.

Employing hacker ingenuity, he turned to a drafting compass. You know, the tool you use to draw circles. He picked up one for about $10 and then got some cheaper compasses to scavenge their needles (the compass usually only has one needle since the other side holds a pencil). The result was a useful set of adjustable probes.

Once you have the idea, it is a pretty simple project. Immobilize the knee of the compass with glue, connect some wires and–for extra points–add some red and black heat shrink to make it pretty.

Want to make a more classic SMD tweezer? Here’s one we’ve covered before. If you’d rather use your feet and your ears with your probes, you might be interested in these.

Oculus Pi

[WayneKeenan] wrote a proof-of-concept virtual reality system that used a Raspberry Pi and an Oculus Rift. It was about a thousand lines of Python and with a battery pack it was even portable. The problem was that the Pi was struggling to create the 3D views.

[Wayne] recently revisited the demo and found that just about everything has gotten better: the Pi 3 is faster, and the Python libraries have become better. He spent some time building a library — VR Zero — and then recreated the original demo in 80 more lines of Python. You can see a video, below.

Continue reading “Oculus Pi”

When LEGO Flies

Building your own drone is a common enough pursuit among Hackaday readers. There are quite a few LEGO enthusiasts around, too. A company named Flybrix wants to marry those two pursuits and is offering a kit that allows you to build your drone out of LEGO bricks.

The company isn’t affiliated with LEGO. The kits look like they have some pretty common motors and control hardware. There are a few custom pieces, but the real key appears to be a LEGO compatible mount for the motors. You can see a video about the kit, below.

Continue reading “When LEGO Flies”

Lock Up Your Raspberry Pi With Google Authenticator

Raspberry Pi boards (or any of the many similar boards) are handy to leave at odd places to talk to the network and collect data, control things, or do whatever other tasks you need a tiny fanless computer to do. Of course, any time you have a computer on a network, you are inviting hackers (and not our kind of hackers) to break in.

We recently looked at how to tunnel ssh using a reverse proxy via Pagekite so you can connect to a Pi even through firewalls and at dynamic IP addresses. How do you stop a bad guy from trying to log in repeatedly until they have access? This can work on any Linux machine, but for this tutorial I’ll use Raspberry Pi as the example device. In all cases, knowing how to set up adequate ssh security is paramount for anything you drop onto a network.

Continue reading “Lock Up Your Raspberry Pi With Google Authenticator”

Listen To The Sun, Saturn, And The Milky Way With Your Own Radio Telescope

Students from the Indian Institute of Science Education and Research combined a commercial satellite dish, a satellite finder and an Arduino, and produced a workable radio telescope. The satellite dish provides the LNB (low noise block) and the associated set-top box is used only for power.  Their LNB employs an aluminum foil shield to block extraneous signals.

In addition to the hardware, the team built Python software to analyze the data and show several practical applications. They used known geostationary satellites to calibrate the signal from the finder (digitized by the Arduino) to determine power per unit voltage. They also calculated the beam width (about 3.4 degrees) and used the sun for other calibration steps.

Continue reading “Listen To The Sun, Saturn, And The Milky Way With Your Own Radio Telescope”