Wgrywanie supli do nodemcu

User avatar
PuteR
Posts: 1473
Joined: Wed Dec 06, 2017 10:07 am

Post

Witam, czy może ktoś mi pomóc lub przekierować do jakiejś instrukcji jak do nodemcu wgrać suplę?? Szukałem jakiegoś FAQ ale nic nie znalazłem. Wersja którą ja posiadam to V3 ale do innych pewnie wgrywa się podobnie. Może ktoś był by wstanie stworzyć jakąś instrukcję.
User avatar
byniom
Posts: 695
Joined: Sat Jan 07, 2017 1:17 pm
Been thanked: 1 time

Post

Wszystko zależy co chcesz wgrać , jaki soft. Jak napisany w arduino to przez środowisko arduino jak typowe z supli to przez programator usb i programem np. flash download tool
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

Zasada jest taka:

W twoim przypadku NodeMCU V3 posiada port USB, wpinasz go do komputera. Żeby cokolwiek zaprogramować musisz wejść w tryb programowania w procesorze tzw. BOOT MODE, robi się to w następującej kolejności. Przytrzymujesz przycisk FLASH (GPIO 0) i następnie naciskasz na pół sekundy przycisk RESET. Puszczasz następnie przycisk FLASH. Od tego moment procesor czeka na wgranie nowego softu. W przypadku innego rodzaju płytki musisz GPIO 0 zewrzeć do masy i uruchomić procesor lub nacisnąć przycisk RESET ( o ile dostępny ). Wtedy też procesor wejście w tryb BOOT MODE.

Kolejną czynnością to jest wybrać program który chcemy wgrać.

Jeśli jest to program z roszerzeniem *.INO to wgrywasz go przez Arduino IDE
Jeśli jest to program z roszerzeniem *.BIN to wgrywasz go przez np. NODEMCU FIRMWARE PROGRAMMER

Wybierasz w obu przypadkach port COM na którym pojawił Ci się moduł (np. COM3).

W zależności od rozszerzenia pliku jeśli jest to tylko INO to dajesz wgraj, ew. ustawiasz w pliku swoje dane typu ssid i hasło do wifi, które zostanie po chwili wgrane do procesora.

Jeśli jest to plik BIN to możliwe jest jeszcze ustawienie odpowieniego adresu pamięci do którego ma być wgrany plik / pliki.
Zybi
Posts: 1511
Joined: Sun Jun 26, 2016 4:24 pm

Post

Duch__ wrote: Wed Jun 06, 2018 7:37 pm ...
Jeśli jest to program z roszerzeniem *.BIN to wgrywasz go przez np. NODEMCU FIRMWARE PROGRAMMER
...
Wszystko się zgadza poza polecaniem programu NODEMCU FIRMWARE PROGRAMMER.
Jest to program niepolecany przez forumowiczów Supli. Nie wiadomo dlaczego, ale potrafi sprawić wiele problemów.
Dla tych co mają dogłębnie przeczytane forum jest to znana opinia o tym programie.

Proszę używać programu firmy Espressif "ESP Flash Download Tool".

Edit:
a tak w ogóle, to należy zapoznać się z tym wątkiem:

viewtopic.php?f=23&t=2108

oraz innymi w dziale FAQ i forum czytać!
User avatar
PuteR
Posts: 1473
Joined: Wed Dec 06, 2017 10:07 am

Post

A czy w arduinio ide muszę wybrać jakiś rodzaj płytki, bo wyskakuje "Błąd kompilacji dla płytki Arduino/Genuino Uno.", a NodemCu nie ma do wyboru/
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
Zybi
Posts: 1511
Joined: Sun Jun 26, 2016 4:24 pm

Post

cino111
Posts: 714
Joined: Mon May 07, 2018 8:00 pm

Post

Wszystko na forum przeczytałem napisałem program i mam trzy pytania:
1.Nie chce działać mi termometr. Podczas pracy układu wyjmę zasilanie czujnika to zaskoczy i pokazuje -125 stopni i jak podam ponownie zasilanie to już działa prawidłowo, aż do momentu wyłączenia całkowicie układu i ponownego włączenia - sytuacja się powtarza. Dodatkowo jak już w końcu po kombinacjach z odpinaniem kabelków zadziała to każda zmiana w cloudzie nazwy czujnika wywala odczyt temperatury.
2. Podczas pracy pokazuje się wifi ESP8266. Czy po programowaniu z Arduino IDE można połączyć się z ESP i zmienić parametry np SSID? Chyba nie, więc pewnie za dużo gdzieś jest dopisane. Czy moze wykasować

Code: Select all

 bool supla_arduino_svr_connect(const char *server, int port) {
          return client.connect(server, 2015);


3. jakim poleceniem mogę wykonać ściemniacz? Nie chcę RGBW tylko samo W.

Tu mam cały kod. Poproszę o uwagi do niego.

Code: Select all

/**
 * Supla.org NodeMCU WiFi minimal example
 * Author: Programistyk - Kamil Kaminski <[email protected]>
 * 
 * This example shows how to configure SuplaDevice for building for NodeMCU within Arduino IDE
 */

#include <OneWire.h>
#include <DallasTemperature.h>


#include <srpc.h>
#include <log.h>
#include <eh.h>
#include <proto.h>
#include <IEEE754tools.h>
// We define our own ethernet layer
#define SUPLADEVICE_CPP
#include <SuplaDevice.h>
#include <lck.h>

#include <WiFiClient.h>
#include <ESP8266WiFiType.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiScan.h>
#include <ESP8266WiFiMulti.h>
#include <WiFiServer.h>
#include <ESP8266WiFiGeneric.h>
#include <WiFiClientSecure.h>
#include <ESP8266WiFiAP.h>
#include <ESP8266WiFiSTA.h>
#include <WiFiUdp.h>

// Setup a oneWire instance
OneWire oneWire(2); // D4 GPIO 2 - Pin number

// Pass oneWire reference to Dallas Temperature
DallasTemperature sensors(&oneWire);


WiFiClient client;

// Setup Supla connection
const char* ssid     = "xxxxxx" ;
const char* password = "xxxxxx";


// DS18B20 Sensor read implementation
double get_temperature(int channelNumber, double last_val) {

    double t = -275;
    
    if ( sensors.getDeviceCount() > 0 )
      {
         sensors.requestTemperatures();
         t = sensors.getTempCByIndex(0); 
      };

    return t;  
}

void setup() {
  Serial.begin(115200);
  
     // Init DS18B20 library 
        sensors.begin();

 
        
  delay(10);

  // Replace the falowing GUID
  char GUID[SUPLA_GUID_SIZE] = {0x5A,0x0D,0x07,0x01,0xE7,0xC2,0x46,0x07,0xA3,0x19,0x2C,0x26,0xED,0xD3,0x42,0xC7};
  // with GUID that you can retrieve from https://www.supla.org/arduino/get-guid

  // Ethernet MAC address
  uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};

  /*
   * Having your device already registered at cloud.supla.org,
   * you want to change CHANNEL sequence or remove any of them,
   * then you must also remove the device itself from cloud.supla.org.
   * Otherwise you will get "Channel conflict!" error.
   */

 

    // CHANNEL 0 
    SuplaDevice.addDS18B20Thermometer(); //czujnik temperatury DS18B20 na D2 GPIO-4

    
  // CHANNEL1 - RELAY
  SuplaDevice.addRelay(D1, true);      // GPIO5 - Pin number where the relay is connected      
                                      // Call SuplaDevice.addRelay(D1, true) with an extra "true" parameter 
                                      // to enable "port value inversion"
                                      // where HIGH == LOW, and LOW == HIGH   

  // CHANNEL2 - RELAY
 SuplaDevice.addRelay(D2, true);           // GPIO4 - Pin dla przekaznika - dopisanie true odwraca logikę, czyli dla przekaznikow zalaczanych masa 

                                            // omijam D3 gdyz jest to GPIO 0 i sluzy do flashowania
 // CHANNEL3 - RELAY
 SuplaDevice.addRelay(D6, true);           // GPIO2 - Pin number where the relay is connected    

  // CHANNEL4 - RELAY
 SuplaDevice.addRelay(D5, true);           // GPIO14 - Pin number where the relay is connected  

 // CHANNEL5 - Opening sensor (Normal Open)
 // SuplaDevice.addSensorNO(D5); // A0 - Pin number where the sensor is connected
                               // Call SuplaDevice.addSensorNO(A0, true) with an extra "true" parameter
                               // to enable the internal pull-up resistor


  // CHANNEL5 - Opening sensor (Normal Open)
  //SuplaDevice.addSensorNO(D7); // A1 - Pin number where the sensor is connected


  // CHANNEL6 - DHT22 Sensor
  // SuplaDevice.addDHT11();
  // SuplaDevice.addAM2302();
  // SuplaDevice.addDHT22();

  SuplaDevice.begin(GUID,              // Global Unique Identifier 
                    mac,               // Ethernet MAC address
                    "xxxx.supla.org",  // SUPLA server address
                    xxxx,                 // Location ID 
                    "xxxx");               // Location Password

}

void loop() {
  SuplaDevice.iterate();
}

// Supla.org ethernet layer
    int supla_arduino_tcp_read(void *buf, int count) {
        _supla_int_t size = client.available();
       
        if ( size > 0 ) {
            if ( size > count ) size = count;
            return client.read((uint8_t *)buf, size);
        };
    
        return -1;
    };
    
    int supla_arduino_tcp_write(void *buf, int count) {
        return client.write((const uint8_t *)buf, count);
    };
    
    bool supla_arduino_svr_connect(const char *server, int port) {
          return client.connect(server, 2015);
    }
    
    bool supla_arduino_svr_connected(void) {
          return client.connected();
    }
    
    void supla_arduino_svr_disconnect(void) {
         client.stop();
    }
    
    void supla_arduino_eth_setup(uint8_t mac[6], IPAddress *ip) {

       // Serial.println("WiFi init");
        WiFi.begin(ssid, password);

        while (WiFi.status() != WL_CONNECTED) {
            delay(500);
        //    Serial.print(".");
        }

        //Serial.print("\nlocalIP: ");
        //Serial.println(WiFi.localIP());
        //Serial.print("subnetMask: ");
        //Serial.println(WiFi.subnetMask());
        //Serial.print("gatewayIP: ");
        //Serial.println(WiFi.gatewayIP());
    }

SuplaDeviceCallbacks supla_arduino_get_callbacks(void) {
          SuplaDeviceCallbacks cb;
          
          cb.tcp_read = &supla_arduino_tcp_read;
          cb.tcp_write = &supla_arduino_tcp_write;
          cb.eth_setup = &supla_arduino_eth_setup;
          cb.svr_connected = &supla_arduino_svr_connected;
          cb.svr_connect = &supla_arduino_svr_connect;
          cb.svr_disconnect = &supla_arduino_svr_disconnect;
          cb.get_temperature = &get_temperature;
          cb.get_temperature_and_humidity = NULL;
          cb.get_rgbw_value = NULL;
          cb.set_rgbw_value = NULL;
          
          return cb;
}
User avatar
PuteR
Posts: 1473
Joined: Wed Dec 06, 2017 10:07 am

Post

Panowie co robię tak jak w Adruino IDE wywala mi coś takiego??

Code: Select all

Arduino:1.8.5 (Windows Store 1.8.10.0) (Windows 10), Płytka:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)"

In file included from C:\Users\puter\Desktop\Supla_Button\Supla_Button.ino:7:0:

C:\Users\puter\Documents\Arduino\libraries\ESP8266_and_ESP32_Oled_Driver_for_SSD1306_display\src/SH1106Brzo.h:35:22: fatal error: brzo_i2c.h: No such file or directory

 #include <brzo_i2c.h>

                      ^

compilation terminated.

exit status 1
Błąd kompilacji dla płytki NodeMCU 1.0 (ESP-12E Module).

Ten raport powinien zawierać więcej informacji jeśli w 
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

Brakuje pliku brzo_i2c.h. Spróbuj na pierwszyraz coś z podstawowych źródeł.
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:

Return to “Pomoc”