Daftar Isi:

Generator Fungsi Portabel di WiFi dan Android: 10 Langkah
Generator Fungsi Portabel di WiFi dan Android: 10 Langkah

Video: Generator Fungsi Portabel di WiFi dan Android: 10 Langkah

Video: Generator Fungsi Portabel di WiFi dan Android: 10 Langkah
Video: ALAT INI SERIUS BISA MENGETAHUI Password WI-FI ? BENERAN NGGA SIH ? 2024, Juli
Anonim
Generator Fungsi Portabel di WiFi dan Android
Generator Fungsi Portabel di WiFi dan Android
Generator Fungsi Portabel di WiFi dan Android
Generator Fungsi Portabel di WiFi dan Android
Generator Fungsi Portabel di WiFi dan Android
Generator Fungsi Portabel di WiFi dan Android
Generator Fungsi Portabel di WiFi dan Android
Generator Fungsi Portabel di WiFi dan Android

Menjelang akhir abad ke-20, berbagai inovasi teknologi bermunculan, terutama di bidang komunikasi; tapi tidak hanya. Bagi kami, pengguna, konsumen, dan insinyur menyadari perkembangan pesat perangkat elektronik, yang dapat membuat hidup kita jauh lebih mudah: Jam tangan pintar, rumah pintar, telepon pintar, dll.

Karena semuanya bisa "pintar" saat ini, saya telah memutuskan untuk merancang perangkat yang sangat berguna untuk menjadi bagian dari peralatan laboratorium elektronik yang penting - Generator Fungsi Portabel, dapat dikontrol oleh smartphone berbasis OS Android melalui WiFi direct atau WiFi Local Area Network (WLAN).

Mengapa kita harus membangun perangkat ini?

Sebagian besar peralatan pengujian cukup mahal saat ini. Dan terkadang, perangkat ini tidak portabel. Sebagai solusi untuk harga tinggi, kurangnya portabilitas dan kurangnya akses jaringan perangkat, perangkat menyediakan generator gelombang saluran ganda, yang memang portabel dan memiliki akses tidak terbatas ke jaringan - baik internet maupun lokal.

Dan tentu saja, perangkat harus dibangun karena antusiasme, mematuhi prinsip-prinsip DIY - Terkadang kita hanya perlu melakukan sesuatu sendiri untuk merasa benar:)

Fitur Utama

Sumber Daya listrik

  • Konektor USB Tipe-A, untuk sistem catu daya dan pemrograman
  • Sistem manajemen baterai Li-Ion lengkap - Mode pengisian daya dan stabil
  • Implementasi Smart Switch - tidak perlu sakelar sakelar daya
  • Catu daya ganda: +3.3V dan -3.3V untuk pembangkitan bentuk gelombang tegangan simetris

Generasi bentuk gelombang

  • Implementasi level DC pada kaskade keluaran - bentuk gelombang bias antara batas tegangan
  • Generasi bentuk gelombang 4 tipe berbasis DDS - Sinus, segitiga, persegi, dan DC
  • Dukungan frekuensi hingga 10MHz
  • Arus keluaran hingga 80mA dengan ketersediaan daya maksimum 500mW
  • Saluran terpisah untuk pembangkitan bentuk gelombang - split sirkuit berbasis AD9834

Komunikasi

  • Implementasi ESP32 - Kemampuan WiFi yang berlaku
  • Dukungan TCP/IP lengkap oleh perangkat generator dan smartphone Android
  • Kemampuan untuk menyimpan parameter pengguna untuk setiap siklus perangkat
  • Pemantauan status - kedua sistem saling mengetahui status satu sama lain: FuncGen (sebut saja mulai sekarang) dan ponsel cerdas.

Antarmuka pengguna

  • LCD 20 x 4 Karakter dengan antarmuka data 4-bit sederhana
  • Aplikasi Android - kontrol pengguna lengkap atas perangkat FuncGen
  • Sirkuit buzzer - umpan balik suara untuk pengguna

Langkah 1: Diagram Blok - Perangkat Keras

Diagram Blok - Perangkat Keras
Diagram Blok - Perangkat Keras
Diagram Blok - Perangkat Keras
Diagram Blok - Perangkat Keras

Unit Mikrokontroler - ATMEGA32L

Mikrokontroler adalah chip yang dapat diprogram yang terdiri dari semua fungsi komputer yang berada dalam satu chip elektronik. Dalam kasus kami, itu adalah "otak" dan komponen utama dari sistem. Tujuan MCU adalah untuk mengelola semua sistem periferal, menangani komunikasi antara sistem ini, mengendalikan operasi perangkat keras dan menyediakan dukungan lengkap untuk antarmuka pengguna dan interaksinya dengan pengguna sebenarnya. Proyek ini berbasis ATMEGA32L MCU, yang dapat beroperasi pada 3.3V dan frekuensi 8MHz.

SoC Komunikasi - ESP32

SoC (System on Chip) ini menyediakan dukungan komunikasi lengkap untuk FuncGen - Akses ke kemampuan WiFi termasuk komunikasi langsung, lokal atau internet. Tujuan perangkat adalah:

  • Menangani transmisi data antara aplikasi Android dan perangkat FuncGen
  • Manajemen pesan kontrol/data
  • Dukungan konfigurasi Client-Server TCP/IP terus menerus

Dalam proyek kami, SoC adalah espressif ESP32, yang terlalu populer untuk dikembangkan lebih jauh:)

Sistem Manajemen Baterai Li-Ion

Untuk mengubah perangkat kami menjadi perangkat portabel, perangkat berisi sirkuit pengisian baterai Li-Ion yang dirancang. Sirkuit didasarkan pada IC MC73831, dengan arus pengisian yang dapat dikontrol melalui penyesuaian nilai resistor pemrograman tunggal (Kami akan membahas topik ini dalam langkah Skema). Input catu daya perangkat adalah konektor USB Tipe-A.

Sirkuit Saklar Cerdas

Sirkuit kontrol daya perangkat sakelar pintar menyediakan kontrol perangkat lunak lengkap atas urutan shutdown perangkat dan kurangnya kebutuhan sakelar sakelar eksternal untuk pemutus tegangan baterai perangkat. Semua operasi daya dilakukan dengan menekan tombol dan perangkat lunak MCU. Dalam beberapa kasus, akan ada kebutuhan untuk mematikan sistem: Tegangan baterai rendah, tegangan input tinggi, kesalahan komunikasi, dan sebagainya. Sakelar pintar didasarkan pada IC sakelar pintar STM6601, yang murah dan sangat ramah untuk dimainkan.

Unit Catu Daya Utama

