- Introduksjon til ESP8285
- ESP Development Board Circuit Diagram
- Fremstiller ESP8285 Dev Board
- Bestille PCB fra PCBWay
- Montering og programmering av ESP8285-kortet
- Testing med en enkel LED-blinkskisse
- Testing av webserverskisse på ESP8285
ESP-kontrollerne fra Espressif blir et populært valg for IoT-baserte design. Det finnes mange typer ESP-moduler og utviklingskort som allerede er tilgjengelige i markedet, blant annet NodeMCU er den mest populære. Bortsett fra det, er ESP-12E, ESP01 også populære valg. Men hvis du vil gjøre designet ditt mer fleksibelt og kompakt, er sjansen stor for at vi må designe vår egen ESP-modul fra chipnivå, i stedet for å bruke en lett tilgjengelig modul direkte. I denne artikkelen vil vi lære å designe en krets og PCB for å bruke ESP-kontrollerne (ESP8285) direkte uten å bruke en modul.
I dette prosjektet har vi brukt ESP8285 fordi det er en veldig interessant liten brikke. Det er en liten SoC (System on Chip), med IoT (Internet of Things) og dyp søvnfunksjoner. Den har samme kraft som storebroren ESP8266, og som en bonus kommer den med et innebygd 1 MB flash-minne med mange GPIO-er. Du kan også bruke ESP8266 som et alternativ, og de fleste av tingene som er diskutert i denne artikkelen vil fortsatt være de samme.
I en tidligere artikkel har jeg vist deg hvordan du kan designe din egen PCB-antenne for 2,4 GHz ved å bruke den samme ESP8285-brikken som et eksempel. Du kan lese den artikkelen for å lære om antennedesign for ESP8266 / ESP8285.
Så i denne artikkelen vil jeg dekke hvordan alle kretsene fungerer, og til slutt vil det være en video som forklarer alt. Jeg har også dekket i detalj hele prosedyren for å designe og bestille PCB-kort fra PCBWay for ESP-moduldesignet vårt.
Introduksjon til ESP8285
Hvis du ikke vet om denne allsidige ESP8285-brikken, er det en rask forklaring med en funksjonsliste. ESP8285 er en liten brikke med innebygd 1M flash og ram, den ligner ganske mye på ESP8286, ESP-01-modulen, men det interne flashminnet gjør det mye mer kompakt og billigere.
Denne brikken huser Tensilicas L106 Diamond 32-bits kjerneprosessor, og det samme gjelder for ESP8266, derfor kan all koden for ESP8266 bli blinket direkte til denne brikken uten noen modifikasjoner, og den har samme nettverksstabel som ESp8266-dosen.
ESP8285 integrerer antennebrytere, RF balun, effektforsterker, forsterkere med lite støy, filtre og strømstyringsmoduler. Den kompakte designen minimerer PCB-størrelsen, og den krever minimale eksterne kretser. Hvis du vil lære mer om denne ICen, kan du alltid sjekke databladet til ESP8285 for enheten på Espressif Systems.
ESP Development Board Circuit Diagram
Kretsen er veldig enkel, og jeg har brutt den ned for bedre forståelse. Nedenfor ESP-skjema viser hele kretsen, som du kan se at det er åtte funksjonelle blokker, vil jeg gå gjennom hver og forklare hver blokk.
ESP8285 SOC:
Kjernen i prosjektet er ESP8285 SoC, alle GPIOer og andre nødvendige forbindelser er definert her.
Strømfilter: Det er 7 strømpinner på denne ICen, først er strømpinnen for ADC og IO. Jeg har kortsluttet dem sammen, og bruker en 47uF effektfilterkondensator og en 0.1uF frakoblingskondensator for å filtrere 3,3V DC-inngangen.
PI-filter: PI-filteret er en av de viktigste blokkene i dette designet fordi det er ansvarlig for å drive RF-forsterkeren og LNA, enhver intern eller ekstern støy kan være beskrivende for denne delen, så for det vil RF-delen ikke fungere. Derfor er lavpasfilteret for LNA-delen veldig viktig. Du kan lære mer om PI-filtre ved å følge lenken.
Krystalloscillator: 40MHz krystalloscillator fungerer som klokkilde for ESP8285 SoC, og 10pF frakoblingskondensatorer ble lagt til som anbefalt av databladet.
LNA-seksjon: En annen viktigste del av denne kretsen er LNA-seksjonen; det er her PCB-antennen blir koblet til den fysiske pinnen til ESP. Som anbefalt av databladet brukes en 5,6 pF kondensator, og den skal fungere fint som matchende krets. Men jeg har lagt til to plassholdere for to induktorer, som om den matchende kretsdissens fungerer, kan jeg alltid sette inn noen induktorer for å justere verdiene for å matche antenneimpedansen.
LNA-seksjonen har også to PCB-gensere med en UFL-kontakt. PCB-antennen er satt som standard, men hvis applikasjonen krever litt mer rekkevidde, kan du avlaste PCB-genseren og kortslutte jumperen til UFL-kontakten, og du kan koble til en ekstern antenne akkurat slik.
Batteriinngangskontakt:
Du kan se ovenfor, jeg har satt tre typer batterikontakter parallelt, for hvis du ikke kunne finne en, kan du alltid sette en annen.
GPIO-overskrifter og programmeringsoverskriftene:
GPIO-overskriftene er der for å få tilgang til GPIO-pinnene, og programmeringsoverskriften er der for å blinke hoved Soc.
Automatisk tilbakestill krets:
I denne blokken danner to NPN-transistorer, MMBT2222A, den automatiske tilbakestillingskretsen når du trykker på opplastingsknappen i Arduino IDE, pythonverktøyet får en samtale, dette pythonverktøyet er flashverktøyet for ESP-enhetene, dette pi-verktøyet gir signal til UART-omformeren for å tilbakestille kortet mens du holder GPIO-pinnen i bakken. Etter det begynner opplastings- og bekreftelsesprosessen.
Strøm-LED, innebygd LED og spenningsdeleren:
Power LED: Power LED har en PCB-genser. Hvis du bruker dette kortet som for batteridrevet applikasjon, kan du DE lodde denne genseren for å spare ganske mye strøm.
Onboard LED: Mange dev-boards i markedet har en innebygd LED, og dette boardet er ikke noe unntak; GPIO16 på IC er koblet til en innebygd ledning. I tillegg til det er det en plassholder for en 0 OHM motstand ved å fylle 0 ohm motstanden, du kobler GPIO16 til tilbakestillingen, og som du kanskje vet, er dette et veldig viktig skritt for å sette en ESP i dyp søvnmodus.
Spenningsdeler: Som du kanskje vet, er den maksimale inngangsspenningen til ADC 1V. Så, for å endre inngangsområdet til 3,3 V, brukes spenningsdeleren. Konfigurasjonen er slik laget at du alltid kan legge til en motstand i serie med pinnen for å endre rekkevidden til 5V.
HT7333 LDO:
En LDO eller Low Dropout Voltage Regulator brukes til å regulere spenningen til ESP8285 fra et batteri med minimalt strømtap.
Maksimal inngangsspenning på HT7333 LDO er 12V, og den brukes til å konvertere batterispenningen til 3,3V, jeg valgte denne HT7333 LDO fordi den er en enhet med veldig lav hvilestrøm. 4.7uF frakoblingskondensatorer brukes til å stabilisere LDO.
Trykknapp for programmeringsmodus:
Trykknappen er koblet til GPIO0. Hvis UART-omformeren ikke har en RTS- eller DTR-pinne, kan du bruke denne trykknappen til å trekke GPIO0 manuelt til bakken.
Pullup og Pulldown motstander:
Opptrekks- og nedtrekksmotstandene er der som anbefalt av databladet.
Bortsett fra det, ble mange designnormer og retningslinjer fulgt under utformingen av PCB. Hvis du vil vite mer om det, kan du finne det i hardware design guide for ESP8266.
Fremstiller ESP8285 Dev Board
Skjematisk er ferdig, og vi kan fortsette med å legge ut PCB. Vi har brukt Eagle PCB-designprogramvare for å lage PCB, men du kan designe PCB med den foretrukne programvaren. PCB-designet vårt ser slik ut når det er ferdig.
Stykklisten og Gerber-filene er tilgjengelige for nedlasting fra følgende lenker:
- ESP8282 Dev-Board Gerber Files
- ESP8282 Dev-Board BOM
Nå som Designet vårt er klart, er det på tide å lage PCB-ene med. For å gjøre det, følg bare trinnene nedenfor:
Bestille PCB fra PCBWay
Trinn 1: Gå inn på https://www.pcbway.com/, registrer deg hvis dette er første gang. Deretter skriver du inn dimensjonene på PCB-en, antall lag og antall PCB du trenger i kategorien PCB-prototype.
Trinn 2: Fortsett ved å klikke på "Sitat nå" -knappen. Du vil bli ført til en side der du kan angi noen ekstra parametere som brettetype, lag, materiale for PCB, tykkelse og mer. De fleste av dem er valgt som standard. Hvis du velger noen spesifikke parametere, kan du velge det i høre.
Som du ser, trengte vi PCB-ene våre svarte! så, jeg har valgt svart i fargeseksjonen på loddemasken.
Trinn 3: Det siste trinnet er å laste opp Gerber-filen og fortsette med betalingen. For å sikre at prosessen er jevn, verifiserer PCBWAY om Gerber-filen din er gyldig før du fortsetter med betalingen. På denne måten kan du være sikker på at PCB-en din er fabrikasjonsvennlig og vil nå deg som engasjert.
Montering og programmering av ESP8285-kortet
Etter noen dager mottok vi PCB-en i en pen pakkeboks, og PCB-kvaliteten var god som alltid. Det øverste laget og det nederste laget av brettet er vist nedenfor:
Etter å ha mottatt styret begynte jeg umiddelbart å lodde brettet. Jeg har brukt en varmluft loddestasjon og mye loddestrøm for å lodde hoved-CPU, og andre komponenter på PCB loddes via et loddejern. Den monterte modulen er vist nedenfor.
Når det er gjort, har jeg koblet min pålitelige FTDI-modul for å teste tavlen ved å laste opp en skisse, De tilkoblede pinnene og et bilde av brettet vist nedenfor:
ESP8285 Dev Board FTDI-modul
3,3V -> 3,3V
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
GND -> GND
Når alle nødvendige tilkoblinger er fullført, har jeg satt opp Arduino IDE ved å velge Generic ESP8285 Board fra Tools > Board > Generic ESP8285 Module .
Testing med en enkel LED-blinkskisse
Deretter er det på tide å teste tavlen ved å blinke en LED, for det har jeg brukt følgende kode:
/ * ESP8285 Blink Blink den blå LED-lampen på ESP828285-modulen * / #define LED_PIN 16 // Definer blinkende LED-pin ugyldig oppsett () {pinMode (LED_PIN, OUTPUT); // Initialiser LED-pinnen som en utgang} // loop-funksjonen kjører om og om igjen for alltid ugyldig loop () {digitalWrite (LED_PIN, LOW); // Slå lysdioden på (Merk at LAV er spenningsnivået) forsinkelse (1000); // Vent på en annen digitalWrite (LED_PIN, HIGH); // Slå av LED-lampen ved å gjøre spenningen HØY forsinkelse (1000); // Vent i to sekunder}
Koden er veldig enkel, først har jeg definert LED-pinnen for dette kortet, og den er på GPIO 16. Deretter har jeg satt den pinnen som en utgang i installasjonsdelen. Og til slutt, i sløyfeseksjonen, har jeg slått av og på pinnen med et sekund forsinkelse imellom.
Testing av webserverskisse på ESP8285
Når det fungerte bra, er det på tide å teste HelloServer-skissen fra ESP8266WebServer-eksemplet. Jeg bruker et ESP8266-eksempel fordi det meste av koden er kompatibel med esp8285-brikken. Eksempelkoden finner du også nederst på denne siden.
Denne koden er også veldig enkel. Først må vi definere alle nødvendige biblioteker, #inkludere
neste, må vi oppgi navn og passord for hotspot.
#ifndef STASSID #define STASSID "your-ssid" #define STAPSK "your-password" #endif const char * ssid = STASSID; const char * passord = STAPSK;
Deretter må vi definere ESP8266WebServer-objektet. Eksemplet her definerer det som en server (80), (80) er portnummeret.
Deretter må vi definere en pinne for en LED i mitt tilfelle var det pinne nr. 16.
const int ledet = 16;
Deretter defineres handleRoot () -funksjonen. Denne funksjonen vil bli ringt når anropet til IP-adressen fra nettleseren vår.
ugyldig handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "hei fra esp8266!"); digitalWrite (ledet, 0); }
Neste er oppsettfunksjonen, hør at vi må definere alle nødvendige parametere som-
pinMode (ledet, UTGANG); // vi har definert ledet pin som output Serial.begin (115200); // vi har startet en seriell forbindelse med 115200 baud WiFi.mode (WIFI_STA); // vi har satt wifi-modus som stasjon WiFi.begin (ssid, passord); så begynner vi wifi-tilkoblingen Serial.println (""); // denne linjen gir ekstra plass mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); } / * i mens sløyfen vi tester tilkoblingsstatusen, er ESP i stand til å koble til hotspot, vil sløyfen bremse * / Serial.println (""); Serial.print ("Connected to"); Serial.println (ssid); Serial.print ("IP-adresse:"); Serial.println (WiFi.localIP ());
Deretter skriver vi ut navnet og IP-adressen til den tilkoblede SSID til det serielle skjermvinduet.
server.on ("/", handleRoot); // på-metoden til serverobjektet kalles for å handle root-funksjonen server.on ("/ inline", () {server.send (200, "text / plain", "dette fungerer også");}); // igjen har vi kalt på metoden for / inline eksempel server.begin (); // neste starter vi serveren med startmetoden Serial.println ("HTTP-server startet"); // og til slutt skriver vi ut en uttalelse i seriell skjerm. } // som markerer slutten på oppsettfunksjonen void loop (void) {server.handleClient (); }
I loop-funksjonen har vi kalt metodene handleClient () for å betjene espen riktig.
Når dette var gjort, tok ESP8285-kortet litt tid å bli koblet til webserveren og arbeidet vellykket som forventet, noe som markerte slutten på dette prosjektet.
Komplett arbeid av styret finner du også i videoen som er lenket nedenfor. Jeg håper du likte denne artikkelen og lærte noe nytt ut av den. Hvis du er i tvil, kan du spørre i kommentarene nedenfor eller bruke forumene våre for detaljert diskusjon.