Udvidet hardware-software

From Teknologisk videncenter
Revision as of 07:37, 29 April 2015 by Orso (talk | contribs) (Tirsdag)
Jump to: navigation, search

2130 Udvidet hardware/software projekt

Materialer/Links

Arduino på mars Arduino

Opgaver

Mandag

Hent og installer Arduino IDE, se vejledning på Arduino

Kig i eksemplet SerialCallResponceASCII og lav din egen udgave med en LDR (Lys føler) og en trykknap som kan tænde og slukke for LEDen på port 13.

Afprøv med PUTTY eller tilsvarende at dit program virker så du kan læse værdien fra lysføleren og status på trykknappen. Vær opmærksom på at det er samme port du anvender til at programmerer og til at kommunikerer med boardet så der kan opstå konflikter.

Lav også en rutine så du kan tænde og slukke LEDen via seriel interfacet.

Atmel processoren har en indbygget UART (Universal Asynchronous Receiver Transmitter) som kan anvendes til seriel kommunikation med andre enheder. Du finder portene til UARTen på Port 0 og 1 på Arduino boardet.

Tag nu et board mere og lav en seriel mellem UARTen på de to boards forbindelse med 2 ledninger mellem de to boards.

  • RX (Port 0) til TX (Port 1)
  • TX (Port 1) til RX (Port 0)

Lav kode til board 2 så du kan tænde LEDen på boardet vha den trykknap du satte på board 1 ved at sende seriel kommandoer mellem de to boards. Bemærk at du ikke kan programmerer de to boards via USB uden først at fjeren ledningerne fra RX og TX.

Lav til sidst en udvidelse du med en eller to ekstra ledninger mellem de to boards kan lave handshake og sende en interrupt til board 2 som starter serial read. Du kan læse mere om handshake her RS-232 and RS-422. Vær dog opmærksom på at der ikke er tale om egentlig RS-232 med de spændings niveauer vi arbejder med her, det kræver en tranceiver.

Der er mere om Arduino og interrupts her Arduino Interrupt eksempel

Tirsdag

SPI er en meget anvendt kommunikationsform mellem forskellige komponenter i et uProcessor system. Det kan f.eks. være at processoren skal programmer en GPS enhed, læse fra et flash card eller blot programmere nogle udgange. SPI betyder Serial Peripheral Interface Bus og adskiller sig fra opgaven i går ved at der er indført en seriel clock. SPI kan du læse mere om her SPI på Wikipedia

uControlleren i Arduino har også en SPI bus som befinder sig på port 10-13

Port 13 - SCLK (Serial clock) Port 12 - MISO (Master In Slave Out) Port 11 - MOSI (Master Out Slave IN) Port 10 - SS (Slave Select)

Slave Select gør det muligt at lade den samme master styrer flere forskellige slave enheder på et board. De forbindes alle parallelt, men med hver sin Slave select.

Som software siden er her par løsninger at kigge på

  • SPIDigitalPot På Arduinos hjemmeside som anvendes til at programmer nogle Digitale potentiometre, dem skal vi ikke bruge, men du skal lave koden om så den i stedet kan sende kommandoer fra det ene til det andet board. En kommando består i dette tilfælde af en adresse og en værdi.
  • arduino_spi_slave Hvordan du sætter dit andet board op som SPI slave. Koden læser hvad der kommer ind på SPI og sender det vidre til seril porten.
  • making two arduinos talk over spi Fin løsning med både master og slave.
  • Arduino SPI Master Slave Demo En noget mere avanceret løsning med både master og slave


Tag dine to boards og forbind via SPI. I modsætning til UART skal der ikke krydses når forbindelsen laves. Det vil sige MISO forbindes til MISO og MOSI til MOSI.

Sæt nu masteren til konstant at sende værdier fra lysføleren til slaven, forbind slaven til computeren via putty, og se hvordan værdierne fra masteren printes ud. Bemærk dog at programmet i slaven venter på et linebreak "\n" som aldrig kommer, det skal du fjerne for at det virker, eller indfører det i din master kode.

Når du har det til at virke så prøv at tilslutte et oscilloscope så du kan se hvordan signalerne løber mellem de to boards.

Prøv til sidst at lave kode så det er boardet med lysføleren som er slave og returnerer værdier til masteren når der sendes en given kommando.

Onsdag

Indtil nu har vi anvendt Arduinos eget IDE sketch og de indbyggede biblioteker, men så gode biblioteker kan du ikke altid regne med at have, og de har også deres begrænsninger.

Derfor er det tid at installerer et "rigtigt" udviklingsværktøj. På Arduino finder du en guide til at installerer AVR studio og anvende dette sammen med Arduino.

På samme side finder du også diagrammer og datablade for den ATMega som sidder på Arduino boardet.

Installer AVR Studio og gentag SPI øvelsen, men uden at anvende Arduino bibliotekerne.

Torsdag

CAN BUS KEIL

Fredag