Mapbox map
Was dieses Beispiel zeigt
Stellen Sie eine Verbindung zum WLAN her, laden Sie über den Mapbox Static Images Service ein statisches Kartenbild für ein von Ihnen gewähltes Koordinatenrechteck herunter, zeichnen Sie es auf dem Bildschirm und wechseln Sie für 5 Minuten in den Deep Sleep. Nach dem Aufwachen führt das Board die Skizze erneut aus und aktualisiert die Karte.
Bevor Sie hochladen:
- Schreiben Sie Ihren Netzwerknamen und Ihr Passwort zwischen die Anführungszeichen von
ssidundpass. - Besorgen Sie sich einen API-Schlüssel auf mapbox.com und schreiben Sie ihn zwischen die Anführungszeichen von
API_KEY. - Setzen Sie
LAT1,LON1,LAT2undLON2auf die Ecken des Bereichs, den Sie zeichnen möchten. Der Kommentar der Skizze empfiehlt bboxfinder.com, um Koordinaten zu finden.
Dieses Beispiel verwendet außerdem die Deep-Sleep-Funktionen des ESP32 (arduino-esp32), die nicht Teil der Inkplate-Bibliothek sind und mit dem ESP32-Board-Paket mitgeliefert werden.
Beispielcode
#include "Inkplate.h"
#define ssid "" // Name of the WiFi network (SSID) that you want to connect Inkplate to
#define pass "" // Password of that WiFi network
// Fill in these using api key from https://www.mapbox.com/ and coordinates you want to draw
// http://bboxfinder.com/ might help you :)
#define API_KEY ""
#define LAT1 18.679247
#define LON1 45.543870
#define LAT2 18.715210
#define LON2 45.562021
// Refresh time
#define DELAY_MS 5 * 60 * 1000
Inkplate inkplate;
void setup()
{
Serial.begin(115200); // Initialize serial
inkplate.begin(); // Initialize display
// Connect to WiFi
while (!inkplate.connectWiFi(ssid, pass))
{
Serial.println("Connecting to wifi");
}
// Format URL string
char URL[256];
sprintf(URL, "https://api.mapbox.com/styles/v1/mapbox/navigation-day-v1/static/[%lf,%lf,%lf,%lf]/600x448?access_token=%s", LAT1, LON1, LAT2, LON2, API_KEY);
Serial.println("Fetching:");
Serial.println(URL);
// Fetch and display image
inkplate.image.draw(URL, 0, 0, true, false);
inkplate.display();
// Go to sleep for DELAY_MS
esp_sleep_enable_timer_wakeup(1000L * DELAY_MS);
// Start deep sleep (this function does not return). Program stops here.
esp_deep_sleep_start();
}
void loop()
{
// Never here! If you are using deep sleep, the whole program should be in setup() because the board restarts each
// time. loop() must be empty!
}
Verwendete Funktionen
Inkplate()returns NoneErstellt das Inkplate-Objekt. Inkplate 7SPECTRA hat nur einen einzigen Sechs-Farben-Modus, daher erwartet der Konstruktor kein Modus-Argument.
ReturnsKonstruktor; kein Rückgabewert.
inkplate.begin()returns voidInitialisiert die Bibliothek, die Peripherie und den Framebuffer. Rufen Sie sie einmal in setup() auf.
ReturnsNichts.
inkplate.connectWiFi(const char *ssid, const char *pass, int timeout = 23, bool printToSerial = false)returns boolVerbindet sich im Station-Modus mit dem WLAN. Die Verbindung wird einmal pro Sekunde geprüft, und nach Ablauf des Timeouts, standardmäßig 23 Sekunden, wird aufgegeben. Ist printToSerial auf true gesetzt, gibt die Funktion ihren Fortschritt im Serial Monitor aus, wofür zuvor Serial.begin() aufgerufen werden muss. Die Skizze wiederholt den Aufruf, bis er erfolgreich ist.
Returnstrue, wenn verbunden; false, wenn das Zeitlimit überschritten wurde.
inkplate.image.draw(const char *path, int x, int y, bool dither = 1, bool invert = 0)returns boolZeichnet ein Bild an der Position x, y. Beginnt die Adresse mit http:// oder https://, lädt die Bibliothek die Datei herunter und wählt den Decoder anhand der Dateiendung (bmp, dib, jpg, jpeg oder png). Die Skizze übergibt die Mapbox-Adresse, die Position (0, 0), Dithering an und Invertierung aus.
Returnstrue, wenn das Bild gezeichnet wurde; false, wenn es nicht geöffnet oder dekodiert werden konnte.
inkplate.display(bool _leaveOn = 0)returns voidSendet den gesamten Framebuffer an das Panel und aktualisiert es.
ReturnsNichts.
esp_sleep_enable_timer_wakeup(uint64_t time_in_us)returns esp_err_tESP32-Board-Paket: weckt den Chip nach der angegebenen Zeit in Mikrosekunden aus dem Deep Sleep. Die Skizze übergibt 1000 × DELAY_MS, das sind 5 Minuten.
ReturnsESP_OK bei Erfolg.
esp_deep_sleep_start()returns voidESP32-Board-Paket: wechselt in den Deep Sleep. Die Funktion kehrt nicht zurück; beim nächsten Aufwachen startet die Skizze von vorn, weshalb loop() leer bleibt.
ReturnsKehrt nicht zurück.
Was Sie erwarten können
Der Serial Monitor gibt bei 115200 Baud jedes Mal Connecting to wifi aus, wenn ein Verbindungsversuch fehlschlägt, danach Fetching: gefolgt von der vollständigen angefragten Adresse. Anschließend wird der Bildschirm aktualisiert und zeigt die heruntergeladene Karte in der oberen linken Ecke. Nach 5 Minuten wacht das Board auf und wiederholt den Ablauf.
🔗Vollständiges Beispiel öffnen
examples/Inkplate7SPECTRA/Diagnostics/Inkplate7SPECTRA_Mapbox_API