-
Fototrend
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Tankblock
aktív tag
válasz
Janos250 #7507 üzenetére
Soft WDT reset
ctx: cont
sp: 3fff0330 end: 3fff0550 offset: 01b0>>>stack>>>
3fff04e0: 3ffe8764 3ffef270 3ffef464 40208bb8
3fff04f0: 000001f4 3ffef270 3ffe8382 402022c8
3fff0500: 3ffe8784 3ffef270 3ffef464 402024d4
3fff0510: feefeffe 3ffef270 3ffef464 3ffef520
3fff0520: 3fffdad0 3ffef270 3ffef270 4020252b
3fff0530: 3fffdad0 00000000 3ffef518 402099d8
3fff0540: feefeffe feefeffe 3ffef530 40100718
<<<stack<<<és nem hal meg hanem rebootol és megy a WifiManagerbe ....
Oh My GoD.... valamit benéztem...és megis van a hiba:
delay(1); ez van egyel beljebb mint kellene......
-
Tankblock
aktív tag
-
Tankblock
aktív tag
Sziasztok, remélem tudtok segíteni.
Van egy problémám amire nem tudok rájönni://
// Mod: Add a double knock to send extra message to the MQTT
//
//
//
#include <FS.h> //this needs to be first, or it all crashes and burns...
#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
#include <PubSubClient.h>
//GPIO Pin definitions
#define WiFiLED 13
#define TouchLED 12 //Also operates Relay coil
#define TouchInput 0
//Only output info to serial if this is HIGH
#define fDebug true
//Set our inital states and values
boolean ledState = false;
boolean lastButtonState = false;
boolean buttonState = false;
// Removed because of the new concept implemented
//unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
//unsigned long debounceDelay = 50; // the debounce time; increase if the output flickers
// Button timing variables
unsigned long debounce = 20; // ms debounce period to prevent flickering when pressing or releasing the button
unsigned long DCgap = 250; // max ms between clicks for a double click event
unsigned long holdTime = 1000; // ms hold period: how long to wait for press+hold event
unsigned long longHoldTime = 3000; // ms long hold period: how long to wait for press+hold event
unsigned long currentTime = 0;
// Button variables
boolean buttonVal = HIGH; // value read from button
boolean buttonLast = HIGH; // buffered value of the button's previous state
boolean DCwaiting = false; // whether we're waiting for a double click (down)
boolean DConUp = false; // whether to register a double click on next release, or whether to wait and click
boolean singleOK = true; // whether it's OK to do a single click
unsigned long downTime = 0; // time the button was pressed down
unsigned long upTime = 0; // time the button was released
boolean ignoreUp = false; // whether to ignore the button release because the click+hold was triggered
boolean waitForUp = false; // when held, whether to wait for the up event
boolean holdEventPast = false; // whether or not the hold event happened already
boolean longHoldEventPast = false;// whether or not the long hold event happened already
#define MQTT_VERSION MQTT_VERSION_3_1_1
const PROGMEM uint16_t MQTT_SERVER_PORT = 1883;
const PROGMEM char* MQTT_CLIENT_ID = "Enterance Room Light Switch";
const PROGMEM char* MQTT_USER = "mqtt_user";
const PROGMEM char* MQTT_PASSWORD = "mqtt_psw";
const char* MQTT_LIGHT_STATE_TOPIC = "enterance/lightswitch/status";
const char* MQTT_LIGHT_COMMAND_TOPIC = "enterance/lightswitch/switch";
const char* MQTT_LIGHT_SPECIAL_TOPIC = "enterance/lightswitch/special";
const char* LIGHT_ON = "ON";
const char* LIGHT_OFF = "OFF";
const char* CLICK = "CLICK";
const char* LONGPRESS = "LONGPRESS";
//Create our objects for MQTT and define our IP Address class
WiFiClient espClient;
PubSubClient client(espClient);
IPAddress MQTT_SERVER_IP(192, 168, 1, 140);
void setup() {
#if defined(fDebug)
Serial.begin(115200); Serial.println(); Serial.println(); Serial.println();
#endif
//Setup our GPIO pins for input/output as needed
pinMode(WiFiLED, OUTPUT);
pinMode(TouchLED, OUTPUT);
pinMode(TouchInput, INPUT);
//Turn those LEDS's off :)
digitalWrite(WiFiLED, HIGH);
digitalWrite(TouchLED, ledState);
//Instantiate the WifManager library
WiFiManager wifiManager;
//Set a host name
wifi_station_set_hostname("sonoffTouch");
//Un remark this if your want to clear the saved connection settings.
//wifiManager.resetSettings();
#if defined(fDebug)
wifiManager.setDebugOutput(true);
#endif
//If autoconnection fails, go into AP mode so the user can configure the WiFi connection to the local WLan
if (!wifiManager.autoConnect("TaTaTatooouchMe")) {
delay(3000);
ESP.reset();
} else {
//WiFi LED is on when low
digitalWrite(WiFiLED, LOW);
//get our MQTT servers address
//WiFi.hostByName("your_mgtt.server.co.uk", MQTT_SERVER_IP);
yield();
//Establish conenction to MQTT server
client.setServer(MQTT_SERVER_IP , MQTT_SERVER_PORT);
client.setCallback(callback);
//Phew, have a bit of a breather to give everything a chance to settle down
delay(1000);
}
}
// function called to publish the state of the light (on/off)
void publishLightState() {
#if defined(fDebug)
Serial.println("PublishLightState Called");
Serial.print("Light State: ");
Serial.println(ledState);
#endif
if (ledState == HIGH) {
#if defined(fDebug)
Serial.print("Light state high ");
Serial.println(ledState);
#endif
client.publish(MQTT_LIGHT_STATE_TOPIC, LIGHT_ON, true);
} else {
#if defined(fDebug)
Serial.print("Light state low ");
Serial.println(ledState);
#endif
client.publish(MQTT_LIGHT_STATE_TOPIC, LIGHT_OFF, true);
}
}
void publishClickState() {
#if defined(fDebug)
Serial.print("Click event ");
#endif
client.publish(MQTT_LIGHT_SPECIAL_TOPIC, CLICK, true);
}
void publishLongPushState() {
#if defined(fDebug)
Serial.print("Long push event ");
#endif
client.publish(MQTT_LIGHT_SPECIAL_TOPIC, LONGPRESS, true);
}
// function called to turn on/off the light
void setLightState() {
//Set our light state, ie turn the touch LED on/off which is the same GPIO pin as the relay.
digitalWrite(TouchLED, ledState);
}
// function called when a MQTT message arrived
void callback(char* p_topic, byte* p_payload, unsigned int p_length) {
// concat the payload into a string
#if defined(fDebug)
Serial.println("Callback...");
#endif
String payload;
for (uint8_t i = 0; i < p_length; i++) {
payload.concat((char)p_payload[i]);
}
#if defined(fDebug)
Serial.print("Payload: ");
Serial.println(payload);
#endif
// handle message topic
if (String(MQTT_LIGHT_COMMAND_TOPIC).equals(p_topic)) {
// test if the payload is equal to "ON" or "OFF"
if (payload.equals(String(LIGHT_ON))) {
if (ledState != true) {
ledState = true;
setLightState();
publishLightState();
}
} else if (payload.equals(String(LIGHT_OFF))) {
ledState = false;
setLightState();
yield();
publishLightState();
}
}
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
#if defined(fDebug)
Serial.print("INFO: Attempting MQTT connection...");
#endif
// Attempt to connect
if (client.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASSWORD)) {
#if defined(fDebug)
Serial.println("INFO: connected");
#endif
yield();
// Once connected, publish an announcement...
publishLightState();
// ... and resubscribe
client.subscribe(MQTT_LIGHT_COMMAND_TOPIC);
} else {
#if defined(fDebug)
Serial.print("ERROR: failed, rc=");
Serial.print(client.state());
Serial.println("DEBUG: try again in 5 seconds");
#endif
// Wait 5 seconds before retrying
for (int i = 0; i < 500; i++) {
if ( checkButton() == 1) {
ledState = !ledState;
setLightState();
delay(10);
}
}
}
}
}
void loop() {
if (!client.connected()) {
#if defined(fDebug)
Serial.println("Reconnect");
#endif
reconnect();
}
//Get the current button state
// int reading = digitalRead(TouchInput);
// //De-bounce the button
// if (reading != lastButtonState){
// lastDebounceTime = millis();
// }
// if ((millis() - lastDebounceTime) > debounceDelay) {
// // whatever the reading is at, it's been there for longer
// // than the debounce delay, so take it as the actual current state:
//
// // if the button state has changed:
// if (reading != buttonState) {
// buttonState = reading;
//
// // only toggle the LED if the new button state is HIGH
// if (buttonState == HIGH) {
// ledState = !ledState;
// }
// // set the LED:
// setLightState();
// publishLightState();
// }
// }
// // save the reading. Next time through the loop,
// // it'll be the lastButtonState:
// lastButtonState = reading;
// delay(64);
int b = checkButton();
yield();
if (b == 1) {
ledState = !ledState;
setLightState();
publishLightState();
}
if (b == 2) {
publishClickState();
}
if (b == 3) {
// Not Used
}
if (b == 4) {
publishLongPushState();
}
yield();
client.loop();
yield();
}
int checkButton() {
int event = 0;
buttonVal = digitalRead(TouchInput);
currentTime = millis();
// Button pressed down
if (buttonVal == LOW && buttonLast == HIGH && (currentTime - upTime) > debounce)
{
downTime = currentTime;
ignoreUp = false;
waitForUp = false;
singleOK = true;
holdEventPast = false;
longHoldEventPast = false;
if ((currentTime - upTime) < DCgap && DConUp == false && DCwaiting == true) DConUp = true;
else DConUp = false;
DCwaiting = false;
}
// Button released
else if (buttonVal == HIGH && buttonLast == LOW && (currentTime - downTime) > debounce)
{
if (not ignoreUp)
{
upTime = currentTime;
if (DConUp == false) DCwaiting = true;
else
{
event = 2;
DConUp = false;
DCwaiting = false;
singleOK = false;
}
}
}
// Test for normal click event: DCgap expired
if ( buttonVal == HIGH && (currentTime - upTime) >= DCgap && DCwaiting == true && DConUp == false && singleOK == true && event != 2)
{
event = 1;
DCwaiting = false;
}
// Test for hold
if (buttonVal == LOW && (currentTime - downTime) >= holdTime) {
// Trigger "normal" hold
if (not holdEventPast)
{
event = 3;
waitForUp = true;
ignoreUp = true;
DConUp = false;
DCwaiting = false;
//downTime = millis();
holdEventPast = true;
}
// Trigger "long" hold
if ((currentTime - downTime) >= longHoldTime)
{
if (not longHoldEventPast)
{
event = 4;
longHoldEventPast = true;
}
}
}
buttonLast = buttonVal;
return event;
}Ez egy SONOFF Touch kódja. Ha a checkButtont használom a loopba lévő kikommentezett rész helyett akkor random kifagy stack overflow ra hivatkozik. Mit rontottam el?
-
Tankblock
aktív tag
válasz
Teasüti #7383 üzenetére
Hello,
Akkor én felvállalom hogy több mint 1 van ebben az értelemben.
Arduino defacto programozási nyelv --> azaz szépen eltünteti a felhasználó elöl hogy mit is használ, aztán meg ha véletlenül 2 könyvtár ugyanazt az erőforrást használja akkor jön a probléma.
Ugyanaz mint amikor a WS2812 könyvtár RMT használja, meg mondjuk lehetne még használni IR adó vevőnek ugyanezt az erőforrást mert 8 csatornája van ha jól emlékszem,
Én ezért fogtam bele az ESP-IDF be és igen nincs minden dokumentálva, és néha nagyot lehet mellényúlni.
A másik oldalról, meg a fejlesztők ESP-IDF c++ kompatibilis és eclipse alatt lehet c++ is programozni. Akár Arduinos könyvtárat is behúzni / átírni....Vagy csak kevés időmben is mazoista vagyok...
Nem szólnám le ezt sem. Ez mellett szeretem az Arduino-t. Szeretem, hogy kész dolgokat kell csak összerakni és fut. Ezzel spórolhatok időt és az összes ESP8266 home automation erre épül.
Mindegyiknek megvan a szépsége.
-
Tankblock
aktív tag
válasz
Teasüti #7329 üzenetére
Hello,
Tasknál, ha van a végén vTaskDelete( xHandle ); és megfelelően magasra állítod a priorítását akkor nem tudod megölni sem...
ha csak meghívod 1000x akkor el fog fogyni a stack / memória akkor a xTaskCreate() fvg visszatér egy szép hibával:
errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY
Értem, így pont nem használod ki a HW képességeit. Ha az RTM használod erre akkor nem kellene delayel szórakozni....
Egy Queue ba bedobálni a mintákat az meg a RTM rakja a mintát.....
Bár nem ismerem a feladat részleteit..... -
Tankblock
aktív tag
válasz
Teasüti #7312 üzenetére
Hello,
Ha jól emlékszem, akkor külön task ID fog kapni és fog párhuzamosan futni n-szer is.
Amit leírtál az tervezést igényel.
SW megoldásként : a megszakításban kellene viszgálni, hogy mikor volt utoljára meghívva az interupt és ha az idő megfelelően nagy csak akkor végigfuttatni a megszakítás logikáját.
Vagy
Perlmentesíteni HW esen,
Delay miért kell? nem lehet másképpen megoldani? pl Queue v xEventGroup (ez nem tudom, h implementálva van-e ESP32 FreeRTOS ra.) Vagy Taskot suspendedbe tenni és felkelteni amikor kell....
-
Tankblock
aktív tag
Hello,
2.4 GHz miatt nem túl sok. A víz például elnyeli/csillapítja a hullámokat.
Mire kellene?
Wifi nyílt terepen még a beépített awntenával is lehet kapcsolatot tartani akár km nagyságrendben, megfelelő antennával ha közvetlen a rálátás még többet is. Ha nagyobb távolság kell és néhány byte adat olvasni akkor LoRa/GSM lesz a befutó.....
-
Tankblock
aktív tag
válasz
hodostamas #7179 üzenetére
Hello,
Lábak / Timerek / I2C addressek nem akadnak össze?
Gondolok itt a ethernet shield és a többi eszközre.... -
-
-
Tankblock
aktív tag
válasz
Teasüti #7124 üzenetére
Muszáj, mert W2812b protokolja így néz ki:
https://cpldcpu.com/2014/01/14/light_ws2812-library-v2-0-part-i-understanding-the-ws2812/
szóval azokat RGB koordinátákat egy időbeni eltolásos protokollá kell traszferálni. A Remote Kontroll struktúrája pedig addr0 level [31] period [30:16], level [15], period [14:0] ábrázoással kell tárolni.
level bit 0v1
period hossza amíg ki kell tartani....ezt kombinálva 1 bitet 32 biten kell tárolni W2812b protokollja végett.
-
Tankblock
aktív tag
válasz
Teasüti #7122 üzenetére
Hello,
Ha jól értelmezem a kódot, akkor a
Ebben a structban csak a pixelek színkódjait tárolja:
pState->buf_data[0 + i * 3] = pStrand->pixels[i].g;
pState->buf_data[1 + i * 3] = pStrand->pixels[i].r;
pState->buf_data[2 + i * 3] = pStrand->pixels[i].b;Majd a library ban a
static void copyToRmtBlock_half(strand_t * pStrand);
másolja be a átváltás után HW memóriába:
RMTMEM.chan[pStrand->rmtChannel].data32[data32_idx].val = pState->pulsePairMap[bitval].val;
majd ezt frissíti az interruptban, ahogy kiküldte ameit kell.
-
Tankblock
aktív tag
válasz
Teasüti #7120 üzenetére
Hello,
Csak azért vannak a pointerek, mert a 8 csatornát másként teljesen általánosan kezelni nem egyszerű.
A mit miértért, meg javaslom, hogy nézd meg a esp32_technical_reference_manual_en -t. 14.2.1 RMT arcitecture elmagyarázza a HW működést a Remote Controller Peripheral nak. -
Tankblock
aktív tag
válasz
Janos250 #7118 üzenetére
A demo2 nézem....
strand_t STRANDS[]
ből is kivetted a nem kellő részét?int STRANDCNT = sizeof(STRANDS)/sizeof(STRANDS[0]);
void app_main() ben
while (true) {
for (int i = 0; i < STRANDCNT; i++) {
strand_t * pStrand = &STRANDS[i];
rainbow(pStrand, 0, 2000);
digitalLeds_resetPixels(pStrand);
}
} -
Tankblock
aktív tag
Hello,
Rajzold le a folyamat ábrát, mit és mikor csinálsz, hogy jutsz egyik állapotból másik állapotba milyen feltételekkel. Mi van ha konkurál a 2 gomb..
Majd ezt szépen állapotgépben implementálható.
Mivel emberi felhasználásra lesz tennék bele mindent tiltó gombot is( Nagy piros gomb)
-
Tankblock
aktív tag
Hello,
Szerintem koncepcionálisan van elbökve a kód.
interruptba nem illik/ szabad kiíratást rakni.
Az interrupt kódjának illik minimálisnak lennie ha lehetne késedelm delay nélkül.....Ha az időt (previousMillis ha jól látom )kiteszed volatile unsigned longba, akkor millis fv segítségével aktualizálhatod.
Én a logikát a loopba raknám és a Interruptokba csak flageket állítanék és állapotgépeket pörgetnék a loopba, megfelelő feltételek melett, és a delay-t helyett for időkülönbséget néznék az állapogépben.....
De ez én vagyok, remélem más ad jobb tanácsokat. -
Tankblock
aktív tag
ESP32-IDF hát ööö még bugos is, pl
ledc_set_fade_with_step fv ha a scale attribútummal oszt még akkor is ha az nulla...
eredmény győzelmi zászló.... -
Tankblock
aktív tag
válasz
Teasüti #7069 üzenetére
Hello,
Én élvezem, hogy végre eclipse alatt tudok fordítani, és nem az Arduino IDE-be vagyok korlátozva. C nyelvet sem mostanság használtam, és van lehetőség C++ is.
Nem vagyunk egyformák, nekem a Win10 egy csalódás, és kacsingatok az új Ubuntu 17.10 után.
A dokumentáció hiányosságai okoznak fejfájást. Nem minden működik a leírtak szerint az ESP-IDF ben. Van még rajta mit csiszolni.
Az interrupt kezelést kellene megtanulnom, pont ez az ami idegesít, mert a leírtakból pont nem lehet megcsinálni amit szerettem volna --> ledc fade végén interruptban visszafele fadelni szeretném A technikai sheet szerint az összes channel tud a végén interruptot. A HW képességei lenyűgözőek. A tudásom meg igen kevés.
Feltűnö h az Arduino ideben írt villogtatás 65% lassabb --> túl nagy az overhead.
ESP-IDF ben ezek mennek eddig :
RTOS Task kezelés, Queue, Semaphore/Mutex - > binary semaphoret értem , de nem használtam
i2c scannert sikerül már írnom.
Led villogtatás is megy.
MQTT-re üzenet küldés. igaz ez kész library-t használva.
Most küzdök a ledc -vel.Lehet kellene egy ESP32 ESP-IDF topic, hogy ezt ne offoljuk szét.
-
Tankblock
aktív tag
válasz
JozsBiker #7072 üzenetére
Hello,
Meglehet, hogy igazad van. ESP8266 köré terveztem a projectet, ha már volt itthon. és RTC is.
Wifi-t szerettem volna mert NTP vel egyszerű a sync, és ha lesz időm akkor webservert vagy akár még MQTT vel is lehet pl riasztást beállítani. A HW ben a GPIO2 n van egy 100 Ohm ellenállás után egy buzzer is. Na az a része a softwarenek sincs még kész.
Amit élveztem eddig ebben a projectben :
- az a nyák tervezés -> előtte 0 tapasztalatom volt Eaglel és nyáktervezőt sem láttam középsuli óta.
- balzafa doboz készítés -> előtte 0 tapasztalatom volt ilyenel
- működik érzés. mégha tudom hogy félkész is.A project szigorúan itthonra készült, belegondolva, hogy mennyi időt tettem bele, és a 60 Neopixel kör sem olyan olcsó. Ez nekem csak hobby, így nem feltétlen a mindenek feletti ésszerű tervezés és kivitelezés a cél.
Ha kész lesz akkor nagyszerű karácsonyi ajándék lehet pl szülőknek egy második darab ahol az elvétett hibákat már nem követem el újra. -
Tankblock
aktív tag
válasz
Teasüti #7067 üzenetére
Hello,
Ez engem is érdekelne, amúgy se szeretném használi tovább az arduinot, és egy kicsit programozni.
Eddig csak annyit tudok amit a demokban leírtak, vagy amit a pcbreflux csatornáján lehet tanulni a youtubon.
Érzésre esp-idf is erősen fejlesztés alatt van. a esp32 forumja iszonyat lassú. A frissen regisztrálóknak a moderátor nézi és engedélyezi a hozzászólását.Referencia alapján kezdtem a küzdelmet.
-
Tankblock
aktív tag
Hallo,
Valaki esetleg ESP32 programozik ESP-IDF el?
Lenne egy kérdésem,
ledc re interruptot hogy lehet hozzárakni?ledc_fade_func_install(0);
ledc_isr_register(&ledc_isr_fnc, NULL, ESP_INTR_FLAG_IRAM , NULL);setupban tovább
printf("1. LEDC fade up to duty = %d\n", LEDC_TEST_DUTY);
után amikor az interrput jönne belehal...
for (ch = 0; ch < LEDC_TEST_CH_NUM; ch++) {
ledc_set_fade_with_time(ledc_channel[ch].speed_mode,
ledc_channel[ch].channel, LEDC_TEST_DUTY, LEDC_TEST_FADE_TIME);
ledc_fade_start(ledc_channel[ch].speed_mode,
ledc_channel[ch].channel, LEDC_FADE_NO_WAIT);
}
vTaskDelay()ahol: --> itt ugye nem szabad printF használni, de ha másra cserélem akkor is megpusztul.
void IRAM_ATTR ledc_isr_fnc( void * arg) {
printf("OMG, it is works \n");
} -
Tankblock
aktív tag
Hello,
Egy az egyben természetesen nem. A tervezési minta, az volt, hogy az órának nem kellene egész nap Wifi-t használni, inkább RTC kellene frissíteni alkalmanként. A másik az az állapotgépekkel működik, és ha jól emlékszen delay az szinte sehol sincs benne. Ez azért volt fontos, hogy ha lehet ne lehessen észrevenni azt hogy akadozik a másodperc mutató.
Ha kiveszed belőle WS2812b alias NeoPixel kódját és hozzáírod a "MAX7219 Dot Matrix Module 4 In One Display" kódját akkor igen,
Ha jól emlékszem MIT licences. Használd egészséggel.
-
Tankblock
aktív tag
-
Tankblock
aktív tag
válasz
kmisi99 #6982 üzenetére
Hello.
Picivel több részletet pls.
Milyen programmal küldesz ki milyen jelet, és azt mivel dolgozod fel?1 éve próbálkoztam vele, ott akadtam el igazán, hogy folyamatosan hogyan tudok képet snippelni, kiszámolni a rgb pixeleket, úgy hogy ne zabálja el a gép erőforrásait.
LED megjelenítés relatíve egyszerű.
-
Tankblock
aktív tag
válasz
S.Milan #6977 üzenetére
Hello,
nincs mit, használd egészséggel.
A relével meg óvatosan, főleg ha AC kapcsolgatsz vele.Elsőre nem értettem a problémádat, és úgy látom mobilról nem jó ötlet válaszolgatni, mert nem láttam át a kódot egybe.
HW ismeret sosem árt. Anno ESP-01 volt néhány órám rájönni, hogy mit lehet és mit nem.... -
Tankblock
aktív tag
válasz
S.Milan #6963 üzenetére
Hello,
Azt nézem hogy a relé a 0, 2 GPIO-n van.Ha ez igaz én inkább a másik pin választanél választanék.
GPIO 0 és 2 ugyanis a bootoláshoz is elengedhetetlen, gondolom, hogy ezt hallod.
RELAY_1 4 alias D2
RELAY_2 5 alias D1
Button meg 2 alias D4 vagy másik GPIO,Bocs ilyen boardom nincs. Tesztelni a teóriát nem tudom.
-
Tankblock
aktív tag
Hellosztok,
Ha már hétévége, előkotortam a SONOFF switchet és összegyúrtam a neten található kódokat.
Itt lehet megtekinteni és remélem lesz aki javítási szándékkal beletúr a kódba.
Céljaim:
MQTT vezérelt legyen, a rajta lévő gombbal is lehessen kapcsolni
Ami kimaradt az a GPIO14 is felapplikálni +1 gombot és implementálni. --> elosztót távolról vezérelni.Köszönöm a visszajelzéseket előre is és bocsánat a nem tiszta kódért.
Szerk : És ha jól látom instrukciókat is kellett volna írnom hozzá...
-
Tankblock
aktív tag
válasz
Janos250 #6942 üzenetére
Hello,
Ha lenne annyi időm... már nem lenne
[link] de van akinek sikerül...
Maradtam a jó öreg Raspi 3 Mosquitto / Nodered párosnál, s ha már itt tartunk akkor a SonOff Touch egyet be is üzemeltem ma.
Alexa köszöni jól el van, szobában a fő villany már szépen kapcsolható web/Alexa/touch alapon....
esp32 nél a freeRtos vagyok úgy hogy jó lenne minden részét végigpróbálni, de a TaskNotify még nincs kész. Talán a hétvégén marad némi felesleges időm....
-
Tankblock
aktív tag
válasz
gyapo11 #6935 üzenetére
Hello,
Utoljára egyetemen kellett pattern felismerőt irni az meg régen volt, amit találtam az elég frissnek tűnik: [link]
Pl ezzel. Ha autó alakja van oldalról akkor ok. Ha előről akkor gáz van.
Valami egyszerűbbel kezdenék neki. Ez még csak felismerhetjük, hogy hol van a másik, még kell valami AI ami ugye meghatározza merre is az arra.
-
Tankblock
aktív tag
válasz
Victoryus #6932 üzenetére
1 szavazat az ESP32 re, ha minnéél kevesebb komponensből szeretnéd megoldani.
OKok:
sokkal töb GPIO lába van mint a ESP8266 nak, 2 core így nem kell yield() szórakozni.
Elegendő számítási kapacítása van hogy kiszolgáljon.
Bluetooth is van ráadásként....Vagy SMT32 ből és egy Wifi ESP8266 a kommunikációhoz , de ezt nem biztos, hogy én választanám.
Vagy Esetleg egy sima ESP8266 ha kell GPIO extenderrel ha kell.
Kérdés, mit szeretnél, mennyi GPIO lábra van szükséged. Javaslatom előszöt nézd meg mennyi szenzort szeretnél használni, milyen modulokat, hol lehet egyszerűsíteni (pl I2C több modult felrakni) és az alapján válasz ha megvan a system design......
SzerK: Ultrahang szenzor nem lát részleteket, a legközelebbi viszhangot tudod detektálni. arra kamera kell Rasperry Pi pl elegendő számítási teljesítménye van erre.
Sima LED Mátrix vezérlésre a ESP8266 is elegendő....
-
Tankblock
aktív tag
válasz
BTminishop #6780 üzenetére
Hello,
Igen, ha weben keresztül csinálod, akkor platform függetlenül meg lehet oldani.
Bluetooth az egy másik világ, abban még nem vagyok otthon. -
-
Tankblock
aktív tag
válasz
Janos250 #6108 üzenetére
Hello,
Megmondom őszintén az eszközeim egyikét sem engedtem eddig a net közelébe.....
MQTT megy ESP32 alatt, nekem az elég is, most amúgy is még ESP8266 projecten dolgozgatok és az ESP32 ből próbálkozom a FreeRTOS működésének a megértésével. Terveim szerint amint lesz időm és tudok vele tovább foglalkozni elhagyom az Arduino IDE és magát az arduino core-t is és átmegyek eclipse alá, használom az esp sdk-t ESP32 nél.Remélem lassan minden featurehöz lesz épkézláb leírás. Az látszik, hogy a community mögé állt, Elegendő csak a youtubera feltöltött tartalmak mennyiségét megnézni. Tele van tutoriallal....
[link] én ezzel próbálkoznék.
-
Tankblock
aktív tag
válasz
Oryctolagus #6109 üzenetére
-
Tankblock
aktív tag
válasz
Oryctolagus #6106 üzenetére
Hello,
Lehet hogy a többiek megköveznek ezért...
Én vennék ESP32 Development boardot,
rengeteg felhasználható PIN, beépített Wifi, Bluetooth, Én a minnél kevesebből darabból hozzuk ki elvet követem. A támogatottság növekszik, bár lehet hogy inkább a freeRTOS mennék rá mint az arduino vonalra.
240MHz és a két mag bőven elég és a ESP8266 yieldezés sem kell alkalmazni....Vagy valami bivaly erős STM32 ...... + modulok......
Vagy Rasperry Pi3 és társai.....Hmm lehet ezzel most nem segítettem
.....
Azt kellene eldönteni hogy mi a fontos, lehessen mindenféle prognyelvven programozni, vagy célhardver legyen, hogy kombinálható legyen camera képfeldolgozóval.....
Mekkora bonyolultsági fokot szeretnél.... -
Tankblock
aktív tag
Hello Ezt cseréld ki
float utcOffset = -4;
+1 re.
És voala....
Magyarázat, a következő függvényben alkalmaz eltolást az időzóna függvényében.
void updateTime()
{
long curEpoch = localEpoc + ((millis() - localMillisAtUpdate) / 1000);
long epoch = round(curEpoch + 3600 * (utcOffset+summerTime) + 86400L) % 86400L;
h = ((epoch % 86400L) / 3600) % 24;
m = (epoch % 3600) / 60;
s = epoch % 60;
} -
Tankblock
aktív tag
válasz
ngabor2 #6034 üzenetére
Hello
Szerintem meg lehet csinálni, a kérdésem az mi az hogy időre.
Felejtsd el az arduino ide / framework overheadjét, és a chip leírása alapján használd a hw-t, írj közvetlenül a regiszterekbe, és menni fog.Nekem attiny13a van megoldva az hogy 4 perc 56 sec felkel 8 secre, felkapcsol 1 esp-01 mér 1 feszültséghez, azt sorosporton kiküldi, majd a végén. Vissza deepsleepbe. Ebben csak 1k flash van...
Ja és nincs benne hw támogatás a soros porthoz, sw serial van használva, valahol kellett használni némi assemblyt is... Ne rettentsen el, van a neten példa elég.
-
Tankblock
aktív tag
válasz
kormoskandur #6019 üzenetére
Hello,
64 w2812b címezhető rgb ledből óra, rtc vel és esp8266 al. Éppen fejlesztés alatt. Sync NTP vel netről.
Hiányzik még:
LDR, webserver ahol ébresztést lehet állítani. Hangkeltő......
Home automation kellene integrálni 2 sonoff ot.
És még van egy csomó ötletem. -
Tankblock
aktív tag
Hello,
Értem én, abba gondoltam bele, hogy 1 vezeték félre és a tápra is 5V megy, aztán jön a mágikus füst...
Jobb a békesség. Főleg az esp-01 moduloknál, ha belekavarodsz melyik láb melyik.Megjött az esp32 öm... Eddig tetszetős. Mondjuk a Framework kívül egy blinking LED lett csak használva. Ennyi időm volt Elsőre ment minden ( nem úgymint anno az esp8266 al
)
-
Tankblock
aktív tag
válasz
JohnnyX #5725 üzenetére
Hello
Wifi modul nem 5V toleráns, szintillesztő nélkül mágikus felhő lesz.
5V to 3V3 logic level Converter kell [link]
Keress/találj ki egy projectet, csináld meg.
Törekedj az egyszerűségre főleg az elején, hogy érsd meg az alapelveket, protokollokat, esetleg a HW rejtelmeit/regisztereket.Utána mehet a wifi is, és ha mégis jön a füst akkor se add fel, abból is lehet tanulni, főleg abból
Eddig a mérleg -3 Nano -> most várom a Diódákat hozzá, hogy megjavítsam....
-
Tankblock
aktív tag
válasz
MasterMark #5599 üzenetére
Hello,
Ha csak a Tx Rx cserélted fel abból hiba nem lesz, sajna nekem is sikerült sokszor ezt elkövetni...
Eddig minden működik.
-
Tankblock
aktív tag
válasz
Janos250 #5551 üzenetére
Hello Janos205,
a fő különbség a 4M(1MBSPIFF) revan állítva. A GPIO2 megnézem és felhúzom 10k ellenállással. Fura mert ez ESP-01 nem kellett....
Most per pill megyeget. NodeMCU Flash progival töröltem és utána megjavult, ja meg még a tápot is cseréltem....
Még nem atomstabil szóval köszönöm a tippeket! Amint lesz idő/ energia megnézem!!
-
Tankblock
aktív tag
-
Tankblock
aktív tag
ESP8266 ESP-12E modullal gyűlt meg a bajom.
Blink sketch megy,
Blink without delay -> nem megy.
Serial. begin után nem megy -> boot mode(3,6) wdt resettel elszáll, mint a győzelmi zászló.ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v3ffee254
~ld
e:
ets Jan 8 2013,rst cause:3, boot mode:(3,6)
ets_main.cNem tudom eldönteni, hogy connection, az új Arduino 1.8.2 IDE műve, vagy a Board rossz.
Vagy csak a 3V3 feszstab AMS1117 nem bírja a gyűrődést....
Ötletek????
-
Tankblock
aktív tag
-
Tankblock
aktív tag
Ami már kész van azt használjuk fel okosan. Írhatsz saját protokollt, websocketet, vagy akármi mást is. A kérdés az hogy mennyi időt szeretnél tervezéssel, implementálással, teszteléssel, újragondolással...
Nekem egy raspi3 on fut a broker és a nodered is. Hobby nak így jó, éles rendszernek nem így használnám...
-
Tankblock
aktív tag
Hello,
Milyen gyakran mérsz? Valamennyit fog mozogni, mondjuk én 5 percenként mérek, de így sem látok nagy kilengéseket, pl légnyomás ugyanannyi órákon keresztül is és a levegőnedvesség is....
Adafruitos könyvtárat használok :
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h> -
Tankblock
aktív tag
válasz
Janos250 #5222 üzenetére
Hmm
Ez az oldal szerint van 16A verzió 3500W terhelhetőséggel, bár én ezt se ajánlanám nyugodt szívvel.
Vagy keresni kell más megoldást pl 240V 40A relét amit lehet valamekkora egyenfeszültségről vezérelni pl MOSFET-el. Nem megoldhatatlan feladat. Igaz a design oltárán már a megfelelő izolációt és a megfelelő vezetékvastagságot is figyelembe kell venni. Itt már hamar lehet füsttel való kommunikációt gyakorolni
Vagy venni valami kész megoldást saccra ugyanennyiért
-
Tankblock
aktív tag
válasz
leventekov #5168 üzenetére
Hello,
Javaslom elöször a tutorialok böngészését, a HW es megoldások tanulmányozását, mert a mostani módszereddel sok lesz a csalódás. Ha majd érted az alapokat, akkor minden feladat könnyebb lesz. Csak jótanács.
Tervezd meg, nézz utána és válasz a helyzet nek megfelelő megoldást.
-
Tankblock
aktív tag
válasz
vitezlejszlo #5048 üzenetére
Hello,
Először próbáld e,g az arduino IDE lévő Webserver példa sketch et rátölteni.
Ha belenézel a kódba akkor látni fogod, hogy melyik elérési utvonalon fog a webserver kommunikálni, a többire valami hibaüzenetet fog dobni. -
Tankblock
aktív tag
Hello
ez melyik modul mert a ESP12E nincs 9,10 GPIO láb kivezetve, csak a ESP12F en.
16 os lábat nem javaslom, ezt használja a ESP.deepSleep is és fenn van tartva weak upra.Használható a GPIO 12,13,14, 5, 4.. Szerk: ja és a 0,2 is
Max valaki kijavít....
wdt resetet meg sokinden okozhat, hibakódot is nézd meg. miért van a reboot.
-
-
Tankblock
aktív tag
válasz
Speeedfire #4990 üzenetére
Hello,
A tápegység földje miért nincs közösítve az arduino földjével?
Nekem nem stimmelnek a vezetékek így vagy valamit. Benéztem.
-
Tankblock
aktív tag
Hello
Köszönöm szépen, e-bayen találtam 1A modult, de lehet, hogy megnézem ezt is.
Lipo akku adott volt, majd legközelebb jobban meggondolom a design döntéseimet. 100mA fel sem tűnt, volt hogy breadboardon jól ment vele egy szép nagy kondival... Igaz ott nem volt másik szenzor mellette...
-
Tankblock
aktív tag
Hellosztok,
LiPo akksiról szeretnék hajtani ESP8266 ot + szenzort és a következő Voltage Convertert választottam:
Az a helyzet ha ezt szeretném használni az ESP nem indul el.... ha megtápolom kívülről akkor megy szépen...
A kód debugglására ráment 3 napom, az jó.....
Valaki tud jobbat mondani? [3.0 - 4.27] Volt közé kellene valami konverter ami fix 3V3 at tud....
-
Tankblock
aktív tag
Sikerült egy ATTiny13A ból időzítőt faragni azaz ~5 perc (pontosan 296 [sec]) után 8 (s) felvillantja a LED et most. Ez egy test setup, a LED helyett egy N-MOSFET fog kapcsolgatni amin egy feszültség regulátor és egy ESP-01 lesz egy BMP?80 ahol ? lehet 1 és 2. Márcsak a ESP kdját kellene kicsit megfaragni és kész.
A legjobb az egészben h Arduino IDE csak a letöltéshez használtam, a kód csak HW regisztereket állít. és belefértem 1k Byte 28% ba, 5 byte dynamikus memóriát használva. 5,3 uA Fogyaszt amikor a 296 (sec) periódusban van.
Sketch uses 294 bytes (28%) of program storage space. Maximum is 1,024 bytes.
Global variables use 5 bytes of dynamic memory.Továbbá kellene valami amivel a Li-ion feszültségét is tudnám monitorozni. Az ESP csak 1V ADC van és nem szeretném ha mondjuk passzív ellenállás hídat kellene építeni, mert az túl sok energia.
Én erre gondoltam:
NA219 GY-219 Bi-direction DC Current Power Supply Breakout Sensor Module DIY
Még egy requirement, legyen kis méretű, energia felhasználása is kevés
ha lehet I2C kommunikálható, ha nem akkor egyszerű....Előre is köszönöm az ötleteket.
Új hozzászólás Aktív témák
- ThinkPad (NEM IdeaPad)
- A fociról könnyedén, egy baráti társaságban
- Lexus, Toyota topik
- Luck Dragon: Asszociációs játék. :)
- XPEnology
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- sziku69: Szólánc.
- Xiaomi 15 - kicsi telefon nagy energiával
- E-roller topik
- Honor 400 - és mégis mozog a kép
- További aktív témák...
- Intel Core i7 6700K / GTX 1660TI / 16GB DDR4 RAM / 500 GB SSD konfig eladó
- Samsung Galaxy S23 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A53 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Megkímélt állapotú Xbox Series X 1TB eladó. Kitisztítva és újrapasztázva!
- Gamer PC - i5 13400F, GTX 1080ti és 16gb DDR5
- 100 - Lenovo Yoga Pro 9 (16IRP8) - Intel Core i9-13905H, RTX 4070 (ELKELT)
- ÁRGARANCIA!Épített KomPhone Ryzen 9 5900X 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Dell Latitude 5495 Full HD IPS Ryzen 5 pro 2500u Radeon Vega Mobile Gfx i5-8350u verő Bp MPL Foxpost
- Asus E510M 128GB SSD, 4GB RAM, 1 Év Garanciával
- Csere-Beszámítás! Asztali számítógép PC Játékra. I5 12400F / RTX 3070 / 32GB DDR4 / 1TB SSD
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest