Selected Arduino, Raspberry-Pi and General Electronics Projects
Besides some great projects, there are also summaries of meetings and classes included on the Electronics page.
8-bit Home Built Computer
TTL Logic Computer
Simplest Form of a functional Computer
8-BIT COMPUTER BREADBOARD
If you want the challenge of building your own 8-bit computer from TTL logic chips, this is a great project. To properly
understand how it works, review the other projects here that describe how the fundamental logic gates work, since they are
what you find in any computer to provide logic, memory, and control of a central processor or arithemtic logic unit (ALU).
Linear Feedback Shift Registers
Arduino Controlled LFSR
Encrypt message via LFSR and decode with XOR gate
LFSR - USING ARDUINO
This project is best described in the video referenced below, but the gist of the project is to further investigate
the use of shift registers to do digital work. Here we provide feedback for a 24 bit shift register from four Q-outputs along the way
that define a bit stream that has been optimized for length by this selection. The bit pattern doesn't repeat for 16,777,215 clock
cycles. This gives us room the blend a digital message with an XOR gate. This in affect encrypts the message into the bit stream.
If another LFSR arranged the same way is used to blend it's output with the encrypted message input, only the message emerges from
the XOR gate. Thus if the transmission is separated from the receiption an effective encryption transmission can be realized.
Custom Serial Interface
Arduino Controlled Serial Interface
8-bit input read into an Arduino. Serial output to shift register back to 8-bit LED Display
SERIAL INTERFACE - USING ARDUINO
Software Monitor Motor Currents
Using a stepper motor and current monitor
Measuring current is challenging, because the meter is in series with the circuit and currents can vary wildly.
CURRENT SENSING - USING ARDUINO
Py Board - the next Arduino-like Super Board
Python has become an OS
Damien George has pulled apart Python and sewn it to an ARM Cortex M4 processor on a tiny but powerful new microcontroller board called the PyBoard. There is a nice Class (like Arduino.h) that gives you access to all the M4's I/O and internal features like I2C, SPI, ADC and DACs!
PYTHON OPENS DOORS - GARAGE DOORS
Abstraction - the mystery behind computing
Hardware + Code = What does it really do?
Sometimes it's good to re-look at how all this computer stuff got started, and that means getting down into the grit of digital logic, combinational logic, good old logic gates. While there, you realize that to use this technology, an abstraction of what it means has to be created. This is what led to specific hardware being pieced together to form adders, branching, comparison logic, memory addressing, and host of activities that are orchestrated using software programs to move beyond mere sequencers or "hard-wired" functionality to become a computer. To illustrate this, I made a few circuit boards you might find fun and useful. Let's look at a few.
DIGITAL LOGIC GATE POWER
Although, using an Arduino to manage
circuit electronics can enhance what I'm about to describe here, most of the following concentrates on TTL or CMOS dip-package chips, which
are small bundles of gated logic arranged to do specific jobs. These chips are still the backbone of prototyping electronic projects,
some 40 years after EE's first started piecing together what quickly exploded into the computer age. What surprised me is the parts I first
used as a young engineer are still being made in abundance and are fun for the hobbyist where most parts are sub-microscopic and hard to
use. DIP packages are large enough to build up without a lot of fuss and have all the functional power you need to run some very complex
projects. I yield to the fact that once you know what you want to do, using parts that compress all this logic power into small packages,
like the typical microcontroller, makes a lot of sense, yet many functions are still better suited to be built up as separate running pieces
of your project. Microcontrollers in conjunction with TTL logic is one step below pushing all your logic into a FPGA and placing the whole
circuit inside a postage stamp sized area. Most of us can't build such tiny devices, but using DIP chips and a breadboard, we can do a
lot and not loose any computing power.
RFID Door Opener
Electronically open a door with a fob
Access security is not only a data problem, but access to a building also needs to be protected. Electronic enter can be a fun project. I needed to change out an old side door on my garage, so I decided to use an RFID reader to gain access.
MORE ABOUT the RFID project
From the picture on the right,
you see the yellow button that's used on the inside of the door frame to open the door going out. Next is the striker plate with the
solenoid latch. Then the box that can be accessed from outside the door. Notice the two LED holes and a fob. The left LED is red and
is on when you approach the door. If your fob is read, the green LED on the right lights and the red goes out for the "unlatch" time,
which you can see from the code is currently 2 seconds. Then on the right is the wall-wart 12VDC power supply. It not only powers the
latch, but is also fed through a polarity protection diode to VIN on the Arduino board, which is regulated down to 5V for the Arduino.
4WD Cart with Ultrasonic Steering
Autonomous or BT Steering of a SainSmart Cart Kit
I purchased this kit from SainSmart as a small platform to add various sensors and not be unwieldy indoors in a small room. I built up the Wild Thumper vehicle (see project below), but it has to be taken outdoors and requires a GPS connection and software running on a laptop to coordinate moves. This small cart is a way to develop software to use BT or some other wireless comm to control a robot. This design also has an autonomous mode where the ultrasonic sensor in the front provides obstacle avoidance maneuvers.
MORE ABOUT the Cart
When you pop open the top
plate, you can see the yellow colored motors. There one on each wheel, but they are wire in pairs, one pair on the left and one pair on
the right side, so turns are "tank-like." In fact, using a tank tread would be a good alternative drive. The kit can with minimal information
on how to hook it up or how any of the boards worked. The only wiring provided was basically useless, since it was so thin. The cable to
the ultrasonic sensor was fine. It took a while to figure out where to place the Arduino Mega and there were no mounting hardware in the kit.
I used nylon standoffs for the most part. The L298 H-bridge board is mounted to the bottom plate on 1/4 aluminum standoffs.
LCD Power Box
+12/+24V Pwr Supply Controlled via LCD Display
I needed to control two power supplies used for stepper motors or DC motor projects. I wanted to monitor the current each supply was using and maybe add a trip-point alarm. These spec items dictated using a microcontroller. I had a discarded panel with an LCD display and a 20-key keypad and a nice switch. I decided to use an Arduino Mega to handle all the I/O that was adding up. It all came together nicely, but the software was more complex than I had anticipated.
MORE ABOUT LCD_Pwr_Box
The 20-key pad posed a big
problem for any Arduino due to pins required and code loading to decode the keys. I found a decode IC(74C923) boiled the pin-out down to
5 pins plus another to use for an interrupt (6 pins). The LCD display took 7 pins, because it is a 4-row device. I used 5 LEDs in the
design, so that's another 5 pins. Two analog pins to read the current sensors. So you can see an Uno would not work.
Balancing robot a la Seqway
The Balanduino came as a kit. It is power by a 11.1V LiPo battery and can be controlled via Bluetooth.
MORE ABOUT Balanduino
The heart-brain of the
Balanduino is the circuit board that contains all the electronics including an ATmega1284P CPU, motor drivers, Bluetooth, USB, IMU, and
a piezo buzzer. The IMU is 3-axis of acceleration and 3-axis rate gyros. The two DC motors are geared down for high torque and each has
a quadrature encoder to close the hardware loop in software. There are a couple of headers on the board so you can add sensors or drive
digital I/O normally found on an Arduino that's not being used by the Balanduino. The board has a reset button and several status LEDs.
Working station for the Raspberry-Pi
This project provides a platform to develop Raspberry-Pi projects. The monitor is from a tablet device that was abandon in design freeing up this display. The keyboard and mouse are a Bluetooth combo. Since the RP only has two USB ports, I added a 7-port extension. The second USB on the Pi is where I connected the Bluetooth dongle.
MORE ABOUT Pi-Stand
The Raspberry-Pi board is
attached to the back of an aluminum plate that also has the LCD display attached to the front side. The platform stand comes from a
piece of aluminum I found in a junk yard with those nice arms with 45 degree angle brackets on them. It just had the look of something
I could use in the future. It worked perfectly for the Pi-Stand. Notice the USB extender box on the left arm. The LCD display has two
boards associated with it. The larger one mounted on the bottom plate of the stand controls the video and distributes power. The small
strip I attached to the right arm is there to adjust the display parameters like brightness, color, etc.
Balancing Ball PID Machine
Closed loop with a ultra-sonic sensor - Ball Balancing Beam
This project provides a platform to practice closed loop position, integration, derivative feedback solutions.
The sensor measures the distance to a ball sitting on the beam, which can be lifted or lowered by cam action tied to a servo motor. The servo travel is limited to the peak elevation and similar negative angle to make the ball roll back and forth.
MORE ABOUT PID Machine
The beam is a custom
design with a pivot point at one end and a lift cam at the other. The various parts were
selected from spare parts and happen to be close enough to do the job. The beam came from a traffic camera mount I found in a junk yard.
the pivot is a couple of skate board bearing held in place with a conduit clamp. The pivot axle is a 1/4 bolt cut off to fit in the
aluminum brackets I found in a junk box. Once the servo motor was mounted, the cam was drawn out to lower the end below level and raise
the end by a similar amount. The cam is cut out of plastic from a old scanner bed lid. The first attempt didn't have the span needed, so
an addition was added. To make it symmetrical, two copies were made and place on either side of the original cam. You and see this in the
Sumo - Pololu Zumo Fighting Bots
Zumo Bots - Sumo Ring Competition
This project emulates the Japanese art of Sumo wrestling with small bots.
There is an official ring you make for two bots to battle. Each bot has a max size of 10cm x 10cm.
MORE ABOUT Zumo bots
The Pololu company makes a wonderful little bot with lots of features.
The best time to buy is near Christmas when the price is much more reasonable. But they do a lot. Included is a piezo speaker
and extensive sound control, accelerometers to detect hits and tilts, a compass to make calibrated turns, six IR sensor in a
row for detailed line following or edge detection, and a battery pack underneath. You attach your own Arduino Uno, add batteries,
and then select the software from several sketches available for starters. You can customize from there. In my case, I added this
IR senor and modified the code to include it.
Computer Pwr Supply - Converted to Project Pwr Source
ATX Type Supplies - Intel Spec'd
Most all of these supplies are physically and electrically the same.
We can take advantage of this by placing the ATX chassis inside a standard Bud-box to preserve the AC pwr plug, fuse, and switch on the original chassis. There is a nice fan included as well. Read the Intel spec on this type of supply to get the details on how to make it work.
MORE ABOUT ATX Conversion
After reading the spec, it is clear that you have to add some sort of resister to load a
keep-alive 5V supply that is sensed by the logic circuit of the ATX.
Stepper Motor Drive - Bipolar
Based on L297 and L298 Chips
The L297 chip provides steering to the H-bridges in the L298 chip. It also provides current limiting control to make the system more efficient by reducing the hold current at idle and capping the current when loaded.
MORE ABOUT Motor Controller
The board was hand soldered according to information on the Texas Instruments site and the chip spec sheets.
Use DTMF Telephone Call to Control Appliance Switches
Touch-tones from remote location turns on and off local circuits
Use a 16 button keypad to send DTMF over a phone line to be detected at the other end. The tones are decoded into a 4-bit binary code that an Arduino Uno uses to control access to eight TRIAC switches capable of switching 120V at 15 amps.
MORE ABOUT the Switcher Project
I found, before diving into this project, that telephony is more complex than one would think. Here is a list of things this project
Wild Thumper Vehicle - Autopilot Rover
ArduPilot on-board and Arduino based motor controller
Six wheel, each with its own motor, driven by 8Ah battery at 7.4V. Used a Spektrum DX8 RC model transmitter to drive the vehicle. Differential control for left and right by mixing the turn value with the forward or reverse value.
MORE ABOUT ArduRover
The motors have a 1:75 gear reduction, which gives the vehicle a lot of torque, but the current goes up rapidly.
The battery pack is hand made consisting of six 3.7V, 2600mAh, LiPo cells stacked in two rows and three columns. Two cells are
end-to-end to reach the 7.4V in each column. Total power is three times the current of just two cells alone.
Ethernet Shield - Browser Control of Arduino Board
LEDs and Tone Freq Turned On and Off Remotely
This is a fun project to establish the skills to reach your Arduino from anywhere on the Internet.
MORE ABOUT Ethernet Shield
A SainSmart Ethernet Shield is placed on an Arduino Uno that matches the standard shield from Arduino. A
IP address is established on a local network by your house modem/router. The router software also establishes an IP address for
your Arduino board that can be reached from the WWW. The Arduino sketch issues a HTML page to a browser using this address that
has command buttons on it. The commands are sent back to the Arduino via HTML FORM protocol and activate some LEDs and a tone
from a speaker.