Tag Archives: Raspberry Pi

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.

Add-On Board on Raspberry Pi Can Control Entire Building

If you thought that the tiny credit card sized single board computer, the inexpensive Raspberry Pi or RBPi was only good for home automation and no more, you may be surprised to learn that it can do a lot more – control an entire building, for instance. Of course, it will need assistance in the form of an add-on board, such as the UniPi.

Very often, people have used the RBPi for automatically controlling their sprinkler systems, the lighting in their house or even for guarding their homes while they are away on a holiday. Commercial systems have often used the RBPi as a prototype. A Czech startup with the same name, the UniPi, is now offering a baseboard and an add-on board for building automation that you can use with your RBPi.

The RBPi plugs into the UniPi baseboard via its 26-pin expansion connector. With this combination of the UniPi and RBPi, you can control the entire functions of a modest sized building. For example, it can read signals from different sensors such as humidity, temperature and/or status of alarms and switches to control gates, sprinklers, curtains, doors, lights and more.

To help with the sensors and control, UniPi is also offering a passive sensor hub that comes along with a free temperature sensor and an optional waterproof temperature sensor, should you need one. The UniPi baseboard has 14 opto-isolated digital inputs that can read sensor signals from 5 to 20V and show the status with LEDs. The board can read 0-10V signals on two analog inputs and output 0-10V on another analog output. On-board is a 12V power supply, along with eight changeover relays, which can switch 5A at 230VAC. That makes UniPi adequate for controlling power to sensor devices for an entire building.

For reading sensors, the UniPi is equipped with a single-channel 1-Wire interface. That makes it convenient to connect hundreds of humidity and temperature sensors. UniPi even allows the second I2C port of the RBPi and its UART to be extended with 5V level converters and provides ESD protection for them. Power loss does not affect the timing of the board as it has an RTC or real-time clock module for keeping time. UniPi is compatible with the RBPi model B Rev2 and it is possible to configure it for the Rev1 model as well. However, UniPi does not mention the possibility of compatibility with the latest model of the RBPi, the 40-pin model B+.

On their website, UniPi offers numerous tutorials based on C/Python libraries for people wanting to develop UniPi applications on the Linux-based RBPi. For example, there is the Webiopi, which is specifically useful for connectivity with the Python Internet of Things. Additionally, there is the Wiringpi library for GPIO interfacing and other libraries for Adafruit.

UniPi is offering its baseboard with on RJ45 connector for the 1-Wire interface and two RJ11 connectors – one for the UART and the other for the external I2C. It has one P1 header and another P5 header along with a 2.1mm standard power connector and an RBPi power jumper.

Add a Real Time Clock to Your Raspberry Pi

The Linux-based credit card sized single board computer, the Raspberry Pi or the RBPi is designed to be low-cost and of small form factor. As such, many features that are available on normal computers, but considered superfluous here, have been left out. The real time clock is one among them. That makes the RBPi unable to keep time when its power supply has been removed.

Typically, the RBPi is expected to be connected to the Internet via the Wi-Fi or the Ethernet and to update its time automatically from the Network Time Protocol servers available globally. In the absence of an on-board RTC, when there is no Internet connection or when the power to the board is removed, the RBPi is unable to keep time. However, that can be easily rectified by adding a small RTC module running on DS1307 and a tiny coin battery. This allows the RTC to continue to keep time even when the RBPi does not have power supplied to it.

To make things easy, use Adafruit’s Breakout Board kit for the DS1307 RTC. This kit already has all the parts required, including the coin battery. Although the components can be purchased separately and assembled on a breadboard, the coin battery holder can pose a problem, as it is not breadboard-friendly. The kit on the other hand, has a dedicated place for the battery holder, making it more convenient to use.

To allow the RTC chip to communicate effectively with the RBPi, the two 2.2KΩ resistors on the kit must be left out. There is no need for these resistors since the RBPI already has two 1.8KΩ resistors on-board and they are connected to the 3.3V supply, as the RBPi needs them to be. Therefore, either do not solder the two resistors to the breakout board, or, if you have already soldered them in, remove or clip them out. The breakout board needs 5V, so connect the VCC on the board to the 5V pin of the RBPi.

Now, you will need to set up the I2C interface on the RBPi. For this, your RBPi must be running a kernel that includes the RTC and DS1307 modules. The latest version of the Raspbian OS already has the modules included, but older versions may not have them. Adafruit has a wonderful tutorial that will guide you for setting up and testing I2C on the RBPi, check it out here.

At the command line, you can run the command “sudo i2cdetect -y 0” to check your wiring. If you have a rev2 RBPi, enter the command “sudo i2cdetect -y 1”. Once you see ID #68 being displayed, you know that your wiring is correct, as this is the address of the DS1307. Once you get the kernel driver running, i2cdetect will show UU instead of 0x68, further confirming that everything is good.

The next step is to load up the RTC module and set it up as root. Follow the tutorial for doing that and you can check the time with the command line “sudo hwclock -r”. If you are using the module for the first time, the date will be Jan 1 2000 – set it to the current time, and you are done.

Use Apples as Switches for Your Raspberry Pi

You may rightly question the logic behind using apples as switches for your Raspberry Pi, as against the usual hard plastic ones. Well, for one, we live in an analog world and there is much more fun in integrating items of daily use with your computer. For another, it pays to see the look of astonishment on someone’s face when picking an apple from a basket, if the computer were to reprimand him.

The tiny credit card sized single board computer, the ever-popular Raspberry Pi or RBPi can sense inputs with capacitive touch breakout boards. This is the basics of using several household objects as input sensors for the RBPi. You can use any conductive object, not only an apple, such as pencils (the graphite part), spoons and potatoes including any other fruits or vegetables that you may find handy.

Capacitive touch sensors detect the tiny amount of electric charge every human body carries. The breakout boards have a pad that is sensitive to touch. You can extend this pad to any object by attaching a wire, allowing the object to develop a sensitivity to touch. You will of course need to inform the RBPi of your intentions and to do that, put in some effort in programming it. Get help from this website.

With the hardware above and a few lines of Python, you will soon have a new way of controlling your projects and games that is fun and easy at the same time. There are three types of breakout boards that you can experiment with.

The first type is the momentary capacitive touch sensor. This detects as long as something continues to touch it. The sensor has an LED that glows when anyone touches the pad and remains lit until it detects the end of touch. This breakout board has a large touch-pad and a small copper hole near it. You can solder a piece of wire to the hole and extend it to a capacitive item such as a drawing you have made with pencil (graphite).

The second type of breakout board is the toggle type of capacitive touch sensor. The LED on the board comes on as soon as you touch its pad. The LED remains lit up even when you lift your finger off the pad. The LED will go off once you touch the pad again. Therefore, when you solder a piece of wire to the hole near the touch-pad and connect its other end to any conducting item such as a spoon, you can easily detect if someone has touched the spoon at least once.

The third breakout board is the most versatile of the lot. Surprisingly, it does not have any touch-pads, although it is named as a 5-pad capacitive touch sensor. Instead, it has five copper holes, so that you can connect five objects with five pieces of wire. Therefore, if you have five different fruits or vegetables, you can connect them up and the RBPi will help you to chart their individual responsive speeds against touch.

While the two boards will both need a 10K resistor each connected between the object and the board, the 5-pad touch sensor board does not require any resistors, as it has them on-board.