Data do internetu ■ základy tvorby webových stránek - HTML ■ moduly pro WiFi komunikaci ■ jak dostat data do internetu ■ oživení obsahu s PHP - bezdrátová meteostanice ■ moderní domácnost - RGB LED a ovládání osvětlení z webu Webové stránky ■ každodenní využití internetu je primárně založeno na otevírání zajímavých webových stránek ve vhodném prohlížeči (internet browser) - v mnoha případech zejména mobilních sociálních sítí či firemních řešení je to často nahrazeno vhodnou aplikací (Facebook, Youtube, Twitter, Instagram, ...) pro mobilní zařízení či instalací programu (client) v klasickém PC ■ v nejjednodušším případě se ale jedná o stažení textového souboru s HTML obsahem (hypertext markup language) z webového serveru do lokálního počítače a jeho zobrazení - webový server může klidně běžet i na tom lokálním počítači, což je velmi výhodné při tvorbě webových stránek či vývoji webových aplikací - soubor webové stránky - třeba info.html - se dá zobrazit pomocí prohlížeče (prezentace obsahu), a nebo se dá otevřít pomocí nějakého textového editoru - zobrazení kódu generujícího obsah Tvorba webové stránky ■ html je prostý text - jde tedy vytvořit nebo upravit v nejběžnějším textovém editoru - Poznámkový blok (Win - Notepad) ■ pohodlnější je nějaký programátorsky orientovaný editor, který dokáže barevně zdůraznit syntaktické prvky HTML kódu (Notepad++, tuzemský PSPad) [ji biochem_info.htm - Notepad File Edit Format View Help BÍochemické informace


BIOCHEMICKÉ INFORMACE (2013/lll)

Petr Skládal (Ústav biochemie PřF MU)

 

Výukový materiál - informační zdroje pro biochemii

  • primární zdroje - publikované články, patenty
  • sekundární zdroje - databáze obsahů časopisů nebo vydaných patentů (včetně klíčových slov a abstraktu)
    PSPad - [H:\_edu\sem_bakpr_1\bioinfo\biochem_info.htm] D File Projects Edit Search View Format Tools Scripts HTML Settings Window Help '•llilPlípwqpiaal^^l-ÝBllx m 9 P EE C m A Biochemické informace


    BIOCHEMICKÉ INFORMACE (2013/III) Petr skládal (Ústav biochemie PřE MU)

    Snbsp;

    výukový materiál - informační zdroje pro biochemii text uzavřený mezi ■ tágy určují, jak se text zobrazí v prohlížeči - forma prezentace, tágy jsou uzavřeny v - co není v ostrých závorkách, je text, který se bude zobrazovat ■ jednoduchá stránka: ■ co je co: začíná a končí dokument a začíná a končí hlavičku, která se sice nezobrazuje, ale obsahuje některé důležité údaje, například a vymezují název dokumentu (klidně jiné než název souboru) a co je mezi nimi, to se bude zobrazovat -jedná se o vlastní tělo (body) dokumentu První webová stránka Zde začíná text stránky... výše uvedené tágy by měl obsahovat každý html soubor tento 1) způsob je jistě nejnáročnější, ale máme vše pod kontrolou jednodušeji? ■ pro tvorbu webu jsou samozřejmě dostupné ■ 2) dedikované grafické editační programy, které dle požadovaného formátu samy vkládají potřebné tágy - uživatel je tedy v podstatě vůbec nemusí znát (WYSIWYG) - předpřipravené šablony, vše je velmi pohodlné, než se vyskytnou nějaké problémy, nebo je třeba vytvořit něco nestandardního ■ 3) speciální redakční systémy (CMS, content management systém) -WordPress, Drupal, Joomla - pouze se vkládá text a upravuje formát - stáhne se, nainstaluje na vlastní server, a může se začít plnit... ■ 4) webové služby - wix, webnode, webgarden, estranky a Proweb - po registraci se pracuje přímo na webu poskytovatele, výsledkem je web přístupný přes adresu typu www.vlastni_nazev.poskytovatel_sluzby.cz ■ ... u variant 3,4 je velmi složité přejít s hotovým webem na jinou platformu ■ pro jednoduché záležitosti (tato přednáška, domácí projekty) lze doporučit variantu 1) případně v kombinaci se začleněním výstupů z varianty 2) další „vymoženosti" ■ reálné webové soubory (neco.html nebo neco.htm) neobsahují pouze html kod, ale i další elementy ■ definující styl obsahu - umístěné v rámci hlavičkové části, to ale může být i ve speciálním samostatném souboru styly.css (kaskádové styly) - výhodné pro unifikaci stylu pro různé stránky v rámci webu a pro snadné změny proveditelné na jediném místě ■ javascript - pro „oživení" webového obsahu, resp. možnost reagovat na uživatelské akce (myš, klávesnice,...) ■ zapisuje se do html mezi tágy v rámci těla dokumentu - je to vlastně interpretovaný programovací jazyk, běží v rámci prohlížeče na lokálním počítači - na prohlížeči to ale může uživatel zakázat (bezpečnostní riziko) ■ populární je také tvorba webového obsahu pomocí PHP - skript („program") běží na webovém serveru a z tam přítomných skript.php souborů se vytváří webový obsah, který pak posílá do prohlížeče uživateli zde to ale nebudeme řešit... ■ není naším cílem naučit se vytvářet webové stránky - to je nad rámec našich možností ■ základní dovednosti lze získat samostudiem, velmi doporučuji www.jakpsatweb.cz ■ naučí srozumitelnou formou základy tvorby webu pomocí html, css stylů a javascriptu ... existuje velmi dlouho, je průběžně aktualizováno ■ další velmi názorný výukový web je www.w3schools.com ■ velmi príjemnejšou zde „try it yourself" části, kdy se v levém okně zadává kód, a vpravo se hned ukáže, jak to bude vypadat v prohlížecí ■ nadále pouze použijeme drobné fragmenty, které nám poslouží pro realizaci IOT potřeb a požadavků Z arduina do internetu? ■ historicky šlo připojení do ethernetu provést přes „shield" modul, který se k základní Uno desce shora připojil a poskytnul klasický RJ-45 konektor a SD kartu (webové soubory) - základem je čip Wiznet 5100 - použití protokolů TCP i UDP, při programování je možné využít knihovnu Ethernet library ■ následně se to spojilo do jediného modulu Arduino Ethernet, scházel mu USB konektor - programovalo se přes externí USB-seriový převodník - aktuálně sice převládají bezdrátové varianty WiFi komunikace, ale pevné připojení může být stále výhodné, třeba díky spolehlivosti a robustnosti, nemožnosti rušení ■ lze pořídit ethernetové moduly na bázi čipu Wiznet 5500 či ENC28J60, připojují se přes SPI rozhraní, nebo lze přes sériový port WiFi komunikace revolučním krokem pro bezdrátové připojení do internetu (a nebo pouze do domácí WiFi sítě, dle potřeby...) se stal primárně komunikační modul ESP8266 odEspressif varianta ESP-01: primárně se dá připojit k jinému mikrokontroleru (Arduino, Xiao, ...) pomocí Sériové linky (i SoftwareSerial) - ESP jede na 3.3 V, ale mělo by „přežít" i 5 V TTL úroveň (?) - ukázka bezpečného propojení: - pak se nastavení modulu, připojení do WiFi a posílání dat do internetu realizuje prostřednictvím AT příkazů - mimo Rx a Tx je ještě nutné propojit enable pin (aktivační) CH_PD s Vec a samozřejmě také Vec a GND - napětí 3.3 V vyvedené z Arduino modulu může být příliš „měkké" pro nároky WiFi komunikace - stabilnější je získat gnd „tvrdé" 3.3 V z 5 V výstupu přes AMS1117 obvod • p | ||C a™ S? 0 EA £j I ONVN - ONIflOHV «g i m m ■ CH PD R5T vec O ©END £) Ogp|o 2 Qrx 2 1Kohm □ 2K ohm -aoi +3.3V GND ESP-xx ■ k dispozici je celá řada modulů lišících se typem antény, počtem a uspořádáním připojovacích pinů ■ s prototypovací deskou se nejsnadněji připojí třeba ESP-05 arduino - WiFi - internet ■ kombinace Xiao - ESP požaduje propojení GND-GND, 3.3V-Vcc,Rx-Tx,Tx-Rx ■ potřebujeme znát název WiFi sítě a heslo ■ a webový server pro spuštění PHP skriptu, co bude přijímat data - stačí na počítači spustit balík WAMP či LAMP (Windows/Linux Apache MySQL PHP) Aerial / antennae connector 1 GND Reset GND Rx Tx Vec (3.3V) fčTTTfl A8 ■•7:1 SCK A7 D7 RX Analog Digital l'C UART Power GND SPI String ssid ="aaaa"; String password="xxxxxx"; String data; String server = "147.251.99.99"; // your server ip String uri = "/_sys/esplog.php"; [// location of the script String sadc; void setup() { Seriall.begin(115200); Serial.begin(115200); reset(); connectWifiQ; analogReadResolution(12); Serial.println("Ready"); } void reset() { Seriall.println("AT+RST"); delay(1000); if(Seriall.find("OK") ) Serial.printing "Module Reset"); } void connectWifi() { String cmd = "AT+CL void loop () { sadc = String(analogRead(Al)j DEC); Serial.println(sadc); data = "value=" + sadc; httppost(); delay(2090); } kod pro Xiao ssid a password vlastní na web serveru je v podadresáři _sys umístěn skript esplog.php průběžně se posílá hodnota z analogového vstupu A1 ... http protokol není zrovna jednoduchý void httppost () { Seriall.println("AT+CIPSTART=\"TCP\"J\"" + server + "\".,80"); //start a TCP connection. if( Seriall.find("0K")) { Serial.println("TCP connection ready"); > delay(100); String postRequest = "POST " + uri + " HTTP/1.9\r\n" + "Host: " + server + "\r\n" + "Accept: *" + "/" + "*\r\n" + "Content-Length: " + data.length() + "\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n11 + "\r\n" + data; String sendCrrd = "AT+CIPSEND="; //determine the number of caracters to be sent. Seriall.print(sendCmd); Seriall.println(postRequest.length() ); delay(500); if(Seriall.find(">")) { Serial.println("Sending.."); Seriall.print(postRequest); if( Seriall.find("SEND OK")) { Serial.println("Packet sent"); while (Seriall.available()) { String tmpRSeriall = Seriall.readString(); Serial.println(tmpRSeriall); } Seriall.println("AT+CIPCLOSE"); // close the connection } } } // thanks to arduino.stackexchange.com/questions/51806/sending-data-from-esp8266-to-php přijímací PHP skript ■ hodnota poslaná přes POST se doplní o časový údaj a uloží jako nový řádek v textovém souboru esplogs.txt: < ŕphp $value = date("H:i:s"). "\ť\ $_P0ST ['value1]; $textfile = "esplogs.txt"; SfileLocation = "$textfileM; $fh = fopen($fileLocationj 'a') or die("Something went wrong!"); fwrite($fhJ $value); fwriteíSfh, "\r\n"); fclose($fh); //echo "received: '\$vaLue."
    "; ?> ■ při nekvalitním WiFi připojení - větší vzdálenost - se data někdy nemusí podařit doručit ■ PHP je velmi výkonný programovací jazyk pro tvorbu dynamických webů, běží na serveru a do prohlížeče přichází až hotová webová stránka (bezpečné...) 18:06:58 492 18:07:01 502 18:07:03 483 18:07:07 512 18:07:10 517 18:07:12 489 18:07:32 511 18:07:51 484 18:07:53 491 18:08:12 500 18:08:31 516 18:08:51 521 ESP jinak? ■ nabízí se otázka - nešlo by program z arduina umístit rovnou do ESP? ■ to je další ve skutečnosti velmi oblíbená a nyní již převládající alternativa, ESP2866 a zejména výkonnější dvoujádrový ESP32 mají dostatek prostoru i výkonu pro běh programu a komunikaci ■ to byl ten správný základ, který vlastně „nastartoval" nástup IOT ■ ESP se dá programovat přímo v prostředí Arduino IDE po doplnění odpovídajícím modulem - jinou variantou je jazyk MicroPython - interpretované příkazy - (Arduino IDE samozřejmě generuje při kompilaci přímo mnohem rychlejší spustitelný kód ...) ■ k dispozici je celá řada knihoven pro využití všemožných síťových protolů, webová stránka jde vytvořit a spustit přímo z ESP modulu a zobrazit data z připojených sensorů https://www.espressif.com/en/products/socs/esp32 MCU bohatý na funkce s integrovaným Wi-Fi a Bluetooth konektivita pro široký rozsah aplikací ESP32 Modules ÚL ESP32 DevKits Documents Certificates Get SDK Technical Support Q Getting Started Hardware Design Guidelines JikZI Courses Books Videos Qv^ ESP32 Forum Oficiální moduly: ESP32-DevKitC ESP-WROVER-KIT ESP32-PICO-KIT ESP32-Ethernet-Kit ESP32-DevKit-S(-R) ESP32-PICO-KIT-1 ESP32-PICO-DevKitM-2 ESP32-DevKitM-1 mnoho dalších klonů, často přidávajících další periferie (display, kamera, RF LoRa,...) programování: espressif IDE, MicroPython, Arduino IDE (plugin) ideální základ pro IOT http://esp32.net/ funkční uspořádání - blokové schéma Radio RF receive Clock generator RF transmit Bluetooth baseband Bluetooth link controller Embedded flash memory Included in ESP32-PICO-D4 system-in-package QFN module Cryptographic hardware acceleration r \ RSA Rivest-Shamir-Adleman V J SHA FIPS PUB 180-4 ^ J í RNG Random number gen. r \ AES FIPS PUB 197 Core and memory Xtensa LX6 microprocessor 32-bit; dual-core or single-core ROM Read-only memory SRAM Static random-access mem. RTC and low-power management subsystem PMU Power management unit Ultra-low-power co-processor Recovery memory f ' "\ Peripheral interfaces SPI Serial Peripheral Interface l2C Inter-Integrated Circuit f \ PS Inter-IC Sound I, ./ SDIO Secure Digital Input Output UART Universal async receiver-transmitter CAN Controller Area Network f \ ETH Ethernet MAC ^ J r >, IR Infrared PWM Pulse-width modulation ^. J ŕ > Temperature sensor Internal; range of -40°C to 125°C V j f * Touch sensors Ten capacitive-sensing inputs DAC Digital-to-analog converter v j SAR ADC ^Successive approx. analog-to-digital conv. ■ využívá buď mikroprocesor Tensilica Xtensa LX6 ve dvou- i jednojádrových variantách ■ alternativně i 2-dvoujádrový Xtensa LX7 nebo 1-jádrový RISC-V ■ zahrnuje vestavěné anténní spínače, výkonový zesilovač, nízkošumový přijímací zesilovač, filtry a správu napájení ■ vyvinut Espressif Systems (Šanghaj), vyráběn TSMC 40 nm procesem https://en.wikipedia.org/wiki/ESP32 Devkit C levné 227 Kč/1,39 USD dvě CPU jádra se dají jednotlivě ovládat, frekvece nastavitelná od 80 po 240 MHz lze programově odpojit hlavní CPU a využít kopí ťťťťl'lYľľl'ľľľl VíVľí spotřebou pro monitorování změn nebo překročení prahových hodnot u periferií - a pak aktivovat hlavní procesor - dlouhodobá funkce na baterii 38 pinů - řada periferií od kapacitních dotykových snímačů, Hallův snímač, rozhraní SD karet, Ethernet, SPI, UART, I2S (diq. audio) a I2C □I 3 3V RESET - EN KXHO ADCO GIOP36 Ski ho ADC3 GIOP39 ;o -o ADC6 GIOP34 zří —Q ADC7 - GIOP35 !o —o TOUCH9 ADC4 GIOP3Z ZkM -o TOUCH8 ADC5 - GIOP33 —o DAC1 - ADC18 - GIOP25 -o DAC2 ADC19 - G10P26 tm ho TOUCH7 - ADC17 - GIOP27 TOUCH6 I ADC16 Ji GIOP14 \m ho TOUCH5 ADC15 _i GIOP12 5b ho GND TOUCH4 ■ ADC14 j GIOP13 zm ho RX1 - FLASH D2 w Ji GIOP9 ho TX1 FLASH D3 - G1OP10 FLASH GIOP11 zm ho Vin 5V ho oh38}- GND oh GIOP23 J VSPI MOSI oh GIOP22 B ■ I2C SCL oh GIOP1 TXO o— ÉJ GIOP3 — RXO oh GIOP21 ■ M I2C SDA o-LUH GND oh Bij GIOP19 i VSPI MISO oh G10P18 ] VSPISCK oh Eg i GIOP5 - VSPI SS o-LUH GIOP17 TX2 .TrH GIOP16 RX2 o— GIOP4 — ADC10 o-dšH GIOP0 — ADC11 oh EH GfOP2 I- ADC12 oh MS GIOP15 — ADC13 o {22} GIOP8 FLASH D1 oh GIOP7 ■ 1 FLASH DO oh bd! GIQP6 1 M FLASH CK TOUCH0 TOUCH1 TOUCH2 TOUCH3 LCD 16X2 znaků ■ připojme si display - pohodlně s I2C modulem ■ ať vidíme, co se bude dít... ■ GND-GND, Vcc-5 V, SDA-SDA, SCL-SCL #include LiquidCrystal_l2C led (0x27,16,2) ; // create object, address and 16 cols x 2 rows void setup () { lcd.init () ; // initialize the LCD led.backlight () ; // backlight on led.print ( "Hello, world" ) ; // display text } void loop () { led. setCursor (0, 1) ; // cursor on first pos col=0 of the second line row=l led.print ( millis () / 1000) ; led.print ( " s" ) ; // print something delay (200); } ESP32 - WiFi mody station - při práci v tomto režimu se ESP32 chová jako zařízení s podporou WiFi připojené ke stávající existující aktivní síti WiFi access point - při práci v režimu Soft AP se ESP32 chová jako hostitel / poskytovatel WiFi sítě, k ní se mohou připojit další zařízení - takto lze např. sdílet mobilní připojení přes vytvoření malé wifi sítě třetí možností je použití obou modů současně, resp. smíšeně - třeba https://techtutorialsx.com/2021/01/04/esp32-soft-ap-and-station-modes/ ESP32 : Tli iIH ESP32 (STATION) Router (ACCESS POINT) Wi-Fi Client (STATION) Wi-Fi Client (STATION) Wi-Fi Client (STATION) : ESP32 ESP32 (ACCESS POINT) Wi-Fi Client (STATION) Router ■ WiFi síť typicky v domácím prostředí realizuje WiFi router ■ může být součástí nějakého přístupového zařízení, které nám nainstaluje poskytovatel internetového připojení (optický kabel, po drátě, bezdrátově - externí WiFi nebo mobilní, skylink,...) - k připojení potřebujeme znát název sítě a heslo (ssid, password) ■ konektivita pro široký rozsah aplikací, LAN porty pro vnitřní síťový segment ■ široké možnosti nastavování, někdy i VPN (virtual priváte network, bezpečné připojení do domácí / pracovní sítě) ESP32 jako AP takto vznikne „smart" zařízení, které nabídne své služby do okolí prostřednictvím vytvořené WiFi sítě, nejde tedy o přenos do internetu jako takový typicky přístup na vnitřní webovou stránku, která zobrazuje signály z připojených sensorů (moderní instrumentace), nebo nabídne ovládání připojených periferií (barevné žárovky, inteligentní zásuvky,...) příklad - zobrazení údajů ze ::::::::::::::::::: sensoru DHT22 - teplota a vlhkost::::::::::::::::::: :=jjj=* navíc přidán OLED display -potřebujeme zjistit IP adresu modulu, když nemáme připojení přes USB do počítače 1111 ttinclude #include H £IS t £1VO V£l H I ttinclude ttinclude "DHT.h" ttdefine DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 const char* ssid = "ESP32AP"; const char* password = "1234"; Webserver server(80); uint8_t DHTPin = 4; DHT dht(DHTPin, DHTTYPE); U8X8_SH1106_128X32_VISIONOX_HW_I2C u8x8 (/* reset=*/ U8X8_PIN_NONE) ; // ok for 0.91" OLED 128x32 float t,rh; char buf[20]; void setup () { Serial.begin(115200); delay(100); pinMode(DHTPin, INPUT); dht.begin(); u8x8.begin(); u8x8.setPowerSave(0); u8x8.setFont(u8x8_font_amstrad_cpc_extended_r); WiFi.mode(WIFI_AP); WiFi.softAP(ssid, password); sprintf (buf, "%s",WiFi . softAPIPO .toStringO .c_str()) ; Serial.print("WiFi AP IP: "); Serial.println(buf); u8x8.drawstring(1,2,buf); server.on("/", handle_OnConnect); server.onNotFound(handle_NotFound); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient () ; } ^w 2 reakce na pnstupy void handle_OnConnect() { t = dht.readTemperature(); rh = dht.readHumidity(); server.send(200, "text/html", SendHTML(t,rh)); } void handle_NotFound() { server. send (404 , "text/plain", "Not found"); } String SendHTML(float Temperaturestat,float Humiditystat){ String ptr = " \n"; ptr +="\n"; ptr +="ESP32 Weather\n"; ptr +="\n"; ptr +="\n \n"; ptr +="
    \n"; ptr +="ESP32 Weather\n"; ptr +="

    Temperature: "; ptr +=(float)Temperaturestat; ptr +=" oC

    "; ptr +="

    Humidity: "; ptr +=(float)Humiditystat; ptr +="%

    "; ptr +="
    \n \n \n"; return ptr; Příklad - Nanophotometer ■ The NanoPhotometer is equipped with WiFi, which can be used as a WiFi network or as a WiFi hotspot - WiFi network allows data transfer and direct printing via AirPrint® / IPP compatible printers supporting PDF format - Note: IPP version 2.2 is required and some printer configuration settings might need to be changed in order to allow communication with the NanoPhotometer ■ The WiFi Hotspot provides the option to control theNanoPhotometer by other WiFi devices as Windows computer, smartphones or tablets ■ WiFi Hotspot connection details: - SSID: NanoPhotometer serial number - passord: Implenuser ttinclude ttinclude LiquidCrystal_I2C led (0x27,16,2); const char* wifi_network_ssid = „wrouter"; const char* wifi_network_password = „hesloxxx"; const char* soft_ap_ssid = "ESP32_AP"; const char* soft ap password = "hesloxxx"; ESP32 smíšený mod void OnWiFiEvent (WiFiEvent_t event) { switch (event) { case SYSTEM_EVENT_STA_CONNECTED: Serial.printin("ESP32 Connected to WiFi Network"); break; case SYSTEM_EVENT_AP_START: Serial.printin("ESP32 soft AP started"); break; case SYSTEM_EVENT_AP_STACONNECTED: Serial.println("Station connected to ESP32 soft AP"); break case SYSTEM_EVENT_AP_STADISCONNECTED: Serial.println("Station disconnected from ESP32 soft AP"); break; default: break; } } void setup () { Serial.begin(115200); lcd.init (); led.backlight (); WiFi.onEvent(OnWiFiEvent); WiFi.mode(WIFI_MODE_APSTA); WiFi.softAP(soft_ap_ssid, soft_ap_password); WiFi.begin(wifi_network_ssid, wifi_network_password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting to WiFi.."); } Serial.print("ESP32 IP as soft AP: ") ; Serial, println (WiFi. sof tAPIPO ) ; led. setCursor (0 , 0) ; led. print (WiFi . sof tAPIP () ) ; Serial.print("ESP32 IP on the WiFi network: "); Serial.println(WiFi.locallP()); led.setCursor(0,1); led.print(WiFi.locallP()); } void loop () { } ESP32 LED ovládání ■ https://lastminuteenqineers.com/creatinq-esp32-web-server-arduino-ide/ ■ přes webovou stránku Další informace ■ Santos R. a Santos S. Learn ESP32 with Arduino IDE. 2020, 640 stran. - Stručný úvod do elektroniky, základních součástek a prvních triviálních experimentů, včetně různých mikrokontrolerů.