Yeni çıkan Raspberry Pi Pico 2, iki farklı CPU ile birlikte geliyor. Çift çekirdekli Arm Cortex M33 veya Dual Core RISC-V Hazard3, evet Raspberry Pi’nin ilk RISC-V ürünü! İkinci CPU’nun performansı, eski Raspberry Pi Pico’nun çift çekirdekli Arm Cortex M0+ ile yeni Arm Cortex M33 arasında bir yerde. RISC-V CPU, Raspberry Pi çalışanı Luke Wren tarafından ilginç bir yan proje olarak geliştirildi.
Özellik | Ahududu Pi Pico 2 | Ahududu Pi Pico |
---|---|---|
SoC | RP2350, Dual Core Arm Cortex M33 veya Dual Core RISC-V Hazard3 150 Mhz’e kadar çalışıyor | RP2040, 133 MHz’e kadar çalışan Dual Core Arm Cortex M0+ |
SRAM | 520 KB | 264 KB |
Flaş Depolama | 4MB QSPI | 2MB QSPI |
Güvenlik | Arm TrustZone, 8KB OTP, Güvenli Önyükleme | Hiçbiri |
Wi-Fi / Bluetooth | Hiçbiri | Hiçbiri (Pico W’da bu var) |
Dil Desteği | MikroPython, DevrePython, C, C++ | MikroPython, DevrePython, C, C++ |
USB Arayüzü | USB 1.1 Aygıt ve Ana Bilgisayar | USB 1.1 Aygıt ve Ana Bilgisayar |
GPIO Mantık Seviyesi | 3.3V | 3.3V |
GPIO | 26 x Dijital IO | 26 x Dijital IO |
4 x 12-bit ADC (Analog pinler) | 3 x 12-bit ADC (Analog pinler) | |
2 adet UART, 2 adet I2C, 2 adet SPI, 24 adet PWM | 2 adet UART, 2 adet I2C, 2 adet SPI, 16 adet PWM | |
Programlanabilir IO | 12 PIO Durum Makinesi | 8 PIO Durum Makinesi |
Yerleşik LED | GPIO25 | GPIO25 |
Güç | 1.8 ila 5.5V Mikro USB veya VSYS üzerinden | 1.8 ila 5.5V Mikro USB veya VSYS üzerinden |
MCU Uyku Modu | 100uA | |
Boyutlar | 21x51mm | 21x51mm |
Fiyat | 5 dolar | $4 |
Şu anda bu yeni CPU’yu kullanmanın iki yolu var, C++ iş akışı ve en son MicroPython yazılımının önizlemesini kullanmak. RISC-V için en son MicroPython yazılımını kullanarak bunun Arm CPU için kullanılan MicroPython sürümü kadar kolay olduğunu göstereceğiz.
Projenin amacı, RISC-V CPU’sunun zamanlama açısından kritik WS2812B protokolünü işleyebildiğini ve ofis için oldukça muhteşem bir “disko ışığı” efekti üretebildiğini gösteren bir WS2812B “NeoPixel” ışık dizisi oluşturmaktır.
Bunun için nasıl yapmanız gerektiğine ihtiyacınız olacak
- Ahududu Pi Pico 2
- İyi kalitede mikro USB kablosu
- Yarım boy breadboard
- WS2812B “NeoPixel” çubuğu
- 3 x Erkekten erkeğe bağlantı kablosu
Raspberry Pi Pico 2’de RISC-V için MicroPython Kurulumu
1. RISC-V MicroPython UF2 dosyasını indirin dan MicroPython kaynağı. RISC-V önizlemesini indirdiğinizden emin olun. Bunun bir önizleme olduğunu ve bazı şeylerin bozulmaya müsait olduğunu unutmayın, bu nedenle bu aygıt yazılımıyla kritik görev gerektiren hiçbir proje oluşturmayın.
2. BOOTSEL düğmesine basın ve basılı tutun Pico 2’de, ardından bir mikro USB kablosu kullanarak bilgisayarınıza bağlayın. Bilgisayarınızda RP2350 sürücüsü göründüğünde BOOTSEL’i serbest bırakın.
3. UF2 dosyasını sürükleyip bırakın RP2350 sürücüsüne. Raspberry Pi Pico 2 yeniden başlatılacak ve şimdi MicroPython’u çalıştıracak.
MicroPython’u hiç kullanmadıysanız, bu mikrodenetleyiciler için geliştirilmiş bir Python 3 sürümüdür. Python yazabiliyorsanız, o zaman MicroPython yazabilirsiniz. MicroPython kodu yazmak için özel bir düzenleyici kullanmamız gerekir ve varsayılan, temel düzenleyici Thonny’dir ve bu eğitimde bunu kullanacağız.
4. İndir ve kur Tombul işletim sisteminiz için.
5. Thonny’yi açın.
6. Raspberry Pi Pico’yu bağlayın 2 bilgisayarınıza ve Thonny Araçlar > Seçenekler’e gidin Ve Tercüman sekmesine tıklayın. Yorumlayıcıdan, açılır listeden MicroPython (Raspberry Pi Pico) seçin. Port açılır menüsü Pico’yu otomatik olarak algılamak için bırakılabilir. Tamam’a tıklayın kapatmak.
7. “RP2350-RISCV ile Raspberry Pi Pico2” için Python Shell’i (REPL) kontrol edin doğru şekilde kurulduğunu onaylamak için.
Devreyi Oluşturmak
Devre, yalnızca üç tel kullanan Pico 2 ve WS2812B “NeoPixels” arasındaki basit bir bağlantıdır. Güç ve veri için bağlantılara ihtiyacımız var.
Ahududu Pi Pico 2 | NeoPikseller | Tel Rengi |
---|---|---|
3V3 ÇIKIŞ | +5V (Şasi) | Kırmızı |
GND (Herhangi biri) | Yeraltı | Siyah |
GPIO16 | DIN (Veri Girişi) | Turuncu |
Neopixel’lerinize header pinlerini lehimlemeniz gerekebilir, bunun için en iyi lehimleme demirine veya lehimleme istasyonuna ve lehimlemenin nasıl yapılacağına dair kısa bir tekrara ihtiyacınız olacak.
Kodun yazılması
Kodun amacı NeoPiksellerin tüm uzunluğu boyunca yarı rastgele bir ışık dizisi oluşturmaktır.
1. Thonny’de yeni bir boş dosya oluşturun (Dosya >> Yeni).
2. Bir dizi modülü (önceden yazılmış kodu) içe aktarın. İlki makinedir, bu kodun Pico 2’nin GPIO’suyla konuşmasını sağlar. Sonraki, WS2812B RGB LED’leriyle çalışmayı çok daha kolay hale getiren bir soyutlama olan NeoPixel’dir. Sonra, koda gecikmeler eklemek için kullanılan zamanı içe aktarırız. Son olarak, rastgele modülden rastgele tam sayı üretecini içe aktarırız. Bu, kodumuzda rastgele sayılar üretmek için kullanılır.
import machine
import neopixel
import time
from random import randint
3. Bir nesne, np, yaratın ve bunu koda, 16. pine bağlı NeoPiksellerimiz olduğunu ve zincirde 8 “piksel” (bireysel LED’ler) olduğunu söylemek için kullanın. Bu değeri, sahip olduğunuz sayıya uyacak şekilde değiştirin.
np = neopixel.NeoPixel(machine.Pin(16),8)
4. Bir deneme, istisna işleme dizisi oluşturun. Temel olarak bu, Pico 2’ye içinde girintili olan kodu çalıştırmayı denemesini söyler. Başarısız olursa, bir istisna oluşturulur ve bunu daha sonra yakalarız.
try:
5. Bu kodun “denenmesi” ve çalıştırılması gerektiğini göstermek için girintili olarak while True döngüsü ekleyin kodu sonsuza kadar çalıştırmak için. Thonny yazdığımız sırada kodu otomatik olarak girintileyecektir.
while True:
6. 0 ile 128 (r,g,b) ve 0 ile 7 arasındaki rastgele oluşturulmuş sayıları depolamak için r,g,b ve n olmak üzere dört nesne oluşturun (n, zincirimizdeki NeoPiksel sayısı, sekiz tane var ama Python saymaya sıfırdan başlıyor.) 128 değeri NeoPikseller için yarı parlaklıktır. olabilmek Tam parlaklık için bunu 255 olarak ayarlayın, ancak bu daha fazla güç tüketir ve ışığa duyarlılığı olanları etkileyebilir.
r = randint(0,128)
g = randint(0,128)
b = randint(0,128)
n = randint(0,7)
7. Mevcut renk karışımı değerlerini Python Kabuğuna yazdırın. Bu, rastgele seçilen rengi oluşturan R,G ve B renklerinin karışımıdır.
print("This color is: ","{} {} {}".format(r,g,b))
8. Daha önce oluşturduğumuz np nesnesini kullanarak rastgele seçilen pikselin (n) değerini r,g,b olarak saklanan renk karışımına atayın.
np[n] = (r,g,b)
9. Değişiklikleri NeoPixel’lere yazın ve 0,1 saniye bekleyin. Bu, kodun while True döngüsünün başına dönüp işlemi tekrarlamasından önce kısa bir gecikme ekler.
np.write()
time.sleep(0.1)
10. Kullanıcının Durdur’a tıkladığında veya CTRL + C’ye bastığında bunu algılamak için kodun istisna işleyici kısmını oluşturun.
except KeyboardInterrupt:
11. Python Kabuğuna “EXIT” mesajını yazdırın. Bu, kullanıcıya istisnanın başarıyla oluşturulduğunu ve işleyici işleminin artık kontrolde olduğunu söyler.
print("EXIT")
12. Bir for döngüsü kullanarak, tüm NeoPixel’leri (bizim için 8) yineliyoruz. Hepsini kapalı olarak ayarlıyoruz ve değişikliklerin etkili olması için yazıyoruz.
for i in range(8):
np[i] = (0,0,0)
np.write()
13. Kodu Raspberry Pi Pico 2’ye pixels.py olarak kaydedin.
14. Kodu başlatmak için Çalıştır > Geçerli Komut Dosyasını Çalıştır’a tıklayın veya yeşil çalıştır düğmesine tıklayın.
Zincirdeki tüm NeoPixel’ler yakında her 0.1 saniyede değişen rastgele bir renge sahip olacak. Python Shell geçerli rengi RGB değeri olarak gösterecek.
Durdurmak istediğinizde durdur butonuna tıklayın veya klavyeden CTRL + C tuşlarına basın.
Tam Kod Listesi
import machine
import neopixel
import time
from random import randint
np = neopixel.NeoPixel(machine.Pin(16),8)
try:
while True:
r = randint(0,128)
g = randint(0,128)
b = randint(0,128)
n = randint(0,7)
print("This color is: ","{} {} {}".format(r,g,b))
np[n] = (r,g,b)
np.write()
time.sleep(0.1)
except KeyboardInterrupt:
print("EXIT")
for i in range(8):
np[i] = (0,0,0)
np.write()