Skip to content

Rasppberry‐Pi Jetson Nano

Emir HAMURCU edited this page Aug 15, 2023 · 3 revisions

Montaj tamamlandığında, yazılım Raspberry Pi'ye kurulabilir ve aşağıdaki adımlarla çalıştırılabilir.

Not: Tüm donanım bileşenlerine sahip değilseniz, tüm adımlara ihtiyacınız olmayabilir.

Depoyu Klonlayın

Bu proje, sürüm kontrolü için GitHub kullanmaktadır. Deposunu Raspberry Pi'nize veya Jetson Nano'nunuza klonlayın.

git clone https://github.com/dmt-labs/modular-biped.git

Terminalinizde, klonlanan dizine gidin ve kullanmak istediğiniz dalı seçin. Ana dal en kararlı ve güncel olanıdır. Dev dalı geliştirme için kullanılır ve kararlı olmayabilir.

git checkout main

Aşağıdaki komutlar, bir terminal kullanıyor olduğunuzu ve proje dizininde olduğunuzu varsayar.

Kurulum

Bir kurulum bash betiği mevcuttur. İzinleri verin ve çalıştırın.

chmod 777 install.sh
./install.sh

Yapılandırma

Tüm genel ve özellik özgü yapılandırmalar, proje modülleri dizinindeki config.py dosyasına eklenir.

Yapılandırmadaki her öğe, donanım kurulumunuzla eşleşmelidir.

Başlangıçta çalıştırmak için, /etc/rc.local dosyasına ./startup.sh betiğini çağıran bir çağrı ekleyin.

Servolar

Servo aralıkları, hem modules/config.py dosyasında hem de arduino_sketch/Config.h dosyasında tanımlanmıştır. Bu, donanım kurulumunuza uymalıdır.

Servolar başlatıldıktan sonra, Arduino yazılımı servoların bu aralıkların dışına çıkmasını engeller. Bu, servolara ve robota zarar gelmesini önlemek içindir.

Önemli: Bu, başlangıç ​​konumları için geçerli değildir, bu yüzden burada hangi değerleri ayarladığınıza dikkat edin.

Daha fazla bilgi için Arduino sayfasına bakın.

Çalıştırma

Normal başlangıç

./startup.sh

Klavye aracılığıyla manuel kontrolü gerçekleştirmek için:

./manual_startup.sh

Video akışının önizlemesini içeren başlangıcı yürütmek için (SSH aracılığıyla kullanılamaz):

./preview_startup.sh

Test

Testler için PyTest kullanılmaktadır. Tüm testleri çalıştırmak için:

python3 -m pytest --cov=modules --cov-report term-missing

Şu anda test sınıfları sınırlıdır, ancak proje ilerledikçe eklenirler.

Özellik özel yapılandırma

Otomatik kapanma

Başlangıç komutunu Pi'nin önyükleme dosyasına ekleyin (edit /etc/rc.local). Bu komutu projenin dizininde ./stop.sh komutunu çalıştırarak durdurabilirsiniz.

Aynı zamanda GPIO 26, bir anahtara basıldığında toprağa getirilerek kapatmayı sağlamak için bağlanmıştır.

Rehber: https://howchoo.com/g/mwnlytk3zmm/how-to-add-a-power-button-to-your-raspberry-pi

Komut dosyası:

#!/usr/bin/env python

import RPi.GPIO as GPIO
import subprocess

GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.wait_for_edge(26, GPIO.FALLING)

subprocess.call(['pkill', '-f', 'main.py'], shell=False) # Ana betiği güvenli bir şekilde sonlandır
subprocess.call(['shutdown', '-h', 'now'], shell=False)

Neopixel

WS1820B desteği, Pi GPIO pini 12 üzerinden sağlanır. Ne yazık ki bu ses çıkışını engeller. (bkz. tartışma)

sudo vim /boot/config.txt
#dtparam=audio=on

Neopixeller kullanılıyorsa uygulama sudo ile çalıştırılmalıdır.

Bu nedenlerle Neopixel gözü, RGB bir alternatif ile değiştirilmektedir.

https://learn.adafruit.com/neopixels-on-raspberry-pi/python-usage

Buzzer

Bir buzzer, ses tonlarının çalınabilmesi için GPIO 27'ye bağlıdır.

Hareket Sensörü

GPIO 13'te bir RCWL-0516 mikrodalga radar sensörü bulunmaktadır.

Stereo i2s MEMS Mikrofonlar

GPIO 18, 19 ve 20, stereo MEMS mikrofonlarına ses girişi olarak izin verir. Bu, etkinleştirmek için ek yapılandırma adımlarını içerir.

