DIY Værstasjon

- hjemmelaget værstasjon på 1-2-3 (og 4-5 og 6)


Introduksjon

Formålet med kurset er å dele kunnskap om hvordan man kan sette sammen mikrokontrolleren ESP8266 med både LED-skjerm og en servo, for så å hente data fra et API. Alle deltakere vil få utdelt et eget sett med mikrokontroller, kretskort, kabler, komponenter etc., og alle vil få muligheten til å prøve å lodde dette sammen på egenhånd.


Hardware

I hvert utviklersett finner du disse delene:

  • ESP8266 mikrokontroller
  • Værstasjon-plate i kryssfinér
  • MAX7219 7-segment display
  • Servo
  • USB-kabel
  • Dupont kabler (hvor mange?)


Kom i gang / Software

Ikke ha ESP8266 mikrokontrolleren tilkoblet under installasjon.

IKKE HOPP OVER NOEN STEG! Det er ikke valgfritt! (...)
  1. Følg installasjonen av ESP8266 her!
  2. I Arduino IDE, gå til Sketch --> Include Library --> Manage libraries og søk etter WiFiManager. Last ned og installer siste versjon.
  3. I Arduino IDE, gå til Sketch --> Include Library --> Manage libraries og søk etter ArduinoJSON. Last ned og installer 6.x versjonen.
  4. Installer modifisert MAX7219 bibliotek fra https://github.com/9khil/LedControl (eller installer fra Library manager og utfør AVR fix). Hvorfor modifisert? Hvilken AVR fix? Sjekk github repoet. Installeres ved å laste ned og lime inn i libraries-mappen lokalt på din maskin. (Mac OS: ~/Documents/Arduino/libraries/ og Windows: My Documents\Arduino\libraries\)
  5. Klon/last ned dette repoet.
  6. Begynn på oppgavene i mappen Excercises (hint og tips til oppgavene finner du nederst på denne siden)


Oppgaver

Etter du har gjennomført Kom i gang / Software stegene, åpner du første excercise i repoet du klonet/lastet ned. Oppgavene er fordelt i forskjellige mapper:

  • Lesson 01: Hello world
  • Lesson 02: Hello servo
  • Lesson 03: Hello display
  • Lesson 04: Hello WiFiManager
  • Lesson 05: Hello Weather API
  • Lesson 06: Kombinér alt du har lært

Oppgavene gjennomfører du ved å bruke nettet for å finne løsninger, se på hint til oppgavene lenger ned eller spørre en kursholdere. Om du står bom fast kan du også kikke i Answers-mappen. Du finner mye bra informasjon her:

Hint til oppgavene

  • Lesson 01

    Serial.begin(*hastighet på tilkoblingen til ESP8266*)

    Serial.println("tekst"); / Serial.print("tekst");

    delay(antall_millisekunder)

  • Lesson 02

    Servoen har tre ledninger som kobles slik:
    Brun: G
    rød: 5v
    oransje: servo signal, kobles til D3

    .attach(*servo Pin*)

    .write(*ønsket posisjon*)

  • Lesson 03

    øk number variabelen

    Resten av løsningen er en hack! Bedre måte kommer

    Cast number variabelen over til en String variabelen: stringNumber (String er egentlig fy)

    Kopier stringNumber til charArray med lengde 9 (.toCharArray(*target*, *størrelse*)

    Kall writeToSegmentDisplay() med charArray som argument

  • Lesson 04

    Sketch -> Include Library

    WiFiManager wifiManager;

    .autoConnect(*ssid*, *egendefinert passord*)

  • Lesson 05

    DynamicJsonDocument jsonBuffer(*størrelse*)

    deserializeJson(argument1, argument2);

    const String foo = root["bar"];

    For å se hvilke data du kan få ut kan du gå hit: http://weather.labben.org/api/yr/?location=Norge/Oslo/Oslo/Oslo/

  • Lesson 06

    Se tidligere hint :)

    Begynn i loop(), følg doRequest() og forstå hva som skjer. Løs oppgavene underveis.

Hjelp / feilsøking

Mac OS

Hvis mikrokontrollerne ikke dukker opp i Arduino IDE etter du har installert driver OG restartet maskinen, sjekk følgende:
  1. Gå til System Innstillinger/System Preferences
  2. Gå til Security and Privacy
  3. Under tabben General: sjekk om du har tillatt å installere software utenfor AppStore


Linux

Linux har i utgangspunktet driver innebygd, men det kan være flere ting som gjør at det ikke fungere. Prøv følgende:

  • Restart maskinen (ja, det funka for en på kurset (!))
  • Endre rettighetene til USB-devicen slik:

    1. sudo usermod -aG dialout *dittBrukernavn*
    2. sudo chmod 777 /dev/ttyUSB0


Kompileringsfeil i Windows (kan gjelde andre OS):

Feilen kom fra en annen kompilator for Simula som allerede lå inne i systemet. Når Arduino prøvde å installere greide den ikke skrive over den systemvariabelen som allerede lå der. Simula er verdens første objektorienterte programmerings språk og henger igjen via noen nostalgiske forelesere. Det eneste faget det brukes i er PYSE (pålitelighet ytelese og simulering) på NTNU.

How to fix: Cmd "echo %GCC_EXEC_PREFIX%"

Hvis den returnerer en path må pathen slettes.

Kontrollpanel -> System -> Avanserte systeminstillinger -> miljøvariabler (Enviroment variables)

Finn " GCC_EXEC_PREFIX " i bruker og/eller system listene og slett.

Restart pc.

Takk til Jonas T. Gedde-Dahl





Noe annet? Spørsmål? Lenker som ikke fungerer? Vil du ha denne workshoppen holdt hos deg? Ta kontakt med Nikhil André Luthra!