IoT Hackathon

Preview:

Citation preview

IoT Hackathon / Teplotni senzor@RDPanek

bit.ly/rdpanekiot

Tuto prezentaci najdete na SlideShare

Ruzni vyrobci / ruzne technologieDrahe / nekomunikuji spolu / ruzne UX ovladani

Pro nektere zde IoT konciPrototyp musime pretvorit v pouzitelne reseni

Lze postavit i to, co nelze koupitplatformy / moduly / open-hardware

Shieldy rozsiruji schopnostiNekonecne moznosti vlastni vyroby

Univerzalni PCB / Nepajive polePrototypovani

Univerzalni PCBRychle zhotoveni a prototypovani

PCB

Dratovanihmmmm

Raspberry Pi

ESP8266 / ATMEGA 328P / ATtiny / ...Software

ESP8266Software• NodeMCU eLua • NodeLua (+ NodeLua Web IDE) • ESP8266 BASIC • MicroPython • Espruino (JavaScript) • Arduino esp8266 (GitHub)

Espressif Systems • AT prikazy • OTA update • 802.11 (b +20dBm) /g/n, TCP/

IP stack, 2.4GHz, support WPA/WPA2

• STA/AP/STA+AP • 32-bit MCU • Deep sleep power < 10uA • Wake up and transmit packets

in < 2ms • PWM, GPIO, UART, I2C, ... • EEPROM !!!

ESP8266 familyGPIO / Memory / Software / Connectivity

ESP8266 blizsi pohledPCB kompaktibilita

Development boards

ESP8266 redukceLze zasadit do nepajiveho pole, ci PCB a lze zvolit typ ESP

WEMOS D1

WEMOS D1 minipinout

WEMOS D1 minishields

WEMOS D1 minishields

WEMOS D1 mini shieldsVyhody / nevyhody koupeneho / vlastniho shieldu

SchemataRuzna interpretace zapojeni

Teplotni senzorWemos D1 mini, OLED, DualBase, Protoboard, LDR, LED,

DS18B20, rezistors

Use caseESP8266 PCB + 3D print, DHT22 shield, OLED shield - LDR - DS18B20 - dualbase, smokeTester, PIR senzor - buzzer, rellay

Use case - Turris OmniaOpen-source, 1.6Ghz 2core, 2GB RAM, 8GB flash, 5 x Gbit LAN, 1 x Gbit WAN, 2 x USB 3.0, Mini PCI Express, mSATA, Wi-Fi 802.11 a/c/b/g/n, GPIO, OpenVrt, AutoUpdater, HoneyPot, programmable RGB, Cryptochip

LXC container - ElasticsearchTurris Omnia hosti LXC konteiner s Elasticsearch a jako persistentni uloziste se pouziva dodatecne pridany 120GB mSata disk

Interpretace loguSenzory odesilaji namerene hodnoty do Elasticsearch

a pomoci Kibany se provadi agregace a vizualizace dat

BlynkPomoci widgetu lze sledovat hodnoty na mobilnim telefonu, ktere jsou aktualne namereny - ci zadavat prikazy ( rozsvit svetlo )

REST API

Webova aplikaceHTML, CSS, Javascript

Proces vyvojeOd prototypovani po finalni produkt

Od prototypu po finalni vyrobek ( bastleni )Nepajive pole / 3D tisk / ATtiny85 - Atmel

O krok dale ( bastleni )Bezdratove ovladani zasuvky 433MHz

O krok dale ( bastleni )Znovupouzitelnost / replikace

Pomucky ( bastleni )

Pristroje ( bastleni )Pajeni

Tutorial: https://youtu.be/fYz5nIHH0iY?t=8m24s

Pristroje ( bastleni )Horkovzdusne pajeni

Pristroje ( bastleni )Laboratorni zdroj

Soucastky ( bastleni )Pouzdra, schemata, orientace, baleni

Soucastky ( bastleni )Schemata, datasheets

Pristroje ( bastleni )Metody mereni, Multimetr

Pristroje ( bastleni )Metody mereni, Osciloskop

Kontrukce ( bastleni )Stejneho vysledku lze dosahnout pomoci, MCU a vhodneho modulu, nebo skladbou dalsich soucastek

Pinout ( bastleni )Funkce a moznosti jednotlivych vyvodu

Sbernice ( bastleni )

Programovani ( bastleni )

https://www.arduino.cc/en/Reference/HomePage

http://www.pridopia.co.uk/pi-doc/ESP8266ATCommandsSet.pdfhttp://cristiansteib.github.io/Sim800l/info/SIM800+Series_AT+Command+Manual_V1.09.pdf

AT Commands

Prototyp ( bastleni )Prevedeni myslenky k funkcni prototyp / software

Eagle / schema

Eagle / priprava PCB

Eagle / priprava PCB

Prototyp ( bastleni )Vytisteni na papir a zkouska rozmisteni soucastek

Postup vyvojeNaskladneni soucastek /

E-shopy / pouzdra soucastek

Prototyp ( bastleni )Tvorba PCB

Prototyp ( bastleni )Osazovani PCB

Prototyp ( bastleni )Prusa MK2 / 3D tisk

Prototyp ( bastleni )3D tisk

Prototyp ( bastleni )Finalizace

Teplotni senzorZadani - postavte teplotni senzor z dostupnych soucastek, ktery• se pripoji k Wi-Fi a nastaveni si ulozi • nastavi limit mereni na 30000ms a nastaveni ulozi • zmeri teplotu • blika LED diodou po 200ms

• 1x start zarizeni • 2x uspesne pripojeno k Wi-Fi • 3x neuspesne pripojeno k Wi-Fi • 4x nepodarilo se zjistit cas ze site

• blika LED diodou po 50ms • 1x namerena hodnota byla odeslana do Elasticsearch • 2x namerenou hodnotu se nezdarilo odeslat

• Zmeri hodnotu osvetleni • Na OLED displeji vypise

• IP adresu pro pripojeni • Notifikaci o startu zarizeni • Notifikaci o (ne) uspesnem nahrani konfigurace • Namerenou teplotu • Informaci o neuspesnem odeslani namerenych

hodnot do Elasticserach • Informaci o neuspesnem zjisteni casu z NTP

• Zjisti dostupnost Elasticsearch • Odesle namerenou hodnotu do Elasticsearch a

zvaliduje odpoved • U zarizeni by melo jit zmenit URI Elasticsearch a

interval mereni

Pripravene stavebnice

V baleniWemosD1 mini, Oled display, prototype board, dualbase, rezistory, LDR, LED, Dallas DS18B20

Prakticke cviceni - WemosD1 mini

• step1: Serial link example

• step2: OLED example

• step3: LED example

• step4: LDR example

• step5: LDR and LED example

• step6: LDR & OLED & LED (bug)

• step7: dallas example

• step8: dallas and led example

• step9: dallas & led & oled

• step10: wifi-manager example

https://github.com/rdpanek/arduino/commits/hackathon

• step11: wifi-manager & LED status example

• step12: wifi-manager & LED status & OLED RSSI

& IP example

• step13: wifi-manager & OLED & Dallas & IF

Statement (bug)

• step14: Dallas & OLED and custom font

• step15: SPIFFS & ArduinoJSON example

• step16: wifi-manager & NTP example

• step17: wifi-manager & web-server example

• step18: wifi-manager ang GET request example

Priprava a pajeniVyzkousime si sestaveni celeho zarizeni a napajime hrebeny na dualbase shield

PajeniVyzkousime si sestaveni celeho zarizeni a napajime hrebeny na dualbase shield

PajeniPripajime prvni a posledni pin pro ukotveni, pote zbyle piny

PajeniPripraveny dualbase shield s pripajenymi hrebeny

PajeniVyzkousime si sestaveni celeho zarizeni a napajime WemosD1mini a protoboard shield

PajeniVyzkousime si sestaveni celeho zarizeni a napajime WemosD1mini - opet prvne prvni a posledni pin

PajeniVyzkousime si sestaveni celeho zarizeni a napajime protoboard shield - opet prvne prvni a posledni pin

PajeniVyzkousime si sestaveni celeho zarizeni a napajime OLED display

Zarizeni je pripraveno na oziveni. Muzeme nahrat prvni kod z Arduino IDE

Arduino IDEhttps://www.arduino.cc/download_handler.php

Nastaveni Arduino IDE

Vyber desky

Pridani podpory pro desky s ESP8266Soubor > Vlastnosti > Spravce dalsich desek URLhttp://arduino.esp8266.com/stable/package_esp8266com_index.json Nastroje > Vyvojovych desek > Manazer Desek > ESP > Instalace

Pripojeni zarizeni

Po pripojeni zarizeni k pocitaci bude zarizeni reprezentovano dalsim portem- po pripojeni zarizeni blikne modrou diodou- Upload Speed: 115200- po odpojeni zarizeni a znovu zapojeni - zkontrolovat nastaveny PORT a zvolenou Vyvojovou desku

Zaklady se sketch_jan24a.ino

Prakticke cviceni - step1: Serial link example

Nastroje > Seriovy monitor > 115200- pri uploadu sketche do zarizeni blika modra

led dioda

Prakticke cviceni - step2: OLED examplePocitadlo

Prakticke cviceni - step2: OLED exampleProhledneme si pozorne spodni stranu shieldu

Prakticke cviceni - step2: OLED example

squix78/esp8266-oled-ssd1306

Tento PC > Dokumenty > Arduino > libraries

Prakticke cviceni - step3: LED example

Prakticke cviceni - step3: LED example

Prakticke cviceni - step3: LED examplePodle barevneho oznaceni rezisotru vybereme ten spravny a podle pinu v kodu jej napajime na dany pin do protoboardu

Prakticke cviceni - step3: LED examplePripajime rezistor, stejne tak LED diodu

Prakticke cviceni - step3: LED examplePripajeny rezistor a LED dioda

Prakticke cviceni - step3: LED examplePropojime rezistor a diodu cinem, nakonec katodu s GND

Prakticke cviceni - step3: LED examplePo uploadu software bude LED dioda blikat

Prakticke cviceni - step4: LDR example

Prakticke cviceni - step4: LDR examplePripajime rezistor a LDR podle predchoziho schematu

Prakticke cviceni - step4: LDR examplePripajime rezistor a LDR podle predchoziho schematu

Prakticke cviceni - step4: LDR examplePripajime rezistor a LDR podle predchoziho schematu

Prakticke cviceni - step4: LDR example

Prakticke cviceni - step5: LDR and LED example

Prakticke cviceni - step6: LDR & OLED & LEDHodnota LDR se vypisuje na displej a dioda se rozsviti, pokud hodnota LDR klesne pod uvedenou mez

Prakticke cviceni - step6: LDR & OLED & LED (bug)

Prakticke cviceni - step7: dallas example

Prakticke cviceni - step7: dallas example

Prakticke cviceni - step7: dallas examplePripajime rezistor a teplotni cidlo

Kompletne osazeny prototype shieldKonec pajeni - kazdy osazeny prototype shield muze vypadat jinak

Kompletne osazeny prototype shieldKonec pajeni - kazdy osazeny prototype shield muze vypadat jinak

Kompletne osazeny prototype shieldKonec pajeni - kazdy osazeny prototype shield muze vypadat jinakKompletne osazeny prototype shieldKonec pajeni - kazdy osazeny prototype shield muze vypadat jinak

Konec pajeni - kazdy osazeny prototype shield muze vypadat jinak

Kompletne osazeny prototype shieldKonec pajeni - kazdy osazeny prototype shield muze vypadat jinak

Prakticke cviceni - step8: dallas and led example

Prakticke cviceni - step8: dallas and led examplePokud teplota dosahne 30 C, rozsviti se LED dioda, pokud teplota klesne pod 30 C, LED dioda zhasne

Prakticke cviceni - step9: dallas & led & oled

Prakticke cviceni - step9: dallas & led & oledTeplota se vypise na displej

Prakticke cviceni - step10: wifi-manager example

Prakticke cviceni - step10: wifi-manager example

Prakticke cviceni - step10: wifi-manager example

Prakticke cviceni - step10: wifi-manager example

Prakticke cviceni - step10: wifi-manager example

Prakticke cviceni - step11: wifi-manager & LED status example

Prakticke cviceni - step11: wifi-manager & LED status example

Prakticke cviceni - step12: wifi-manager & LED status & OLED RSSI & IP example

Prakticke cviceni - step12: wifi-manager & LED status & OLED RSSI & IP example

Prakticke cviceni - step13: wifi-manager & OLED & Dallas & IF Statement (bug)

Prakticke cviceni - step13: wifi-manager & OLED & Dallas & IF Statement (bug)Teplota se vypise na displej

Prakticke cviceni - step13: wifi-manager & OLED & Dallas & IF Statement (bug)IP adresa se vypise na displej

Prakticke cviceni - step13: wifi-manager & OLED & Dallas & IF Statement (bug)IP adresa se vypise na displej

Prakticke cviceni - step13: wifi-manager & OLED & Dallas & IF Statement (bug)Volna pamet se vypise na displej

Prakticke cviceni - step13: wifi-manager & OLED & Dallas & IF Statement (bug)RSSI se vypise na displej

Prakticke cviceni - step14: Dallas & OLED and custom font http://oleddisplay.squix.ch/#/home

Prakticke cviceni - step14: Dallas & OLED and custom font

Prakticke cviceni - step14: Dallas & OLED and custom fontPro zobrazeni teploty vyberte velky a dobre citelny font

Prakticke cviceni - step15: SPIFFS & ArduinoJSON example https://github.com/esp8266/Arduino/blob/master/doc/filesystem.md

Prakticke cviceni - step15: SPIFFS & ArduinoJSON example

{ "nazevZarizeni": "Teplomer", "pocetTeplomeru": 1, "namerenaTeplota": 24 }

Promenne

JSON

Promenne

String nazevZarizeni = "Teplomer"; int pocetTeplomeru = 1; float namerenaTeplota = 25.00;

nazevZarizeni = json["nazevZarizeni"].as<String>(); pocetTeplomeru = json["pocetTeplomeru"]; namerenaTeplota = json["namerenaTeplota"];

Restart zarizeniUlozeni konfigurace

Nacteni konfigurace

String konfiguracniSoubor = "/konfigurace.json";

String konfiguracniSoubor = "/konfigurace.json";

Prakticke cviceni - step15: SPIFFS & ArduinoJSON example

Prakticke cviceni - step15: SPIFFS & ArduinoJSON example Bug: nazevZarizeni = json["nazevZarizeni"]

reseni v /examples

Prakticke cviceni - step15: SPIFFS & ArduinoJSON example

Prvni spusteni

Ulozeni bylo uspesne. nazevZarizeni: Teplomer pocetTeplomeru: 1 namerenaTeplota: 25.00 Nacteni konfigurace bylo uspesne. -- start --

Druhe spusteni

FS File: /konfigurace.json, size: 71B

nazevZarizeni: Teplomer pocetTeplomeru: 1 namerenaTeplota: 25.00 Nacteni konfigurace bylo uspesne. -- start --

Prakticke cviceni - step16: wifi-manager & NTP example

Prakticke cviceni - step16: wifi-manager & NTP example

Prakticke cviceni - step17: wifi-manager & web-server example

Prakticke cviceni - step18: wifi-manager and GET request example ( REST-API )

Arduino libraries

Odeslani namerenych hodnot do Elasticsearch

{  "location": "most",  "heap": 26800,  "rssi": -70,  "senzor": "temperature",  "val": 28.94,  "ntpDateTime": "2017-01-26T12:15:03.000Z"}

{  "_index": "iot-2017.01.26",  "_type": "iot",  "_id": "AVnas4ukhWsDiAH10Jux",  "_version": 1,  "result": "created",  "_shards": {  "total": 2,  "successful": 1,  "failed": 0  },  "created": true}

POST {{protocol}}://{{server}}:{{port}}/iot-YYYY-MM-DD/iotURI

Request Response

Sestavte request a validujte response, ze ulozeni bylo uspene. Vyreste strategii odeslani namerenych hodnot, pokud se odeslani nezdari.