- Introduktion til ESP8285
- ESP Development Board Circuit Diagram
- Fabrikation af vores ESP8285 Dev Board
- Bestilling af printkort fra PCBWay
- Montering og programmering af ESP8285 Board
- Test med en simpel LED-blinkskitse
- Test af webserverskitse på ESP8285
ESP-controllere fra Espressif er ved at blive et meget populært valg for IoT-baserede designs. Der findes mange slags ESP-moduler og udviklingskort, der allerede findes på markedet, blandt hvilke NodeMCU er den mest populære. Bortset fra det er ESP-12E, ESP01 også populære valg. Men hvis du vil gøre dit design mere fleksibelt og kompakt, er chancerne for, at vi skal designe vores eget ESP-modul fra chipniveauet i stedet for direkte at bruge et let tilgængeligt modul. I denne artikel lærer vi, hvordan man designer et kredsløb og PCB til brug af ESP-controllere (ESP8285) direkte uden brug af et modul.
I dette projekt har vi brugt ESP8285, fordi det er en meget interessant lille chip. Det er en lille SoC (System on Chip) med IoT (Internet of Things) og dyb søvnfunktioner. Den har samme kraft som hans storebror ESP8266, og som en bonus kommer den med en indbygget 1 MB flash-hukommelse med mange GPIO'er. Du kan også bruge ESP8266 som et alternativ, og de fleste af de ting, der diskuteres i denne artikel, vil stadig være de samme.
I en tidligere artikel har jeg vist dig, hvordan du kan designe din egen PCB-antenne til 2,4 GHz ved hjælp af den samme ESP8285-chip som et eksempel. Du kan læse denne artikel for at lære om antennedesign til ESP8266 / ESP8285.
Så i denne artikel vil jeg dække, hvordan alle kredsløb fungerer, og endelig vil der være en video, der forklarer det hele. Jeg har også dækket detaljeret den komplette procedure til at designe og bestille printkort fra PCBWay til vores ESP-moduldesign.
Introduktion til ESP8285
Hvis du ikke ved om denne alsidige ESP8285-chip, her er en hurtig forklaring med en funktionsliste. ESP8285 er en lille chip med indbygget 1M flash og ram, det ligner meget ESP8286, ESP-01-modulet, men den interne flashhukommelse gør det meget mere kompakt og billigere.
Denne chip huser Tensilicas L106 Diamond 32-bit kerneprocessor, og det samme gælder for ESP8266, det er derfor, al kode til ESP8266 kan blinkes direkte til denne chip uden ændringer, og den har den samme netværksstak som ESp8266-dosis.
ESP8285 integrerer antennekontakter, RF balun, effektforstærker, forstærker med lav støjmodtagelse, filtre og strømstyringsmoduler. Det kompakte design minimerer printkortstørrelsen, og det kræver minimale eksterne kredsløb. Hvis du vil lære mere om denne IC, kan du altid tjekke databladet for ESP8285 for enheden hos Espressif Systems.
ESP Development Board Circuit Diagram
Kredsløbet er meget simpelt, og jeg har brudt det ned for bedre forståelse. Nedenstående ESP-skema viser hele kredsløbet, som du kan se, at der er otte funktionelle blokke, vil jeg gennemgå hver enkelt og forklare hver blok.
ESP8285 SOC:
Kernen i projektet er ESP8285 SoC, alle GPIO'er og andre nødvendige forbindelser er defineret her.
Strømfilter: Der er 7 strømstifter på denne IC, først er strømstiften til ADC og IO'er. Jeg har kortsluttet dem sammen og bruger en 47uF effektfilterkondensator og en 0.1uF afkoblingskondensator til at filtrere 3.3V DC-indgangen.
PI-filter: PI-filteret er en af de vigtigste blokke i dette design, fordi det er ansvarligt for strømforsyning til RF-forstærkeren og LNA, enhver intern eller ekstern støj kan være beskrivende for dette afsnit, så derfor fungerer RF-sektionen ikke. Derfor er lavpasfilteret til LNA-sektionen meget afgørende. Du kan lære mere om PI-filtre ved at følge linket.
Crystal Oscillator: 40MHz crystal oscillator fungerer som urkilden til ESP8285 SoC, og 10pF-afkoblingskondensatorerne blev tilføjet som anbefalet af databladet.
LNA-sektion: En anden vigtig del af dette kredsløb er LNA-sektionen; det er her PCB-antennen tilsluttes den fysiske pin på ESP. Som anbefalet af databladet anvendes der en 5.6pF kondensator, og den skal fungere fint som det matchende kredsløb. Men jeg har tilføjet to pladsholdere til to induktorer, som hvis det matchende kredsløbsdifferent fungerer, kan jeg altid sætte nogle induktorer ind for at finjustere værdierne for at matche antenneimpedansen.
LNA-sektionen har også to PCB-jumpere med et UFL-stik. PCB-antennen er som standard indstillet, men hvis din applikation kræver lidt mere rækkevidde, kan du afliste PCB-jumperen og kortslutte jumperen til UFL-stikket, og du kan tilslutte en ekstern antenne sådan.
Batteriindgangsstik:
Du kan se ovenfor, jeg har sat tre typer batteristik parallelt, for hvis du ikke kunne finde en, kan du altid sætte en anden.
GPIO-overskrifter og programmeringsoverskrifterne:
GPIO-headerne er der for at få adgang til GPIO-benene, og programmeringsoverskriften er der for at blinke hoved Soc.
Auto Reset Circuit:
I denne blok danner to NPN-transistorer, MMBT2222A auto-reset-kredsløbet, når du trykker på upload-knappen i Arduino IDE, pythonværktøjet får et opkald, dette pythonværktøjet er flashværktøjet til ESP-enhederne, dette pi-værktøj giver signal til UART-konverteren for at nulstille kortet, mens du holder GPIO-stiften i jorden. Derefter begynder upload- og verificeringsprocessen.
Strøm-LED, indbygget LED og spændingsdeleren:
Power LED: Power LED har en PCB-jumper. Hvis du bruger dette kort som til batteridrevet applikation, kan du DE lodde denne jumper for at spare en hel del strøm.
Indbygget LED: Mange dev-boards på markedet har en indbygget LED, og dette board er ingen undtagelse; IC'ens GPIO16 er forbundet til en indbygget led. Derudover er der en pladsholder for en 0 OHM-modstand ved at udfylde 0 ohm-modstanden, du forbinder GPIO16 til nulstillingen, og som du måske ved, er dette et meget vigtigt skridt for at sætte en ESP i dyb søvntilstand.
Spændingsdeler: Som du måske ved, er ADC's maksimale indgangsspænding 1V. Så for at ændre inputområdet til 3,3 V anvendes spændingsdeleren. Konfigurationen er således lavet, at du altid kan tilføje en modstand i serie med stiften for at ændre området til 5V.
HT7333 LDO:
En LDO eller Low Dropout Voltage Regulator bruges til at regulere spændingen til ESP8285 fra et batteri med minimalt strømtab.
Den maksimale indgangsspænding på HT7333 LDO er 12V, og den bruges til at konvertere batterispændingen til 3,3V, jeg valgte denne HT7333 LDO, fordi det er en enhed med en meget lav hvilestrøm. 4.7uF afkoblingskondensatorer bruges til at stabilisere LDO.
Trykknap til programmeringstilstand:
Trykknappen er tilsluttet GPIO0, hvis din UART-konverter ikke har en RTS- eller DTR-pin, kan du bruge denne trykknap til manuelt at trække GPIO0 til jorden.
Pullup- og Pulldown-modstande:
Pullup- og rullemodstandene er der som anbefalet af databladet.
Bortset fra det blev mange designnormer og retningslinjer fulgt under design af printkortet. Hvis du vil vide mere om det, kan du finde det i hardware design guide til ESP8266.
Fabrikation af vores ESP8285 Dev Board
Skematisk er færdig, og vi kan fortsætte med at lægge printkortet ud. Vi har brugt Eagle PCB design software til at fremstille PCB, men du kan designe PCB med din foretrukne software. Vores printkortdesign ser sådan ud, når det er afsluttet.
Stykliste- og Gerber-filerne kan downloades fra følgende links:
- ESP8282 Dev-Board Gerber Files
- ESP8282 Dev-Board BOM
Nu hvor vores design er klar, er det tid til at få printkort fremstillet ved hjælp af. For at gøre det skal du blot følge nedenstående trin:
Bestilling af printkort fra PCBWay
Trin 1: Gå ind på https://www.pcbway.com/, tilmeld dig, hvis det er første gang. Indtast derefter dimensionerne på din PCB, antallet af lag og antallet af PCB, du har brug for, på fanen PCB Prototype.
Trin 2: Fortsæt ved at klikke på knappen 'Citér nu'. Du føres til en side, hvor du kan indstille et par ekstra parametre som korttype, lag, materiale til printkort, tykkelse og mere, de fleste af dem er valgt som standard. Hvis du vælger specifikke parametre, kan du vælge det i hør.
Som du kan se, havde vi brug for vores printkort sort! så jeg har valgt sort i afsnittet om loddemaskefarve.
Trin 3: Det sidste trin er at uploade Gerber-filen og fortsætte med betalingen. For at sikre, at processen er glat, verificerer PCBWAY, om din Gerber-fil er gyldig, inden du fortsætter med betalingen. På denne måde kan du være sikker på, at dit print er fabrikationsvenligt og når dig som engageret.
Montering og programmering af ESP8285 Board
Efter et par dage modtog vi vores PCB i en pæn pakkeæske, og PCB-kvaliteten var som altid god. Boardets øverste og nederste lag vises nedenfor:
Efter at have modtaget tavlen begyndte jeg straks at lodde tavlen. Jeg har brugt en varmluft loddestation og en masse loddemetal til at lodde hoved-CPU'en, og andre komponenter på printkortet loddes via et loddejern. Det samlede modul vises nedenfor.
Når det er gjort, har jeg tilsluttet mit trofaste FTDI-modul til at teste tavlen ved at uploade en skitse, De tilsluttede ben og et billede af tavlen vist nedenfor:
ESP8285 Dev Board FTDI-modul
3,3V -> 3,3V
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
GND -> GND
Når alle de nødvendige forbindelser er afsluttet, har jeg oprettet Arduino IDE ved at vælge Generic ESP8285 Board fra Tools > Board > Generic ESP8285 Module .
Test med en simpel LED-blinkskitse
Dernæst er det tid til at teste tavlen ved at blinke en LED, for det har jeg brugt følgende kode:
/ * ESP8285 Blink Blink den blå LED på ESP828285-modulet * / #define LED_PIN 16 // Definer blinkende LED-pin ugyldig opsætning () {pinMode (LED_PIN, OUTPUT); // Initialiser LED-stiften som output} // loop-funktionen kører igen og igen for evigt ugyldig loop () {digitalWrite (LED_PIN, LOW); // Tænd LED'en (bemærk at LOW er spændingsniveauet) forsinkelse (1000); // Vent på en anden digitalWrite (LED_PIN, HIGH); // Sluk for LED ved at gøre spændingen HIGH delay (1000); // Vent i to sekunder}
Koden er meget enkel, først har jeg defineret LED-stiften til dette kort, og den er på GPIO 16. Dernæst har jeg indstillet den stift som output i installationsafsnittet. Og endelig, i loop-sektionen, har jeg tændt og slukket for stiften med et sekund forsinkelse imellem.
Test af webserverskitse på ESP8285
Når det fungerede fint, er det tid til at teste HelloServer-skitsen fra ESP8266WebServer-eksemplet. Jeg bruger et ESP8266-eksempel, fordi det meste af koden er kompatibel med esp8285-chippen. Eksempelkoden findes også nederst på denne side.
Denne kode er også meget enkel. Først skal vi definere alle de nødvendige biblioteker, #omfatte
Dernæst skal vi indtaste hotspotets navn og adgangskode.
#ifndef STASSID #define STASSID "your-ssid" #define STAPSK "your-password" #endif const char * ssid = STASSID; const char * password = STAPSK;
Dernæst skal vi definere ESP8266WebServer-objektet. Eksemplet her definerer det som en server (80), (80) er portnummeret.
Dernæst skal vi definere en pin til en LED i mit tilfælde var det pin nr. 16.
konstant int ledet = 16;
Dernæst defineres handleRoot () -funktionen. Denne funktion kaldes, når IP-adressen kaldes fra vores browser.
ugyldig handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "hej fra esp8266!"); digitalWrite (led, 0); }
Næste er opsætningsfunktionen. Hør, at vi er nødt til at definere alle de nødvendige parametre som-
pinMode (led, OUTPUT); // vi har defineret den ledede pin som output Serial.begin (115200); // vi har startet en seriel forbindelse med 115200 baud WiFi.mode (WIFI_STA); // vi har indstillet wifi-tilstand som station WiFi.begin (ssid, password); så begynder vi wifi-forbindelsen Serial.println (""); // denne linje giver yderligere plads, mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); } / * i mens loop vi tester forbindelsesstatus en ESP er i stand til at oprette forbindelse til hotspot sløjfen vil bremse * / Serial.println (""); Serial.print ("Forbundet til"); Serial.println (ssid); Serial.print ("IP-adresse:"); Serial.println (WiFi.localIP ());
Dernæst udskriver vi navnet og IP-adressen på det tilsluttede SSID til det serielle skærmvindue.
server.on ("/", handleRoot); // on-metoden på serverobjektet kaldes for at handle med rodfunktionsserver.on ("/ inline", () {server.send (200, "text / plain", "dette fungerer også");}); // igen har vi kaldt on-metoden til / inline eksempel-serveren.begin (); // næste starter vi serveren med startmetoden Serial.println ("HTTP-server startet"); // og til sidst udskriver vi en erklæring i den serielle skærm. } // som markerer slutningen af opsætningsfunktionens ugyldige sløjfe (ugyldig) {server.handleClient (); }
I loop-funktionen har vi kaldt handleClient () -metoderne til at betjene esp korrekt.
Når dette var gjort, tog ESP8285-tavlen noget tid at få forbindelse til webserveren og arbejdede med succes som forventet, hvilket markerede afslutningen på dette projekt.
Boardets komplette arbejde kan også findes i videoen, der er linket nedenfor. Jeg håber du nød denne artikel og lærte noget nyt ud af den. Hvis du er i tvivl, kan du spørge i kommentarerne nedenfor eller bruge vores fora til detaljeret diskussion.