nodeMCU tutorials

Hardware die niet past in bovenstaande onderwerpen
Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

nodeMCU tutorials

Berichtdoor ercmrj » 28 Okt 2015, 20:51

Ik zag laatst hier op het forum de lovende woorden van Nico voor het nodeMCU bordje.

Inmiddels heb ik er een binnen en druk aan de slag gegaan met o.a. deze website: https://learn.adafruit.com/adafruit-huz ... rduino-ide

Werkt allemaal prima, maar nu zou ik via een button op een website een ledje op de nodeMCU willen bedienen, maar na veel zoekwerk kan ik nergens een voorbeeld vinden die met de arduino code werkt.

Kent iemand toevallig nog een goede website?

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: nodeMCU tutorials

Berichtdoor nicoverduin » 28 Okt 2015, 21:09

Als eens overwogen om gewoon de Arduino standaard wifi web servers sketches te proberen? Alleen dan met de ESP8266 libraries?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: nodeMCU tutorials

Berichtdoor ercmrj » 28 Okt 2015, 21:34

Wat bedoel je precies Nico, moet ik dan een gewoon wifi bordje gebruiken en niet de esp8266 of kun je die standaard wifi web servers sketches ook gebruiken voor de esp8266

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: nodeMCU tutorials

Berichtdoor nicoverduin » 28 Okt 2015, 22:55

Ik zou het gewoon proberen. Volgens mij is de aanroep gewoon hetzelfde. Dat is juist het mooie van die nieuwe bordjes. Cross platform ontwikkelen. In feite deden we dat al met de gewone arduinos en de tinies of de due's.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: nodeMCU tutorials

Berichtdoor ercmrj » 31 Okt 2015, 13:29

Ben eerst maar eens begonnen met een internetshield om wat meer te leren hoe internet werkt met IP adressen en heel dat gedoe, na lang zoeken deze site gevonden:
http://www.instructables.com/id/Arduino ... /?ALLSTEPS

De eerste 2 voorbeeldjes werkte wel, maar bij de derde om een ledje aan te krijgen op de arduino via een website lukt nog niet, enig idee wat ik verkeerd doe

Code: Alles selecteren
/*
  Web Server Demo
  thrown together by Randy Sarafan
 
 Allows you to turn on and off an LED by entering different urls.
 
 To turn it on:
 http://your-IP-address/$1
 
 To turn it off:
 http://your-IP-address/$2
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Connect an LED to pin D2 and put it in series with a 220 ohm resistor to ground
 
 Based almost entirely upon Web Server by Tom Igoe and David Mellis
 
 Edit history:
 created 18 Dec 2009
 by David A. Mellis
 modified 4 Sep 2010
 by Tom Igoe
 
 */

#include <SPI.h>
#include <Ethernet.h>

boolean incoming = 0;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xB2, 0x3D };
IPAddress ip(191,168,1,131); //<<< ENTER YOUR IP ADDRESS HERE!!!

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup()
{
  pinMode(13, OUTPUT);

  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
}

void loop()
{
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
       
        //reads URL string from $ to first blank space
        if(incoming && c == ' '){
          incoming = 0;
        }
        if(c == '$'){
          incoming = 1;
        }
       
        //Checks for the URL string $1 or $2
        if(incoming == 1){
          Serial.println(c);
         
          if(c == '1'){
            Serial.println("ON");
            digitalWrite(13, HIGH);
          }
          if(c == '2'){
            Serial.println("OFF");
            digitalWrite(13, LOW);
          }
       
        }

        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
  }
}


ps. Ik krijg die syntax highlight ook niet werkend

[code2=]if[/code2]

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: nodeMCU tutorials

Berichtdoor ercmrj » 31 Okt 2015, 16:38

Na nog wat zoeken toch nog een voor mij werkend voorbeeld gevonden en nog mooier voorbeeld ook.

Nu nog kijken of het lukt met de nodeMCU

Code: Alles selecteren
/*--------------------------------------------------------------
  Program:      eth_websrv_LED

  Description:  Arduino web server that serves up a web page
                allowing the user to control an LED
 
  Hardware:     - Arduino Uno and official Arduino Ethernet
                  shield. Should work with other Arduinos and
                  compatible Ethernet shields.
                - LED and resistor in series connected between
                  Arduino pin 2 and GND
               
  Software:     Developed using Arduino 1.0.3 software
                Should be compatible with Arduino 1.0 +
 
  References:   - WebServer example by David A. Mellis and
                  modified by Tom Igoe
                - Ethernet library documentation:
                  http://arduino.cc/en/Reference/Ethernet

  Date:         11 January 2013
 
  Author:       W.A. Smith, http://startingelectronics.org
--------------------------------------------------------------*/

#include <SPI.h>
#include <Ethernet.h>

// MAC address from Ethernet shield sticker under board
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xB2, 0x3D };
IPAddress ip(192,168,1,131); // IP address, may need to change depending on network
EthernetServer server(80);  // create a server at port 80

String HTTP_req;          // stores the HTTP request
boolean LED_status = 0;   // state of LED, off by default

void setup()
{
    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients
    Serial.begin(9600);       // for diagnostics
    pinMode(2, OUTPUT);       // LED on pin 2
}

void loop()
{
    EthernetClient client = server.available();  // try to get client

    if (client) {  // got client?
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            if (client.available()) {   // client data available to read
                char c = client.read(); // read 1 byte (character) from client
                HTTP_req += c;  // save the HTTP request 1 char at a time
                // last line of client request is blank and ends with \n
                // respond to client only after last line received
                if (c == '\n' && currentLineIsBlank) {
                    // send a standard http response header
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-Type: text/html");
                    client.println("Connection: close");
                    client.println();
                    // send web page
                    client.println("<!DOCTYPE html>");
                    client.println("<html>");
                    client.println("<head>");
                    client.println("<title>Arduino LED Control</title>");
                    client.println("</head>");
                    client.println("<body>");
                    client.println("<h1>LED</h1>");
                    client.println("<p>Click to switch LED on and off.</p>");
                    client.println("<form method=\"get\">");
                    ProcessCheckbox(client);
                    client.println("</form>");
                    client.println("</body>");
                    client.println("</html>");
                    Serial.print(HTTP_req);
                    HTTP_req = "";    // finished with request, empty string
                    break;
                }
                // every line of text received from the client ends with \r\n
                if (c == '\n') {
                    // last character on line of received text
                    // starting new line with next character read
                    currentLineIsBlank = true;
                }
                else if (c != '\r') {
                    // a text character was received from client
                    currentLineIsBlank = false;
                }
            } // end if (client.available())
        } // end while (client.connected())
        delay(1);      // give the web browser time to receive the data
        client.stop(); // close the connection
    } // end if (client)
}

// switch LED and send back HTML for LED checkbox
void ProcessCheckbox(EthernetClient cl)
{
    if (HTTP_req.indexOf("LED2=2") > -1) {  // see if checkbox was clicked
        // the checkbox was clicked, toggle the LED
        if (LED_status) {
            LED_status = 0;
        }
        else {
            LED_status = 1;
        }
    }
   
    if (LED_status) {    // switch LED on
        digitalWrite(2, HIGH);
        // checkbox is checked
        cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
        onclick=\"submit();\" checked>LED2");
    }
    else {              // switch LED off
        digitalWrite(2, LOW);
        // checkbox is unchecked
        cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
        onclick=\"submit();\">LED2");
    }
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: nodeMCU tutorials

Berichtdoor nicoverduin » 31 Okt 2015, 21:20

Je zal wel eea moeten veranderen als je de default LED wilt gebruiken op de Node. Die zit daar op D0 en niet op 2. Bij de nodeMCU moet je expliciet de digitale poort specificeren. Dus D0, D1 etc.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: nodeMCU tutorials

Berichtdoor ercmrj » 01 Nov 2015, 20:55

Ik had je voorbeeldje (blink) al gevonden Nico, en dat werkt wel, maar kom niet echt verder.

Bedoel je deze voorbeeldjes: https://www.arduino.cc/en/Tutorial/LibraryExamples

En moet ik dan #include <WiFi101.h> vervangen? en waarmee dan, want als ik het vervang door #include <ESP8266WiFi.h> krijg ik een hoop foutmeldingen

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: nodeMCU tutorials

Berichtdoor nicoverduin » 01 Nov 2015, 21:09

Je had toch een voorbeeld gepost?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: nodeMCU tutorials

Berichtdoor ercmrj » 02 Nov 2015, 08:55

Sorry Nico, maar ik begrijp er niets meer van. Hier zeg je:

Als eens overwogen om gewoon de Arduino standaard wifi web servers sketches te proberen? Alleen dan met de ESP8266 libraries?


Zijn dit dan de standaard wifi web servers: https://www.arduino.cc/en/Tutorial/LibraryExamples onder het hoofdstuk wifi shield 101 library

In het voorbeeld dat ik gepost heb staat #include <Ethernet.h> moet ik die dan vervangen door #include <ESP8266WiFi.h>???

Volgende

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten