Der ESP8266 startet automatisch einen Access Point, wenn man nach dem Reset (oder einfach USB Kabel ziehen) die Access Point Liste anschaut wir man einen neuen finden.
Unter Linux kann man sich die Daten zu den Access Point wie folgt anschauen
sudo iwlist wlp4s0 scanning
der passenden AP Eintrag schaut bei mir so aus
Cell 02 - Address: 52:02:91:4E:F1:45
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=70/70 Signal level=-23 dBm
Encryption key:on
ESSID:"MicroPython-4ef145"
Bit Rates:5.5 Mb/s; 11 Mb/s; 1 Mb/s; 2 Mb/s; 6 Mb/s
12 Mb/s; 24 Mb/s; 48 Mb/s
Bit Rates:54 Mb/s; 9 Mb/s; 18 Mb/s; 36 Mb/s
Mode:Master
Extra:tsf=000000002a90af71
Extra: Last beacon: 5944ms ago
IE: Unknown: 00124D6963726F507974686F6E2D346566313435
IE: Unknown: 01088B9682840C183060
IE: Unknown: 030101
IE: Unknown: 32046C122448
IE: Unknown: DD0918FE34030100000000
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : CCMP TKIP
Authentication Suites (1) : PSK
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : CCMP TKIP
Authentication Suites (1) : PSK
Mit dem kann man sich ganz einfach verbinden.
Der ESP8266 verfügt über zwei getrennte WLAN Module (oder so ähnlich), man kann also als Client als aus als Access Point gleichzeitig auftreten. Das ist eine ganz tolle Funktion, wenn man z.B. einen WLAN Repeater bauen möchte.
ACHTUNG: will man das aber nicht, dass der ESP8266 einen Access Point startet, so muss man das explizit so festlegen.
Aber zuerst mal das Hello World in der Microcontroller Welt: Eine LED blinken lassen.
Glücklicherweise ist auf dem ESP8266 schon eine LED drauf, angeschlossen ist diese fest über den Port 2. An der Elektronik muss man als für das Hello World noch gar nichts machen.
Also mittels screen über USB Kontakt zum Controller aufbauen, dann folgendes eintippen.
>>> from machine import Pin
>>>
>>> led = Pin(2, Pin.OUT)
>>> led.on() # die LED geht aus, aber OK
>>> led.off() # die LED geht wieder an
Das mit dem vertauschten ON OFF hat mit der Verkabelung der LED zu tun, ist sie entweder zwischen PIN2 und Vcc (ON = Led ist dunkel, OFF Led ist hell) oder zwischen PIN2 und GND (ON = Led ist hell, OFF = Led ist dunkel)
So direkt mit dem python Interpreter was machen ist zwar für kleinere Dinge sicher nett, aber sicher nicht das was man meistens möchte. Besser ist es sein Programm in einer Datei abzuspeichern und dieses automatisch mit dem Controller zu starten.
Micropython startet die Datei main.py, wenn es diese auf dem Filesystem findet.
Hier mal die Datei hello_world.py
import time# mpython specific modulesimport machineimport networkdef disable_ap(): """ per default micropython will enable an AP SSID this short function will disable AP Mode on startup for more information go to http://docs.micropython.org/en/v1.8.7/esp8266/esp8266/tutorial/network_basics.html """ ap_if = network.WLAN(network.AP_IF) ap_if.active(False)def main(): # do some work led = machine.Pin(2, machine.Pin.OUT) while True: led.on() # die LED geht aus, aber OK time.sleep(1) led.off() # die LED geht wieder an time.sleep(1)if __name__ == "__main__": disable_ap() # disable access point while True: try: main() except: pass # ignore exception finally: time.sleep(60) # wait 60s and try again
In dem Programm ist auch schon der Abschnitt drinnen, der den AP Modus daktiviert.
Damit das flashen von Micropython und das kopieren der Datei auf den Controller als main.py etwas einfach gestaltet, verwendet ich ein Bash script flash_mpython.py
Achtung: das script flash_mpython.py muss man mit sudo ausführen
#!/bin/bash
PORT=/dev/ttyUSB0
esptool.py --port $PORT erase_flash
esptool.py --port $PORT --baud 460800 write_flash --flash_size=detect --verify -fm dio 0x0 esp8266-20190529-v1.11.bin
echo "sleeping for 10s to wait for reset"
sleep 10
ampy -b 115200 -p $PORT put hello_world.py main.py
screen $PORT 115200
Wenn alles durchläuft, so kann man den Controller kurz vom USB trennen dann wieder einstecken und nach ein paar Sekunden sollte die LED anfangen zu blinken.
Keine Kommentare:
Kommentar veröffentlichen