# Kiezen bord

Kies na het toevoegen van de nodige bibliotheken voor het LOLIN (WEMOS) D1 R2 & mini board.

Keuze WEMOS D1 R2 bord

# Knipperled

Plaats een led op GPIO16 en test onderstaande programma.

// Blink
void setup() {
  // initialize GPIO16 as an output.
  pinMode(16, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(16, HIGH); // turn the LED on (HIGH is the voltage level)
  delay(1000);            // wait for a second
  digitalWrite(16, LOW);  // turn the LED off by making the voltage LOW
  delay(1000);            // wait for a second
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# Opdrachten

  • Laat de ingebouwde LED op het bord knipperen. De ingebouwde LED op het bord is verbonden met GPIO14.
  • Laat een LED knipperen op een andere I/O pin.

# Knipperled met alternatieve pinnummering

In bovenstaande voorbeeld moet de gebruikte pinnummering steeds vergeleken worden met het overzicht. De gebruikte pinnummers zoals pin 16 in bovenstaande voorbeeld worden niet weergegeven op het WEMOS D1R2 bord.

De I/O pinnummers weergegeven op het WEMOS D1R2 bord kunnen eveneens gebruikt worden. Zie onderstaande voorbeeld programma waarbij een led verbonden is met pin D0.

// Blink
void setup() {
  // initialize GPIO16 as an output.
  pinMode(D0, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(D0, HIGH); // turn the LED on (HIGH is the voltage level)
  delay(1000);            // wait for a second
  digitalWrite(D0, LOW);  // turn the LED off by making the voltage LOW
  delay(1000);            // wait for a second
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# Weergave tekst in serial monitor

In volgende programma wordt een tekst weergegeven in de serial monitor. Let op de bit snelheid.

void setup() {
   Serial.begin(115200);
 }
 
void loop() {
  delay(1000);
  Serial.println("hello from ESP8266");
 }
1
2
3
4
5
6
7
8

# Weergave MAC-adres

Het MAC-adres is het fysisch adres van een toestel in het netwerk. (zowel bedraad als draadloos)

#include <ESP8266WiFi.h> //ESP8266Wifi library
 
void setup(){
   Serial.begin(115200); // Communicatie snelheid UART
}
 
void loop(){
   Serial.print("MAC: ");
   Serial.println(WiFi.macAddress()); //Weergave MAC adres via methode macAdress()
   delay(1000);
}

1
2
3
4
5
6
7
8
9
10
11
12

Via volgende website kan nagezien worden van welke fabrikant een MAC-adres afkomstig is: Weergave MAC-adres (opens new window)

# Verbinden met Wifi-netwerk

In volgende programma wordt de ESP8266 verbonden met het access point in het Wifi-netwerk.

Opstelling

De voorbeeldcode:

#include <ESP8266WiFi.h>        // Include the Wi-Fi library

const char* ssid     = "SSID";         // The SSID (name) of the Wi-Fi network you want to connect to
const char* password = "PASSWORD";     // The password of the Wi-Fi network

void setup() {
  Serial.begin(115200);         // Start the Serial communication to send messages to the computer
  delay(10);
  Serial.println('\n');
  
  WiFi.begin(ssid, password);             // Connect to the network
  Serial.print("Connecting to ");
  Serial.print(ssid); Serial.println(" ...");

  int i = 0;
  while (WiFi.status() != WL_CONNECTED) { // Wait for the Wi-Fi to connect
    delay(1000);
    Serial.print(++i); Serial.print(' ');
  }

  Serial.println('\n');
  Serial.println("Connection established!");  
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());         // Send the IP address of the ESP8266 to the computer
}

void loop() { }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# Status Wifi verbinding

Het is mogelijk de status van de wifi verbinding na te zien. Voeg hiervoor volgende code toe in de loop functie van voorgaande programma.

  Serial.printf("\nConnection status: %d\n", WiFi.status());
  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
  delay(1000);
1
2
3
4

Hierbij komt is:

  • 3 verbonden
  • 6 niet verbonden.

# Signaalsterkte

De sterkte van het Wifi signaal (RSSI Received Signal Strength Indication) kan weergegeven worden met volgende code:

Serial.printf("RSSI: %d dBm\n", WiFi.RSSI());
1

# Weergave tijd

De tijd kan opgehaald worden van een NTP Server. (Network Time Protocol) De communicatie verloopt normaal over poort 123 met het UDP protocol.

Hiervoor moet eerst de ntpclient bibliotheek toegevoegd worden van Fabrice Weinberg.

De voorbeeldcode:

#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

const char *ssid     = "YOUR_SSID";
const char *password = "YOUR_PASS";

const long utcOffsetInSeconds = 3600;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);

void setup() {
  Serial.begin(115200);

  WiFi.begin(ssid, password);

  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }
  timeClient.begin();
}

void loop() {
  timeClient.update();
  Serial.print(daysOfTheWeek[timeClient.getDay()]);
  Serial.print(", ");
  Serial.print(timeClient.getHours());
  Serial.print(":");
  Serial.print(timeClient.getMinutes());
  Serial.print(":");
  Serial.println(timeClient.getSeconds());
  delay(1000);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38