WeMOS

Fra Kommunikation-IT Holstebro HTX
(Omdirigeret fra Kategori:WeMOS)
Skift til: navigering, søgning
WeMOS processor Board

WeMOS[1] er en serie af Arduino produkter baseret på ESP8266 processor der indeholder et WiFi modul.

Der er her ved siden af listet en række eksempler på anvendelser af WeMOS til at løse mindre ting, som hver især kan være sin egen lille Internet of Things, og der er lavet små eksempler på hvordan man kan kommer på WiFi ved hjælp af et lokalt netværk, eller ved at man har en fast IP-adresse på netværket.

Installation

Man skal have Arduino Udviklingsmiljø installeret til at skrive, oversætte og uploade koden med, og for at den kan arbejde med WeMOS-ESP8266 processoren, så skal de have installeret den del, der kan forstå det.

Det er dog vigtigt at man har installeret den rigtige version af Arduinos IDE, da det ellers ikke er sikkert at den kender ESP8266 processorerne. For Windows er det fra version 1.8.5 at den kender det, mens den på skrivende tidspunkt ikke kender det til MAC, så man derfor er nødt til at lave en manuel installation.

En anden betingelse er at man har installeret den driver der kan håndtere den serielle port der sidder i USB-forbindelsen. Til de WeMOS D1 mini Pro vi har på Holstebro HTX er det enten CP2104 eller CP2102 drivere[2] der skal installeres - se link i referencer.

Man skal vælge Værktøjer - Board: - Boards Manager... og så finde ESP8266 - evt ved at søge. Ved at klikke i den relevante processer kan man komme til at klikke install som vist her:

Installation af WeMOS
Installation af ESP8266 compiler til at oversætte til WeMOS

Dette installerer både oversætteren og en del biblioteker man kan anvende til WiFi kommunikation.

Hvis man ikke kan fremsøge en installation der dækker WeMOS, så kan man prøve at reinstallere Arduino IDE'et med den nyeste version, eller man kan installere den manuelt.

Manuel installation

For installere manuelt skal man have fundet en version af den som fx. Github ESP8266 Arduino installationen der kan hentes som en ZIP-fil.

ZIP-filen indeholder mappen Arduino-Master, der skal kopieres ind under Dokumenter - Arduino - Hardware, så det kommer til at have følgende struktur:
Strukturen over hvordan Arduino-master skal placeres
Strukturen over hvordan Arduino-master skal placeres

Efter mappen er lagt ind skal Arduinos IDE genstartes.

Mac-installation

Første step i installationen på Mac, er at downloade den nyeste version af Arduinos IDE. Link til Arduinos officielle side.

Det næste step er at gøre IDE'en kompatibel med WeMos-boards. Dette gøres på følgende måde:

Åbn preferences eller indstillinger for Arduino IDE'en. Klik på "Arduino" oppe i venstre hjørne af skærmen, når du har Arduino IDE'en åben, og klik videre på preferences/indstillinger:

Step2.png

Herefter skal du tilføje et link, så IDE'en kan hente WeMos-board-informationerne online. Dette gøres i feltet "Additional Boards Manager URLs". Her skal følgende link indsættes: "http://arduino.esp8266.com/stable/package_esp8266com_index.json".

Step3.png

Genstart nu IDE'en.

Du kan nu installere understøttelsen af samtlige WeMos-boards. For at gøre det, klik på stien Tools -> Board: "xxx" -> Boards Manager.

Step4.png

Du skal nu finde ESP8266-pakken. Denne findes hurtigt ved at indtaste "esp" i søgefeltet.

Step5.png

Vælg nu den nyeste version og klik install.

Step6.png

Din IDE genkender nu alle WeMos-boards, men dine USB-porte kan stadig ikke genkende WeMos. Dette giver et problem, da der så ikke kan uploades til boardet. Der skal derfor downloades en driver, der hedder CP210x USB to UART Bridge VCP Driver. Denne kan findes til Mac på Silabs hjemmeside. Dog kan en fungerende driver også hentes fra denne ZIP-fil, i tilfælde af at hjemmesiden ikke virker når du læser dette.

Sidste step i processen er at downloade Arduino-biblioteket "ESP8266wifi", der gør det nemt at arbejde med WeMos'ens WiFi-funktioner. GitHub-link til sidste version af biblioteket.

Genstart nu din Arduino IDE og muligvis din computer.

