Doorgaan naar hoofdcontent

Arduino: Interchip communicatie 1: Seriële communicatie

Seriële communicatie voor communicatie tussen chips onderling is de meest eenvoudige methode om interchip communicatie met Arduino te bewerkstelligen. Seriële communicatie heeft als grootste nadeel dat het alleen tussen twee chips kan plaatsvinden. Het heeft als voordeel, dat door de hardware UART op de verschillende ATMega-chips, snel gecommuniceerd kan worden. Tevens kan met de SoftwareSerial ook nog een tweede of derde seriële aangestuurd worden vanaf een ATMega chip, of kan seriële communicatie worden bewerkstelligd op chips zonder hardware UART, zoals de ATTiny-familie.

Seriële communicatie wordt ook door veel andere hardware gebruikt. Diverse draadloze communicatie-hardware is in feite niets anders dan een radiografisch protocol dat de seriële poort verlengt. Voorbeelden hiervan zijn de diverse Bluetooth-modules voor de Arduino en de Xbee.

Bij seriële communicatie vindt de communicatie over twee lijnen plaats. De ene lijn is de RX. Hierover wordt data ontvangen. De tweede lijn is de TX, hierover wordt data verzonden. Deze vorm van communicatie vindt feitelijk ook plaats tussen de Arduino en de PC, op het moment dat de USB-kabel wordt aangesloten. In dit artikel worden een Arduino UNO en een ATMega8-schakeling gebruikt die via seriële communicatie gegevens uitwisselen.

Eerst de ATMega8-schakeling. Dit is feitelijk een Arduino op een breadboard. Iedere ATMega-chip moet de klus kunnen klaren, ik heb een ATMega8 genomen omdat deze simpelweg nog in ongebruikt in de kast lag.

Op de ATMega8 sluit ik een LCD aan. Mijn LCD heeft een I2C-chip op de achterkant waardoor ik vier draden aansluit: (VCC (+5V), GND, SCK (de kloklijn van de I2C-verbinding) en SDA (de datalijn van de I2C-verbinding). Op de verdere werking van I2C ga ik nu niet in, zie hiervoor wikipedia. Mocht je LCD hebben zonder I2C-chip, kijk dan op de website van Arduino voor aansluitvoorbeelden.

Mijn aansluitingen:


Voor de aanluitingen van de klok en de ATMega, zie de Arduino-site voor meer informatie.

Op de ATMega8 zetten we de sketch uit de voorbeelden van de Arduino-software: de SerialDisplay (let op, voor I2C-aangestuurde LCD's is een andere sketch benodigd). In deze sketch zetten we de baudrate op 9600bps.

Vervolgens nemen we de Arduino UNO. Hierop zetten we de SoftwareSerialExample, we passen de baudrate van beide seriële verbindingen aan in 9600bps Vervolgens sluiten we pin 2 en 3 aan op de TX en de RX van de ATMega8.

Als we dan via de seriële console van de Arduino-software een stukje tekst sturen, stuurt de Arduino dit door naar de ATMega8. (Dat is de interchip-communicatie!) De ATMega8 stuurt dit vervolgens naar de LCD.

Tot slot nog een plaatje van de setup:


Bijgewerkt 8 sept:
Wat grammatica- en spelfouten eruit gehaald


Bijgewerkt 13 sept:
Foto toegevoegd