Saltar al contenido

Cómo leer datos de Arduino con Raspberry Pi con I2C

Solución:

Logré iniciar una comunicación entre un Arduino y una Raspberry Pi. Los dos están conectados mediante dos resistencias pullup de 5k (consulte esta página). El arduino escribe un byte en el bus i2c para cada solicitud. En la Raspberry Pi, hello se imprime cada segundo.

Código Arduino:

#include <Wire.h>
#define SLAVE_ADDRESS 0x2A

void setup() {
    // initialize i2c as slave
    Wire.begin(SLAVE_ADDRESS);
    Wire.onRequest(sendData); 
}

void loop() {
}

char data[] = "hello";
int index = 0;

// callback for sending data
void sendData() { 
    Wire.write(data[index]);
    ++index;
    if (index >= 5) {
         index = 0;
    }
 }

Código Python en Raspberry Pi:

#!/usr/bin/python

import smbus
import time
bus = smbus.SMBus(1)
address = 0x2a

while True:
    data = ""
    for i in range(0, 5):
            data += chr(bus.read_byte(address));
    print data
    time.sleep(1);

En mi Raspberry Pi, el bus i2c es 1. Use el comando i2c-detect -y 0 o i2c-detect -y 1 para verificar si su Raspberry Pi detecta su Arduino.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *