Isi kandungan:

Voltan Wifi pelbagai Meter & Meter Semasa: 11 Langkah (dengan Gambar)
Voltan Wifi pelbagai Meter & Meter Semasa: 11 Langkah (dengan Gambar)

Video: Voltan Wifi pelbagai Meter & Meter Semasa: 11 Langkah (dengan Gambar)

Video: Voltan Wifi pelbagai Meter & Meter Semasa: 11 Langkah (dengan Gambar)
Video: CARA PENGGUNAAN MULTIMETER UNTUK UKUR VOLTAN AC & DC 2024, Julai
Anonim
Voltan & Meter Semasa Wifi berbilang saluran
Voltan & Meter Semasa Wifi berbilang saluran

Semasa membuat papan roti, seseorang perlu mengawasi bahagian litar yang berlainan sekaligus.

Untuk mengelakkan rasa sakit kerana melekatkan probe multimeter dari satu tempat ke tempat lain, saya ingin merancang meter voltan dan arus pelbagai saluran.

Papan Ina260 dari Adafruit menyediakan cara yang sangat berkesan dan cekap untuk melakukannya. Ia mengandungi meter voltan dan arus yang sangat tepat dengan jambatan I2C bersepadu (menjimatkan banyak pin ketika menggabungkan 3 daripadanya!).

Yang hilang hanyalah paparan. Oleh itu, keputusan untuk menghubungkan papan ke papan pengembangan ESP32, yang dapat dengan mudah membawa pelayan web untuk menampilkan item yang diukur pada layar PC / mudah alih.

Bekalan

3 x papan iklan Ina260

3 x pin pengepala dengan pin panjang

Kabel pelompat minimum 6

1 x ESP32 Wrover-B (atau papan wifi lain dengan sokongan I2C)

Header pin 2 x 19 (jika ada)

1 x PCB atau Perfboard

Bekalan kuasa 1 x 3.3 V

Langkah 1: Memateri Tiga Papan INA

Selesaikan Tiga Papan INA
Selesaikan Tiga Papan INA

Langkah pertama adalah memasang tiga papan INA260.

Arahan yang sangat baik boleh didapati di laman web Adafruit. Ikut arahan pemasangan Adafruit.

Untuk menumpuknya di atas satu sama lain, gunakan header pin panjang daripada jalur pin yang dihantar!

Langkah 2: Konfigurasikan Tiga Alamat I2C yang berbeza

Konfigurasikan Tiga Alamat I2C berbeza
Konfigurasikan Tiga Alamat I2C berbeza
Konfigurasikan Tiga Alamat I2C berbeza
Konfigurasikan Tiga Alamat I2C berbeza
Konfigurasikan Tiga Alamat I2C berbeza
Konfigurasikan Tiga Alamat I2C berbeza
Konfigurasikan Tiga Alamat I2C berbeza
Konfigurasikan Tiga Alamat I2C berbeza

I2C adalah protokol bersiri untuk antara muka dua wayar untuk menyambungkan peranti berkelajuan rendah dalam jarak pendek. Seseorang boleh menghubungkan sehingga 127 hamba. Dalam satu bas, setiap peranti perlu dikenal pasti dengan alamat I2C yang unik. Alamat I2C peranti sering kali dimasukkan ke dalam cip peranti. Untuk menyambungkan peranti yang sama pada satu bas, pengeluar sering meninggalkan kemungkinan untuk menukar alamat I2C dengan menyatukan konfigurasi pin bersama.

Ini juga berlaku untuk ketiga-tiga papan INA260. Peranti ini mempunyai dua pin alamat, A0 dan A1 yang dapat dihubungkan ke GND, VS, SCL atau SDA untuk menetapkan alamat yang diinginkan. Dalam lembar data cip INA260 dari instrumen texas, seseorang dapat mencari senarai sambungan pin untuk setiap 16 alamat yang mungkin.

Papan adafruit menghadkan ini kepada 4 papan dengan mendedahkan dua pad yang boleh digunakan untuk menarik A0 dan / atau A1 ke VS. Alamat lalai papan INA260 adalah 0x40.

Anda menyelesaikan langkah ini dengan memberikan alamat yang berbeza kepada dua papan lain:

Dengan menyolder pad A0 papan kedua anda menetapkan alamatnya ke: 0x41 (atau 1000001 BIN)

Dengan menyolder pad A1 papan ketiga, anda memberikan alamat ke: 0x44 (atau 1000100 BIN)

