Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Peguino Uno ESP32 Brick
#1
Peguino Uno ESP32 Brick



Der Peguino Uno ESP32 Brick ist das Herzstück eines jeden Peguino Projekts. Er beinhaltet ein Leistungsstarkes ESP32 Development Board (Typ 1). Dieses Board kann via USB-Kabel mit dem PC verbunden werden um eigene Programme darauf zu installieren und / oder daten auf den PC zu übertragen. Da dieses Board auch WLan und Bluetooth beinhaltet kann mit einem entsprechenden Hilfsprogramm ein Update der eigenen Programme ebenfalls via Wlan durchgeführt werden in dem per Webbrowser von einem PC auf das Board zugegriffen werden kann.



[Image: Peguino_Uno_Brick_01b.png]

Pinout:

[Image: Peguino_ESP32_Dev_1_01.png]

Technische Daten:

[Image: ESP32Dev1_Specs_01.png]



Zwei 40/80 MHz low-power 32-bit Mikroprozessoren.
Der interne Speiher beinhaltet:
    • 448 KB ROM-Speicher für den Boot-Vorgang und Kernfunktionen.
    • 520 KB "On-Chip" SRAM für eigene Daten und Programme.
    • 8 KB SRAM im RTC, auch genannt RTC FAST Memory - welcher ebenfalls zum speichern von Daten genutzt werden kann.
    • 8 KB SRAM in RTC, auch genannt RTC SLOW Memory - welcher ebenfalls zum speichern von Daten genutzt werden kann.
    • 1 Kbit "eFuse": Diese 256 Bits werden vom System genutzt ( für die MAC Addresse und Chip Konfiguration). Weitere 768 Bits sind für Anwendungen reserviert.
    • Insgesamt bis zu 4MB Ram
Eine Wlan- (WIFI) und eine Bluetooth- Funktion sind bereits integriert:
WIFI: WiFi: 802.11 b/g/n/d/e/i/k/r (802.11n bis zu 150 Mbps),
Bluetooth v4.2 BR/EDR und BLE Spezifikation
Wi-Fi mode Station/softAP/SoftAP+station/P2P
Security WPA/WPA2/WPA2-Enterprise/WPS
Encryption AES/RSA/ECC/SHA
IPv4, IPv6, SSL, TCP/UDP/HTTP/FTP/MQTT
Schnittstellen: SD-Card, UART, SPI, SDIO, I2C, LED PWM, Motor  PWM, I2S , IR, GPIO, Kapazitiver berührungssensor, ADC, DAC, Hall Sensor, Temperatur Sensor

W-Lan (WIFI) -Betrieb Besonderheit:
Der Port “Analog Input 2” kann bei W-Lan Betrieb nicht gleichzeitig genutzt werden.

Tipps zur Fehlerbehebung:
Bei Problemen mit dem Übertragen von Programmen mit der Arduino IDE im Zweifelsfall die Stecker an den Ports vorübergehend abstecken und danach wieder anstecken.
In bestimmten Konfigurationen kann die Fehlermeldung Failed to connect to ESP32: Timed out waiting for packet header" während beim Versuch ein Programm mit der Arduino IDE zu Übertragen. In diesem Fall sollte der "BOOT" Schaltknopf auf dem ESP32-Board gedrückt und gehalten werden. Sobald die Übertragung startet kann der Schalter losgelassen werden.
Mehr über die Arduino IDE unter: https://www.peguino.com/chat/thread-7.html und: https://www.peguino.com/chat/thread-9.html

Beispiel:
Dieses (Programm-) Skript startet einen Webserver mit der Möglichkeit via Wlan eine Programm auf das Board zu übertragen. Dazu muss auf dem PC mit einem Webbrowser auf das Board zugegriffen werden.


Anmerkungen:
In dem Skript muss der Netzwerkname, der Nutzername und das des Passwort des eigenen Accesspoints zur Herstellung der Verbindung angepasst werden!
Anschließend im Webbrowser des PCs folgende URL eintippen: http://peguino01.connect
Der Peguino antwortet nun mit einem Eingabeformular. Der Benutzername und das Passwort hier sind in beiden Fällen jeweils "admin" (ohne Anführungsstriche eingeben). Aufgepasst: Dies ist keine besonders "Hackersichere" Lösung...

Wissenswert: Dieses Script sollte in ein eigenes Projekt integriert werden um die Funktionalität der Wlan-Aktualisierung beizubehalten.

Code:
/*
Peguino Uno Brick ESP32 V1 Wifi upload
(C) 2018 by Peguino LTD
 
Version 1


Peguino Uno ESP 32 Development Board Pinout
          ┌─╥─┐
3.3     1 │     │ 30  5V
GND     2 │     │ 29  GND
GPIO15  3 │     │ 28  GPIO13
GPIO2   4 │     │ 27  GPIO12
GPIO4   5 │     │ 26  GPIO14
GPIO16  6 │     │ 25  GPIO27
GPIO17  7 │     │ 24  GPIO26
GPIO5   8 │     │ 23  GPIO25
GPIO18  9 │     │ 22  GPIO33
GPIO19 10 │     │ 21  GPIO32
GPIO21 11 │     │ 20  GPIO35
GPIO3  12 │     │ 19  GPIO34
GPIO1  13 │     │ 18  GPIO39
GPIO22 14 │     │ 17  GPIO36
GPIO23 15 │     │ 16  Chip enable
          └───┘
Visit https://www.peguino.com          
*/

#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>
#include <Update.h>

const char* host = "Peguino01";
const char* ssid = "Deine_Netzwerk_SSID_hier_eingeben"; // Hier Network SSID einfügen
const char* password = "Dein_Wlan-Passwort_einfügen"; // Hier das WIFI Passwort einfügen
const char* hostName = "Peguino01"; // Mit dem Webbrowser diese Adresse aufrufen http://peguino01.connect

WebServer server(80);


/* This is the Peguino Uno Login page */

const char* loginIndex =
"<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><title>Peguino Uno Brick Login</title><style>.form {position: relative; z-index: 1; background: #eee; max-width: 300px; margin: 0 auto 100px; padding: 30px; border-radius: 4px; text-align: center;}"
".form input {outline: 0; background: #ddd; width: 100%; border: 0; margin: 0 0 15px; padding: 15px; border-radius: 4px; box-sizing: border-box; font-size: 14px; }"
"#button { outline: 0; background: #EF3B3A; width: 100%; border: 0; padding: 15px; border-radius: 4px; color: #FFFFFF; font-size: 14px; transition: all 0.3 ease; cursor: pointer; }"
".container { position: relative; max-width: 300px; margin: 0 auto; } .container .info { margin: 50px auto; text-align: center; }"
"body { font-family: sans-serif; } </style> </head> <body>"
"<div class='container'> <div class='info'> <h2>Connect your<br/> Peguino Uno Brick</h2> </div> <div class='form'>"
"<div><img src=' data:image/png;base64,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' /></div>"
"<form class='login-form'> <input type='text' size=25 name='userid' placeholder='username'> <input type='Password' size=25 name='pwd' placeholder='password'> <input id='button' type='submit' onclick='check(this.form)' value='Login'> </form> </div> </body> </html>"
"<script>"
   "function check(form)"
   "{"
   "if(form.userid.value=='admin' && form.pwd.value=='admin')"
   "{"
   "window.open('/serverIndex')"
   "}"
   "else"
   "{"
   " alert('Error Password or Username')/*displays error message*/"
   "}"
   "}"
"</script>";

/*  This is the Index Page after Login  */

const char* serverIndex =
"<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>"
"<form method='POST' action='#' enctype='multipart/form-data' id='upload_form'>"
  "<input type='file' name='update'>"
       "<input type='submit' value='Update'>"
   "</form>"
"<div id='prg'>progress: 0%</div>"
"<script>"
 "$('form').submit(function(e){"
 "e.preventDefault();"
 "var form = $('#upload_form')[0];"
 "var data = new FormData(form);"
 " $.ajax({"
 "url: '/update',"
 "type: 'POST',"
 "data: data,"
 "contentType: false,"
 "processData:false,"
 "xhr: function() {"
 "var xhr = new window.XMLHttpRequest();"
 "xhr.upload.addEventListener('progress', function(evt) {"
 "if (evt.lengthComputable) {"
 "var per = evt.loaded / evt.total;"
 "$('#prg').html('progress: ' + Math.round(per*100) + '%');"
 "}"
 "}, false);"
 "return xhr;"
 "},"
 "success:function(d, s) {"
 "console.log('success!')"
"},"
"error: function (a, b, c) {"
"}"
"});"
"});"
"</script>";


/* and here the program code  */


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

 // Connect to WiFi network
 WiFi.mode(WIFI_STA);
 WiFi.softAP(hostName);
 WiFi.begin(ssid, password);
 WiFi.setHostname(hostName);
 Serial.println("");

 // Wait for connection
 Serial.println("Try to connect...");
 while (WiFi.status() != WL_CONNECTED) {
   delay(400);
   Serial.print(".");
 }
 Serial.println("");
 Serial.print("Connected to ");
 Serial.println(ssid);
 Serial.print("IP address: ");
 Serial.println(WiFi.localIP());

 /*use mdns for host name resolution*/
 if (!MDNS.begin(host)) { //http://esp32.local
   Serial.println("Error setting up MDNS responder!");
   while (1) {
     delay(1000);
   }
 }
 Serial.println("mDNS responder started");
 /*return index page which is stored in serverIndex */
 server.on("/", HTTP_GET, []() {
   server.sendHeader("Connection", "close");
   server.send(200, "text/html", loginIndex);
 });
 server.on("/serverIndex", HTTP_GET, []() {
   server.sendHeader("Connection", "close");
   server.send(200, "text/html", serverIndex);
 });
 /*handling uploading firmware file */
 server.on("/update", HTTP_POST, []() {
   server.sendHeader("Connection", "close");
   server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK");
   ESP.restart();
 }, []() {
   HTTPUpload& upload = server.upload();
   if (upload.status == UPLOAD_FILE_START) {
     Serial.printf("Update: %s\n", upload.filename.c_str());
     if (!Update.begin(UPDATE_SIZE_UNKNOWN)) { //start with max available size
       Update.printError(Serial);
     }
   } else if (upload.status == UPLOAD_FILE_WRITE) {
     /* flashing firmware to ESP*/
     if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) {
       Update.printError(Serial);
     }
   } else if (upload.status == UPLOAD_FILE_END) {
     if (Update.end(true)) { //true to set the size to the current progress
       Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize);
     } else {
       Update.printError(Serial);
     }
   }
 });
 server.begin();
}

void loop(void) {
 server.handleClient();
 delay(1);
}
Reply
#2
Buy #ielts / #toefl/ #celpip / #gre certificate what’s app:  +1(202)852-9938  london,UK, INDIA, QATAR, KUWAIT, ITALY, PHILIPINES, Saudi Arabia, AUSTRALIA, UAE, VANCOUVER, UK, CANADA, USA, CHINA, JAPAN OMAN. Looking to get in touch, contact:Email; validcertificatemanufacture@gmail.com
 what’s app:  +1(202)852-9938 Our http://validieltscertificate.com/ buy driver's License,ID Cards SSN, Birth Certificates, Visas, Diplomas, Divorce Certificate, Gun License, Adoption Certificates, Marriage Certificate,
Buy Real IELTS certificate online | Valid IELTS certificate without exam
/Buy real ielts certificate online | Original IELTS Certificate | Buy original ielts certificate | Original ielts certificate for sale | valid ielts certificate without exam | Buy legit ielts certificate | buy registered ielts certificate | registered ielts certificate for sale | Buy real British Council certificates | Buy IELTS certificate online | Buy ielts certificate without exam | ielts certificates without exam | IELTS certificate for sale without exam | Buy Genuine IELTS Certificate Without Exam | Genuine IELTS Certificate For Sale-Buy Original IELTS Certificate
Buy Genuine IELTS Certificate Without Exam| Registered IELTS Certificate for sale
Looking to get in touch, contact:
Email; validcertificatemanufacture@gmail.com-what’s app:  +1(202)852-9938)ielts certificate-for sale in Hong Kong Looking to get in touch, contact:Email; validcertificatemanufacture@gmail.com
what’s app:  +1(202)852-9938) Our http://validieltscertificate.com/  or https://www.globalvaliddocuments.com/  will allow you the opportunity to Buy a Real IELTS Certificate without Exam or even modify existing IELTS Results.
fake ielts certificate new Zealand-buy original ielts certificate-ielts certificate without exam in Canada-
how to get ielts certificate without exam-ielts without exam in Canada validcertificatemanufacture@gmail.com-buy ielts certificate in South Korea=
fake ielts certificate Japan-
buy ielts certificate online Shanghai-
get ielts certificate without exam in Canada
buy ielts certificate without exam Australia
get ielts certificate without exam USA
ielts certificate without exam in New Zealand
can i get ielts certificate without exam-
ielts certificate without exam in Canada
ielts certificate without exam in hyderabad-
Buy British Council IELTS Certificates
Get ielts band 7 pakistan,
Purchase ielts band 6,
Buy ielts band 6.5,
btain band ielts 7.5,
get real ielts india,
target band 7 ielts,
ielts for sale india,
ielts backdoor Sydney ,
ielts backdoor,
ielts , Ielts Band 7 Albania,
Buy Ielts Band 6 Iran,
Buy Ielts Band 5.5 Qatar,
Buy ielts band 8 india,
ielts backdoor in india,
ielts backdoor lebanon,
ielts backdoor malaysia,
backdoor ielts qatar / india,
ielts backdoor kuwait,
original buy IELTS certificate,
IELTS backdoor in vijayawada,
best book for academic IELTS,
IELTS for sale without exams,
Original buy IELTS certificate
can buy IELTS certificate,
Apply for a registered us visa,
buy IELTS certificate,
IELTS backdoor Dubai / UAE,
IELTS backdoor london,
IELTS backdoor in karachi,
IELTS backdoor in lahore,
IELTS backdoor in Islamabad,
IELTS backdoor in pakistan ,
IELTS backdoor in Hyderabad,
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)