- ESP8285 소개
- ESP 개발 보드 회로도
- ESP8285 개발 보드 제작
- PCBWay에서 PCB 주문
- ESP8285 보드 조립 및 프로그래밍
- 간단한 LED 깜박임 스케치로 테스트
- ESP8285에서 웹 서버 스케치 테스트
Espressif의 ESP 컨트롤러는 IoT 기반 설계에서 널리 사용되는 선택이되고 있습니다. 이미 시장에 나와있는 많은 종류의 ESP 모듈 및 개발 보드가 있으며 그중 NodeMCU가 가장 인기가 있습니다. 그 외에도 ESP-12E, ESP01도 인기있는 선택입니다. 그러나 설계를보다 유연하고 컴팩트하게 만들고 싶다면 쉽게 사용할 수있는 모듈을 직접 사용하는 대신 칩 수준에서 자체 ESP 모듈을 설계해야 할 가능성이 있습니다. 이 기사에서는 모듈을 사용하지 않고 ESP 컨트롤러 (ESP8285)를 직접 사용하기위한 회로 및 PCB를 설계하는 방법을 배웁니다.
이 프로젝트에서는 매우 흥미로운 작은 칩이기 때문에 ESP8285를 사용 했습니다. IoT (사물 인터넷) 및 딥 슬립 기능을 갖춘 작은 SoC (System on Chip)입니다. 그것은 그의 형 ESP8266과 동일한 힘을 가지고 있으며 보너스로 많은 GPIO가있는 내장 1MB 플래시 메모리와 함께 제공됩니다. ESP8266을 대안으로 사용할 수도 있으며이 기사에서 설명하는 대부분의 내용은 여전히 동일합니다.
이전 기사에서 동일한 ESP8285 칩을 예로 사용하여 2.4GHz 용 PCB 안테나를 설계하는 방법을 보여 드렸습니다. 이 기사를 읽고 ESP8266 / ESP8285 용 안테나 설계에 대해 배울 수 있습니다.
따라서이 기사에서는 모든 회로가 작동하는 방식을 다루고 마지막으로 모든 것을 설명하는 비디오가있을 것입니다. 또한 ESP 모듈 설계를 위해 PCBWay에서 PCB 보드를 설계하고 주문하는 전체 절차를 자세히 다루었습니다.
ESP8285 소개
이 다목적 ESP8285 칩에 대해 모르는 경우 기능 목록과 함께 빠른 설명이 있습니다. ESP8285는 1M 플래시 및 램 이 내장 된 작은 칩으로 ESP8286, ESP-01 모듈과 매우 유사하지만 내부 플래시 메모리로 인해 훨씬 더 작고 저렴합니다.
이 칩에는 Tensilica의 L106 Diamond 32 비트 코어 프로세서가 포함되어 있으며 ESP8266에도 동일하게 적용됩니다. 그렇기 때문에 ESP8266의 모든 코드를 수정없이이 칩에 직접 플래시 할 수 있으며 ESp8266 용량과 동일한 네트워크 스택을 가지고 있습니다..
ESP8285는 안테나 스위치, RF 발룬, 전력 증폭기, 저잡음 수신 증폭기, 필터 및 전력 관리 모듈을 통합합니다. 컴팩트 한 디자인은 PCB 크기를 최소화하고 최소한의 외부 회로를 필요로합니다. 이 IC에 대해 자세히 알아 보려면 Espressif Systems에서 장치 의 ESP8285 데이터 시트를 항상 확인할 수 있습니다.
ESP 개발 보드 회로도
회로는 매우 간단하며 더 나은 이해를 위해 분해했습니다. 아래 ESP 회로도 는 전체 회로를 보여줍니다. 8 개의 기능 블록이 있음을 알 수 있습니다. 각 블록을 살펴보고 모든 블록을 설명하겠습니다.
ESP8285 SOC:
프로젝트의 핵심은 ESP8285 SoC이며 모든 GPIO 및 기타 필요한 연결이 여기에 정의되어 있습니다.
전력 필터: 이 IC에는 7 개의 전력 핀이 있으며 첫 번째는 ADC 및 IO 용 전력 핀입니다. 나는 그것들을 함께 단락시키고 47uF 전력 필터 커패시터와 0.1uF 디커플링 커패시터를 사용하여 3.3V DC 입력을 필터링했습니다.
PI 필터: PI 필터는 RF 증폭기 및 LNA에 전원을 공급하기 때문에이 설계에서 가장 중요한 블록 중 하나입니다. 내부 또는 외부 노이즈가이 섹션을 설명 할 수 있으므로 RF 섹션이 작동하지 않습니다.. 이것이 LNA 섹션의 저역 통과 필터가 매우 중요한 이유입니다. 링크를 따라 가면 PI 필터에 대해 자세히 알아볼 수 있습니다.
수정 발진기: 40MHz 수정 발진기는 ESP8285 SoC의 클록 소스 역할을하며 데이터 시트에서 권장하는대로 10pF 디커플링 커패시터가 추가되었습니다.
LNA 섹션: 이 회로의 또 다른 가장 중요한 섹션은 LNA 섹션입니다. 이것은 PCB 안테나가 ESP의 물리적 핀에 연결되는 곳입니다. 데이터 시트에서 권장하는대로 5.6pF 커패시터가 사용되며 정합 회로로 잘 작동합니다. 그러나 정합 회로가 작동하지 않는 경우에 대비하여 두 인덕터에 대해 두 개의 자리 표시자를 추가했습니다. 안테나 임피던스와 일치하도록 값을 조정하기 위해 항상 인덕터를 몇 개 넣을 수 있습니다.
LNA 섹션에는 UFL 커넥터가있는 2 개의 PCB 점퍼도 있습니다. PCB 안테나는 기본적으로 설정되어 있지만 애플리케이션에 더 많은 범위가 필요한 경우 PCB 점퍼를 분리하고 UFL 커넥터의 점퍼를 단락시킬 수 있으며, 이와 같이 외부 안테나를 연결할 수 있습니다.
배터리 입력 커넥터:
위에서 볼 수 있듯이 세 가지 유형의 배터리 커넥터를 병렬로 연결했습니다. 하나를 찾을 수 없으면 언제든지 다른 것을 넣을 수 있기 때문입니다.
GPIO 헤더 및 프로그래밍 헤더:
GPIO 헤더는 GPIO 핀에 액세스하기 위해 있고 프로그래밍 헤더는 메인 Soc를 플래시하기 위해 있습니다.
자동 리셋 회로:
이 블록에서 두 개의 NPN 트랜지스터 인 MMBT2222A는 Arduino IDE에서 업로드 버튼을 누르면 자동 재설정 회로를 형성합니다. Python 도구는 호출을받습니다.이 Python 도구는 ESP 장치 용 플래시 도구입니다. GPIO 핀을 접지에 고정하는 동안 보드를 재설정하기 위해 UART 컨버터에 신호를 보냅니다. 그 후 업로드 및 확인 프로세스가 시작됩니다.
전원 LED, 온보드 LED 및 전압 분배기:
전원 LED: 전원 LED에는 PCB 점퍼가 있습니다. 배터리 전원을 사용하는 애플리케이션으로이 보드를 사용하는 경우이 점퍼를 DE 납땜하여 상당한 전력을 절약 할 수 있습니다.
온보드 LED: 시중에 나와있는 많은 개발 보드에는 온보드 LED가 있으며이 보드도 예외는 아닙니다. IC의 GPIO16은 온보드 LED에 연결됩니다. 그 외에도 0 Ohms 저항을 채워서 0 OHM 저항에 대한 자리 표시자가 있으며 GPIO16을 재설정에 연결하고 있으며 아시다시피 ESP를 딥 슬립 모드로 설정 하는 매우 중요한 단계 입니다.
전압 분배기: 아시다시피 ADC의 최대 입력 전압은 1V입니다. 따라서 입력 범위를 3.3V로 변경하기 위해 전압 분배기가 사용됩니다. 이 구성은 항상 핀과 직렬로 저항을 추가하여 범위를 5V로 변경할 수 있도록 만들어졌습니다.
HT7333 LDO:
LDO 또는 저 드롭 아웃 전압 조정기는 최소 전력 손실로 배터리에서 ESP8285로 전압을 조정하는 데 사용됩니다.
HT7333 LDO의 최대 입력 전압은 12V이며 배터리 전압을 3.3V로 변환하는 데 사용됩니다.이 HT7333 LDO는 대기 전류가 매우 낮은 장치이기 때문에 선택했습니다. 4.7uF 디커플링 커패시터는 LDO를 안정화하는 데 사용됩니다.
프로그래밍 모드 용 푸시 버튼:
푸시 버튼은 GPIO0에 연결되어 있습니다. UART 컨버터에 RTS 또는 DTR 핀이없는 경우이 푸시 버튼을 사용하여 GPIO0을 수동으로 접지로 끌어 올 수 있습니다.
풀업 및 풀다운 저항:
풀업 및 풀다운 저항은 데이터 시트에서 권장하는대로 있습니다.
그 외에도 PCB를 설계하는 동안 많은 설계 규범과 지침을 따랐습니다. 이에 대해 더 알고 싶다면 ESP8266의 하드웨어 설계 가이드에서 찾을 수 있습니다.
ESP8285 개발 보드 제작
회로도가 완료되고 PCB 레이아웃을 진행할 수 있습니다. 우리는 Eagle PCB 설계 소프트웨어를 사용하여 PCB를 만들었지 만 선호하는 소프트웨어로 PCB를 설계 할 수 있습니다. 우리의 PCB 디자인은 완성되었을 때 이렇게 보입니다.
BOM 및 Gerber 파일은 다음 링크에서 다운로드 할 수 있습니다.
- ESP8282 Dev-Board Gerber 파일
- ESP8282 개발 기판 BOM
이제 디자인이 준비되었으므로 PCB를 사용하여 제작할 때입니다. 이렇게하려면 다음 단계를 따르십시오.
PCBWay에서 PCB 주문
1 단계: https://www.pcbway.com/에 접속하여 처음이라면 가입하십시오. 그런 다음 PCB 프로토 타입 탭에서 PCB 치수, 레이어 수 및 필요한 PCB 수를 입력합니다.
2 단계: '지금 견적'버튼을 클릭하여 진행합니다. Board type, Layers, Material for PCB, Thickness 등과 같은 몇 가지 추가 매개 변수를 설정할 수있는 페이지로 이동합니다. 대부분은 기본적으로 선택됩니다. 특정 매개 변수를 선택하는 경우 선택할 수 있습니다. 듣고 있습니다.
보시다시피 PCB는 검정색이 필요했습니다! 그래서 솔더 마스크 색상 섹션에서 검정색을 선택했습니다.
3 단계: 마지막 단계는 Gerber 파일을 업로드하고 결제를 진행하는 것입니다. 프로세스가 원활하게 진행되도록 PCBWAY는 결제를 진행하기 전에 Gerber 파일이 유효한지 확인합니다. 이렇게하면 PCB가 제작에 친숙하고 약속 된대로 도달 할 수 있다는 것을 확신 할 수 있습니다.
ESP8285 보드 조립 및 프로그래밍
며칠 후 우리는 깔끔한 패키지 상자에 PCB를 받았으며 PCB 품질은 항상 좋았습니다. 보드의 상단 레이어와 하단 레이어는 다음과 같습니다.
보드를받은 후 즉시 보드 납땜을 시작했습니다. 열풍 납땜 스테이션과 많은 납땜 플럭스를 사용하여 메인 CPU를 납땜했으며 PCB의 다른 구성 요소는 납땜 인두를 통해 납땜되었습니다. 조립 된 모듈은 아래와 같습니다.
이 작업이 완료되면 아래에 표시된 스케치, 연결된 핀 및 보드 이미지를 업로드하여 보드를 테스트하기 위해 신뢰할 수있는 FTDI 모듈을 연결했습니다.
ESP8285 개발 보드 FTDI 모듈
3.3V- > 3.3V
Tx- > Rx
Rx- > Tx
DTR- > DTR
RST- > RST
GND- > GND
필요한 모든 연결이 완료되면 Tools > Board > Generic ESP8285 Module 에서 Generic ESP8285 Board를 선택하여 Arduino IDE를 설정했습니다.
간단한 LED 깜박임 스케치로 테스트
다음으로 LED를 깜빡여 보드를 테스트 할 차례입니다.이를 위해 다음 코드를 사용했습니다.
/ * ESP8285 깜박임 ESP828285 모듈의 파란색 LED 깜박임 * / #define LED_PIN 16 // 깜박이는 LED 핀 정의 void setup () {pinMode (LED_PIN, OUTPUT); // LED 핀을 출력으로 초기화} // 루프 함수는 영원히 계속해서 실행됩니다. void loop () {digitalWrite (LED_PIN, LOW); // LED를 켭니다 (LOW는 전압 레벨입니다.) delay (1000); // 두 번째를 기다립니다. digitalWrite (LED_PIN, HIGH); // 전압을 HIGH로 만들어 LED를 끕니다. delay (1000); // 2 초 동안 기다립니다.}
코드는 매우 간단합니다. 먼저이 보드의 LED 핀을 정의하고 GPIO 16에 있습니다. 다음으로 설정 섹션에서 해당 핀을 출력으로 설정했습니다. 마지막으로 루프 섹션에서 1 초 간격으로 핀을 켜고 끕니다.
ESP8285에서 웹 서버 스케치 테스트
제대로 작동하면 ESP8266WebServer Example 에서 HelloServer 스케치를 테스트 할 차례 입니다. 대부분의 코드가 esp8285 칩과 호환되기 때문에 ESP8266 예제를 사용하고 있습니다. 예제 코드는이 페이지 하단에서도 찾을 수 있습니다.
이 코드도 매우 간단합니다. 먼저 필요한 모든 라이브러리를 정의해야합니다.
#포함
다음으로 핫스팟의 이름과 비밀번호를 입력해야합니다.
#ifndef STASSID #define STASSID "your-ssid"#define STAPSK "your-password"#endif const char * ssid = STASSID; const char * 암호 = STAPSK;
다음으로 ESP8266WebServer 개체를 정의해야합니다. 여기의 예에서는 서버 (80)로 정의하고 (80)은 포트 번호입니다.
다음으로, 제 경우에는 16 번 핀이었던 LED 용 핀을 정의해야합니다.
const int led = 16;
다음으로 handleRoot () 함수가 정의됩니다. 이 함수는 브라우저에서 IP 주소를 호출 할 때 호출됩니다.
void handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "hello from esp8266!"); digitalWrite (led, 0); }
다음은 설정 기능입니다. 필요한 모든 파라미터를 다음과 같이 정의해야합니다.
pinMode (led, OUTPUT); // led 핀을 출력으로 정의했습니다. Serial.begin (115200); // 115200 baud로 직렬 연결을 시작했습니다. WiFi.mode (WIFI_STA); // 와이파이 모드를 스테이션으로 설정했습니다. WiFi.begin (ssid, password); 그런 다음 Wi-Fi 연결을 시작합니다. Serial.println (""); //이 줄은 추가 공간을 제공합니다. while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } / * while 루프에서 ESP가 핫스팟에 연결할 수있는 연결 상태를 테스트하는 중입니다. 루프가 중단됩니다 * / Serial.println (""); Serial.print ("연결됨"); Serial.println (ssid); Serial.print ("IP 주소:"); Serial.println (WiFi.localIP ());
다음으로 연결된 SSID의 이름과 IP 주소를 직렬 모니터 창에 인쇄합니다.
server.on ("/", handleRoot); // 서버 객체의 on 메서드는 루트 함수를 처리하기 위해 호출됩니다. server.on ("/ inline", () {server.send (200, "text / plain", "this works as well");}); // 다시 / inline 예제를 위해 on 메서드를 호출했습니다. server.begin (); // 다음으로 시작 메소드로 서버를 시작합니다. Serial.println ("HTTP server started"); // 마지막으로 직렬 모니터에 명령문을 인쇄합니다. } // 설정 함수의 끝을 표시합니다. void loop (void) {server.handleClient (); }
루프 함수 에서 esp를 올바르게 작동하기 위해 handleClient () 메서드를 호출했습니다.
이 작업이 완료되면 ESP8285 보드가 웹 서버에 연결하는 데 약간의 시간이 걸렸고 예상대로 성공적으로 작동하여이 프로젝트가 끝났습니다.
보드의 전체 작업은 아래 링크 된 비디오에서도 확인할 수 있습니다. 이 기사를 즐겁게 읽고 새로운 것을 배웠기를 바랍니다. 의심스러운 점이 있으면 아래 의견에 질문하거나 포럼을 사용하여 자세한 토론을 할 수 있습니다.