*Allgemeines *Technische Daten / Hookup * Unser Board: https://www.sparkfun.com/products/13907 * https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide *Achtung! * Der LiPo-Charger arbeitet standardmäßig mit 500mA - wenn das (z.B. für einen sehr kleinen LiPo mit weniger als 600-700mAh zu krass ist, kann die Leiterbahn CHG PROG auf der Rückseite aufgetrennt und ein anderer Widerstand (bedrahtet über dem alten?) installiert werden! Datenblatt des Ladereglers: https://cdn.sparkfun.com/datasheets/Dev/Arduino/Shields/MCP738312.pdf * 2k = 500mA * 4k = 250mA * u.s.w. * Auch im deep sleep braucht das "Thing" noch knapp 1mA, was einen LiPo in ein paar Wochen leer lutscht - ohne sonstige Wach-Phasen. Das liegt daran, dass der Flash-Speicher standardmäßig über den LDO versorgt wird. Die Freunde von Sparkfun haben aber eine Möglichkeit geschaffen, das zu ändern: wenn ihr auf der Rückseite die Leiterbahn bei "FLASH VCC" zu "3V3" durchtrennt und einen Lötklecks zur benachbarten "IC" setzt, wird der Flash mit abgeschaltet und das "Thing" begnügt sich im Tiefschlaf mit 70 Mikroampere - einem Hundertstel. Mit meinen LiPos dürfte ich damit ein Jahr durchhalten, obwohl das noch weit weg von den angepriesenen 2,5 Mikroampere ist... --Patrick *Nutzung mit Arduino *Installation Andreas Spiess Tutorial (The guy with the swiss accent) https://www.youtube.com/watch?v=jhjZZkKupk8 1. Arduino IDE aktualisieren! 2. Anleitung unter https://github.com/espressif/arduino-esp32 oder https://github.com/espressif/arduino-esp32/blob/master/doc/windows.md 3. Python 2.7 installieren (ggf. Umgebungsvariablen anpassen https://stackoverflow.com/questions/4621255/how-do-i-run-a-python-program-in-the-command-prompt-in-windows-7) 4. Git Client installieren https://git-scm.com/ 5. Git Bash als Administrator starten 5.1. Befehle nacheinander eingeben (auf der Githubseite zu finden): * mkdir -p ~/Documents/Arduino/hardware/espressif && \ * cd ~/Documents/Arduino/hardware/espressif && \ * git clone https://github.com/espressif/arduino-esp32.git esp32 && * \cd esp32/tools/ && \ * python get.py ggfs:bei Fehler: "ImportError: No module named serial" * sudo apt-get install python-pip * pip install pyserial 0.1. Erst nach dem letzen befehl wird die Repo heruntergeladen (dauert ne Weile) 0.2. Xtensa Compiler installieren (dauert ca. 5 Minuten ohne Progressbar): 0.2.1. Windows Im Ordner Arduino\hardware\espressif\esp32\tools get.exe anklicken 0.2.2. Linux/Mac Im Ordner Arduino\hardware\espressif\esp32\tools python get.py in Konsole ausführen. 0.3. Die Repo wird im Benutzerverzeichnis C:\Users\DeinUsername\Documents\Arduino\hardware\espressif geladen und müssen in C:\Program Files (x86)\Arduino\hardware\espressif verschoben werden 1. Nun sollte in der Arduino IDE unter Boards viele neue ESP32 Modelle zur Auswahl stehen. Native Beispiele sollten ohne Probleme geflasht werden können. ESP8266 Sketche können aber Probleme bereiten. Lösung siehe unten! ESP8266 und ESP32 kompatible Sketche *#ifdef ARDUNIO_ESP_DEV *#include *#else *#include #endif 2) Beispiel ## DIGITAL LED : WS2811 WS 2812B SK6812 - McGyver Drivers https://github.com/MartyMacGyver/ESP32-Digital-RGB-LED-Drivers https://github.com/MartyMacGyver/ESP32-Digital-RGB-LED-Drivers/tree/master/arduino-esp32/demo1 Installation: 1) einfach die Files ws2812.cpp und ws2812.h nach ~/Arduino/libraries/ESP32-Digital-RGB-LED-Drivers kopieren 2) dann das demo1.ino laden und PINs (18 ist default) und Anzahl der PINs aendern. lauffaehig mit Arduino 1.8.1 , der aktuellen expressif IDE und dem aktuellen Compiler und serial for Python (siehe oben) Ungluecklicherwiese ist die Library anders aufgebaut, als die NEO pixel, so dass die Library nicht mit den Beispielen kombinierbar ist.! *Nutzung mit MicroPython *Linux (Debian Testing von Patrick) * Benötigte Tools * esptool v2.0beta2 von https://github.com/espressif/esptool/releases/ * Download als .tar.gz, auspacken * im ausgepackten Verzeichnis * sudo python2.7 setup.py install * MicroPython Firmware esp32-20170610-v1.8.7-964-g62d40e8b.bin von https://micropython.org/download/#esp32 * Download als .bin * picocom * sudo apt-get install picocom * Installation der Firmware: * Löschen des Flash * esptool.py --port /dev/ttyUSB0 erase_flash * Hat bei mir mit dem Sparkfun ESP32 Thing nur funktioniert, nachdem unmittelbar nach dem Start des esptool kurz die Reset-Taste gedrückt wurde! --Patrick * Installation der Firmware * esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=detect 0 esp32-20170610-v1.8.7-964-g62d40e8b.bin * Laut Anleitung sollte das auch mit 460800 Baud gehen. Ging bei mir nur so langsam und mit gedrückter Reset-Taste und Loslassen unmittelbar nach Start des esptool! --Patrick * Erste Verbindung per Terminal: * picocom /dev/ttyUSB0 --baud 115200 * Nach Drücken von Enter/Return sollte ein Python-Prompt erscheinen: * >>> * print ("Hello World From ESP32 MicroPython") * läuft: * Hello World From ESP32 MicroPython * WiFi scannen und Ergebnisse auflisten (geht bestimmt schöner, aber...) import network station = network.WLAN(network.STA_IF) station.active(True) nets = station.scan() import ubinascii for net in nets: print("ssid = %s, bssid = %s, rssi = %d, channel = %d" % (str.format("{:>30}",net[0].decode()),ubinascii.hexlify(net[1]).decode(),net[3],net[2])) Die 3 Leerzeilen sind wichtig, damit Python das Ende der For-Schleife erkennt (2x) und den Buffer ausführt (1x)! * /!\ Aus picocom kommt man mit Ctrl-A Ctrl-X wieder raus ;) * Nutzung eines DHT22-Sensors für Temperatur und Luftfeuchte * Das DHT-Modul ist nicht dabei, kann aber sehr einfach nachgeladen werden: * Abspeichern von https://github.com/micropython/micropython-esp32/blob/esp32/esp8266/modules/dht.py als dht.py * Upload mit ampy * ampy --port /dev/ttyUSB0 put dht.py dht.py * Dann ein paar Pins definieren und anschließen * DHT-Pin 1 an ESP-Pin 13 (alternativ 3.3V) * 2 an 12 * 4 an 14 (alternativ GND) * und los geht's: import dht from machine import Pin p12 = Pin(12, Pin.IN, Pin.PULL_UP) p13 = Pin(13, Pin.OUT) p13.value(1) p14 = Pin(14, Pin.OUT) p14.value(0) d=dht.DHT22(p12) d.measure() d.temperature() d.humidity() * Das reicht mir für's Erste... --Patrick