Arduinos in the Ham Shack
Download
Report
Transcript Arduinos in the Ham Shack
James Michener K9JM
k9jm.com
This presentation will be available at
http://k9jm.com
Landscape – (30,000 foot view)
What is an Ardunio?
Why Arduino?
How do you program them?
What have other hams done with Ardunios?
What has the author done with Ardunios?
What advice to newbies?
What could I do with an Arduino?
BIG COMPUTERS:
Super computers – eg IBM Watson
Cluster computers – eg Server Farms
Server computers
Desktop computers – eg Win 7 / Mac
Tablets / Smart phones
NOT THE TOPIC OF THIS PAPER
We will frame the Arduino in the landscape of
small computers
Embedded Linux
Micro controllers Arduino
Nano controller
Attributes:
Dedicated function
Limited extensive graphical user interface
Often communications oriented
OPEN SOURCE HARDWARE
Building block of fully disclosed hardware and
enabling software that permits anyone from
putting the blocks together in new forms and
advanced functionality.
Small console based Linux devices
Commercial Examples:
Set-top boxes
Cable/DSL Routers
WiFi access units
Technology:
ARM Processor – 32 bit 500MHz – 1.5GHz
Large Flash based storage
DDR memory >64megs
Open Source Hardware Examples:
◦ Beagle Bone -- http://beagleboard.org/bone/
◦ Beagle Board -- http://beagleboard.org/bone/
◦ Raspberry Pi -- http://www.raspberrypi.org/
These are the Arduino “big brother”
750MHz ARM
Micro SD Flash up to 16GB
256 Megs of memory
4 Serial Ports
100 base-T Ethernet
12bit A/D converter
USB – host / client
Runs most Linux distros
Draws less than a watt at 5 volts
Many GPIO lines
$79 dollars on amazon
Ham shack applications:
Complex web services
Apache, NTP, sendmail …
Expandable with “capes”
http://circuitco.com/support/index.php?title=BeagleBone_Capes
Serial, VGA, Prototype, camera, weather, audio, wi-fi, radar, touch screen
LCD, GPS
Programmable in any language supported by Linux… which is any
language on this planet. Fortran, C, C++, python, lisp,
Java.....
Weak in:
Slow in bit manipulation
Requires proficiency in Linux to get to
to get started
Poor low level library support: eg
◦
◦
◦
◦
GPIO
I2C / SPI
Interrupts
Timers
Arduino smaller brother
◦
◦
◦
◦
Small limited I/O
Single special interface
1K or less program, 256 or less RAM
Typical applications
Remote keyless entry
“Smart” keys / RF ID tags
Timers
Remote Control
Small appliances
Keyers -- K1EL
Technology
◦
◦
◦
◦
◦
8 or 16 bit technology
8K to 256K flash
1K to 64K RAM
Multiple interfaces
10 to 100 Million instructions per second
Commercial examples
◦ Thermostats
◦ Major appliances – Microwave, washing machine,
dish washer
Intelligent remote controls
Sierra Radio - HamStack
http://www.hamstack.com/hamstack.html
PIC processor based. 64MHz 64K Flash 3K RAM
$60
Parallax / Basic Stamp
ARM base processors
◦ 32 bit processor / ~100MHz
◦ More RAM / More flash / more money
◦ Built in Ethernet MAC
Examples
◦ Netduino - http://netduino.com/
◦ Arduino Due ( real soon now)
Designed as a teaching tool
Masters thesis project (2005)
Names after Massimo Banzi favorite
college bar .. Bar di Re Arduino.
◦ Names after King Arduin, 1002
Goals:
◦ Get going FAST
Students up and running after one class
◦ Low cost modern processor - $25
◦ ‘Open source hardware’
◦ Standard expansion interface ..”shield”
General purpose micro controller
Large library to interface most anything
Hundreds of ‘open source’ shields
Low cost of entry
Free development tools on any platform
Many development environments
Today:
◦ Dozens of Companies Making Arduino Products and
compatible “shields”
◦ More than 200,000 boards per month
◦ More than 100,000 developers
◦ Available World Wide
◦ Used by thousands of colleges / universities
◦ Rapid growth
◦ Large library of routines
◦ Available everywhere… even Radio Shack
http://www.sainsmart.com/
http://robocraft.ru/blog/RoboCraft/97.html
http://www.dfrobot.com/index.php
http://store.nkcelectronics.com/
http://www.liquidware.com/shop/show/ILLI/Illuminato::Genesis
https://metalab.at/wiki/Metaboard
http://jt5.ru/arduino/cosmo-black-star/
http://seeedstudio.com/depot/seeeduino-v221-atmega-168p-p-690.html
http://shop.cqpub.co.jp/hanbai/books/12/12551.html
http://otonanokagaku.net/magazine/vol27/
http://www.freetronics.com/products/twentyten#.UDGe26PcCjs
http://appliedplatonics.com/volksduino/
http://timewitharduino.blogspot.com/
http://arduino-direct.com/sunshop/index.php?l=product_detail&p=225
http://www.logos-electro.com/zigduino/
http://www.droids.it/cmsvb4/content.php?279-990.023-Luigino328-User-Manual-EN
http://brasuino.holoscopio.com/
http://www.evilmadscientist.com/2010/diavolino/
http://avr.tavir.hu/
http://www.sunduino.neth.pl/
http://multiplo.org/make-diy/electronics/
The ORIGINAL:
◦ http://arduino.cc/
I like to support the Ardunio guys, so they will continue to
innovate.
There are two processors:
Common properties:
◦ Small = Arduino Uno = ATmega328
◦ Large = Arduino Mega = ATmega2560
◦
◦
◦
◦
◦
◦
◦
◦
◦
◦
16MHz Clock – Single clock per instruction, no FPU
8 bit data / 16 bit ( 2 byte) instruction
On chip Flash with protected “boot sector”
10 bit A/D – 15 KHz sampling rate
40ma I/O pins - 1.8v to 5.5v operation
I2C and SPI interface
Multiple ‘Analog out’ using 8 bit PWM
Watchdog Timer
Low Power Modes
Internal / External oscillator
32K of Program / Data Flash
2K of SRAM
1K of EEPROM
1 Hardware Serial Port
2 External Interrupts
14 GPIO Digital Lines
6 channel analog multiplexer
3 Timers
1 Analog comparator
14 Digital I/O Pins
256K of Program / Data Flash
8K of SRAM
4K of EEPROM
4 Hardware Serial Ports
5 SPI & 1 I2C
5 external interrupts
16 channel analog multiplexer
6 Timers
4 Analog compare
54 Digital I/O pins
USB to serial interface
Automatic switching power supply switching
between USB and external
Regulator for external power
Expansion connectors for a shield
Power LED
Program controlled LED
2.7 x 2.2 inches
4.0 x 2.2 inches
There are hundreds of variants of each
◦ Different power supplies
◦ Different serial interfaces (RS-232 etc)
◦ Adding other features to the CPU board
Ethernet
Ethernet + POE
Motor controllers
The real ‘power’ of Ardunio:
1.
2.
3.
Libraries – all the common stuff is done
Shields – Add anything else – comes with
libraries
Simplified Development System
Bootloader
General Purpose I/O – “Wires”
A/D converter
Interrupts
Interrupt driven hardware serial
PWM – Analog output
Time / Delay
Timers
There are hundreds of different shields
◦ http://shieldlist.org/
They all come with their own example
code and library. A great “starting
point”
Ethernet – Wired / WiFi
Text – LCD displays
Graphic LCD display
Touch screens
Weather shields
Motor/ stepper motor driver
LED / Light Controllers
Relay Interfaces
Compass
GPS
Prototype shields
Up and
running fast
Universal way
to show
examples
GNU GCC – C, C++, assembly
Currently avr gcc 4.3.2 (2008)
◦ Inline assembly
◦ Templates
GCC 4.7.0 full C++ 11 available
http://andybrown.me.uk/wk/2012/04/28/avr-gcc-4-7-0-and-avr-libc-1-8-0-compiled-for-windows/
Price = $0.00
Serious
IDE
Free add
on for
Visual
Studio
You can
get VS
IDE for
Free
Excellent
Free
Complex
Setup
http://andybrown.me.uk/wk/2010/10/24/y
our-first-avr-project-in-eclipse/
Free VS
IDE and
use Visual
Micro
Not
Arduino
Free
WA5ZNU’s
Waterfall display
Cascata
Talks was Saturday
at Pacificon
K3NG -- Goody
Does Morse and Hellscreiber
K1EL Emulation
Keyboards, LCD
… and much more
Arduino Uno based
Mike Szczys
Google “arduino
ham radio” and get
a million other
examples.
CI-V Router – Web based ++++
NTP locked station clock
General purpose Control Panel
Keyer -- Very special - ARRL CP Runs
Auto tune a Johnson KW Matchbox
There is a Gremlin in my
ham shack!
It is the Icom CI-V bus, a
one wire serial protocol
bus.
Contest program ( eg N1MM )
+ Icom PW-1
+ Icom IC-756Pro2 =
COLLISION = HAVOC
Do not do it!
Found that hundreds of people have the same
problem
http://groups.yahoo.com/group/ic-PW1/
Larry, K8UT had tore into the problem
http://www.k8ut.com/tiki-index.php?page=Riding+the+CI-V+Bus
Go to Dayton 2011, someone suggests, what
about an Arduino. First time I heard the word.
Found that the Arduino Mega256 has 4 serial
ports and a library for buffered/interrupt
hardware I/O
“All” I have to do is write the message
handler. It’s just software…
Bought the Mega and a proto ‘shield’.
Programmed a “CI-V” sniffer in 10 minutes
As a “first” project, this is VERY aggressive.
Code in a dozen modules, needed a better
IDE. Discovered Visual Micro + Visual Studio.
Posted the code and schematics on my web
page. Four people build one. Many requests
for finished solution.
http://k9jm.com/CIV_Router/CI-V%20Router.html
More than 50 units sold world wide
Another 50 who have rolled their own
Growing list of features
Word of mouth marketing
Hundreds of pages of documentation
I was in love… what other things are out there?
Tricked out with added
features
◦ Band decoding Antenna
Selection
◦ Ham Shack Power Control
Center
◦ Ethernet control / Ethernet
Reporting
◦ Station battery monitoring
and charge controller
Router knows the frequency.
Map Frequency to Antenna Selection.
◦ Resolution = 1KHz
Decode to drive an Array Solution Six Pak
Software module available for the CI-V Router
Qty 10 switchable 13.8 volt @ 10 amp output
to turn on and off accessories, or AC power
relays.
Using either simple HTML commands, or by
serving simple web pages… do the following:
Observe and control of ham shack power
Observe and control of radio
link available at http://k9jm.com/
Simple serial like interface
Supports a limited number of connections four
Easy to do simple clients
Easy to do simple single connection servers
Easy to simple HTML Get/Put exchanges
Difficult to do complex things.
◦ Not Apache.
◦ Not easily multi-tasking
◦ Not much RAM available = slow or small
Using HTML protocol plus small GET/PUT
commands, plus serving small web pages
gives powerful simple control over a small
device.
Small web pages are great for mobile/tablet
browsing.
Architectural Concept:
Use a Beaglebone / Linux host Apache server
to route/present the Arduino based devices.
Arduino combo boards
◦ http://arduino.cc/en/Main/ArduinoBoardEthernet
◦ Wiznet W5100 controller
Arduino Ethernet Shield
◦ http://arduino.cc/en/Main/ArduinoEthernetShield
◦ Both have built in Micro SD Flash interfaces for
complex web pages
Microchip ENC28J60
◦
http://www.mdfly.com/index.php?main_page=product_info&cPath=9_41&products_id=109&zenid=fu6d934f20994ovv3jv9i9an77
◦
https://github.com/turicas/Ethernet_ENC28J60/
Very low cost, simple 100 base T Ethernet interface
Hint:
Mdfly.com ( Richmond, CA ) has many low
cost modules
Ethernet
Four serial ports to communicate with other
devices… eg antenna rotator, 160m inverted
L antenna tuner
Keyer
Menu driven control, knob/push button
interface
When “inactive” it is an NTP synchronized
station clock.
What should one use to communicate
between pieces of equipment in your ham
shack?
1.
2.
3.
4.
RS-232
RS-422
Ethernet
Wire per function
Wish there was standard and protocol.
In technology; never bet against Ethernet
External Arduino controller.
Speaks I2C to motor driver / positional
feedback .. Mounts on back of tuner
12V NEMA stepper motors. 1.8 degrees/step
When power is removed, operator can turn
knobs
Frequency based tuning table
Fine tweak with SWR measurement.
http://www.youtube.com/watch?v=UJ3uADluTY4
Prototype Arduino
auto tuning
controller
Arduino Uno
LCD Display
with push button
controls
K6YR / K6KPH / K9JM shares W6OWP’s ARRL
West Coast Code Proficiency Runs
◦
◦
◦
◦
◦
http://www.arrl.org/qualifying-run-schedule
Keyer with crystal controlled speed accuracy
Perfect control / synchronization with a computer
Seamlessly speed changes – on the fly
ARRL “Official” Farnsworth Spacing
◦ Solution – Arduino Uno using the hardware timer
interrupt library.
Arduino Cookbook
◦ Collection of projects and
examples, largely from the internet
Arduino Internals
◦ Experts guide, hints and tricks
Head First C
◦ C programming 101
K&R
THE reference manual for C
Not a teaching text
"A C program is like a fast dance on a newly
waxed dance floor by people carrying razors.“
- Waldi Ravens.
Bjarne Stroustrup
◦ Reference manual
◦ Not a teaching text
Warning
◦ “C let's you easily shoot in
your foot, C++ let's you reuse
the bullet.”