Сообщения

DRV8833

Изображение
DRV8833.  DRV8833 управляет двумя моторами (A и B). ESP32-C3 > DRV8833  GND  > GND  5V  > VCC   D6 > IN3   D7 >  IN4   D8 > EEP     DRV8833  > Motor   OUT3  > pin1   OUT4  > pin2   main.py      from machine import Pin, PWM import time A1 = PWM(Pin(4), freq=1000) A2 = PWM(Pin(5), freq=1000) B1 = PWM(Pin(6), freq=1000) B2 = PWM(Pin(7), freq=1000) def motor(p1, p2, speed):     speed = max(-1023, min(1023, speed))     if speed > 0:         p1.duty(speed)         p2.duty(0)     elif speed < 0:         p1.duty(0)         p2.duty(-speed)     else:         p1.duty(0)         p2.duty(0) motor(A1, A2, 700) motor(B1, B2, -500) time.sleep(2) motor(B1, B2, 500) time.sleep(2) motor(A1, A2, 0) motor(B1,...

RCWL-0515

Изображение
RCWL-0515.  - это микроволновой датчик движения, который использует эффект Доплера для обнаружения движущихся объектов (людей, животных и т. п.). Он выдаёт цифровой сигнал HIGH (лог.1), когда движение обнаружено, и LOW (лог.0) — когда движения нет. ESP32-C3 > RCWL-0515  GND  > GND  3V3  > VCC   D2 > >OUT   main.py      from machine import Pin import time # Настройки пинов SENSOR_PIN = 2   # поменяйте на тот GPIO, где у вас OUT LED_PIN = 8       # встроенный светодиод на многих платах ESP32-C3 # Инициализация пинов sensor = Pin(SENSOR_PIN, Pin.IN) led = Pin(LED_PIN, Pin.OUT) last_state = 0  # последнее состояние движения print("Запущено... Ожидание движения") while True:     val = sensor.value()  # прочитать состояние датчика     if val == 1:  # если датчик HIGH         led.off()         if last_state == 0: ...

Touch ESP32

Изображение
Touch ESP32.  Сенсорный датчик.   ESP32 > T  GND  > GND  3V3  > VCC   D4 > IO   main.py      from machine import Pin import time touch = Pin(4, Pin.IN) led = Pin(2, Pin.OUT) state = 0          # состояние светодиода last_touch = 0     # предыдущее состояние кнопки while True:     current = touch.value()     # обнаружение нажатия (фронт)     if current == 1 and last_touch == 0:         state = not state         led.value(state)         time.sleep(0.2)  # антидребезг     last_touch = current     time.sleep(0.01)

WEB ESP32

Изображение
Управление светодиодом через сайт.  Кнопки ВКЛ , ВЫКЛ . Можно подключить реле и управлять лампочкой, розеткой и т д.        Для нормальной работы нужно добавить свои данные SSID , пароль. main.py      import network import time from machine import Pin #from led_driver import print_like_console , print_multiline_console # === НАСТРОЙКИ WI-FI (Измени на свои!) === SSID = "ESP32HUB"         # ←←← Впиши сюда имя своего Wi-Fi PASSWORD = "A1b2c3d4"     # ←←← Впиши сюда пароль # === Пин светодиода === LED_PIN = 2               # встроенный светодиод на большинстве ESP32 led = Pin(LED_PIN, Pin.OUT) led.off() # === Подключаемся к Wi-Fi === wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(SSID, PASSWORD) print("Подключаюсь к Wi-Fi...", SSID) while not wlan.isconnected():     time.sleep(0.5)     print(".", end="") print("\nПодключено!")...

Telegram bot esp32 control

Изображение
Управление светодиодом через ТГ бота.  Кнопки ВКЛ , ВЫКЛ и Статус. Можно подключить реле и управлять лампочкой, розеткой и т д.        Для нормальной работы нужно добавить свои данные SSID , пароль , токен тг бота и ID  пользователя. Токен ТГ бота получаем у бота  @BotFather main.py      # reliable_bot.py import network, time, urequests from machine import Pin import socket WIFI_SSID = "" WIFI_PASS = "" BOT_TOKEN = "" CHAT_ID =  BASE = "https://api.telegram.org/bot" + BOT_TOKEN led = Pin(2, Pin.OUT) led.off() offset = 0 # WiFi helper wlan = network.WLAN(network.STA_IF) def wifi_connect():     wlan.active(True)     if not wlan.isconnected():         print("Connecting WiFi...")         wlan.connect(WIFI_SSID, WIFI_PASS)         t0 = time.time()         while not wlan.isconnected():             # если ...

Контроль заряда аккумулятора

Изображение
INA219 Для контроля заряда и SSD1306  для отображения данных.  При перезагрузке данные сбрасываются ESP32 > INA219  GND  > GND  3V3  > VCC   D47 > SCL   D48 > SDA   Вывод :  I = 63.20 mA, V = 2.676 V Charge: 2535.3274 mAh Energy: 10.7516 mWh main.py      ffrom machine import Pin, I2C from ina219 import INA219 import time from led_driver import print_like_console , print_multiline_console # ESP32-S3 I2C pins (пример): # SDA = 8 # SCL = 9 i2c = I2C(1, scl=Pin(47), sda=Pin(48), freq=400000) print("I2C scan:", i2c.scan()) ina = INA219(i2c)  # <-- правильный вызов while True:     lines = []     print("Bus Voltage:", ina.bus_voltage, "V")     print("Shunt Voltage:", ina.shunt_voltage, "V")     print("Current:", ina.current, "mA")     print()     time.sleep(1)          lin es.append(f"Volt: {ina.bus_voltage} V") ...

MAX30102

Изображение
MAX30102.   Датчик сердечного ритма.   ESP32 > MAX30102  GND  > GND  3V3  > VCC   D5 > SCL   D6 > SDA   Вывод : NO FINGER.   RED: 49172  IR: 38468  SpO₂: 99.  main.py      from machine import Pin, I2C import time from max30102 import MAX30102 from biosensor import IIRFilter, FingerDetect, SpO2Calculator #from led_driver import print_like_console , print_multiline_console i2c = I2C(0, scl=Pin(5), sda=Pin(6), freq=400000) sensor = MAX30102(i2c) finger = FingerDetect() spo2_calc = SpO2Calculator() print("READY") while True:     red, ir = sensor.read_fifo()     # 1️⃣ авто-детект пальца     if not finger.update(ir):         print("NO FINGER")         #print_like_console('NO FINGER', x=0, y=0, delay=0.005)         time.sleep(0.1)         continue     # 2️⃣ SpO2...