- Inleiding tot ESP8285
- Schakelschema ESP Development Board
- Fabricage van ons ESP8285 Dev Board
- PCB bestellen bij PCBWay
- Assembleren en programmeren van de ESP8285-kaart
- Testen met een simpele LED Blink Sketch
- Webserver Sketch testen op ESP8285
De ESP-controllers van Espressif worden een zeer populaire keuze voor op IoT gebaseerde ontwerpen. Er zijn al veel soorten ESP-modules en ontwikkelborden op de markt, waarvan NodeMCU de meest populaire is. Afgezien daarvan zijn ESP-12E en ESP01 ook populaire keuzes. Maar als je je ontwerp flexibeler en compacter wilt maken, is de kans groot dat we onze eigen ESP-module op chipniveau moeten ontwerpen, in plaats van direct gebruik te maken van een direct beschikbare module. In dit artikel zullen we leren hoe we een circuit en PCB kunnen ontwerpen om de ESP-controllers (ESP8285) rechtstreeks te gebruiken zonder een module te gebruiken.
In dit project hebben we ESP8285 gebruikt omdat het een erg interessante kleine chip is. Het is een kleine SoC (System on Chip), met IoT (Internet of Things) en diepe slaapmogelijkheden. Hij heeft dezelfde kracht als zijn grote broer ESP8266 en als bonus wordt hij geleverd met een ingebouwd 1MB flash-geheugen met veel GPIO's. U kunt ESP8266 ook als alternatief gebruiken en de meeste dingen die in dit artikel worden besproken, zullen nog steeds hetzelfde zijn.
In een vorig artikel heb ik je laten zien hoe je je eigen PCB-antenne voor 2,4 GHz kunt ontwerpen, met dezelfde ESP8285-chip als voorbeeld. U kunt dat artikel lezen om meer te weten te komen over antenne-ontwerp voor ESP8266 / ESP8285.
Dus in dit artikel zal ik bespreken hoe alle circuits werken en tot slot zal er een video zijn waarin alles wordt uitgelegd. Ik heb ook in detail de volledige procedure behandeld om de printplaten van PCBWay te ontwerpen en te bestellen voor ons ESP-moduleontwerp.
Inleiding tot ESP8285
Mocht u niets weten over deze veelzijdige ESP8285-chip, dan vindt u hier een korte uitleg met een functielijst. ESP8285 is een kleine chip met ingebouwde 1M flash en ram, het lijkt veel op de ESP8286, ESP-01 module, maar het interne flash-geheugen maakt het veel compacter en goedkoper.
Deze chip herbergt Tensilica's L106 Diamond 32-bit coreprocessor en hetzelfde geldt ook voor de ESP8266, daarom kan alle code voor de ESP8266 direct naar deze chip worden geflitst zonder enige aanpassingen, en het heeft dezelfde netwerkstack als de ESp8266-dosis.
De ESP8285 integreert antenneschakelaars, RF-balun, eindversterker, geluidsarme ontvangstversterker, filters en energiebeheermodules. Het compacte ontwerp minimaliseert de PCB-afmeting en vereist minimale externe schakelingen. Als u meer wilt weten over dit IC, kunt u bij Espressif Systems altijd de datasheet van ESP8285 van het apparaat raadplegen.
Schakelschema ESP Development Board
Het circuit is heel eenvoudig en ik heb het opgesplitst voor een beter begrip. Het onderstaande ESP-schema toont het hele circuit, zoals je kunt zien, zijn er acht functionele blokken, ik zal ze allemaal doorlopen en elk blok uitleggen.
ESP8285 SOC:
De kern van het project is de ESP8285 SoC, alle GPIO's en andere noodzakelijke verbindingen worden hier gedefinieerd.
Power Filter: Er zijn 7 power pinnen op dit IC, de eerste is de power pin voor de ADC en IO's. Ik heb ze samen kortgesloten en gebruik een 47uF vermogensfiltercondensator en een 0,1uF ontkoppelingscondensator om de 3.3V DC-ingang te filteren.
PI-filter: het PI-filter is een van de belangrijkste blokken van dit ontwerp omdat het verantwoordelijk is voor het voeden van de RF-versterker en de LNA, elke interne of externe ruis kan beschrijvend zijn voor deze sectie, dus daarvoor zal de RF-sectie niet werken. Daarom is het laagdoorlaatfilter voor de LNA-sectie erg cruciaal. U kunt meer leren over PI-filters door de link te volgen.
Kristaloscillator: de 40 MHz kristaloscillator dient als de klokbron voor de ESP8285 SoC, en de 10pF ontkoppelingscondensatoren zijn toegevoegd zoals aanbevolen in het gegevensblad.
LNA-sectie: een andere zeer belangrijke sectie van dit circuit is de LNA-sectie; dit is waar de PCB-antenne wordt aangesloten op de fysieke pin van de ESP. Zoals aanbevolen door het gegevensblad, wordt een condensator van 5,6 pF gebruikt, en deze zou prima moeten werken als het bijpassende circuit. Maar ik heb twee tijdelijke aanduidingen voor twee inductoren toegevoegd, alsof in het geval dat het bijpassende circuit afwijkt, ik altijd wat inductoren kan plaatsen om de waarden aan te passen aan de antenne-impedantie.
De LNA-sectie heeft ook twee PCB-jumpers met een UFL-connector. De PCB-antenne staat standaard ingesteld, maar als uw toepassing iets meer bereik nodig heeft, kunt u de PCB-jumper desolderen en de jumper voor de UFL-connector kortsluiten en kunt u zomaar een externe antenne aansluiten.
Batterij-ingangsconnector:
Je kunt hierboven zien dat ik drie soorten batterijconnectoren parallel heb gezet, want als je er geen kon vinden, kun je altijd een andere plaatsen.
GPIO-headers en de programmeerkoppen:
De GPIO-headers zijn er om toegang te krijgen tot de GPIO-pinnen en de programmeerkop is er om de belangrijkste Soc.
Circuit automatisch resetten:
In dit blok, twee NPN-transistors, vormt MMBT2222A het auto-reset circuit wanneer je op de uploadknop in de Arduino IDE drukt, de python-tool krijgt een oproep, deze python-tool is de flash-tool voor de ESP-apparaten, deze pi-tool geeft de signaal naar de UART-omzetter om het bord te resetten terwijl de GPIO-pin op aarde wordt gehouden. Daarna begint het upload- en verificatieproces.
Power-LED, ingebouwde LED en de spanningsdeler:
Power-LED: De power-LED heeft een PCB-jumper. Als u dit bord gebruikt voor toepassingen op batterijen, kunt u deze jumper DE-solderen om behoorlijk wat stroom te besparen.
Onboard LED: Veel dev-boards op de markt hebben een onboard LED, en dit board is geen uitzondering; de GPIO16 van het IC is aangesloten op een ingebouwde led. Daarnaast is er een tijdelijke aanduiding voor een 0 Ohm-weerstand door de 0 Ohm-weerstand te vullen, je verbindt GPIO16 met de reset, en zoals je wellicht weet, is dit een zeer belangrijke stap om een ESP in diepe slaapstand te zetten.
Spanningsdeler: zoals u wellicht weet, is de maximale ingangsspanning van de ADC 1V. Dus om het bereik van de ingang naar 3,3 V te veranderen, wordt de spanningsdeler gebruikt. De configuratie is zo gemaakt dat je altijd een weerstand in serie met de pin kunt toevoegen om het bereik te veranderen naar 5V.
HT7333 LDO:
Een LDO of Low Dropout Voltage Regulator wordt gebruikt om de spanning naar de ESP8285 van een batterij te regelen met minimaal vermogensverlies.
De maximale ingangsspanning van de HT7333 LDO is 12V en wordt gebruikt om de accuspanning om te zetten naar 3.3V. Ik heb voor deze HT7333 LDO gekozen omdat het een apparaat is met een zeer lage ruststroom. De ontkoppelingscondensatoren van 4.7uF worden gebruikt om de LDO te stabiliseren.
Drukknop voor programmeermodus:
De drukknop is verbonden met GPIO0, als je UART-converter geen RTS- of DTR-pin heeft, kun je deze drukknop gebruiken om de GPIO0 handmatig naar aarde te trekken.
Pullup- en Pulldown-weerstanden:
De pullup- en pulldown-weerstanden zijn aanwezig zoals aanbevolen in het gegevensblad.
Verder werden bij het ontwerpen van de printplaat veel ontwerpnormen en richtlijnen gevolgd. Als je daar meer over wilt weten, kun je dat vinden in de hardware-ontwerpgids voor de ESP8266.
Fabricage van ons ESP8285 Dev Board
Het schema is klaar en we kunnen doorgaan met het opmaken van de printplaat. We hebben Eagle PCB-ontwerpsoftware gebruikt om de PCB te maken, maar u kunt de PCB ontwerpen met uw favoriete software. Ons PCB-ontwerp ziet er zo uit als het is voltooid.
De stuklijst en de Gerber-bestanden kunnen worden gedownload via de volgende links:
- ESP8282 Dev-Board Gerber-bestanden
- ESP8282 Dev-board stuklijst
Nu ons ontwerp klaar is, is het tijd om de PCB's te laten fabriceren met. Volg hiervoor de onderstaande stappen:
PCB bestellen bij PCBWay
Stap 1: Ga naar https://www.pcbway.com/, meld u aan als dit de eerste keer is. Voer vervolgens op het tabblad PCB-prototype de afmetingen van uw PCB, het aantal lagen en het aantal PCB's dat u nodig heeft in.
Stap 2: Ga verder door op de knop 'Nu citeren' te klikken. U wordt naar een pagina geleid waar u een paar aanvullende parameters kunt instellen, zoals het bordtype, de lagen, het materiaal voor de printplaat, de dikte en meer, de meeste zijn standaard geselecteerd.Als u voor specifieke parameters kiest, kunt u selecteren het in horen.
Zoals u kunt zien, hadden we onze printplaten zwart nodig! dus ik heb zwart geselecteerd in het kleurgedeelte van het soldeermasker.
Stap 3: De laatste stap is om het Gerber-bestand te uploaden en door te gaan met de betaling. Om ervoor te zorgen dat het proces soepel verloopt, controleert PCBWAY of uw Gerber-bestand geldig is voordat u verdergaat met de betaling. Op deze manier weet u zeker dat uw printplaat fabricagevriendelijk is en u als toegewijd zal bereiken.
Assembleren en programmeren van de ESP8285-kaart
Na een paar dagen ontvingen we onze PCB in een nette verpakkingsdoos en de kwaliteit van de PCB was zoals altijd goed. De bovenste laag en de onderste laag van het bord worden hieronder weergegeven:
Na ontvangst van het board ben ik direct begonnen met solderen. Ik heb een heteluchtsoldeerstation gebruikt en veel soldeervloeistof om de hoofd-CPU te solderen, en andere componenten op de printplaat worden gesoldeerd via een soldeerbout. De geassembleerde module wordt hieronder getoond.
Zodra dat is gebeurd, heb ik mijn vertrouwde FTDI-module aangesloten om het bord te testen door een schets te uploaden, de aangesloten pinnen en een afbeelding van het onderstaande bord:
ESP8285 Dev Board FTDI-module
3.3V -> 3.3V
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
GND -> GND
Zodra alle benodigde verbindingen zijn voltooid, heb ik de Arduino IDE ingesteld door het Generic ESP8285 Board te selecteren via Tools > Board > Generic ESP8285 Module .
Testen met een simpele LED Blink Sketch
Vervolgens is het tijd om het bord te testen door een LED te laten knipperen, daarvoor heb ik de volgende code gebruikt:
/ * ESP8285 Knippert Knippert de blauwe LED op de ESP828285-module * / #define LED_PIN 16 // Definieer knipperende LED-pin leegte setup () {pinMode (LED_PIN, OUTPUT); // Initialiseer de LED-pin als een output} // de loop-functie loopt keer op keer forever void loop () {digitalWrite (LED_PIN, LOW); // Zet de LED aan (merk op dat LOW het spanningsniveau is) vertraging (1000); // Wacht op een tweede digitalWrite (LED_PIN, HIGH); // Schakel de LED uit door de spanning HIGH te vertragen (1000); // Wacht twee seconden}
De code is heel simpel, eerst heb ik de LED-pin voor dit bord gedefinieerd, en deze staat op GPIO 16. Vervolgens heb ik die pin als uitgang ingesteld in de setup-sectie. En tot slot, in het lusgedeelte, heb ik de pin in- en uitgeschakeld met een vertraging van één seconde ertussen.
Webserver Sketch testen op ESP8285
Als dat eenmaal goed werkte, is het tijd om de HelloServer- schets uit het ESP8266WebServer-voorbeeld te testen. Ik gebruik een ESP8266-voorbeeld omdat de meeste code compatibel is met de esp8285-chip. De voorbeeldcode staat ook onderaan deze pagina.
Deze code is ook heel eenvoudig, eerst moeten we alle benodigde bibliotheken definiëren, # omvatten
Vervolgens moeten we de naam en het wachtwoord van de hotspot invoeren.
#ifndef STASSID #define STASSID "uw-ssid" #define STAPSK "uw-wachtwoord" #endif const char * ssid = STASSID; const char * wachtwoord = STAPSK;
Vervolgens moeten we het ESP8266WebServer-object definiëren. Het voorbeeld hier definieert het als een server (80), de (80) is het poortnummer.
Vervolgens moeten we een pin definiëren voor een LED, in mijn geval was het pin nr.16.
const int led = 16;
Vervolgens wordt de functie handleRoot () gedefinieerd. Deze functie wordt aangeroepen wanneer het IP-adres vanuit onze browser wordt aangeroepen.
void handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "hallo van esp8266!"); digitalWrite (led, 0); }
Het volgende is de setup-functie, hoor dat we alle benodigde parameters moeten definiëren, zoals-
pinMode (led, OUTPUT); // we hebben de led- pin gedefinieerd als output Serial.begin (115200); // we zijn een seriële verbinding gestart met 115200 baud WiFi.mode (WIFI_STA); // we hebben de wifi-modus ingesteld als station WiFi.begin (ssid, wachtwoord); dan beginnen we met de wifi-verbinding Serial.println (""); // deze regel geeft een extra spatie terwijl (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } / * in de while-lus testen we de verbindingsstatus waarin de ESP verbinding kan maken met de hotspot die de lus zal remmen * / Serial.println (""); Serial.print ("Verbonden met"); Serial.println (ssid); Serial.print ("IP-adres:"); Serial.println (WiFi.localIP ());
Vervolgens drukken we de naam en het IP-adres van de aangesloten SSID af naar het seriële monitorvenster.
server.on ("/", handleRoot); // de on-methode van het serverobject wordt aangeroepen om de root-functie server te behandelen. on ("/ inline", () {server.send (200, "text / plain", "dit werkt ook");}); // we hebben weer de on-methode aangeroepen voor de / inline voorbeeldserver.begin (); // vervolgens starten we de server met de beginmethode Serial.println ("HTTP-server gestart"); // en tenslotte printen we een statement in de seriële monitor. } // wat het einde markeert van de setup-functie void loop (void) {server.handleClient (); }
In de loop-functie hebben we de handleClient () -methoden aangeroepen om de esp correct te laten werken.
Toen dit eenmaal was gebeurd, kostte het ESP8285-bord enige tijd om verbinding te maken met de webserver en werkte het met succes zoals verwacht, wat het einde van dit project betekende.
De volledige werking van het bord is ook te vinden op de onderstaande video. Ik hoop dat je dit artikel leuk vond en er iets nieuws van hebt geleerd. Als u twijfelt, kunt u dit in de onderstaande opmerkingen stellen of onze forums gebruiken voor een gedetailleerde discussie.