Stap 1: FTDI of seriële uploaden
FTDI is eigenlijk een merk van chips. De FTDI bedrijf is gespecialiseerd in chips gebruikt voor het aansluiten via USB. In het land van de Arduino, worden USB-naar-serieel chips gebruikt op een computer met de Arduino IDE naar je Arduino de hoofdprocessor voor het uploaden van nieuwe schetsen en voor interactie met uw schetsen via een seriële monitorvenster interface. De USB-naar-serieel chip interfaces met de UART-interface van de ATMEL processor op je Arduino.
Het draait om de Arduino te aanvaarden van een schets van de seriële interface, een programma genaamd een bootloader, die aanvaardt de schets en schrijft u deze naar Flash-geheugen. De bootloader eigenlijk woont in een klein gedeelte van het Flash-geheugen in het bovenste bereik van geheugenadressen, die is gereserveerd voor gebruik van de bootloader. Zoals de bootloader programma de schets ontvangt, slaat het in het onderste gedeelte van Flash-geheugen.
Deze seriële programmering maakt gebruik van een protocol genaamd TTL seriële. Het is gebaseerd op een oud communicatieprotocol RS-232 genoemd. RS-232 communicatie gebruiken spanningen die snel van een positieve spanning van 3 tot en met 25 volt, met een negatieve spanning van -3 tot-25 volt veranderen. Personal computers meestal niet meer worden geleverd met RS-232-interfaces, maar ze gewend aan een paar jaar geleden. Een PC met een dergelijke interface gebruikt meestal spanningen die slingeren tussen 12 tot-12 volt een RS-232-signaal te sturen. De ATMEL processor op een Arduino gebruikt signalen in het bereik 0 tot en met 5 volt. De versie van deze RS-232-protocol dat compatibel is met de spanningen in het bereik dat de Arduino processor aankan heet TTL seriële, of soms hoor je kan dat het TTL-232, of gewoon seriële genoemd.
Meeste Arduinos hebben een USB-naar-serieel adapter chip ingebouwd, dus u de Arduino rechtstreeks op uw computer zonder speciale interface of programmeur kunt. Sommige Arduinos, zoals de LilyPad, Mini en Pro Mini, niet uitgerust met een USB-naar-serieel adapter en u wilt uw eigen externe een leveren. De externe adapters worden vaak genoemd FTDI adapters, zelfs als het merk van chip niet FTDI.
Er zijn verschillende draden of verbindingen die betrokken zijn bij seriële communicatie. De belangrijkste heten RX (korte voor ontvangen) en TX (korte voor verzenden).
Zoals de naam al impliceert, ontvangt de RX-draad of pin van een ander apparaat. Het luistert naar inkomende communicatie. De TX-draad of pin verzendt gegevens naar een ander apparaat. De TX-draad vanaf uw USB-naar-serieel adapter snel geschakeld tussen 0 en 5 volt in een patroon, en het is aangesloten op de RX-pin op de Arduino-processor, die naar die patronen luistert.
De mededeling is twee richtingen, zodat van de Arduino processor signalen naar de USB-naar-serieel adapter sturen kunt. Het gebruik van de processor is het eigen TX pin om een signaal van de USB-naar-serieel adapter RX pin. De USB-naar-serieel adapter vertaalt de signalen heen en weer tussen de Arduino en uw computer via de USB-kabel.
De computer stuurt de schets aan de Arduino, en ontvangt de schets terug uit de Arduino, zodat de computer controleren kan dat het programma oke geladen. Dezelfde seriële verbinding kan worden gebruikt door uw uitgevoerd op de Arduino schets te communiceren naar je via het venster seriële monitor. Het is gebruikelijk om deze methode te gebruiken om te debuggen uw schetsen, omdat u kunt strooi Serial.print verklaringen in uw code op strategische plaatsen te rapporteren van de waarde van variabelen of om te vertellen wat je code doet op dit moment. En u kunt verzenden van gegevens naar uw computer, zoals de sensor of invoer pin lezingen. U kunt ook gegevens van de computer naar verzenden de schets waarop je Arduino met behulp van de seriële monitor.
Je kunt je afvragen hoe de Arduino weet wanneer seriële communicatie is proberen te sturen een schets te laden, of gewoon communiceren door middel van de seriële monitor met de schets die al op de Arduino is uitgevoerd? Het antwoord is simpel. De bootloader programma dat accepteert schetsen en reprograms van de Arduino alleen worden uitgevoerd in de eerste paar seconden nadat de Arduino de processor wordt teruggesteld. Als het programma van de bootloader draait op de Arduino niet een bepaalde reeks van tekens die aangeeft dat een schets probeert ontvangt te uploaden, het programma wordt afgesloten hardlopen en begint de schets die u eerder hebt geladen.
Toen Arduinos werden aanvankelijk ontwikkeld, had de persoon die het uploaden van een schets aan de Arduino druk op de reset-knop op de Arduino rechts aan het begin van de upload-proces, en het correct, of probeer het opnieuw. Latere versies van Arduino maakte gebruik van een aanvullend protocol van de seriële kabel genoemd DTR automatisch opnieuw instellen van de Arduino. Aangezien het DTR-signaal uit 5V op 0 op dit moment die een nieuwe verbinding met de Arduino is gestart, gaat als u dit signaal aan de lijn van de reset van de Arduino de processor afgeven, herstelt het. Als reden die de nieuwe seriële verbinding tot stand wordt gebracht is omdat de Arduino IDE is het verzenden van een schets naar de bootloader bootloader doorgaat en accepteert de schets en opgeslagen. Als reden dat de nieuwe seriële verbinding tot stand wordt gebracht is omdat u de seriële monitor van de Arduino IDE opent, het opnieuw instellen van de Arduino, de bootloader loopt dan net lang genoeg om te beseffen dat de IDE is niet probeert om een schets, en de schets die u geüpload eerder begint actief te sturen.
Het is handig om te weten over deze signalen zoals het DTR-signaal gebruikt voor automatische reset, vooral als u een USB-naar-serieel adapter correct verbinden met een Arduino waaraan nog geen de adapter gebouwd in, zoals LilyPad, Mini of Pro Mini. Of, als u wilt oplossen van problemen met een Arduino, of een Arduino met behulp van een ander programma. Ik noemde in het vorige lid dat het DTR-signaal gaat van 5V tot 0 op dit moment die een nieuwe verbinding tot stand is gebracht. Nou, dit signaal gaat laag en blijft laag voor de hele tijd die het is aangesloten. Als dat signaal rechtstreeks op de resetpin van de processor aangesloten waren, de processor in een staat van reset zou blijven en zou nooit aan de slag met de bootloader of de schets die u eerder hebt geüpload.
Dus, hier is de truc: het DTR-signaal wordt verzonden via een kleine condensator op de resetpin van de processor. De condensator verandert de spanning van het DTR-signaal (die gaat laag en blijft laag) in een tijdelijke piek die lage gaat naar 0V en komt terug naar 5V. Dit stelt de Arduino en laat het begin van de bootloader, die later de schets begint.
Een USB-naar-serieel adapter vereist een stuurprogramma moet worden geladen op uw computer, zodat uw computer hoe begrijpen zal te communiceren met het. Echte Arduinos gebruiken bepaalde en eindige lijst van modellen van USB-naar-serieel adapters zodat de IDE kan vooraf worden verpakt met alle stuurprogramma's die moet u wellicht. Als u een kloon, fake, afgeleide, eigengemaakte, of anders niet-ondersteunde ontwikkel bord gemaakt door iemand anders dan arduino.cc of één van de producenten van hun partner, dat is eigenlijk enkel fijn omdat het opensource hardware en software. Om het even wie kunt maken. Maar de Raad van bestuur kan gebruik maken van een USB-naar-serieel adapter die een stuurprogramma nodig voor uw computer en dat is niet opgenomen in de softwaredownload voor de Arduino IDE. Een voorbeeld hiervan is de CH340G USB-naar-serieel-chip die is heel gebruikelijk op Arduino-compatibele boards verkocht op eBay en Amazon. Het is goed voor u om kennis te hebben van dit zodat u uw computer met het juiste stuurprogramma bereiden.
Deze seriële communicatie gebeurt met de Arduino de processor meestal gebeurt door middel van gespecialiseerde pinnen op de processor die speciaal zijn ontworpen voor TTL seriële communicatie. De processor is speciale hardware genoemd een UART, die de gegevens uit de TX-pin verzenden of ontvangen van gegevens op de RX-pin afhandelt. De logica voor de afhandeling van deze signalen is ingebouwd in de processor op een zeer fundamenteel niveau. Als u niet de RX en TX pinnen op de processor voor seriële communicatie met behulp van de UART gebruikt, zijn de pinnen beschikbaar voor het doen van andere dingen, zoals het activeren van Relais, transistors, LEDs, of digitale signalen ontvangen van sensoren. Ze zijn gewoon digitale pinnen als niet bezet met seriële signalen. Sommige processor chips hebben meerdere UARTs en dus verschillende sets van RX en TX pinnen. Deze pinnen zijn ook gewone digitale pinnen als niet wordt gebruikt door het gedeelte van de UART van de processor voor seriële communicatie.
Een bootloader kan worden ontworpen om het accepteren van schetsen via elk protocol met behulp van bijna alle pinnen op de processor. De processor heeft een verscheidenheid van pinnen die gewone digitale pinnen maar deze pinnen kunnen desgewenst worden gebruikt voor gespecialiseerde protocollen. Er is bijvoorbeeld een aantal pinnen dat kan worden gebruikt voor IIC of I2C protocol, dat is een speciale seriële bus protocol kan communiceren met meerdere apparaten. En er is een andere groep van pinnen dat kan worden gebruikt voor de SPI-protocol, dat is nog een ander verschillende seriële bus protocol gebruikt om te communiceren met apparaten. De processor is speciale hardware die ontworpen is voor de uitvoering van deze verschillende protocollen voor de verschillende speciale pennen en de logica voor de afhandeling van deze signalen is ingebouwd in de processor op een zeer fundamenteel niveau.
Twister #1: Deze verschillende protocollen zoals TTL seriële I2C en SPI hebben de low-level logica ingebouwd in de processor voor de verwerking van de protocollen als de specifieke pinnen voor het protocol zijn aangesloten op een ander apparaat, maar de protocollen kunnen worden toegepast om te werken op een van de digitale pennen op de processor door het schrijven van software die het gedrag van de processor van de ingebouwde logische circuits emuleert. Dit heet bits bonzen. Een programma kan worden geschreven die drijft de pinnen in een patroon dat voldoet aan de vereisten of de specificaties van het protocol. Bijvoorbeeld, kan een serieel protocol van software worden geschreven die gebruikmaakt van niet-UART pinnen van de processor. De software neemt dan de plaats van hardware UART circuits. Dit is handig als de pennen die u normaal voor een bepaald protocol gebruiken zou anders zijn bezet, en u wilt andere pennen gebruiken. Of, als u wilt dat meer dan de één ingebouwde seriële interface. Bijvoorbeeld, de ATmega328P-processor heeft slechts één UART en het maakt gebruik van digitale pinnen 0 en 1. Het normaal alleen communiceert met één ander serieel apparaat tegelijk. Als u koppelen een ander seriële apparaat op pin 2 en 3 wilt, kunt u dat doen met een seriële softwareprogramma dat bits-pony het protocol. De Optiboot bootloader kan worden gecompileerd om te communiceren door middel van software op niet-UART-pins seriële.
Arduinos komen vaak met een seriële bootloader, geïnstalleerd, die gebruik maakt van de hardware UART aan boord de ATMEL processor, en de Arduino IDE op uw computer is ontworpen om te communiceren met die bootloader.
Twister #2: U hoeft niet een bootloader! Lees meer over ISP volgende.