Web server
Što ovaj primjer prikazuje
Inkplate postaje mali samostalni web poslužitelj. Pokreće vlastitu Wi-Fi mrežu (pristupnu točku) pod nazivom Inkplate 7SPECTRA sa zaporkom Soldered te na zaslonu prikazuje kako se na nju spojiti. Pridružite se toj mreži putem mobitela ili računala, otvorite adresu prikazanu na zaslonu, upišite neki tekst u okvir na web stranici i pritisnite tipku. Tekst se prikazuje na zaslonu.
Naziv mreže i zaporku možete promijeniti izmjenom definicija ssid i pass. Skica ima drugu datoteku, htmlCode.h, koja sadrži web stranicu kao tekstni niz naziva s; držite je u mapi skice pored datoteke .ino.
Ovaj primjer također koristi WiFi, WiFiClient i WebServer (arduino-esp32), koji nisu dio Inkplate biblioteke i dolaze s paketom pločice za ESP32.
Primjer koda
#include "Inkplate.h" //Include Inkplate library to the sketch
#include "htmlCode.h" //Include .h file where we stored out html code of our web page
#include <WebServer.h> //Include ESP32 library for Web server
#include <WiFi.h> //Include ESP32 WiFi library
#include <WiFiClient.h> //Include ESP32 WiFi library for AP
#include <uri/UriBraces.h>
#define ssid "Inkplate 7SPECTRA"
#define pass "Soldered"
Inkplate inkplate; // Create an object on Inkplate library and also set library into 1 Bit mode (BW)
WebServer server(80); // Create Web server on port 80 (HTTP port number)
IPAddress serverIP;
String txt;
void setup()
{
inkplate.begin(); // Init Inkplate library (you should call this function ONLY ONCE)
inkplate.clearDisplay(); // Clear frame buffer of display
inkplate.display(); // Put clear image on display
inkplate.setTextSize(3); // Scale text to be three times bigger than original
inkplate.setTextColor(INKPLATE_BLACK); // Set text color to black and background color to white
inkplate.setTextWrap(true); // If text does not fit on screen, send it to new line
WiFi.begin(); // Init. WiFi library
WiFi.mode(WIFI_AP); // Set WiFi to Access Point mode
WiFi.softAP(ssid, pass); // Set SSID (WiFi name) and password for Access point
serverIP = WiFi.softAPIP(); // Get the server IP address
server.on("/", handleRoot); // If you open homepage, go to handle root function
server.on(UriBraces("/string/{}"),
handleString); // If you send some text to Inkplate, go to handleString function. Note that {} brackets at
// the end of address. That means that web address has some arguments (our text!).
server.begin(); // Start the web server
updatePaper();
}
void loop()
{
server.handleClient(); // You have to constantly read if there is any new client connected to web server
}
void updateHTML()
{ // This function will send response to client and send HTML code of our web page
server.send(200, "text/html", s);
}
void handleRoot()
{ // This function will send response to client if client open a root (homepage) of our web page
updateHTML();
}
void handleString()
{ // This function will send response to client, send HTML code of web page, get the text from argument sent in web page
// address and refresh screen with new text
txt = server.arg(0);
updateHTML();
updatePaper();
}
void updatePaper()
{ // This function updates screen with new data (text)
inkplate.clearDisplay(); // Clear everything from epaper frame buffer
inkplate.setCursor(20, 40); // Print out instruction on how to connect to Inkplate WiFi and how to open a web page
inkplate.print("Connect to ");
inkplate.print(ssid);
inkplate.println(" WiFi with pass: ");
inkplate.setCursor(240, 100);
inkplate.println(pass);
inkplate.setCursor(100, 150);
inkplate.print("Open Your web browser and open");
inkplate.setCursor(240, 210);
inkplate.print("http://");
inkplate.print(serverIP);
inkplate.println('/');
inkplate.println();
inkplate.fillRect(10, 240, 780, 4, BLACK);
inkplate.println("User text:"); // Print out what user typed in web page
inkplate.print(txt);
inkplate.display(); // Send everything to screen (refresh the screen)
}
Korištene funkcije
Inkplate()returns NoneStvara Inkplate objekt. Inkplate 7SPECTRA ima samo jedan šesterobojni način rada, pa konstruktor ne prima argument načina rada (komentar o 1-bitnom načinu potječe od drugih Inkplate pločica).
ReturnsKonstruktor; nema povratne vrijednosti.
inkplate.begin()returns voidInicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite je jednom u setup().
ReturnsNišta.
inkplate.clearDisplay()returns voidIspunjava međuspremnik slike bijelom bojom. Ne mijenja prikaz na panelu.
ReturnsNišta.
inkplate.display(bool _leaveOn = 0)returns voidŠalje cijeli međuspremnik slike na panel i osvježava ga.
ReturnsNišta.
inkplate.setTextSize(uint8_t s)returns voidPostavlja povećanje teksta, ovdje 3.
ReturnsNišta.
inkplate.setTextColor(uint16_t c)returns voidPostavlja boju teksta, ovdje INKPLATE_BLACK.
ReturnsNišta.
inkplate.setTextWrap(bool w)returns voidOdređuje nastavlja li se tekst koji ne stane u redak u sljedećem retku. Skica uključuje prelamanje teksta.
ReturnsNišta.
inkplate.setCursor(int16_t x, int16_t y)returns voidPostavlja mjesto na kojem počinje sljedeći ispisani tekst. Skica ga prije svakog retka uputa pomiče na fiksni položaj.
ReturnsNišta.
inkplate.print(value)returns size_tIspisuje tekst, znak ili IP adresu u međuspremnik slike, poput Serial.print().
ReturnsBroj ispisanih bajtova.
inkplate.println(value)returns size_tKao print(), a zatim pomiče kursor u sljedeći redak. Pozvana bez argumenta, samo prelazi u sljedeći redak.
ReturnsBroj ispisanih bajtova.
inkplate.fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color)returns voidCrta ispunjeni pravokutnik s gornjim lijevim kutom u točki (x, y). Skica iznad korisnikova teksta crta crnu traku široku 780 piksela i visoku 4 piksela.
ReturnsNišta.
IPAddress()returns NonePaket pločice za ESP32: tip koji sadrži IP adresu. Skica ga stvara kao `serverIP` i ispunjava adresom pristupne točke.
ReturnsKonstruktor; nema povratne vrijednosti.
WiFi.begin()returns wl_status_tPaket pločice za ESP32: inicijalizira Wi-Fi biblioteku. Pozvana bez argumenata, ne spaja se na mrežu.
ReturnsStatus veze.
WiFi.mode(wifi_mode_t mode)returns boolPaket pločice za ESP32: postavlja Wi-Fi način rada. Skica koristi WIFI_AP, način rada pristupne točke.
Returnstrue ako je način rada postavljen.
WiFi.softAP(ssid, pass)returns boolPaket pločice za ESP32: pokreće pristupnu točku s zadanim nazivom mreže i zaporkom.
Returnstrue ako je pristupna točka pokrenuta.
WiFi.softAPIP()returns IPAddressPaket pločice za ESP32: IP adresa pristupne točke. Skica je ispisuje na zaslonu kao adresu koju treba otvoriti u pregledniku.
ReturnsIP adresa pristupne točke.
WebServer(int port)returns NonePaket pločice za ESP32: objekt web poslužitelja. Skica ga stvara kao `server`, a on osluškuje na portu 80, HTTP portu.
ReturnsKonstruktor; nema povratne vrijednosti.
server.on(uri, handler)returns voidWebServer: postavlja funkciju koja odgovara na zahtjeve za određenu adresu. Skica šalje adresu početne stranice funkciji handleRoot(), a adresu /string/ iza koje slijedi upisani tekst funkciji handleString().
ReturnsNišta.
UriBraces(const char *uri)returns NoneWebServer (uri/UriBraces.h): obrazac adrese u kojem svaki par vitičastih zagrada odgovara jednom dijelu adrese, koji rukovatelj čita pomoću server.arg().
ReturnsKonstruktor; nema povratne vrijednosti.
server.begin()returns voidWebServer: pokreće web poslužitelj.
ReturnsNišta.
server.handleClient()returns voidWebServer: obrađuje zahtjev klijenta koji čeka. Skica ga stalno poziva u loop().
ReturnsNišta.
server.send(int code, const char *content_type, const String &content)returns voidWebServer: odgovara na zahtjev. Skica šalje status 200, tip text/html i tekst web stranice `s` iz htmlCode.h.
ReturnsNišta.
server.arg(int i)returns StringWebServer: vrijednost argumenta zahtjeva i. Skica čita argument 0, tekst upisan na web stranici, u txt.
ReturnsVrijednost argumenta.
Što očekivati
Pri pokretanju zaslon prikazuje Connect to Inkplate 7SPECTRA WiFi with pass: i zaporku Soldered, zatim redak Open Your web browser and open s adresom pristupne točke kao http:// i adresom, a potom crnu traku i User text: bez ikakvog teksta ispod. Nakon što mobitel ili računalo spojite na mrežu i otvorite tu adresu, preglednik prikazuje tekstni okvir s tekstom Write some text! i tipku Send to display!. Kada pritisnete tipku, zaslon se osvježi i vaš se tekst prikazuje ispod User text:.
🔗Otvorite cjelovit primjer
examples/Inkplate7SPECTRA/Advanced/WEB_WiFi/Inkplate7SPECTRA_HTTP_Web_Server