Unit ini terdiri dari dua sirkuit catu daya yang digerakkan oleh baterai - +3,3V untuk semua sirkuit suplai digital / analog dan -3,3V untuk output simetris FunGen relatif terhadap potensial 0V (yaitu bentuk gelombang yang dihasilkan dapat diatur dalam [-3.3V:3.3V] wilayah.

  • Sirkuit suplai utama didasarkan pada regulator tegangan linier LP3875-3.3 LDO (dropout rendah) 1A.
  • Sirkuit suplai sekunder didasarkan pada IC LM2262MX, yang melakukan konversi tegangan negatif DC-DC melalui sistem pompa kapasitor-pengisian - yang menjadi dasar IC.

Sistem Generator Bentuk Gelombang

Sistem dirancang dengan penekanan pada sirkuit terintegrasi DDS (sintesis digital langsung) terpisah, yang memungkinkan kontrol pembangkitan bentuk gelombang lengkap oleh SPI (antarmuka periferal serial) MCU. Sirkuit yang digunakan dalam desain adalah Perangkat Analog AD9834 yang dapat menyediakan berbagai jenis bentuk gelombang. Tantangan yang perlu kita hadapi saat bekerja dengan AD9834 adalah:

  • Amplitudo bentuk gelombang tetap: Amplitudo bentuk gelombang dikendalikan oleh modul DAC eksternal
  • Tidak memperhatikan level DC offset: Implementasi sirkuit penjumlahan dengan nilai offset DC yang diinginkan
  • Keluaran terpisah untuk gelombang persegi dan gelombang segitiga/sinus: Implementasi rangkaian switching frekuensi tinggi sehingga setiap saluran keluaran tunggal dapat memberikan semua bentuk gelombang yang diinginkan: sinus, segitiga, persegi dan DC.

Layar Kristal Cair

LCD adalah bagian dari UI (antarmuka pengguna), dan tujuannya adalah untuk memungkinkan pengguna memahami apa yang dilakukan perangkat dalam mode waktu nyata. Ini berinteraksi dengan pengguna di setiap status perangkat.

Bel

Sirkuit generator nada sederhana untuk umpan balik tambahan dari perangkat ke pengguna.

Pemrogram ISP Terintegrasi

Ada masalah yang terus ada untuk setiap insinyur dalam hal proses pemrograman: Selalu ada kebutuhan terburuk untuk membongkar produk untuk memprogram ulang dengan firmware baru. Untuk mengatasi ketidaknyamanan ini, programmer AVR ISP dipasang ke perangkat dari dalam, sedangkan data USB dan kabel listrik diikat ke konektor USB Type-A perangkat. Dalam konfigurasi ini, kita hanya perlu mencolokkan FuncGen kita melalui kabel USB untuk pemrograman atau pengisian daya!

Langkah 2: Diagram Blok - Jaringan

Diagram Blok - Jaringan
Diagram Blok - Jaringan

Generator Fungsi Saluran Ganda

Perangkat utama. Yang telah kami ulas di langkah sebelumnya

ESP-WROOM-32

System-on-Chip Terintegrasi dengan kemampuan WiFi dan BLE. SoC terpasang ke papan utama (Kami akan membahas ini dalam langkah skema) melalui modul UART dan bertindak sebagai transciever pesan antara perangkat utama dan smartphone Android.

Jaringan Lokal WiFi

Ponsel cerdas dan perangkat akan berkomunikasi melalui WiFi langsung atau jaringan area lokal, berdasarkan konfigurasi server/klien TCP. Ketika perangkat saling mengenali di WiFi, perangkat utama membuat server TCP dengan parameter yang sesuai dan dapat mengirim/menerima pesan. Perangkat bertindak sebagai sekunder untuk smartphone. Perangkat Android di sisi lain, terhubung ke server TCP sebagai perangkat jaringan klien, tetapi dianggap sebagai pengirim pesan utama - smartphone adalah orang yang memulai siklus komunikasi lengkap: Mengirim pesan - menerima balasan.

Smartphone Android

Perangkat smartphone berbasis OS Android yang berjalan pada aplikasi FuncGen

Langkah 3: Suku Cadang, Alat, IDE, dan Bill of Material

Suku Cadang, Alat, IDE, dan Bill of Material
Suku Cadang, Alat, IDE, dan Bill of Material
Suku Cadang, Alat, IDE, dan Bill of Material
Suku Cadang, Alat, IDE, dan Bill of Material
Suku Cadang, Alat, IDE, dan Bill of Material
Suku Cadang, Alat, IDE, dan Bill of Material

Bill Of Material (Lihat tabel XLS terlampir)

Koneksi UI Dan Sistem

  • 1 x 2004A Char-LCD 20x4 Biru
  • 1 x Konektor Tipe B USB
  • 1x10 Set Mini Mikro JST XH 2.54mm 4 Pin
  • 1 x 6 pcs SW Sesaat

Pemesanan PCB (Menurut Seeed Studio)

Bahan Dasar FR-4

Jumlah Lapisan 2 lapisan

PCB Kuantitas 10

Jumlah Desain Berbeda 1

Ketebalan PCB 1.6mm

Warna PCB Biru

Permukaan Selesai HASL

Bendungan Masker Solder Minimum 0.4mm↑

Berat Tembaga 1oz

Ukuran Lubang Bor Minimum 0.3mm

Lebar Jejak / Spasi 6/6 mil

Lubang Setengah Berlapis / Lubang Castellated No

Kontrol Impedansi No

Peralatan

  • Pistol lem panas
  • Pinset
  • Pemotong
  • ~ Kabel 22AWG untuk tujuan penanganan malfungsi
  • Besi solder/stasiun
  • Timah solder
  • Stasiun pengerjaan ulang SMD (opsional)
  • Pencetak 3D (Opsional)
  • Mengekstrusi file
  • Pemrogram ISP AVR
  • USB to Serial Converter (Opsional, untuk keperluan debugging)

Lingkungan Pengembangan Terintegrasi (IDE) dan Perangkat Lunak

  • Autodesk EAGLE atau Editor Skema Irama / Editor PCB Allegro
  • OpenSCAD (Opsional)
  • Cura Ultimaker (Opsional)
  • Logika Saleae (Untuk pemecahan masalah)
  • Atmel Studio 6.3 atau lebih tinggi
  • Android Studio atau Eclipse IDE
  • Docklight Serial Monitor / Perangkat lunak pemantauan port COM lainnya
  • ProgISP untuk pemrograman flash AVR ATMEGA32L

Langkah 4: Desain Perangkat Keras - Papan Utama

Desain Perangkat Keras - Papan Utama
Desain Perangkat Keras - Papan Utama
Desain Perangkat Keras - Papan Utama
Desain Perangkat Keras - Papan Utama
Desain Perangkat Keras - Papan Utama
Desain Perangkat Keras - Papan Utama

Sirkuit Manajemen Baterai

Sirkuit pengisian baterai didasarkan pada IC MCP7383, yang memungkinkan kita untuk memilih arus pengisian yang diinginkan untuk baterai Li-Ion - 3.7V dengan kapasitas 850mAh. Arus pengisian diatur oleh nilai resistor pemrograman (R1) dalam kasus kami

R1 = 3KOhm, I(muatan) = 400mA

Tegangan USB VBUS disaring oleh -filter (C1, L3, C3) dan bertindak sebagai sumber daya untuk rangkaian pengisian daya.

Rangkaian pembagi tegangan (R2, R3) memungkinkan MCU untuk menunjukkan apakah catu daya USB eksternal terhubung atau tidak, dengan memberikan tegangan berikut ke saluran A/D MCU:

V(indikasi) ~ (2/3)V(BUS)

Karena A/D ATMEGA32L kami adalah 12-bit, kami dapat menghitung jangkauan digital:

A/D(rentang) = 4095V(indikasi) / V(REF).

A/D [14AH: FFFH]

Unit Daya Saklar Cerdas

Sirkuit memungkinkan sistem untuk mengontrol catu daya ke setiap blok yang dirancang baik dari tombol tekan dan perangkat lunak pada MCU dan didasarkan pada STM6601 Smart-Switch dengan opsi POWER alih-alih RESET. Terminal yang ingin kami pertimbangkan adalah sebagai berikut:

  • PSHOLD - Saluran input, yang menentukan status perangkat: jika ditarik RENDAH, perangkat menonaktifkan semua unit catu daya sekunder (+3.3V dan -3.3V). Jika dipegang TINGGI - perangkat mempertahankan status AKTIF.
  • nSR dan nPB - Jalur input. Terminal tombol tekan. Ketika tepi jatuh terdeteksi pada pin ini, perangkat mencoba masuk ke mode power up / down
  • nINT - Jalur keluaran. Ditarik LOW setiap kali tombol tekan ditekan
  • EN - Saluran keluaran, digunakan sebagai pengaktifan daya untuk unit catu daya sekunder. Saat ditahan RENDAH, kedua catu daya sekunder dinonaktifkan

Ada beberapa catatan penting sebelum kita melanjutkan ke desain akhir:

  • PSHOLD harus ditarik ke 3.3V, karena ada kasus ketika MCU memaksa semua I/O berada dalam status HIGH-Z. Dalam hal ini, status PSHOLD dari MCU tidak diketahui dan dapat secara dramatis mempengaruhi proses pemrograman perangkat.
  • STM6601 harus dipesan dengan opsi penyesuaian EN pada tekan lama, alih-alih opsi RESET (saya telah jatuh dalam yang itu).

Unit Catu Daya: +3.3V

Catu daya utama untuk semua sistem di proyek kami. Ketika saluran +3.3V ditahan pada level GND (yaitu Tidak ada tegangan), semua IC kecuali sakelar pintar dinonaktifkan. Rangkaian ini didasarkan pada IC LDO LP-3875-3.3, dengan kemampuan dikendalikan melalui terminal EN dan memberikan arus hingga 1A.

Sumber daya untuk rangkaian ini adalah tegangan baterai, dengan indikator A/D terpasang untuk penginderaan VBAT dalam konfigurasi, mirip dengan rangkaian penginderaan VBUS. Dalam hal ini, perhitungannya sedikit berbeda;

V(Baterai-ke-A/D) = 0,59V(Baterai); A/D(rentang) [000H: C03H]

Unit Catu Daya: -3.3V

Rangkaian suplai tegangan negatif memungkinkan kita untuk menghasilkan bentuk gelombang simetris dengan faktor DC 0V (yaitu nilai rata-rata bentuk gelombang dapat menjadi 0V). Rangkaian ini didasarkan pada LM2662MX IC - DC/DC converter yang beroperasi pada metode "charge pump". Arus keluaran maksimum dari rangkaian adalah 200mA yang cukup untuk persyaratan desain kami - kami dibatasi dengan arus keluaran 80mA dari saluran masing-masing perangkat.

IC melakukan semua pekerjaan yang diperlukan, jadi hanya bagian yang perlu kita pasang adalah dua kapasitor elektrolitik: C33 untuk switching dan C34 untuk bypass saluran -3.3V (pertimbangan pengurangan kebisingan). Frekuensi switching dapat diabaikan dalam desain jika kita menempatkan rangkaian cukup jauh dari bagian pembangkitan bentuk gelombang (Kita akan membahasnya pada langkah Tata Letak PCB).

Unit Mikrokontroler - MCU

Ini adalah manajer dan CEO sistem kami - kontrol, penanganan jaringan, transmisi pesan, dan dukungan UI - semuanya dilakukan oleh MCU.

MCU yang dipilih adalah Atmel ATMEGA32L, dimana L adalah singkatan dari Supported Voltage Operation [2.7V: 5.5V]. Dalam kasus kami, tegangan operasi adalah +3.3V.

Mari kita pertimbangkan blok operasi utama, yang perlu dipahami, bekerja dengan MCU dalam desain kami:

  • Osilator Eksternal - Merupakan komponen opsional, karena kami tertarik pada frekuensi operasi 8MHz
  • Kontrol Periferal, Jaringan SPI - Semua perangkat periferal (tidak termasuk ESP32) berkomunikasi dengan MCU melalui SPI. Ada tiga jalur bersama untuk semua perangkat (SCK, MOSI, MISO) dan setiap sirkuit periferal memiliki jalur CS (Pilihan Chip) khusus. Perangkat SPI yang merupakan bagian dari perangkat:

    1. D/A untuk kontrol amplitudo - Saluran A
    2. D/A untuk kontrol amplitudo - Saluran B
    3. Perangkat AD9834 - Saluran A
    4. Perangkat AD9834 - Saluran B
    5. D/A untuk kontrol tegangan bias - Saluran A
    6. D/A untuk kontrol tegangan bias - Saluran B
    7. Potensiometer Digital untuk pengaturan kecerahan/kontras LCD
  • Dukungan LCD - Karena LCD adalah tampilan karakter generik 20 x 4, kami menggunakan antarmuka 4-bit (Garis D7:D4), pin kontrol (Garis RS, E) dan kontrol kecerahan/kontras (Garis V0 dan Anoda)
  • Dukungan LED RGB - Modul ini opsional, tetapi ada konektor LED RGB katoda umum dengan resistor yang sesuai, terhubung ke MCU.
  • Kontrol Daya - MCU melakukan pemantauan sistem daya dalam mode waktu nyata, dan menangani semua peristiwa daya yang diperlukan:

    1. VBAT_ADC - Pemantauan tegangan baterai dan menentukan statusnya (Saluran ADC0)
    2. PWR_IND - Indikasi koneksi catu daya eksternal (Saluran ADC1)
    3. PS_HOLD - Saluran pengaktif daya utama untuk semua sistem yang ditentukan. Saat ditarik rendah oleh MCU, perangkat dimatikan
    4. Terminal interupsi sakelar pintar - Pemantauan status tombol tekan
  • Manajemen Jaringan WiFi - ESP32: MCU berkomunikasi dengan ESP32 melalui antarmuka UART. Karena 8MHz memungkinkan kita untuk mengimplementasikan baud rate 115200 dengan kesalahan yang relatif kecil, kita dapat menggunakan ESP32 di sirkuit tanpa pra-definisi perubahan baud rate.

Pemrogram ISP AVR

MCU kami diprogram melalui SPI dengan garis reset (/RST) harus ditarik TINGGI untuk operasi yang tepat (jika tidak - MCU akan menemukan dirinya dalam keadaan reset selamanya).

Agar perangkat dapat diprogram dan diisi daya melalui USB, saya telah melampirkan programmer AVR ISP (Produk berukuran kecil, dibeli dari eBay). Untuk mempertahankan dukungan USB lengkap perangkat, ada kebutuhan untuk mengikat terminal USB Tipe-A (D+, D-, VBUS dan GND) dengan perangkat ISP AVR.

Sirkuit Pembangkit Bentuk Gelombang

Inti dari perangkat adalah sirkuit ini. AD9834 adalah perangkat DDS berdaya rendah yang memberi kita semua bentuk gelombang yang ingin kita ambil dari sistem. Sirkuit berisi dua IC AD9834 independen dengan osilator eksternal 50MHz yang terpisah (seperti yang dapat dilihat pada skema). Alasan untuk memisahkan osilator adalah pertimbangan pengurangan kebisingan sirkuit digital, jadi keputusannya adalah untuk menangani jalur 50MHz yang tepat dengan osilator ditempatkan berdekatan dengan AD9834.

Sekarang mari kita lihat beberapa matematika:

Karena perangkat DDS beroperasi pada teknologi Phase Wheel dengan nilai output disimpan dalam register 28-bit, kita dapat menggambarkan pembangkitan bentuk gelombang secara matematis:

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

Dan menurut lembar data AD9834, dengan mempertimbangkan frekuensi maksimum, resolusi frekuensi keluaran dapat diperoleh:

f = k * f(osilator) / f(maksimum) = 0,28 * 50M / 28M = 0,187[Hz]

IC AD9834 menyediakan keluaran arus analog untuk gelombang segitiga/sinus (terminal IOUT) dan keluaran digital untuk gelombang persegi (terminal SIGN_OUT). Penggunaan bit tanda sedikit rumit tetapi kami dapat mengatasinya - Setiap kali DDS melewati ambang batas nilai perbandingan, SIGN_OUT berperilaku sesuai. Sebuah resistor 200Ohm terpasang ke output masing-masing saluran, sehingga tegangan output akan memiliki nilai yang berarti:

I(saluran tunggal) = V(keluaran) / R(pemilihan tegangan); V(keluaran) = R(VS)*I(SS) = 200I(SS) [A]

Sirkuit Kontrol Amplitudo (D/A)

Menurut lembar data AD9834, amplitudonya dapat disesuaikan dengan memberikan arus ke sistem skala penuh DDS, jadi dengan bantuan IC D/A ganda, kita dapat mengontrol amplitudo sinyal keluaran dengan menyesuaikan arus tersebut. Sekali lagi, beberapa matematika:

I(skala penuh) = 18 * (V_REF - V_DAC) / R_SET [A]

Menurut skema dan menempatkan beberapa angka ke persamaan:

I(skala penuh) = 3,86 - 1,17 * V_DAC [A]

Modul D/A yang digunakan dalam perancangan adalah 12-bit MCP4922, ketika arus berada pada kisaran [0mA: 3.86mA] dan fungsi amplitudo linier adalah:

V(pilihan amplitudo) = 1 - [V(D/A) / (2^12 - 1)]

Sirkuit Multiplexing Bentuk Gelombang

Gelombang persegi dan keluaran pembangkitan gelombang sinus/segitiga dipisahkan pada AD9834 sehingga kita harus menggunakan rangkaian multiplexing berkecepatan tinggi untuk kedua keluaran agar memungkinkan pengambilan semua bentuk gelombang yang diinginkan dari satu saluran terpisah. IC multiplekser adalah sakelar analog ADG836L dengan resistansi yang sangat rendah (~ 0,5Ohm).

Tabel pilihan yang digunakan MCU untuk output apa adanya:

Pemilihan Mode [D2:D1] | Saluran Keluaran A | Saluran Keluaran B

00 | Sinus/Segitiga | Sinus/Segitiga 01 | Sinus/Segitiga | Kotak 10 | persegi | Sinus/Segitiga 11 | persegi | Persegi

Sirkuit Kontrol Tegangan Bias (D/A)

Salah satu fitur utama generator bentuk gelombang adalah untuk mengontrol nilai DC-nya. Dalam desain ini dilakukan dengan mengatur tegangan D/A yang diinginkan per setiap saluran, dan tegangan bias ini dijumlahkan dengan output multipleks yang telah kita bahas sedikit sebelumnya.

Tegangan yang diambil dari D/A terletak pada rentang [0V: +3.3V] sehingga ada rangkaian berbasis op-amp yang memetakan rentang D/A ke [-3.3V: +3.3V], yang memungkinkan perangkat menyediakan jangkauan penuh komponen DC yang diinginkan. Kami akan melewatkan matematika analitik yang mengganggu, dan hanya fokus pada hasil akhir:

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

Sekarang, rentang komponen DC terletak di kisaran [-3.3V: +3.3V].

Sirkuit Penjumlahan - Komponen DC dan Output Bentuk Gelombang

Pada titik ini kami memiliki semua yang kami butuhkan untuk keluaran perangkat yang tepat - Tegangan Bias (komponen DC) dalam rentang tegangan penuh, dan keluaran AD9834 yang digandakan. Kami akan mewujudkannya dengan menggunakan penguat penjumlahan - konfigurasi op-amp

Mari kita lewati matematika sekali lagi (Kita telah membahas banyak pendekatan matematika) dan tuliskan hasil akhir dari output penguat penjumlahan:

V(output perangkat) = V(bias positif) - V(bias negatif) - V(output multipleks) [V]

Karenanya:

V_OUT = V_BIAS - V_AD9834 [V]

Konektor keluaran tipe BNC dihubungkan dengan resistor pilihan (R54, R55; R56, R57). Alasannya adalah jika desain mungkin tidak berfungsi, kita masih dapat memilih apakah kita ingin menggunakan penguat penjumlahan.

Catatan Penting: Jaringan resistor dari penguat penjumlahan akhir dapat disesuaikan oleh perancang, untuk mengubah amplitudo maksimum yang dapat diambil dari perangkat. Dalam kasus saya, semua amp berbagi keuntungan yang sama = 1, sehingga amplitudo buffered maksimum adalah 0.7Vpp untuk segitiga/gelombang sinus dan 3.3Vpp untuk gelombang persegi. Pendekatan matematis spesifik dapat ditemukan di antara gambar-gambar langkah yang terlampir.

ESP32 Sebagai Modul Eksternal

MCU berkomunikasi dengan ESP32 melalui antarmuka UART. Karena saya ingin PCB saya sendiri untuk ESP32, ada 4 terminal yang tersedia untuk dihubungkan: VCC, RX, TX, GND. J7 adalah konektor antarmuka antara PCB, dan ESP32 akan dialokasikan sebagai modul eksternal di dalam perangkat.

Antarmuka Pengguna - LCD dan Speaker

LCD yang digunakan adalah tampilan generik 20 x 4 karakter dengan antarmuka 4 bit, Terlihat dari desain terdapat potensiometer digital SPI yang terpasang pada terminal LCD "A" dan "V0" - tujuannya adalah untuk menyesuaikan kecerahan dan kontras modul LCD secara terprogram.

Speaker menyediakan output suara bagi pengguna dengan pembangkitan gelombang persegi sederhana dari MCU. BJT T1 mengontrol arus melalui speaker yang hanya dalam dua keadaan - ON / OFF.

Langkah 5: Desain Perangkat Keras - Modul ESP32

Desain Perangkat Keras - Modul ESP32
Desain Perangkat Keras - Modul ESP32

ESP32 digunakan sebagai modul eksternal untuk PCB utama. Komunikasi perangkat didasarkan pada perintah AT, yang tersedia pada firmware perangkat generik.

Tidak banyak yang perlu dikembangkan pada desain ini, tetapi ada beberapa catatan untuk desain:

  • Untuk penanganan kegagalan menggunakan modul UART ESP32 yang tepat, saya telah memasang tiga resistor pilihan untuk jalur TX dan RX. (0Ohm untuk masing-masing). Untuk konfigurasi standar, modul UART2 digunakan untuk perintah AT (R4, R7 harus disolder)
  • Perangkat memiliki output 4 baris - VCC, GND, TX, RX.
  • Pin IO0 dan EN mengevaluasi operasi perangkat dan harus dirancang seperti yang disediakan dalam skema

Semua fitur PCB yang akan kita bahas pada langkah berikut.

Langkah 6: Tata Letak PCB

Tata Letak PCB
Tata Letak PCB
Tata Letak PCB
Tata Letak PCB
Tata Letak PCB
Tata Letak PCB

Tujuan merancang PCB

  1. Buat sistem tertanam untuk semua sirkuit terintegrasi di papan yang sama
  2. Tingkatkan kinerja perangkat dengan merancang satu PCB utama
  3. Pengurangan biaya - jika Anda ingin mencari harga, desain berbiaya rendah benar-benar berbiaya rendah
  4. Minimalkan ukuran papan elektronik
  5. Mudah untuk memecahkan masalah - Kami dapat menggunakan TP (Titik uji) untuk setiap saluran yang mungkin tidak berfungsi.

Parameter teknik

Kedua PCB: papan utama dan ESP32 memiliki karakteristik yang sama untuk proses pembuatan - biaya rendah dan dapat dioperasikan untuk tujuan kita. Mari kita lihat mereka:

A - Papan Utama

  • Ukuran: 10cm x 5.8cm
  • Jumlah Lapisan: 2
  • Ketebalan PCB: 1.6mm
  • Ruang/lebar jejak minimum: 6/6mil
  • Minimum melalui diameter lubang: 0.3mm
  • Tembaga ke tepi jarak minimum PCB: 20mil
  • Finishing permukaan: HASL (Tipe murah warna perak yang cukup tampan)

B - Papan Utama

  • Ukuran: 3cmx4cm
  • Jumlah Lapisan: 2
  • Ketebalan PCB: 1.6mm
  • Ruang/lebar jejak minimum: 6/6mil
  • Minimum melalui diameter lubang: 0.3mm
  • Tembaga ke tepi jarak minimum PCB: 20mil
  • Finishing permukaan: HASL

Langkah 7: Kandang 3D

Kandang 3D
Kandang 3D

Saya tidak mendesainnya sendiri, karena pada saat itu saya sedang membujuk perangkat ini untuk bekerja, jadi saya tidak mengetahui semua dasar-dasar pencetakan 3D sama sekali. Jadi saya telah menggunakan proyek SCAD dari Thingiverse, dan memasang lubang yang berbeda pada batasnya, sesuai dengan spesifikasi perangkat saya.

  1. Perangkat Pencetakan: Creality Ender-3
  2. Tipe Tempat Tidur: Kaca, ketebalan 5mm
  3. Diameter Filamen: 1.75mm
  4. Jenis filamen: PLA +
  5. Diameter Nosel: 0.4mm
  6. Kecepatan Awal: 20mm/Detik
  7. Kecepatan Rata-rata: 65mm/Detik
  8. Dukungan: T/A
  9. Isi: 25%
  10. Suhu:

    • Tempat tidur: 60 (oC)
    • Nosel: 215 (oC)
  11. Warna Filamen: Hitam
  12. Jumlah Total Bukaan: 5
  13. Jumlah Panel Kandang: 4

    • Kulit ATAS
    • Kulit Bawah
    • Panel depan
    • Panel belakang

Langkah 8: Implementasi Perangkat Lunak - MCU

Implementasi Perangkat Lunak - MCU
Implementasi Perangkat Lunak - MCU
Implementasi Perangkat Lunak - MCU
Implementasi Perangkat Lunak - MCU
Implementasi Perangkat Lunak - MCU
Implementasi Perangkat Lunak - MCU

Tautan GitHub ke Android dan Kode Atmega32

Algoritma Perangkat Lunak

Semua operasi yang dilakukan oleh MCU, dijelaskan dalam diagram alur terlampir. Selain itu, ada kode terlampir untuk proyek tersebut. Mari kita bahas spesifikasi perangkat lunak:

Power-up

Pada tahap ini, MCU melakukan semua urutan inisialisasi beserta penentuan jenis komunikasi yang tersimpan dengan perangkat Android: Komunikasi jaringan WiFi atau WLAN langsung - data ini disimpan di EEPROM. Pengguna dapat mendefinisikan ulang jenis pasangan perangkat Android pada tahap ini.

Pemasangan Perangkat Android Langsung

Jenis pasangan ini didasarkan pada pembuatan jaringan WiFi oleh perangkat FuncGen. Ini akan membuat AP (Access Point) dan server TCP pada IP perangkat lokal dengan SSID tertentu (nama jaringan WiFi) dan nomor port tertentu. Perangkat harus menahan status - buka untuk koneksi.

Saat perangkat Android terhubung ke FuncGen, MCU memasuki mode AKTIF, dan merespons sesuai dengan instruksi pengguna dari perangkat Android.

Penyandingan WLAN

Untuk berkomunikasi di jaringan WiFi lokal, MCU harus memberikan perintah kepada ESP32 untuk membuat AP, berkomunikasi dengan perangkat Android, dan bertukar data jaringan penting:

  • Perangkat Android menerima dari FuncGen alamat MAC-nya, menyimpannya di memori.
  • Perangkat FuncGen menerima bentuk perangkat Android yang dipilih parameter WLAN: SSID, jenis keamanan dan Kata Sandi dan menyimpannya di EEPROM.

Ketika perangkat memang terhubung ke WLAN yang sama, perangkat Android akan mencari FuncGen dengan memindai semua alamat MAC perangkat yang terhubung ke WLAN. Ketika perangkat Android menentukan kecocokan MAC, ia mencoba berkomunikasi.

Koneksi dan Penanganan Status - MCU

Ketika perangkat berkomunikasi satu sama lain, protokol (Lihat langkah pra-akhir) tetap sama, dan diagram alurnya sama.

Pemantauan Status Perangkat

Interupsi berjangka waktu memberikan detail yang diperlukan kepada MCU untuk penanganan status. Setiap siklus interupsi timer, daftar parameter berikut diperbarui:

  • Catu daya eksternal - Nyala/Mati
  • Status tegangan baterai
  • Pembaruan UI untuk setiap penyesuaian
  • Tombol Tekan: Ditekan/Tidak Ditekan

Langkah 9: Implementasi Perangkat Lunak - Aplikasi Android

Implementasi Perangkat Lunak - Aplikasi Android
Implementasi Perangkat Lunak - Aplikasi Android
Implementasi Perangkat Lunak - Aplikasi Android
Implementasi Perangkat Lunak - Aplikasi Android
Implementasi Perangkat Lunak - Aplikasi Android
Implementasi Perangkat Lunak - Aplikasi Android
Implementasi Perangkat Lunak - Aplikasi Android
Implementasi Perangkat Lunak - Aplikasi Android

Aplikasi Android ditulis dalam gaya Java-Android. Saya akan mencoba menjelaskannya dengan cara yang sama seperti langkah sebelumnya - dengan membagi algoritma menjadi blok kode yang terpisah.

Urutan Power Up

Urutan pertama perangkat. Di sini logo aplikasi disajikan bersama dengan mengaktifkan modul GPS dan WiFi perangkat Android (Jangan khawatir, GPS diperlukan untuk pemindaian jaringan WiFi yang tepat saja).

Menu utama

Setelah aplikasi di-boot, empat tombol akan muncul di layar. Tindakan tombol:

  1. KONEKSI LANGSUNG: Inisialisasi koneksi ke AP FuncGen oleh SSID IOT_FUNCGEN. Jika koneksi berhasil, perangkat masuk ke mode UI utama.
  2. KONEKSI WIFI: Perangkat memeriksa apakah ada parameter data yang tersimpan di memori: wifi.txt, mac.txt. Jika tidak ada data yang disimpan, perangkat akan menolak permintaan pengguna dan memberikan pesan pop-up bahwa pemasangan WLAN harus dilakukan terlebih dahulu.
  3. PAIRING: Berkomunikasi dengan FuncGen dengan cara yang sama seperti DIRECT CONNECTION, tetapi alih-alih pertukaran pesan berkelanjutan, ada jabat tangan tunggal. Perangkat Android memeriksa apakah sudah terhubung ke jaringan WiFi, dan meminta pengguna untuk memasukkan kata sandi. Jika koneksi ulang berhasil, perangkat Android menyimpan SSID dan kunci sandi di file wifi.txt. Setelah komunikasi berhasil dengan FuncGen, ia menyimpan alamat MAC yang diterima dalam file mac.txt.
  4. Keluar: Cukup kata:)

Manajer Pemindaian WiFi

Saya ingin aplikasi tersebut beroperasi penuh dan tanpa penyesuaian di luar aplikasi. Jadi, saya telah merancang Pemindai WiFi, yang melakukan semua operasi yang diperlukan untuk terhubung ke jaringan WiFi dengan kunci sandi dan SSID yang diketahui.

Transmisi Data dan Komunikasi TCP

Ini adalah blok kode utama dalam aplikasi. Untuk semua unit UI ada pesan yang ditentukan dalam format tertentu (Langkah pra-akhir), yang memaksa FuncGen untuk memberikan output yang diinginkan untuk saluran. Ada tiga jenis bidang UI dalam aktivitas:

  1. Seek Bars: Di sini kami mendefinisikan rentang nyata parameter output FuncGen

    1. Amplitudo
    2. Offset DC
    3. Kecerahan LCD
    4. Kontras LCD
  2. Sunting Teks: Untuk menjaga nilai bilangan bulat terdefinisi dengan baik dan tepat, input frekuensi dilakukan melalui kotak teks angka saja
  3. Tombol: Pemilihan parameter dari daftar yang tersedia:

    1. Jenis bentuk gelombang

      1. Sinus
      2. Segi tiga
      3. DC
      4. Persegi
      5. MATI
    2. Mendapatkan informasi

      1. Status Baterai (Persentase)
      2. Status AC (Sumber Daya Eksternal)
    3. Opsi Boot (Untuk FuncGen MCU)

      1. Pengaturan Pabrik
      2. Mengulang kembali
      3. Matikan
      4. Langsung - Mulai ulang dengan mode pemasangan langsung
      5. WLAN - Mulai ulang dengan mode penyandingan WLAN
    4. Keluar ke Menu Utama: Cukup Berkata:)

Langkah 10: Pengujian

Direkomendasikan: