ESP32 Data Logger는 RS-485, TTL 프로토콜을 사용하여 진동 와이어 센서 및 기타 센서를 지원하는 비용 효율적인 데이터 수집 시스템입니다. 데이터 로거를 최종 사용자로 설정하려면 컴퓨터에 연결하고 브라우저를 사용하여 웹 사이트에서 로거를 구성 할 수 있습니다. 고급 구성의 경우 플랫폼 또는 Arduino IDE를 사용하여 고유 한 코드를 프로그래밍하고 PC에서 로거를 플래시 할 수 있습니다.
이 안내서를 사용하십시오 : https://community.platformio.org/t/redirect-esp32-log-messages-to-sd-card/33734, esp32-hal-log.h 업데이트하여 TAG 정의하십시오
#ifdef USE_ESP_IDF_LOG
#ifndef TAG
#define TAG "myAPP"
#endif
포함 할 platformio.ini 업데이트하십시오.
build_flags= -DUSE_ESP_IDF_LOG -DCORE_DEBUG_LEVEL=5
다음 라이브러리 및 정의를 포함하십시오.
#include "esp_log.h"
#include "esp32-hal-log.h"
#define LOG_LEVEL ESP_LOG_WARN
#define MY_ESP_LOG_LEVEL ESP_LOG_INFO
Mac OS 드라이버 문제 : https://arduino.stackexchange.com/questions/91111/how-to-install-ftdi-serial-drivers-o-mac
Async Webserver를 활성화하십시오
#define ELEGANTOTA_USE_ASYNC_WEBSERVER 1
USB를 통해 ESP32 개발 키트에 전원을 공급하려면 18650 배터리가 사용됩니다. 그러나 생산 목적으로 맞춤 PCB가 설계되고 3v3 또는 Vin 핀을 통해 모듈을 전원을 공급하여 전력 손실을 최소화해야합니다. 태양 전력을 활용하기 위해 18650 방패가 사용되어 ESP32에 전원 공급 장치를 촉진합니다. 이 aliexpress 링크는 방패에 대한 세부 정보를 제공합니다. 입력 전압 범위는 5V ~ 8V로 지정되지만 예비 테스트는 5V 태양 전지판이 기능적임을 시사합니다. 추가 검증이 수행됩니다. SD는 벅 컨버터가있는 Vin Pin의 전원으로 만 작동하는 것 같습니다.
다음 표는 다양한 운영 모드에서 ESP32의 현재 소비를 설명합니다.
| 방법 | 현재 소비 |
|---|---|
| Wi -Fi TX, DSSS 1 Mbps, Pout = +19.5 dbm | 240 MA |
| Wi -Fi TX, OFDM 54 Mbps, Pout = +16 dbm | 190 MA |
| Wi -Fi TX, OFDM MCS7, Pout = +14 DBM | 180 MA |
| Wi -Fi RX (듣기) | (95 ~ 100) ma |
| BT/BLE TX, Pout = 0 DBM | 130 MA |
| BT/BLE RX (듣기) | (95 ~ 100) ma |
현재 설정에는 2 개의 0.3W 5V 태양 전지판이 포함되어 있으며, 실드에 최대 120mA를 공급할 수 있습니다.
Logger는 time.h 라이브러리에서 configTime 사용하여 전원을 켜면 NTP 서버와 동기화해야합니다. getLocalTime(&timeinfo) 사용하여 현재 시간을 얻으십시오. 이 기능은 정확한 시간을 얻기 위해 로깅 함수 내에서 호출되어야합니다. 그러나 전력이 손실되면 시간이 유지되지 않습니다. PowerLoss 이후 WiFi없이 시간을 제공하려면 RTC 모듈이 필요합니다. 참고 : 현재 구현 (RTCLIB)이 NTP 서버를 주기적으로 투표할지 확실하지 않습니다. 그러나 Espressif의 외부 구현은 주기적으로 여론 조사됩니다. https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/system_time.html
DS1307과 OLED 화면은 모두 I2C 버스, 동일한 버스이지만 다른 주소에 연결되어 있습니다. 라이브러리는 일반 주소를 위해 I2C 버스를 스캔 할 수 있도록 설계되었습니다. 이 안내서를 사용하십시오 : https://esp32io.com/tutorials/esp32-ds1307-rtc-module 작은 RTC 모듈은 3V3에서 작동하지 않고 대신 VIN을 제공해야합니다.
파티션 테이블에 대한 espressif 문서 : https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html .platformio/packages/framework-arduinoespressif32/tools/partitions 를 사용하는 경우 기본 파티션은이 디렉토리에서 찾을 수 있습니다..
https://components101.com/modules/micro-sd-card-module-finout-finout-features-datasheet-alternatives https://www.electronicwings.com/esp32/microsd-card-interfacing-with-esp32
확실하지 않으면 날짜별로 파일을 저장하면 충분할 수 있습니다.
WiFi.onEvent() 함수는 콜백 함수 인 WiFiEvent 등록하는 데 사용되며 Wi -Fi 이벤트가 발생하면 호출됩니다. Wifievent 함수에서 SYSTEM_EVENT_STA_DISCONNECTED 이벤트를 확인하여 Wi -Fi 연결이 끊김을 나타냅니다. 이 이벤트가 발생하면 reconnectToWiFi() 호출하여 다시 연결을 시도합니다. 이런 식으로 재 연결 로직은 Wifievent 콜백에 캡슐화되어 루프 () 함수를 재 연결 관련 코드에서 무료로 유지합니다.
TODO. 이 기능은 실제 푸시 버튼 스위치를 클릭하면 트리거되며 ESP32는 WiFi 액세스 포인트로 시작하여 사용자가 WiFi를 통해 연결할 수 있습니다. 장치 구성 웹 사이트는 Wi -Fi를 통해 제공됩니다. https://dronebotworkshop.com/wifimanager/이 문제를 읽어 ESP32, 링크에서 Wi -Fi 설정을 지우는 방법을 배우십시오. 그렇지 않으면 ESP32가 부팅되어 이전 설정을 자동으로 사용하여 실제로 엉망이 될 수 있습니다.
ESP32는 액세스 포인트 (예 : WiFi 라우터, LTE 라우터)에서 정적 IP를 요청해야합니다. 또 다른 방법은 ESP32의 라우터 관리 페이지에서 정적 IP를 설정하는 것입니다. 라우터에는 정적 IP가 ISP에서 구매되지 않는 한 며칠마다 만료 될 수있는 동적 IP 주소가있을 수 있습니다. TODO : ESP32 API는 IP를 관리 서버로 업데이트합니다.
저하 모니터링이 중요하지 않고 데이터 속도가 지나치게 높지 않은 대부분의 시민 인프라 애플리케이션의 경우 Lorawan은 업계 표준으로 나타납니다. 그러나 더 높은 데이터 속도를 요구하는 시나리오에서는 ESP가 더 짧은 거리 프로젝트를 위해 활용 될 수 있습니다. 장거리 프로젝트의 경우, 대안적인 접근 방식은 추가 셀 모뎀을 각 스테이션에 통합하고 스테이션 간의 상호 연결을 포기하는 것을 포함 할 수 있습니다. ESP Now - Peer to Peer ESP32 커뮤니케이션
참조 : Andreas Spiess의 Lorawan에 소개.
| 측면 | esp-now | 로라완 |
|---|---|---|
| 범위 | 단거리, 지역 | 장거리, 넓은 지역 |
| 전력 소비 | 저전력 | 매우 낮은 힘 |
| 데이터 속도 | 높은 데이터 속도, 실시간 | 낮은 데이터 속도, 범위에 최적화되었습니다 |
| 토폴로지 | 피어 투 피어 (P2P) | 스타의 스타 |
| 확장 성 | 중소 네트워크 | 대규모 네트워크 |
| 규제 | 2.4 GHz ISM 밴드 | 하위지가 하르츠 ISM 밴드 |
| 하부 구조 | Bare ESP32 모듈에 포함되어 있습니다 | 게이트웨이 장치가 필요합니다 |
연구를 수행 한 후 Lorawan을 구현하려면 게이트웨이 장치가 필요합니다. 그러나 ESP-NOW를 선택하면 대체 솔루션이 제공되며 범위 확장 가능성을 탐색 할 수 있습니다. 예산을 이용할 때 Lorawan을 추가 할 수 있습니다.
LORA 게이트웨이가 불필요한 경우 모든 ESP32 장치의 펌웨어는 비슷하게 유지 될 수 있습니다. "게이트웨이 장치"또는 메인 스테이션 만 원격 클라이언트의 HTTP 요청에 대한 데이터 통신 및 데이터 테이블 조합을 처리하기 위해 조정이 필요합니다. 변전소는 여전히 로컬 WiFi 커뮤니케이션을 지원하고 셀 서비스가없는 영역의 사용자를위한 웹 페이지를 제공해야합니다.
이 장치는 WiFi Manager 인터페이스를 통해 구성되며, 이는 기본적으로 사용자가 모드를 설정할 수있는 웹 사이트를 제공합니다.
ESP-32 외부 안테나 연결이 장착 된 Dev 보드가 권장됩니다 : ESP32-Wroom-U. ESP-Now 장거리 모드는 도시 및 농촌 지역에서 조사해야합니다.
데이터 로깅 기능은 다른 로깅 모드를 지원해야합니다. I2C, SPI, RS485 등 사용 된 프로토콜을 기반으로 일반화 될 수 있습니다. ESP-NOW를 보내기 전에 기기에 먼저 저장해야합니다. 파일을 삭제하기 전에 확인이 필요합니다.
새로운 주변 장치와 인터페이스 할 때이 GPIO 핀 모니터는 원격 모니터링 사용자 interinterface를 프로토 타이핑에 제공 할 수 있습니다.
TODO는 아직 테스트하지 않았지만 와이어 센서, 아날로그 센서, SAAS. 나는 같은 기능을 원합니다 : https://www.geo-instruments.com/technology/wireless-logger-networks/
전원 공급 장치에 ESP32 VIN을 사용하면 멀티 미터는 약 4.5V의 전압을 보여줍니다. vm501에서 ESP32 VIN을 V33에, GND에 GND에 연결하십시오. gpio16으로 rx로, gpio17을 tx로 UART 포트 1을 초기화합니다. HardwareSerial VM(1); ESP32에서 UART 포트를 구성합니다. VM.begin(9600, SERIAL_8N1, 16, 17); gpio16으로 rx로, gpio17을 tx로 UART 포트 1을 초기화합니다. 이 프로젝트에서 구현 된 vm.serial UART 프로토콜 기능은 MODBUS 프로토콜을 기반으로합니다.
현재 Elegantota 무료 버전은 상용 응용 프로그램에 대한 라이센스없이 사용됩니다. Documentaion : https://docs.elegantota.pro/ 상업용 응용 프로그램의 경우 Elegantota를 피하기 위해 간단한 Arduino Ota Ota 래퍼 라이브러리를 개발할 수 있습니다. Todo는 제한을 피하기 위해 자체 버전의 OTA 버전을 발전시킵니다. 중요하게도, ./pio/libdeps/esp32dev/ElegantOTA 의 ElegantOTA.h
Asyncwebserver의 인스턴스는 포트 80에서 생성됩니다. Spiffs 파일 시스템에 저장된 파일의 내용에 응답하여 수신 HTTP get requests ( "/")를 처리하기 위해 콜백 함수가 설정됩니다. 원하는 파일과 일치하도록 파일 이름 변수를 조정하십시오. 서버를 구성한 후 server.begin() 로 시작됩니다.
선호도를 사용하여 이식되었습니다 .H 라이브러리.
credentials
{
"WIFI_SSID": "*********",
"WIFI_PASSWORD": "**********",
"gmtOffset_sec": "************"
}
마스터 로거에는 모든 변전소 시스템 정보의 마스터 목록이 있어야합니다.
[
{
"macAddress": "30:83:98:00:52:8C",
"batteryVoltage": "3.7V"
},
{
"macAddress": "30:83:98:00:52:8C",
"batteryVoltage": "3.7V"
},
]
로거는 TimesSeries 요청에 대해서는 Route /api/readings 에서 소송을 제기해야합니다. 클라이언트는 sensorId , start 및 end 및 readingsOptions 지정할 수 있습니다. 샘플 요청은 다음과 같습니다.
/api/readings?sensorId=238&start=2024-02-06T13:40:00&end=2024-02-13T13:40:00&readingsOptions=0
Qiwei Mao에 의해 만들어졌습니다
랜덤 네르드 튜토리얼 : https://randomnerdtutorials.com/projects-esp32/ dashboard : https://github.com/ayushsharma82/esp-dash github 참조 https://github.com/topics/sensors-data-collection