Bilgisayar üzerinden uzaktan kumanda: İsviçre çakısı gibi GPIO ara panoları

semaver

New member


  1. Bilgisayar üzerinden uzaktan kumanda: İsviçre çakısı gibi GPIO ara panoları








prof. Dr. Michael Stal, 1991’den beri Siemens Technology’de çalışıyor. Araştırmaları, büyük karmaşık sistemler (dağıtılmış sistemler, bulut bilgi işlem, IIoT), gömülü sistemler ve yapay zeka için yazılım mimarilerine odaklanıyor. Yazılım mimarisi konularında iş birimlerine tavsiyelerde bulunur ve Siemens’teki kıdemli yazılım mimarlarının mimari eğitiminden sorumludur.









Bir bilgisayardan elektronik bileşenlere erişmenin çeşitli yolları vardır. Bir yandan mikrodenetleyiciler, örneğin panolarda çalışan yazılım kullanılarak Arduino veya Raspberry Pi panolarındaki elektronikleri kontrol etmek için USB yoluyla araya sokulabilir. Bu amaçla, Arduino uyumlu kartlar için, kartın portlarına az ya da çok doğrudan erişime izin veren Firmata ürün yazılımı kurulabilir.

Başka bir seçenek de, elektronik aksama bu yoldan erişmek için bir bilgisayardan bağımsız bir mikrodenetleyici kartına RESTful iletişimdir. Beyaz tahtadaki program, bilgisayar ile elektronik arasında aracı görevi görür.

Üçüncü bir yol, söz konusu bilgisayara USB yoluyla GPIO ara kartını bağlamaktır. Bu durumda uygulamalar, ara kartında bulunan GPIO bağlantı noktalarına doğrudan erişebilir. Ayrıca, bir GPIO ara kartı genellikle SPI veya I2C gibi protokoller için destek uygular. Bu aynı zamanda ekranlar ve sensörler gibi biraz daha karmaşık donanımları kontrol etmenizi sağlar.

Adafruit FT232H GPIO ara kartı


Böyle bir GPIO ara panosu, BerryBase gibi yerlerde 15 ila 18 ABD doları arasında satılan Adafruit FT232H Blinka ara panosudur. Elbette başka GPIO kartları da var, ancak incelenen kartta yeterli GPIO bağlantı noktası var ve ayrıca UART, I2C, SPI, Bit-Bang ve JTAG’ı destekliyor. Geliştiriciler, Python kullanarak bilgisayarlarından kontrol edebilirler. Ek olarak, FT232H kartı için birçok bilgi kaynağı mevcuttur.


Deneylerim için, ilgili bileşenlerin STEMMA/QT veya Qwiic arabirimleriyle bağlanmasına izin veren bir USB-C bağlantı noktasına ve bir Stemma QT konektörüne sahip kartın en son sürümünü satın aldım.







Ara kartının en son sürümü, bir USB-C konektörü ve bir Quiic/STEMMA-QT konektörü sunar.


(Resim: Adafruit)








Kartın eski sürümünde yalnızca bir mikro USB bağlantı noktası bulunur.


(Resim: Adafruit)



detayda


Anakart, adını aynı zamanda tam USB protokolünü de uygulayan entegre çip olan bir FTDI FT232H’den alır. Sonuç olarak, geliştiricilerin sistem düzeyinde USB işlevselliği ile uğraşması gerekmez. Çoğu durumda, bilgisayara bir USB sürücüsü yüklemek gerekli değildir. FT232H, 480 Mbit/sn’ye kadar aktarım hızlarını garanti eden Yüksek Hızlı USB 2.0’ı destekler – yine mevcut olan tam hız modunda, bunun yerine maksimum 12 Mbit/sn’dir. Kartın yeni sürümünde USB-C bağlantı noktası bulunuyor. Teslimata uygun bir kablo dahil değildir. Bu nedenle, halihazırda mevcut değilse, aynı anda uygun bir kablo sipariş etmenizi öneririz.

Çip çekirdeği 1.8V ile, giriş/çıkışlar 3.3V ile çalışır.Sonuncusu 5V toleranslıdır. Daha fazla ayrıntı çip üreticisinin ürün sayfasında bulunabilir.

Bağlantı şemasında görülebileceği gibi (yukarıdaki şekillere bakın), Adafruit çözümü D4-D7 ve C0-C7 GPIO bağlantı noktaları sağlar.

D0-D3 bağlantı noktaları SPI veya I2C protokolünü uygular. “o”, kontrol için I2C veya SPI’nin mevcut olduğu, ancak ikisinin aynı anda olmadığı anlamına gelir.

Karttaki bir anahtarla, geliştiriciler I2C kullanmak isteyip istemediklerini (I2C anahtar konumu açık) veya SPI kullanmak ancak I2C kullanmak isteyip istemediklerini (I2C anahtar konumu kapalı) belirler. İkinci durumda: D0 -> SCLK, D1 -> MOSI, D2 -> MISO, D3 -> CS0. İlk durumda şu atama vardır: D0 -> SCL, D1 veya D2 -> SDA. Burada D1 ve D2 portlarından biri I2C’den SDA sinyalini iletmek için kullanılabilir. Kartın eski versiyonunda, kullanıcıların I2C için D1 portunu D2 portuna bağlaması ve ardından D2’yi gerçek devreye bağlaması gerekiyordu.

kurulum


Adafruit, web sitesine kartın yüklenmesi için talimatlar sağlar. Daha da önemlisi, Windows, Mac veya Linux bilgisayarlarda programlama yapmak için Python 3 ve pip3’ün kurulu olması gerekir.

Windows sürücüsüz USB aygıtlarını desteklemediğinden, kullanıcıların önce Zadig’den bir USB sürücüsü yüklemeleri gerekir. macOS ve Linux’ta bu çoğu durumda gerekli değildir.

Bunu, CircuitPython üzerinden erişim için tüm işletim sistemlerinde libusb kitaplığının ve özel Python kitaplıklarının (pyftdi ve adafruit-blinka) kurulumları takip eder – Bu arada Blinka, ara kartın da adıdır. Son olarak, udev kuralları belirtilmeli (yalnızca Linux) ve bir ortam değişkeni tanımlanmalıdır (tüm işletim sistemleri). Bu değişkene BLINKA_FT232H adı verilir ve 1 değerine sahip bir Blinka kartının varlığını göstermelidir.

Yukarıda bahsedildiği gibi, her zaman bilgisayarınızda python3 ve pip3’ün yüklü olduğu varsayılır.

Bu arada, kart “önceden monte edilmiş” bir başlık olmadan teslim edilir. Bu nedenle önce bir lehimleme işi gereklidir.

İşte farklı talimatlar:

Blinka kesme kartı aracılığıyla devreleri kontrol etmek için, kesinlikle bilgisayarınıza takılması gerekir. Yazılım açısından, CircuitPython programları panoya bir arayüz görevi görür. Windows, Linux, macOS çalıştıran standart bilgisayarlar Python 3’ü anlar, ancak geliştiriciler CircuitPython’u nasıl kullanabilir? Bu, Python (adafruit-blinka) için Blinda kitaplığını ve sensörler, ekranlar ve benzerleri gibi “uzaktan kontrollü” donanımlar için karşılık gelen CircuitPython kitaplıklarını gerektirir:







Bilgisayarınız, devreleri veya bileşenleri kontrol etmek için Python3’ün yanı sıra çeşitli kitaplıkların yüklenmesini gerektirir.


(Resim: Adafruit)



Blinka kartını test etmek için Mac bilgisayar kullandığım için macOS için gerekli kurulum adımları örnek olarak aşağıda detaylandırılmıştır:

Paket Yöneticisi Homebrew henüz kurulu değilse, onu şu şekilde kurarız:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Ardından, libusb’un homebrew yardımıyla yüklenmesi gerekir:

brew install libusb

Yani pyftdi’den olan:

pip3 install pyftdi

Ve son adımda, gerçek kart kitaplığının yüklenmesi:

pip3 install adafruit-blinka

Şimdi kullanıcı ortam değişkenini ayarlamalıdır. BLINKA_FT232H 1 ata:

export BLINKA_FT232H=1

Son olarak, Python 3 REPL ortamını başlatın ve aşağıdaki iki adım adım talimatı girin:

import board
dir(board)

Hiçbir şey ters gitmediyse, bu son talimat terminaldeki mevcut pinlerin listesini yazdırır.

Yükleme tamamlandı!

Kurulumun çalışıp çalışmadığını kontrol etmek için aşağıdaki testler vardır:

Önce sistemin FT232H kartını tanıdığını doğrulamak için bir test yapın:

from pyftdi.ftdi import Ftdi

Ftdi().open_from_url('ftdi:///?')

Genellikle yalnızca bir FTDI denetleyicisi vardır, dolayısıyla çıktı şöyle görünebilir:

>>> from pyftdi.ftdi import Ftdi

>>> Ftdi().open_from_url('ftdi:///?')[Link auf https://learn.adafruit.com/circuitpython-on-any-computer-with-ft232h/setup]

Available interfaces:

ftdi://ftdi:232h:1/1 ()

Please specify the USB device

Ardından, ortam değişkeninin var olup olmadığını ve doğru ayarlanıp ayarlanmadığını kontrol edin:

import os

os.environ["BLINKA_FT232H"]

Çıktı basitçe şöyle olmalıdır:

´1´

Dediğim gibi, bu açıklama sadece yüzeyi çiziyor. Kesin talimatlar Adafruit Talimatları web sitesinde bulunabilir.

Herhangi bir sorun olması durumunda, Adafruit Kurulum Sonrası Kontroller web sitesi ilgili bilgileri sağlayacaktır.

programlama


Zorunlu LED’in yanıp sönmesine veya bir düğmenin durumunu algılamasına ilişkin örnekleri kaydedeceğim. Bunun yerine, bir Sensirion SHT40 bağlantısı örnek teşkil etmelidir.

Bu sensörün maliyeti yalnızca birkaç Euro’dur ve sıcaklık ile nemi nispeten doğru bir şekilde ölçer. Bağıl nem için tipik doğruluk %1,8 bağıl nem ve sıcaklık 0,2°C’dir. Bu kapsamda I2C bağlantılı bir Adafruit kartı kullanılmıştır. Ölçüm ısıtmalı veya ısıtmasız yapılabilir (->sht.mode) yer almak. Program örneği için ısıtmayı kullanmadım. Bu bir I2C tabanlı sensör kartı olduğundan, FT232H’nin I2C anahtarı AÇIK olarak ayarlanmalıdır.







Sensirion SHT40, ara kartına bir Qwiic/STEMMA-QT kablosuyla bağlanır.



Sensörün her ölçümden sonra nefes alması yaklaşık dört saniye sürer: sıcaklığı ölçerken iki saniye ve nemi ölçerken dört saniye. Bu nedenle, while döngüsü bir içerir sleep(4).

Programı çalıştırmadan önce, geliştiriciler Adafruit’in gerektirdiği kütüphaneyi kurmalıdır:

pip3 install adafruit-circuitpython-sht4x

Bu örnek programın aslı Adafruit’tir.


import time # zum Verzögern der Ausgaben
import board # zur Ausgabe über FT232H
import adafruit_sht4x # Einbinden der Bibliothek für den Sensor

i2c = board.I2C() # Am I2C-Anschluss (SDA/SCL des FT232H) hängt ein Adafruit SHT40-Breakout-Board

sht = adafruit_sht4x.SHT4x(i2c)
print("SHT4X mit folgender Seriennummer entdeckt: ", hex(sht.serial_number))

sht.mode = adafruit_sht4x.Mode.NOHEAT_HIGHPRECISION # ohne Heizen!

# alternativ mit: sht.mode = adafruit_sht4x.Mode.LOWHEAT_100MS
print("Augenblicklicher Modus: ", adafruit_sht4x.Mode.string[sht.mode])

while True:
temperature, relative_humidity = sht.measurements
print("Temperatur: %0.1f C" % temperature)
print("Feuchtigkeit: %0.1f %%" % relative_humidity)
print("")
time.sleep(4) # 4 Sekunden Verzögerung



Ekran çıkışı aşağıdaki gibi çok heyecan verici değil:







Sensirion SHT40’ın ölçülen değerleri ile ekran çıkışı.



dikkat olmak


Bir uyarı, geliştiriciler tarafından dikkate alınmalıdır. Bileşenleri ara kartına bağlarken, devrenin USB bağlantı noktası için bir tehdit oluşturmadığından emin olmalısınız. Değilse, bilgisayarın USB bağlantı noktasındaki aşırı yük onu etkileyebilir. Adafruit, kartın USB portundan maksimum 400-500mA çekebileceğine dikkat çekiyor. Bunun için çeşitli koruyucu önlemler vardır: test etme, diyotlar kullanarak endüktif yüklere karşı koruma, dirençler kullanarak akımları sınırlama. Bunu yapmayı unutursanız, bağlı bilgisayara zarar verebilirsiniz. Söylediği gibi: İhtiyat, porselen kutunun annesidir.

Çözüm


Adafruit FT232H gibi GPIO ara panoları, bir mikrodenetleyici panosuna müdahale etmek zorunda kalmadan elektronik parçalara doğrudan bilgisayarlardan erişmenin harika bir yolunu sunar. Elbette, bunun da olası uygulamalar açısından sınırlamaları vardır. Örneğin, mikrodenetleyici tabanlı çözümler, PC muadillerine göre gerçek zamanlı gereksinimlere izin verir ve farklı protokoller kullanma açısından çok daha esnektir. Öte yandan, bilgisayar destekli bir çözümün de avantajları vardır. Chipmaker FTDI olası örnekler olarak kameralar, barkod okuyucular, set üstü kutular, flash kart okuyucular, MP3 cihazları ve endüstriyel uygulamalar için arayüzlerin kontrolünü gösteriyor.

CircuitPython desteğine ek olarak, kartın ilgili uygulamalarda da kullanılabilmesi için C veya C++ kitaplıkları sağlamak güzel olurdu. Yine de bu yüksek düzeyde sızlanıyor. Bir FT232H’nin işleyebileceği uygulama türleri için Python gayet iyi iş görecektir. Python’un, özellikle kendi deneylerinizi hızlı bir şekilde prototiplemek için bir dizi avantajı vardır.


(harita)



Haberin Sonu
 
Üst