İçindekiler:

Yerleşik Evrensel Arayüz Kartı - USB/Bluetooth/WIFI Kontrolü: 6 Adım
Yerleşik Evrensel Arayüz Kartı - USB/Bluetooth/WIFI Kontrolü: 6 Adım

Video: Yerleşik Evrensel Arayüz Kartı - USB/Bluetooth/WIFI Kontrolü: 6 Adım

Video: Yerleşik Evrensel Arayüz Kartı - USB/Bluetooth/WIFI Kontrolü: 6 Adım
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Kasım
Anonim
Yerleşik Evrensel Arayüz Kartı - USB/Bluetooth/WIFI Kontrolü
Yerleşik Evrensel Arayüz Kartı - USB/Bluetooth/WIFI Kontrolü
Yerleşik Evrensel Arayüz Kartı - USB/Bluetooth/WIFI Kontrolü
Yerleşik Evrensel Arayüz Kartı - USB/Bluetooth/WIFI Kontrolü

Cihaz veri sayfasına dayalı olarak sıfırdan yeni gömülü modüller için kitaplıklar oluşturduğumu sık sık buluyorum. Kitaplığı oluştururken, işlerin çalışmasını ve hatasız olmasını sağlarken bir kod, derleme, programlama ve test döngüsünde sıkışıp kaldığımı görüyorum. Genellikle derleme ve program süreleri, kodu düzenlemek için gereken süreden çok daha uzun olabilir ve bu nedenle, geliştirme sırasında bu adımları kesmenin bir yolu çok kullanışlı olacaktır.

Ayrıca sık sık gömülü bir modülü bir PC ile arayüzlemek istediğimi görüyorum. Modülün özel olarak bir USB bağlantısı yoksa ki bu genellikle böyledir, o zaman genellikle sadece SPI veya sadece I2C gibi tek bir işi yapacak olan overpriced bir USB dönüştürücü satın almanız gerekir.

Bu nedenlerden dolayı evrensel arayüz kartını oluşturmaya karar verdim. Gömülü modüller ile kolay PC tabanlı iletişime izin verecek şekilde tasarlanmıştır.

Yerleştiğim anakartın gömülü arayüz özellikleri arasında.

  • Dijital G/Ç
  • I2C
  • SPI
  • UART
  • PWM
  • Servo Motor
  • ADC girişi
  • DAC çıkışı

Hepsi tamamen bağımsız olarak kullanılabilir.

Arayüz kartı, PC'ye bir USB bağlantısı aracılığıyla kontrol edilebilir, ancak kartın uzaktan veya IoT tipi bir senaryoda kullanılmasına izin vermek için isteğe bağlı WIFI veya Bluetooth modül bağlantılarına da sahiptir.

Standart 2,54 mm aralıklı SIL başlıklarını kullanarak, hızlı, güvenilir ve lehimsiz bağlantılara izin vererek, kart ile gömülü modül arasında dişi dupont kabloları doğrudan bağlamak mümkündür.

CAN, LIN, H-bridge vb. eklemeyi de düşündüm ama bunlar belki daha sonra v2 revizyonu ile gelebilir.

Adım 1: PCB'yi tasarlama

PCB tasarlama
PCB tasarlama
PCB tasarlama
PCB tasarlama
PCB tasarlama
PCB tasarlama
PCB tasarlama
PCB tasarlama

PCB'yi tasarlarken işleri olabildiğince basit tutmaya çalışıyorum. Kartları elle oluşturacağınız zaman, bileşenleri yalnızca belirli bir amaca yönelik olduklarında eklemek ve mikrodenetleyicinin mümkün olduğunca çok dahili özelliğini kullanmak önemlidir.

Tercih ettiğim elektronik tedarikçisine baktığımda, aradığım özelliklere sahip ve makul bir maliyetle rahat ettiğim bir çip buldum. Bulduğum çip PIC18F24K50 idi.

Mevcut 23 I/O pini ile bu bana bu özellikleri sağladı

  • Dijital G/Ç
  • I2C
  • SPI
  • UART
  • PWM x 2
  • Servo Motor x 6
  • ADC girişi x 3
  • DAC çıkışı x 1
  • 5V veya 3V3'ten sürülen I/O
  • Durum LED'i

Seçtiğim IC'nin bir dezavantajı, yalnızca bir UART çevre birimine sahip olması ve bu nedenle Bluetooth veya Wifi kontrol yöntemini kullanmak, UART bağlantısını kullanmanızı engelleyecektir.

Yukarıdaki resimlerde gösterilen bitmiş şematik ve PCB'dir.

Adım 2: Protokolü Tasarlamak

Protokolü Tasarlamak
Protokolü Tasarlamak

Protokolü tasarlamanın ilk adımı, yapabilmek için tahtaya özellikle ihtiyaç duyacağınıza karar vermektir. Bir şeyleri parçalamak daha iyi bir kontrol seviyesi sağlarken, şeyleri bir araya getirmek arayüzü basitleştirir ve kart ile bilgisayar arasındaki iletişim trafiğini azaltır. Bu bir denge oyunu ve mükemmelleştirilmesi zor.

Kartın her işlevi için herhangi bir parametre ve getiri belirtmelisiniz. Örneğin, bir ADC girişini okuyacak bir işlev, hangi girişin örnekleneceğini belirten bir parametreye ve sonucu içeren bir dönüş değerine sahip olabilir.

Tasarımımda, dahil etmek istediğim işlevlerin listesi:

  • Dijital G/Ç

    • SetPin (PinNumarası, Durum)
    • Durum = GetPin (PinNumber)
  • SPI

    • Başlat (SPI Modu)
    • DataIn = Aktar (DataOut)
    • ControlChipSelect (Kanal, Durum)
    • SetPrescaler (Oran)
  • I2C

    • Başlat ()
    • Başlangıç ()
    • Tekrar başlat ()
    • Durmak ()
    • SlaveAck = Gönder (DataOut)
    • DataIn = Alma (Son)
  • UART

    • Başlat()
    • TX Baytı (Veri Çıkışı)
    • BytesAvailable = RX Sayısı ()
    • DataIn = RX Bayt ()
    • SetBaud (Baud)
  • PWM

    • Etkinleştir (Kanal)
    • Devre Dışı Bırak (Kanal)
    • SetFrequency (Kanal, Frekans)
    • GetMaxDuty (Görev)
    • SetDuty (Görev)
  • Servo

    • Etkinleştir (Kanal)
    • Devre Dışı Bırak (Kanal)
    • SetPosition (Kanal, Konum)
  • ADC

    ADCsample = Örnek (Kanal)

  • DAC

    • Olanak vermek
    • Devre dışı bırakmak
    • SetOutput (Voltaj)
  • WİFİ

    • SetSSID (SSID)
    • Parola Belirle (Parola)
    • Durum = CheckConnectionStatus ()
    • IP = GetIPAdresi ()

Parametreler parantez içinde, dönüşler ise eşittir sembolünden önce gösterilir.

Kodlamaya başlamadan önce her fonksiyona 128'den (ikili 0b10000000) başlayan ve yukarı doğru çalışan bir komut kodu atadım. Kafam koda girdikten sonra tekrar başvurmak için güzel bir belgem olduğundan emin olmak için protokolü tamamen belgeliyorum. Bu proje için tam protokol belgesi ektedir ve gelen komut kodlarını ve bit genişliklerini içerir.

Adım 3: Bellenimi Tasarlama

Bellenimi Tasarlamak
Bellenimi Tasarlamak
Bellenimi Tasarlamak
Bellenimi Tasarlamak
Bellenimi Tasarlamak
Bellenimi Tasarlamak

Protokol bir kez oluşturulduktan sonra, donanım üzerinde işlevselliğin uygulanması söz konusudur.

Donanım yazılımını anlamak ve hata ayıklamak için basit tutarken potansiyel komut ve veri çıktısını denemek ve en üst düzeye çıkarmak için bağımlı sistemler geliştirirken basit durum makinesi tipi bir yaklaşım benimsiyorum. Diğer bağlı cihazlarla daha iyi etkileşime ihtiyacınız varsa, bunun yerine Modbus gibi daha gelişmiş bir sistem kullanılabilir, ancak bu, işleri yavaşlatacak ek yük getirir.

Durum makinesi üç durumdan oluşur:

1) Komutları beklemek

2) Parametrelerin alınması

3) Yanıtla

Üç durum aşağıdaki gibi etkileşime girer:

1) En anlamlı bit kümesine sahip bir bayta sahip olana kadar arabellekteki gelen baytları gözden geçiririz. Böyle bir bayt aldığımızda, onu bilinen komutlar listesine göre kontrol ederiz. Bir eşleşme bulursak, parametre baytlarının sayısını atarız ve protokolle eşleşmesi için baytları döndürürüz. Parametre baytı yoksa, buradaki komutu uygulayabilir ve durum 3'e geçebilir veya durum 1'i yeniden başlatabiliriz. Parametre baytı varsa, durum 2'ye geçiyoruz.

2) Tüm parametreleri depolayana kadar gelen baytları kaydederek geçiyoruz. Tüm parametrelere sahip olduktan sonra komutu uyguluyoruz. Eğer dönüş baytı varsa 3. aşamaya geçiyoruz. Gönderilecek dönüş baytı yoksa 1. aşamaya dönüyoruz.

3) Gelen baytları inceleriz ve her bayt için geçerli bir dönüş baytı ile yankı baytının üzerine yazarız. Tüm dönüş baytlarını gönderdikten sonra 1. aşamaya dönüyoruz.

Ne yaptığımı görsel olarak güzel bir şekilde gösterdiği için bellenimi tasarlamak için Flowcode kullandım. Aynı şey Arduino veya diğer gömülü programlama dillerinde de eşit derecede iyi yapılabilir.

