Seguridad I虏C con Tecnolog铆a BSS138
BSS138 Tech
Debido a que Arduino (y Basic Stamp) son dispositivos de $\mathbf{5\text{V}}$, y la mayor铆a de los sensores, pantallas y m贸dulos modernos operan a $\mathbf{3.3\text{V}}$, la conversi贸n de nivel l贸gico es crucial para proteger los dispositivos sensibles. Esta placa ofrece una soluci贸n robusta y segura.
Este *breakout* utiliza 4 transistores **FET BSS138** con *pull-ups* de $10\text{K}\Omega$. Sigue la nota de aplicaci贸n de **NXP** para un dise帽o FET compatible con $\mathbf{I}^2\mathbf{C}$, lo que lo hace ideal para la transferencia de datos bidireccional en buses $\text{I}^2\text{C}$, $\text{TTL Serial}$ y $\text{SPI}$ lento (hasta $2\text{MHz}$).
Conectando un sensor de $3.3\text{V}$ (ej. BMP180) a un microcontrolador de $5\text{V}$.
// Ejemplo: Comunicaci贸n I2C entre Arduino (5V) y Sensor (3.3V)
#include <Wire.h>
#include <Adafruit_BMP085.h> // Sensor de 3.3V
Adafruit_BMP085 bmp;
// CONEXIONES:
// Lado 3.3V (LV):
// - LV al 3.3V del Arduino
// - GND al GND del Arduino
// - SCL_LV al SCL del sensor
// - SDA_LV al SDA del sensor
// Lado 5V (HV):
// - HV al 5V del Arduino
// - SCL_HV al A4 del Arduino (SCL I2C)
// - SDA_HV al A5 del Arduino (SDA I2C)
void setup() {
Serial.begin(9600);
Serial.println("Convertidor de Nivel I2C: Test");
if (!bmp.begin()) {
Serial.println("Error: Sensor BMP180 no encontrado.");
while (1); // Detener ejecuci贸n
}
}
void loop() {
// Las lecturas son posibles gracias al convertidor:
float tempC = bmp.readTemperature();
float pressure = bmp.readPressure();
Serial.print("Temperatura: ");
Serial.print(tempC);
Serial.println(" *C");
Serial.print("Presion: ");
Serial.print(pressure);
Serial.println(" Pa");
delay(1000);
}