Mikrofon 3V'ü Pi 3.3V'ye
Mikrofon GND'si Pi GND'ye
Mikrofon SEL'i Pi GND'ye (bu kanal seçimi için kullanılır, 3.3V veya GND'ye bağlayın)
Mikrofon BCLK'si BCM 18 (pin 12)
Mikrofon DOUT'u BCM 20 (pin 38)
Mikrofon LRCL'si BCM 19 (pin 35)
sudo apt-get -y update
sudo apt-get -y upgrade

Yeniden başlat

cd ~
sudo pip3 install --upgrade adafruit-python-shell
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2smic.py
sudo python3 i2smic.py

Test

arecord -l arecord -D plughw:0 -c2 -r 48000 -f S32_LE -t wav -V stereo -v file_stereo.wav

Not: Ses tanıma desteğini sağlamak için ek yapılandırmayı aşağıda bulabilirsiniz.

Konuşma Tanıma

Ses tanıma tetikleyici kelimesi (şu anda kullanılmıyor): https://snowboy.kitt.ai/

Yüz görüldüğünde konuşma tanıma etkinleştirilir.

modules/speechinput.py içinde belirtilen device_index'in mikrofonunuzla eşleştiğinden emin olun. (aşağıya bakınız).

MEMS mikrofonu yapılandırması için aşağıya bakınız.

Konuşma Tanıma için MEMS Mikrofonu Yapılandırması

Varsayılan olarak, Adafruit I2S MEMS Mikrofon Breakout konuşma tanıma ile çalışmaz.

MEMS mikrofon(lar) için ses tanıma desteğini sağlamak için aşağıdaki yapılandırma değişiklikleri gereklidir.

sudo apt-get install ladspa-sdk

Aşağıdaki içerikle /etc/asound.conf dosyasını oluşturun: (slave.pcm "plughw:0" satırında, 0arecord -l'den kartınızın diziniyle değiştirin.)

pcm.pluglp {
    type ladspa
    slave.pcm "plughw:0"
    path "/usr/lib/ladspa"
    capture_plugins [
   {   


      label hpf
      id 1042
   }
        {
                label amp_mono
                id 1048
                input {
                    controls [ 30 ]
                }
        }
    ]
}

pcm.lp {
    type plug
    slave.pcm pluglp
}

Bu, 'lp' adlı cihazın ses tanımında referans alınmasını sağlar. Aşağıdaki örnekteki gibi dizin 18'de gösterilmiştir. Not: Modül otomatik olarak adı lp olan cihazı algılayacak ve doğru dizini kullanacaktır. Örnek oran ayrıca 16000 olarak ayarlanmalıdır.

mic = sr.Microphone(device_index=18, sample_rate=16000)

Referanslar:

Arduino ile Seri İletişim

Raspberry Pi'nin seri portunu kullanmak için önce getty'i devre dışı bırakmamız gerekiyor (giriş ekranını görüntüleyen program)

sudo raspi-config -> Interfacing Options -> Serial -> "Would you like a login shell to be accessible over serial" = 'No'. Restart

Seri pinleri üzerinden bağlantı

Pi GPIO 14 & 15 (tx & rx) arduino tx & rx (tx -> rx her iki yönde de!) mantıksal seviye kaydırıcı aracılığıyla bağlanır, çünkü Pi 3v3 ve arduino (muhtemelen) 5v'dir.

Seri pinleri üzerinden Arduino'ya yükleme

Arduino'daki taslak doğrudan Raspberry Pi üzerinden Arduino IDE kullanılarak güncellenebilir. Daha fazla bilgi için Arduino sayfasına bakın.

PCB Düzeni

Özel bir PCB, Raspberry Pi'ye bağlanmak üzere tasarlanmıştır. Bu, circuits klasöründe bulunabilir.

PCB düzeni

Pin Düzeni

Özel PCB kullanarak Raspberry Pi üzerinde kullanılan pinleri gösterir. Özellikler hakkında daha fazla bilgi için wiki'ye bakın.

LLC+MEMS+I2C - 3V3  (1) (2)  5V - Power
         I2C GPIO2  (3) (4)  5V
         I2C GPIO3  (5) (6)  GND
             GPIO4  (7) (8)  GPIO14 - TX/RX
      Ground - GND  (9) (10) GPIO15 - TX/RX
            GPIO17 (11) (12) GPIO18 - MEMS
   Buzzer - GPIO27 (13) (14) GND
            GPIO22 (15) (16) GPIO23
               3V3 (17) (18) GPIO24
            GPIO10 (19) (20) GND
             GPIO9 (21) (22) GPIO25
            GPIO11 (23) (24) GPIO8
               GND (25) (26) GPIO7
             GPIO0 (27) (28) GPIO1
             GPIO5 (29) (30) GND
             GPIO6 (31) (32) GPIO12
   Motion - GPIO13 (33) (34) GND
     MEMS - GPIO19 (35) (36) GPIO16
 Shutdown - GPIO26 (37) (38) GPIO20 - MEMS
        MEMS - GND (39) (40) GPIO21

Sorunlar ?

Bu proje devam eden bir çalışmadır. Sorunlarınız veya sorularınız varsa lütfen github'da bir sorun açın ve kendim veya katkıda bulunanlardan biri yardımcı olabilir.