Innehållsförteckning:

En billigare ESP8266 WiFi -skärm för Arduino och andra mikro: 6 steg (med bilder)
En billigare ESP8266 WiFi -skärm för Arduino och andra mikro: 6 steg (med bilder)

Video: En billigare ESP8266 WiFi -skärm för Arduino och andra mikro: 6 steg (med bilder)

Video: En billigare ESP8266 WiFi -skärm för Arduino och andra mikro: 6 steg (med bilder)
Video: ESP8266 Wireless Nextion HMI || Outseal Arduino PLC 2024, Juli
Anonim
En billigare ESP8266 WiFi -skärm för Arduino och andra mikro
En billigare ESP8266 WiFi -skärm för Arduino och andra mikro
En billigare ESP8266 WiFi -skärm för Arduino och andra mikro
En billigare ESP8266 WiFi -skärm för Arduino och andra mikro

Uppdatering: 29 oktober 2020

Testad med ESP8266 -kortbibliotek V2.7.4 - fungerar

Uppdatering: 23 september 2016

Använd inte Arduino ESP -kortbiblioteket V2.3.0 för detta projekt. V2.2.0 fungerar

Uppdatering: 19 maj 2016

Rev 14 i detta projekt reviderar bibliotek och kod för att fungera med ESP8266.com IDE plug-in V2.2

Uppdatering: 17 december 2105

Rev 11 i detta projekt rensar upp andra försök till anslutningar om det redan är anslutet. Använder också tidsgränsen som ställts in av webbkonfigurationen. Rev 10 ignorerade inställningen för timeout.

Uppdatering: 11 november 2015

Detta är rev 10 av detta projekt. Rev 10 använder ett icke-blockerande WiFi-bibliotek, pfodESP8266WiFi, som sjunker för högre genomsläpp, särskilt för Windows-klienter. Det möjliggör också webbsidekonfiguration av den seriella överföringshastigheten.

Uppdatering: 23 oktober 2015

Detta är rev 8 i detta projekt. Rev 8 har förbättrat ESP8266 -koden som är mer tillförlitlig. OBS: Varje paket som skickas stoppar denna kod tills mottagaren (klienten) bekräftar paketet. Detta kan ta mellan 10 och 200 ms. Under den tiden hanteras inte inkommande seriedata från UART. Den inkommande seriella bufferten kan buffra 256 byte. Vid 9600 baud tar det cirka 270 ms att fylla bufferten så så länge du håller den seriella överföringshastigheten till 9600 eller mindre ska du inte tappa utgående data medan ESP8266 skickar det tidigare paketet. Detta ger dig en bra WiFi -anslutning. Om WiFi-anslutningen är dålig kan ett paket gå förlorat och måste sändas om av ESP826, då kan den seriella inkommande bufferten fyllas om du försöker skicka mycket data och några av dina data går förlorade.

Uppdatering: 20 september 2015

Detta är rev 3 i detta projekt. Rev 3 lägger till en inställning för timeout för anslutning till webbsidans konfiguration. Om det inte går att skicka eller ta emot data under den tiden stänger WiFi Shield anslutningen och väntar på en ny. Detta säkerställer att WiFi Shield återhämtar sig från "halvstängda" anslutningar som händer om klienten bara försvinner på grund av dålig wifi -anslutning, strömförlust vid routern eller tvångsstängning av klienten. Se Detektering av halvöppna (droppade) TCP/IP-uttag för mer information.

Den här anslutningstiden är som standard 15 sekunder. men kan ändras efter behov. Att ställa in det till 0 betyder att det aldrig tar timeout. När du använder pfodDesigner, ställ in en menyuppdatering som är mindre än anslutningstiden.

Introduktion

Detta är Rev 11 i ESP8266-01 WiFi Shield och är ett alternativ till billiga/enkla Wifi-skölden för Arduino och andra mikro. Om du bara gör ett Wifi Shield så är billigt/enkelt Wifi Shield för Arduino och andra mikroprojekt att använda eftersom det är det enklaste att koppla upp. Men om du redan har en ESP8266-01-modul kan du använda dessa instruktioner för att skapa en WiFi-sköld med den.

