Fórum témák
- • Akkumulátor töltő
- • Háromfázisú aggregátor
- • Érdekességek
- • Autóelektronika
- • Lemezjátszó beállítása, javítása
- • Kombikazán működési hiba
- • PIC - Miértek, hogyanok haladóknak
- • SMD forrasztás profin
- • Elektromos távirányítós kapunyitó
- • Parkside akkuk javìtása
- • RFID Miértek és hogyanok
- • Videoton EA 6383 s (tuning)
- • Leválasztó transzformátor
- • Számítógép hiba, de mi a probléma?
- • Muzeális készülékek-alkatrészek restaurálása
- • Erősítő mindig és mindig
- • Codefon kaputelefon
- • Tápegységgel kapcsolatos kérdések
- • Szobatermosztát bekötése
- • Felajánlás, azaz ingyen elvihető
- • Klíma szervizelés, javítás
- • Mosógép vezérlők és általános problémáik
- • Ultrahangos párásító
- • IMI villanymotor
- • IGBT vezérlése
- • ZC-18 kazán
- • Radiosonde
- • Kapcsolóüzemű tápegység
- • Termisztor
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Li-Po - Li-ion akkumulátor és töltője
- • LED-es világítás
- • Androidos okos telefonok
- • Laptop javítás, tuning
- • Központi fűtés (vezérlés)
- • Fejhallgató erősítő
- • Espressif mikrokontrollerek
- • Oszcilloszkóp vétel, mit gondoltok?
- • Volvo V50 típushiba
- • Karácsonyi fényfüzérek
- • LCD TV probléma
- • NYÁK terv ellenőrzése
- • FET vezérlése
- • Rádió áthangolása, OIRT - CCIR konverter
- • Indukciós főzőlap javítása
- • Multiméter - miért, milyet?
- • Westen 240 Fi gázkazán hiba
- • MyElecParts alkatrész kereső és készlet nyilvántartó
- • Jókívánság
- • SMD, mi a típusa?
- • Napelem alkalmazása a lakás energia ellátásában
- • Nyomtató probléma
- • Kapcsolóüzemű táp 230V-ról
- • Elfogadnám, ha ingyen elvihető
- • Villanypásztor
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Nem hangzik rosszul, bár ez megint egy másik világ. Nem ragaszkodom az arduinoOTA-hoz, csak azzal sikerült elérnem, hogy wifin keresztül tudtam feltölteni a kódot. Eddigi próbálkozások sajnos csak azonos hálózaton működtek, így nem sikerült még megvalósítani az elképzelésem.
Sziasztok!
Most kezdtem el ismerkedni a az ESP12-vel ( ESP8266 alapú WIFI) Arduino IDE felületű programozással. A mikrovezérlő lepróbálva LED villogtatással, tehát felismeri a gép, feltölti a programot. De WIFI kapcsolatot nem tudok létesíteni, mi lehet a baj?
Az alábbi pédakóddal próbálkozok:
#include <WiFiClient.h>
#include "DHT.h"
//SSID and Password of your WiFi router
const char* ssid = "Galaxy-M20";
const char* password = "ac312124";
#define LED 2 //On board LED
#define DHTTYPE DHT11 // DHT 11
uint8_t DHTPin = 14;
DHT dht(DHTPin, DHTTYPE);
float humidity, temperature;
ESP8266WebServer server (80); //Server on port 80
const char MAIN_page[] PROGMEM = R"=====(
<!doctype html>
<html>
<head>
<title>Data Logger</title>
<h1 style="text-align:center; color:red;">Iot Design Pro</h1>
<h3 style="text-align:center;">NodeMCU Data Logger</h3>
<style>
canvas{
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
/* Data Table Styling*/
#dataTable {
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
text-align: center;
}
#dataTable td, #dataTable th {
border: 1px solid #ddd;
padding: 8px;
}
#dataTable tr:nth-child(even){background-color: #f2f2f2;}
#dataTable tr:hover {background-color: #ddd;}
#dataTable th {
padding-top: 12px;
padding-bottom: 12px;
text-align: center;
background-color: #050505;
color: white;
}
</style>
</head>
<body>
<div>
<table id="dataTable">
<tr><th>Time</th><th>Temperaure (°C)</th><th>Humidity (%)</th></tr>
</table>
</div>
<br>
<br>
<script>
var Tvalues = [];
var Hvalues = [];
var timeStamp = [];
setInterval(function() {
// Call a function repetatively with 5 Second interval
getData();
}, 5000); //5000mSeconds update rate
function getData() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//Push the data in array
var time = new Date().toLocaleTimeString();
var txt = this.responseText;
var obj = JSON.parse(txt);
Tvalues.push(obj.Temperature);
Hvalues.push(obj.Humidity);
timeStamp.push(time);
//Update Data Table
var table = document.getElementById("dataTable");
var row = table.insertRow(1); //Add after headings
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML = time;
cell2.innerHTML = obj.Temperature;
cell3.innerHTML = obj.Humidity;
}
};
xhttp.open("GET ", "readData ", true); //Handle readData server on ESP8266
xhttp.send();
}
</script>
</body>
</html>
)=====";
void handleRoot() {
String s = MAIN_page; //Read HTML contents
server.send(200, "text/html", s); //Send web page
}
void readData() {
String data = "{\"Temperature\":\""+ String(temperature) +"\", \"Humidity\":\""+ String(humidity) +"\"}";
digitalWrite(LED,!digitalRead(LED)); //Toggle LED on data request ajax
server.send(200, "text/plane", data); //Send ADC value, temperature and humidity JSON to client ajax request
delay(2000);
temperature = dht.readTemperature();
humidity = dht.readHumidity();
Serial.print(humidity, 1);
Serial.print(temperature, 1);
}
void setup ()
{
Serial.begin(115200);
Serial.println();
pinMode(DHTPin, INPUT);
dht.begin();
WiFi.begin(ssid, password); //Connect to your WiFi router
Serial.println("");
//Onboard LED port Direction output
pinMode(LED,OUTPUT);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
//If connection successful show IP address in serial monitor
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //IP address assigned to your ESP
server.on("/", handleRoot); //Which routine to handle at root location. This is display page
server.on("/readData", readData); //This page is called by java Script AJAX
server.begin(); //Start server
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient(); //Handle client requests
}
Mit csinál? Csak pontokat ír a soroson? Esetleg a routeren, vagy amiről adod az internetet próbálj más titkosítást állítani... Milyen messze van a wifi adótól?
Csak pontokat ír a soroson.
A router pár méterre van tőle.
A más titkosítás alatt mit értesz?
Egy wifi mód állítást érdemes beletenni a setup elejére a begin elé.
WiFi.mode(WIFI_STA);
delay(100);
Illetve próbáld meg kilistázni vele az elérhető hálózatokat, látja-e egyátalán a telefonod access pointját.
int nWifi = WiFi.scanNetworks();
for (int i = 0; i < nWifi; ++i) {
Serial.println(WiFi.SSID(i));
}
Nos,jutottál valamire? itt egy példa, ha van valaki, aki újrainditsa, a setup-ban megnézi van-e frissítés. Csak http oldallal működik, https (pl. google) nem jó. En a netszolgaltatói oldallal
néztem. Arra figyelj, hogy a frissítésben új .bin-t adj meg, pl, 100 a régi, 101 az új, a
következő 102, stb.
#include <Arduino.h>
const char *ssid = "";
const char *password = "";
const char* fwUrl = "http://xxx/yyy.bin";
void initWiFi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
}
void frissit() {
WiFiClient client;
ESPhttpUpdate.setLedPin(LED_BUILTIN, LOW);
t_httpUpdate_return ret = ESPhttpUpdate.update(client,fwUrl);
switch (ret) {
case HTTP_UPDATE_FAILED: Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s\n", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str()); break;
case HTTP_UPDATE_NO_UPDATES: Serial.println("HTTP_UPDATE_NO_UPDATES"); break;
case HTTP_UPDATE_OK: Serial.println("HTTP_UPDATE_OK"); break;
}
}
void setup() {
Serial.begin(115200);
initWiFi();
frissit();
}
void loop() {}
Ha nincs senki aki újraindítsa, be kell rakni a loop()-ba:
if(millis()-lastmillis)>xxx) {
lastmillis=millis();
frissit();
}
x helyére akkora számot írsz,amit gondolsz,óránként, naponta.
Üdv!
Napok óta szívok egy programmal, szeretnék segítséget kérni.
Arduino pro micro ( Atmega32U4) i2C buszon kommunikál, foglalt az INT0 és INT1 láb.
Szeretném energiatakarékos módba küldeni és egy nyomógombbal ébreszteni.
A 7. lábon elvileg tud külső megszakítást kezelni, de nem akar összejönni.
Van esetleg valakinek működő példa kódja?
A segítséget előre is köszönöm.
Semmi!
Nem talál hálózatot és őt sem látja semmi. csak a pontok jönnek sorban.........
Semmi eredmény,
mindenféla krix krax a soros monitoron, 115200buad beállítva
Na az durva, ha nem lát semmi hálózatot, főleg, mert, ha te a telefonodon elfelejtetted bekapcsolni a hotspotot, a routered csak 5G-s, akkor is látnia kellene legalább a szomszéd Wifijét és listáznia, annyi wifi van, kivéve, ha a Hortobágy közepén egy tanyán ülsz, de ezt kétlem.
A "mindenféle krix krax" szerintem az esp bootloaderéből jön.
Nézzünk meg egy nagyon alap programot, minden nélkül, csak keresés, hogy más ne zavarjon be. Utána, ha lát már hálózatokat, akkor jöhet a csatlakozás, utána a HTTP és a hőmérő. Érdemes kizárni mindent, ami bezavarhat a kódban és az alaptól indítani a hibakeresést.
#include <Arduino.h>
void setup() {
Serial.begin(115200);
Serial.println("Start");
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(500);
Serial.println("Scan networks...");
int nWifi = WiFi.scanNetworks();
delay(50);
if(nWifi==0){
Serial.println("NO WIFI!!!!!!");
} else {
for (int i = 0; i < nWifi; ++i) {
Serial.println(WiFi.SSID(i));
delay(50);
}
}
}
void loop() {}
Szuper, ez működik, mellékelem a keresés eredményét
Tök jó. Bár a Te wifidet, ami a kódban volt (Galaxy-M20) nem látom a listában. Akkor innen próbálj meg rácsatlakozni. Ezzel a módszerrel nem csak pöttyöz, azt is fogod látni, ha nem tud csatlakozni.
#include <Arduino.h>
#define SSID "AZ_TE_WIFID_SSIDJE"
#define PASSWORD "WIFIJELSZO"
String get_wifi_status(int status){
switch(status){
case WL_IDLE_STATUS:
return "WL_IDLE_STATUS";
case WL_SCAN_COMPLETED:
return "WL_SCAN_COMPLETED";
case WL_NO_SSID_AVAIL:
return "WL_NO_SSID_AVAIL";
case WL_CONNECT_FAILED:
return "WL_CONNECT_FAILED";
case WL_CONNECTION_LOST:
return "WL_CONNECTION_LOST";
case WL_CONNECTED:
return "WL_CONNECTED";
case WL_DISCONNECTED:
return "WL_DISCONNECTED";
}
}
void setup() {
int status = WL_IDLE_STATUS;
Serial.begin(115200);
Serial.println("Start");
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(500);
Serial.println("Scan networks...");
int nWifi = WiFi.scanNetworks();
delay(50);
if(nWifi==0){
Serial.println("NO WIFI!!!!!!");
} else {
for (int i = 0; i < nWifi; ++i) {
Serial.println(WiFi.SSID(i));
delay(50);
}
}
Serial.print("Connecting to ");
Serial.println(SSID);
WiFi.begin(SSID, PASSWORD);
delay(100);
while(status != WL_CONNECTED){
delay(500);
status = WiFi.status();
Serial.println(get_wifi_status(status));
}
Serial.println("Connected");
Serial.println(WiFi.localIP());
}
void loop() {}
Üdv
ESP32-t használok eddig jutottam,működik az RGB jelekkel a monitor vezérlés,Wifi,NTP,RTC,1wire
szenzorok.Az adatokat tömbbe írom vegyesen int és float formában és 3 percenként írom az SD kártyára az időponttal együtt és ugyan ebben vissza is tudom olvasni.Egy hónapot szeretnék egy file-ba írni,az SD-t még nem használtam,egy rövid programmal úgy látom a tömböket közvetlen egymás után írja.Ez a feldolgozás szempontjából jó,mert a tömbök egyformák és az adatok benne fix helyen vannak.Látom a file kezelő függvényeket,nem tudom mi a különbség pl,ha lezárom a file-t vagy ha nem?
KI tudom olvasni az összes rekordból az azonos adatokat,de hogyan lehet a legrövidebb idő alatt?
Mi van akkor,ha ez a fix struktúra megsérül ármkimaradás,vagy bármi más miatt?
El kellene helyeznem időnként valami azonosítót a rekordok után? A hozzászólás módosítva: Márc 17, 2023
Idézet: „Látom a file kezelő függvényeket,nem tudom mi a különbség pl,ha lezárom a file-t vagy ha nem?” Implementáció függő, de sok esetben bufferel és csak bizonyos időnként, bizonyos adatmennyiség elérése után, vagy fájl bezárásakor írja ki az adatot. Ha nem zárod le, akkor lehet, hogy nem fogja kiírni. Erre szokott lenni valamilyen fflush szerű függvény, ami kényszerítve kiírja a fájlba az adatokat. Ki is tudod próbálni, elvileg, ha nyitsz egy fájl, írsz bele 1 bájtot és nem zárod le, majd kikapod az SD-t és megnézed, akkor egy üres fájl lesz rajta.
Idézet: „KI tudom olvasni az összes rekordból az azonos adatokat,de hogyan lehet a legrövidebb idő alatt?” Ez attól függ, hogy tárolod az adatokat.
Idézet: „Mi van akkor,ha ez a fix struktúra megsérül ármkimaradás,vagy bármi más miatt? ” Hülyeséget fogsz visszaolvasni, vagy elhal a program.
Idézet: „El kellene helyeznem időnként valami azonosítót a rekordok után? ” Ha megbízható adatokkal szeretnél dolgozni és minimalizálni a hiba lehetőségét, akkor igen, érdemes.
Ha már ESP32, akkor nem egyszerűbb feltölteni egy szerverre (lásd ThingSpeak), ahonnan egyszerűen és biztonságosan ki lehet nyerni az adatokat?
A 2021/2022. évadból a 7. előadást javaslom hozzá.
Mint említettem tömbökben tárolom az adatokat az SD-n,a buffer nem volt jó,csak byte és karakterrel működik.Grafikonokat akarok rajzolni az adatokból, végül is ki lehet várni,de mivel kezdő vagyok gondoltam van gyorsabb,elegánsabb megoldás.
Mivel az adatok mind 1-9 számok,gondoltam óránként beleteszek egy char jellegűt,talán megszüntethetem a töredezettséget.Az is lehet beleteszek egy kis akkut a hálózat kimaradásra,a nap végén pedig úgy is mindig újra indítom az egészet.
Én nem azt írtam, hogy Te használj buffert, hanem, hogy a fájlkezelő függvények használnak a háttérben a tudtod nélkül.
Köszi!
Még folyamatban vannak az ötletelések... de ezt olvasva ígéretesnek tűnik. Mindig van aki ujra indítsa ha kell. Nyilván nem sűrűn kéne, csak a nagy távolság miatt lenne indokolt. A jövő hét másik felében ránézek és kipróbálom.
Köszönöm,ez nekem nagyon hasznos link.
Azért választottam az RTC-t és az SD-t hogy a monitor független legyen a nettől,csak az RTC-t korrigálom vele.Régebben volt hasonló rendszerem ami szervert használt,a programot nem én írtam csak a hardvert csináltam.Sok baj volt a net szolgáltatás miatt,az áramkimaradást viszont könnyű kezelni.Később érdekességből talán megcsinálom,most a napelem szaldó változásra igyekszem felkészülni.
A kettő ötvözete? Amikor van net, akkor felküldi, amikor nincs, akkor menti SD-re és amikor visszajön akkor mehet fel minden adat?
Sajna hibát dob a fordításnál, a mellékelt képen látható.
Egyébként a legelső példakód szerinti Galaxy-M20 nem az enyém, az a példával jött, az enyém a "kowifi" , és azt látja.
Igen, ezt elírtam, bocsánat Az a baja, hogy a #define miatt a Wifi.SSID-ből ez lett: Wifi."koko"
#include <Arduino.h>
const char* ssid = "A_TE_WIFID_SSIDJE";
const char* password = "WIFIJELSZO";
String get_wifi_status(int status){
switch(status){
case WL_IDLE_STATUS:
return "WL_IDLE_STATUS";
case WL_SCAN_COMPLETED:
return "WL_SCAN_COMPLETED";
case WL_NO_SSID_AVAIL:
return "WL_NO_SSID_AVAIL";
case WL_CONNECT_FAILED:
return "WL_CONNECT_FAILED";
case WL_CONNECTION_LOST:
return "WL_CONNECTION_LOST";
case WL_CONNECTED:
return "WL_CONNECTED";
case WL_DISCONNECTED:
return "WL_DISCONNECTED";
}
}
void setup() {
int status = WL_IDLE_STATUS;
Serial.begin(115200);
Serial.println("Start");
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(500);
Serial.println("Scan networks...");
int nWifi = WiFi.scanNetworks();
delay(50);
if(nWifi==0){
Serial.println("NO WIFI!!!!!!");
} else {
for (int i = 0; i < nWifi; ++i) {
Serial.println(WiFi.SSID(i));
delay(50);
}
}
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
delay(100);
while(status != WL_CONNECTED){
delay(500);
status = WiFi.status();
Serial.println(get_wifi_status(status));
}
Serial.println("Connected");
Serial.println(WiFi.localIP());
}
void loop() {}
Ne hülyéskedj, nem kell bocsánatot kérni, köszönöm ha segítesz!
Viszont még mindig talál hibát:
Próbáltam a hiba info alapján javítani de nem sikerült, egyre több hibát dobott ahogy javítgattam, tehát végül "rontogattam"
Délután lesz időm, akkor megírom ideben és utána küldöm
Most ugye az volt a hibám, hogy a get_wifi_status függvénynek mindenképpen kell vissza adnia értéket, de nem volt benne return arra az esetre, ha esetleg olyan értéket kap, amit a switch-case nem kezel le. (Hát ezért nem érdemes fórumon programot írni, ha van ide is )
Ez már fordul:
#include <Arduino.h>
const char* ssid = "A_TE_WIFID_SSIDJE";
const char* password = "WIFIJELSZO";
String get_wifi_status(int status){
switch(status) {
case WL_IDLE_STATUS: return "WL_IDLE_STATUS";
case WL_SCAN_COMPLETED: return "WL_SCAN_COMPLETED";
case WL_NO_SSID_AVAIL: return "WL_NO_SSID_AVAIL";
case WL_CONNECT_FAILED: return "WL_CONNECT_FAILED";
case WL_CONNECTION_LOST: return "WL_CONNECTION_LOST";
case WL_CONNECTED: return "WL_CONNECTED";
case WL_DISCONNECTED: return "WL_DISCONNECTED";
}
return "UNKNOWN STATUS";
}
void setup() {
int status = WL_IDLE_STATUS;
Serial.begin(115200);
Serial.println("Start");
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(500);
Serial.println("Scan networks...");
int nWifi = WiFi.scanNetworks();
delay(50);
if(nWifi==0){
Serial.println("NO WIFI!!!!!!");
} else {
for (int i = 0; i < nWifi; ++i) {
Serial.println(WiFi.SSID(i));
delay(50);
}
}
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
delay(100);
while(status != WL_CONNECTED){
delay(500);
status = WiFi.status();
Serial.println(get_wifi_status(status));
}
Serial.println("Connected");
Serial.println(WiFi.localIP());
}
void loop() {}
Ha ez csatlakozik, akkor utána csak tedd bele a többi kódodat és mennie kell.
Nagyon köszönöm, tud csatlakozni és látja az összes wifit...
Sziasztok!
A ThingSpeak könyvtárat nem találja a library maneger, mi lehet az oka? Az 1.8.19 IDE szoftvert használom, tehát nem a legfrissebb de Win 7 alatt ez a legmagasabb verzió ami fut...
Library Manager nélkül is megtalálhatod itt, vagy emitt.
Sziasztok
SD panellal kapcsolatban kérdeznék,5 V-al is működik,van rajta 3.3 voltos táp és szintillesztő.Egy nano-val próbáltam a file kezeléseket,mert eddig nem ismertem.Most átraktam az esp32-re,ami 3.3 voltos és azzal nem működik,mert a panel stab ebből csak 2 v-t csinál,ez valószínüleg nem elég.Nem szeretném 5 voltra kötni,mert a szint illesztő biztosan megkapja,ha átkötném a stab be és kimenetét az jó megoldás-e,vagy csak marad a sima SD foglalat?
Azért vagyok bizonytalan,mer van aki azt állíja lehet 5 voltról,mások meg nem.Megnéztem a szinteket amikor a nano-n van az sd panel, a panelből kijövő szint 3.3 voltos,amit a nano kiad 5 voltos.Ha mindkét eszköz 3.3 voltos feltehetően nincs probléma,úgy tűnik az 5 V csak a stab kockára van kötve?
|
|