Mục lục:
- Quân nhu
- Bước 1: Hàn ba bảng INA
- Bước 2: Định cấu hình ba địa chỉ I2C khác nhau
- Bước 3: Kết nối Bo mạch Ina với ESP32
- Bước 4: Cài đặt Bảng ESP32 trong Arduino IDE
- Bước 5: Kiểm tra kết nối Ina với ESP32 bằng máy quét I2C
- Bước 6: Tạo Thư mục Máy chủ Trang web HTML
- Bước 7: Tạo trang web màn hình nguồn
- Bước 8: Tải trang web vào ESP32
- Bước 9: Định cấu hình ESP32 As Webserver
- Bước 10: Bạn đã hoàn tất
- Bước 11: Cấp nguồn cho ESP32
Video: Đồng hồ đo điện áp và dòng điện Wifi đa kênh: 11 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Khi breadboarding, người ta thường cần theo dõi các phần khác nhau của mạch cùng một lúc.
Để tránh cảm giác đau đớn khi phải dán các đầu dò vạn năng từ nơi này sang nơi khác, tôi muốn thiết kế một đồng hồ đo dòng điện và điện áp đa kênh.
Bo mạch Ina260 từ Adafruit cung cấp một cách rất hiệu quả và hiệu quả để làm điều đó. Nó chứa một đồng hồ đo điện áp và dòng điện rất chính xác với một cầu I2C tích hợp (tiết kiệm rất nhiều chân khi kết hợp 3 trong số chúng!).
Điều duy nhất còn thiếu là một màn hình. Do đó, quyết định kết nối các bảng với một bảng phát triển ESP32, bảng này có thể dễ dàng mang theo một máy chủ web để trình bày các mục được đo trên màn hình PC / điện thoại di động.
Quân nhu
3 x bảng adafruit Ina260
3 x chân tiêu đề với chân dài
Tối thiểu 6 dây jumper
1 x ESP32 Wrover-B (hoặc bất kỳ bo mạch Wifi nào khác có hỗ trợ I2C)
Đầu cắm pin 2 x 19 pin (nếu có)
1 x PCB hoặc Perfboard
Nguồn điện 1 x 3,3 V
Bước 1: Hàn ba bảng INA
Bước đầu tiên là lắp ráp ba bảng INA260.
Bạn có thể tìm thấy một hướng dẫn rất tốt trên trang web Adafruit. Làm theo hướng dẫn lắp ráp Adafruit.
Để có thể xếp chúng chồng lên nhau, hãy sử dụng các đầu ghim dài thay vì các dải ghim được phân phối!
Bước 2: Định cấu hình ba địa chỉ I2C khác nhau
I2C là một giao thức nối tiếp cho giao diện hai dây để kết nối các thiết bị tốc độ thấp trong khoảng cách ngắn. Một có thể kết nối tới 127 nô lệ. Trên một bus, mọi thiết bị cần được xác định bằng một địa chỉ I2C duy nhất. Địa chỉ I2C của một thiết bị thường được gắn vào chip của thiết bị. Để kết nối các thiết bị giống nhau trên một bus, nhà sản xuất thường để lại khả năng thay đổi địa chỉ I2C bằng cách hàn cấu hình các chân với nhau.
Đây cũng là trường hợp của ba bo mạch INA260. Thiết bị có hai chân địa chỉ là A0 và A1 có thể kết nối với GND, VS, SCL hoặc SDA để thiết lập địa chỉ mong muốn. Trong biểu dữ liệu của chip INA260 từ các công cụ texas, người ta có thể tìm thấy danh sách các kết nối chân cho từng địa chỉ trong số 16 địa chỉ có thể có.
Bảng adafruit giới hạn điều này ở 4 bảng bằng cách để lộ hai miếng đệm có thể được sử dụng để kéo A0 và / hoặc A1 đến VS. Địa chỉ mặc định của bảng INA260 là 0x40.
Bạn hoàn thành bước này bằng cách gán các địa chỉ khác nhau cho hai bảng khác:
Bằng cách hàn đệm A0 của bảng thứ hai, bạn đặt địa chỉ của anh ấy thành: 0x41 (hoặc 1000001 BIN)
Bằng cách hàn miếng đệm A1 của bảng thứ ba, bạn gán địa chỉ cho: 0x44 (hoặc 1000100 BIN)
Bước 3: Kết nối Bo mạch Ina với ESP32
Bây giờ chúng ta đã gán các địa chỉ I2C khác nhau cho mỗi bảng INA, đã đến lúc kết nối chúng với bảng ESP32!
Theo hình trên, kết nối
1) chân VCC đến chân 3,3V
2) chân GND vào chân GND
3) chân SDA đến chân GPIO 21
4) chân SCL đến chân GPIO 22
Tôi đã sử dụng thiết kế PCB để tạo các kết nối vì nó là một phần của dự án lớn hơn (nguồn cung cấp điện áp có thể điều chỉnh WiFi với giới hạn dòng điện có thể điều chỉnh - hy vọng cũng có thể tạo ra một hướng dẫn cho dự án này).
Bạn có thể sử dụng bất kỳ cách nào khác để kết nối, đây có thể là bảng điều khiển mà bạn hàn lên hoặc sử dụng bảng mạch. Cả hai đều sẽ hoạt động tốt.
Bước 4: Cài đặt Bảng ESP32 trong Arduino IDE
Bây giờ chúng ta đã kết nối các bo mạch với nhau, đã đến lúc kiểm tra kết nối.
Chúng tôi sẽ làm điều đó bằng cách thu thập địa chỉ I2C của bảng Ina.
Bo mạch ESP32 hoạt động hoàn hảo với Arduino IDE.
Vì vậy, hãy để chúng tôi cài đặt bảng ESP32 trong Arduino bằng cách sử dụng trình quản lý Bảng.
Bước 5: Kiểm tra kết nối Ina với ESP32 bằng máy quét I2C
Chúng tôi sẽ sử dụng một máy quét địa chỉ I2C đơn giản để đảm bảo kết nối giữa các bo mạch ESP32 và Ina260.
Mã máy quét địa chỉ I2C có thể được sao chép và dán vào một dự án Arduino trống.
Mã đã được lấy từ trang web Arduino cc:
// -------------------------------------- // i2c_scanner // // Phiên bản 1 / / Chương trình này (hoặc mã giống như nó) // có thể được tìm thấy ở nhiều nơi. // Ví dụ trên diễn đàn Arduino.cc. // Không biết tác giả gốc. // Phiên bản 2, Juni 2012, Sử dụng Arduino 1.0.1 // Người dùng Arduino.cc đã điều chỉnh để trở nên đơn giản nhất có thể bởi người dùng Arduino.cc Krodal // Phiên bản 3, ngày 26 tháng 2 năm 2013 // V3 của louarnold // Phiên bản 4, ngày 3 tháng 3 năm 2013, Sử dụng Arduino 1.0.3 // bởi người dùng Arduino.cc Krodal. // Các thay đổi của louarnold đã bị xóa. // Các địa chỉ quét đã thay đổi từ 0… 127 thành 1… 119, // theo trình quét i2c của Nick Gammon // https://www.gammon.com.au/forum/?id=10896 // Phiên bản 5, tháng 3 28, 2013 // Là phiên bản 4, nhưng địa chỉ quét bây giờ đến 127. // Một cảm biến dường như sử dụng địa chỉ 120. // Phiên bản 6, ngày 27 tháng 11 năm 2015. // Đã thêm chờ giao tiếp nối tiếp Leonardo. // // // Bản phác thảo này kiểm tra các địa chỉ 7-bit tiêu chuẩn // Các thiết bị có địa chỉ bit cao hơn có thể không được nhìn thấy đúng cách. // #include void setup () {Wire.begin (); Serial.begin (9600); while (! nối tiếp); // Leonardo: đợi màn hình nối tiếp Serial.println ("\ nI2C Scanner"); } void loop () {lỗi byte, địa chỉ; int nDevices; Serial.println ("Đang quét…"); nDevices = 0; for (address = 1; address <127; address ++) {// i2c_scanner sử dụng giá trị trả về của // Write.endTransmisstion để xem liệu // một thiết bị có xác nhận địa chỉ hay không. Wire.beginTransmission (địa chỉ); error = Wire.endTransmission (); if (error == 0) {Serial.print ("Tìm thấy thiết bị I2C tại địa chỉ 0x"); if (địa chỉ <16) Serial.print ("0"); Serial.print (địa chỉ, HEX); Serial.println ("!"); nDevices ++; } else if (error == 4) {Serial.print ("Lỗi không xác định tại địa chỉ 0x"); if (địa chỉ <16) Serial.print ("0"); Serial.println (địa chỉ, HEX); }} if (nDevices == 0) Serial.println ("Không tìm thấy thiết bị I2C / n"); else Serial.println ("xong / n"); chậm trễ (5000); // đợi 5 giây cho lần quét tiếp theo}
Bước 6: Tạo Thư mục Máy chủ Trang web HTML
ESP32 cung cấp khả năng chạy một máy chủ web. Nó cũng cung cấp một bộ nhớ RAM khá lớn để chứa một số trang web. (Nó tự động nén các tệp trang web).
Arduino IDE cung cấp chức năng tải trực tiếp các trang web đã tạo lên RAM của ESP32.
Để làm điều này, bạn cần tạo một thư mục 'dữ liệu' bên dưới thư mục của dự án Arduino. Trong trường hợp của tôi, đây là dữ liệu / Arduino / esp32_Power_supply_v1_implemented \.
Điều quan trọng là đặt tên thư mục chính xác là 'dữ liệu' vì nó là tên thư mục mà Arduino sẽ tìm kiếm khi tải các tệp trang web lên ESP.
Bước 7: Tạo trang web màn hình nguồn
HMTL là ngôn ngữ cho phép trình bày văn bản thành trình duyệt web. Tệp HTML được lưu dưới phần mở rộng htm (l). Định dạng của một trang web thường được đặt trong một tệp riêng biệt (ví dụ: tệp css). Chức năng chương trình mà một trang web cần cung cấp thường được đặt vào một tệp khác (ví dụ: tệp js, cho javascript).
Trong tài liệu HTML của mình, tôi đã đưa văn bản, định dạng và Javascript vào một tệp. Do đó, nó không phải là một ví dụ điển hình về cách tạo một trang web nhưng nó phục vụ các mục đích. Tôi đặt tên tài liệu HTML là 'Index.htm'.
Một tệp thứ hai được bao gồm trong thư mục dữ liệu của tôi, tức là. PicoGraph.js. Thư viện PicoGraph được cung cấp bởi Vishnu Shankar B từ RainingComputers và cho phép một cách rất đơn giản, nhưng hiệu quả và linh hoạt để trình bày biểu đồ trên trang web. Tôi đã sửa đổi một chút mã để phục vụ tốt hơn mục đích của mình.
Bạn sẽ nhận thấy rằng trang web HTML cũng bao gồm mã để kiểm soát nguồn cung cấp điện áp trên bảng mạch PCB của tôi. Mã nguồn cung cấp điện áp điều khiển mức điện áp của 5 chân I / O. Bạn có thể thay đổi mã để loại trừ điều này hoặc bạn có thể để nguyên nếu không có tác động.
Mã html được đính kèm trong bước này dưới dạng tệp txt (vì các bảng hướng dẫn không cho phép tải lên mã htm).
Để sử dụng mã HTML, bạn sao chép và dán nó vào trình soạn thảo văn bản (tôi sử dụng Notepad ++) và lưu nó dưới dạng 'Index.htm' trong thư mục 'Dữ liệu'. Bạn làm tương tự đối với tệp picograph.txt nhưng đổi tên thành picograph.js
Đối với tệp HTML:
Một chức năng SndUpdate được sử dụng để gửi tin nhắn qua lại từ ESP đến trang web.
Các tin nhắn được gửi từ ESP đang phục vụ chức năng cung cấp điện và nằm ngoài phạm vi của lệnh này. các thông báo tới ESP đang phục vụ các phép đo trên bo mạch 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;
Đoạn mã trên đọc 6 số từ bảng ESP32, tức là. phép đo điện áp, phép đo dòng điện từ bảng đầu tiên, tiếp theo là hai phép đo từ bảng thứ hai và v.v.
Các đồ thị được nhúng trong cái gọi là vùng chứa linh hoạt, cho phép thay đổi kích thước trang web một cách linh hoạt.
.flex-container {display: flex; background-color: cadetblue; flex-wrap: bọc; }.flex-container> div {background-color: # f1f1f1; lề: 10px; đệm: 20px; font-size: 20px; font-family: "Seven Segment"; font-weight: bold; }
Nội dung của mỗi vùng chứa linh hoạt được tạo thành như sau, bao gồm các đồ thị được nhúng.
(lưu ý rằng nơi loại bỏ)
div label for = "PG1_scale" Scale: / label input name = "PG1_scale" value = "10" brbr! - Canvas for thr graph - canvas style = "height: 100px; border: 2px solid # 000000; background-color: #fafafa; " /Tranh sơn dầu
! - div cho huyền thoại / nhãn -
div / div div / div / div
Phần quan trọng cuối cùng trong tệp HTML hoạt động với thư viện PicoGraph để trình bày các con số:
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"); / * Cập nhật giá trị mỗi giây * / setInterval (updateEverySecond, 1000); function updateEverySecond () {/ * Nhận các giá trị mới * / SndUpdate ();
/ * Cập nhật biểu đồ * / PG1_demograph.update ([PG1_yrand0], parseInt (byID ("PG1_scale"). Value) + parseInt (byID ("PG1_scale"). Value) / 10, "# e52b50"); PG2_demograph.update ([PG2_yrand0], parseInt (byID ("PG2_scale"). Value) + parseInt (byID ("PG2_scale"). Value) / 10, "# e52b50"); PG3_demograph.update ([PG3_yrand0], parseInt (byID ("PG3_scale"). Value) + parseInt (byID ("PG3_scale"). Value) / 10, "# 008000"); PG4_demograph.update ([PG4_yrand0], parseInt (byID ("PG4_scale"). Value) + parseInt (byID ("PG4_scale"). Value) / 10, "# 008000"); // PG5_demograph.update ([PG5_yrand0], parseInt (byID ("PG5_scale"). Value) + // parseInt (byID ("PG5_scale"). Value) / 10, "# 0000ff"); PG6_demograph.update ([PG6_yrand0], parseInt (byID ("PG6_scale"). Value) + parseInt (byID ("PG6_scale"). Value) / 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"). value) / 2 + PG1_yrand0); byID ("PG2_scale"). value = Math.floor (parseInt (byID ("PG2_scale"). value) / 2 + PG2_yrand0); byID ("PG3_scale"). value = Math.floor (parseInt (byID ("PG3_scale"). value) / 2 + PG3_yrand0); byID ("PG4_scale"). value = Math.floor (parseInt (byID ("PG4_scale"). value) / 2 + PG4_yrand0); // byID ("PG5_scale"). value = Math.floor (parseInt (byID ("PG5_scale"). value) / 2 + PG5_yrand0); byID ("PG6_scale"). value = Math.floor (parseInt (byID ("PG6_scale"). value) / 2 + PG6_yrand0);
Nghiên cứu mã, bạn sẽ nhận thấy rằng tôi chỉ sử dụng 5 biểu đồ trong số 6 cho mục đích của tôi. Bỏ nhận xét các dòng bên phải sẽ kích hoạt biểu đồ thứ 6.
Đối với những người chưa có kinh nghiệm với html, bước này có thể khó thực hiện. Tuy nhiên, nó có thể đóng vai trò như một lời giới thiệu tốt đẹp về thế giới HTML. Tôi biết vì đây là trang đầu tiên tôi từng tạo. Vì vậy, đừng sợ hãi. Đối với những người từng trải qua chúng ta, hãy tha thứ.
Kết quả của công việc của bạn trên trang web có thể được xem xét bằng cách mở html của bạn, nó sẽ tải vào trình duyệt của bạn và hiển thị hình thức của nó. Bạn có thể kiểm tra các lỗi có thể xảy ra bằng cách nhấn phím F12 trong trình duyệt, cửa sổ gỡ lỗi sẽ hiển thị. Giải thích đầy đủ về cách gỡ lỗi nằm ngoài phạm vi của hướng dẫn này, nhưng trang web có thể hữu ích như là bước đầu tiên để gỡ lỗi trang web / javascript.
Bước tiếp theo là tải các trang web đã tạo vào ESP32.
Bước 8: Tải trang web vào ESP32
Sau khi có được kết quả ưng ý, đã đến lúc tải trang web lên ESP32.
Bạn thực hiện việc này bằng cách lưu 'Index.htm' (trang web của bạn) và 'PicoGraph.js' vào thư mục 'dữ liệu' trong dự án Arduino của bạn.
Bước tiếp theo là kết nối bo mạch ESP32 vào máy tính. Sau khi đã chọn đúng bo mạch và cổng COM, hãy chọn Tải lên dữ liệu phác thảo ESP32 trong menu Công cụ trong Arduino IDE.
Bạn sẽ thấy rằng IDE sẽ bắt đầu quá trình tải lên, điều này sẽ dẫn đến tải thành công.
Tiếp theo bước này là cấu hình vi điều khiển ESP32 làm máy chủ web.
Bước 9: Định cấu hình ESP32 As Webserver
Đính kèm, bạn tìm thấy bản phác thảo Arduino Ino sẽ cấu hình ESP32 làm máy chủ web.
Bạn sẽ cần thay thế SSID và Mật khẩu liên quan bằng mật khẩu bộ định tuyến của mình.
Như đã đề cập, bản phác thảo này cũng chứa mã để định cấu hình trang web làm bộ điều khiển cho phía cấp nguồn của PCB (trên thực tế, cấu hình 5 chân IO làm chân PWM và điều khiển chúng thông qua luồng thông báo từ trang web).
Bản phác thảo dựa trên bản phác thảo Webserver tiêu chuẩn do Hristo Gochkov phát triển.
Một số giải thích về mã.
Tất cả các chức năng sau đây đều liên quan đến việc thiết lập máy chủ web.
String formatBytes (size_t byte) String getContentType (String filename) bool tồn tại (String path) bool handleFileRead (String path) void handleFileUpload () void handleFileDelete () void handleFileCreate () void handleFileList ()
Ngoài ra, mã đầu tiên trong hàm setup () liên quan đến thiết lập PWM và Webserver.
Đoạn mã sau đặt chức năng Ngắt cung cấp các luồng thông báo đến và đi từ trang web:
(bạn nên nhận ra các số nhận dạng từ việc tạo trang web)
server.on ("/ SndUpdate", HTTP_GET, () {
Chuỗi Msg = "{"; Msg + = "\" PG1_yrand0 / ":" + (Chuỗi) Vina [1]; Msg + = ", \" PG2_yrand0 / ":" + (Chuỗi) Iina [1]; Msg + = ", \" PG3_yrand0 / ":" + (Chuỗi) Vina [0]; Msg + = ", \" PG4_yrand0 / ":" + (Chuỗi) Iina [0]; Msg + = ", \" PG5_yrand0 / ":" + (Chuỗi) Vina [2]; Msg + = ", \" PG6_yrand0 / ":" + (Chuỗi) Iina [2]; Msg + = "}";
server.send (200, "text / json", Msg);
Thao tác này khởi động máy chủ:
server.begin ();
Khối mã tiếp theo, khởi tạo bảng INA260:
// Khởi tạo INA260 if (! Ina260_0x40.begin (0x40)) {Serial.println (F ("Không tìm thấy chip INA260 0x40")); // trong khi (1); } Serial.println (F ("Tìm thấy chip INA260 0x40")); if (! ina260_0x41.begin (0x41)) {Serial.println (F ("Không thể tìm thấy chip 0x41 INA260")); // trong khi (1); } Serial.println (F ("Tìm thấy chip INA260 0x41")); if (! ina260_0x44.begin (0x44)) {Serial.println (F ("Không tìm thấy chip INA260 0x44")); // trong khi (1); } Serial.println (F ("Tìm thấy chip 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);
Trong mã Vòng lặp, câu lệnh sau đảm bảo việc xử lý mã ngắt:
server.handleClient ();
Đoạn mã sau trong câu lệnh vòng lặp có liên quan đến chức năng Nguồn điện.
Đoạn mã sau trong vòng lặp () lại rất thú vị:
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 ();
Các câu lệnh này thu thập và thiết lập các phép đo sẵn sàng để truyền đến trang web thông qua lệnh gọi ngắt Server.on (xảy ra cứ sau 1000ms, được đặt trong tập lệnh html java của trang web).
Bước 10: Bạn đã hoàn tất
Tải lên bản phác thảo vào bảng ESP32, sẽ hoàn thiện thiết lập và màn hình Nguồn của bạn sẽ là bản cuối cùng!
Bạn có thể nhận thấy rằng việc cấp nguồn cho ESP32 hiện được thực hiện thông qua cổng USB, điều này nâng cao một phần lớn các ưu điểm của kết nối dựa trên WiFi với đồng hồ đo điện áp / dòng điện của bạn. Do đó, tôi đã tạo một bộ nguồn được điều chỉnh điện áp dựa trên LM317 đơn giản cho ESP32. Tôi đã giữ nó ngoài phạm vi của hướng dẫn này nhưng nếu có hứng thú có thể trở thành một hướng dẫn tiếp theo.
Trong bước tiếp theo, tôi đã cung cấp mạch điện tử cho nguồn điện có thể đóng vai trò là nguồn cảm hứng.
Bước 11: Cấp nguồn cho ESP32
Đây là nguồn cảm hứng để xây dựng nguồn cấp nguồn độc lập cho ESP32 của bạn, nếu bạn không có nguồn này.
Mạch nguồn hoạt động của nguồn điện máy tính xách tay 19V. Điều này yêu cầu một bước điện áp hai giai đoạn xuống để giữ cho sự tiêu tán Công suất của LM317 được kiểm soát. (Ngay cả với tản nhiệt!). Cũng đừng quên đặt một tụ điện 100uF ở phía trước đường VCC_ESP vì những bộ vi điều khiển đó chắc chắn có dòng điện lớn khi khởi động kết nối WiFi.
Lưu ý không cấp nguồn cho ESP32 với nhiều nguồn điện cùng một lúc!
Hơn nữa các tuyên bố từ chối trách nhiệm pháp lý thông thường, nhưng hầu hết tất cả
Chúc vui vẻ!
Tất cả các tệp có thể được tìm thấy trên GitHub của tôi:
Đề xuất:
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Bộ khuếch đại kênh 5.1 kênh DIY 300 Watt: 12 bước (có hình ảnh)
Bộ khuếch đại 5.1 kênh DIY 300 Watt: Này! Mọi người Tên tôi là Steve. Hôm nay tôi sẽ hướng dẫn các bạn Cách tạo Bộ khuếch đại kênh 5.1. Nhấp vào đây để xem video Hãy bắt đầu
Điều khiển từ xa không dây sử dụng mô-đun NRF24L01 2.4Ghz với Arduino - Nrf24l01 Bộ thu phát 4 kênh / 6 kênh cho Quadcopter - Máy bay trực thăng Rc - Rc Plane sử dụng Arduino: 5 bước (có hình ảnh)
Điều khiển từ xa không dây sử dụng mô-đun NRF24L01 2.4Ghz với Arduino | Nrf24l01 Bộ thu phát 4 kênh / 6 kênh cho Quadcopter | Máy bay trực thăng Rc | Rc Plane Sử dụng Arduino: Để vận hành một chiếc xe Rc | Quadcopter | Máy bay không người lái | Máy bay RC | Thuyền RC, chúng tôi luôn cần bộ thu và bộ phát, giả sử đối với RC QUADCOPTOR, chúng tôi cần bộ phát và bộ thu 6 kênh và loại TX và RX đó quá đắt, vì vậy chúng tôi sẽ làm một bộ trên
Đồng hồ kỹ thuật số Arduino được đồng bộ hóa bởi dòng điện 60Hz: 8 bước (có hình ảnh)
Đồng hồ kỹ thuật số Arduino được đồng bộ hóa bởi dòng điện 60Hz: Đồng hồ kỹ thuật số dựa trên Arduino này được đồng bộ hóa bởi dòng điện 60Hz. Nó có một màn hình hiển thị 4 chữ số 7 phân đoạn anode chung đơn giản và rẻ tiền, hiển thị giờ và phút. Nó sử dụng một bộ dò chéo để phát hiện khi sóng hình sin 60Hz đến c
Thuyết phục bản thân chỉ sử dụng bộ biến tần dòng 12V sang dòng AC cho dây đèn LED thay vì tua lại chúng cho dòng 12V.: 3 bước
Thuyết phục bản thân chỉ sử dụng Biến tần dòng 12V sang AC cho Dây đèn LED Thay vì Tua lại chúng cho 12V.: Kế hoạch của tôi rất đơn giản. Tôi muốn cắt dây đèn LED chạy trên tường thành nhiều mảnh sau đó quấn lại để chạy hết 12 volt. Giải pháp thay thế là sử dụng bộ biến tần, nhưng tất cả chúng ta đều biết chúng kém hiệu quả kinh khủng, phải không? Bên phải? Hoặc là họ?