İçindekiler:

WiFi ve Android'de Taşınabilir İşlev Oluşturucu: 10 Adım
WiFi ve Android'de Taşınabilir İşlev Oluşturucu: 10 Adım

Video: WiFi ve Android'de Taşınabilir İşlev Oluşturucu: 10 Adım

Video: WiFi ve Android'de Taşınabilir İşlev Oluşturucu: 10 Adım
Video: Telefon Veya Tablete Windows 10/11 İşletim Sistemi Nasıl Kurulur ve Kullanılır ? (Microsoft Azure) 2024, Temmuz
Anonim
WiFi ve Android'de Taşınabilir İşlev Oluşturucu
WiFi ve Android'de Taşınabilir İşlev Oluşturucu
WiFi ve Android'de Taşınabilir İşlev Oluşturucu
WiFi ve Android'de Taşınabilir İşlev Oluşturucu
WiFi ve Android'de Taşınabilir İşlev Oluşturucu
WiFi ve Android'de Taşınabilir İşlev Oluşturucu
WiFi ve Android'de Taşınabilir İşlev Oluşturucu
WiFi ve Android'de Taşınabilir İşlev Oluşturucu

20. yüzyılın sonlarına doğru özellikle iletişim alanında çeşitli teknolojik yenilikler ortaya çıktı; ama sadece o değil. Bizim için kullanıcılar, tüketiciler ve mühendisler, hayatımızı çok daha kolaylaştırabilecek elektronik cihazların hızla geliştiğini gün ışığına çıkardı: Akıllı saatler, akıllı evler, akıllı telefonlar vb.

Günümüzde her şey "akıllı" olabileceğinden, temel elektronik laboratuvar ekipmanının bir parçası olacak süper kullanışlı bir cihaz tasarlamaya karar verdim - WiFi Direct veya WiFi Yerel Alan Ağı (WLAN) aracılığıyla Android işletim sistemi tabanlı akıllı telefon tarafından kontrol edilebilen Taşınabilir İşlev Üreticisi).

Bu cihazı neden yapmalıyız?

Test ekipmanlarının büyük bir çoğunluğu günümüzde oldukça pahalıdır. Ve bazen bu cihazlar taşınabilir değildir. Yüksek fiyatlar, taşınabilirlik eksikliği ve cihaz ağ erişimi eksikliği için bir çözüm olarak cihaz, gerçekten taşınabilir olan ve ağa sınırsız erişime sahip çift kanallı dalga biçimi üreteci sağlar - ister internet ister yerel olsun.

Ve elbette, cihaz hevesle, DIY ilkelerine uyarak inşa edilmelidir - Bazen doğru hissetmek için bir şeyleri kendimiz yapmamız gerekir:)

Ana Özellikler

Güç kaynağı

  • Hem güç kaynağı sistemleri hem de programlama için USB Type-A konektörü
  • Eksiksiz Li-Ion pil yönetim sistemi - Şarj ve kararlı modlar
  • Akıllı Anahtar uygulaması - güç geçiş anahtarına gerek yok
  • Çift güç kaynağı: simetrik voltaj dalga formu üretimi için +3.3V ve -3.3V

Dalga Formu Üretimi

  • Çıkış kademesinde DC seviyesinin uygulanması - gerilim sınırları arasında önyargılı dalga formu
  • DDS tabanlı 4 tip dalga formu oluşturma - Sinüs, üçgen, kare ve DC
  • 10MHz'e kadar frekans desteği
  • 500mW maksimum güç kullanılabilirliği ile 80mA'ya kadar çıkış akımı
  • Dalga formu üretimi için ayrılmış kanallar - bölünmüş AD9834 tabanlı devreler

İletişim

  • ESP32'nin Uygulanması - Uygulanabilir WiFi özellikleri
  • Jeneratör cihazı ve Android akıllı telefon ile eksiksiz TCP/IP desteği
  • Her cihaz döngüsü için kullanıcı parametrelerini saklama yeteneği
  • Durum izleme - her iki sistem de birbirinin durumunun farkındadır: FuncGen (bundan sonra buna böyle diyelim) ve akıllı telefon.

Kullanıcı arayüzü

  • Basit 4 bit veri arayüzü ile 20 x 4 Karakter LCD
  • Android uygulaması - FuncGen cihazı üzerinde tam kullanıcı kontrolü
  • Buzzer devresi - kullanıcıya sesli geri bildirim

Adım 1: Blok Şeması - Donanım

Blok Şeması - Donanım
Blok Şeması - Donanım
Blok Şeması - Donanım
Blok Şeması - Donanım

Mikrodenetleyici Birimi - ATMEGA32L

Mikrodenetleyici, tek bir elektronik çipte bulunan tüm bilgisayar işlevselliklerinden oluşan programlanabilir bir çiptir. Bizim durumumuzda, "beyin" ve sistemin merkezi bir bileşenidir. MCU'nun amacı, tüm çevresel sistemleri yönetmek, bu sistemler arasındaki iletişimi yönetmek, donanım çalışmasını kontrol etmek ve kullanıcı arayüzü ve gerçek bir kullanıcı ile etkileşimi için tam destek sağlamaktır. Bu proje, 3.3V ve 8MHz frekansında çalışabilen ATMEGA32L MCU tabanlıdır.

