İçeriğe geç
Gömülü sistemler · ESP32

Aynı program ekranda ve ESP32 kartında.

Yöntem programları, tipleri derleme anında bilinen bir alt kümeye uyduğunda C++'a derlenir ve ESP32'de çalışır. Kartınız olmasa da programı bilgisayarınızdaki benzetimde deneyebilirsiniz.

İlk program: yanıp sönen LED

Aşağıdaki program kartın üzerindeki LED'i yarım saniye arayla yakıp söndürür. Pin işlemleri ve bekleme, Donanım biriminden gelir.

program YanıpSönenLED
kullan Donanım

değişken
  i: tamsayı
  yanık: mantıksal

başla
  PinKipi(YerleşikLED, Çıkış)
  yanık := yanlış
  1'den 6'ya kadar her i için
  başla
    yanık := değil yanık
    PinYaz(YerleşikLED, yanık)
    yaz(Biçimle('{:5} ms  LED {}', Milisaniye, eğer yanık ise 'yanık' değilse 'sönük'), 1)
    Bekle(500)
  bitir
  yaz('Bitti.', 1)
bitir.

Benzetimde çalıştırma

Kartı bağlamadan önce programı bilgisayarınızda deneyebilirsiniz. --calistir seçeneği programı C++'a derler ve sanal saatli bir benzetimde çalıştırır; Bekle(500) gerçekten beklemez, çıktı hemen gelir.

yontem gomulu led.y --calistir
    0 ms  LED yanık
  500 ms  LED sönük
 1000 ms  LED yanık
 …
Bitti.

Bunun için Yöntem'in yanında bir C++17 derleyicisi (g++ ya da clang++) gerekir. Aynı programı oyun alanında da çalıştırabilirsiniz; oradaki "Pin izi" seçeneği pin değişikliklerini zaman damgasıyla gösterir.

Karta yükleme

yontem gomulu led.y komutu led/ adında bir proje klasörü üretir. Klasörde Arduino için bir .ino dosyası, PlatformIO için hazır bir platformio.ini ve kısa bir BENIOKU.txt bulunur. Üç yoldan birini seçebilirsiniz:

  • Arduino IDE: Espressif'in "esp32" çekirdeğini (3.x önerilir) kurduktan sonra .ino dosyasını açıp kartınızı ve portu seçerek yükleyebilirsiniz.
  • arduino-cli: arduino-cli compile ve arduino-cli upload komutlarıyla.
  • PlatformIO: klasörün içinde pio run -t upload komutuyla.

Programın yaz çıktısı ve oku girdisi seri port üzerinden, 115200 baud hızında akar. Adımların ayrıntılarını kurulum sayfasının gömülü bölümünde bulabilirsiniz.

Donanım birimi

GrupAdlar
PinlerPinKipi, PinYaz, PinOku, AnalogOku, PWMYaz, YerleşikLED
ZamanBekle, BekleMikro, Milisaniye, Mikrosaniye
KesmelerKesmeBağla, KesmeÇöz
ZamanlayıcılarZamanlayıcıKur, ZamanlayıcıTek, ZamanlayıcıDurdur
SeriSeriBaşlat, SeriVarMı, SeriBaytOku, SeriBaytYaz
I2C ve SPII2CBaşlat, I2CYaz, I2COku, I2CYazOku, SPIBaşlat, SPIAktar

Benzetim sabiti bilgisayarda doğru, kartta yanlış değerini alır; böylece aynı programın içinde benzetime özel sınama kodu yazabilirsiniz. Kesme ve zamanlayıcı prosedürleri ESP32'de ayrı bir görevde sırayla çalışır; bu prosedürleri kısa tutmanız gerekir.

Alt küme kuralları

Gömülü arka uç, her değerin tipini derleme anında bilmek ister. Kurala uymayan her kullanım derleme sırasında açık bir hata mesajıyla bildirilir.

  • tamsayı 64 bittir, ondalık çift duyarlıklıdır.
  • liste, sözlük ve herhangi olarak bildirilen değişkenlerin tipi ilk kullanımdan çıkarılır. Çıkarılamadığında tipi açıkça yazmanız gerekir: tamsayı listesi.
  • Lambdalar dış değişkenleri kopyalar; lambda içinden dış değişkene atama yapılamaz.
  • Yerleşik birimlerden yalnızca Matematik, YZ (eğitilmiş modelle tahmin için) ve Donanım kullanılabilir; Yöntem ile yazdığınız kendi birimleriniz de derlenir. Öteki yerleşik birimler, otomatik türev ve model eğitimi kartta desteklenmez.

Eğitilmiş modeli karta taşımak

Model eğitimi kartta yapılmaz; modeli bilgisayarınızda eğitir, sonra karta taşırsınız. ModeliDışaAktar(model, 'XorModeli.y') çağrısı, ağırlıkları içinde taşıyan saf bir Yöntem birimi yazar. Kart programında kullan XorModeli deyip Tahmin(…) fonksiyonunu çağırmanız yeterlidir.

Hazır örnekleri Yöntem deposunun gomulu_ornekler klasöründe bulabilirsiniz: düğme kesmesi, zamanlayıcılar, I2C sıcaklık algılayıcısı, seri konsol ve XOR modelinin kartta çalıştırılması.

Sınırlar

  • Gömülü arka uç şimdilik yalnızca ESP32'yi hedefler.
  • Wi-Fi ve Bluetooth birimleri henüz yoktur.
  • Masaüstü benzetimi Windows'ta henüz sınanmamıştır.
  • Örnekler ESP32 için derlenmiş ve Espressif'in QEMU öykünücüsünde doğrulanmıştır; kendi kartınızda ilk kez çalıştırırken basit bir programla başlamanızı öneririz.