Om du har en av de andra ESP8266 bara modulerna, förutsatt att modulen har GPIO0 och GPIO2 tillgängliga, kan du använda dessa instruktioner. Om modulen gör GPIO15 tillgänglig måste du ansluta den till GND via ett motstånd med ett värde mellan 3K3 och 10K

Rev 10 behöver ingen ytterligare I/O på Arduino -kortet, annat än TX/RX och 5V ström och GND. Rev 10 använder GPIO0 och GPIO2 som ConfigLink, enligt beskrivningen på denna sida, ESP8266-01 Pin Magic. Kodskisserna som används i Rev10 är nu exakt desamma som de som används i Cheap/Simple Wifi Shield för Arduino och andra mikro. Det ersätter också 5V till 3V strömförsörjning dotterkort med 3 diskreta komponenter och använder ett motståndsnätverk för de fem 3K3 motstånden. Den första versionen Rev 1 är här.

Dessa instruktioner finns också tillgängliga på www.pfod.com.au.

Funktioner

  • Använder den billiga och lättillgängliga ESP8266-01-modulen:- Andra ESP8266-moduler kan också användas
  • Enkel att använda:- Den 5V och 3.3V kompatibla skärmen fungerar som UART till WiFi-brygga. Den ställer in en server på den IP och port du konfigurerar och när den är ansluten skickar den bara data till och från den seriella anslutningen. Inga bibliotek behövs i anslutande mikro, bara en seriell (UART) anslutning, så den kan användas för alla mikroprocessorer som har en seriell port. Det kan också ändras för att konfigureras för att göra en klientanslutning (med valfri inloggning) till en fjärrserver.
  • Enkel att konfigurera:- Stänga av en länk och slå på skölden, sätter den i konfigurationsläge. I det här läget skapar det en säker åtkomstpunkt som du kan ansluta till via din mobil eller dator. Sedan öppnar https://10.1.1.1 en webbsida där du kan konfigurera ditt nätverks namn och lösenord och IP och portnummer som skölden ska lyssna på för anslutningar. Konfigurationswebbsidan använder HTML5 -validering för att kontrollera användarens inställningar.

Steg 1: Dellista

Denna ESP8266-01 WiFi Shield behöver följande delar eller liknande. Priserna som visas här är den 30 augusti 2015 och exklusive fraktkostnader:-

  • WiFi-modul ESP8266-01-~ US $ 2,50 online (ta chansen) ELLER för pålitlig produkt SparkFun eller Adafruit ESP8266-01-6,95 US $
  • Uno Protoshield - 1,88 US $ (eller ProtoShield Basic för Arduino från Jaycar 4,95 dollar)
  • 36-pins header Element14-US $ 0,95 (eller 4 rabatterade lödfria headers-10-pins direkt från SparkFun US $ 1,50 eller 40 Pin Header Terminal Strip från Jaycar 0,95 $)
  • LD1117V33 3.3V regulator Element14 - 0,67 US $
  • 1 rabatt på 1N5819 Schottky Diode Element14 - 0,16 US $ (eller Jaycar AU $ 0,80) (vilken Schottky Diode som helst gör)
  • BOURNS 4606X-101-332LF RESISTORNÄTVERK, 3K3-0,27 US $ (Dessa pull-up-motstånd kan vara valfritt i intervallet 3K3 till 10K) du kan också bara använda 5 x diskreta 3K3-motstånd istället som i Rev 1 t.ex. 3K3 -motstånd - Digikey - US $ 0,52 (eller 3K3ohm 1/2 Watt 1% metallfilmresistorer - Pk.8 från Jaycar 0,55 $)
  • 1 av 330R motstånd Element14 US $ 0,05 ELLER Sparkfun Resistor 330 Ohm 1/6 Watt PTH - 20 -pack US $ 0,95 (eller 330ohm 1/2 Watt 1% metallfilmresistorer - Pk.8 från Jaycar AU $ 0,55)

  • 1 av 0,1 uF kondensator Element14 - 0,21 US $ ELLER Sparkfun 0,25 dollar
  • 1 av 10uF kondensator Element14 - 0,11 US $ ELLER Sparkfun 0,45 dollar

Total kostnad ~ 6,80 $ + frakt (från augusti 2015) ELLER ~ 11,25 US $ med modulen Sparkfun eller Adafruit ESP8266-01

För att programmera skärmen med tryckknappskonfiguration och UART till WiFi -bryggprogram, behöver du också en USB till seriell kabel. Här används en SparkFuns USB till TTL seriekabel (9,95 US $) eftersom den har snyggt märkta ändar och har drivrutinsstöd för ett brett utbud av operativsystem, men du kan också använda Adafruits USB till TTL seriekabel - Debug / Console Cable för Raspberry Pi som är samma pris.

Inklusive programmeringskabeln kostar kostnaden för bara en WiFi -sköld 16,75 US $. En snabb sökning hittar Arduino WiFi Shields som kostar minst 30 US $ upp till över 70 USD. Så även inklusive engångskostnaden för programmeringskabeln är denna skärm billigare än de andra tillgängliga sköldarna, liksom mycket enklare att konfigurera och använda.

Steg 2: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Ovanstående schemat (ESP8266_01_WiFi_Shield_R2.pdf) visar arrangemanget av de delar som behövs för denna skärm. Det finns bara sex komponenter, förutom ESP8266-01-modulen.

Dioden 1N5819 skyddar ESP8266-01 RX-ingången från mikroprocessorns 5V-utgångar. 330ohm (R6) -motståndet ger skydd mot kortslutning av ESP8266-01 TX-utgången, om mikroprocessorns D1 av misstag blir utsignal. Någon typ av 3V3 -matning behövs. Arduino UNO: s 3V3 -stift är inte tillräckligt stark för att leverera ESP2866 -modulen. Här används en tre terminal 5V till 3.3V regulator LD1117V33. 10uF -kondensatorn behöver stabilisera LD1117V33 -regulatorn, så den är monterad så nära regulatorutgången som möjligt.

Här är topp- och bottenvyerna av den färdiga brädan.

Överst på brädet ser rent ut. Botten av brädet är lite av ett råttbo.

Se till att du noggrant kontrollerar ledningarna när du är klar, särskilt ledningarna till stiften på ESP8266-01 och LD1117V33 tre terminalregulator. Det är lätt att dra till fel stift när du vänder och trådar från botten. Regulatorn är monterad upp och ner för att hålla metallfliken, som är elektriskt ansluten till utgångsstiften, borta från tavlorna.

Steg 3: Programmering av WiFi Shield

Programmering av WiFi Shield
Programmering av WiFi Shield
Programmering av WiFi Shield
Programmering av WiFi Shield
Programmering av WiFi Shield
Programmering av WiFi Shield

WiFi Shield måste programmeras en gång, bara och aldrig mer, med webbsidans konfiguration och Serial to WiFi Bridge -koden.

För att programmera skölden, följ stegen på https://github.com/esp8266/arduino under Installera med styrelser. När du öppnar Boards Manager från Verktyg → Board -menyn och väljer Type Contributed och installera esp8266 -plattformen. Detta projekt sammanställdes med hjälp av ESP8266 version 1.6.4-673-g8cd3697. Senare versioner kan vara bättre men kan ha sina egna buggar eftersom plattformen utvecklas snabbt.

Stäng och öppna Arduino IDE igen och du kan nu välja “Generic ESP8266 Module” från Verktyg → Board-meny.

Du måste också installera den senaste versionen av pfodESP2866BufferedClient.zip Detta bibliotek fungerar med ESP8266.com IDE plug-in V2.2. Om du tidigare har installerat pfodESP2866WiFi -biblioteket, ta bort bibliotekskatalogen helt.

  1. Ladda ner denna pfodESP2866BufferedClient.zip -fil till din dator, flytta den till skrivbordet eller någon annan mapp som du enkelt hittar
  2. Använd sedan Arduino 1.6.5 IDE -menyalternativet Skiss → Importera bibliotek → Lägg till bibliotek för att installera det. (Om Arduino inte låter dig installera det eftersom biblioteket redan finns, hitta och ta bort den äldre mappen pfodESP8266BufferedClient och importera sedan den här)
  3. Stoppa och starta om Arduino IDE och under File-> Exempel ska du nu se pfodESP8266BufferedClient.

Ställa in lösenordet för konfigurationsåtkomstpunkten

