Elektronik / Embedded / Mobil Cihazlar
Arduino İle ESP8266 İçin Derleme Yapamıyorum
Arduino İle ESP8266 İçin Derleme Yapamıyorum
-
Slm gençler;
geçenlerde 3W lık amatör bir lazer engraver satın aldım. Cihaz iyidir hoştur ama aleti daha hoş yapacak bir özelliği daha var. Cihazı ESP8266 wifi modülü monte ederek kablosuz olarak da çalıştırabiliyorsunuz. Kablo ile derdin nedir diyenler için anlatayım; alet sonuçta ahşap yakıyor ve evin içine bir süre sonra duman ve yanık ahşap kokusu çörekleniyor, bir fotoğrafı ahşaba yüksek çözünürlüklü basmak yarım günden fazla sürdüğü oluyor. Bu nedenle aleti gerektiğinde cam balkona çıkarayım, orda kendi başına takılsın, ben de odamda PC kullanmaya devam edebileyim.
Derleme konusuna dönecek olursak arduino kaynak kod ve kütüphaneler şurada;
https://github.com/arkypita/ESP8266-SerialWebSocket
Bu sayfada hangi kütüphanelerin indirilmesi gerektiği, yapılacaklar sırasıyla anlatılmış, tek tek link verirsem daha da kafa karıştırır.
1- Derleme esnasında nerede hata yapıyor olabilirim? arduino ide versiyon 1.8.8
2- Derlenecek olan bu koda müdahale etmem gerekiyor mu, yani SSID, password, çip konfigürasyonları vb. bilgileri bunların içine derleme öncesi mi girmeliyim yoksa derleyip cihaza yükledikten sonra cihaza bağlanıp mı girmeliyim anlamadım.
Aldığım derleme hatası ise şöyledir;
Arduino:1.8.8 (Windows 10), Kart:"Generic ESP8266 Module, 80 MHz, Flash, Enabled, none, 26 MHz, 40MHz, DOUT, 4M (1M SPIFFS), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200" websocketserver:33:14: error: 'void SerialTerminal::setup()' cannot be overloaded void setup() { ^ websocketserver:162:6: error: with 'void SerialTerminal::setup()' void setup() ^ websocketserver:39:14: error: 'void SerialTerminal::loop()' cannot be overloaded void loop() { ^ websocketserver:180:6: error: with 'void SerialTerminal::loop()' void loop() ^ C:\Users\EST\Desktop\ESP8266-SerialWebSocket-master\websocketserver\websocketserver.ino: In function 'void webSocketEvent(uint8_t, WStype_t, uint8_t*, size_t)': websocketserver:124:77: error: 'SendFormat' was not declared in this scope SendFormat(num, "Connected to: %s\n", WiFi.SSID().c_str()); ^ websocketserver:136:67: error: 'SendFormat' was not declared in this scope SendFormat(num,"CPU Freq: %uMHz\n", ESP.getCpuFreqMHz()); ^ websocketserver:145:61: error: invalid conversion from 'const char*' to 'const uint8_t* {aka const unsigned char*}' [-fpermissive] Serial.write((const char *) (payload), (lenght)); ^ In file included from C:\Users\EST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0-beta1\cores\esp8266/Arduino.h:263:0, from C:\Users\EST\Desktop\ESP8266-SerialWebSocket-master\websocketserver\websocketserver.ino:3: C:\Users\EST\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0-beta1\cores\esp8266/HardwareSerial.h:168:12: error: initializing argument 1 of 'virtual size_t HardwareSerial::write(const uint8_t*, size_t)' [-fpermissive] size_t write(const uint8_t *buffer, size_t size) ^ exit status 1 'void SerialTerminal::setup()' cannot be overloaded This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.
Merak edenler için satın aldığım cihaz şudur;
Az sonra işe gideceğim, cepten cevap yazabilirim ama PC evde kalacağı için derleyip denemem geceyi bulacaktır, o nedenle kimse darılmasın :D
Ayrıca bu cihaz ile ilgili iş tekliflerine açığım, sevgililer gününe de az kaldı, beraber güzel hediyelikler tasarlayıp satabiliriz :D
-
Bari bi selam verip çıkın da up olsun :D
-
Bissürü hata vermiş..
Başka bir ide dene..
Adamın notları vardır..
-
Muhtemelen ben bir şeyleri eksik giriyorum veya yazarken syntax hatası yapıyor olabilirim. Arduino bilgim zayıf olduğundan çözemedim bir türlü. Arduino iyi bilen birinin belki de 5dk sını almaz ama beni ugrastiriyor işte.
Ayrıca farklı ide versiyonları ile denedim yine olmadi
antivir-US tarafından 21/Oca/19 21:44 tarihinde düzenlenmiştir -
Hocam bi ara arduino ide de bir bug vardı aynı bu senin hataları veriyordu. Tavsiyem beta veya hourly buildleri bir dene bakalım aynı hataları verecek mi?
https://www.arduino.cc/download_handler.php?f=/ide_beta/arduino-1.9.0-beta-windows.zip
https://www.arduino.cc/download.php?f=/arduino-nightly-windows.zip
Bu arada o engraverı ülkeye sokarken vergi ödedin mi nasıl oldu?
Edit: Benden önce yazmışsın denediğini sayfayı yenilememişim :). Bir ihtimal eğer elinde uno dışında farklı bir uart-usb çevirici birşey varsa onun üzerinden atmayı dene.
torpedo_XL tarafından 21/Oca/19 21:56 tarihinde düzenlenmiştir -
Selamlar,
Benzer bir cihazı topladım ben de aktif olarak kullanıyorum. Benbox arayüzü üzerinden kazıma,kesme, işleme gibi işlemler yaptırabiliyorum. 3W'lık bir lazer üreteç çoğu konuda iş görevilir özellikle deri, mukavva, keçe gibi malzemelerde etkisini görürsün. Fakat Plexi,Metal gibi malzemelerde sonuç hüsran :)
Kod kısmına gelirsek, Wi-fi bilgilerini kod içerisinde belirtilen ssid, wifi password gibi kısımları derlemeden önce girmelisin. Derledikten sonra oluşturduğu kodu arduino'ya yükleyeceksin. Bazı kütüphaneleri görmüyor gibi, özellikle SendFormat fonksiyonunu içeren kütüphane. Ayrıca IDE olarak da 1.5.x herhangi bir ide'yi kullanırsan iyi olur gibi, eski versiyonlar daha stabil çalışıyor gördüğüm kadarıyla. -
Senin kodu da göndersen iyi bilenler inceler hiç olmazsa..
Ben de böyel bir şey düşünüyorum inceden..
-
Arkadaşlar cevaplar için teşekkür ederim, eve geçince cevap yazacagim
-
Şunu dener misiniz? https://paste.ubuntu.com/p/PxR7Jv8CyM/
// Credits: Based on LaserWeb codebase, https://github.com/LaserWeb/LaserWeb3-ESP8266 #include <Arduino.h> #include <ESP8266WiFi.h> #include <WebSocketsServer.h> //https://github.com/Links2004/arduinoWebSockets/issues/61 #include <Hash.h> #include <DNSServer.h> #include <ESP8266WebServer.h> #include <ESP8266HTTPUpdateServer.h> #include <WiFiManager.h> //https://github.com/tzapu/WiFiManager // Transparent Serial Bridge code from Marcus https://github.com/Links2004/arduinoWebSockets/issues/61 ESP8266WebServer httpServer(80); ESP8266HTTPUpdateServer httpUpdater; const char* update_path = "/firmware"; const char* update_username = "admin"; const char* update_password = "admin"; void SendFormat (uint8_t num, char * format, ...); WebSocketsServer webSocket = WebSocketsServer(81); WiFiManager wifiManager; int RESET_PIN = 0; // = GPIO0 on nodeMCU bool socketConnected = false; #define SEND_SERIAL_TIME (50) class SerialTerminal { public: void setup(); void loop(); protected: uint8_t _buffer[1460]; uint8_t * _bufferWritePtr; unsigned long _lastRX; void resetBuffer() { // offset for adding Websocket header _bufferWritePtr = &_buffer[WEBSOCKETS_MAX_HEADER_SIZE]; // addChar('T'); } inline void addChar(char c) { *_bufferWritePtr = (uint8_t) c; // message type for Webinterface _bufferWritePtr++; } }; void SerialTerminal::setup(){ _lastRX = 0; resetBuffer(); Serial.begin(115200); } void SerialTerminal::loop(){ unsigned long t = millis(); bool forceSend = false; size_t len = (_bufferWritePtr - &_buffer[0]); int free = (sizeof(_buffer) - len); int available = Serial.available(); if(available > 0 && free > 0) { int readBytes = available; if(readBytes > free) { readBytes = free; } readBytes = Serial.readBytes(_bufferWritePtr, readBytes); _bufferWritePtr += readBytes; _lastRX = t; } // check for data in buffer len = (_bufferWritePtr - &_buffer[0]); if(len >= sizeof(_buffer)) { forceSend = true; } if(len > (WEBSOCKETS_MAX_HEADER_SIZE + 1)) { if(((t - _lastRX) > SEND_SERIAL_TIME) || forceSend) { webSocket.broadcastTXT(&_buffer[0], (len - WEBSOCKETS_MAX_HEADER_SIZE), true); resetBuffer(); } } } SerialTerminal term; void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght) { if (type == WStype_DISCONNECTED) { socketConnected = false; } else if (type == WStype_CONNECTED) { socketConnected = true; webSocket.sendTXT(num, "Connected\n"); } else if (type == WStype_TEXT) { if(lenght > 0) { String command = String((const char *)payload); command.toUpperCase(); if (command == "WIFIRESET\n") { webSocket.sendTXT(num, "ok\n"); webSocket.sendTXT(num, "Resetting WiFi settings!\n"); delay(500); wifiManager.resetSettings(); delay(100); ESP.restart(); } else if (command == "WIFISTATUS\n") { webSocket.sendTXT(num, "ok\n"); char buffer[100]; //declare array IPAddress local = WiFi.localIP(); IPAddress gatew = WiFi.gatewayIP(); SendFormat(num, "Connected to: %s\n", WiFi.SSID().c_str()); SendFormat(num, "Signal strength: %ddBm\n", WiFi.RSSI()); SendFormat(num, "Local IP: %d.%d.%d.%d\n", local[0], local[1], local[2], local[3]); SendFormat(num, "Gateway IP: %d.%d.%d.%d\n", gatew[0], gatew[1], gatew[2], gatew[3]); } else if (command == "CHIPSTATUS\n") { webSocket.sendTXT(num, "ok\n"); uint32_t realSize = ESP.getFlashChipRealSize(); uint32_t ideSize = ESP.getFlashChipSize(); FlashMode_t ideMode = ESP.getFlashChipMode(); SendFormat(num,"CPU Freq: %uMHz\n", ESP.getCpuFreqMHz()); SendFormat(num,"Flash speed: %uMHz\n", ESP.getFlashChipSpeed()/1000000); SendFormat(num,"Flash real size: %uKB\n", realSize/1024); SendFormat(num,"Flash ide size: %uKB\n", ideSize/1024); SendFormat(num,"Flash ide mode: %s\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN")); SendFormat(num,"Flash ID: %08X\n", ESP.getFlashChipId()); } else { Serial.write((payload), (lenght)); } } } } void SendFormat (uint8_t num, char * format, ...) { char buffer[100]; va_list args; va_start (args, format); vsnprintf (buffer, 100, format, args); va_end (args); webSocket.sendTXT(num, buffer); } void setup() { delay(5000); //BOOT WAIT pinMode(RESET_PIN, INPUT_PULLUP); wifiManager.autoConnect("ESP8266"); webSocket.begin(); webSocket.onEvent(webSocketEvent); httpUpdater.setup(&httpServer, update_path, update_username, update_password); httpServer.begin(); term.setup(); WiFi.setSleepMode(WIFI_NONE_SLEEP); // disable WiFi sleep for more performance } void loop() { term.loop(); webSocket.loop(); httpServer.handleClient(); }
-
cevaplarınız için teşekkür ederim, nasıl oldu bilmiyorum ama kocaman bir kutu olarak gümrüğe takılmadan geldi makina. Nasıl olsa yakalanmıyor yakında çinden otomobil almayı bile deneyeceğim :D Ayrıca Benbox çok rezalet bir program, heryeri sorun sıkıntı ve lazerin PWM sini ayarlamadığı için lazer son güçte ahşabı yakıp geçiyor. Normalde cihaz benbox ile kullanılıyor ama ben lasergrbl yükledim ve rahat ettim, lasergrbl çok çok daha başarılı. Şimdi bir de wifi sorunu da çözüldü, ohh tadından yenmez artık :)
hocam Allah senden razı olsun, tek seferde çat diye derledi ve yükledi makina hiçbir ayar girmeden. vallahi kaç gündür deli dana gibi PC etrafında dönüp duruyordum.
Hocam bir anlatır mısın nasıl oldu bu iş? Şöyle yüzeysel göz attım bazı satırları değiştirmiş yeniden düzenlemişsin. Neye göre nasıl yaptın hocam?
Ayrıca daha önce ESP8266 kullandın mı? bunu şunun için soruyorum; arduino da bazı ayarlar var. Elimdeki ESP nin özelliklerini hatırlamıyorum(zamanında ebaydan almıştım ve ebay alışveriş detaylarını 3 ay sonra sildiği için kartın özelliklerini unuttum(bellek vb.)). Biliyorsan bu konuda yardımcı olabilir misin, yükleme hangi seçeneklerde yapılmalı?
elimdeki ESP8266 nın(25Q41BT flaşlı) yakından çektiğim fotoğrafı şu;
-
3W lazer ile paslanmaz çeliğe kazıma yapabilir miyiz? En az kaç W olması lazım?