Anemometr, V3 NodeMcu a dohled přes aplikaci Blynk
Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
-
- Příspěvky: 69
- Registrován: pát srp 12, 2011 1:56 pm
Anemometr, V3 NodeMcu a dohled přes aplikaci Blynk
Zdravím,
Tady jeden můj funkční Arduino experiment, třeba se bude někomu hodit. Dám sem externí odkaz, neumím tu s obrázkama.
Rams
Tady jeden můj funkční Arduino experiment, třeba se bude někomu hodit. Dám sem externí odkaz, neumím tu s obrázkama.
Rams
-
- Příspěvky: 69
- Registrován: pát srp 12, 2011 1:56 pm
Re: Anemometr, V3 NodeMcu a dohled přes aplikaci Blynk
Na anemometru došlo ke změně programu. Byly přidány výstupy pro lepší orientaci ve větrných podmínkách. Ze začátku jsem používal jen graf historie Blynku. Sice má graf možnost exportu do cvs, je oku lahodící, ale nechtělo se mě v cvs nimrat. Současná verze anemometru zobrazuje potřebné údaje rovnou na obrazovku.
A to:
Maximální naměřená rychlost větru v m/s (číselná hodnota)
Momentální otáčky rotoru anemometru (číselná hodnota)
Momentální rychlost větru v m/s (číselná hodnota + běžící linkový graf)
Čistý naměřený čas od prvopočátku měření 1-2m/s, 3-4m/s, 5-6m/s, 7-8m/s, 9-10m/s, 11+m/s, použitelný vítr 3+m/s (data (číselná hodnota)jsou zálohovaná, výpadek napájení, nebo jiná porucha neresetuje čítače)
Jako arduino začátečníkovi mě program dal pokouřit, ale funguje tak jak jsem chtěl. Poděkování patří kodlovi69 za noční pomoc
Ukázka fungování na Youtube
Kód anemometru
A to:
Maximální naměřená rychlost větru v m/s (číselná hodnota)
Momentální otáčky rotoru anemometru (číselná hodnota)
Momentální rychlost větru v m/s (číselná hodnota + běžící linkový graf)
Čistý naměřený čas od prvopočátku měření 1-2m/s, 3-4m/s, 5-6m/s, 7-8m/s, 9-10m/s, 11+m/s, použitelný vítr 3+m/s (data (číselná hodnota)jsou zálohovaná, výpadek napájení, nebo jiná porucha neresetuje čítače)
Jako arduino začátečníkovi mě program dal pokouřit, ale funguje tak jak jsem chtěl. Poděkování patří kodlovi69 za noční pomoc
Ukázka fungování na Youtube
Kód anemometru
Kód: Vybrat vše
/**************************************************************
* Blynk is a platform with iOS and Android apps to control
* Arduino, Raspberry Pi and the likes over the Internet.
* You can easily build graphic interfaces for all your
* projects by simply dragging and dropping widgets.
*
* Downloads, docs, tutorials: http://www.blynk.cc
* Blynk community: http://community.blynk.cc
* Social networks: http://www.fb.com/blynkapp
* http://twitter.com/blynk_app
*
* Blynk library is licensed under MIT license
* This example code is in public domain.
*
**************************************************************
* This example runs directly on ESP8266 chip.
*
* Note: This requires ESP8266 support package:
* https://github.com/esp8266/Arduino
*
* Please be sure to select the right ESP8266 module
* in the Tools -> Board menu!
*
* Change WiFi ssid, pass, and Blynk auth token to run :)
*
**************************************************************/
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "xxxxxx";
char pass[] = "xxxxxxxx";
const int hallPin=3;
volatile byte half_revolutions;
unsigned int rpm, ms, kmh, maxMs, h1_2, m1_2, h3_4, m3_4, h5_6, m5_6, h7_8, m7_8, h9_10, m9_10, h11, m11, h3, m3, d1_2, d3_4, d5_6, d7_8, d9_10, d11, d3;
unsigned long count1_2, count3_4, count5_6, count7_8, count9_10, count_11, count_3;
unsigned int den = 86400;
unsigned int hodina = 3600;
unsigned int minuta = 60;
String zacatekMereni = "20.02.2017";
SimpleTimer timer;
// This function will run every time Blynk connection is established
BLYNK_CONNECTED() {
//get data stored in virtual pin V0 from server
Blynk.syncVirtual(V30);
}
// restoring counter from server
BLYNK_WRITE(V30){
//restoring int value
maxMs = param[0].asInt();
count1_2 = param[1].asLong();
count3_4 = param[2].asLong();
count5_6 = param[3].asLong();
count7_8 = param[4].asLong();
count9_10 = param[5].asLong();
count_11 = param[6].asLong();
count_3 = param[7].asLong();
}
void setup(){
pinMode(hallPin,INPUT);
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
attachInterrupt(digitalRead(hallPin), rpm_fun, RISING);
half_revolutions = 0;
rpm = 0;
ms = 0;
kmh = 0;
timer.setInterval(3000L, mereniRPM); //kazdy tri vteriny vypocte ze signalu udaje
timer.setInterval(600000L, zaloha); //kazdych 10 minut ulozi data na blynk server
timer.setInterval(60000L, vypocet); //kazdou minutu vypocita udaje a posle na blynk
}
void zaloha(){
Blynk.virtualWrite(V30, maxMs, count1_2, count3_4, count5_6, count7_8, count9_10, count_11, count_3);
}
void mereniRPM(){
rpm = (half_revolutions*20)/3;
ms = half_revolutions/7;
kmh = half_revolutions/2;
if (ms > maxMs) maxMs = ms;
if ((ms == 1)||(ms == 2)) count1_2 += 3;
if ((ms == 3)||(ms == 4)) count3_4 += 3;
if ((ms == 5)||(ms == 6)) count5_6 += 3;
if ((ms == 7)||(ms == 8)) count7_8 += 3;
if ((ms == 9)||(ms == 10)) count9_10 += 3;
if (ms >= 11) count_11 += 3;
if (ms >= 3) count_3 += 3;
// Serial.println(half_revolutions,DEC); //pocet signalu za 3s. (3 signaly na otacku)
Blynk.virtualWrite(V1, rpm);
Blynk.virtualWrite(V2, ms);
Blynk.virtualWrite(V3, kmh);
Blynk.virtualWrite(V4, maxMs);
half_revolutions = 0;
}
void vypocet(){
d1_2 = count1_2 / den;
h1_2 = (count1_2 % den) / hodina;
m1_2 = ((count1_2 % den) % hodina) / minuta;
d3_4 = count3_4 / den;
h3_4 = (count3_4 % den) / hodina;
m3_4 = ((count3_4 % den) % hodina) / minuta;
d5_6 = count5_6 / den;
h5_6 = (count5_6 % den) / hodina;
m5_6 = ((count5_6 % den) % hodina) / minuta;
d7_8 = count7_8 / den;
h7_8 = (count7_8 % den) / hodina;
m7_8 = ((count7_8 % den) % hodina) / minuta;
d9_10 = count9_10 / den;
h9_10 = (count9_10 % den) / hodina;
m9_10 = ((count9_10 % den) % hodina) / minuta;
d11 = count_11 / den;
h11 = (count_11 % den) / hodina;
m11 = ((count_11 % den) % hodina) / minuta;
d3 = count_3 / den;
h3 = (count_3 % den) / hodina;
m3 = ((count_3 % den) % hodina) / minuta;
if (m1_2 < 10) Blynk.virtualWrite(V5, d1_2, " d ", h1_2, ":0", m1_2);
else Blynk.virtualWrite(V5, d1_2, " d ", h1_2, ":", m1_2);
if (m3_4 < 10) Blynk.virtualWrite(V6, d3_4, " d ", h3_4, ":0", m3_4);
else Blynk.virtualWrite(V6, d3_4, " d ", h3_4, ":", m3_4);
if (m5_6 < 10) Blynk.virtualWrite(V7, d5_6, " d ", h5_6, ":0", m5_6);
else Blynk.virtualWrite(V7, d5_6, " d ", h5_6, ":", m5_6);
if (m7_8 < 10) Blynk.virtualWrite(V8, d7_8, " d ", h7_8, ":0", m7_8);
else Blynk.virtualWrite(V8, d7_8, " d ", h7_8, ":", m7_8);
if (m9_10 < 10) Blynk.virtualWrite(V9, d9_10, " d ", h9_10, ":0", m9_10);
else Blynk.virtualWrite(V9, d9_10, " d ", h9_10, ":", m9_10);
if (m11 < 10) Blynk.virtualWrite(V10, d11, " d ", h11, ":0", m11);
else Blynk.virtualWrite(V10, d11, " d ", h11, ":", m11);
if (m3 < 10) Blynk.virtualWrite(V11, d3, " d ", h3, ":0", m3);
else Blynk.virtualWrite(V11, d3, " d ", h3, ":", m3);
Blynk.virtualWrite(V12, zacatekMereni);
}
void loop(){
Blynk.run();
timer.run(); // Initiates SimpleTimer
}
void rpm_fun()
{
half_revolutions++;
}
-
- Podobná témata
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 4 Odpovědi
- 708 Zobrazení
-
Poslední příspěvek od kodl69
-
- 9 Odpovědi
- 788 Zobrazení
-
Poslední příspěvek od Kamča
-
- 9 Odpovědi
- 801 Zobrazení
-
Poslední příspěvek od Soban
-
-
Shelly Plus 1PM - problem s novou aplikaci
od gold1 » » v Automatizace, měření, statistiky
Shelly Plus 1PM - problem s novou aplikaci
- 60 Odpovědi
- 4275 Zobrazení
-
Poslední příspěvek od TomHC
-
-
-
Nastavení hledání COM portů na PC v aplikaci VictronConnect
od cipis » » v Victron
Nastavení hledání COM portů na PC v aplikaci VictronConnect
- 26 Odpovědi
- 1614 Zobrazení
-
Poslední příspěvek od cipis
-