ESP32: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Linux]] |
||
+ | [[Категория:ESP32]] |
||
=ESP32= |
=ESP32= |
||
Строка 17: | Строка 19: | ||
=UART READ= |
=UART READ= |
||
<PRE> |
<PRE> |
||
− | + | from machine import UART |
|
− | + | uart = UART(1, 9600) # init with given baudrate |
|
− | + | uart = UART(2, 9600) # init with given baudrate |
|
− | + | uart.init(9600, bits=8, parity=None, stop=1) |
|
− | + | uart.read() |
|
</PRE> |
</PRE> |
||
<PRE> |
<PRE> |
||
Строка 63: | Строка 65: | ||
=Ультразвуковой датчик HC-SR04= |
=Ультразвуковой датчик HC-SR04= |
||
* https://arduino.ua/prod182-yltrazvykovoi-datchik-rasstoyaniya-hc-sr04 |
* https://arduino.ua/prod182-yltrazvykovoi-datchik-rasstoyaniya-hc-sr04 |
||
+ | * http://wiki.amperka.ru/продукты:hc-sr04-ultrasonic-sensor-distance-module |
||
+ | |||
+ | <PRE> |
||
+ | import utime |
||
+ | import machine |
||
+ | |||
+ | PIN_TRIG=32 |
||
+ | PIN_ECHO=35 |
||
+ | ECHO_SLEEP=10 |
||
+ | PAUSE=1 |
||
+ | # 0.1 sec = 100000 us |
||
+ | MAX_READ_TIME=100000 |
||
+ | |||
+ | def read(): |
||
+ | pin_echo = machine.Pin(PIN_ECHO, machine.Pin.IN) |
||
+ | pin_trig = machine.Pin(PIN_TRIG, machine.Pin.OUT) |
||
+ | pin_trig.on() |
||
+ | utime.sleep_us(ECHO_SLEEP) |
||
+ | pin_trig.off() |
||
+ | deadline = utime.ticks_add(utime.ticks_us(), MAX_READ_TIME ) |
||
+ | |||
+ | while utime.ticks_diff(deadline, utime.ticks_us()) > 0: |
||
+ | if pin_echo.value() == 1: |
||
+ | pulse_start = True |
||
+ | pulse_start_tics=utime.ticks_us(); |
||
+ | |||
+ | while pin_echo.value() == 1: |
||
+ | utime.sleep_us(PAUSE) |
||
+ | |||
+ | pulse_finish_tics=utime.ticks_us(); |
||
+ | time_diff = utime.ticks_diff(pulse_finish_tics, pulse_start_tics) |
||
+ | |||
+ | # 34 mm per 100 us |
||
+ | distance_mm = 34 / 100 /2 * time_diff |
||
+ | return(distance_mm) |
||
+ | return(-1) |
||
+ | </PRE> |
||
+ | |||
+ | |||
+ | ==Модуль ИК-отражателя TCRT5000== |
||
+ | |||
+ | * Источник https://arduino.ua/prod1209-modyl-ik-otrajatelya-tcrt5000 |
Текущая версия на 09:01, 30 октября 2023
ESP32
@DmZ:
Краткая инструкция: 1. Install SiLabs drivers 2. brew install esptool 3. https://docs.micropython.org/en/latest/esp32/tutorial/intro.html 4. screen /dev/tty.SLAB_USBtoUART 115200 (поиграться с питоном) 5. pip3 install mpfshell 6. https://github.com/wendlers/micropython-mfrc522 7. поменять в питоновых модулях esp8266 на esp32 и пины инициализации SPI в read/write.py 8. отредактировать и запустить deploy_esp.sh для копирования либ 9. зайти снова в скрин и попробовать почитать rfid
UART READ
from machine import UART uart = UART(1, 9600) # init with given baudrate uart = UART(2, 9600) # init with given baudrate uart.init(9600, bits=8, parity=None, stop=1) uart.read()
#!/usr/bin/env python #l = b'\x025E00DD3417A0\x03\x025E00DD3417A0\x03' #l = b'0DD3417A0\x03\x025E00DD3417A0\x0312113' l= b'\x0259004E6A7805\x03\x0259004E6A7805\x03' print(l) read_ids = [] id = "" start = False stop = False for char in l: # print(char) # print(int(char, 16)) print hex(ord(char)) if char == "\x02": print("found start") id = b"" start = True elif char == "\x03": print("found stop") if start: read_ids.append(id) start = False else: id = id + char print(read_ids) for id in read_ids: print(int(id, 16))
Ультразвуковой датчик HC-SR04
- https://arduino.ua/prod182-yltrazvykovoi-datchik-rasstoyaniya-hc-sr04
- http://wiki.amperka.ru/продукты:hc-sr04-ultrasonic-sensor-distance-module
import utime import machine PIN_TRIG=32 PIN_ECHO=35 ECHO_SLEEP=10 PAUSE=1 # 0.1 sec = 100000 us MAX_READ_TIME=100000 def read(): pin_echo = machine.Pin(PIN_ECHO, machine.Pin.IN) pin_trig = machine.Pin(PIN_TRIG, machine.Pin.OUT) pin_trig.on() utime.sleep_us(ECHO_SLEEP) pin_trig.off() deadline = utime.ticks_add(utime.ticks_us(), MAX_READ_TIME ) while utime.ticks_diff(deadline, utime.ticks_us()) > 0: if pin_echo.value() == 1: pulse_start = True pulse_start_tics=utime.ticks_us(); while pin_echo.value() == 1: utime.sleep_us(PAUSE) pulse_finish_tics=utime.ticks_us(); time_diff = utime.ticks_diff(pulse_finish_tics, pulse_start_tics) # 34 mm per 100 us distance_mm = 34 / 100 /2 * time_diff return(distance_mm) return(-1)