İletişim SoC - ESP32

Bu SoC (Yonga Üzerinde Sistem), FuncGen için eksiksiz iletişim desteği sağlar - Doğrudan, yerel veya internet iletişimi dahil WiFi özelliklerine erişim. Cihazın amaçları şunlardır:

  • Android uygulaması ve FuncGen cihazı arasında veri aktarımını işleme
  • Kontrol/veri mesajlarının yönetimi
  • Sürekli TCP/IP İstemci-Sunucu yapılandırması desteği

Projemizde SoC, daha fazla genişletilemeyecek kadar popüler olan espressof ESP32'dir:)

Li-Ion Pil Yönetim Sistemi

Cihazımızı taşınabilir hale getirmek için tasarlanmış Li-Ion pil şarj devresi bulunmaktadır. Devre, tek bir programlama direncinin değerini ayarlayarak kontrol edilebilir şarj akımına sahip MC73831 IC'ye dayanmaktadır (Bu konuyu Şematik adımında ele alacağız). Cihaz güç kaynağı girişi USB Type-A konektörüdür.

Akıllı Anahtar Devresi

Akıllı anahtar cihazı güç kontrol devresi, cihaz kapatma sırası üzerinde tam yazılım kontrolü sağlar ve cihaz pil voltajının kesilmesi için harici geçiş anahtarına ihtiyaç duymaz. Tüm güç işlemleri, basma düğmesine ve MCU'nun yazılımına basılarak yapılır. Bazı durumlarda sistemin kapatılması gerekebilir: Düşük akü voltajı, yüksek giriş voltajı, iletişim hatası vb. Akıllı anahtar, oynamak için ucuz ve çok kolay olan STM6601 akıllı anahtar IC'ye dayanmaktadır.

Ana Güç Kaynağı Ünitesi

Bu ünite iki pille çalışan güç kaynağı devresinden oluşur - tüm dijital / analog besleme devreleri için +3.3V ve 0V potansiyeline göre FunGen simetrik çıkışı için -3.3V (yani üretilen dalga biçimi [-3.3V:3.3V olarak ayarlanabilir)] bölge.

  • Ana besleme devresi LP3875-3.3 LDO (düşük düşme) 1A lineer voltaj regülatörüne dayanmaktadır.
  • İkincil besleme devresi, IC'nin dayandığı kapasitör-şarj-pompa sistemi aracılığıyla DC-DC negatif voltaj dönüşümü gerçekleştiren LM2262MX IC'ye dayanmaktadır.

Dalga Formu Jeneratörleri Sistemi

Sistem, MCU'nun SPI'si (seri çevresel arabirim) tarafından tam dalga formu oluşturma kontrolüne izin veren ayrı DDS (doğrudan dijital sentez) entegre devrelerine vurgu yapılarak tasarlanmıştır. Tasarımda kullanılan devreler, farklı tipte dalga biçimleri sağlayabilen Analog Cihazlar AD9834'tür. AD9834 ile çalışırken yüzleşmemiz gereken zorluklar şunlardır:

  • Sabit dalga biçimi genliği: Dalga biçimi genliği, harici DAC modülü tarafından kontrol edilir
  • Ofset DC seviyesi dikkate alınmaz: İstenen DC ofset değerleriyle toplama devrelerinin uygulanması
  • Kare dalga ve üçgen/sinüs dalgası için ayrı çıkışlar: Yüksek frekanslı anahtarlama devresinin uygulanması, böylece her kanal tek çıkışı istenen tüm dalga biçimlerini sağlayabilir: sinüs, üçgen, kare ve DC.

Sıvı kristal ekran

LCD, UI'nin (kullanıcı arayüzü) bir parçasıdır ve amacı, kullanıcının cihazın gerçek zamanlı modda ne yaptığını anlamasını sağlamaktır. Her cihaz durumunda kullanıcı ile etkileşime girer.

zil

Cihazdan kullanıcıya ek geri bildirim için basit ton üreteci devresi.

Entegre ISP Programcısı

Programlama süreci söz konusu olduğunda her mühendis için süregelen bir sorun vardır: Ürünü yeni bir aygıt yazılımıyla yeniden programlamak için her zaman en kötü şekilde parçalarına ayırma ihtiyacı vardır. Bu rahatsızlığı gidermek için, AVR ISP programcısı cihaza içeriden bağlanırken, USB veri ve güç hatları cihazın USB Type-A konektörüne bağlanmıştır. Bu konfigürasyonda, programlama veya şarj için sadece FuncGen'imizi USB kablosuyla takmamız gerekiyor!

Adım 2: Blok Şeması - Ağ Oluşturma

Blok Şeması - Ağ Oluşturma
Blok Şeması - Ağ Oluşturma

Çift Kanallı Fonksiyon Üreticisi

Ana cihaz. Önceki adımda incelediğimiz

ESP-WROOM-32

WiFi ve BLE özelliklerine sahip Entegre Çip Üzerinde Sistem. SoC, UART modülü aracılığıyla ana karta bağlanır (bunu şematik adımında ele alacağız) ve ana cihaz ile Android akıllı telefon arasında bir mesaj alıcısı görevi görür.

WiFi Yerel Ağ

Akıllı telefon ve cihaz, TCP sunucu/istemci yapılandırmasına dayalı olarak WiFi doğrudan veya yerel alan ağı aracılığıyla iletişim kurar. WiFi üzerinde cihazlar birbirini tanıdığında, ana cihaz uygun parametrelerle TCP sunucusu oluşturur ve mesaj gönderip alabilir. Cihaz, akıllı telefona ikincil olarak davranır. Öte yandan Android cihaz, bir istemci ağ cihazı olarak TCP sunucusuna bağlanır, ancak birincil mesaj vericisi olarak kabul edilir - akıllı telefon, tam iletişim döngüsünü başlatandır: Mesaj gönderme - yanıt alma.

Android Akıllı Telefon

FuncGen uygulaması üzerinde çalışan Android işletim sistemi tabanlı akıllı telefon cihazı

Adım 3: Parçalar, Araçlar, IDE ve Malzeme Listesi

Parçalar, Araçlar, IDE ve Malzeme Listesi
Parçalar, Araçlar, IDE ve Malzeme Listesi
Parçalar, Araçlar, IDE ve Malzeme Listesi
Parçalar, Araçlar, IDE ve Malzeme Listesi
Parçalar, Araçlar, IDE ve Malzeme Listesi
Parçalar, Araçlar, IDE ve Malzeme Listesi

Malzeme Listesi (ekli XLS tablosuna bakın)

Kullanıcı Arayüzü ve Sistem Bağlantıları

  • 1 x 2004A Char-LCD 20x4 Mavi
  • 1 x USB Tip B Konnektör
  • 1 x 10 Takım Mini Mikro JST XH 2.54mm 4 Pin
  • 1 x 6 adet Anlık SW

