HelvePic32 Breadboard. Internet Data Logger

Ähnliche Dokumente
Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt:

Wetterdaten online GND 3,3V VIN CLK MISO MOSI CS VBEN IRQ GND V D13 D12 D11 D10 D5 D3. Arduino

Arbeitsblatt Nr.19: RFID Kit

EINE MHZ FUNKSTRECKE MIT ARDUINOS AUFBAUEN [GEBEN SIE IHRE ADRESSE EIN]

DC 5V Stepper Motor 28BYJ-48. Verwendung mit einem Arduino

Günstiges SIM900 GPRS/GSM-Modul mit Arduino-Boards nutzen

Internet Of Things Workshop. Batteriebetriebener Temperatursensor ESP8266 (Wemos D1.mini), Arduino IDE, WiFi, MQTT, DeepSleep

ESP32 Pico-Board. und Node-RED GUI ESP32 Addon. ESP32 und Node-RED Datenversand. Vers. 1.0

Naturwissenschaftliche Grundlagen der Sensorik. WiFi und MQTT. Chemnitz 16. Oktober 2017 Prof. Dr.

Die WiFI Library( bei dem meisten recent?

Günstiges SIM900 GPRS/GSM-Modul mit Arduino-Boards nutzen

KY-001 Temperatur Sensor Modul

Willkommen!

LinkerKit LK-Temp2 Raspberry Pi und Arduino

Anwendung und Programmierung von Mikrocontrollern. Anwendung und Programmierung von Mikrocontrollern

Programmieren des ESP8266 mit OLED

RFID RC522. Ausgabe Copyright by Joy-IT 1

Grundlagen der Anwendung und Programmierung des ESP8266. Dennis Hoffmann Mittwoch, :30 Uhr Schulungsraum SW23/147

ESP32 Pico-Board. und Node-RED ESP32 Addon. ESP32 und Node-RED. Vers. 1.0

TCS3200 Farbsensor. Schritt 1 Anschließen des Sensors. Bild 1: TCS3200 Farbsensor

Joy-IT Ultraschall Abstandssensor

RFID RC522. Ausgabe Copyright by Joy-IT 1

Arduino Self Balancing Roboter.

Es kann Stand-Alone oder als Erweiterung einer µc Schaltung verwendet werden.

Arduino LCD Shield. Quelle:

Moto1. 28BYJ-48 Stepper Motor. Ausgabe Copyright by Joy-IT 1

Moto1. 28BYJ-48 Stepper Motor. Ausgabe Copyright by Joy-IT 1

Girls Day 2018 Programmiereinführung

ERWEITERUNGSSHIELD MIT ANALOGEN EINGÄNGEN

Arduino für FunkAmateure

Was so passieren wird:

ESP32 Pico-Board. ADC mit MCP ESP32 Addon. ADC- mit dem MCP3008. Vers. 1.0

Der I²C-Bus. Vorstellung des Inter-Integrated Circuit -Bus. Aufbau und Funktionsweise. Beispiel PortExpander am Arduino

Erste Gehversuche mit ARDUINO (DL6OAA)

Mark VHS Augsburg Einführung in die Mikrocontroller-Programmierung.

Jaspreet Singh Dulai Seminar S1 2015/2016. Bluetoothshield

Girls Day 2017 Programmierung

4. Ditzinger Makerspace. Arduino Teil 1. Ein Projekt von Repair-Café und Stadtbücherei Ditzingen Stadtbücherei Ditzingen UG

Arduino Line Follower Roboter.

Einführung in Mikrokontroller Benutzung mit dem Arduino Board. Ramon Hofer ICVR

BAUANLEITUNG ROBO-REGENTRUDE

Tag 4 7 Segment-Anzeige, File Include, LC-Display

Gamecontroller Der Bewegungssensor - Links-Rechts-Steuerung

Programmieren in C / C++ Internet der Dinge Mikrocontroller ESP8266

8: IIC-Bussystem / PID

ArduSmartPilot mit WiFi-Server und MIT App Inventor

LCD-Display 16x2 QAPASS (AllNet)

Rotary Encoder (RE)

Einführung Arduino - Aufbau

STM32 - Schieberegister, SPI - u

RFID Modul basierend auf NXP MFRC-522

Kapazitiver Feuchtigkeits- und Temperatursensor mit I2C Interface und Schaltausgang

ESP32 Pico-Board. und Node-RED GUI ESP32 Addon. ESP32 und Node-RED GUI. Vers. 1.0

Arduino µcontroller. Virtuelle COMSchnittstelle

Wir hätten nie gedacht das drei Computer und Elektronik-Fans soweit kommen!! Mit diesem Video sagen wir vielen Dank!

Fachprojekt for Embedded System: Design and Implement Your Own Embedded Systems (2) LS 12, TU Dortmund

multimess Bedienungsanleitung Funktionserweiterung 4F144-1-LED-ESMSMT-... 4F144-2-LED-ESMSMT-... Dreiphasiges Netzmessinstrument

Ein kleiner ARDUINO mit viel Speicher für Datalogging (Wetterstation), LED Stripe Anwendungen u.v.a.m.

Internet of Things - Projektvortrag

Welche Informatik-Kenntnisse bringen Sie mit?

eblock, SD-Kartenleser Projektteam: Henrik Esche Tobias Albers Michael Heßling Daniel Lütfrenk Jonas Wieschmann

Bihor Magnet Sensor KY-035

Tino Das Arduino-Shield für Radioaktivitätsmessung mit einem Sparkfun seriellen 7-Segment Display als Anzeige Bernd Laquai, 22.5.

RGBWW WLAN LED Dimmer mit H801 (ESP8266)

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

analoge Ein- und Ausgänge

MSP-EXP430G2. LaunchPad Entwicklungskit MSP-EXP430G2. Schnellstart mit dem Texas Instruments. LaunchPad Entwicklungskit

Entwicklungsboard 16F1824

JOY-iT TFT-Display 1.8

Wetterdaten online (BME280)

Android + Arduino Hardware steuern mit Android. Entwicklertag Karlsruhe, Sebastian Wastl

SBC ButtonMatrix Bedienungsanleitung. Verwendung mit einem Arduino Schritt 1 Anschließen der Matrix

Einführung DIP & AVR EVK1100

~10 RESET 3.3V 5V GND GND VIN

10: Serial Communication Interface (SCI)

Die Verdrahtung ist relativ einfach, wir stecken das Modul auf einen der Kompatiblen Arduinos. Kompatibel sind:

Arduino Kurs Bits und Bytes. Stephan Laage-Witt FES Lörrach

Serielle Kommunikation mit dem Arduino. Teil 1: Das Serial Peripheral Interface (SPI)

Praktikum DST (MRT Teil) 2. Termin

Felder und Schleifen. Themen heute. Felder Schleifen Heartbleed. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Willkommen! Vorbereitung:

Arduino und Amateurfunk (1)

DC/DC Hochspannungsmodule dbc-serie - Bedienungsanleitung

Die Sonne spielt Musik

XT - NANO - SXL XT-NANO-SXL

Arduino, IR Fernbedienung dekodieren

Linear Magnetic Hall Sensor KY-024

Projektworkshop Digitales Haustier. Digitales Haustier. Bau dir ein Digitales Haustier, das schnurrt, wenn du es streichelst. 1/8

LCD Modul 84x84 Nokia 5110

Embedded Hardware Getting Started

Zusatzinformation zum USB-Flashdrive mit ARM und RS232

Ansteuerung eines LCD-Screens

multimess Bedienungsanleitung Funktionserweiterung 4F144-1-LCD-ESMSMT-... 4F144-2-LCD-ESMSMT-... Dreiphasiges Netzmessinstrument

Arduino für FunkAmateure

Transkript:

2016/04/03 21:14 1/10 HelvePic32 Breadboard Alle Beispiele, welche beim Helvepic32 angegeben sind, können unverändert natürlich auch beim HelvePic32 Breadboard verwendet werden. Daher nutzen wir die Gelegenheit, einen Internet Data Logger aufzubauen. (Selbstverständlich geht diese Beispiel auch mit dem Helvepic32) Lokaler Monitor Selbstverständlich kann ich alles über die Serielle Schnittstelle monitoren, wenn ich den Logger aber an einer Stelle einbauen will, ist es oft hilfreich, den aktuellen Status am Logger anzuzeigen. Inzwischen sind TFT Displays so günstig geworden, dass wir hier einen 1.8" TFT mit SPI-Anschluss verwenden. Da der HelvePic32 mit 40 MHz läuft, sind die Monitorausgaben mit dem SPI Bus hinreichend schnell. Die Anschlüsse dieser TFT Module variieren von Modell zu Modell, so dass hier nur eine exemplarische Darstellung gewählt wird: erstes mit der Versorgungsspannung verbunden: Boxtec Playground - http://playground.boxtec.ch/ Das Modul wird als

helvepic32bb:bspn5110:start http://playground.boxtec.ch/doku.php/helvepic32bb/bspn5110/start Danach verbindet man RST mit dem Reset des HelvePic32 jetzt RS, auch oft als CD bezeichnet, nicht zu verwechseln mit CS (auch SS) nun SDA, besser als MOSI (Master Out, Slave In) http://playground.boxtec.ch/ Printed on 2016/04/03 21:14

2016/04/03 21:14 und SCK und als letztes CS, auch SS genannt Boxtec Playground - http://playground.boxtec.ch/ 3/10

helvepic32bb:bspn5110:start http://playground.boxtec.ch/doku.php/helvepic32bb/bspn5110/start Jetzt kann man dieses Display ansprechen. Das funktioniert sowohl mit der bekannten UTFT Library als auch der von den Entwicklern von UECIDE geschriebenen DisplayCore Library. Das TFT hat den Controller ST7735. Als ersten Test geben wir einfach die verstrichene Zeit aus. Code kommt... DHT22 Sensor Als Datenquelle wollen wir den DHT22 einsetzen. Dieser ist zwar etwas teurer als der billige DHT11, dafür aber genauer und stabiler. Von den vier Pins sind nur drei belegt. Oft findet man auch einen fertigen Breakout, der den Pull-Up Widerstand schon an Board hat: Der DHT22 wird mit Masse und 3.3V verbunden. Man kann ihn auch mit 5V verbinden, bei einigen Modulen soll dadurch eine bessere Messung erzielt worden sein. http://playground.boxtec.ch/ Printed on 2016/04/03 21:14

2016/04/03 21:14 5/10 Zur Auslese verwenden wir die DHT Library (alle Libraries sind am Ende bereitgestellt) ESP8266 WiFi Modul Als letztes fügen wir ein WiFi Modul hinzu, welches ein ESP8266 Modul verwendet. In diesem Beispiel verwenden wir ein fertiges Breakout, das uns die Beschaltung des ESP8266 abnimmt: Boxtec Playground - http://playground.boxtec.ch/

helvepic32bb:bspn5110:start http://playground.boxtec.ch/doku.php/helvepic32bb/bspn5110/start Hier kommt nun eine Eigenschaft der HelvePic32 besonders zum Tragen: Da Serial0 und Serial1 nicht über den USB Anschluss laufen, kann man das WiFi-Modul direkt an diese Schnittstelle anschliessen. Da Serial1 mit dem SPI Bus verbunden ist, wählen wir Serial0. Anmerkung: Serial1 nutzt die gleichen Pins wie der SPI Bus. Das ist die Vorerinstellung. Im Gegensatz zum Arduino, kann man diese Pinbelegung aber ändern, was an anderer Stelle beschrieben ist (Peripheral Port Select) Web Server Der folgende Code verbindet sich mit dem Web-Dienst von Thingspeak.com (die entsprechenden ID-Informationen müssen angepasst werden. #include "HelvePic32.h" #include <DHT22.h> #define DHT22_PIN np[right][2] DHT22 mydht22(dht22_pin); #define ESPgppd np[right][1] // SMD #define ESPreset np[left][0] #define SSID "xxxx SSID xxxx" #define PASS "xxxx passwort xxxx" #define IP "184.106.153.149" // thingspeak.com String GET = "GET /update?key=xxxx_api_key_xxx&field1="; String F2 = "&field2="; String inputstring = ""; // a string to hold incoming data const char* header = "Sensor Monitor"; const char* footer = "HelvePic32.org"; boolean debug = false; // if true: ignore DHT float avgt, avgh; uint8_t cnt; void setup() { pinmode(espgppd,output); pinmode(espreset,output); digitalwrite(espgppd,high); digitalwrite(espreset,high); avgt = 0.0; avgh = 0.0; cnt = 0; Serial.begin(9600); Serial0.begin(115200); dowait(10); http://playground.boxtec.ch/ Printed on 2016/04/03 21:14

2016/04/03 21:14 7/10 Serial.println("Send AT to Esp8266"); Serial0.println("AT"); Serial.println("Wait for 5 seconds"); dowait(5); while (Serial0.available()){ char inchar = (char)serial0.read(); inputstring += inchar; Serial.print(inputString); if(inputstring.indexof("ok")>0){ Serial.println("ESP8266: OK"); connectwifi(); else { Serial.println("Send AT+RST to ESP8266"); Serial0.println("AT+RST"); Serial.println("Wait for 5 seconds"); dowait(5); if(serial0.find("ready")){ Serial.println("ESP8266: OK"); connectwifi(); else { Serial.println("ESP8266 not responding as expected"); Serial.println("Wait for DHT "); dowait(2); void loop() { DHT22_ERROR_t errorcode; char bt[10]; char bh[10]; String tempc, hum; if (debug) { if (cnt==0) { Serial.print("Debug Mode - no Data --- OK --- "); Serial.println(millis()); Serial.print("."); avgt += 23.5; avgh += 48; cnt++; if (cnt>29){ Serial.println(); avgt = (float)avgt/cnt; avgh = (float)avgh/cnt; Serial.println("Debug Mode - Sending Data to ESP8266"); tempc = dtostrf(avgt, 5, 2, bt); hum = dtostrf(avgh, 5, 2, bh); updatedht(tempc, hum); cnt = 0; Boxtec Playground - http://playground.boxtec.ch/

helvepic32bb:bspn5110:start http://playground.boxtec.ch/doku.php/helvepic32bb/bspn5110/start avgt = 0; avgh = 0; else { errorcode = mydht22.readdata(); switch(errorcode) { case DHT_ERROR_NONE: Serial.print("Humidity: "); Serial.print(myDHT22.getHumidity()); Serial.print(" %"); Serial.print("Temperature: "); Serial.print(myDHT22.getTemperatureC()); Serial.print(" C "); Serial.print("---- OK ----"); Serial.print(millis()); avgt += mydht22.gettemperaturec(); avgh += mydht22.gethumidity(); cnt++; if (cnt>59){ avgt = (float)avgt/cnt; avgh = (float)avgh/cnt; Serial.println(" -----> Sending averages to WEB Server"); Serial.print("Humidity: "); Serial.print(avgH); Serial.print(" %"); Serial.print("Temperature: "); Serial.print(avgT); Serial.print(" C "); tempc = dtostrf(avgt, 5, 2, bt); hum = dtostrf(avgh, 5, 2, bh); updatedht(tempc, hum); cnt = 0; avgt = 0; avgh = 0; case DHT_ERROR_CHECKSUM: Serial.print("check sum"); case DHT_BUS_HUNG: Serial.print("BUS Hung "); case DHT_ERROR_NOT_PRESENT: Serial.print("Not Present "); case DHT_ERROR_ACK_TOO_LONG: http://playground.boxtec.ch/ Printed on 2016/04/03 21:14

2016/04/03 21:14 9/10 Serial.print("ACK time out "); case DHT_ERROR_SYNC_TIMEOUT: Serial.print("Sync Timeout "); case DHT_ERROR_DATA_TIMEOUT: Serial.print("Data Timeout "); case DHT_ERROR_TOOQUICK: Serial.print("Polled to quick "); Serial.println(); delay (2000); // DHT needs 2 s for next measurment/poll boolean connectwifi(){ Serial.println("AT+CWMODE=1"); Serial0.println("AT+CWMODE=1"); dowait(2); String cmd="at+cwjap=\""; cmd+=ssid; cmd+="\",\""; cmd+=pass; cmd+="\""; Serial.println(cmd); Serial0.println(cmd); Serial.println("Waiting 8 seconds to set WiFi credentials"); dowait(8); if(serial0.find("ok")){ Serial.println("ESP8266: OK"); return true; else{ Serial.println("ESP8266: failed"); return false; void updatedht(string tc, String hu){ Serial.println("Send Data to WEB "); String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += IP; cmd += "\",80"; Serial.println(cmd); Serial0.println(cmd); Serial.println("Waiting 2 s to connect to Web Server"); dowait(2); if(serial0.find("connect")){ Boxtec Playground - http://playground.boxtec.ch/

helvepic32bb:bspn5110:start http://playground.boxtec.ch/doku.php/helvepic32bb/bspn5110/start // if(serial0.find("linked")){ Serial.println("ESP8266: Linked"); cmd = GET; cmd += tc; cmd += F2; cmd += hu; cmd += "\r\n"; Serial.print("AT+CIPSEND="); Serial.println(cmd.length()); Serial.println(cmd); Serial0.print("AT+CIPSEND="); Serial0.println(cmd.length()); delay(500); if(serial0.find(">")){ Serial0.print(cmd); if(serial0.find("send")){ Serial.println("ESP8266: Send OK"); else{ Serial.println("ESP8266: Send failed"); Serial.println("AT+CIPCLOSE"); Serial0.println("AT+CIPCLOSE"); return; else { Serial.println("ESP8266: cannot connect to WEB Server"); void dowait(int s){ for (int i=0; i<s; i++){ Serial.print("."); delay(1000); Serial.println(); HelvePic32 Breadboard From: http://playground.boxtec.ch/ - Boxtec Playground Permanent link: http://playground.boxtec.ch/doku.php/helvepic32bb/bspn5110/start http://playground.boxtec.ch/ Printed on 2016/04/03 21:14