Din Mac er nu klar til at arbejde med WeMos. :)

Forsyning

Når man arbejder på udviklingen, så forsynes WeMOS fra USB'ens +5V, men selve processoren arbejder på 3,3V, og kan ikke tåle mere. De 3,3V laves af en regulator der sidder på WeMOSen.

Hvis man vil arbejde uden en computer tilsluttet, så skal WeMOSen selvfølgelig stadig have forsyning, og her kan man vælge at forsyne med 5V ind på 5V benet, eller man kan forsyne direkte med 3,3V på det ben. Regulatoren kan ikke tåle over 6,5V.

Diagram

WeMOS findes i mange forskellige opkoblinger, men den der er taget udgangspunkt i denne dokumentation er WeMOS D1 mini Pro, med følgende diagram som PDF.

Diagram over en WeMOS D1 mini Pro
Diagram over en WeMOS D1 mini Pro

Fordeling af ben på WeMOS'en

Der er en række begrænsninger på hvad benene kan. Det er svært at finde solide oplysninger fra producenten af både WeMOS boardet såvel som ESP8266 processoren, så derfor må man forlade sig på hvilke erfaringer andre har gjort sig[3]

Her er et kort overblik over benforbindelserne på en WeMOS, der også passer på en WeMOS D1 mini Pro:
WeMOS processorbord layout med benforbindelser
WeMOS processorbord layout med benforbindelser

Her er en oversigt over de forskellige ben, med kommentarer til forbehold og betingelser for de enkelte ben.

WeMOS ben Ben nummer Særlige forhold
D0 16

Kan ikke håndtere interrupts, PWM, I²C, one-wire
Hvis man vil anvende deepSleep-funktionen, så kobles dette ben til Reset - det gør at WeMOS'en bliver resat efter deepSleep-tiden er udløbet.
Når man vågner fra deepSleep ser det ud til at ram-indholdet er slettet, så hvis man skal huske noget fra gang til gang, så skal man lagre det i EEPROM eller i en batteri-backup'et RAM som fx i et RTC-modul.

D1 5

Default I²C SCL, funktionen kan flyttes til andre ben, men det er smart at reservere D1 og D2 til I²C funktion. Hvis dette ikke er nødvendigt, så kan benet anvendes til PWM eller interrupt.

D2 4

Default I²C SDA, funktionen kan flyttes til andre ben, men det er smart at reservere D1 og D2 til I²C funktion. Hvis dette ikke er nødvendigt, så kan benet anvendes til PWM eller interrupt.

D3 0

WeMOS kan etableres med intern 10k pull-up, Anvendeligt til I²C.

Anvendes i booting/flashing, Benet må ikke forbindes til GND/Vcc. Internt er der pull-down. Det er bedst at anvende benet som output - anvendes det som input, så man passe på at der trækkes ned gennem en modstand, for at WeMOS kan programmeres.

Efter reset/programmering, så kan benet bruges som både input og output. Under reset skal det helst svæve (være koblet til en indgang).

D4 2

Tilsluttet den indbyggede LED

WeMOS kan etableres med intern 10k pull-up, Anvendeligt til I²C.

Anvendes i booting/flashing, Benet må ikke forbindes til GND/Vcc. Internt er der pull-up. Det er bedst at anvende benet som output - anvendes det som input, så man passe på at der trækkes ned gennem en modstand, for at WeMOS kan programmeres. Trækkes benet lav ved reset, så starter WeMOS'en ikke.

Efter reset/programmering, så kan benet bruges som både input og output. Under reset skal det helst svæve (være koblet til en indgang).

D5 14

Hardware SPI clock.

Anvendes fint til andre ting - PWM og interrupt eller software I²C.

D6 12

Hardware SPI MISO.

Anvendes fint til andre ting - PWM og interrupt eller software I²C.

D7 13

Hardware SPI MOSI.

Anvendes fint til andre ting - PWM og interrupt eller software I²C.

D8 15

Wemos har 10k pull-down.

Er ikke anvendeligt til software I²C

Anvendes i booting/flashing, Benet må ikke forbindes til GND/Vcc. Internt er der pull-up. Det er bedst at anvende benet som output - anvendes det som input, så man passe på at der trækkes ned gennem en modstand, for at WeMOS kan programmeres.

Efter reset/programmering, så kan benet bruges som både input og output. Under reset skal det helst svæve (være koblet til en indgang).

A0 A0

ADC input, 0-1 V på selve ESP8266kredsen.

0-3.3 V for WeMOS D1 mini og WeMOS D1 mini Pro (der har en spændingsdeler med 220k/100k modstande)

TX 1

Serial TX. Anvendes til Serial Monitor

Kan også anvendes som digitalt IO, hvis man ikke har brug for den serielle port eller Serial Monitor til debugging.

RX 3

Serial RX. Anvendes til Serial Monitor

Kan også anvendes som digitalt IO, hvis man ikke har brug for den serielle port eller Serial Monitor til debugging.

Digitale ind- og ud-gange

Der er 9 digitale ben på WeMOS, de kan benævnes D0-D8 - man kan også anvende tal det er valgfrit, men der er ikke en logisk sammenhæng. Som på Arduino kan man bruge følgende funktioner:

  • pinMode(pin, mode);
  • digitalWrite(pin, HIGN/LOW);
  • var = digitalRead(pin);

Der er ikke den samme begrænsning som på Arduinoen at man skal uden om 0 og 1 for ikke at blokere RX og TX på den serielleport - RX og TX ligger på helt andre ben. Til gengælde er der mange andre forbehold på benene - se tabellen med benfordeling ovenfor.

Der er dog et enkelt ben man skal håndtere lidt specielt - D4 - det skal helst fungere som output. Årsagen er at det indgår i programmeringen af ESP8266'eren, og derfor må man ikke sætte en udgang fra en IC ind på det ben, da det så vil blokere programmerings-processen. Hvis det er nødvendigt at anvende D4 som input, så er det vigtigt at det står med en pull-up for at programmeringen kan fungere.

Til gengæld er der andre ben man skal tage højde for, nemlig I2C benene SCK og SDA, der ligger på D1 og D2[4], og man skal ligeledes tage højde for SPI-bussens ben SCLK, MISO og MOSI, der ligger på D5, D6 og D7[4]. Der står også i kilden af SS ligger på D8, men den kan normalt flyttes valgfrit til SPI-enhederne.

Analog indgang

Der er kun en Analog indgang på WeMOS'en, der hedder A0. Den kan som på Arduinoen læses med analogRead().

Den analoge indgang giver et tal fra 1 - 1024 på en spænding fra 0 - 3,3V. Der er placeret en spændingsdeler med 220k og 100k på den analoge indgang for at tilpasse spændingsområdet - selve inputtet på ESP8266 har området 0 - 1V. Det gør også at indgangen kan tåle højere spændinger, men det giver ikke en udvidelse af området ud over 1024.

BEMÆRK - AD-konverteren inde i ESP8266 er en 10 bit AD, men af en eller anden obscur grund, så bliver der lagt en til tallet, således at maks-tallet 1024 er oppe i 11 bit. Det kan give problemer hvis man arbejder med datatyper der udnytter alle bit - fx hvis man skærer to bit af for at det kan være i en byte, så kan en byte rumme fra 0-255, og hvis man bare skærer to bit af og gemmer - der vil resultere i at værdien 1024 bliver til 0 i byten.
Løsning - for at få AD'en til at opføre sig som en normal 10 bit AD, så skal man lige trække en fra.

Analogt output (PWM)

Alle digitale ben på WeMOS'en kan fungere som PWM[5]. WeMOS'en er dog lidt anderledes end Arduino, da PWM-området er 10 bit.

Der skrives til udgangen med analogWrite(pin, value);

pin er den ben man ønsker at få den analoge værdi ud på, fx D2.

value er en værdi mellem 0 og 1023 (10 bits opløsning).

Seriel Port

WeMOS har en seriel port, der kan tilgås på benene RX og TX med almindelige digitale 3,3V asynkrone serielle signaler.

Porten kan også anvendes til Seriel Monitor via USB-seriel, forudsat man har den rigtige driver[2] installeret.

Reset

På en WeMOS er der et reset-ben, ligesom på en Arduino UNO, hvor man kan resette processoren (den starter forfra i koden). Signalet skal være lavt for at resette.

Der er også en knap man kan trykke på, så den resetter.

Referencer

  1. WeMOS D1 mini Pro
  2. 2,0 2,1 silabs.com CP210x driver side
  3. ESP Cookbook med henvisninger til WeMOS boards
  4. 4,0 4,1 WeMOS Forum omkring I2C Connections
  5. circuits4you.com PWM Example