duinozone.cz - Arduino a Raspberry fórum

Poslední příspěvky

Stran: 1 [2] 3 4 ... 10
11
Projekty / Automatizace výroby- realizace
« Poslední příspěvek od pohk kdy Duben 23, 2019, 13:04:26 odpoledne »
Ahoj!
Sháním šikovné kolegy kteří by měli zájem se zapojit do vývoje a realizace mého soukromého projektu týkajícího se automatizace výroby v oblasti zpracování papíru a kartonu. JE tu někdo takový?   :)
12
Vědátorna / Re:konverzia stringu na premennú
« Poslední příspěvek od pulka kdy Duben 15, 2019, 16:54:08 odpoledne »
Asi bych použil nějaký tokenizer, teny funkci, která mi podle zadaného znaku ',' rozdělí nebo ukousne část stringu. Potom bych použil další tokenizer, který podle znaku ':' rozdělí ten podstring na klíčové slovo a na hodnotu. Podle klíčového slova bych identifikoval proměnnou, kam se má strčit hodnota, která se ze stringu převede na požadovaný datový typ.
Dělám to na 8051ED2 a celkem úspěšně. Chce to mít dostatek RAM. Jirka
13
Nabídka / Chrome получит популярную функцию Firefox
« Poslední příspěvek od iwapoga kdy Duben 14, 2019, 21:00:56 odpoledne »
На сегодняшний день открывать в браузере десятки вкладок — это почти норма для многих людей: от рерайтеров до сотрудников SMM-служб. Само собой, что для этого нужен мощный компьютер, однако проблема состоит в другом. В браузере Chrome в какой-то момент вкладок становится так много, что они не отличаются друг от друга — ведь не видны даже иконки сайтов. И потому компания Google решила скопировать то, что давно уже есть в Firefox. Речь идёт о функции прокручивания вкладок.

В Маунтин-Вью уже подтвердили, что компания планирует добавить подобное решение, что позволит не сжимать вкладки, подстраиваясь под ширину экрана. Открытые сайты можно будет пролистывать с помощью стрелок, а также колёсика мыши. При этом, по словам Питера Кастинга (Peter Casting), одного из разработчиков пользовательского интерфейса Google Chrome, система будет поддерживать выделение нескольких вкладок с помощью Shift + клик и Ctrl + клик.

Подобную функцию уже давно просили пользователи, и вот теперь она появится. При этом пока не сообщается, когда именно новая возможность будет добавлена. Быть может, её внедрят уже в Chrome 71, который выйдет в декабре, хотя точно это пока неизвестно.

Источник
15
Projekty / WEB-portál - Vykurovanie cez internet - otvorený hardvér
« Poslední příspěvek od martinius96 kdy Březen 24, 2019, 18:32:28 odpoledne »
Dnes by som rád predstavil projekt, ktorému sa dlhšie venujem a malými krôčkami ho vylepšujem. Projekt je stále vo fáze vývoja a priebežne sa počas chodu aktualizuje a pridávajú sa doň ďalšie funkcionality, ktoré nenarúšajú chod webaplikácie, ani zmeny v používateľskom hardvéri. Teda ten, kto portál aktívne prevádzkuje od prvého dňa behu webaplikácie, nepotrebuje nič inštalovať ani meniť zdrojový kód vo svojom mikrokontroléri počas celej doby vývoja doteraz.

Webaplikácia ponúka centrálny webový portál, ktorý slúži ako zberná brána pre dáta od používateľov s dôrazom na využitie otvoreného hardvéru. K portálu má prístup každý registrovaný používateľ a taktiež aj jeho hardvér, ktorý s webom komunikuje. Portál je navrhnutý v jazyku PHP s využitím MySQL databázy. Portál prijíma 6 teplôt od používateľa a dokáže vrátiť 1 výstup ZAP/VYP pre relé na riadenie kotla, ktorý je možné aplikovať skrz relé.

Používateľ pri registrácii na webovú stránku vyplní formulár s prihlasovacím menom, heslom  a navolí si riadiaici hardvér a senzory, ktoré chce použiť. Ich ďalšia zmena nie je počas využívania portálu možná.

Pre mikrokontroléry je na výber:
    Arduino Uno/Mega + Ethernet shield Wiznet W5100
    Arduino Uno/Mega + Ethernet modul Wiznet W5500
    ESP8266 (NodeMCU, Wemos, D1, Wavgat, modul...)
    ESP32 (Devkit v1-v4, WROOM a ďalšie)
Na výber z teplotných senzorov je v súčasnosti iba jeden variant:
    6x DS18B20 na OneWire zbernici
