Este es la continuación del artículo inicial “Android Things” del número de Enero 2020 de la revista, en el que se detalla cómo usar el nuevo sistema operativo de Google que facilita el uso de los pines GPIO en dispositivos ODROID
I2C
También puedes usar I2C en la placa ODROID con Android. Puedes usar cualquier API I2C proporcionada por Android. Android Things admite varios tamaños de transmisión de datos, bytes, palabras y datos almacenados en búfer.
Exporté el ejemplo de Weather board 2 (https://www.hardkernel.com/product-category/sensor/) a Android con Android things. También exporte la pantalla I2C (https://www.hardkernel.com/product-category/display/). Al igual que otros dispositivos I2C conocidos, estos dos dispositivos están conectados con 4 cables, voltaje, tierra, I2C SDA e I2C SCL. En los ejemplos, conecté los cables I2C al I2C-2.
La mayoría de los procedimientos previos son iguales al procedimiento GPIO. Añadir permiso al manifiesto, importar y llamar la instancia de Peripheral Manager al código fuente del proyecto. Sin embargo, no necesitas coger una instancia de GPIO. Debes llamar al método openI2cDevice para obtener la instancia del dispositivo I2C.
... List i2cBusList = manager.getI2cBusList(); I2cDevice device = manager.openI2cDevice(i2cBusList.get(0), I2C_DEVICE_ADDRESS); // or i2cDevice device = manager.openI2cDevice(“I2C-2”, // I2C Device Address); ...Los nombres de la interfaz I2C son I2C-2 e I2C-3. Cada interfaz I2C consta de los pines 3,5 y 27, 28. Cuando obtengas el dispositivo de bus I2C, debe configurar la dirección del dispositivo I2C para cada chip I2C. En este caso, la weather board 2 consta de dos chips I2C. De modo que, creé dos instancias de dispositivo I2C. Una instancia está vinculada por 0x76 al BME280. El chip ofrece valores de temperatura, presión y humedad. Y la otra instancia está vinculada por 0x60 al SI1132. El chip ofrece valores UV, visibles e IR. Y la LCD I2C tiene un chip I2C, así que creé una instancia de I2C. Se vincula por 0x27 para controlar la pantalla LCD. De esta manera, debes crear una instancia de dispositivo I2C para cada dispositivo con su propia dirección
A través de la instancia I2C, puede comunicarte con el dispositivo. Android things proporcionan muchos métodos. Para leer los datos de un dispositivo, proporciona los métodos read, readRegBuffer, readRegByte y readRegWord. También para escribir datos en el dispositivo, proporciona write, writeRegBuffer, writeRegByte y writeRegWord. En el sitio web oficial de Android Things tienes mucha información al respecto.
Referencia del método del dispositivo I2C - https://bit.ly/36yY6N0.
Usando la API I2C, compilé una clase envoltura para weather board2 y I2C LCD. Aquí tienes una parte del código de ejemplo para leer y escribir datos con la API de Android things.
… private void softrst() throws IOException { device.writeRegByte(reg.RST, POWER_MODE.SOFT_RESET_CODE); } private byte getPowerMode() throws IOException { return (byte) (device.readRegByte(reg.CTRL_MEAS) & 0b11); } ...El código es parte de BME280.java. El primer método se llama para reiniciar el chip y el segundo método para obtener el modo de energía del chip. El primer parámetro de cada API es la dirección del registro en el chip. En el método de escritura, el segundo parámetro suele ser la información a transferir. En el método de lectura, el segundo parámetro generalmente no existe. Sin embargo, si desea leer datos por búfer, necesita un búfer para leer y el búfer se pasa como un segundo parámetro.
Puedes probar o usar el proyecto. Aquí tienes el link.
Weather board2 con ejemplo de android things - https://bit.ly/3aKqjnr. Ejemplo de I2C LCD con android things - https://bit.ly/2RUvIzJ.
A continuación, se muestra la conexión del hardware de la Weather board 2:
El resultado de la salida Weather Board 2 sería así:
A continuación, se muestra la conexión y el resultado del hardware LCD I2C:
PWM
Las cosas de Android también son compatibles con PWM. Existen muchos métodos para configurar y controlar la interfaz PWM. Puedes configurar la frecuencia PWM a través de setPwmFrequency. Antes de habilitar el pin, debe establecer la frecuencia a través de este método. También puede fijar el ciclo de trabajo PWM estableciendo setPwmDutyCycle entre 0 y 100. Las configuraciones de frecuencia y ciclo de trabajo se pueden ajustar en estado habilitado y deshabilitado y serán recordadas.
Por favor, consulta la referencia. https://developer.android.com/things/sdk/pio/pwm.
Aquí está el proyecto de prueba PWM. En este ejemplo, puede activar y desactivar un pin PWM. y cambiar el ciclo de trabajo a través de la barra de progreso en la Aplicación: https://github.com/xiane/thingsGpioExample/tree/pwm.
Ten en cuenta que el voltaje en los pines GPIO en ODROID-N2 es de 3.3V.
Referencia https://bit.ly/36qpFrW
Be the first to comment