Tuesday, September 27, 2016

Raspberry Pi vs Arduino

Oh My!  It has been over 4 months since my last post and some readers may be thinking that I have fallen off the planet. Not quite, but I have been very involved otherwise. Real life is intruding a lot lately and most of my hobby time has been absorbed in supporting the local maker group with teaching robotics to kids.

The robotics has gotten me very involved using Arduino systems which I had little experience with previously. That got me to thinking that a comparison of Arduino to Raspberry Pi would be good at this point.

Microcontroller vs General Purpose Computer

This is the big difference in the two. The Pi is a fully fledged general purpose computer capable of performing most of the tasks that a PC performs. It has a complete operating system, much more memory, a storage device, and a monitor and USB devices are supported. The Pi can easily multitask, running several programs at once. It also has excellent networking support, both wired and wireless.

The Arduino is a microcontroller. It has only a small amount of memory (2K RAM and 32K Flash) and runs a single program. This allows it to provide true real-time response. There is no USB support and adding networking is difficult and very limited. The advantage is that it starts up as soon as power is supplied and won’t be corrupted if power is lost. It also uses far less power and can easily run on batteries. An Arduino will happily run on 7-12 volts while the Pi must have a regulated 5V supply.

GPIO Capabilities

This is where the Arduino really shines. The Raspberry Pi provides 28 GPIO pins, but only one that provides PWM output and none that provide analog input. The typical Arduino also has 28 GPIO pins, but six of those can provide PWM output and another six can be analog inputs as well.

The Pi provides RS-232 as well as I2C, SPI, and 1-wire buses. The Arduino supports these as well.

Form Factors
Example Arduino Boards

If we ignore the original version of the Pi (which I tend to do now) there are only two form factors available – the model 2 and the zero.  The Arduino, however, is open-source, and comes in many sizes. The Uno is by far the most common, but my preferred version is the nano. I have also become quite fond of the ESP8226-01 Arduino compatible board. It may only have 2 GPIO pins, but it is extremely cheap, low power, and has built in wifi. I am starting to use it for IoT projects with great success.

Which to Choose

There is a fair amount of overlap in the capabilities of both systems, so many tasks could be performed by either device. However, there are some things that at best done with one or the other.

If you need:

  • More than 2KB of RAM
  • A very large program or multiple programs
  • A network interface that can handle multiple clients or support more than one protocol
Then you should use a Raspberry Pi.

If you need:

  • True real-time response to inputs
  • Analog inputs 
  • PWM output for motors or servos 
  • Extremely low cost solution
  • Battery powered

Then you should use an Arduino.

Yes, you can get analog input and PWM output on a raspberry Pi, but it requires additional hardware, which adds to the cost and complexity.

Sometimes you need the best of both worlds and will use a Pi and and Arduino. I have done this on one commercial project already and it worked very well.

Friday, May 6, 2016

Kano Kit

I recently received a Raspberry Pi 3 kit from Kano (kano.me) and thought I should give it a review.
The kit includes:
      ●  Raspberry Pi model 3
      ●  8GB microSD card preloaded with Kano OS, projects and games
      ●  Wireless keyboard with touchpad
      ●  Case with built-in speaker and LEDs
      ●  HDMI cable 
      ●  Power supply and cable
      ●  Wifi adapter
      ●  Illustrated user guide with stencils and stickers

The cost is $150 and as you would expect for that price, the quality is very good. I especially like the keyboard. Since this was a v3 Pi, the Wifi adapter was redundant, but that's OK - it will get used on another system. The documentation provides a detailed and illustrated, step by step guide to setting up the system, It is suitable for a very young user and that is obviously the target audience for this kit.

The cover to the case has a small speaker that doesn't appear to be amplified. There are, however, a couple of PCA9685 chips that are connected to the I2C bus and allow control of the LEDs using PWM. I will create some code to experiment with these and see what they're capable of. It would be really nice if the LEDs were RGB, but they appear to be simple blue LEDs.

Monday, February 29, 2016

Hot Tub Controller Details

By popular demand - some more details about my Hot Tub Controller project.

See the post about my Hot Tub Controller.

Controller Source Code
Can be found on github - https://github.com/tedhale/hottub.git
You can pull it from this address using the git command, or just go to this address and click the "Download Zip" button.

[Add web interface source files]

Partial parts list:
I will update this as I dig up the details for more of the parts I used.

Waterproof Case with clear cover - https://www.adafruit.com/products/905

7-Segment LCD (I2C bus) - https://www.adafruit.com/products/761
There are many colors and a couple sizes

Pushbuttons  - https://www.adafruit.com/products/481
Several colors available. They don't call these weatherproof but they seem to be pretty weather tolerant.

30A Relay (5V control) - http://www.mouser.com/Search/ProductDetail.aspx?R=JTN1AS-TMP-F-DC5V

10A Relay (5V control) - http://www.mouser.com/Search/ProductDetail.aspx?R=G5CA-1A-TP-E_DC5

Waterproof Enclosure - http://www.mouser.com/Search/ProductDetail.aspx?R=1554E2GY
for relays inside hot tub

Cable Gland (for running cable into waterproof box) - https://www.adafruit.com/products/761

2n2222 transistors

Terminal Blocks

Perf board

40 pin GPIO connector - https://www.adafruit.com/products/1979

The Raspberry Pi version 3 is now Available

The latest version of the Pi is out and as expected, it has a faster CPU. Version 2 had a 900MHz Cortex-A7 chip. Version 3 has a 1.2GHz Cortex-A53. Still quad core and a little faster, but the big difference is that the A53 is a 64-bit processor where the A7 was 32-bit. We will have to wait for an OS upgrade to take advantage of that, but I doubt having 64-bit will make much difference for most applications.

The really great upgrade is that version 3 has built in wifi (802.11n) and Bluetooth.

I should be receiving one shortly and will let you know what I do with it.

Here is some information provided by RS-Components, a great source for all things Pi.

How to set up your Raspberry Pi 3

Comparison of Raspberry Pi 3 and the Raspberry Pi 2

Fancy another slice of pi? Find out more about the Raspberry Pi 3

Tuesday, February 2, 2016

Improved Hot Tub Controller

Hot Tub Controller Circuit Board
The original version of my hot tub controller starting having some problems which ended up being caused by an animal chewing through the control cables. I never liked having that huge bundle of cables running all the way across the back of the house, so I now have a new controller in a waterproof enclosure mounted right next to the hot tub.

The controller is built to mount on top of a Raspberry Pi and does the following:
   ●  Monitor the water temperature
   ●  Turn a circulation pump and heater on to heat the water as needed
   ●  Respond to buttons that increase/decrease the desired temperature
   ●  Respond to buttons that turn the water jets on and off
   ●  Display the current temperature
   ●  Detect various failure modes and place system in safe mode
   ●  Listen for commands from a smart phone app to control hot tub
   ●  Upload data periodically to an Internet of Things service

Temperature monitoring is performed by a waterproof DS18B20 from Adafruit. It uses a simple 1-wire bus to read the data.

The display, also from Adafruit, is a 7-segment LED display and is controlled using an I2C bus.

The device is powered by a 24V DC power supply since the relays on the hot tub are controlled by a 24V signal. A 5V step down regulator provides power to the Raspberry Pi.

Relay Control with LED Indicator
Transistors are used to control the relays and screw terminals provide the connections for all the wires.

The push buttons are connected to GPIO inputs which drive interrupts. These require "debounce" conditioning and this is explained in this post.

Smart Phone app for Hot Tub

The Internet of Things support is using ThingSpeak and the method is described in this post. You can see the live data at this URL.

The system also listens on a network socket for incoming commands from a smart phone app that allows me to monitor and control the hot tub remotely. It's actually not an app, rather just a web page designed for a mobile screen. This way it can easily be used by my Android, my wife or son's iPhone, or from any web browser.

Here is a video showing the completed controller in action. 

And, yes, I really do keep my hot tub that hot. One advantage of making my own controller is that I am not limited to 104 degrees max.