Jak nainstalovat integraci Drátek eInk do Home Assistantu
Průvodce instalací integrace Drátek eInk do Home Assistantu pomocí obchodu HACS.
Pro M5stack jednotky lze zakoupit různé rozšiřovací moduly, kdy jedním ze základních je ACCEL, celým názvem accelerometer. Uvnitř modulu se nachází integrovaný obvod ADXL345.
Pro jeho spojení s M5stack deskou stačí propojit 4 vodiče, přičemž můžeme propojit modul s M5stack zařízením pomocí dodaného kabelu pomocí Grove konektoru. Pokud budete chtít zapojit modul napřímo, tak propojte GND s GND, 5V s 5V, SCL s pinem D22 a SCL s pinem D21. Piny SDA a SCL odpovídají pinům sběrnice I2C.
Ukázkový program najdete níže, přičemž jeho popis můžete najít na videu, které je připojeno na konci návodu.
// M5 stack a jednotka ACCEL
// Akcelerometr ADXL345
// navody.dratek.cz
// připojení potřebných knihoven
#include <M5Stack.h>
#include <SparkFun_ADXL345.h>
// vytvoření objektu akcelerometru
ADXL345 adxl = ADXL345();
void setup() {
// zahájení komunikace s M5 stack
M5.begin();
// zahájení komunikace s napájecím čipem
M5.Power.begin();
// vypnutí reproduktoru
dacWrite(25, 0);
// zapnutí senzoru
adxl.powerOn();
adxl.setRangeSetting(16); // nastavení citlivosti na 16g
adxl.setActivityXYZ(1, 0, 0); // Set to activate movement detection in the axes "adxl.setActivityXYZ(X, Y, Z);" (1 == ON, 0 == OFF)
adxl.setActivityThreshold(75); // 62.5mg per increment // Set activity // Inactivity thresholds (0-255)
adxl.setInactivityXYZ(1, 0, 0); // Set to detect inactivity in all the axes "adxl.setInactivityXYZ(X, Y, Z);" (1 == ON, 0 == OFF)
adxl.setInactivityThreshold(75); // 62.5mg per increment // Set inactivity // Inactivity thresholds (0-255)
adxl.setTimeInactivity(10); // How many seconds of no activity is inactive?
adxl.setTapDetectionOnXYZ(0, 0, 1); // Detect taps in the directions turned ON "adxl.setTapDetectionOnX(X, Y, Z);" (1 == ON, 0 == OFF)
// Set values for what is considered a TAP and what is a DOUBLE TAP (0-255)
adxl.setTapThreshold(50); // 62.5 mg per increment
adxl.setTapDuration(15); // 625 μs per increment
adxl.setDoubleTapLatency(80); // 1.25 ms per increment
adxl.setDoubleTapWindow(200); // 1.25 ms per increment
// Set values for what is considered FREE FALL (0-255)
adxl.setFreeFallThreshold(7); // (5 - 9) recommended - 62.5mg per increment
adxl.setFreeFallDuration(30); // (20 - 70) recommended - 5ms per increment
// zapnutí detekce všech přerušení
adxl.InactivityINT(1);
adxl.ActivityINT(1);
adxl.FreeFallINT(1);
adxl.doubleTapINT(1);
adxl.singleTapINT(1);
// nastavení velikosti textu
M5.Lcd.setTextSize(4);
// nastavení kurzoru do levého horního rohu
M5.Lcd.setCursor(0, 0);
// vypsání základního textu
M5.Lcd.println("Hodnota ACCEL");
M5.Lcd.print("X | Y | Z");
}
void loop() {
// vyčtení údajů do vytvořených proměnných
int x, y, z;
adxl.readAccel(&x, &y, &z);
// vytisknutí všech údajů na displej
M5.Lcd.setTextColor(YELLOW);
M5.Lcd.setCursor(0, 80);
M5.Lcd.print(x);
M5.Lcd.print(", ");
M5.Lcd.print(y);
M5.Lcd.print(", ");
M5.Lcd.println(z);
// kontrola všech přerušení
ADXL_ISR();
// krátká pauza
delay(500);
// smazání údajů černou barvou
M5.Lcd.setTextSize(4);
M5.Lcd.setTextColor(BLACK);
M5.Lcd.setCursor(0, 80);
M5.Lcd.print(x);
M5.Lcd.print(", ");
M5.Lcd.print(y);
M5.Lcd.print(", ");
M5.Lcd.println(z);
// vymazání předchozí zprávy o přerušeních
M5.Lcd.fillRect(0, 120, 305, 120, BLACK);
}
void ADXL_ISR() {
// nastavení menšího textu, barvy a pozice
M5.Lcd.setTextSize(3);
M5.Lcd.setTextColor(RED);
M5.Lcd.setCursor(0, 120);
// načtení všech přerušení do proměnné
byte interrupts = adxl.getInterruptSource();
// detekce volného pádu
if (adxl.triggered(interrupts, ADXL345_FREE_FALL)) {
M5.Lcd.println("Volny pad!");
}
// detekce neaktivity
if (adxl.triggered(interrupts, ADXL345_INACTIVITY)) {
M5.Lcd.println("Neaktivita!");
}
// detekce aktivity
if (adxl.triggered(interrupts, ADXL345_ACTIVITY)) {
M5.Lcd.println("Aktivita!");
}
// detekce dvojitého poklepání
if (adxl.triggered(interrupts, ADXL345_DOUBLE_TAP)) {
M5.Lcd.println("Dvoji poklepani!");
}
// detekce poklepání
if (adxl.triggered(interrupts, ADXL345_SINGLE_TAP)) {
M5.Lcd.println("Poklepani!");
}
}
Sestřih ze streamu:
Celý záznam:
Na eshopu můžete tento M5stack Accel modul zakoupit zde:
https://dratek.cz/arduino/20938-m5stack-3osy-akcelerometr.html
Průvodce instalací integrace Drátek eInk do Home Assistantu pomocí obchodu HACS.
Návod, jak jednoduše přidat a nastavit Drátek e-ink displej do Home Assistant