ESP8266-Workshop: Unterschied zwischen den Versionen
Anlumo (Diskussion | Beiträge) K lang |
Anlumo (Diskussion | Beiträge) |
||
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
|image=Nodemcu.png | |image=Nodemcu.png | ||
|involved=[[User:anlumo]] | |involved=[[User:anlumo]] | ||
|when= | |when=2017-07-30 19:00 | ||
|where=[[Hauptraum]] | |where=[[Hauptraum]] | ||
|costs= | |costs=€7 | ||
|category=Workshop | |category=Workshop | ||
|status=planning | |status=planning | ||
Zeile 25: | Zeile 25: | ||
* Flashen der Firmware | * Flashen der Firmware | ||
* Installation von eigenen Programmen auf dem Gerät | * Installation von eigenen Programmen auf dem Gerät | ||
* Ansteuerung von externer Hardware (digital lesen und schreiben, analog lesen) | |||
* Interaktion mit dem Netzwerk | * Interaktion mit dem Netzwerk | ||
= Ausrüstung = | = Ausrüstung = | ||
Es wird ein Hardware-Paket für den Workshop zur Verfügung gestellt, bei dem alles inkludiert ist, was benötigt wird. Dafür gibt es einen Unkostenbeitrag von | Es wird ein Hardware-Paket für den Workshop zur Verfügung gestellt, bei dem alles inkludiert ist, was benötigt wird. Dafür gibt es einen Unkostenbeitrag von €7. Es kann natürlich mit seiner eigenen Hardware gratis teilgenommen werden, einfach nur zuhören ist auch möglich. | ||
Inhalt des Pakets: | Inhalt des Pakets: | ||
* | * Wemos D1-Modul | ||
* Micro USB-Kabel (20cm) | * Micro USB-Kabel (20cm) | ||
* | * selbst designtes Aufsteckboard | ||
Teilnehmende müssen weiters ein Notebook mitbringen, auf dem entwickelt werden kann. | Teilnehmende müssen weiters ein Notebook mitbringen, auf dem entwickelt werden kann. Alle Betriebssysteme sollten möglich sein. | ||
Treiber für macOS gibts [http://blog.sengotta.net/wp-content/uploads/2015/11/CH34x_Install_V1.3.zip hier]! | |||
Unter Linux und Windows bitte schauen, dass python 2.7+ installiert ist, da das für die Tools benötigt wird. | |||
Achtung: Bash for Windows kann nicht verwendet werden, da das keinen Zugriff auf serielle Schnittstellen hat! | |||
= Programmierumgebung/Programmiersprache = | = Programmierumgebung/Programmiersprache = | ||
Als Firmware soll [http://micropython.org/ MicroPython] eingesetzt werden, d.h. das Modul wird mit Python 3 programmiert. | Als Firmware soll [http://micropython.org/ MicroPython] eingesetzt werden, d.h. das Modul wird mit Python 3 programmiert. | ||
= Vorbereitung = | |||
<pre>pip install pyserial | |||
pip install esptool</pre> | |||
= In-Workshop Linkliste = | |||
* [http://micropython.org/resources/firmware/esp8266-20170612-v1.9.1.bin Firmware] | |||
* [http://esp.opentu.net/ WebREPL] | |||
* [https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/index.html Dokumentation] | |||
= Workshop-Notizen = | |||
== Pinout des Zusatzboards == | |||
{| | |||
|- | |||
! GPIO !! Funktion | |||
|- | |||
| 0 || Neopixel | |||
|- | |||
| 5 || rote LED | |||
|- | |||
| 13 || linker Button | |||
|- | |||
| 15 || rechter Button | |||
|} | |||
Am ADC 0 hängt der Helligkeitssensor. | |||
== Generell == | |||
Firmware flashen: | |||
<pre>esptool.py.exe --port COM15 --baud 460800 write_flash --flash_size=detect 0 esp8266-20170612-v1.9.1.bin | |||
</pre> | |||
COM15 durch den Port ersetzen (zB /dev/ttyUSB0 unter Linux). | |||
Modul laden/entladen: | |||
<pre>import meinmodul | |||
del meinmodul</pre> | |||
== LED ansteuern == | |||
<pre>import machine | |||
pin = machine.Pin(5, machine.Pin.OUT) | |||
pin.value(0) | |||
pin.value(1)</pre> | |||
== PWM == | |||
<pre>import machine | |||
pin = machine.Pin(5, machine.Pin.OUT) | |||
pwm = machine.PWM(pin) | |||
pwm.freq(5) | |||
pwm.duty(512)</pre> | |||
== Button == | |||
<pre>import machine | |||
pin = machine.Pin(13, machine.Pin.IN) | |||
pin.value()</pre> | |||
== Interrupts == | |||
<pre>from machine import Pin | |||
import utime | |||
def callback(p): | |||
led=Pin(5, Pin.OUT) | |||
led.value(0) | |||
utime.sleep_ms(100) | |||
led.value(1) | |||
pin = Pin(13, Pin.IN) | |||
pin.irq(trigger=Pin.IRQ_FALLING|Pin.IRQ_RISING, handler=callback)</pre> | |||
== ADC (Helligkeitssensor) == | |||
<pre>import machine | |||
adc = machine.ADC(0) | |||
adc.read()</pre> | |||
== Timer == | |||
<pre>import machine | |||
pin = machine.Pin(5, machine.Pin.OUT) | |||
adc = machine.ADC(0) | |||
def readsensor(t): | |||
pin.value(adc.read() < 800) | |||
tim = machine.Timer(-1) | |||
tim.init(period=100, mode=Timer.PERIODIC, callback=readsensor)</pre> | |||
== Neopixel == | |||
<pre>import machine, neopixel | |||
np = neopixel.NeoPixel(machine.Pin(0), 1) | |||
np[0] = (255, 0, 0) | |||
np.write()</pre> | |||
== Netzwerk == | |||
=== Setup (nur einmal notwendig!) === | |||
<pre>import network | |||
nic = network.WLAN(network.STA_IF) | |||
nic.active(True) | |||
nic.connect('metalab','') | |||
nic.ifconfig() | |||
import webrepl_setup</pre> | |||
=== Sockets === | |||
<pre>import socket | |||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |||
s.connect(("127.0.0.1", 1234)) | |||
s.send("Hello World\n".encode('utf-8')) | |||
s.close()</pre> |