ESP8266-Workshop: Unterschied zwischen den Versionen
Anlumo (Diskussion | Beiträge) K (→Timer) |
Anlumo (Diskussion | Beiträge) K (→Interrupts) |
||
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 62: | Zeile 62: | ||
= Workshop-Notizen = | = 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 == | == 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: | Modul laden/entladen: | ||
Zeile 100: | Zeile 124: | ||
utime.sleep_ms(100) | utime.sleep_ms(100) | ||
led.value(1) | led.value(1) | ||
pin = | pin = Pin(13, Pin.IN) | ||
pin.irq(trigger=Pin.IRQ_FALLING|Pin.IRQ_RISING, handler=callback)</pre> | pin.irq(trigger=Pin.IRQ_FALLING|Pin.IRQ_RISING, handler=callback)</pre> | ||
Zeile 116: | Zeile 140: | ||
def readsensor(t): | def readsensor(t): | ||
pin.value(adc.read() < 800) | pin.value(adc.read() < 800) | ||
tim = machine.Timer(-1) | |||
tim.init(period=100, mode=Timer.PERIODIC, callback=readsensor)</pre> | tim.init(period=100, mode=Timer.PERIODIC, callback=readsensor)</pre> | ||
Zeile 126: | Zeile 151: | ||
== Netzwerk == | == Netzwerk == | ||
=== Setup (nur einmal notwendig!) === | |||
<pre>import network | <pre>import network |
Aktuelle Version vom 30. Juli 2017, 20:02 Uhr
Sprache: | Deutsch |
---|
ESP8266-Workshop | |
2017-07-30 19:00 | |
Hauptraum | |
User:anlumo | |
Workshop | |
€7 | |
planning | |
Introduction on using the ESP8266 | |
Zuletzt aktualisiert: | 30.07.2017 |
Was
Der ESP8266 ist ein kleiner Mikrocontroller, der frei programmiert werden kann und sehr günstig ist. Er hat auch WiFi eingebaut und kann damit für Internet-verbundene Projekte (IoT) verwendet werden.
Dieser Mikrocontroller ist auch sehr einfach zu programmieren. Der Workshop soll eine schnelle Einführung bieten, wie man beginnen kann, in diese Welt einzutauchen.
Plan
- Vorstellung der Hardware
- Flashen der Firmware
- Installation von eigenen Programmen auf dem Gerät
- Ansteuerung von externer Hardware (digital lesen und schreiben, analog lesen)
- Interaktion mit dem Netzwerk
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 €7. Es kann natürlich mit seiner eigenen Hardware gratis teilgenommen werden, einfach nur zuhören ist auch möglich.
Inhalt des Pakets:
- Wemos D1-Modul
- Micro USB-Kabel (20cm)
- selbst designtes Aufsteckboard
Teilnehmende müssen weiters ein Notebook mitbringen, auf dem entwickelt werden kann. Alle Betriebssysteme sollten möglich sein.
Treiber für macOS gibts 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
Als Firmware soll MicroPython eingesetzt werden, d.h. das Modul wird mit Python 3 programmiert.
Vorbereitung
pip install pyserial pip install esptool
In-Workshop Linkliste
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:
esptool.py.exe --port COM15 --baud 460800 write_flash --flash_size=detect 0 esp8266-20170612-v1.9.1.bin
COM15 durch den Port ersetzen (zB /dev/ttyUSB0 unter Linux).
Modul laden/entladen:
import meinmodul del meinmodul
LED ansteuern
import machine pin = machine.Pin(5, machine.Pin.OUT) pin.value(0) pin.value(1)
PWM
import machine pin = machine.Pin(5, machine.Pin.OUT) pwm = machine.PWM(pin) pwm.freq(5) pwm.duty(512)
Button
import machine pin = machine.Pin(13, machine.Pin.IN) pin.value()
Interrupts
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)
ADC (Helligkeitssensor)
import machine adc = machine.ADC(0) adc.read()
Timer
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)
Neopixel
import machine, neopixel np = neopixel.NeoPixel(machine.Pin(0), 1) np[0] = (255, 0, 0) np.write()
Netzwerk
Setup (nur einmal notwendig!)
import network nic = network.WLAN(network.STA_IF) nic.active(True) nic.connect('metalab','') nic.ifconfig() import webrepl_setup
Sockets
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()