Recherchieren Sie, was das boot.py auf dem ESP32 bedeutet/macht. Suchen Sie auch, was mit einer Datei passiert, welche als main.py auf dem ESP32 abgespeichert wird.
Z.B. hier: Boot-Scripts
Der ESP32-Chip ist Bluetooth- und WLAN-fähig. Er kann sich mit einem WLAN-Netzwerk verbinden oder selbst eines erzeugen. Diese Funktion muss jedoch noch aktiviert werden:
>>> erscheinen. Drücken Sie ansonsten auf 'STOP' oder stecken Sie den ESP32 aus und wieder ein.import webrepl_setup
E.y einen Reboot des ESP32 durch.import network ap = network.WLAN(network.AP_IF) ap.active(True) ap.config(essid = 'ESP32-Wifi') ap.config(authmode=3, password ='hallo123')
network.WLAN(network.AP_IF) aktiviert einen sogenannten Access-Point, also ein WLAN-Netzwerk. Mit ap.active(True) wird dieser aktiviert. Mit ap.config(…) kann dann der Name (essid) und das Passwort des WLANs konfiguriert werden.Versuchen Sie den Code von oben (Drahtlos-Verbindung) zu ergänzen, dass Sie mit dem Smartphone/Notebook eine Webseite auf ihrem ESP32 abrufen können. Auf der Webseite soll ein Text (z.B. „Hallo Welt!“) erscheinen. Verwenden Sie ChatGPT oder folgen Sie dieser Anleitung.
Mögliche ChatGPT-Prompts:
import socket, network
ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid = 'ESP32-Wifi') #Wählen Sie den Namen für das WLAN
ap.config(authmode=3, password ='sensorsensor') #Wählen Sie ein Passwort
def webseite(): #Diese Funktion definiert ihre HTML-Webseite
html = """<html><head><meta name="viewport" content="width=device-width, initial-scale=1"</head><body><h1>Hallo Welt!</h1></body></html>"""
return html
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(5)
while True:
conn, addr = s.accept()
print('Verbunden mit %s' % str(addr))
request = conn.recv(1024)
print('Inhalt = %s' % str(request))
response = webseite()
conn.send(response)
conn.close()
Die Steuerung von der Neopixel-LED kann mit der Funktion des Webservers kombiniert werden, um die LED per Smartphone zu steuern.
import socket, machine, neopixel
import network
np = neopixel.NeoPixel(machine.Pin(7),1)
np[0] = (255,0,0)
np.write()
ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid = 'Sensor10')
ap.config(authmode=3, password ='sensorsensor')
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
ledstatus = "ROT"
print('listening on', addr)
def web_page():
html = """<html><head> <title>Mini Web-Server</title> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="data:,"> <style>html{font-family: Helvetica; display:inline-block; margin: 0px auto; text-align: center;}
h1{color: #0F3376; padding: 2vh;}p{font-size: 1.5rem;}.button{display: inline-block; background-color: #d60c0c; border: none;
border-radius: 4px; color: white; padding: 16px 40px; text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}
.button2{background-color: #47a730;}</style></head><body> <h1>Mini Web-Server</h1>
<p>Neopixel-Status: <strong>""" + ledstatus + """</strong></p><p><a href="/?led=rot"><button class="button">ROT</button></a></p>
<p><a href="/?led=grun"><button class="button button2">GRÜN</button></a></p></body></html>"""
return html
while True:
conn, addr = s.accept()
print('Verbunden mit %s' % str(addr))
request = conn.recv(1024)
request = str(request)
print('Content = %s' % request)
ledr = request.find('/?led=rot')
ledg = request.find('/?led=grun')
if ledr == 6:
print('Neopixel rot')
np[0] = (255, 0, 0)
ledstatus="ROT"
np.write()
if ledg == 6:
print('Neopixel grün')
np[0] = (0, 100, 0)
ledstatus="GRÜN"
np.write()
response = web_page()
conn.send('HTTP/1.1 200 OK\n')
conn.send('Content-Type: text/html\n')
conn.send('Connection: close\n\n')
conn.sendall(response)
conn.close()
Bonus: Versuchen Sie eine Webseite auf dem ESP32 zu programmieren, die die Messwerte des BME280-Sensors anzeigt. Zudem sollen die Messwerte auf dem OLED-Display ausgegeben werden. Die Messwerte sollen sich jeweils beim Neuladen der Webseite aktualisieren bzw. neu gemessen werden.