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.”