SEAME-pt / Team05_SEA-ME_DES

0 stars 0 forks source link

Arduino vs jetson nano #11

Open matde-je opened 2 days ago

matde-je commented 2 days ago

Does the jetson nano communicate with the speed sensor to get the speed? If yes, then how can we output that speed in our terminal? And therefore there's no need to use Arduino.

JoelenCruz commented 2 days ago

Image

JoelenCruz commented 2 days ago

[LM393 Velocity Sensor for Jetson Nano in forum] (https://forums.developer.nvidia.com/t/lm393-velocity-sensor-for-jetson-nano/84279) https://forums.developer.nvidia.com/t/lm393-velocity-sensor-for-jetson-nano/84279

JoelenCruz commented 2 days ago

SEN-Speed LM393 Sensor com Jetson Nano

Este guia detalha como conectar e configurar o sensor SEN-Speed LM393 com o Jetson Nano para medir a velocidade de rotação utilizando o disco encoder.


Descrição do Projeto

O sensor LM393 detecta a rotação do disco encoder e envia pulsos digitais correspondentes ao número de interrupções ópticas. Esses pulsos podem ser capturados pelo Jetson Nano para calcular a velocidade em pulsos por segundo ou RPM (rotações por minuto).


Materiais Necessários


Esquema de Conexão

Conecte os pinos do sensor LM393 ao cabeçalho GPIO J41 do Jetson Nano conforme abaixo:

Pino do Sensor Pino no Jetson Nano (J41) Descrição
VCC 5V (pino 2 ou 4) Alimentação do sensor
GND GND (pino 6, 9, etc.) Terra
DO GPIO (ex.: pino 18 / GPIO 12) Saída digital do sensor

Nota: Certifique-se de que o sensor esteja alimentado corretamente (geralmente 5V). Verifique o número de ranhuras no disco encoder para ajustar os cálculos de RPM, se necessário.


Instalação de Software

1. Instale a biblioteca GPIO

No Jetson Nano, use a biblioteca Jetson.GPIO para acessar os GPIOs:

pip3 install Jetson.GPIO

Testando o Sensor

Conecte os fios do sensor ao Jetson Nano conforme descrito no esquema. Execute o script Python no Jetson Nano:

python3 sensor_speed.py

Gire o disco encoder e observe os valores de velocidade sendo exibidos no terminal.

JoelenCruz commented 2 days ago

import Jetson.GPIO as GPIO
import time

# Configurações do GPIO
SENSOR_PIN = 12  # GPIO 12 (pino 18 no cabeçalho J41)

GPIO.setmode(GPIO.BOARD)  # Usa o número físico dos pinos
GPIO.setup(SENSOR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # Configura o pino como entrada

# Variáveis para cálculo de velocidade
pulse_count = 0
start_time = time.time()

# Callback para contar os pulsos
def pulse_callback(channel):
    global pulse_count
    pulse_count += 1

# Configura a interrupção para capturar bordas de subida
GPIO.add_event_detect(SENSOR_PIN, GPIO.RISING, callback=pulse_callback)

try:
    while True:
        time.sleep(1)  # Aguarda 1 segundo
        elapsed_time = time.time() - start_time
        speed = pulse_count / elapsed_time  # Pulsos por segundo
        print(f"Velocidade: {speed:.2f} pulsos/segundo")

        # Reinicia as variáveis
        pulse_count = 0
        start_time = time.time()

except KeyboardInterrupt:
    print("Encerrando o programa...")

finally:
    GPIO.cleanup()  # Limpa as configurações do GPIO
JoelenCruz commented 2 days ago

https://jetsonhacks.com/nvidia-jetson-nano-j41-header-pinout/ pin map of the jetson nano. On the board there are also markings

JoelenCruz commented 2 days ago

On how the sensor works: This example is using arduino: https://www.youtube.com/watch?v=-IvUi9947Kg