Langkah 3: Sambungkan Papan Ina ke ESP32

Sambungkan Papan Ina ke ESP32
Sambungkan Papan Ina ke ESP32

Sekarang kita telah memberikan alamat I2C yang berbeza untuk setiap papan INA, sudah tiba masanya untuk menghubungkannya ke papan ESP32!

Seperti gambar di atas, sambungkan

1) pin VCC ke pin 3.3V

2) pin GND ke pin GND

3) pin SDA ke GPIO pin 21

4) pin SCL ke GPIO pin 22

Saya telah menggunakan reka bentuk PCB untuk membuat sambungan kerana ia adalah sebahagian daripada projek yang lebih besar (bekalan voltan boleh laras WiFi dengan had semasa yang boleh laras - berharap dapat membuat instruksi untuk ini juga).

Anda mungkin menggunakan cara lain untuk menyambung, ini mungkin papan wangi yang anda gunakan atau menggunakan papan roti. Kedua-duanya akan berfungsi dengan baik juga.

Langkah 4: Pasang Papan ESP32 di Arduino IDE

Pasang Papan ESP32 di Arduino IDE
Pasang Papan ESP32 di Arduino IDE

Sekarang kita telah menghubungkan papan antara satu sama lain, sudah tiba masanya untuk memeriksa sambungannya.

Kami akan melakukannya dengan mengumpulkan alamat I2C papan Ina.

Papan ESP32 berfungsi dengan sempurna dengan Arduino IDE.

Oleh itu, marilah kita memasang papan ESP32 di Arduino menggunakan pengurus Lembaga.

Langkah 5: Periksa Sambungan Ina ke ESP32 Menggunakan Pengimbas I2C

Periksa Sambungan Ina ke ESP32 Menggunakan Pengimbas I2C
Periksa Sambungan Ina ke ESP32 Menggunakan Pengimbas I2C

Kami akan menggunakan pengimbas alamat I2C yang sederhana untuk memastikan hubungan antara papan ESP32 dan Ina260.

Kod pengimbas alamat I2C dapat disalin ditampal ke dalam projek Arduino kosong.

Kod tersebut telah diambil dari laman web Arduino cc:

// -------------------------------------- // i2c_scanner // // Versi 1 / / Program ini (atau kod yang sepertinya) // boleh didapati di banyak tempat. // Contohnya di forum Arduino.cc. // Pengarang asal tidak tahu. // Versi 2, Juni 2012, Menggunakan Arduino 1.0.1 // Diadaptasi semudah mungkin oleh pengguna Arduino.cc Krodal // Versi 3, 26 Feb 2013 // V3 oleh louarnold // Versi 4, 3 Mac 2013, Menggunakan Arduino 1.0.3 // oleh pengguna Arduino.cc Krodal. // Perubahan oleh louarnold dikeluarkan. // Alamat pengimbasan diubah dari 0… 127 menjadi 1… 119, // menurut pengimbas i2c oleh Nick Gammon // https://www.gammon.com.au/forum/?id=10896 // Versi 5, Mac 28, 2013 // Sebagai versi 4, tetapi alamatnya sekarang sudah berubah menjadi 127. // Sensor nampaknya menggunakan alamat 120. // Versi 6, 27 November 2015. // Ditambah menunggu komunikasi bersiri Leonardo. // // // Sketsa ini menguji alamat 7-bit standard // Peranti dengan alamat bit yang lebih tinggi mungkin tidak dapat dilihat dengan betul. // #masuk penyediaan tidak sah () {Wire.begin (); Serial.begin (9600); sementara (! bersiri); // Leonardo: tunggu monitor bersiri Serial.println ("\ nI2C Scanner"); } gelung void () {ralat bait, alamat; int nPerisian; Serial.println ("Mengimbas …"); nPerisian = 0; untuk (address = 1; address <127; address ++) {// The i2c_scanner menggunakan nilai pengembalian // the Write.endTransmisstion untuk melihat apakah // suatu peranti mengakui ke alamat tersebut. Wire.beginTransmission (alamat); ralat = Wire.endTransmission (); if (error == 0) {Serial.print ("Peranti I2C dijumpai di alamat 0x"); jika (alamat <16) Serial.print ("0"); Serial.print (alamat, HEX); Serial.println ("!"); nPerisian ++; } lain jika (ralat == 4) {Serial.print ("Kesalahan tidak diketahui di alamat 0x"); jika (alamat <16) Serial.print ("0"); Serial.println (alamat, HEX); }} if (nDevices == 0) Serial.println ("Tidak dijumpai peranti I2C / n"); lain Serial.println ("selesai / n"); kelewatan (5000); // tunggu 5 saat untuk imbasan seterusnya}

Langkah 6: Membuat Folder Webserver HTML

Membuat Folder Webserver HTML
Membuat Folder Webserver HTML

ESP32 memberikan kemungkinan untuk menjalankan pelayan web. Ia juga menyediakan memori RAM yang cukup besar untuk menyimpan beberapa laman web. (Secara automatik memampatkan fail halaman web).

Arduino IDE menyediakan fungsi untuk memuat naik halaman web yang dibuat ke RAM ESP32 secara langsung.

Untuk melakukan ini, anda perlu membuat folder 'data' di bawah folder projek Arduino. Dalam kes saya, ini adalah / Arduino / esp32_Power_supply_v1_implemented / data.

Penting untuk menamakan folder dengan tepat 'data' kerana nama folder yang akan dicari oleh Arduino semasa memuat naik fail halaman web ke ESP.

Langkah 7: Buat Halaman Web Power Monitor

HMTL adalah bahasa yang memungkinkan untuk menampilkan teks ke dalam penyemak imbas web. Fail HTML disimpan di bawah lanjutan htm (l). Pemformatan halaman web biasanya diletakkan ke dalam fail yang terpisah (mis. File css). Fungsi program yang perlu ditawarkan oleh laman web biasanya dimasukkan ke dalam fail lain (misalnya fail js, untuk javascript).

Dalam dokumen HTML saya memasukkan teks, format dan Javascript ke dalam satu fail. Oleh itu, ini bukan contoh yang baik bagaimana membuat laman web tetapi berfungsi untuk tujuannya. Saya menamakan dokumen HTML 'Index.htm'.

Fail kedua dimasukkan ke dalam folder data saya, iaitu. PicoGraph.js. Perpustakaan PicoGraph disediakan oleh Vishnu Shankar B dari RainingComputers dan memungkinkan cara yang sangat mudah, berkesan dan fleksibel untuk menyampaikan grafik ke laman web. Saya sedikit mengubah kod untuk memenuhi tujuan saya dengan lebih baik.

Anda akan melihat bahawa laman web HTML juga merangkumi kod untuk mengawal bekalan voltan pada papan PCB saya. Kod bekalan voltan mengawal tahap voltan 5 pin I / O. Anda boleh menukar kod untuk mengecualikan ini atau anda boleh meninggalkannya jika tiada kesan.

Kod html dilampirkan pada langkah ini sebagai fail txt (kerana arahan tidak membenarkan memuat naik kod htm).

Untuk menggunakan kod HTML anda menyalin dan menempelkannya ke dalam editor teks (saya menggunakan Notepad ++) dan menyimpannya sebagai 'Index.htm' di bawah folder 'Data'. Anda melakukan perkara yang sama untuk fail picograph.txt tetapi namakan semula menjadi picograph.js

Berkenaan dengan fail HTML:

Fungsi SndUpdate digunakan untuk menghantar mesej kembali dan maju dari ESP ke laman web.

Mesej yang dihantar dari ESP melayani fungsi bekalan kuasa dan di luar ruang untuk arahan ini. mesej kepada ESP melayani pengukuran papan Ina260.

var Msg = JSON.parse (xh.responseText); PG1_yrand0 = Msg. PG1_yrand0; PG2_yrand0 = Msg. PG2_yrand0; PG3_yrand0 = Msg. PG3_yrand0; PG4_yrand0 = Msg. PG4_yrand0; PG5_yrand0 = Msg. PG5_yrand0; PG6_yrand0 = Msg. PG6_yrand0;

Kod di atas membaca 6 nombor dari papan ESP32, iaitu. pengukuran voltan, pengukuran arus dari papan pertama, diikuti oleh dua pengukuran dari yang kedua dan seterusnya.

Grafik tertanam dalam apa yang disebut fleksibel-wadah, yang memungkinkan untuk mengubah ukuran laman web yang fleksibel.

.flex-container {display: flex; latar belakang-warna: kadetblue; flex-wrap: bungkus; }.flex-container> div {background-color: # f1f1f1; margin: 10 piksel; pembalut: 20px; saiz fon: 20 piksel; font-family: "Tujuh Segmen"; font-weight: tebal; }

Isi setiap wadah fleksibel dibuat seperti berikut, termasuk grafik tertanam.

(perhatikan bahawa tempat dikeluarkan)

label div untuk = "PG1_scale" Skala: / label nama input = "PG1_scale" value = "10" brbr! - Kanvas untuk graf thr - kanvas style = "tinggi: 100px; sempadan: 2px pepejal # 000000; latar belakang-warna: #fafafa; " / kanvas

! - div untuk legenda / label -

div / div div / div / div

Bahagian penting terakhir dalam fail HTML berfungsi dengan perpustakaan PicoGraph untuk menunjukkan nombor:

var PG1_demograph = createGraph ("PG1_graphDemo", ["Ch1"], "V", "PG1_graphLabels", 20, 11, false, false, 11, "# e52b50"); var PG2_demograph = createGraph ("PG2_graphDemo", ["Ch1"], "mA", "PG2_graphLabels", 20, 11, false, false, 11, "# e52b50"); var PG3_demograph = createGraph ("PG3_graphDemo", ["Ch2"], "V", "PG3_graphLabels", 20, 11, false, false, 11, "# 008000"); var PG4_demograph = createGraph ("PG4_graphDemo", ["Ch2"], "mA", "PG4_graphLabels", 20, 11, false, false, 11, "# 008000"); // var PG5_demograph = createGraph ("PG5_graphDemo", ["Ch3"], "V", "PG5_graphLabels", 20, 11, false, false, 11, "# 0000ff"); var PG6_demograph = createGraph ("PG6_graphDemo", ["Ch3"], "mA", "PG6_graphLabels", 20, 11, false, false, 11, "# 0000ff"); / * Kemas kini nilai setiap saat * / setInterval (updateEverySecond, 1000); fungsi kemas kiniEverySecond () {/ * Dapatkan nilai baru * / SndUpdate ();

/ * Kemas kini grafik * / PG1_demograph.update ([PG1_yrand0], parseInt (byID ("PG1_scale"). Value) + parseInt (byID ("PG1_scale"). Nilai) / 10, "# e52b50"); PG2_demograph.update ([PG2_yrand0], parseInt (byID ("PG2_scale"). Value) + parseInt (byID ("PG2_scale"). Nilai) / 10, "# e52b50"); PG3_demograph.update ([PG3_yrand0], parseInt (byID ("PG3_scale"). Value) + parseInt (byID ("PG3_scale"). Nilai) / 10, "# 008000"); PG4_demograph.update ([PG4_yrand0], parseInt (byID ("PG4_scale"). Value) + parseInt (byID ("PG4_scale"). Nilai) / 10, "# 008000"); // PG5_demograph.update ([PG5_yrand0], parseInt (byID ("PG5_scale"). Value) + // parseInt (byID ("PG5_scale"). Nilai) / 10, "# 0000ff"); PG6_demograph.update ([PG6_yrand0], parseInt (byID ("PG6_scale"). Value) + parseInt (byID ("PG6_scale"). Nilai) / 10, "# 0000ff"); var Watts = Math.round (PG1_yrand0 * PG2_yrand0 * 100) / 100; byID ("PG1_wattLabel"). innerHTML = `WATT: $ {Watts} mW`; var Watts = Math.round (PG3_yrand0 * PG4_yrand0 * 100) / 100; byID ("PG3_wattLabel"). innerHTML = `WATT: $ {Watts} mW`; // var Watts = Math.round (PG5_yrand0 * PG6_yrand0 * 100) / 100; // byID ("PG5_wattLabel"). innerHTML = `WATT: $ {Watts} mW`; byID ("PG1_scale"). value = Math.floor (parseInt (byID ("PG1_scale"). nilai) / 2 + PG1_yrand0); byID ("PG2_scale"). nilai = Math.floor (parseInt (byID ("PG2_scale"). nilai) / 2 + PG2_yrand0); byID ("PG3_scale"). value = Math.floor (parseInt (byID ("PG3_scale"). nilai) / 2 + PG3_yrand0); byID ("PG4_scale"). value = Math.floor (parseInt (byID ("PG4_scale"). nilai) / 2 + PG4_yrand0); // byID ("PG5_scale"). value = Math.floor (parseInt (byID ("PG5_scale"). nilai) / 2 + PG5_yrand0); byID ("PG6_scale"). value = Math.floor (parseInt (byID ("PG6_scale"). nilai) / 2 + PG6_yrand0);

Mengkaji kod anda akan melihat bahawa saya hanya menggunakan 5 graf dari 6 untuk tujuan saya. Tidak mengulas garisan yang betul akan membolehkan graf ke-6.

Bagi mereka yang tidak berpengalaman dengan html, langkah ini boleh dilakukan dengan sukar. Namun ia dapat berfungsi sebagai pengenalan yang baik ke dalam dunia HTML. Saya tahu kerana ini adalah halaman pertama yang pernah saya buat. Jadi jangan takut. Bagi mereka yang berpengalaman di bawah kita, menjadi pemaaf.

Hasil kerja anda di laman web dapat disemak dengan membuka html anda, ia akan dimuat ke dalam penyemak imbas anda dan menunjukkan penampilannya. Anda boleh memeriksa kemungkinan kesalahan dengan menekan kekunci F12 di penyemak imbas anda, tetingkap debug akan muncul. Penjelasan penuh tentang cara melakukan debug berada di luar ruang lingkup arahan ini, tetapi laman web dapat membantu sebagai langkah pertama untuk debug halaman web / javascript.

Langkah seterusnya adalah memuatkan laman web yang dibuat ke dalam ESP32.

Langkah 8: Muatkan Halaman Web ke ESP32

Muatkan Halaman Web ke ESP32
Muatkan Halaman Web ke ESP32

Setelah memperoleh hasil yang memuaskan, inilah masanya untuk memuat naik laman web ke dalam ESP32.

Anda melakukannya dengan menyimpan 'Index.htm' (halaman web anda) dan 'PicoGraph.js' ke dalam folder 'data' di bawah projek Arduino anda.

Langkah seterusnya adalah menyambungkan papan ESP32 ke komputer. Setelah memilih papan dan port COM yang betul, pilih Muat Naik Data Sketsa ESP32 di bawah menu Alat di Arduino IDE.

Anda akan melihat bahawa IDE akan memulakan proses memuat naiknya, yang semestinya membawa kepada pemuatan yang berjaya.

Di sebelah langkah ini adalah mengkonfigurasi mikrokontroler ESP32 sebagai pelayan web.

Langkah 9: Konfigurasikan ESP32 Sebagai Webserver

Di lampirkan anda menemui lakaran Arduino Ino yang akan mengkonfigurasi ESP32 sebagai pelayan laman web.

Anda perlu mengganti SSID dan Kata Laluan yang berkaitan dengan kata laluan penghala anda.

Seperti yang telah disebutkan, lakaran ini juga mengandungi kod untuk mengkonfigurasi halaman web sebagai pengawal untuk bahagian bekalan kuasa PCB (sebenarnya, mengkonfigurasi 5 pin IO sebagai pin PWM dan mengendalikannya melalui aliran mesej dari laman web).

Sketsa ini berdasarkan lakaran Webserver standard yang dikembangkan oleh Hristo Gochkov.

Beberapa penjelasan mengenai kod tersebut.

Fungsi berikut semuanya berkaitan dengan penyediaan pelayan web.

String formatBytes (size_t bytes) String getContentType (String filename) bool wujud (String path) bool handleFileRead (String path) void handleFileUpload () void handleFileDelete () void handleFileCreate () void handleFileList ()

Juga kod pertama dalam fungsi setup () berkaitan dengan penyediaan PWM dan Webserver.

Kod berikut menetapkan fungsi Interrupt yang melayani aliran mesej ke dan dari halaman web:

(anda harus mengenali pengecam dari pembuatan laman web)

server.on ("/ SndUpdate", HTTP_GET, () {

Rentetan Msg = "{"; Msg + = "\" PG1_yrand0 / ":" + (Rentetan) Vina [1]; Msg + = ", \" PG2_yrand0 / ":" + (Rentetan) Iina [1]; Msg + = ", \" PG3_yrand0 / ":" + (Rentetan) Vina [0]; Msg + = ", \" PG4_yrand0 / ":" + (Rentetan) Iina [0]; Msg + = ", \" PG5_yrand0 / ":" + (Rentetan) Vina [2]; Msg + = ", \" PG6_yrand0 / ":" + (Rentetan) Iina [2]; Msg + = "}";

server.send (200, "text / json", Msg);

Ini memulakan pelayan:

pelayan.begin ();

Blok kod seterusnya, menginisialisasi papan INA260:

// Inisialisasi INA260 jika (! Ina260_0x40.begin (0x40)) {Serial.println (F ("Tidak dapat menemui cip INA260 0x40")); // sementara (1); } Serial.println (F ("ditemui cip INA260 0x40")); jika (! ina260_0x41.begin (0x41)) {Serial.println (F ("Tidak dapat menemui cip 0x41 INA260")); // sementara (1); } Serial.println (F ("ditemui cip INA260 0x41")); jika (! ina260_0x44.begin (0x44)) {Serial.println (F ("Tidak dapat menemui cip INA260 0x44")); // sementara (1); } Serial.println (F ("ditemui cip INA260 0x44"));

ina260_0x40.setAveragingCount (INA260_COUNT_256);

ina260_0x40.setVoltageConversionTime (INA260_TIME_1_1_ms); ina260_0x40.setCurrentConversionTime (INA260_TIME_1_1_ms); ina260_0x40.setMode (INA260_MODE_CONTINUOUS); ina260_0x41.setAveragingCount (INA260_COUNT_256); ina260_0x41.setVoltageConversionTime (INA260_TIME_1_1_ms); ina260_0x41.setCurrentConversionTime (INA260_TIME_1_1_ms); ina260_0x41.setMode (INA260_MODE_CONTINUOUS); ina260_0x44.setAveragingCount (INA260_COUNT_256); ina260_0x44.setVoltageConversionTime (INA260_TIME_1_1_ms); ina260_0x44.setCurrentConversionTime (INA260_TIME_1_1_ms); ina260_0x44.setMode (INA260_MODE_CONTINUOUS);

Dalam kod Gelung, pernyataan berikut memastikan pengendalian kod gangguan:

pelayan.handleClient ();

Kod berikut dalam pernyataan gelung berkaitan dengan fungsi bekalan kuasa.

Kod berikut dalam gelung () menarik lagi:

Vina [0] = ina260_0x40.readBusVoltage () / 1000.0f; Iina [0] = ina260_0x40.readCurrent (); Vina [1] = ina260_0x41.readBusVoltage () / 1000.0f; Iina [1] = ina260_0x41.readCurrent (); Vina [2] = ina260_0x44.readBusVoltage () / 1000.0f; Iina [2] = ina260_0x44.readCurrent ();

Penyataan ini mengumpulkan dan menyiapkan pengukuran untuk dipindahkan ke laman web melalui panggilan interupsi Server.on (berlaku setiap 1000ms, ditetapkan dalam skrip html java laman web).

Langkah 10: Anda Selesai

Anda Sudah Selesai!
Anda Sudah Selesai!

Memuat naik lakaran ke papan ESP32, harus menyelesaikan penyiapan dan monitor Daya anda semestinya muktamad!

Anda mungkin menyedari bahawa pengaktifan ESP32 sekarang dilakukan melalui port USB, ini meningkatkan sebahagian besar kelebihan sambungan berasaskan WiFi dengan voltan / meter semasa anda. Oleh itu, saya telah membuat bekalan kuasa terkawal voltan berdasarkan LM317 sederhana untuk ESP32. Saya menjauhkannya dari ruang lingkup arahan ini tetapi jika ada minat boleh menjadi petunjuk selanjutnya.

Pada langkah seterusnya, saya sudah menyediakan rangkaian elektronik untuk bekalan kuasa yang boleh menjadi inspirasi.

Langkah 11: Menghidupkan ESP32

Menguatkan ESP32
Menguatkan ESP32

Dengan ini menjadi inspirasi untuk membina sumber kuasa yang tersendiri untuk ESP32 anda, jika anda tidak mempunyai satu sumber.

Litar kuasa berfungsi dengan bekalan kuasa komputer riba 19V. Ini meminta voltan dua fasa turun untuk memastikan pelesapan Kuasa LM317 terkawal. (Walaupun dengan pendingin!). Juga jangan lupa untuk memasukkan kapasitor 100uF di hadapan garis VCC_ESP kerana mikrokontroler tersebut mempunyai perubahan arus yang besar ketika memulakan sambungan WiFi.

Perhatikan untuk tidak menghidupkan ESP32 dengan lebih daripada satu sumber kuasa pada satu masa!

Lebih jauh penafian liabiliti biasa, tetapi yang paling penting

Berseronok!

Semua fail boleh didapati di GitHub saya:

Disyorkan: