Board logo

標題: ESP8266 3D printer server [打印本頁]

作者: benz    時間: 2016-6-9 21:30     標題: ESP8266 3D printer server

https://github.com/luc-github/ESP3D
初頭諗住搵到好野, 以為佢可以upload完之後可以print出黎,
點知用左幾日時間整好之後, 先知無得print upload左d file(可能我唔識用),
無問題用左兩日時間加左print功能, 而家可以好似Wifi SD咁upload完print出黎,
有興趣嘅朋友可以試下

好處:
1. 夠平, 用十幾人仔可以做到print server功能
2. 無線Wifi
3. Upload完print出黎, 唔洗電腦

唔好處:
1. 因為ESP8266而家最多只可以用到4MB Flash(希望以後可以用到8M或16M),
   1MB比程式用, 所以有3MB用, 但實際只有2.8MB可以用(不過都夠用),
   有八九成file都唔會過2.8MB
2. 速度應該無Wifi SD咁快(無Wifi SD試), upload 2.51MB file 要1分21秒,
   但已經好過用serial upload去SD好好多(要13分鐘)

基本要求:
1. ESP8266-01 (只有512K, 已經唔support) 或 ESP8266-12 (4MB)
   (因為手上無ESP8266-12, 只有ESP8266-01同8M Flash,
   所以自己改用winbond 25Q64FVSIG, 但係只用到4MB)
2. USB to Serial TTL (upload firmware)
3. Arduino 1.6.8 (完本已安裝1.6.5, 但唔成功)
4. ESP8266 core (要用git clone download, 如果唔係有D file無左, compile唔到)
5. ESP3D

詳細點做可以去睇 https://github.com/luc-github/ESP3D/wiki/Install-Instructions

只係改左兩個files webinterface.cpp & settings.tpl (under data folder)
compile 同upload data 之前 copy & replace就ok

print_function.jpg
ESP8266_board.jpg

圖片附件: print_function.jpg (2016-6-9 21:24, 129.24 KB) / 下載次數 102
https://h0.hkepc.com/forum/attachment.php?aid=1896267&k=53ed0042bd63652238cd3dcd09c5ede4&t=1781451548&sid=nL2r9fjd0L



圖片附件: ESP8266_board.jpg (2016-6-9 21:24, 82.17 KB) / 下載次數 123
https://h0.hkepc.com/forum/attachment.php?aid=1896268&k=b6b0241cbad951557d6492a560fa9c37&t=1781451548&sid=nL2r9fjd0L


作者: benz    時間: 2016-6-9 21:33

upload 唔到兩個 files, 有無人可以教下我點upload, 因為只可以upload jpg gif png
作者: fred2088    時間: 2016-6-11 01:19

回覆 2# benz


    ESP8266-01 要改做4M ?
作者: ma_hty    時間: 2016-6-11 07:00

本帖最後由 ma_hty 於 2016-6-11 07:03 編輯

回覆 1# benz

> 2. 速度應該無Wifi SD咁快(無Wifi SD試), upload 2.51MB file 要1分21秒,
   但已經好過用serial upload去SD好好多(要13分鐘)

Wifi upload to SD card 哪會這麼慢?  就算是 Serial upload to SD card, 是慢一點了, 也不至於慢到 13分鐘 2.5MB.  簡陋到 用 Marlin+Pronterface upload 2.5MB to SD card via serial 也不過只是約 4分鐘.

要這麼慢, 想必是你的 SD card 讀寫程序犯了些低級錯誤了.
作者: palpatrick    時間: 2016-6-11 10:05

我覺得個project好正!
多謝師兄分享!
作者: benz    時間: 2016-6-11 10:29

回覆 3# fred2088

不是, 只要現成的ESP8266-12(4MB)就可以, 佢要求係最小1MB (舊的512KB都可以)
我沒有ESP8266-12(4MB), 只有ESP8266-01(512KB), 所以先自己改
作者: benz    時間: 2016-6-11 10:36

回覆 4# ma_hty

我講得唔清楚, 我係講upload 到 ESP8266 的速度是1分21秒(2.5MB file),
不是upload 到 wifi SD的速度, 因為我沒有wifi SD 測試

我都係用Marlin+Pronterface upload的, 可能config set錯
作者: benz    時間: 2016-6-11 10:38

回覆 5# palpatrick


   
作者: benz    時間: 2016-6-11 10:55

回覆 2# benz

試改名upload兩個files, 但都唔成功
(試將settings.tpl 改做 settings.jpg , webinterface.cpp 改做 webinterface.jpg)
作者: ma_hty    時間: 2016-6-11 10:57

本帖最後由 ma_hty 於 2016-6-11 11:11 編輯
回覆  ma_hty

我講得唔清楚, 我係講upload 到 ESP8266 的速度是1分21秒(2.5MB file),
不是upload 到 wif ...
benz 發表於 2016-6-11 10:36


我前面所說的 wifi upload to SD , 也不是指 WIFI SD.  我沒有記錯的話, WIFI SD 好像只能下載, 不能上載, 而且它的效能認真麻麻地, WIFI SD 大可不必考慮.

至於... 經 wifi upload 檔案到 SD 的合理速度大概多少呢...  找一隻 android 手機, 安一隻沒犯低級錯誤的 file explorer (ES檔案瀏覽器 是個好選擇), 然後經 wifi 由電腦上載一個 2.5MB檔案到手機.  所需時間的三份之一呢 就差不多是合理需時.  ( 是的, android 手機 APP 的效能是普遍地低下的, 合理效能的三份一 其實都比多佢了)
作者: benz    時間: 2016-6-11 11:16

回覆 10# ma_hty

我再講得清楚d, 係由電腦browser upload 到 ESP8266 print server然後save到ESP8266的Flash,
我諗一粒ESP8266的CPU power 和 Flash的write speed, 唔會快得過電腦和手機吧
作者: ma_hty    時間: 2016-6-11 11:30

本帖最後由 ma_hty 於 2016-6-11 15:31 編輯
回覆  ma_hty

我再講得清楚d, 係由電腦browser upload 到 ESP8266 print server然後save到ESP8266的Flash ...
benz 發表於 2016-6-11 11:16


, ESP8266 <= 這東東, 它的運算能力 不比坊間一般的 wifi router 差的.  如果有編寫得宜的程式, 你可以有信心地假定 它的效能可達一個一般的 wifi router .  是的 是的, ESP8266 的運算能力 + 記憶體容量  比  Arduino mega 2560 高好幾班, 沒有什麼好懷疑.

(... 雖然有點反常, 但 "平o野 有時也會有好o野喎"...)
作者: benz    時間: 2016-6-11 11:44

回覆 12# ma_hty

程式唔係我寫的(我都無咁叻), 只係加左print功能,
不過我都覺得已經好好, 無線加無腦打印
作者: fred2088    時間: 2016-6-11 13:44

回覆 13# benz


    可以Share 嗎 ?
作者: benz    時間: 2016-6-11 15:11

回覆 14# fred2088

可以, 但係我upload唔到
想問下係唔係hkepc唔比upload其它file (只可以jpg gif png) ?
作者: fred2088    時間: 2016-6-11 15:26

回覆 15# benz


    可上傳 Google Drive, Share 條 Link 出來 !
作者: benz    時間: 2016-6-11 15:46

本帖最後由 benz 於 2016-6-13 00:09 編輯

回覆 16# fred2088

https://drive.google.com/open?id=0B9NCNLWNpqpaSW1RZW50TmNzdWs
作者: benz    時間: 2016-6-11 16:14

用法:
要upload .g 尾的file到print server(file name唔可以長過大約24字元,
實際長度唔記得, 係SPIFF限際), 就會見到Print button

提提各位, 個print功能係直出(read file from flash)直入(write file to com port),
如果等唔到Marlin ok回覆係會loop 死的, loop死可以按reset
重有係印緊時, print server係會無返應, 直至印完為止

試印過幾次都無問题, enjoy!!!
作者: fred2088    時間: 2016-6-12 20:47

本帖最後由 fred2088 於 2016-6-12 21:04 編輯

回覆 18# benz

-------------------- ESP8266 Info from ESPlorer
    2nd boot version : 1.4(b1)
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
esp8266.png
------------------------------------ Upload Error

草稿碼使用了 325,185 bytes (65%) 的程式儲存空間。上限為 499,696 bytes。
全域變數使用了 38,808 bytes (47%) 的動態記憶體,剩餘 43,112 bytes 給區域變數。上限為 81,920 bytes 。
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
----------------------------------------------
changed to use ---->>> ESP8266 Sketch Data Upload
[SPIFFS] upload : C:\Users\User\AppData\Local\Temp\build02c639358e331ceafc988bcc44c2ee96.spiffs/esp8266.spiffs.bin
[SPIFFS] address: 0x7B000
[SPIFFS] reset  : ck
[SPIFFS] port   : COM18
[SPIFFS] speed  : 115200

error: failed reading byte

warning: espcomm_send_command: cant receive slip payload data

error: failed reading byte

圖片附件: esp8266.png (2016-6-12 20:49, 12.36 KB) / 下載次數 45
https://h0.hkepc.com/forum/attachment.php?aid=1897026&k=a2f09ca197d19a3f3583d59f5594f67d&t=1781451548&sid=nL2r9fjd0L


作者: benz    時間: 2016-6-12 21:29

本帖最後由 benz 於 2016-6-12 21:46 編輯

回覆 19# fred2088

1. GPIO0 正常係pull up, 要upload時要 pull down先可以upload到
2. 當見到arduino upload 個時, 要手動按reset button 一下
3. USB serial TTL TX 去 ESP8266 RX (要1K和2K電阻做分壓)
    USB serail TTL RX 去ESP8266 TX
4. 要3.3V 的(不是5V), https://github.com/luc-github/ESP3D 有電路圖可參巧
作者: benz    時間: 2016-6-12 21:30

本帖最後由 benz 於 2016-6-12 22:29 編輯

1. upload 錯左 ESP8266-0.6.2.zip file (舊的delete左)
   請重申download ESP8266-0.6.2new.zip (用左新名)
   https://drive.google.com/open?id=0B9NCNLWNpqpaSW1RZW50TmNzdWs

2. 用ESP8266 print server印細件野無問題, 今日印大件野(要個幾鐘的),
   印左三次都唔得, 試過改baud rate, 無sleep mode 都唔得,
   一次就黎印完就出錯, 兩次印到中間就出錯, 唔知點解
作者: ma_hty    時間: 2016-6-12 21:54

回覆 21# benz

> 2. 用ESP8266 print server印細件野無問題, 今日印大件野(要個幾鐘的),
   印左三次都唔得, 試過改baud rate, 無sleep mode 都唔得,
   一次就黎印完就出錯, 兩次印到中間就出錯, 唔知點解

Serial communication 是十分容易被其他信號干擾的溝通方式, 你... 會不會是用了一條長長的電線去做 ESP8266 和 Arduino 的 serial 連結?
作者: fred2088    時間: 2016-6-12 21:58

回覆 20# benz


    GPIO0 Short to GND when power on esp8266 with USB connector
作者: benz    時間: 2016-6-12 22:02

回覆 22# ma_hty

用左一條18cm長的電線(應該唔會太長吧)
作者: benz    時間: 2016-6-12 22:03

回覆 23# fred2088


作者: fred2088    時間: 2016-6-12 22:08

本帖最後由 fred2088 於 2016-6-13 11:06 編輯

回覆 25# benz

是不是 這 Default Settings ?

    //default values
#define DEFAULT_WIFI_MODE                                  AP_MODE // CLIENTN_MODE
const char DEFAULT_SSID[] PROGMEM =                  "BL-LINK1";
const char DEFAULT_PASSWORD[] PROGMEM =        "***************";
#define DEFAULT_IP_MODE                                          STATIC_IP_MODE
const byte DEFAULT_IP_VALUE[]   =              {192, 168, 0, 1};
const byte DEFAULT_MASK_VALUE[]  =            {255, 255, 255, 0};
#define DEFAULT_GATEWAY_VALUE                 DEFAULT_IP_VALUE
const long DEFAULT_BAUD_RATE =                            115200;           // 9600;

Connected 到了
Screenshot_2016-06-12-22-09-05_com.android.htmlviewer.png

圖片附件: Screenshot_2016-06-12-22-09-05_com.android.htmlviewer.png (2016-6-12 22:11, 127.11 KB) / 下載次數 60
https://h0.hkepc.com/forum/attachment.php?aid=1897044&k=5b0e839206854597aece9db45e03b3e9&t=1781451548&sid=nL2r9fjd0L


作者: benz    時間: 2016-6-12 22:20

本帖最後由 benz 於 2016-6-12 22:22 編輯

回覆 26# fred2088

這是我的default setting, 你可以改config.h的, 然後compile一次就得
作者: fred2088    時間: 2016-6-12 22:22

本帖最後由 fred2088 於 2016-6-12 22:32 編輯

回覆 27# benz


    Thanks
   可以試吓用在 TinyOLED 上的 ESP8266 ...

    但想問 Wifi Upload 是去 Free Memory : 27608 bytes (26M) ?

Screenshot_2016-06-12-22-30-01_com.android.chrome.png

圖片附件: Screenshot_2016-06-12-22-30-01_com.android.chrome.png (2016-6-12 22:32, 128.17 KB) / 下載次數 71
https://h0.hkepc.com/forum/attachment.php?aid=1897048&k=715a50a459e0a86b39ede90910814ac6&t=1781451548&sid=nL2r9fjd0L


作者: benz    時間: 2016-6-12 22:33

回覆 28# fred2088

係ESP8266的memory : 27K

去Extra settings 最下面就可以看到有幾位多可以upload
作者: ma_hty    時間: 2016-6-12 22:33

回覆  ma_hty

用左一條18cm長的電線(應該唔會太長吧)
benz 發表於 2016-6-12 22:02


嗯... 暫時換一條盡短的線試試看吧.  可能性雖不大, 但 simpler case first.
作者: fred2088    時間: 2016-6-12 22:34

本帖最後由 fred2088 於 2016-6-12 22:35 編輯

回覆 29# benz


    471K ?!   所以要用 4M 的 ESP8266-01 或 12 ?
作者: benz    時間: 2016-6-12 22:35

回覆 28# fred2088

你有471K 可以upload
因為你係用ESP8266 1M (512K program, 512K data)
作者: benz    時間: 2016-6-12 22:38

回覆 31# fred2088

ESP8266-1 好似得1M (自己改先有4M用)
ESP8266-12 有4M (1M program 3M data)
所以要用ESP8266-12 4M的
作者: benz    時間: 2016-6-12 22:39

回覆 30# ma_hty

ok thanks, 遲d 再試
作者: benz    時間: 2016-6-12 23:07

回覆 31# fred2088

請問打印有無問題? 請看pm
作者: ma_hty    時間: 2016-6-12 23:21

本帖最後由 ma_hty 於 2016-6-12 23:27 編輯

回覆 34# benz

其實話時話呀, 為啥你不用番 Marlin 原來寫 SD card 的方式? 即是...
當你經 webserver upload 檔案時, 你馬上 redirect資料去 serial, redirect 之前, 送出 "M28 filename.g"
.  檔案傳送完後, 後加 "M29", 去停止寫入.

如此, 雖然是慢了一點, 但是, 這樣你就不必擔心不夠空間用.  

不過呢... 長遠計, 你最好還是 加一個SD 模塊, 直接由 ESP8266 去讀寫.  然後, 要麼再用 M28/M29 寫 Marlin SD card + 寫完開始印;  要麼 ESP8266 讀 SD card 經 serial 直接印.

還不滿意的話, 來個 SPI in multi-master mode 去讓 ESP8266 和 Arduino 共用同一 SD card 模塊 (當然, 這樣軟體就要十分小心去管理了).  

嗯嗯嗯... (如此... 這般...)
作者: benz    時間: 2016-6-12 23:41

回覆 36# ma_hty

1. 其實如果ESP8266有幾MB比我upload, 都夠用
   (如果ESP8266可以用到8MB or 16MB, 就一定夠用)

2. 初頭試左之後先知無upload後print出黎呢個功能,
   就諗住用最簡單方法, 就係加個print功能, 都無諗咁多

3. 佢有個功能可以印SD file的, 不過無試過

4. 無睇佢個upload功能點寫, 唔知識唔識改

多謝你的建議
作者: ma_hty    時間: 2016-6-13 02:02

本帖最後由 ma_hty 於 2016-6-13 14:34 編輯

回覆 37# benz

> 4. 無睇佢個upload功能點寫, 唔知識唔識改
  1. void UploadToMarlinSDCard()
  2. {

  3.   HTTPUpload& upload = (web_interface->WebServer).upload();
  4.   if(upload.status == UPLOAD_FILE_START)
  5.   {
  6.     Serial.println( "M28 " + upload.filename );  // tell Marlin to begin writing to SD card

  7.   }else if(upload.status == UPLOAD_FILE_WRITE)
  8.   {
  9.     Serial.write( upload.buf, upload.currentSize );   // send whatever we received to Marlin

  10.   }else if(upload.status == UPLOAD_FILE_END)
  11.   {
  12.     Serial.println();
  13.     Serial.println( "M29" );  // tell Marlin SD writing finished

  14.     // tell Marlin to select the file we merely wrote
  15.     // and start printing the selected file
  16.     Serial.println( "M23 " + upload.filename );
  17.     delay(100);
  18.     Serial.println( "M24" );

  19.   } else {
  20.     Serial.println();
  21.     Serial.println( "M29" );  // tell Marlin SD writing finished

  22.     // upload failed, we do nothing for now

  23.   }

  24. }
複製代碼
你把上面的 function, 放到 webinterface.cpp 之內 (放在你改過的 SPIFFSFileupload function 前或後吧).  然後, 改一改你下面的這一句
    WebServer.on("/FILES", HTTP_ANY, handleFileList,SPIFFSFileupload);
變成
    WebServer.on( "/FILES", HTTP_ANY, handleFileList, UploadToMarlinSDCard );


^^", 程式寫起來 應該差不多就是上面的模樣.  Compile 呢, 是 compile 過了, 但是, 我缺了電阻和電容, ESP8266 跑不起來.  無得試, 你真的去試的話... 我諗你需要很多運氣 ^^".

( 上面原碼的用意是 upload 檔案 + 用 M28/M29 寫 Marlin SD card + 寫完開始印  )
作者: fred2088    時間: 2016-6-13 12:47

回覆 38# ma_hty


    大神師兄, 軟又得, 硬又得 ...
作者: ma_hty    時間: 2016-6-13 13:57

回覆 39# fred2088

> 大神師兄, 軟又得, 硬又得 ...

你這句受之有愧了.  原碼又沒測試過, 能不能用 尚是未知.  不能用的話, 上面的原碼 不過就是一堆 人不能讀的字符而已.
作者: benz    時間: 2016-6-13 21:14

回覆 38# ma_hty

可以試下, thanks (你都差唔多寫晒)
作者: lkc8210    時間: 2016-12-27 17:39

CHing~
我本來有一塊E01用緊25Q80ASSIG
可以做到你所post既野
我又手痕淘左粒25Q128FVSG直接換左上去
依家Com唔到,又更新唔到韌體,點算好?

PS: 我見你幅相粒25Q第3只腳係飛綫wo~飛左去邊?
作者: benz    時間: 2016-12-27 21:04

回覆 42# lkc8210
   
唔係飛綫, 係唔小心整走左第三腳pad, 所以要用綫連接
我係用25Q64FVSIG, 未試過25Q128FVSG, 唔知係唔係唔support
因為我手上只有ESP8266-01, 所以先會咁試, 其實直接用ESP8266-12(4M)會方便d
作者: lkc8210    時間: 2016-12-28 10:53

回覆 43# benz


多謝回覆
原來我又調轉左TxRx
依家更新左個韌體同埋Upload d file
但係個網頁既返應好慢
作者: fred2088    時間: 2017-4-17 21:22

請問可用ESP32 嗎 ?
作者: fred2088    時間: 2017-11-30 11:25

回覆 45# fred2088

大家有試這個嗎 ?! 可用 SD Card ...

    https://github.com/probonopd/WirelessPrinting/





歡迎光臨 電腦領域 HKEPC Hardware (https://h0.hkepc.com/forum/) Powered by Discuz! 7.2