İlk adım, PC ile iletişim kurmaktır. Bunu yapmak için mikronun doğru hızda çalışacak şekilde yapılandırılması gerekiyor ve USB ve UART çevre birimlerini sürmek için kod eklememiz gerekiyor. Flowcode'da bu, Comms bileşen menüsünden bir USB Seri bileşenini ve bir UART bileşenini projeye sürüklemek kadar kolaydır.

UART'ta gelen komutları yakalamak için bir RX kesmesi ve arabelleği ekliyoruz ve düzenli olarak USB'yi yoklıyoruz. Daha sonra boş zamanlarımızda tamponu yapabiliriz.

Flowcode projesi ve oluşturulan C kodu ektedir.

Adım 4: Akış Koduyla Arayüz Oluşturma

Akış Kodu Yoluyla Arayüz Oluşturma
Akış Kodu Yoluyla Arayüz Oluşturma
Akış Kodu Yoluyla Arayüz Oluşturma
Akış Kodu Yoluyla Arayüz Oluşturma
Akış Kodu Yoluyla Arayüz Oluşturma
Akış Kodu Yoluyla Arayüz Oluşturma

Flowcode simülasyonu çok güçlüdür ve panoyla konuşmak için bir bileşen oluşturmamıza olanak tanır. Bileşeni oluştururken, bileşeni projemize sürükleyip anında pano işlevlerini hazır hale getirebiliriz. Ek bir avantaj olarak, simülasyonda SPI, I2C veya UART çevre birimine sahip mevcut herhangi bir bileşen kullanılabilir ve iletişim verileri bir Enjektör bileşeni aracılığıyla Arayüz Kartına iletilebilir. Ekli resimler, ekrana bir mesaj yazdırmak için basit bir program göstermektedir. Arayüz Kartı aracılığıyla gerçek ekran donanımına gönderilen iletişim verileri ve I2C Ekran, I2C Enjektör ve Arayüz Kartı bileşenleri ile bileşen kurulumu.

Flowcode 8.1 için yeni SCADA modu, Flowcode simülatöründe bir şeyler yapan bir programı alıp, herhangi bir lisans sorunu olmadan herhangi bir PC'de tek başına çalışacak şekilde dışa aktarabilmemiz için mutlak bir ek avantajdır. Bu, test donanımları veya sensör kümeleri gibi projeler için harika olabilir.

Bu SCADA modunu, modülün IP adresini toplamanın yanı sıra SSID ve şifreyi yapılandırmak için kullanılabilecek WIFI yapılandırma aracını oluşturmak için kullanıyorum. Bu, USB bağlantısını kullanarak her şeyi ayarlamama ve ardından işler çalışmaya başladığında bir WIFI ağ bağlantısına aktarmama izin veriyor.

Bazı örnek projeler ektedir.

Adım 5: Diğer Arayüzleme Yöntemleri

Flowcode'un yanı sıra, arayüz kartıyla iletişim kurmak için seçtiğiniz programlama dilini hemen hemen kullanabilirsiniz. Flowcode'u, zaten dahil edilmiş ve hemen kullanıma hazır hale getirebileceğimiz bir parça kitaplığına sahip olduğu için kullandık, ancak bu aynı zamanda diğer birçok dil için de geçerlidir.

Arayüz kartıyla iletişim kurmak için kullanılan dillerin ve yöntemlerin bir listesi burada.

Python - Bir COM bağlantı noktasına veya IP adresine veri akışı için bir seri kitaplık kullanma

Matlab - Bir COM bağlantı noktasına veya IP adresine veri akışı için Dosya komutlarını kullanma

C++ / C# / VB - Önceden yazılmış bir DLL kullanarak, doğrudan COM bağlantı noktasına veya Windows TCP/IP API'sine erişin

Labview - Önceden yazılmış bir DLL, VISA Seri bileşeni veya TCP/IP bileşeni kullanma

Yukarıdaki dillerin uygulandığını görmek isteyen varsa lütfen bana bildirin.

Adım 6: Bitmiş Ürün

Tamamlanmış ürün
Tamamlanmış ürün
Tamamlanmış ürün
Tamamlanmış ürün
Tamamlanmış ürün
Tamamlanmış ürün

Bitmiş ürün, muhtemelen önümüzdeki yıllarda gömülü araç kitimde öne çıkan bir özellik olacak. Çeşitli Grove ekranları ve sensörleri için bileşenler geliştirmeme şimdiden yardımcı oldu. Artık herhangi bir derleme veya programlama maskaralığına başvurmadan önce kodu tamamen çivileyebilirim.

Hatta iş akışlarını geliştirebilmeleri için meslektaşlarıma bazı panolar dağıttım ve bunlar çok iyi karşılandı.

Eğitilebilirliğimi okuduğunuz için teşekkürler Umarım faydalı bulmuşsunuzdur ve umarım üretkenliğinizi hızlandırmak için kendi araçlarınızı yaratmanız için size ilham verir.

Önerilen: