Zum Inhalt springen

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=2016-10-04 18:00
|when=2017-07-30 19:00
|where=[[Hauptraum]]
|where=[[Hauptraum]]
|costs=€8
|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
* Ansteuerung von externer Hardware (digital lesen und schreiben, analog lesen)


= 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 €8. Es kann natürlich  mit seiner eigenen Hardware gratis teilgenommen werden, einfach nur zuhören ist auch möglich.
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:


* NodeMCU-Modul
* Wemos D1-Modul
* Micro USB-Kabel (20cm)
* Micro USB-Kabel (20cm)
* Mini-Breadboard
* selbst designtes Aufsteckboard
* 6 Buttons + Keycaps
* 5 rote/5 gelbe/5 grüne LEDs
* diverse Widerstände
* 2 Photowiderstände
* 20 M/M Dupont-Kabel


Teilnehmende müssen weiters ein Notebook mitbringen, auf dem entwickelt werden kann. Als Betriebssystem können macOS und Linux sicher eingesetzt werden, Windows wird noch evaluiert.
Teilnehmende müssen weiters ein Notebook mitbringen, auf dem entwickelt werden kann. Alle Betriebssysteme sollten möglich sein.


Momentan ist macOS 10.12 nicht möglich!
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. Die genaue Entwicklungsumgebung wird noch entschieden.
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>