For years I have enjoyed watching hummingbirds come to the feeder just outside my window. Their antics are amusing. They can be feisty little birds when they try preventing other hummers from using "their" feeder.
My curiosity has had me wondering how much they eat, how much they weigh, how fast they fly, and recently, how often they come to the feeder.
I have been working with some Computer Vision software and decided to try and count hummingbirds using software and a USB webcam. I chose to use Python 2.7 and OpenCV 2.4, originally planning to use my new Raspberry Pi 2 as the host.
I've not yet gotten satisfactory performance from the Pi. I suspect it is the USB webcam driver that is causing the problem. In the meantime, I've switched over to Windows 7 with JetBrains PyCharm as my Python IDE.
At this point I am using a two step process to count the birds. First I use a simple Python program to access the webcam and record an .avi video of the feeding birds. I use the mouse to start and stop the recording as birds come and go. A second program scans the .avi file using some simple OpenCV functions to determine when a bird approaches. Each approach is counted and displayed on the screen along with a frame count.
Take a moment and watch the video listed below. In it, a new hummer approaches the feeder for the first time trying to figure out just where the food is.
** Source code can be downloaded from here: ViewAVI.zip
For this project I used OpenCV to establish frame by frame reference points for hand shot video of multilane vehicle traffic. At this point of development, the color video is read from a file and processed to track reference points from one frame to the next. Color overlay shows frame number, reference point rectangle location (red) and orientation (green).
For Each frame is first converted to gray scale and filtered. Next Canny edge detection finds edges within a range of sharpness determined by two track bars.
After the edges are detected, they are then used to find contours. The contours are used to find the minimum area enclosing rectangles.
Finally the length, width, and orientation of the rectangles are used to identify the frame reference points.
As I get time I plan to develop additional code to count the vehicles and determine their approximate size and velocity
Impedance Matching is talked about in connection with radio frequency circuits. How is matching accomplished and why is it helpful? Start by determining the two impedances you are trying to match. Then use the Smith Chart as a graphical tool to determine what form of matching circuit is needed and what the component part values are.
A simple R-L-C Load impedance is scanned using an HP 3577B VNA with HP 35677A S-Parameter Test Set. The impedance is displayed in the lower half of the Smith Chart indicating the load appears Capacitive over the scanned frequency range of 1.0 to 5.0 Mhz
A matching circuit consisting of 3.9uH inductor in series with the R-L-C load shifts the resonant loop near an ideal 50 ohms
Developed SEPIC and Buck topology NiCd and NiMH battery chargers
Developed this tiny circuit that uses a 9V battery to create the +/-17V rails needed for a +/-15V instrumentation output
Developed Flooded Cell/AGM Battery Monitor 12/24/36/48V
This simple low power device automatically determines system battery voltage at "Power Up", auto-ranging up as the battery charges. See: MidniteSolar (scroll down)
My AC inverter died. To get some IGBT experience, I traced out the bipolar circuit then modified the system to use IGBT devices.
Developed a 250V/3000W PWM controlled Active Dump Load for Wind Turbines. Testing a 3000 watt load can quickly generate a lot of heat. Getting FETs to work reliably while switching 250Vdc made for some challenges. Failures while testing prototypes were often spectacular!
Sometimes there isn't much physical space available for product enhancements. This coulomb counter / gas guage had to be divided into two boards for it to fit into the available space
Wireless technology is becoming ubiquitous. I have helped several companies develop radio based products for mining, logging, utility monitoring, and vehicle tracking.
Radios have been an interest of mine since a high school buddy enrolled in a correspondence course to obtain his 1st Class FCC license. I passed the 2nd Class FCC license in high school, followed by a 1st Class license while in college. I was able to defray some of my college expenses by working as a broadcast engineer and DJ for the college FM station. The FCC has replaced my 1st Class license with a General Radio Telephone license. When developing RFID tag systems, I obtained an FCC Experimental radio license.
Learning Morse Code was fun and I worked my way up from Novice (KB7GLH) to Extra Class (AA7AL) and have been affiliated with the W5YI Volunteer Examiner Coordinator program. While living in Arlington, I have served as a radio operator with both the Red Cross and the Snohomish County DEM.
I have designed hardware and software that have been incorporated into a variety of radio systems. I have run numerous tests on radio systems and antennas. Following is a sampling of my radio projects.
Recent Product Development incorporating ZigBee radio modules:
This instrument measures the splice resistance of high voltage power lines. It is used while the lines are powered. The lineman may be riding in a helicopter or standing in an insulated bucket truck to make the measurement.
Wind turbine output as blades spin up from zero RPM
in a 20 mph breeze
Block model of simulated wind turbine
Simulation closely reflects the actual logged data
Wind Tunnel Blower - Max center stream output of almost 44mph
Testing KidWind "Red Prop" in homemade wind tunnel section
Mechanical Wind Turbine Simulator
Education and Professional Development
BSE Degree from ABET accredited Walla Walla University Washington State Licensed PE - Electrical Member of IEEE Power Electronics, Computer, Controls, and Robotics Societies IEEE Senior Member Lifetime Learner General Radio Telephone License Extra Class Ham License (AA7AL)