En Guide till Raspberry Pi Arduino kommunikation i inbyggda system (1 / 5 steg)
Steg 1: ATTiny 85 USI
Först ville vi använda och ATTiny 85. Det små AVR-chip som är kompakt och låg strömförbrukning. ATtiny 85 (och det är kusiner) har inte I2C eller SPI hårdvara inbyggd, men ganska USI (Universal Serial Interface). USI kan användas för att underlätta I2C och SPI. Dessa metoder kan också användas att programmera ATTiny med Raspberry Pi.
Hårdvara krok upp är enkel för detta om du vill använda SPI ansluta MOSI till MOSI, MISO till MISO, och CLK till CLK. I2C ansluta SDA till SDA, SCL till SCL, och lägga till dra upp resisters (4.7 k ohm på 5V) att fungera. Jag föreslår att du använder I2C eftersom det tar upp en mindre pin och stiften är begränsad och I2C bibliotek för ATTiny är bättre dokumenterade.
ATTiny USI bibliotek kan hittas här. Biblioteket är enkel att använda och lätt kan genomföras.
Detta är koden för ATTiny. Koden helt enkelt echos vad skickas till det och blinkar en LED lika lång tid.
#include < TinyWireS.h >
#define SLAVE_ADDRESS 0x04
#define LED1_PIN 4 / / ATtiny stift 3
void setup()
{
pinMode(LED1_PIN,OUTPUT);
Blink(LED1_PIN,2); Visa det är vid liv
TinyWireS.begin(SLAVE_ADDRESS);
}
void loop()
{
byte byteRcvd = 0;
IF(TinyWireS.available())
{
byteRcvd = TinyWireS.receive();
TinyWireS.send(byteRcvd);
Blinka (LED2_PIN, byteRcvd);
}
}
Annullera Blink (byte ledde, byte gånger) {
för (byte jag = 0; jag < gånger; i ++) {
digitalWrite(led,HIGH);
fördröjning (25).
digitalWrite(led,LOW);
fördröjning (17);
}
}
Detta är en enkel kod för Raspberry Pi gjort i python. Koden skickar ett heltal för att förstora och skriver ut vad de ATTiny ekon tillbaka.
importera smbus
importera timebus = smbus. SMBus(1)
Adress = 0x04
samtidigt sant:
i2cread = bus.read_byte(address)
skriva ut i2cread time.sleep(0.1)
Med hjälp av detta bör du kunna göra grundläggande tester och kontrollera att det finns några maskinvaruproblem. Vi hittade dock senare att biblioteket är begränsande eftersom den har problem gör snabb kommunikation och resulterade i täta brakande. Detta skjuts till flytta ATMegas eftersom det kan är att oss Arduino tråd biblioteket.