PCB Sıralaması (Seed Studio'ya Göre)

Ana Malzeme FR-4

Katman Sayısı 2 katman

PCB Miktarı 10

Farklı Tasarım Sayısı 1

PCB Kalınlığı 1,6 mm

PCB Rengi Mavi

Yüzey Cilası HASL

Minimum Lehim Maskesi Barajı 0.4mm↑

Bakır Ağırlığı 1oz

Minimum Matkap Deliği Boyutu 0.3mm

İz Genişliği / Aralığı 6/6 mil

Kaplama Yarım Delikler / Castellated Delikler Hayır

Empedans Kontrol Hayır

Aletler

  • Sıcak yapıştırıcı tabancası
  • Cımbız
  • Kesici
  • ~ 22AWG tel arıza işleme amaçları için
  • Havya/istasyon
  • Lehimleme kalay
  • SMD yeniden işleme istasyonu (isteğe bağlı)
  • 3D yazıcı (Opsiyonel)
  • Ekstrüzyon dosyası
  • AVR ISP Programcısı
  • USB'den Seri Dönüştürücüye (Opsiyonel, hata ayıklama amacıyla)

Entegre Geliştirme Ortamı (IDE) ve Yazılım

  • Autodesk EAGLE veya Cadence Şematik Düzenleyici / Allegro PCB Düzenleyici
  • OpenSCAD (Opsiyonel)
  • Ultimaker Cura (Opsiyonel)
  • Saleae Mantığı (Sorun giderme için)
  • Atmel Studio 6.3 veya üzeri
  • Android Studio veya Eclipse IDE
  • Docklight Seri Monitör / Diğer COM bağlantı noktası izleme yazılımı
  • AVR ATMEGA32L flaş programlama için ProgISP

Adım 4: Donanım Tasarımı - Ana Kart

Donanım Tasarımı - Ana Kart
Donanım Tasarımı - Ana Kart
Donanım Tasarımı - Ana Kart
Donanım Tasarımı - Ana Kart
Donanım Tasarımı - Ana Kart
Donanım Tasarımı - Ana Kart

Pil Yönetim Devresi

Pil şarj devresi, Li-Ion pil için istenen şarj akımını seçmemizi sağlayan MCP7383 IC'ye dayanmaktadır - 850mAh kapasiteli 3.7V. Bizim durumumuzda şarj akımı direnç değeri (R1) programlanarak ayarlanır.

R1 = 3KOhm, I(şarj) = 400mA

USB voltajı VBUS, π filtresi (C1, L3, C3) tarafından filtrelenir ve şarj devresi için bir güç kaynağı görevi görür.

Voltaj bölücü devre (R2, R3), MCU A/D kanalına aşağıdaki voltajı sağlayarak MCU'nun harici USB güç kaynağının bağlı olup olmadığını göstermesini sağlar:

V(gösterge) ~ (2/3)V(BUS)

ATMEGA32L'nin A/D'si 12 bit olduğundan, dijital aralığı hesaplayabiliriz:

A/D(aralık) = 4095V(gösterge) / V(REF).

A/D ∈ [14AH: FFFH]

Akıllı Anahtar Güç Ünitesi

Devre, sistemin tasarlanan her bloğa güç kaynağını hem butondan hem de MCU üzerindeki yazılımdan kontrol etmesini sağlar ve RESET yerine GÜÇ ile STM6601 Smart-Switch seçeneğine dayanır. Düşünmek istediğimiz terminaller şunlardır:

  • PSHOLD - Cihaz durumunu tanımlayan giriş satırı: DÜŞÜK çekilirse, cihaz tüm ikincil güç kaynağı ünitelerini (+3.3V ve -3.3V) devre dışı bırakır. YÜKSEK tutulursa - cihaz AÇIK durumunu korur.
  • nSR ve nPB - Giriş hatları. Düğme terminalleri. Bu pinlerde düşen kenar algılandığında cihaz açma/kapama moduna girmeye çalışır.
  • nINT - Çıkış satırı. Düğmeye her basıldığında DÜŞÜK çekilir
  • TR - Çıkış hattı, ikincil güç kaynağı üniteleri için güç etkinleştirme olarak kullanılır. DÜŞÜK tutulurken, her iki ikincil güç kaynağı da devre dışı bırakılır

Nihai tasarıma geçmeden önce bazı önemli notlar var:

  • PSHOLD, 3.3V'a çekilmelidir, çünkü MCU'ların tüm G/Ç'leri HIGH-Z durumunda olmaya zorladığı durumlar vardır. Bu durumda, MCU'dan gelen PSHOLD durumu bilinmemektedir ve cihaz programlama sürecini önemli ölçüde etkileyebilir.
  • STM6601, RESET seçeneği yerine uzun basışta EN ayar seçeneği ile sipariş edilmelidir (Ben buna düştüm).

Güç Kaynağı Birimi: +3.3V

Projemizdeki tüm sistemler için ana güç kaynağı. +3.3V hattı GND seviyesinde tutulduğunda (yani voltaj yok), akıllı anahtar hariç tüm IC devre dışı bırakılır. Devre, EN terminali üzerinden kontrol edilebilme ve 1A'ya kadar akım sağlayabilme özelliğine sahip LDO LP-3875-3.3 IC'ye dayanmaktadır.

Bu devre için güç kaynağı, VBUS algılama devresine benzer şekilde konfigürasyonda VBAT'ı algılamak için ekli A/D göstergeli pil voltajıdır. Bu durumda, hesaplamalar biraz farklıdır;

V(Pilden A/D'ye) = 0,59V(Pil); A/D(aralık) ∈ [000H: C03H]

Güç Kaynağı Birimi: -3.3V

Negatif voltaj besleme devresi, 0V DC faktörü ile simetrik dalga formları üretmemize izin verir (yani dalga formu ortalama değeri 0V olabilir). Bu devre, "şarj pompası" yöntemiyle çalışan LM2662MX IC - DC/DC dönüştürücüye dayanmaktadır. Devrenin maksimum çıkış akımı 200mA'dır ki bu tasarım gereksinimlerimiz için yeterlidir - her cihazın kanalından 80mA çıkış akımı ile sınırlıyız.

IC gerekli tüm işleri gerçekleştirir, bu nedenle yalnızca bağlamamız gereken parçalar iki elektrolitik kapasitördür: Anahtarlama için C33 ve -3.3V hat baypası için C34 (gürültü azaltma konuları). Devreyi dalga formu oluşturma parçalarından yeterince uzağa yerleştirirsek, anahtarlamanın frekansı tasarımda ihmal edilebilir (Bunu PCB Düzeni adımında tartışacağız).

Mikrodenetleyici Birimi - MCU

Bu, sistemimizin yöneticisi ve CEO'sudur - kontrol, ağ yönetimi, mesaj iletimi ve UI desteği - her şey MCU'ya aittir.

Seçilen MCU, Atmel ATMEGA32L'dir; burada L, desteklenen voltaj işlemi ∈ [2.7V: 5.5V] anlamına gelir. Bizim durumumuzda, çalışma voltajı +3.3V'dir.

Tasarımımızda MCU ile çalışırken anlaşılması gereken ana işlem bloklarını ele alalım:

  • Harici Osilatör - 8MHz çalışma frekansıyla ilgilendiğimiz için isteğe bağlı bir bileşendir
  • Çevre Birimi Kontrolü, SPI Ağı - Tüm çevresel cihazlar (ESP32 hariç) SPI aracılığıyla MCU ile iletişim kuruyor. Tüm cihazlar (SCK, MOSI, MISO) için ortak üç hat vardır ve her çevresel devrenin özel CS (Chip Select) hattı vardır. Cihazın parçası olan SPI cihazları:

    1. Genlik kontrolü için D/A - Kanal A
    2. Genlik kontrolü için D/A - Kanal B
    3. AD9834 cihazı - Kanal A
    4. AD9834 cihazı - Kanal B
    5. Önyargılı voltaj kontrolü için D/A - Kanal A
    6. Önyargılı voltaj kontrolü için D/A - Kanal B
    7. LCD parlaklık/kontrast ayarları için Dijital Potansiyometre
  • LCD Desteği - LCD, 20 x 4 karakterlik genel bir ekran olduğundan, 4 bit arabirim (Lines D7:D4), kontrol pinleri (Lines RS, E) ve parlaklık/kontrast kontrolü (Lines V0 ve Anode) kullanıyoruz.
  • RGB LED desteği - Bu modül isteğe bağlıdır, ancak MCU'ya bağlı uygun dirençlere sahip ortak katot RGB LED konektörü vardır.
  • Güç Kontrolü - MCU, gerçek zamanlı modda güç sistemi izlemesi gerçekleştirir ve gerekli tüm güç olaylarını yönetir:

    1. VBAT_ADC - Akü voltajının izlenmesi ve durumunun belirlenmesi (ADC0 Kanalı)
    2. PWR_IND - Harici güç kaynağı bağlantısı göstergesi (ADC1 Kanalı)
    3. PS_HOLD - Tanımlanan tüm sistemler için birincil güç etkinleştirme hattı. MCU tarafından aşağı çekildiğinde, cihaz kapanır
    4. Akıllı anahtarın kesme terminali - Basma düğmesi durum izleme
  • WiFi Ağ Yönetimi - ESP32: MCU, UART arabirimi aracılığıyla ESP32 ile iletişim kurar. 8MHz, nispeten küçük bir hatayla 115200 baud hızını uygulamamıza izin verdiği için, baud hızı değişikliklerinin ön tanımları olmadan devrede ESP32'yi kullanabiliriz.

AVR ISP Programcısı

MCU'muz SPI üzerinden programlanmıştır, sıfırlama hattı (/RST) düzgün çalışması için YÜKSEK çekilmelidir (eğer değilse - MCU kendini sonsuza kadar sıfırlama durumunda bulur).

Cihazın USB üzerinden hem programlanabilmesi hem de şarj olabilmesi için AVR ISP programlayıcı (eBay'den satın alınan küçük boyutlu ürün) ekledim. Cihazın tam USB desteğini sürdürebilmesi için USB Type-A (D+, D-, VBUS ve GND) terminallerinin AVR ISP cihazı ile bağlanması gerekir.

Dalga Formu Üretim Devresi

Cihazın çekirdeği bu devrelerdir. AD9834, sistemden almak istediğimiz tüm dalga formlarını bize sağlayan düşük güçlü bir DDS cihazıdır. Devreler, ayrılmış harici 50MHz osilatörlere sahip iki bağımsız AD9834 IC içerir (şematiklerde görüldüğü gibi). Ayrılmış osilatörün nedeni, dijital devrelerin gürültü azaltma hususlarıdır, bu nedenle karar, AD9834'ün yanına yerleştirilmiş osilatörlerle uygun 50MHz hatlarını ele almaktı.

Şimdi biraz matematiğe bakalım:

DDS cihazı, 28 bitlik bir kayıtta tutulan çıkış değeri ile Phase Wheel teknolojisi üzerinde çalıştığı için, dalga formu oluşumunu matematiksel olarak açıklayabiliriz:

dP(faz) = ωdt; ω = P' = 2πf; f(AD9834) = ΔP * f(clk) / 2^28; ΔP ∈ [0: 2^28 - 1]

AD9834 veri sayfasına göre, maksimum frekans dikkate alınarak, çıkış frekansı çözünürlüğü elde edilebilir:

Δf = k * f(osilatör) / f(maksimum) = 0.28 * 50M / 28M = 0.187[Hz]

AD9834 IC'ler, üçgen/sinüs dalgası (IOUT terminali) için bir analog akım çıkışı ve kare dalga (SIGN_OUT terminali) için dijital çıkış sağlar. İşaret bitinin kullanımı biraz zor ama biz bununla başa çıkabiliriz - DDS, karşılaştırma değeri eşiğini her geçtiğinde, SIGN_OUT buna göre davranır. Her kanalın çıkışına 200 Ohm'luk bir direnç bağlanmıştır, bu nedenle çıkış voltajının anlamlı bir değeri olacaktır:

I(tek kanal) = V(çıkış) / R(voltaj seçimi); V(çıktı) = R(VS)*I(SS) = 200I(SS) [A]

Genlik Kontrol (D/A) Devreleri

AD9834 veri sayfasına göre, genliği DDS tam ölçekli sisteme akım verilerek ayarlanabilir, bu nedenle çift D/A IC yardımıyla bu akımı ayarlayarak çıkış sinyalinin genliğini kontrol edebiliriz. Bir kez daha, biraz matematik:

I(tam ölçek) = 18 * (V_REF - V_DAC) / R_SET [A]

Şematiklere göre ve bazı sayıları denkleme koyarak:

I(tam ölçek) = 3.86 - 1.17 * V_DAC [A]

Tasarımda kullanılan D/A modülü, akım [0mA: 3.86mA] aralığında olduğunda ve lineer genlik fonksiyonu şu şekilde olduğunda 12 bit MCP4922'dir:

V(genlik seçimi) = 1 - [V(D/A) / (2^12 - 1)]

Dalga Formu Çoğullama Devresi

Kare dalga ve sinüs/üçgen dalga üretim çıkışları AD9834'te ayrılmıştır, bu nedenle, istenen tüm dalga formlarını tek bir ayrılmış kanaldan almaya izin vermek için her iki çıkış için yüksek hızlı bir çoğullama devresi kullanmamız gerekir. Çoklayıcı IC, çok düşük bir açık dirence (~ 0,5Ohm) sahip bir ADG836L analog anahtarıdır.

MCU'nun çıktılar için kullandığı seçim tablosu olduğu gibi:

Mod Seçimi [D2:D1] | Çıkış Kanalı A | Çıkış Kanalı B

00 | Sinüs/Üçgen | Sinüs/Üçgen 01 | Sinüs/Üçgen | Kare 10 | Kare | Sinüs/Üçgen 11 | Kare | Meydan

Bias Voltaj Kontrolü (D/A) devreleri

Dalga formu üretecinin ana özelliklerinden biri DC değerini kontrol etmektir. Bu tasarımda, her kanal için istenen D/A voltajı ayarlanarak yapılır ve bu öngerilim voltajları, biraz daha önce tartıştığımız çoğullanmış çıkışlarla toplanır.

D/A'dan alınan voltaj [0V: +3.3V] aralığındadır, bu nedenle D/A aralığını [-3.3V: +3.3V] ile eşleştiren ve cihazın tam aralık sağlamasına izin veren op-amp tabanlı bir devre vardır. İstenen DC bileşeninin Can sıkıcı analitik matematiği atlayacağız ve sadece nihai sonuçlara odaklanacağız:

V_OUT(kanal B) = V_BIAS_B(+) - V_BIAS_B(-); V_OUT(kanal A) = V_BIAS_A(+) - V_BIAS_A(-)

Şimdi, DC bileşen aralığı [-3.3V: +3.3V] aralığındadır.

Toplama Devreleri - DC Bileşenleri ve Dalga Biçimi Çıkışları

Bu noktada, uygun cihaz çıkışı için ihtiyacımız olan her şeye sahibiz - tam voltaj aralığında Bias Voltajı (DC bileşeni) ve çoğullanmış AD9834 çıkışları. Bunu, toplama amplifikatörü - op-amp konfigürasyonunu kullanarak gerçekleştireceğiz.

Matematiği bir kez daha atlayalım (zaten birçok matematiksel yaklaşımı ele aldık) ve toplama amplifikatörünün çıktısının nihai sonucunu yazalım:

V(cihaz çıkışı) = V(pozitif sapma) - V(negatif sapma) - V(çoklanmış çıkış) [V]

Buradan:

V_OUT = ΔV_BIAS - V_AD9834 [V]

BNC tipi çıkış konnektörleri bir seçim dirençleri (R54, R55; R56, R57) ile bağlanır. Bunun nedeni, tasarımın işlevsiz olması durumunda, toplama amplifikatörü kullanmak isteyip istemediğimizi yine de seçebiliriz.

Önemli Not: Cihazdan alınabilecek maksimum genliği değiştirmek için son toplama amplifikatörlerinin direnç ağları bir tasarımcı tarafından ayarlanabilir. Benim durumumda, tüm amperler aynı kazancı paylaşıyor = 1, bu nedenle maksimum tamponlanmış genlik, üçgen/sinüs dalgası için 0.7Vpp ve kare dalga için 3.3Vpp'dir. Spesifik matematiksel yaklaşım, adımın ekli resimleri arasında bulunabilir.

ESP32 Harici Modül Olarak

MCU, ESP32 ile UART arayüzü üzerinden iletişim kurar. ESP32 için kendi PCB'mi istediğim için bağlanabilecek 4 terminal var: VCC, RX, TX, GND. J7, PCB'ler arasında bir arayüz konektörüdür ve ESP32, cihazın içinde harici modül olarak tahsis edilecektir.

Kullanıcı Arayüzü - LCD ve Hoparlör

Kullanılan LCD, 4 bitlik bir arayüze sahip genel bir 20 x 4 karakterli ekrandır, Tasarımdan da anlaşılacağı gibi, LCD terminalleri "A" ve "V0"a bağlı bir SPI dijital potansiyometre vardır - amacı ayar yapmaktır. LCD modülünün parlaklığı ve kontrastı programlı olarak.

Hoparlör, MCU'dan basit kare dalga üretimi ile kullanıcı için ses çıkışı sağlar. BJT T1, sadece iki durumda olabilen hoparlör üzerinden akımı kontrol eder - AÇIK / KAPALI.

Adım 5: Donanım Tasarımı - ESP32 Modülü

Donanım Tasarımı - ESP32 Modülü
Donanım Tasarımı - ESP32 Modülü

ESP32, ana PCB için harici bir modül olarak kullanılır. Cihaz iletişimi, genel bir cihazın donanım yazılımında bulunan AT komutlarına dayanır.

Bu tasarım üzerinde genişletilecek pek bir şey yok, ancak tasarım için bazı notlar var:

  • ESP32'nin uygun UART modülünü kullanmanın hata işlemesi için, hem TX hem de RX hatları için üç seçim direnci ekledim. (her biri için 0Ohm). Standart konfigürasyon için AT komutları için UART2 modülü kullanılır (R4, R7 lehimlenmelidir)
  • Cihaz 4 hat çıkışına sahiptir - VCC, GND, TX, RX.
  • IO0 ve EN pinleri cihazın çalışmasını değerlendirir ve şemalarda verildiği gibi tasarlanmalıdır.

Bir sonraki adımda ele alacağımız tüm PCB özellikleri.

Adım 6: PCB Düzeni

PCB Düzeni
PCB Düzeni
PCB Düzeni
PCB Düzeni
PCB Düzeni
PCB Düzeni

PCB tasarlamanın amaçları

  1. Aynı kart üzerindeki tüm entegre devreler için gömülü sistem oluşturun
  2. Tek bir ana PCB tasarlayarak cihaz performansını iyileştirin
  3. Maliyet azaltma - fiyatlara bakmak isterseniz, düşük maliyetli tasarımlar GERÇEKTEN düşük maliyetlidir
  4. Elektronik kart boyutunu en aza indirin
  5. Sorun gidermesi kolay - Her olası arızalı hat için TP'leri (Test noktaları) kullanabiliriz.

Teknik parametreler

Her iki PCB: ana ve ESP32 kartı, üretim süreci için aynı özellikleri paylaşır - düşük maliyetli ve amaçlarımız için kullanılabilir. Onları görelim:

A - Ana Kart

  • Boyut: 10cm x 5.8cm
  • Katman Sayısı: 2
  • PCB kalınlığı: 1,6 mm
  • Minimum iz alanı/genişliği: 6/6mil
  • Minimum geçiş deliği çapı: 0,3 mm
  • PCB minimum mesafesinin kenarına bakır: 20mil
  • Yüzey bitirme: HASL (Oldukça iyi görünümlü gümüş renkli ucuz tip)

B - Ana Kart

  • Boyut: 3cm x 4cm
  • Katman Sayısı: 2
  • PCB kalınlığı: 1,6 mm
  • Minimum iz alanı/genişliği: 6/6mil
  • Minimum geçiş deliği çapı: 0,3 mm
  • PCB minimum mesafesinin kenarına bakır: 20mil
  • Yüzey bitirme: HASL

Adım 7: 3B Muhafaza

3D Muhafaza
3D Muhafaza

Bunu kendim tasarlamadım, çünkü o sırada bu cihazı çalışmaya ikna ediyordum, bu yüzden tüm 3D baskı temellerinin farkında değildim. Bu nedenle, Thingiverse'den bir SCAD projesi kullandım ve cihazımın özelliklerine göre sınırlara farklı açıklıklar ekledim.

  1. Baskı Cihazı: Creality Ender-3
  2. Yatak Tipi: Cam, 5mm kalınlık
  3. Filament Çapı: 1.75mm
  4. Filament tipi: PLA+
  5. Meme Çapı: 0.4mm
  6. İlk Hız: 20mm/Sn
  7. Ortalama Hız: 65mm/Sn
  8. Destek: Yok
  9. Dolgu: %25
  10. Sıcaklık:

    • Yatak: 60(oC)
    • Nozul: 215(oC)
  11. Filament Rengi: Siyah
  12. Toplam Açıklık Sayısı: 5
  13. Pano Sayısı: 4

    • ÜST Kabuk
    • Alt Kabuk
    • Ön panel
    • Arka panel

8. Adım: Yazılım Uygulaması - MCU

Yazılım Uygulaması - MCU
Yazılım Uygulaması - MCU
Yazılım Uygulaması - MCU
Yazılım Uygulaması - MCU
Yazılım Uygulaması - MCU
Yazılım Uygulaması - MCU

Android ve Atmega32 Koduna GitHub Bağlantısı

Yazılım Algoritması

MCU tarafından gerçekleştirilen tüm işlemler ekteki akış şemalarında açıklanmıştır. Buna ek olarak, proje için ek bir kod var. Yazılım özelliklerini ele alalım:

Güçlendirme

Bu aşamada, MCU, Android cihazla kayıtlı iletişim türünün belirlenmesiyle birlikte tüm başlatma dizilerini gerçekleştirir: Doğrudan WiFi veya WLAN ağ iletişimi - bu veriler EEPROM'da saklanır. Kullanıcı bu aşamada Android cihaz eşleştirme türünü yeniden tanımlayabilir.

Doğrudan Android Cihaz Eşleştirme

Bu tür eşleştirme, FuncGen cihazı tarafından WiFi ağı oluşturulmasına dayanır. Belirli bir SSID (WiFi ağ adı) ve belirli bir bağlantı noktası numarası ile yerel bir cihaz IP'sinde AP (Erişim Noktası) ve bir TCP sunucusu oluşturacaktır. Cihaz durumu korumalıdır - bağlantılar için açık.

Android cihaz FuncGen'e bağlandığında, MCU ETKİN moda girer ve Android cihazından gelen kullanıcı talimatlarına göre yanıt verir.

WLAN Eşleştirme

Yerel bir WiFi ağında iletişim kurmak için MCU, ESP32'nin AP oluşturması, Android cihazla iletişim kurması ve önemli ağ verilerini değiş tokuş etmesi için komutlar sağlamalıdır:

  • Android cihaz MAC adresini FuncGen'den alır, hafızasında saklar.
  • FuncGen cihazı, Android cihazından seçilen WLAN parametrelerinden alır: SSID, güvenlik türü ve Şifre ve EEPROM'da saklar.

Cihazlar gerçekten aynı WLAN'a bağlandığında, Android cihaz, WLAN'a bağlı cihazların tüm MAC adreslerini tarayarak FuncGen'i arayacaktır. Android cihaz MAC eşleşmesini belirlediğinde iletişim kurmaya çalışır.

Bağlantı ve Durum İşleme - MCU

Cihazlar birbirleriyle iletişim kurduğunda, protokol (bkz. ön son adım) aynı kalır ve akış şeması aynıdır.

Cihaz Durumu İzleme

Zamanlanmış kesme, MCU'ya durum işleme için gerekli ayrıntıları sağlar. Her zamanlayıcı kesintisi döngüsü, aşağıdaki parametre listesi güncellenir:

  • Harici güç kaynağı - Açık/Kapalı
  • Akü voltajı durumu
  • Her özelleştirme için kullanıcı arayüzü güncellemesi
  • Basma Düğmesi: Basıldı/Basılmadı

9. Adım: Yazılım Uygulaması - Android Uygulaması

Yazılım Uygulaması - Android Uygulaması
Yazılım Uygulaması - Android Uygulaması
Yazılım Uygulaması - Android Uygulaması
Yazılım Uygulaması - Android Uygulaması
Yazılım Uygulaması - Android Uygulaması
Yazılım Uygulaması - Android Uygulaması
Yazılım Uygulaması - Android Uygulaması
Yazılım Uygulaması - Android Uygulaması

Android uygulaması Java-Android tarzında yazılmıştır. Algoritmayı ayrı kod bloklarına bölerek önceki adımlarla aynı şekilde açıklamaya çalışacağım.

Güç Açma Sırası

Cihazın ilk sırası. Burada uygulama logosu, Android cihazının GPS ve WiFi modüllerinin etkinleştirilmesiyle birlikte sunulur (Endişelenmeyin, GPS yalnızca WiFi uygun ağ taraması için gereklidir).

Ana menü

Uygulama önyüklendikten sonra ekranda dört düğme görünecektir. Düğmeler eylemi:

  1. DOĞRUDAN BAĞLANTI: IOT_FUNCGEN SSID'si ile FuncGen'in AP'sine bağlantı başlatılıyor. Bağlantı başarılı ise cihaz ana UI moduna girer.
  2. WIFI BAĞLANTISI: Cihaz, hafızada saklanan veri parametrelerinin olup olmadığını kontrol eder: wifi.txt, mac.txt. Depolanmış veri yoksa, cihaz kullanıcı isteğini reddedecek ve önce WLAN eşleştirmesinin yapılması gerektiğini belirten bir açılır mesaj verecektir.
  3. EŞLEŞTİRME: FuncGen ile DIRECT CONNECTION ile aynı şekilde iletişim kurma, ancak sürekli mesaj alışverişi yerine tek bir el sıkışma var. Android cihaz, WiFi ağına zaten bağlı olup olmadığını kontrol eder ve kullanıcıdan şifre girmesini ister. Yeniden bağlantı başarılı olursa, Android cihaz SSID'yi ve parolayı wifi.txt dosyasında saklar. FuncGen ile başarılı bir iletişimden sonra, alınan MAC adresini mac.txt dosyasında saklar.
  4. Çıkış: Yeter dedi:)

WiFi Tarama Yöneticisi

Uygulamanın tamamen çalışır durumda olmasını ve uygulama dışı ayarlamalar yapılmamasını istedim. Bu yüzden, bilinen bir parola ve SSID ile WiFi ağına bağlanmak için gerekli tüm işlemleri gerçekleştiren WiFi Tarayıcıyı tasarladım.

Veri İletimi ve TCP İletişimi

Bu, uygulamadaki ana kod bloğudur. Tüm UI birimleri için, FuncGen'i kanallar için istenen çıktıyı sağlamaya zorlayan belirli bir formatta (ön son adım) tanımlanmış bir mesaj vardır. Etkinlikte üç tür UI alanı vardır:

  1. Arama Çubukları: Burada gerçek aralıktaki FuncGen çıktı parametrelerini tanımlarız

    1. Genlik
    2. DC Ofset
    3. LCD Parlaklığı
    4. LCD kontrast
  2. Metin Düzenleme: Tamsayı değerlerini iyi tanımlanmış ve kesin tutmak için, frekans girişi sadece sayılar metin kutuları aracılığıyla yapılır.
  3. Düğmeler: Mevcut listelerden parametre seçimi:

    1. Dalga Formu Tipi

      1. Sinüs
      2. Üçgen
      3. DC
      4. Meydan
      5. KAPALI
    2. Bilgi almak

      1. Pil Durumu (Yüzde)
      2. AC Durumu (Harici Güç Kaynağı)
    3. Önyükleme Seçeneği (FuncGen MCU için)

      1. Fabrika ayarı
      2. Tekrar başlat
      3. Kapat
      4. Doğrudan - Doğrudan eşleştirme moduyla yeniden başlatın
      5. WLAN - WLAN eşleştirme moduyla yeniden başlat
    4. Ana Menüye Çık: Yeter Dedi:)

Adım 10: Test Etme

Önerilen: