Category Archives: Raspberry Pi

The Raspberry Pi Command Line Interface

Being Linux based, the tiny Single Board Computer Raspberry Pi or RBPi has a graphical user interface familiar to regular computer users. Again, as most users of Linux will be familiar with, RBPi also has a command line interface where you have to type in the commands you want the SBC to execute. Well, a graphical user interface does have its merits and although the command line interface is a little more intimidating to the uninitiated, it is not a very difficult beast to tame.

One of the major advantages of the command line interface is its scope and speed – it easily accomplishes and most often surpasses what can be achieved with the graphical user interface, and does it faster as well. For most day-to-day tasks, however, the graphical interface is enough and has many useful applications including a web browser, test editor and file manager.

For those who want to delve deeper and learn more about how the SBC actually works, the command line interface is the way to go. Most of the work is done by opening up a Terminal or Shell and typing within it.

As the name suggests, the command line interface is an entirely text-based interface. You type in the commands that you want the SBC to execute, and it gives you a response. Although in the beginning, it will seem a little confusing, it is more like interacting in a natural way, just as we converse with another person. Once mastered, interacting with a computer via the command line interface will let you learn much more about it in the future.

You begin by opening up a Virtual Terminal/Console. Why is the name Terminal used? This is a legacy from the past when computers were gargantuan beasts, centrally located, with remote terminals distributed to the users. When you click on the LXTerminal on the Raspbian desktop, a small bordered box opens up, with ‘pi@raspberrypi $’ written inside it. The box is the terminal and inside it is the command prompt. The command prompt shows the name of the user – ‘pi’, the name of the computer – ‘raspberry’, also called the domain name, and the ‘$’ signifies that pi is a regular user and not the root or superuser (for root, the prompt would change to ‘#’).

The command prompt shows that your RBPi is now ready and waiting for you to type in your command. For example, you can see where you are by asking the computer to Print the Working Directory, by entering ‘pwd’ and hitting Enter. The SBC will most likely return – ‘/home/pi’, unless you have changed your username.

You can change the directory with ‘cd ..’, the computer knows that it has to return to the parent directory – ‘/home’. You may verify this with another ‘pwd’. With the command List Files or ‘ls’, you will be able to see all the files residing in the directory. Use a flag ‘-a’, to list the hidden files or all the files in the directory. Now the command becomes ‘ls -a’. Use ‘ls -l’ to see more information about the files.

For more information and for learning the command line, visit the website linuxcommand.org

Give Your Raspberry Pi an Intelligent Power Switch

Whether you use a desktop or a laptop computer, one of its features is the intelligent power supply that shuts down the system once it detects that the software has sent the shutdown command. To switch the system on, you need only press a small button. The Raspberry Pi, or the RBPi, being a low-cost single board computer, does not have this feature. After shutting down the OS, you have to unplug the power cable physically from the RBPi.

With large numbers of community projects springing up around the credit-card sized SBC, the RBPi can also enjoy the features of an intelligent power supply. This is the Pi Supply project, which sits between the actual power supply and the RBPi, adding its own intelligence as necessary. Pi Supply takes its power from the micro-USB charger and powers the RBPi.

When the RBPi issues a ‘sudo halt’ command, Pi Supply detects the shutdown command and switches off the power to the SBC at a safe moment. To switch the power back on, simply press a button on the Pi Supply, and your RBPi springs back to life. You do not need to plug/unplug the micro-USB connector anymore. With power supply issues being one of the biggest headaches for SD card corruption, the Pi Supply is a very handy project.

The Pi Supply provides a single window solution to all the power management problems your RBPi currently faces. This intelligent ATX style power supply switch is a revolutionary solution for the RBPi, since you do not need to disconnect any power supply wire from the wall-wart to the RBPi. Turning power on/off to the RBPi is now possible simply by touching one of the two buttons on the Pi Supply.

Once your work with the RBPi is over, you simply issue the command ‘sudo halt’. Once the OS has safely and fully shutdown, the Pi Supply will cut the power to the RBPi. If you would like to resume working, touch the on button, and the Pi Supply will restore power to the RBPi.

The second button on the Pi Supply is meant for a hard power off. In case of emergency, pressing this button will immediately cut the power to your RBPi. However, this button must only be used when absolutely necessary, as when your SBC has crashed or is in the frozen state and is refusing any attempts of revival. Note that use of this button increases the risk of file corruption on your SD card, if operated at the wrong moment.

One of the most amazing features of the Pi Supply is that it is able to distinguish between ‘sudo halt’ and ‘sudo reboot’. That means not only can Pi Supply shut down the power supplied to your single board computer when you give the halt command, but it can also reboot your SBC when you want, without you touching a single button or removing a single connector. That makes it almost as intelligent as the ATX power supply of your desktop.

MIPS Creator CI20: Challenge for the Raspberry Pi?

Although the Raspberry Pi or the RBPi did bring a revolution in the world of tiny computers that can teach children the intricacies of computer programming with inexpensive ease, not all are happy about its capabilities. There are two main points of contention with the credit-card sized single board computer – the low amount of RAM and the lack of onboard storage.

A quick recap of the RBPi’s specifications shows that it uses a system on a chip (Broadcom BCM2835). This includes the 700MHz processor (ARM1176JZF-S) and a GPU (Videocore IV). Initially, the board shipped with 256MB of RAM, but later up-gradations had 512MB in the Models B and B+. There is no built-in storage device and RBPi uses the SD card for booting and persistent storage. The latest model B+ has four USB2.0 ports, one Ethernet port, one 15-pin MIPI camera interface, one composite video output, one HDMI output and one audio output on 3.5mm jack. The 40-pin expansion header has 27 GPIO pins.

Now, there is a more powerful computer in the market to challenge the RBPi. Moreover, it is available free. The MIPS Creator CI20 is a development board from Imagination Technologies and it can run Linux distributions such as Gentoo, Arch and Debian 7.

The CI20 runs on a dual core processor based on the MIPS architecture and operating at 1.2GHz. The GPU, a PowerVRSGX540, is capable of running OpenGL ES 2.0.The onboard RAM size is 1GB, with 8GB onboard flash storage. The board features an SD expansion slot, one pair of USB 2.0 ports, Bluetooth 4.0, Wi-Fi and Ethernet. The expansion header features 25 GPIO pins and 2 SPI buses. You can boot the board from either the SD slot or the flash memory.

Compared with the RBPi model B+, the advantages that CI20 has are – double the RAM, a faster processor, onboard storage and built-in Wi-Fi and Bluetooth. In addition, CI20 has its power supply onboard, which the B+ does not. The disadvantages are – CI20 has only two USB ports compared to the four on the B+. In addition, the form factor of the CI20 is larger than what the B+ has.

Since the CI20 has higher capabilities such as more computing power, onboard storage and wireless connectivity, it is assumed that it will cost more than the current price of the RBPi B+ ($35). However, Imagination Technologies have not yet revealed the price of their new board. Imagination, instead of selling the initial batch of CI20s, is giving them away free to tinkerers.

Therefore, if you want to lay your hands on a CI20, you must have a grand project idea for the board. That means this giveaway is not actually meant for the hobbyists, but rather aimed at developers. However, do not be discouraged even if you are planning to create a video arcade console/home entertainment center/TOR proxy at home. It may turn out that your CI20 based home automation hub is interesting enough for Imagination and they are willing to send one of their free development boards your way.

Turtle Graphics on the Raspberry Pi

In 1966, Seymour Papert and Wally Feurzig developed the Logo Programming Language. As a part of this, Turtle Graphics was a very simple way of teaching programming to children. It consisted of a robotic turtle starting at coordinates 0, 0 in the X-Y plane on a computer screen. With a command turtle.forward(20), the turtle would move forward by 20 pixels in the direction it was facing, drawing a line as it moved. To turn the turtle where it is standing, a command turtle.right(30) would make it rotate 30-degrees clockwise. By combining the two commands and a few others, drawing intricate pictures and shapes on the screen was possible.

Now, the Python standard distribution contains a module “turtle” that allows extending the re-implementation of Turtle Graphics. You can run this on your tiny credit card sized inexpensive single board computer, the Raspberry Pi or RBPi. The Python module tries to keep the same merits as available with Turtle Graphics and is nearly fully compatible with it. That means the learning programmer can use the same commands, classes and methods interactively, when using the module.

For example, if you want to find out where your turtle is at present, you can query it with turtle.postion(), and the turtle will respond with its current X & Y coordinates. Now you can command it to move forward or backward, turn right or left and even check its orientation. For a complete list of the turtle commands, look up module-turtle. Apart from moving in straight lines, you can command the turtle to move in a circle of a given radius.

The Python module turtle is a versatile program. Various commands make the turtle do different things. For example, you may want the turtle to move but without drawing any line. Another command can make the turtle leave a stamped mark at its current position. Yet another command can make the turtle invisible, and another can make it draw lines in the color you specify.

Since RBPi is for children who are starting to learn computer programming, the combination of Turtle Graphics and RBPi is a powerful way of teaching them the basics of robotics. The language used by the module turtle is very similar to every-day English, which makes it very easy for children to learn and use.

Children find it difficult to grasp the abstractions on which traditional Euclidean geometry is built. For example, how do you have a point without size or a line that has a length but no thickness? Young people find all this difficult to grasp. However, the turtle being a real concrete object can be seen and manipulated. Turtle geometry being body syntonic, is easily understood since the turtle moves about just as everybody does. That makes it easy to identify with and its actions are well understood by kids.
Seymour Papert has explained the rationale behind turtle geometry in his book Mindstorms.

Another very simple way of learning turtle graphics on the RBPi is through Kids Ruby. Overall, with Turtle Graphics you can teach absolute beginners the concept of storing algorithms and running them so that the computer will simply obey the given commands.

Drive a 16-Channel Servo with the Raspberry Pi

To drive servomotors micro-controllers must have PWM outputs. These are output pins on which the micro-controller will generate pulse outputs with controlled or modulated variable widths. Most embedded micro-controller units have one or more of these outputs. The famous single board computer, the tiny credit card sized Raspberry Pi or RBPi also has one IO pin dedicated for PWM. This is the PWM channel available at the GPIO18 of the RBPi and with this, you can drive a single servo at best. However, if you want the RBPi to drive more than one servo, it will need additional circuitry.

A PWM driver IC such as the PCA9685 can drive 16 servos at a time, but requires commands and data through its I2C interface. Fortunately, the RBPi can also communicate using the I2C protocol, enabling it to control 16 servos via the PCA9685. Adafruit has a very convenient breakout board with the PCA9685 on it and that makes it very convenient to connect to the RBPi. Not only can you drive servos with the PWM outputs, you can use the PWMs for controlling LED lighting as well.

To let RBPi communicate with the I2C protocol, it will require a special OS available from Adafruit. This is the Occidentalis flavor and it has all the libraries required for invoking I2C. However, if you are using the stock Raspbian OS, you must install the python-smbus and the i2c-tools using the “sudo apt-get install” command. To learn more about using I2C, refer Adafruit’s rather informative tutorial.

The two packages will allow you to search for any I2C device connected to the RBPi. The easiest way you can connect the servo breakout board to your RBPi is with the help of the Adafruit Pi Cobbler. Here, VCC is the digital supply for the IC or 3.3V, and V+ is the supply for the servomotors (typically 5V).

The actual chip that drives the servos, the PCA9685, needs 3.3V, and connects to the VCC on the cobbler board. Servos usually require much higher currents to operate. Therefore, they are powered from a separate power supply, typically 5V, and are connected to the V+ on the Cobbler. Note that this 5V is different from the 5V supply for the RBPi. The PWM operation on the servos creates a huge amount of electrical noise, which can cause the 5V supply voltage to fluctuate significantly. RBPi may not be able to tolerate such voltage fluctuations, and this may cause it to crash and lock up.

If you are driving many servos, it will be a good idea to add a capacitor to the driver board. There is a spot already marked for such a capacitor. As a thumb rule, you need a capacitor with a value n x 100uF, where n is the number of servos you are driving. Capacitors are manufactured in standard ratings, and you may have to go for the next higher standard value that you have calculated.

Depending on whether you are using a standard or continuous rotation servo, your python code will vary. For the actual code with which you can control the various parameters of I2C and hence the servo, you may refer to this site: https://learn.adafruit.com/adafruit-16-channel-servo-driver-with-raspberry-pi

Raspberry Pi add ons

Accessories have been flooding the market ever since the release of the tiny Single Board Computer Raspberry Pi (RBPi). Some of them merit a closer look because they can take your RBPi to the next level.

MotorPiTX board

For people interested in projects that need to run motors such as in robotics, the MotorPiTX board is a great accessory. It fits on top of the SBC and comes packed with some interesting features such as its own power supply (four AA batteries). This is enough to run the RBPi along with attached motors and servos. Full ATX style power controls are available, such as two 5V outputs (for LEDs), two bi-directional DC motor connectors, two servo connectors, two 3.3V inputs, one I2C breakout board and a micro-USB port.

A Smart IO Expansion Card

You can stack this add-on device atop the RBPi. As this is a super IO port, you can connect just about anything to it. There are 13 inputs for analog, pulse and digital signals, two analog outputs, eight digital outputs capable of 1A and ports for AHRS, CAN, RS485 and RS232. Apart from using it as an electronic test platform, the card can also be used for home automation, machine control, UAVs and robotics navigation.

The Pi Crust

This breakout board sits on top of the RBPi like a crust, allowing users to connect a multitude of devices easily. Rising only a scant 2mm above the RBPi base, the crust does not interfere with any other device connected to the RBPi. Pins are clearly labeled together, grouped logically together and include power, UART, SPI, I2C and GPIO. Female headers allow ease of connection along with plenty of GND and 5V pins.

SweetBox, Heat Sinks and ScorPi

SweetBox is a minimalistic approach to an enclosure for the RBPi and the smallest one in the market. It comes with a removable, flexible GPIO cap, allowing access to plug-in components. The SweetBox also has a set of anodized aluminum heat sinks that aid in extra heat dissipation. ScorPi is a flexible mount allowing the user to mount an RBPi camera, with direct plugin into the RBPi’s RCA port.

Power Supply Ignition Switch

This attachment allows using the RBPi with vehicles. It allows powering the RBPi through the electrical system of the vehicle. As you engage the vehicle’s ignition or turn it off, the attachment senses and powers the RBPi on or off safely. The built-in converter takes in 12/14V from the vehicle and provides 5V to the RBPi. Its ignition sensing talks to the SBC through two of its GPIO pins. The attachment retains power for the RBPi for 20 minutes after switch off. That means frequent stops will not repeatedly boot your RBPi. Additionally, if you left the RBPi running in the vehicle, the automatic shutdown feature will shut it off after four-hours to no-user activity.

HDMIPi HD Screen Prototypes

These are 1290×800 displays, which are not too expensive, portable and only 9-inch in size. You can watch movies comfortably, or incorporate into whatever project that needs a display. The cost-to-size ratio is perfect, competing successfully with the other portable screens in the market.

Different uses for USB flash drives

Almost everyone uses USB flash drives nowadays and the amount of data that these drives can store has increased tremendously. Typically, they can hold millions of pictures, thousands of songs and several HD movies. Although data storage is the primary function, flash drives have more to do beyond that. You may find the roles to be quite unusual:

Expanding SBC Storage

There are several Single Board Computers on the market today, with Raspberry Pi and BeagleBone being the most popular. Most come with limited amounts of storage in the form of SD, MMC and SDIO cards. Large capacity flash drives are a good substitute for expanding the memory.

A Secure Wallet for Holding Bitcoins

Nowadays, people financially endeavor to mine for Bitcoins and similar coins. Unless the data is securely held, this digital currency can be easily lost or stolen. If you are trading every day, an online wallet is fine, but if it is a savings account, it is preferable to secure the data offline in a flash drive, set up as a secure digital wallet.

Data Collection from an Embedded Host Controller

Nowadays, micro-controllers are available with host controllers that can use USB flash drives. Therefore, data logging and recording with such micro-controller based embedded host systems becomes simple as USB flash drives can be used to store data instead of a PC. That makes data recorders portable and simple.

Run a Website from A Flash Drive

Using automated templates and software, it is very simple to set up a website or a server running on a PC. However, if you want the site to be portable while allowing for changes and updates to it, put it on a USB flash drive. Of course, you may need some additional packages such as Server2Go, WAMPP and PHP 5.x.

Enhancing a PCs Virtual Memory

That one can boost the capabilities of aging PC systems by adding more RAM, is common knowledge. However, in most cases, RAM has already been added to the maximum possible capacity and no further addition is possible. Adding a USB flash drive and using it as extra virtual RAM is very simple for Windows users.

Carry Your OS and Apps with You

With the dramatic increase in the capacity of flash drives, you can conveniently carry your OS of choice and your apps wherever you travel. Along with the OS, you can carry diagnostic tools, virus scanners and different games for testing and repairing computers without installing anything on them.

Lock and Unlock A PC

If you have sensitive data on your networked PC, there are many ways perpetrators can access the system physically and bypass the system password. However, security software such as USB secure or Predator combined with a USB flash drive can keep your system from being hacked into.

Users need to attach the USB flash drive and enter the password when starting the system. The PC checks the presence of the drive every 30-seconds, and if it does not find the drive, it simply goes into lockdown.

BrickPi to Turn Your Raspberry Pi Into a Robot

It is easy to turn your tiny Single Board Computer, the Raspberry Pi (RBPi), into a robot. All that you need is a BrickPi board and a case that will fit onto your credit card size computer and make it capable of accepting inputs from sensors, to running motors and other parts. With the BrickPi, you can drive up to four EV3 or NXT motors and five sensors. A 9V battery powers the board and drives the motors and sensors, including the RBPi. While the sturdy case that holds the RBPi, has holes that can snap in LEGO parts, the LEGO Mindstorms’ BrickPi board untethers your RBPi from the wall outlet.

For programming the BrickPi, you have a choice from among three languages – Python, C and Scratch. If you need information on using these languages, visit the github site. It includes examples and drivers as well, including several projects that setup the BrickPi and demonstrate its use. The projects involve demonstrations of controlling the robot with web services such as Twitter, SSH and other web pages. Apart from the program listing for running these projects, the site includes Bill of Materials for the LEGO parts that the robots will need to use.

While the BrickPi controls the sensors, the LEGO motors and the new EV3 motors, the RBPi, in turn, controls the BrickPi. You can power the BrickPi with an on-board 9-12V battery pack, which will also supply the RBPi, the sensors and the motors. The design of the BrickPi is entirely open-source, so anyone can see the design and other details of the firmware design.

Creating a robot with the RBPi and BrickPi is indeed challenging, but not too difficult, since there are plenty of examples and drivers available. Once you have mastered the basics, you can progress to the more advanced creations. Using the LEGO elements makes the job even simpler and you can simply watch your computer come alive.

The BrickPi, controlling the four servomotors, offers precise control over the robot, ensuring that the robot moves with precision. The built-in rotation sensors can measure steps with on-degree accuracy. Among the other sensors is an ultrasonic sensor, to allow the robot measure distances and avoid obstacles. Two additional vision sensors allow the robot to sense and detect movement.

The BrickPi even has two touch sensors, with which your robot can pick things up on command, since they can detect when they are releasing or pressing something. For example, the touch sensor, when pressed, can allow your robot to talk, walk, turn off your TV or close a door. In addition, the included color sensor can be used either as a color lamp, distinguish light settings, detect black and white or distinguish a range of bright and paste colors.

Overall, the clever design elements in the BrickPi score an excellent rating. Users will enjoy the way it brings a new level of interaction to their experience of using LEGO parts and will appreciate the easy way of creating their first robot. The simplicity of building any robot from the cool hardware encourages inventive play.

VPN Server with Raspberry Pi

In almost all airports, hotels, libraries, schools and restaurants, there is a proliferation of free unencrypted wireless access points, which are easily accessible to all. Additionally, with the spread of mobile devices, getting on the internet is no longer confined to the office or the home. Usually, a high number of users share the same open access point. Although this arrangement is very convenient for the users, it is also favorable for the snooper with the skills and intent to invade into others’ privacy and collect internet traffic for nefarious purposes.

Security professionals cry themselves hoarse while preaching restraint when it comes to using free/public wireless access points. However, for users wanting to access their office via the Internet, other than waiting to get back home, very few alternatives are available that are practical, free to use or at least almost free. However, the situation can be easily rectified with an inexpensive Single Board Computer, the Raspberry Pi (RBPi) in conjunction with the freely distributed OpenVPN software.

Offices/homes (SOHO) usually have a private network, which remote devices such as tablets and mobiles access through a typical Remote-Access Virtual Private Network (VPN) configuration. The mobile (the client) must authenticate itself successfully and the VPN server then establishes an encrypted tunnel. Now all traffic between the server and the client via the Internet will be securely routed to the private network through this tunnel, simply as if the mobile (client) had connected directly into the network itself. As the traffic is encrypted, anyone listening in will not be able to decipher the content, and the communication remains safe.

Such an arrangement as described above is very easily implemented with OpenVPN, which is an open source VPN implementation that was developed by James Yonan. OpenVPN is a highly customizable solution and supports a huge range of capabilities and options, including the most relevant five:

• Authentication and encryption ensures privacy
• Protection against Denial of Service and zero-day vulnerabilities
• Protection and privacy through proxy
• SOHO network access
• Broad device supports

OpenVPN was created for ensuring privacy, authentication and encryption, which it does via implementation of SSL/TLS concepts. Two encryption modes are used: Pre-Shared Key and TLS. Pre-shared key concept uses static keys that must be generated and shared with all devices for authentication, to establish and encrypt the secure VPN channel. This arrangement is more like a single lock with multiple users, each holding a key. TLS is a more secure arrangement with private/public key pairs.

To defend against Denial of Service or DoS attacks and Zero-day vulnerabilities, OpenVPN implements a variant of the HMAC key protection. Use of proxy disallows sites such as Amazon, Google or Facebook to establish the VPN client location since they are solely based on the IP address. This provides additional protection for the mobile device, since the Internet traffic is routed through the SOHO network. SOHO networks usually deploy additional boundary security, such as IPS, and this protection is extended to the mobile device when it connects through the VPN.

The OpenVPN service provides secure access to the resources available on the SOHO network without opening extra ports through the firewall. The device support is broad and covers Windows, Mac OSX, Linux and Android. For implementation on RBPi, more information is available here.

A water cooler for the Raspberry Pi

Although the tiny Single Board Computer called the Raspberry Pi (RBPi) is mainly to teach the young kids how to code, several people are now hooked onto it and are executing extraordinary projects with it. Like other CPUs in regular computers, the RBPi can as well be overclocked and run in a turbo mode. Last year, the Pi Foundation, originators of the SBC, added the turbo mode and clarified that this will not void the warranty. Therefore, you can safely apply turbo mode when the RBPi is busy, limit turbo when the core of the RBPi (the BCM2835) reaches 85°C. By doing so, you will not be reducing the lifetime of your SBC.

Phame, from London, wanted to use more of the turbo mode without limiting the RBPi in any way. His immediate concern was to keep the BCM2835 cool. His motivation came in the form of a competition for building a new case for RBPi. That set him on the path of water-cooling the RBPi using a carefully designed case suitable for the purpose.

Phame went on to make a water block that sits on top of the RBPi’s CPU, LAN controller and some of the other components. Two pipes lead from the water block to a radiator filled with a coolant, circulated with a tiny British micropump. The radiator is a large aluminum tank, roughly 98x70x17 mm, containing more of the coolant. The entire rig sits in a frame and the pump draws its power from the RBPi. Phame custom made the frame, water block and the radiator, including the custom etching of the Pi logo on its interior.

The contraption works via convection, the process by which hot liquid rises to the top, to be replaced by colder parts of the liquid. As the CPU and other parts of the RBPi start to get hotter when run in turbo mode, the temperature of the coolant inside the water block that is in contact with the chips also rises. The hot liquid moves towards the upper part of the water block, and colder liquid flows in from the radiator below. By itself, this process would have sufficed to keep the temperature of the hot parts in check, but Phame added a pump to accelerate the coolant flow.

The micropump circulates the coolant between the radiator and the water block. Therefore, hot coolant from the water block moves on and colder liquid replaces it, thereby effectively removing the heat from the CPU and other parts. The hot liquid passes into the radiator, where it transfers the heat it is carrying into the aluminum. As a large surface of the aluminum radiator is in contact with the air outside, the heat is radiated into the ambient. Phame has gold-plated the internal surface of the aluminum radiator, so that the coolant in contact cannot corrode the surface.

You can see the rig in operation in this video. The only thing that Phame has not declared is whether he has operated the RBPi with the water cooler in place. It would be nice to have some temperature readings.