Po stránke funkčnosti portál umožňuje:
    Prihlásenie
    Zaznamenávať až 6 teplôt digitálnymi senzormi DS18B20 na OneWire zbernici
    V reálnom čase dáta reprezentovať používateľovi cez AJAX-ové volania PHP výpisu
    Funkcia izbového termostatu s voliteľným teplomerom, referenčnou teplotou a voliteľnou hysterézou
    Funkcia manuálneho zapnutia ZAP/VYP pre výstup na dobu neurčitú - upozornenie hláškou pri zapnutí
    História meraní v prehľadnej tabuľke (1000 záznamov)
    Vizualizácia nameraných dát v čiarovom grafe
    Vizualizácia aktivity výstupu (ZAP/VYP) v area grafe
    Generátor zdrojového kódu pre mikrokontróler
    Zmena prihlasovacieho hesla, zmena názvov teplomerov, navolenie teplomera riadiaceho kúrenie
    Real-time chat medzi registrovanými používateľmi
    Odhlásenie
Každý používateľ a jeho hardvér je jednoznačne identifikovaný vlastným tokenom, Token s používateľským menom využíva aj mikrokontróler, ktorý sa týmto preukazuje na webserveri pri predávaní dát. Overuje sa teda token a zároveň i používateľské meno a vzťahom medzi nimi.

Systém sa udržiava autonómne v chode pri pripájaní mikrokontroléra, prípadne aj používateľom na webe. Autonómne riadenie spočíva vo vykonávaní logiky pri príjme dát od mikrokontroléra, kedy sa overuje nastavený režim termostatu (automat/manual). V prípade automatu sa kontroluje riadiaca teplota, vybraný teplomer pre riadenie a hysteréza, v prípade zmeny stav zo ZAP na VYP, alebo opačne sa zmena prejaví zápisom do databázy. Každý request so zápisom dát potvrdí úspešnosť aj mikrokontroléru výpisom.

V prípade, že nie je dostupná webstránka, alebo konektvita z používateľovej siete, kde mikrokontróler prevádzkuje, automaticky vypne relé výstupu pre kotol a čaká určitý čas. Po čase sa opätovne skúša pripojiť na webserver. V prípade, že sa pripojí, okamžite sa s ním synchronizuje a riadi sa podľa neho. Do platforiem Arduino a ESP32 už bol implemetovaný aj watchdog, ktorý je tiež vygenerovaný vrámci kódu pre dané mikrokontroléry a v prípade zaseknutia mikrokontroléru vykoná jeho reset.

Nechcem zachádzať do všetkých funkcionalít, ktoré web ponúka. Obsahuje aj niekoľko funkcionalít, ktoré zatiaľ nie sú "viditeľné" používateľom. Jedná sa o rôzne štatistické nástroje teplôt, tendencií... Existujú v ňom aj administrátorske nástroje, ktoré umožňujú blokovať používateľov v prípade, že sa v chate nevyhodne vyjadrujú, alebo upravili vygenerovaný zdrojový kód, ktorý spamuje portál a pod. Administrátor v monitoringu vidí početnosť zápisov do databázy od každého používateľa a jeho správy v chate. Môže jednotlivých používateľov napomínať, zablokovať ich na permaban, či určitú dobu.

Po stránke mikrokontrolérov je nutné vedieť, že Arduino s Ethernet shieldom, respektíve modulom podporuje iba HTTP konektivitu a ESP zariadenia ESP8266, ESP32 podporuje HTTPS spojenia. ESP8266 vyžaduje fingerprint HTTPS certifikátu a ESP32 vyžaduje Root CA certifikát. ESP32 je možné napojiť aj do podnikových WiFi sietí pod protokolom 802.1x (WPA/WPA2 Enterprise).

Do portálu chcem ďalej implementovať:
    Doplniť ďalší riadiaci hardvér
    Doplniť prenosové technológie (Sigfox, NB-IoT)
    Doplniť rôzne voliteľné variácie senzorov
    Obmedzenie max. 1 zariadenia na 1 IP
    Zablokovanie používateľa na základe IP, alebo jeho mikrokontróler
    Výpis používateľovi v JSON formáte históriu dát pre jeho mikrokontróler
    Prispôsobiť chat pre vkladanie obrázkov
    Implementovať rôzne nástroje pre štatistiku (úniky tepla, výkon, efektivita, atď.)
    Implementovať platené funkcionality
    Po dokončení portál umiestniť na vlastnú doménu
    Implementovať POST metódu zberu dát
    Upozornenie používateľov e-mailom na zmeny, vypadnutie senzorov a pod.
    Vlastnú šablónu
    Lokalizáciu do viacerých jazykov
    Ovládanie hlasom v slovenčine a ďalších jazykov cez WebKit