När du har installerat pfodESP8266BufferedClient -biblioteket öppnar du Arduino IDE och kopierar denna skiss, ESP8266_WifiShield.ino, till IDE. Innan du programmerar skölden måste du ange ditt eget lösenord för konfigurationens åtkomstpunkt.

I konfigurationsläge konfigurerar WiFi Shield en säker åtkomstpunkt som kallas pfodWifiWebConfig med ett lösenord i en QR -kod som är ansluten till skölden. Denna säkra anslutning förhindrar att någon lyssnar på din anslutning medan du ställer in ditt riktiga nätverks ssid och lösenord. Du bör skapa ditt eget lösenord för dina sköldar. Ett SecretKeyGenerator -java -program finns tillgängligt här som genererar slumpmässiga 128bit -nycklar och skriver ut QR-p.webp

I båda fallen måste du uppdatera #define nära toppen av skissen med ditt eget lösenord.

// ================ start av pfodWifiWebConfig -inställningar ================

// uppdatera denna definiera med lösenordet från din QR -kod //https://www.forward.com.au/pfod/secureChallengeResponse/keyGenerator/index.html #define pfodWifiWebConfigPASSWORD "b0Ux9akSiwKkwCtcnjTnpWp"

Du kan också ställa in din egen konfigurations åtkomstpunkt, om du vill.

Programmering av skölden

För att programmera skölden, ta bort den från Arduino -kortet, korta ut FLASH_LINK (visas här med en blå kortslutningslänk i mitten av kortet) och anslut USB till seriekabel enligt bilden. Kontrollera bilden och din ledning.

RX -kabeln ansluts till D0 och TX -kabeln ansluts till D1. VCC (+5V) ansluts till 5V -stiftet och GND ansluts till GND -stiftet på skärmen. Korta ut FLASH_LINK enligt ovan. Bilden ovan är för SparkFun USB till seriell kabel. Om du använder Adafruit -kabeln har den inte terminalerna märkta utan är färgkodade, rött är ström, svart är slipat, grönt är TX och vitt är RX.

Kontrollera noggrant VCC- och GND -anslutningarna eftersom det är lätt att stänga av USB -strömförsörjningen om du är en stift av

Anslut sedan USB-kabeln till din dator för att starta ESP8266-01 i programmeringsläge. Välj dess COM -port i Verktyg → Port -menyn. Låt CPU -frekvensen, blixtstorleken och uppladdningshastigheten ligga på standardinställningarna

Välj sedan Arkiv → Ladda upp eller använd högerpil för att kompilera och ladda upp programmet. Två filer laddas upp. Om du får ett felmeddelande när du laddar upp, kontrollera att dina kabelanslutningar är anslutna till rätt stift och försök igen. När programmeringen är klar tar du bort kortlänken från FLASH_LINK.

Bifogar konfigurationens QR -kod

Du behöver ditt unika lösenord för konfigurationsåtkomstpunkt varje gång du behöver konfigurera skölden, så det är bekvämt att fästa den som en QR -kod på skölden (eller dess fodral). Här är Open Office -presentationsfilen som användes för att skriva ut QR -koden och anslutningsinformation för detta projekt. Ersätt QR -koden och lösenordstexten med din egen unika för att slutföra skölden.

Steg 4: Konfigurera WiFi Shield

Konfigurera WiFi Shield
Konfigurera WiFi Shield
Konfigurera WiFi Shield
Konfigurera WiFi Shield
Konfigurera WiFi Shield
Konfigurera WiFi Shield

Alla WiFi -sköldar måste konfigureras med nätverksnamnet och lösenordet för det lokala nätverket. Det måste också ges en IP och portnummer för att lyssna på anslutningar. Alla andra WiFi -sköldar har IP och port inte hårdkodade i skissen och antingen hårdkodar nätverksnamnet och lösenordet eller använder en proprietär metod med proprietära appar för att ansluta till det lokala nätverket. Detta är mycket restriktivt när du har flera enheter i en miljö som utvecklas. Denna WiFi Shield använder en metod för öppen källkod för att konfigurera både nätverksnamn och lösenord, och IP -adressen och portnummer.

ESP8266-01 har ett mycket begränsat antal tillgängliga utgångar, bara GPIO0 och GPIO2. I den här designen, efter uppstart, kontrollerar koden i ESP2866-01 om GPIO2 är jordad och om så är fallet sätter ESP8266-01 i konfigurationsläge. Jordningen av GPIO2-ingången måste dock fördröjas tills ESP8266-01 har slutförts. Om GPIO2 är jordad under uppstart startar inte ESP8266-01-modulen normalt. Denna fördröjning av jordning av GPIO2 uppnås genom att använda GPIO0 som mark. Efter att ESP8266-01 startat gör inställningskoden () GPIO0 till en utgång och ställer in den LÅG. Detta kommer då att jorda GPIO2 om CONFIG_LINK har kortats.

Den första versionen av detta projekt (Rev 1) använde en extra Arduino digital I/O för att göra denna jordning, vilket krävde extra kod i Arduino -skissen. Rev 2+, tar bort behovet av någon extra kod i Arduino -skissen, annat än en kort fördröjning högst upp i installationen () för att ignorera ESP8266: s felsökningsutmatning.

För att testa konfigurationen av ESP8266-01 WiFi Shield, koppla bara in den i ett Arduino-kort, korta ut CONFIG_LINK (blå kortslutningslänk till vänster på bilden) och anslut ström till Arduino-kortet.

I detta konfigurationsläge skapar ESP8266 -modulen en säker åtkomstpunkt med namnet pfodWifiWebConfig. Denna åtkomstpunkt visas på din mobil och på din dator. För att ansluta till denna åtkomstpunkt måste du ange det unika lösenordet för din sköld. Du kan skriva in lösenordet för hand men det är lättare och mer tillförlitligt att skanna QR -koden du tidigare bifogade till din sköld, med hjälp av en QR -skannerapp, till exempel QR Droid Private

Kopiera sedan och klistra in lösenordet i mobilens WiFi -inställningsskärm för att ansluta din mobil till konfigurationens åtkomstpunkt.

Öppna sedan en webbläsare och skriv in webbadressen https://10.1.1.1 Detta kommer att visa konfigurationswebbsidan.

WiFi -skölden fyller automatiskt i nätverks -SSID med det lokala nätverket med bästa signalstyrka. Vilket oftast är det du vill ha. Om inte bara skriv över den posten. Du måste ange ett nätverks -SSID och lösenord och portNr. Fältet IP -adress är valfritt. Om du lämnar det tomt använder WiFi Shield DHCP för att få sin IP -adress på ditt lokala nätverk. Det är ofta lättare att ange en specifik IP -adress så att du enkelt kan ansluta till denna skärm.

Rev 10 låter dig också konfigurera den seriella överföringshastigheten för denna skärm. Standard är 19200, men exemplen här använder 9600 så ändra överföringshastigheten till 9600

Om din webbläsare är HTML5 -kompatibel så validerar webbsidan inmatningen innan den skickas.

När du klickar på knappen Konfigurera, kommer WiFi -skölden att bearbeta resultaten och lagra dem i EEPROM och sedan visa en svarsida, som den ovan, och ber dig slå på strömmen för att ansluta till ditt nätverk.

Steg 5: Använda WiFi Shield

Använda WiFi Shield
Använda WiFi Shield
Använda WiFi Shield
Använda WiFi Shield
Använda WiFi Shield
Använda WiFi Shield

I ett komplett projekt skulle du montera en tillfällig tryckknapp på utsidan av projektets låda ansluten till CONFIG_LINK och instruera användaren att trycka på tryckknappen och sedan slå på enheten för att komma till konfigurationsläge. Koden som du laddade in i ESP8266-01 driver också ESP8266: s GPIO0-stift LÅGT när modulen är i konfigurationsläge, så att du kan ansluta ett 270ohm-motstånd och LED mellan 3.3V-skenan och GPIO0 och montera lysdioden på utsidan av lådan, för att ange för användaren att de är i konfigurationsläge.

Rev 10 låter dig också konfigurera den seriella överföringshastigheten för denna skärm. Standard är 19200, men exemplen här använder 9600 så ändra överföringshastigheten till 9600 på konfigurationssidan ovan

Som nämnts ovan behöver varje skiss du laddar i din Arduino eller annan mikroprocessor en kort fördröjning för att hoppa över felsökningsutmatningen från ESP8266-modulen. Förutom att för att ta emot och skicka data via WiFi, från din skiss, läser du bara och skriver till din seriella port (ansluten till D0, D1) vid 9600 baud. Så för att ignorera ESP8266: s felsökningsutmatning lägg till en kort fördröjning överst i setup () -metoden

void setup () {

fördröjning (1000); // vänta här en sekund låt ESP8266 slutföra uppstart // detta hoppar också över WiFi Shields felsökningsutmatning vid uppstart // innan den seriella anslutningen startas. …. annan installationskod här

Exemplet här använder en Arduino UNO men du kan använda vilken mikroprocessor som helst, antingen 5V eller 3.3V baserad som har en UART. Om du använder en 3,3V mikroprocessor måste du mata 5V till WiFi Shields strömförsörjning. Denna 5V kommer också att anslutas till skärmens 5V -stift, så du måste kontrollera att detta är acceptabelt för mikroen du ansluter skärmen till.

Som ett test av denna sköld användes pfodApp för att slå på och stänga av Unos LED via WiFi. Först användes pfodDesigner för att designa en enkel meny.

OBS: Den senaste versionen av pfodApp skickar keepAlive -meddelanden så att wifi -skölden inte tar slut

Sedan genererades koden för den seriella anslutningen vid 9600 baud och överförde filen till datorn med wifi -filöverföring.

Skissens setup () behövde inte ha fördröjningen (1000) tillagd eftersom pfod -parsern ignorerar några tecken utanför {}, men den inkluderades eftersom den rekommenderas för detta WiFi -kort.

Hela skissen, ESP8266_UnoLedControl.ino är här. Observera att det inte finns någon speciell WiFi -kod, skissen bara läser och skriver till serieutgången.

Ta bort WiFi Shield, välj Tools → Board → Uno i Arduino IDE och programmera denna skiss i UNO. OBS: du måste ta bort WiFi -skärmen för att programmera UNO eftersom USB är ansluten till UNO: s TX/RX -stift.

Anslut WiFi Shield igen, den kommer automatiskt att ansluta till ditt lokala nätverk och starta en server på porten du konfigurerade. I pfodApp kan du skapa en anslutning för den här enheten. Se pfodAppForAndroidGettingStarted.pdf för mer information.

Anslut sedan för att slå på och stänga av Unos LED från din Android -mobil via wifi.

Så är det klart !!

Steg 6: Tillägg för WiFi Shield och slutsatser

Lägger till klientsupport

Som presenterat här kan WiFi -skölden konfigureras för att köra som en server som lyssnar på en angiven IP och portnummer. Men pfodWifiConfig ger också stöd för lagring och hämtning av klientinställningar samt serverinställningar. Så genom att lägga till dessa fält på konfigurationswebbplatsen och spara/ladda klientvärdena kan du också använda detta WiFi Shield för att ansluta till en fjärrserver, med ett klientnamn och lösenord, och ladda upp data till det.

Lägger till extern konfigurationsknapp och LED

Som nämnts ovan skulle du i en riktig applikation montera en tillfällig tryckknapp på utsidan av projektets låda ansluten till CONFIG_LINK och instruera användaren att trycka på tryckknappen och sedan slå på enheten för att komma till konfigurationsläge. Koden som du laddade in i ESP8266-01 driver GPIO0-stiftet LÅGT när modulen är i konfigurationsläge, så att du kan ansluta ett 270ohm-motstånd och en LED mellan 3.3V-skenan och GPIO0 och montera lysdioden på utsidan av lådan, till ange för användaren att de är i konfigurationsläge.

Slutsats

Denna Rev 2 i ESP8266-01 WiFi Shield använder den billiga och lättillgängliga ESP8266-01-modulen. Andra ESP8266 -moduler kan också användas.

När den väl är programmerad behöver du aldrig programmera den igen för att ställa in eller ändra nätverksinställningarna. De kan alla ställas in via en webbsida på ett säkert tillfälligt WiFi -nätverk.

Det är enkelt att ansluta till alla mikro som har en UART och fungerar med både 5V eller 3.3V mikroprocessorer.

Inga bibliotek krävs för att ansluta till denna sköld. Den körs som en enkel serie till WiFi -bro.

Rekommenderad: