Zum Inhalt springen

ESP8266-Workshop: Unterschied zwischen den Versionen

Anlumo (Diskussion | Beiträge)
Anlumo (Diskussion | Beiträge)
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 43: Zeile 43:


Unter Linux und Windows bitte schauen, dass python 2.7+ installiert ist, da das für die Tools benötigt wird.
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 =
Zeile 52: Zeile 54:
<pre>pip install pyserial
<pre>pip install pyserial
pip install esptool</pre>
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>