Ak sa o projekt zaujímate, môžete nájsť o ňom viac informácii na adrese: https://arduino.php5.sk/vykurovanie-online.php
V súčasnosti vyvíjam aj multiuser ekvivalent pre meteostanice: https://arduino.php5.sk/meteostanice-online.php

Do portálu sa môžete zaregistrovať a vyskúšať s vašim mikrokontrolérom.
16
Vědátorna / Re:Linearni actuator
« Poslední příspěvek od Fenretooth kdy Únor 25, 2019, 05:35:36 dopoledne »
Each of these stories may not be the same.
17
Bastlírna / Re:komunikace po RS-485
« Poslední příspěvek od Fenretooth kdy Únor 25, 2019, 05:34:50 dopoledne »
I really like these things. Always trying to find information but didn't find the answer
18
Projekty / Capture points (DOMINATION) - Arduino + WiFi
« Poslední příspěvek od martinius96 kdy Únor 24, 2019, 00:28:50 dopoledne »
Airsoft je outdoor hra radiacia sa k extrémnym športom. Hra je veľmi populárna a tak si vyslúžila postupom času aj rôzne štýly hrania, teda herné módy. Väčšina z nich je postavená na populárnych FPS tituloch ako Counter Strike či Call of Duty. Od útočných a obranných módov až po Free-for-all. Jedným  veľmi obľúbených módom je aj Capture points, respektíve DOMINATION. V tomto hernom móde ide o minimálne dve lokácie, o ktoré tímy bojujú.

Cieľom hry je obsadiť a udržať oba body jedným tímom. Body sú umiestnené v neutrálnej lokácii, napríklad na úrovni stredu mapy po stranách, alebo každý v sídle druhého tímu. Aby bola hra dostatočne rýchla, stačí ak tím obsadí oba body. Ak je zapísaný na oboch bodoch (nemusí ho udržať po x sekúnd), hra sa končí a tím vyhral. Aby som hru urobil zaujímavejšou, vyhotovil som takéto dva body.
Každý bod obsahoval po hardvérovej stránke:
    Arduino Nano/Uno
[/list]
    buzzer (typu active/passive) pre ohlásenie konca hry
[/list]
    wifi modul nRF24l01 + PA + LNA
[/list]
    dvojica tlačidiel - pushbuttonov
[/list]
    LED diódy s farbami tímov
[/list]
    *doplnkové relé pre zopnutie silnejších svetiel na 12V/24V/230V
[/list]

Ako funguje systém po stránke funkčnosti?
Jedno tlačidlo je pre Tím 1 (žltý tím) a druhé pre Tím 2 (červený tím). Tím pri obsadení stlačí svoje tlačidlo, čo zmení farbu bodu podľa ich tímu. Ak jeden tím obsadí oba body, rozuzvučia sa hlásiče na oboch bodoch (hra sa skončí, alebo pokračuje ďalej podľa pravidiel organizátora akcie, napr. do posledného muža pre druhý bod za hru). Hra nie je časovo ohraničená limitom.

V reálnom čase medzi sebou obe Arduiná komunikujú s modulmi nRF24l01 + PA + LNA. Odozva medzi oboma Arduinami je na úrovni 1-5ms.Vďaka modulom nRF24l01 je možné komunikovať medzi Arduinami na obrovské vzdialenosti na stovky metrov v nezarušenom prostredí (nRF24l01 ponúka vyše 120 kanálov pre komunikáciu na 2,4Ghz.)

Pri využití externého 5v/3.3v zdroja je možné komunikovať až na 1,1 kilometra v nezarušenom prostredí najnižšou prenosou rýchlosťou (250kb/s). V programe pre Arduino sa určuje komunikačný kanál, výkon nRF modulu, prenosová rýchlosť (250kb/s až 2Mbps). Čím je vyššia rýchlosť zvolená, tým náchylnejší je systém na rušenie. V prostredí lesa sme s najnižšou prenosou rýchlosťou a maximálnym vysielacím výkonom dosiahli prenos na 310 metrov.

Princíp je teda veľmi jednoduchý a systém je možné rozšíriť o ďalšie nRF moduly. Jeden modul dokáže komunikovať až s ôsmymi modulmi, systém je teda možné rozšíriť až na 9 bodov, o ktoré sa bojuje. Najvyšší prenosový výkon nie je možné nastaviť pri napájaní z Arduina, nakoľko odber nRF prevyšuje prúdové charakteristiky regulátora. Využíva sa preto napájanie na 5-12V cez adaptér, do ktorého sa modul zasadí a má on-board regulátor na 3.3V.

Do modulu zapasuje aj modul nRF24l01 (bez PA + LNA). PA + LNA je označenie pre modul s anténou, ktorý je 10-12x lepší dosahovo ako pôvodný nRF24l01 modul. Pôvodný modul má maximálny dosah 100 metrov v nezarušenom prostredí s maximálnym výkonom. Modul nRF24l01 komunikuje po SPI zbernici a má voliteľné piny CE (Chip state) a CS (Chip select). Komunikácia je rýchla s nízkou latenciou. Tieto moduly vedia komunikovať iba medzi sebou, nie je ich možné použiť napríklad pre pripojenie k internetu a pod. Jedná sa výlučne o komunikačné moduly medzi sebou na frekvencii 2,4GHz. Hlavnou nevýhodou týchto modulov je vzdialenosť pinov od seba v oboch radoch, čo neumožňuje modul použiť do breadboardu. Preto sa pri vývoji bez adaptéra zrejme nezaobídete.

Pri použití hlásiča (buzzra) je možné generovať frekvenciu signálu, ktorú bude buzzer vydávať, minimum je 31Hz a možnosť je zvoliť až cez 65 5XXHz. Aktívne i pasívne buzzre k Arduinu znejú prakticky rovnako. Povedal by som, že aktívne sú o niečo hlasnejšie. Z vlastnej skúsenosti používam 800 - 4000Hz pre frekvenciu tónnov, čo sú tóny pomerne zreteľné a vhodné pre pípajúci zvuk, nie sú príliš otravné a je ich dobre počuť. Ovládať hlasitosť ako takú nie je u takýchto modulov možné. Pri nastavení novej hry je možné oba zariadenia odpojiť a pripojiť na batériu/adaptér, alebo obe zariadenia reštartovať tlačidlom pre premazanie uložených stavov tímov, aby hlásič ustal.

Ďalšie zaujímavé projekty vrátane stručných o tomto projekte je možné nájsť na mojom webe: https://arduino.php5.sk/airsoft-wifi.php

Riešenie používa vstavanú knižnicu SPI.h pre komunikáciu a knižnicu RF24.h pre nRF24l01 moduly. Je možné použiť i Radiohead knižnicu, ktorá ale neumožňuje regulovať vysielací výkon a voliť špecifické kanály, využíva tzv. pipes pre komunikačnú cestu, nie navolené číslo kanálu. Priložené zdrojové kódy môžete vyskúšať pre funkcionalitu spísanú vyššie a vyskúšať si takýto štýl hry. Pozor pri zapojení tlačidiel, používa sa zapojenie INPUT_PULLUP, teda tlačidlo je aktívne (stlačené) pri hodnote LOW - zem. Tento systém je vhodný pre športy typu Airsoft, Paintball, Nerf Wars. Vhodný pre tímy, športový areál a pod.
Zdrojový kód pre BOD 1:
Kód: [Vybrat]
// nRF24L01 BOD1
#include  <SPI.h>
#include "RF24.h"
#define CE 4
#define CS 3
RF24 nRF(CE, CS);
int odozva = 8;
int prijem = 12;
const int buzzer = 2;
const int cervenytim = 5;
const int zltytim = 6;
const int cervenaled = 7;
const int zltaled = 8;
byte adresaPrijimac[] = "prijimac00";
byte adresaVysilac[] = "vysilac00";
void setup() {
 Serial.begin(9600);
 pinMode(buzzer, OUTPUT);
 pinMode(cervenaled, OUTPUT);
 pinMode(zltaled, OUTPUT);
 pinMode(cervenytim, INPUT_PULLUP);
 pinMode(zltytim, INPUT_PULLUP);
 nRF.begin();
 nRF.setDataRate( RF24_250KBPS );
 nRF.setPALevel(RF24_PA_HIGH);
 nRF.openWritingPipe(adresaVysilac);
 nRF.openReadingPipe(1, adresaPrijimac);
 nRF.startListening();
}

void loop() {
 if (odozva == prijem) {

 tone( buzzer, 900, 800);

 delay(1000);
 } else {
 noTone;
 int vystupcerveny = digitalRead(cervenytim);
 int vystupzlty = digitalRead(zltytim);
 if (vystupcerveny == LOW) {
 odozva = 1;
 digitalWrite(cervenaled, HIGH);
 digitalWrite(zltaled, LOW);
 } else if (vystupzlty == LOW) {
 odozva = 2;
 digitalWrite(cervenaled, LOW);
 digitalWrite(zltaled, HIGH);
 }

 nRF.stopListening();
 nRF.write( &odozva, sizeof(odozva) );
 nRF.startListening();
 while (nRF.available()) {
 nRF.read( &prijem, sizeof(prijem) );
 }
 Serial.println("Prijata volba: ");
 Serial.println(prijem);
 Serial.println("Odozva: ");
 Serial.println(odozva);
 delay(50);
 }
}

Zdrojový kód pre BOD 2:
Kód: [Vybrat]
// nRF24L01 BOD2
#include  <SPI.h> //arduino kniznica pre SPI zbernicu
#include "RF24.h" //kniznica pre moduly
int odozva = 3; //globalna premenna pre odosielany stav timu
int prijem = 4; //globalna premenna pre citany stav timu
const int buzzer = 2; //pin pre hlasic
const int cervenytim = 5; //pin pre cerveny button
const int zltytim = 6; //pin pre zlty button
const int cervenaled = 7;
const int zltaled = 8;
#define CE 4 //chip state pin
#define CS 3 //chip select pin
RF24 nRF(CE, CS); //nrf s volitelnymi pinmi CE a CS
byte adresaPrijimac[] = "prijimac00"; //adresa prijimac
byte adresaVysilac[] = "vysilac00"; //adresa vysielac
void setup() {
 Serial.begin(9600); //Serial monitor na 9600 baud/s
 pinMode(buzzer, OUTPUT); //hlasic nastavit ako vystup
 pinMode(cervenaled, OUTPUT);
 pinMode(zltaled, OUTPUT);
 pinMode(cervenytim, INPUT_PULLUP); //tlacidla ako vstup na pullup rezistor
 pinMode(zltytim, INPUT_PULLUP); //tlacidla ako vstup na pullup rezistor
 nRF.begin(); //zapnut komunikaciu s nRF modulom
 nRF.setDataRate( RF24_250KBPS ); //najnizsia rychlost pre najvacsiu moznu vzidalenost
 nRF.setPALevel(RF24_PA_HIGH); //napajacie napatie na high moznost MAX potrebuje externy zdroj na 5v (3.3v pri napojeni napriamo)
 nRF.openWritingPipe(adresaPrijimac); //zapisujeme na prijimac na jeho adresu
 nRF.openReadingPipe(1, adresaVysilac); //citame na svojej adrese na kanale XX
 nRF.startListening();
}

void loop() {
 if (odozva == prijem) {

 tone( buzzer, 900, 800);

 delay(1000);
 } else {
 noTone(buzzer);
 int vystupcerveny = digitalRead(cervenytim);
 int vystupzlty = digitalRead(zltytim);
 if (vystupcerveny == LOW) {
 odozva = 1;
 digitalWrite(cervenaled, HIGH);
 digitalWrite(zltaled, LOW);
 } else if (vystupzlty == LOW) {
 odozva = 2;
 digitalWrite(cervenaled, LOW);
 digitalWrite(zltaled, HIGH);
 }

 if ( nRF.available()) {
 // čekání na příjem dat
 while (nRF.available()) {
 nRF.read( &prijem, sizeof(prijem) );
 }
 Serial.println("Prijata volba: ");
 Serial.println(prijem);
 Serial.println("Odozva: ");
 Serial.println(odozva);
 nRF.stopListening();
 nRF.write( &odozva, sizeof(odozva) );
 nRF.startListening();
 }
 }

}
19
Projekty / Notifikátor udalostí cez mikrokontróler
« Poslední příspěvek od martinius96 kdy Únor 23, 2019, 00:25:45 dopoledne »
Dnes v krátosti predstavím notifikátor udalostí, ktorý bol pôvodne navrhnutý už k existujúcim projektom. Jeho hlavnou úlohou bolo upozornenie na stavy a krízové situácie, ktoré počas behu systému nastali a vyžadujú pozornosť, alebo vyriešenie.  Upozornenia boli riešené odosielaním e-mailov s časovým obmedzením navoleným používateľom.

To vo výsledku znamená, že ak dôjde ku krízovej situácii, aby systém s každým pripojením mikrokontroléra neodosielal email cez .php stránku, je to ohraničené časovým intervalom - medzerou. V intervaloch (napr. každých 5 min, alebo iný navolený interval) je používateľ informovaný e-mailom na krízovú situáciu. Po prihlásení používateľa do systému sa už e-mailové notifikácie ďalej k tomu konkrétnemu problému neposielajú. V prípade, že je používateľ v systéme a nastane krízová situácia, e-mail sa odošle minimálne 1 krát pre prípad, ak by to prehliadol a pod.
Využitie je plánované hlavne pre tieto účely:
    Pohyb v noci okolo PIR senzora - vhodné pre areály, haly
    Senzor vytopenia - vhodné pre práčovne, byty
    Teplotné senzory - oznam pri mínusovej teplote - vhodné pre sady, kotolne
    Prekročenie vlhkosti, tlaku vzduchu - vhodné pre meteostanice
    Prekročenie otáčok motora - hall snímač s magnetom
    Prekročenie napätia/prúdu
    a ďalšie veličiny, ktoré je možné merať
Každý e-mail je možné odoslať s rôznymi informáciami. Napríklad stav batérie, opis problému, posledné hodnoty, aké riešenie sa vyžaduje a pod.

Systém je teda vhodný aj pre laikov a dokáže zabrániť väčšej katastrofe, napríklad pri vytopení v noci, mimo domu, pomôže s rýchlejšou reakciou na problém s možnosťou okamžitého vyriešenia - napríklad uzavretím solenoid ventilu pre vodu automaticky, nevyžaduje sa akcia od používateľa. O uzavretí môže byť používateľ taktiež notifikovaný. Súčasťou je aj webaplikácia, kde môže používateľ vidieť aj aktuálne hodnoty a po oprave problému vytopenia môže jedným klikom opäť dovoliť systému elektromagnetický ventil - solenoid otvoriť prostredníctvom relé.

Čo sa týka dátovej náročnosti, .php súbor, na ktorý sa mikrokontróler pripojí má do 1kB, podľa rozsiahlosti kódu. Je teda vhodný aj 3G router s dátovým balíkom nižších tried s použitím napríklad pre sady a iné exteriérové miesta, kde nie je wifi, či Ethernet. Mikrokontróler môže aj spať a v prípade nehodovej udalosti ho akcia na pine (napríklad pri vytopení dôjde k spojeniu kontaktov pre záznam) zobudí a mikrokontróler môže informovať o udalostiach. V spánku je možné pri mikrokontroléroch dostať odber rádovo v jednotkách µA, teda je systém možné prevádzkovať aj na batérie.

Arduino s Ethernet shieldom, respektíve modulom vie komunikovať po HTTP protokole. V prípade ESP8266 a ESP32 môžeme komunikovať aj po HTTPS protokole. ESP32 vyžaduje špecifickú konfiguráciu HTTPS spojenia na webserver, nakoľko sa vyžaduje Root CA certifikát daného webu v .pem formáte. GET, alebo POST parametrami je možné do .php súboru, ktorý odosiela mail vložiť aj hodnoty, ktoré budú súčasťou problému pre lepšiu identifikáciu problému.

Web časť projektu je univerzálna a vie sa na ňu napojiť akýkoľvek mikrokontróler či už po HTTP alebo HTTPS protokole. Pripojenie na webserver a na súbor, ktorý odošle e-mail môže vyzerať následovne (Arduino + Wiznet W5100 po HTTP):
Kód: [Vybrat]
#include <SPI.h>
#include <Ethernet.h>
#define Hostname "Arduino"   
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};   
char server[] = "www.mywebsite.com";     
IPAddress ip(192, 168, 1, 254); //IP adresa zo subnet rozsahu
EthernetClient client;   
void setup() {
 Serial.begin(9600);
}
 
void loop() {
   if (Ethernet.begin(mac) == 0) {   
    Serial.println("Chyba konfiguracie DHCP, nastavim manualnu IPv4");
    Ethernet.begin(mac, ip);                       
  } 


if (client.connect(server, 80)) {
    Serial.println("Pripojenie na webserver prebehlo uspesne..");
    client.print("GET /email.php");   //umiestnenie php scriptu na webserveri 
    client.println(" HTTP/1.1");             
    client.println("Host: www.mywebsite.com");
    client.println("Connection: close");   
    client.println();                       
 client.stop();   
 Serial.println("E-mail uspesne odoslany!");
  } else {                                         
    Serial.println("Pripojenie neuspesne");
  } 
delay(10000);
}
E-mail je možné odoslať prostredníctvom .php stránky cez SMTP server cez mail(); funkciu. V prípade, že neuvedieme odosielaciu e-mailovú adresu, e-mail sa odošle prostredníctvom sendmail_from parametra z nastavenia webservera (Apache / Nginx). Implementácia teda nie je zložitá.
Príklad:
Kód: [Vybrat]
<?php
$sprava
"Ahoj svet!";
$spravawordwrap($msg,70);
mail("adresaprijimatela@jehomail.com","Predmet spravy",$sprava);
?>

V prípade korektnosti nastavenia SMTP servera na vašich .php stránkach po spustení tohto e-mailu dostanete e-mail s textom Ahoj Svet! a zvoleným predmetom.
Vo frameworkových systémoch (Laravel, Symphony) sa stretneme skôr s použitím PHPMailer knižnice. E-mail je možné doplniť aj o obrázky, doplnkové info s detailným opisom problému. Cieľovú e-mailovú adresu treba na prichádzajúce e-maily s rovnakou správou od rovnakého odosiellateľa pripraviť, aby to nevyhodnocoval ako spam a tým pádom nenotifikoval používateľa. Špeciálne to platí pre G-mail a podobné služby s dobrou SPAM filtráciou.
O projekte je niečo spísané aj na mojom webe, ktorý môžete taktiež navštíviť, nájdete tam aj rôzne ďalšie realizované projekty cez Arduino, ESP dosky, devkity s použitím webových riešení: https://arduino.php5.sk/mailer.php
20
Projekty / Meteostanica s ESP8266 - NodeMCU
« Poslední příspěvek od martinius96 kdy Únor 06, 2019, 02:04:30 dopoledne »
Dnes by som vám v krátosti predstavil projekt, ktorý som tvoril už pred takmer dvomi rokmi. Bol to druhý webovo orientovaný projekt, ktorý som tvoril v súvislosti s mikrokontrolérmi a za svoju životnosť si prešiel rôznych úpravami - najmä v oblasti využitých senzorov, ktoré sa niekoľko krát menili z dôvodu spoľahlivosti, chybných meraní a ďalších javov. Po hardvérovej stránke som pre mozog projektu využil vývojovú dosku NodeMCU v3 Lolin s wifi čipom ESP8266 pre pripojenie do wifi siete a odosielanie nameraných údajov po HTTPS protokole do webového rozhrania POST metódou. Vývojovú dosku ESP8266 je možné programovať v prostredí ArduinoIDE ako klasické Arduino s knižnicou Wifi.h pre pripojenie k wifi sieti po doinštalovaní Arduino "jadra" pre ESP.

Meteostanica umožňuje ukladať do MySQL databázy:
    Teplota dnu
    Teplota von
    Vlhkosť vzduchu
    Atmosférický tlak

Poďme si bližšie predstaviť webové rozhranie a zistiť, čo vlastne ponúka pre používateľa:
    Real-time tabuľka pre zobrazenie posledných nameraných údajov so zobrazením času a tendencie - stúpa/klesá/ustálená (Štandardne je čas záznamu 5-15min)
    Zmena názvov - umiestnenie senzorov, pomenovanie senzora
    História meraní - 30 dní dozadu v tabuľkovom prevedení
    Maximá, minimá, priemer za deň / 7 dní / 30 dní - budíková reprezentácia
    Grafická reprezentácia vývoja počasia za 24 hodín / 7 dní
    Prognóza počasia - BETA (predpoveď na základe vývoja počasia)
    Vzdialený reset dosky
    Log (neúspešné prihlásenie so záznamom IP adresy, porucha senzora - neplatné hodnoty)
    Zdrojový kód pre ESP8266
    Zmena loginu, odhlásenie sa, prihlásenie sa

Dáta sú predávané serveru a spracované jazykom PHP. Na základe použitých senzorov viem, aké hodnoty vracajú pri nesprávnom zapojení, vytiahnutom kontakte a pod. Napríklad u populárnych teplotných senzorov DS18B20 na OneWire zbernici je to -127°C pri zlom zapojení (nezapojení) a pri odpojení napájacieho vodiča (Vcc) sa najčastejšie nameria teplota 85°C.

Viem si teda tieto kritické hodnoty ošetriť a prípadný problém oznámiť do logu a zlú hodnotu nezapísať. Nakoľko som potreboval merať aj vlhkosť vzduchu - nech je už tá meteostanica poriadna :), hľadal som senzor pre dvojkombináciu teplota + vlhkosť. Narazil som na DHT22, čo je pomerne používaný senzor v tejto sfére.

Senzor ma ale nepotešil, nakoľko mal často zlé dáta, i keď bol okolím vychválený, že nič lepšie nie je. Často krát sa namerala hodnota 0 pre teplotu i pre vlhkosť. Tento defekt - porucha priemerne vychádzala na jedno z 12 meraní, čo je dosť veľká chybovosť na jednoduchý digitálny senzor. Preto som siahol po náhrade v podobe SHT21, respektíve Si7021 (iné označenie pre modul). Modul komunikuje po I2C zbernici a  osvedčil sa.

Modul bol veľmi spoľahlivý a v prípade problému s komunikáciou doska namerala -5% vlhkosti, teda som tiež vedel ošetriť tento stav a prípadný problém hlásiť do logu a problém riešiť. Senzor sa osvedčil a počas prevádzky niekoľko mesiacov som nenarazil na problém. Keďže som meteostanicu ďalej rozširoval a chcel som zaznamenávať aj atmosférický tlak, vyskúšal som senzor BMP280, ktorý vie merať teplotu a atm. tlak vzduchu. Meranie tlaku vzduchu po prepočte na nadmorskú výšku bol s rozdielom do 0,4hPa, čo si myslím, že je na modul za euro aj niečo výborné.

Onedlho bol senzor vymenený za BME280, ktoré vie zaznamenať teplotu, atmosférický tlak vzduchu a vlhkosť vzduchu. Naozaj kompaktný senzor 3v1, odporúčam. Tento senzor som teda umiestnil von a modul skryl do radiačného štítu, ktorý ho chráni pred vodou, či už v podobe dažďa, alebo kondenzátu.

Moduly BMP a BME sú ľahko zameniteľné a často dochádza k omylom pri nákupe, kedy predajca zašle BMP verziu za cenu BME, býva 3x drahšia. Rozlišovať by sa mali zvýraznením písmena na senzore, ale často to nie je pravidlom. Nakoľko BMP, resp. BME280 komunikuje po I2C zbernici, má určitú adresu pod ktorou vystupuje. Problém môže nastať, ak chceme použiť viacero týchto senzorov. Riešením je emulovať softvérovo I2C zbernicu na iných pinoch, kam sa ďalší senzor pripojí, alebo prostredníctvom SDO pinu je možné napojiť ho voči Vcc (pullup), respektíve GND (pulldown), čím získame inú adresu a môžeme tak využiť viacero rovnakých senzorov na jednej hardvérovej I2C zbernici. Zaujímavosťou u týchto modulov je aj možnosť určiť nadmorskú výšku na základe teploty a absolúteho tlaku vzduchu a i ten prepočítať na relatívny v závislosti od nadmorskej výšky a teploty:
Kód: [Vybrat]
relativny_tlak = absolutny_tlak / pow(1 - ((0.0065 *nadmorska_vyska) / (teplota + (0.0065 *nadmorska_vyska) + 273.15)), 5.257);Doterajšie riešenie bolo vybavené takýmto typom hardvéru pre záznam dát:
    DS18B20 (teplota dnu), BME280 (tlak, teplota, vlhkosť)
    DHT22(teplota dnu, vlhkosť), BMP280 (tlak, teplota)
    DS18B20 (teplota dnu), DHT22 (vlhkosť von), BMP280 (tlak, teplota)
    DS18B20 (teplota dnu, SHT21 (vlhkosť von), BMP280 (tlak, teplota)
Webové rozhranie využíva voľne dostupnú šablónu Klorofil od Bootstrapu, AJAX-ové volania PHP scriptov pre real-time tabuľku, HTML elementy pre tlačidlové rozhranie používateľa. Pre grafy som využil hotový balík Google Charts. Zjednodušenú verziu tejto meteostanice je možné zdarma vyskúšať v pripravenom webovom rozhraní na adrese: https://arduino.php5.sk/meteostanicav2/
Ak si chcete webové rozhranie vyskúšať, máte možnosť! Pri použití Arduina s Ethernet shieldom W5100, alebo ESP8266 (NodeMCU) s hardvérom: DS18B20 (teplota dnu), DHT22 (vlhkosť), BMP280 (teplota, tlak vzduchu). ESP8266 využíva HTTPS pripojenie s knižnicou WifiClientSecure. Arduino podporuje iba HTTP spojenia. Vo webovom rozhraní meteostanice nájdete aj potrebné knižnice pre senzory.
Zdrojový program pre Arduino: https://arduino.php5.sk/meteostanica-arduino.php
Zdrojový program pre NodeMCU: https://arduino.php5.sk/meteostanica-nodemcu.php
Fotogaléria webového rozhrania: Obrázky sú ilustračné z webového rozhrania, ktorá je voľne prístupné, každý tam môže nahrať čo chce, teda dáta sú neplatné, prestrelené, atď....



Stran: 1 [2] 3 4 ... 10