Chytrá WiFi zásuvka Sonoff S26
Chytrá domácnost umožňuje ovládat elektrické spotřebiče na dálku. A přesně to umožní zásuvka Sonoff S26.
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
Chytrá domácnost umožňuje ovládat elektrické spotřebiče na dálku. A přesně to umožní zásuvka Sonoff S26.
e-Paper displeje už jsou dostupné i pro bastlení za rozumné ceny a pro jejich ovládání se hodí tento Driver.