O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
INTERNET OF THINGS:
ARDUINO AND C
PROGRAMMING
COMBINING THE TANGIBLE AND THE VOLATILE INTO ONE
Punit Goswami
ARDUINO ENVIRONMENT
THE ARDUINO BOARD, ITS SOFTWARE COMPONENT AND OTHER ADD-ON HARDWARE
ARDUINO DEVELOPMENT BOARD
• Eight bit microcontroller – brain of the board
• USB Port – to communicate with the desktop/la...
INPUT/OUTPUT PINS (I/O PINS)
 Top and bottom rows of the board
 Holes in the board which we can stick wires in
 Holes a...
MICROCONTROLLERS
 Two microcontrollers on the board
 Main ATmega328 – 8 bit microcontroller
User programmable, runs user...
STORAGE & MEMORY
 Non-volatile flash memory for storage
 32 kilobytes in size
 Static Random Access Memory (SRAM) for m...
CLOCK
 16 MHz clock speed ~ 16 million operations per second
 Helps synchronize all components together
 Keeping track ...
PROGRAMMING FIRMWARE
 The ISCP headers can be used to program the firmware on
the board
 ICSP1 for the main ATmega328 mi...
SOFTWARE ENVIRONMENT
• Arduino IDE – Integrated Development Environment
• Can be programmed using other IDEs too, like Ecl...
IDE – SOFTWARE TOOL FOR PROGRAMMING
 File operations and other general options on top
 Buttons for most commonly used op...
OPTIONS BUTTONS
Buttons on the top have the most common ,useful operations
 Verify – compiles the code and checks for err...
TARGET PLATFORM
• ATmega328 – Arduino Uno’s processor
• Arduino shields – add on hardware for specific purposes
• Shields ...
ARDUINO SHIELDS
The prominent reason that Arduino got so popular
 Additional hardware to do particular, complex tasks
 F...
OPEN SOURCE
• Hardware – the board’s design is open source
http://www.arduino.cc
• Software – the IDE is open source, writ...
SETTING UP THE ENVIRONMENT
LEARNING TO CODE IN C/C++ FOR ARDUINO
RUNNING IDE ON WINDOWS
 Emacs or NotePad++ text editor
 Gcc C compiler
 The debugger, gdb
IDE provides one-stop solution
ARDUINO IDE
 Require Java Runtime Environment
 Write codes in general C language
 setup() – Initiates the variables and...
BLINK LED EXAMPLE
 Pin 13 is represented by numeral 13
 digitalWrite() writes voltage values to pins
 delay() sets dela...
ARDUINO PROGRAMS AND THE BUILD PROCESS
HOW IT IS SAME BUT DIFFERENT TO CODE FOR THE BOARDS
Source
code
Executable
file
Hex file
Uploaded
to board
ARDUINO TOOLCHAIN
Steps taken post code authoring
 Source code(ske...
CROSS COMPILATION
Compile on one machine, but the target is another machine.
E.g.: compiling it on an Intel processor, com...
DEBUGGING AND TROUBLESHOOTING
REMOVING ERRORS AND TAKING CARE OF REPAIR AND MAINTENANCE
DEBUGGING
• Finding reasons of erroneous execution or failure of execution
• Software problems
• Require ‘controllability’...
REAL TIME MONITORING
• Includes dynamic observation of the target and its state
• Viewing data about the execution as it o...
REMOTE DEBUGGING
Remote Debugger
• Host computer acts as debugger for a code that runs on the remote target system
• Host ...
SERIAL PROTOCOLS FOR DEBUGGING
• UART: Universal Asynchronous Receiver/Transmitter, an old protocol, still useful though.
...
Próximos SlideShares
Carregando em…5
×

Arduino and c programming

1.740 visualizações

Publicada em

An introduction to Arduino micro-controller platform and C programming meant for the board. Introduction to debugging and hardware specification and limitations of the board.

Publicada em: Engenharia

Arduino and c programming

  1. 1. INTERNET OF THINGS: ARDUINO AND C PROGRAMMING COMBINING THE TANGIBLE AND THE VOLATILE INTO ONE Punit Goswami
  2. 2. ARDUINO ENVIRONMENT THE ARDUINO BOARD, ITS SOFTWARE COMPONENT AND OTHER ADD-ON HARDWARE
  3. 3. ARDUINO DEVELOPMENT BOARD • Eight bit microcontroller – brain of the board • USB Port – to communicate with the desktop/laptop • USB controller chip – manages USB transferred data • IO pins – board’s connection to the outside world • Quartz oscillator – board’s time keeper • Reset button – taking the board back to its initial state • External power jack – power from dedicated source Co-axial jack, but USB can also be used
  4. 4. INPUT/OUTPUT PINS (I/O PINS)  Top and bottom rows of the board  Holes in the board which we can stick wires in  Holes are connected to the chips through traces on-board  14 Digital I/O pins on top [0-13] Highs – 5 volts Lows – 0 volts Max Current - 40 mA  6 Analog input pins on the bottom [A0 – A5]  Power output pins on the bottom [ 5v , 3.3 v ]  Reset pin to reset the board to initial state
  5. 5. MICROCONTROLLERS  Two microcontrollers on the board  Main ATmega328 – 8 bit microcontroller User programmable, runs user-written application code Carries firmware, like bootloader  ATmega16U2 Handles the communication with the USB interface, not directly accessible
  6. 6. STORAGE & MEMORY  Non-volatile flash memory for storage  32 kilobytes in size  Static Random Access Memory (SRAM) for memory (volatile)  3 kilobytes in size
  7. 7. CLOCK  16 MHz clock speed ~ 16 million operations per second  Helps synchronize all components together  Keeping track of occurrence of events
  8. 8. PROGRAMMING FIRMWARE  The ISCP headers can be used to program the firmware on the board  ICSP1 for the main ATmega328 microcontroller  ICSP2 for the ATmega16U2 microcontroller  Special equipment are required in order to re-program the firmware through these headers
  9. 9. SOFTWARE ENVIRONMENT • Arduino IDE – Integrated Development Environment • Can be programmed using other IDEs too, like Eclipse • Arduino IDE is more versatile • Needs no special drivers or additional components • Available for Windows, Linux and Mac • Cross compiler – compiles for a different target platform than the one being programmed on
  10. 10. IDE – SOFTWARE TOOL FOR PROGRAMMING  File operations and other general options on top  Buttons for most commonly used options (Verify, Upload, etc.)  Main window – Text editor for writing code  Message area – for messages to the programmer
  11. 11. OPTIONS BUTTONS Buttons on the top have the most common ,useful operations  Verify – compiles the code and checks for errors  Uploads – compiles the code, uploads it to the board. Works only if the board is connected  New – creates a new sketch, a new program  Open – opens an existing sketch  Save – saves the current sketch in the directory of your choice  Serial Monitor – opens window to communicate with the board
  12. 12. TARGET PLATFORM • ATmega328 – Arduino Uno’s processor • Arduino shields – add on hardware for specific purposes • Shields need no complicated circuitry – prewired • Stacks of shields on top of the Arduino • Prefabricated libraries of methods
  13. 13. ARDUINO SHIELDS The prominent reason that Arduino got so popular  Additional hardware to do particular, complex tasks  Form of separate boards  Pre-wired pins that stick into holes in Arduino  Stack on top of the Arduino to make connections  Pre-written functions for operations of these boards  Open-source designs in most of the cases, third party Complete list of shields at http://www.shieldlist.org
  14. 14. OPEN SOURCE • Hardware – the board’s design is open source http://www.arduino.cc • Software – the IDE is open source, written in Java, modifiable, redistributable • Open source community – easily available codes and help on troubleshooting
  15. 15. SETTING UP THE ENVIRONMENT LEARNING TO CODE IN C/C++ FOR ARDUINO
  16. 16. RUNNING IDE ON WINDOWS  Emacs or NotePad++ text editor  Gcc C compiler  The debugger, gdb IDE provides one-stop solution
  17. 17. ARDUINO IDE  Require Java Runtime Environment  Write codes in general C language  setup() – Initiates the variables and sets up device instances  loop() – Runs the code that contains operations and manipulations, iterates infinitely
  18. 18. BLINK LED EXAMPLE  Pin 13 is represented by numeral 13  digitalWrite() writes voltage values to pins  delay() sets delays in milliseconds  HIGH – 5v LOW – 0v
  19. 19. ARDUINO PROGRAMS AND THE BUILD PROCESS HOW IT IS SAME BUT DIFFERENT TO CODE FOR THE BOARDS
  20. 20. Source code Executable file Hex file Uploaded to board ARDUINO TOOLCHAIN Steps taken post code authoring  Source code(sketch) is compiled to an executable format  Executable file is linked with libraries and interpreted into a hex file  Hex file is uploaded to board Starts executing right away
  21. 21. CROSS COMPILATION Compile on one machine, but the target is another machine. E.g.: compiling it on an Intel processor, compiling it for an AVR processor  avr-gcc – C compiler for AVR targets, gives a *.o file  avr-lnk – links library object files, results in a *.elf file  avr-objcopy – change the *.elf file into Arduino compatible *.hex file
  22. 22. DEBUGGING AND TROUBLESHOOTING REMOVING ERRORS AND TAKING CARE OF REPAIR AND MAINTENANCE
  23. 23. DEBUGGING • Finding reasons of erroneous execution or failure of execution • Software problems • Require ‘controllability’ and ‘observability’ • Controllability: the ability to control sources of data that are used by the system Allows to do testing to test certain circumstances that might be causing a bug or triggering a bug at any rate • Observability: the ability to observe intermediate and final results An oscilloscope, multi-meter, or the serial monitor could be used
  24. 24. REAL TIME MONITORING • Includes dynamic observation of the target and its state • Viewing data about the execution as it occurs • Not intrusive in terms of performance • Important for timing constraint IoT systems • Provides timing and functional accuracy
  25. 25. REMOTE DEBUGGING Remote Debugger • Host computer acts as debugger for a code that runs on the remote target system • Host computer are also the systems that the programmer programs on • Host provides the platform to interface with the debugging environment. • Provides good run control, not good for testing timing Embedded Debug Interface • Seen in modern processors, Arduino and its likes have trace macrocells • Built in to the processor • Hardware dedicated to do debugging directly
  26. 26. SERIAL PROTOCOLS FOR DEBUGGING • UART: Universal Asynchronous Receiver/Transmitter, an old protocol, still useful though. • Low hardware overhead • Transmits at 9600 baud • START and STOP buts are used for synchronization • The bits in between a START bit and the next STOP bit is the data • To distinguish, the receiver samples at 16 times higher rate than the baud rate • Serial interface can be used to both send data to and from the Arduino board

×