Error volume init failed

Bug Report I just flashed my new Creality Ender 2 with Marlin 2.0.x to get rid of the GPL violating firmware. Unfortunately it can no longer read from SD cards. I think this is somewhat related to ...

@CReimer

Bug Report

I just flashed my new Creality Ender 2 with Marlin 2.0.x to get rid of the GPL violating firmware. Unfortunately it can no longer read from SD cards.

I think this is somewhat related to #7467 and #7468. But everything mentioned there doesnt’ help.
I tried all delay settings mentioned and also experimented with SPI speeds.

When I push «SD init» in the OSD or send M21 I can see a black bar on the screen with a scrolling vertical line from left to right.

I tried disabling MINIPANEL but this doesn’t solve anything either.

On the serial console I see «Error:volume.init failed» and sometimes «SD init fail».

Configuration.zip

Thanks

Christopher

@CReimer

Switched from my configs to the example configs in bugfix-2.0.x branch and the bugfix-1.1.x branch.
With bugfix-1.1.x I can access the SD card after several tries. Haven’t tried printing just yet but after the sd card is initialized it seems pretty stable.

With bugfix-2.0.x it’s impossible to initialize the SD card.

@morsyfadl

SPI speed maybe? Try 1/8 speed

@CReimer

Unfortunately no. 1/8 speed doesn’t help with bugfix-2.0.x and doesn’t fix the sporadically working SD card with bugfix-1.0.x. Did a whole print with bugfix-1.0.x today. It took 3 or 4 tries to detect the SD card, but afterwards the print went fine.

@Bob-the-Kuhn

Maybe the card doesn’t have an SD detect signal.

Comment out all instances of «#define SD_DETECT_PIN» in the pins_YOUR_BOARD.h file.

@CReimer

After following a few includes (pins_CREALITY_ENDER.h -> pins_SANGUINOLOLU_12.h -> pins_SANGUINOLOLU_11.h) I could only find one SD_DETECT_PIN which was already set to -1. Commenting this line didn’t change the overall behaviour.

Something I came up with yesterday is, that the SD card gets always detected, when I insert the card and click the initialize SD button in the main menu immediately afterwards.

I tried two different SD card which both work fine on a RAMPS 1.4 board and a RADDS board.

  1. SanDisk Ultra 16GB SDHC
  2. SanDisk Edge 8GB SDHC (Came with the Ender 2)

@CReimer

I tried #9109 and it didn’t help at first. After I figured out how SD cards are handled in Marlin I started adding some debug log messages. As it turns out there are two different chip select pins defined in Marlin. LCD_SDSS and SDSS

LCD_SDSS is set to Pin 28 and SDSS is set to Pin 31. To cut this short pin 28 is wrong and pin 31 is right. But LCD_SDSS is prefered.

It still doesn’t work right after powering on, but it works while switching sd cards and after removing the SD card once after powerup.

Changing this pin in bugfix-2.0.x didn’t help. It still only works with bugfix-1.1.x. But at least I have a more or less fully working printer again.

@thinkyhead

LCD_SDSS is set to Pin 28 and SDSS is set to Pin 31. To cut this short pin 28 is wrong and pin 31 is right. But LCD_SDSS is preferred.

Could this really be wrong for all Sanguinololu 1.1 generic character displays? Or, does this only apply to the Ender setup?

@thinkyhead

Is it possible that our BOARD_CREALITY_ENDER should just be dropped? The pins_MELZI_CREALITY.h file has the correct pin 31 assignment for LCD_SDSS. And maybe the other pins are also more correct.

@CReimer

The BOARD_MELZI_CREALITY does work with bugfix-1.1.x and I don’t have to edit any pins files. Unfortunately it’s still broken with bugfix-2.0.x.

Could this really be wrong for all Sanguinololu 1.1 generic character displays? Or, does this only apply to the Ender setup?

I’m not sure. There could be multiple revisions with different layouts. But I can’t find any revision markings on my board. I could disconnect everything and upload some hi-res pictures of it, if you want those.

@thinkyhead

The BOARD_MELZI_CREALITY does work with bugfix-1.1.x and I don’t have to edit any pins files. Unfortunately it’s still broken with bugfix-2.0.x.

The pins should match. If not, that will be corrected shortly.

If the pins already match then the issue is not the pins file, but something specific to the 2.0 AVR HAL.

@thinkyhead

@CReimer — There have been some minor tweaks and patches to bugfix-2.0.x today. So give that branch a test when you have time. If you find it still doesn’t work, let’s see if we can hunt down the cause.

When it fails, does it just reboot the board over and over, or does it do something worse?

@thinkyhead

Duplicate of #8746

Let’s move discussion to that issue.

@github-actions

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

Технический форум по робототехнике.

Новичкам. Задай вопрос — получи ответ

Re: Новичкам. Задай вопрос — получи ответ

А я все еще в надежде на ответ. У меня при попытке чтения карты памяти ругается «Error: volume.init failed»

Никто не сталкивался что с этим делать?


Re: Новичкам. Задай вопрос — получи ответ

Revenger » 31 мар 2015, 03:46

Может с прошивкой что-то? Мне, после того как я перепрошил и испортил всё(а родной небыло) китайцы (продавцы) прислали, да не то. Пока не вышел на конкретного производителя и они мне прислали нормальную прошивку под мой аппарат и плату.


Re: Новичкам. Задай вопрос — получи ответ

Scald » 31 мар 2015, 13:39

Pit12 писал(а):а его можно заменить хотя бы на аналог FR4105 TO-252 или типа того?

Ищите аналог, меняйте. Думаю в магазине смогут помочь без проблем. Корпус только там вродь DPAK, а не ТО252.


Re: Новичкам. Задай вопрос — получи ответ

Сираж » 31 мар 2015, 16:08

FR4105 n-канальный полевой транзистор 55в 27А, на алике 20шт-350р :)


Re: Новичкам. Задай вопрос — получи ответ

Pit12 » 31 мар 2015, 16:18

Сираж писал(а):FR4105 n-канальный полевой транзистор 55в 27А, на алике 20шт-350р :)

Так на моем написано 9А, а не 27. Это не имеет значения? Мне почему то кажется что если бы такой стоял, то у меня плата сначала сгорела, а не транзистор

Последний раз редактировалось Pit12 31 мар 2015, 16:21, всего редактировалось 1 раз.


Re: Новичкам. Задай вопрос — получи ответ

icehardy » 31 мар 2015, 16:25

больше можно, меньше нет
так что подходит такой

Добавлено спустя 2 минуты 9 секунд:
Хотя на том выходе смотря что будет подключено, вентилятор обдува экструдера?
то можно и проще транзистор ставить

Добавлено спустя 2 минуты 39 секунд:
ток тут идет только через транзистор, и едва ли он сможет попасть на управляющий вывод, чтоб потом спалить еще что то
в любом случае первым будет гореть транзистор или проводники на плате


Re: Новичкам. Задай вопрос — получи ответ

aalex » 31 мар 2015, 17:05

А расскажите за нейлон, мужики!
Пробовал taulman 618, детали получаются очень крутыми на вид, только вот не долго :crazy: Как ни подклеивай её к столу, все равно отрывается, так как её начинает кособочить с краев. Какой подогрев стола ставить, если печатать на стекле (без бумажек и скотча)?

Поиском искал, но помогло мало. Узнал только про токсичность и необходимость грамотной вентиляции.


Re: Новичкам. Задай вопрос — получи ответ

Pit12 » 31 мар 2015, 20:32

icehardy писал(а):больше можно, меньше нет
так что подходит такой

Добавлено спустя 2 минуты 9 секунд:
Хотя на том выходе смотря что будет подключено, вентилятор обдува экструдера?
то можно и проще транзистор ставить

Добавлено спустя 2 минуты 39 секунд:
ток тут идет только через транзистор, и едва ли он сможет попасть на управляющий вывод, чтоб потом спалить еще что то
в любом случае первым будет гореть транзистор или проводники на плате

Благодарю за информацию


Re: Новичкам. Задай вопрос — получи ответ

Antsurkov » 31 мар 2015, 21:49

у кого нибудь бывало такое, что для получения адекватного результата печати приходится ставить flow multiplier аж в 0.77? Иначе сильно переливает. Пластик бестфиламент абс, экструдер откалиброван 100% верно и не один раз, на длинном участке(прогонял 500мм филамента, замерял длину до десятой доли миллиметра). На некоторых катушках ставил 0.92-0.95 получалось нормально(если конкретно, салатовый абс. он кстати больше всех понравился)


Re: Новичкам. Задай вопрос — получи ответ

icehardy » 31 мар 2015, 22:35

значит неправильно указан диаметр прутка или диаметр сопла


Re: Новичкам. Задай вопрос — получи ответ

aalex » 31 мар 2015, 22:58

icehardy писал(а):значит неправильно указан диаметр прутка или диаметр сопла

Еще можно добавить к этому перегрев, но он влияет слабее, чем неверные параметры экструдера.


Re: Новичкам. Задай вопрос — получи ответ

setar » 01 апр 2015, 11:11

deviator2x писал(а):А я все еще в надежде на ответ. У меня при попытке чтения карты памяти ругается «Error: volume.init failed»

Никто не сталкивался что с этим делать?

кто то сталкивался очевидно:
#define SDSLOW // Use slower SD transfer mode (not normally needed — uncomment if you’re getting volume init error)


Re: Новичкам. Задай вопрос — получи ответ

Reddik » 01 апр 2015, 15:39

У меня например обратная проблема, вдруг без изменения настроек на середине детали недоливает, при тестах через

http://base3d.ru/CaliGator/

, нормальная заливка только при потоке 1.5, хотя раньше все ок было при потоке =1 перебрал экструдер, прокалил голову, все равно все также, на выходе из сопла нить не равномерная а как сардельки то толще то тоньше. Пробовал с разной температурой. Пробовал с пластиком ABS и PLA. Грешу на не верную температуру термистра, кто сталкивался? Может со временем и от прокаливаний диаметр сопла изменялся?


Re: Новичкам. Задай вопрос — получи ответ

aalex » 01 апр 2015, 18:33

Reddik писал(а):У меня например обратная проблема, вдруг без изменения настроек на середине детали недоливает, при тестах через

http://base3d.ru/CaliGator/

, нормальная заливка только при потоке 1.5, хотя раньше все ок было при потоке =1 перебрал экструдер, прокалил голову, все равно все также, на выходе из сопла нить не равномерная а как сардельки то толще то тоньше. Пробовал с разной температурой. Пробовал с пластиком ABS и PLA. Грешу на не верную температуру термистра, кто сталкивался? Может со временем и от прокаливаний диаметр сопла изменялся?

Если неравномерно на выходе, значит неравномерно на входе. Не могут у подающего двигателя плавать обороты?


Re: Новичкам. Задай вопрос — получи ответ

Revenger » 01 апр 2015, 19:27

Antsurkov писал(а):у кого нибудь бывало такое, что для получения адекватного результата печати приходится ставить flow multiplier аж в 0.77? Иначе сильно переливает. Пластик бестфиламент абс

А я вот вчера получил его (серый/желтый) и.. у меня наоборот. При тестах (только серый пока) вроде нормально 1, а в реальности поставил 1,1 пока и диаметр… диаметр серого например от 1,69 до 1,74. Сделал 1,71 в настройках тогда более менее почти нет пропусков.
На увеличение «флоу» с анели управления — принтер не реагирует. Или я просто не вижу увеличения потока. Соплей нет, температура 215 отлично подходит.


Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

MK3 stuck in startup loop after upgrade to 3.9.0

patrick.g16

(@patrick-g16)

Active Member

MK3 stuck in startup loop after upgrade to 3.9.0

I upgraded my firmware to 3.9.0 today, and now my printer is stuck in startup mode. Stats:

Prusa MK3

Windows 10

PrusaSlicer 2.2.0

Update file used: prusa3d_fw_MK3_3_9_0_3421.hex

I’ve searched the forum, but don’t see anyone else with this problem with the MK3. Printer was working flawlessly yesterday, now I can’t get it to work. Any help?

Log in to be able to post

Posted : 28/05/2020 11:26 pm

patrick.g16

(@patrick-g16)

Active Member

Topic starter
answered:

RE: MK3 stuck in startup loop after upgrade to 3.9.0

I’ve reverted back to 3.8.1 for now, and my printer is working again. But would still like to find out why I’m having an issue after flashing to 3.9.0.

Log in to be able to post

Posted : 29/05/2020 1:45 am

patrick.g16

(@patrick-g16)

Active Member

Topic starter
answered:

RE: MK3 stuck in startup loop after upgrade to 3.9.0

So my printer is actually not working as it’s saying to flash to 3.9.0. So I need to figure out what my issue is. This is from Pronterface:

start
echo: 3.9.0-3421
echo: Last Updated: May 18 2020 17:11:59 | Author: (none, default config)
Compiled: May 18 2020
echo: Free Memory: 1646 PlannerBufferBytes: 1792
echo:Hardcoded Default Settings Loaded
adc_init
CrashDetect ENABLED!
PAT9125_RES_X=0
PAT9125_RES_Y=240
PAT9125_init:1
FSensor DISABLED
Sending 0xFF
Error:volume.init failed
[ERROR] Error:volume.init failed

Sending 0xFF
Error:volume.init failed
[ERROR] Error:volume.init failed

Log in to be able to post

Posted : 29/05/2020 3:30 am

Flo4Print

(@flo4print)

Noble Member

RE: MK3 stuck in startup loop after upgrade to 3.9.0

Hello you mean you cannot just click to validate the information that new firmware is available ?

MK3S & Fusion 360

Log in to be able to post

Posted : 29/05/2020 8:37 am

ale12345

(@ale12345)

Active Member

RE: MK3 stuck in startup loop after upgrade to 3.9.0

Hi
I also have a problem installing firmware 3.90 on my mk3s + mmu2s, the firmware is installed but with an error (flash failed) and only in English, then it is not possible to change the language if I select Italian, it returns to the language selection menu in a loop.
the firmware I downloaded is this: prusa3d_fw_3_9_0_MK3S_1_0_6_MMU2S, and this is what I’m trying to install: prusa3d_fw_MK3S_3_9_0_3421.
For the moment I have returned to firmware 3.81 which works without good.

Log in to be able to post

Posted : 29/05/2020 9:18 am

patrick.g16

(@patrick-g16)

Active Member

Topic starter
answered:

RE: MK3 stuck in startup loop after upgrade to 3.9.0

So I was able to go into Printer Settings (Advanced) and modified the Custom G-Code to remove the check for updated firmware, and now my printer is working again on v3.8.1. But would still like to know why I’m running into the issue when downloading and flashing to 3.9.0 as I would like to update eventually.

Log in to be able to post

Posted : 29/05/2020 5:51 pm

bobstro

(@bobstro)

Illustrious Member

RE: MK3 stuck in startup loop after upgrade to 3.9.0

You can disable the checks for firmware, printer and nozzle or set them to warning only (continue after pause) in the printer setup menu.

My notes and disclaimers on 3D printing

and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. — Spock in Star Trek: The Wrath of Khan

Log in to be able to post

Posted : 29/05/2020 6:14 pm

patrick.g16

(@patrick-g16)

Active Member

Topic starter
answered:

RE: MK3 stuck in startup loop after upgrade to 3.9.0

@bobstro

I did that and reverted back to 3.8.1 and was able to print again. Still want to find out why my printer goes into an infinite startup loop after upgrading to 3.9.0.

Log in to be able to post

Posted : 29/05/2020 6:19 pm

Flo4Print

(@flo4print)

Noble Member

RE: MK3 stuck in startup loop after upgrade to 3.9.0

@alessandro-m8

If I remember well I did had the same problem when I started in 3.8.1, impossible to switch to French, it was a loop. I just did flash again the same firmware to solve it.

MK3S & Fusion 360

Log in to be able to post

Posted : 29/05/2020 9:01 pm

towlerg

RE: MK3 stuck in startup loop after upgrade to 3.9.0

Is it necessary to reinitialize EEPROM after upgrade?

Log in to be able to post

Posted : 29/05/2020 9:14 pm

bobstro

(@bobstro)

Illustrious Member

RE: MK3 stuck in startup loop after upgrade to 3.9.0

Posted by: @towlerg

Is it necessary to reinitialize EEPROM after upgrade?

Not always but it can be a good idea if you’re running into inexplicable problems.

My notes and disclaimers on 3D printing

and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. — Spock in Star Trek: The Wrath of Khan

Log in to be able to post

Posted : 29/05/2020 11:04 pm

Простой и интересный проект, в результате которого вы сможете делать снимки на модуль видеокамеры с использованием Arduino и передавать данные через Ethernet Shield. Снимки появятся на указанном вами веб-сервере.

Очень простой и элегантный проект, для реализации которого вам не не понадобятся никакие дополнительные приложения.

Приступим!

Необходимые компоненты

Нам понадобятся следующие компоненты:

Вот и все… что понадобится для нашего проекта.

Подключение камеры к Arduino

Подключается камера очень просто.

Подключение камеры в Arduino и вывод изображения в окне браузераПодключение камеры в Arduino и вывод изображения в окне браузера

Подготавливаем софт: библиотеки

Для проекта нам понадобятся следующие библиотеки Arduino:

  • Adafruit_VC0706.h (для TTL камеры)
  • SdFat.h (для SD карты)
  • SdFatUtil.h (для SD карты)
  • Ethernet.h (для Ethernet шилда)
  • SoftwareSerial.h (для TTL камеры)

Все эти библиотеки вы можете скачать на оффициальном сайте Arduino.

После того как вы скачали и установили перечисленные выше библиотеки, можно запускать проект.

Скетч для Arduino

#include <Adafruit_VC0706.h>
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <Ethernet.h>
#include <SoftwareSerial.h>         

// Arduino Ethernet shield: pin 4
#define chipSelect 4
// Using SoftwareSerial (Arduino 1.0+) or NewSoftSerial (Arduino 0023 & prior):
#if ARDUINO >= 100
// On Uno: camera TX connected to pin 2, camera RX to pin 3:
SoftwareSerial cameraconnection = SoftwareSerial(2, 3);
// On Mega: camera TX connected to pin 69 (A15), camera RX to pin 3:
//SoftwareSerial cameraconnection = SoftwareSerial(69, 3);
#else
NewSoftSerial cameraconnection = NewSoftSerial(2, 3);
#endif

Adafruit_VC0706 cam = Adafruit_VC0706(&cameraconnection);

/************ ETHERNET STUFF ************/
byte mac[] = {0x90,0xa2,0xda,0x0e,0xf7,0xfc};
byte ip[] = {192, 168, 0, 30};
char rootFileName[] = "index.htm"; 
EthernetServer server(80);

/************ SDCARD STUFF ************/
SdFat SD;
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;

// store error strings in flash to save RAM
#define error(s) error_P(PSTR(s))
void error_P(const char* str) {
 PgmPrint("error: ");
 SerialPrintln_P(str);
 if (card.errorCode()) {
   PgmPrint("SD error: ");
   Serial.print(card.errorCode(), HEX);
   Serial.print(',');
   Serial.println(card.errorData(), HEX);
 }
 while(1);
}

/**********************SETUP()*********************/

void setup() {
 #if !defined(SOFTWARE_SPI)
 #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
   if(chipSelect != 53) pinMode(53, OUTPUT); // SS on Mega
 #else
   if(chipSelect != 10) pinMode(10, OUTPUT); // SS on Uno, etc.
 #endif
 #endif

 PgmPrint("Free RAM: ");
 Serial.println(FreeRam());  
 pinMode(10, OUTPUT);                       
 digitalWrite(10, HIGH);                    

 if (!card.init(SPI_HALF_SPEED, 4)) error("card.init failed!");
 if (!volume.init(&card)) error("vol.init failed!");

  PgmPrint("Volume is FAT");
  Serial.println(volume.fatType(),DEC);
  Serial.println();
 
  if (!root.openRoot(&volume)) error("openRoot failed");

  PgmPrintln("Files found in root:");
  root.ls(LS_DATE | LS_SIZE);
  Serial.println();
   
  PgmPrintln("Files found in all dirs:");
  root.ls(LS_R);
 
  Serial.println();
  PgmPrintln("Done");
  Serial.begin(9600);
  Serial.println("VC0706 Camera snapshot test");
  if (!SD.begin(chipSelect)) {
     Serial.println("Card failed, or not present");
     return;
   }  
   Ethernet.begin(mac, ip);
 server.begin();
}

#define BUFSIZ 100

/**********************LOOP()*********************/

void loop() {
  char clientline[BUFSIZ];
 char *filename;
 int index = 0;
 int image = 0;
 
 EthernetClient client = server.available();
 if (client) {
    boolean current_line_is_blank = true;
    index = 0;
  while (client.connected()) {
  if (client.available()) {
           char c = client.read();
   if (c != 'n' && c != 'r') {
           clientline[index] = c;
           index++;
           if (index >= BUFSIZ) 
             index = BUFSIZ -1;  
            continue;
   }
  clientline[index] = 0;
  filename = 0;
  Serial.println(clientline);
  if (strstr(clientline, "GET / ") != 0) { 
  filename = rootFileName;
         }
         if (strstr(clientline, "GET /") != 0) {        
            if (!filename) filename = clientline + 5; 
           (strstr(clientline, " HTTP"))[0] = 0; 
           Serial.println(filename);
           if (strstr(filename, "tttt") != 0)
              takingPicture();
          if (strstr(filename, "rrrr") != 0)
              removePicture();
                   if (! file.open(filename, O_READ)) {
    client.println("HTTP/1.1 404 Not Found");
              client.println("Content-Type: text/html");
              client.println();
              client.println("<h2>File Not Found!</h2>");
              break;
           }
         
            Serial.println("Open!");   
        client.println("HTTP/1.1 200 OK");
          if(strstr(filename, ".css") != 0)
               client.println("Content-Type: text/css");
         else  if (strstr(filename, ".htm") != 0)
               client.println("Content-Type: text/html");
          else if (strstr(filename, ".jpg") != 0)
               client.println("Content-Type: image/jpeg");                      
         client.println();
      
         int16_t c;
            while ((c = file.read()) >= 0) {
                Serial.print((char)c);
                client.print((char)c);
            }
          file.close(); 
         }else {
           // everything else is a 404
           client.println("HTTP/1.1 404 Not Found");
           client.println("Content-Type: text/html");
           client.println();
           client.println("<h2>File Not Found!</h2>");
           }
         break;
         }
       }
       delay(1000);
       client.stop();
    }
}

/**********************FUNCTION1()*********************/

void takingPicture(){
          if (cam.begin()) {
            Serial.println("Camera Found:");
          } else {
            Serial.println("No camera found?");
            return;
          }
          char *reply = cam.getVersion();
          if (reply == 0) {
            Serial.print("Failed to get version");
          } else {
            Serial.println("-----------------");
            Serial.print(reply);
   
            Serial.println("-----------------");
          }
          //cam.setImageSize(VC0706_640x480);        // biggest
          cam.setImageSize(VC0706_320x240);        // medium
          //cam.setImageSize(VC0706_160x120);          // small

          uint8_t imgsize = cam.getImageSize();
          Serial.print("Image size: ");
          if (imgsize == VC0706_640x480) Serial.println("640x480");
          if (imgsize == VC0706_320x240) Serial.println("320x240");
          if (imgsize == VC0706_160x120) Serial.println("160x120");

          Serial.println("Snap in 3 secs...");
          delay(3000);
            cam.takePicture();
            Serial.println("taking picture");
          
            file.open("IMAGE.jpg", O_RDWR | O_CREAT);
           
            uint16_t jpglen = cam.frameLength();  
            pinMode(8, OUTPUT);
            
            byte wCount = 0; 
            while (jpglen > 0) {
               uint8_t *buffer;
               uint8_t bytesToRead = min(32, jpglen); 
               buffer = cam.readPicture(bytesToRead);
              file.write(buffer, bytesToRead);
               if(++wCount >= 64) { 
                  Serial.print('.');
                  wCount = 0;
               }
              jpglen -= bytesToRead;
            }
            file.close();
            Serial.println("end of taking picture");
}
 /**********************FUNCTION2()*********************/
void removePicture(){
  file.open("IMAGE.jpg", O_READ | O_WRITE);
  file.remove();
}

Некоторые необходимые комментарии к коду приведены ниже.

1. Надо изменить mac[] и ip[] в соответсвии с информацией о вашем Arduino.

2. Для того, чтобы отобразить jpg файл в браузере, его надо преобразовать в jpg формат, для этого надо прописать следующие строки

client.println("HTTP/1.1 200OK");

client.println("Content-Type: image/jpeg");

client.println();

client.print((char)c);

Запуск и проверка работоспособности

1. Для того, чтобы сделать снимок, пропишите в строке браузера:

http:/xxx.xxx.xxx.xxx:5555/ttt

2. Для того, чтобы отобразить снимок, укажите в строке браузера:

http:/xxx.xxx.xxx.xxx:5555/image.jpg

3. Для того, чтобы удалить снимок, напишите в строке браузера:

http:/xxx.xxx.xxx.xxx:5555/rrr

На рисунке ниже показан пример теста камеры.

Подключение камеры в Arduino и вывод изображения в окне браузера

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Offline

Зарегистрирован: 05.02.2012

Вообщем, даже не знаю с чего начать.

Немного о себе.

Arduino mega 2560 обладаю около недели. До этого практики програмирования и схемотехники не имел. Работаю инженером-строителем.

Предистория.

Автомобильная практика, и практика по Led подсветке началась, с приобретения Таврии 1100. Была сделана и установлена самостоятельно подсветка подрулевого пространства из dip led на макетных платах. Половина  Led не горела, как говорится первый блин комом, но и той половины которая работала, было вполне достаточно для поставленых перед ней целей. Таврия была успешно продана с подсветкой.

Второй опыт был уже на Mitsubishi Colt IV 1994 г.в., который был приобретен после Таврии. На данное авто былы изготовленна и установленна самостоятельно RGB подсветка (на лентах) подножного пространства, бардачка, багажника, и подножного уличного пространства при открывании двери. Преключение цветов осуществлялось с помощью регулятора на 6 положений (используются в старых уселителях). Подсветка имела 2 режима:

Режим 1: Срабатывание подсветки при только открывании дверей.

Режим 2: Постоянное горение. 

Авто с подсветкой, было передано Брату.

И вот пока я коплю денежку на очередное авто (Nissan Note), я решил подготовится, и перейти на новый уровень подсветки.

Планируется:

1. Подсветка внутренего пространства автомобиля, RGB с всевозможной регулеровкой цвета и яркости свечения

2. Наружное освещение необходимое, для конфортного пользования автомобилем в ночное время суток: Подсветка, пространства вокруг автомобиля, подсветка наружных ручек

3. Переделка и подсветка панели приборов на led индикацию со  сбором нужной информации по CAN шине.

Почему то я решил начать с самого сложного :)

Технический аспект:

1. Управление всем необходимым при помощи Atmega 328 с минимальной обвязкой Arduino ( не целесообразно использовать преобретёную Arduino mega 2560 для этой задачи.

2. Изготовление  печатной платы (подложки приборной панели) с Atmega 328 с минимальной обвязкой + CANbus декодера (будет принимать данные по CAN шине и пересылать их на Arduino) и led индикаторами основных показателей (тахометр, спидометр, топливо, температура двигателя). ( Всё SMD)

3. Изготовление накладки на подложку, из прозрачного ПВХ и поклейка на неё плёнок для четкой индикации + тонировка с верху ( что то похожее на Оптитрон)

Начал я с того что хотел получать сначала от датчиков информацию, но по документации выяснилось, что у Nissan Note нет датчика скорости, скорость считывается с датчиков ABS и передаётся от блока ABS по CAN шине бортовому компьютеру.

А если нельзя реализовать всё сразу, то незачем даже начинать :)

Так и возникло желание и необходимость получать нужную информацию по CAN шине, что очень и очень хорошо, меньше проблем с установкой, меньше проводов, зачем чтото считывать отдельно, если датчики автомобиля сделали это уже до тебя, нужно просто спросить их об этом :)

Вообщем начал я рыть, искать статьи, аналоги и тому подобное. К сожалению на Пост Советском пространстве Интернета, информации не много, и примеров почти нет.

А вот Буржуи давно уже сделали устройство и устройства которые обмениваются по CAN шине с автомобилем информацией. Одно, и самое удачное для меня www.youtube.com/watch

www.skpang.co.uk/catalog/arduino-canbus-shield-with-usd-card-holder-p-706.html

Вот страничка с опписанием, demo программой и билииотеками.

Вы спросите почему не купить эту плату и использовать.

Есть ряд причин по которым я не хочу это делать:

1.Высокая цена

2.Ненужная функциональнасть, почти вся

3.Нужно всё поместить в приборную панель

Вообщем нужно переделать этот проэкт, под выполнение своих функций.

Скачал я все файлы, и начал по ним рыться, искать, что же такое шлёт Arduino, что бы в ответ получать Скорость, число оборотов, температуру, и угол открытия дросельной заслонки…. 

Но так и не нашел.

Я очень надеюсь, что добрые форумчане с этого форума помогут мне с моим проэктом :)

Немного позже выкину наброски, как это всё должно выглядеть.

Всем откликнувшимя заранее благодарность.

Извините за растянутость :)

Понравилась статья? Поделить с друзьями:
  • Error volmgr 45
  • Error void value not ignored as it ought to be
  • Error void type not allowed here
  • Error void is not a pointer to object type
  • Error vocaloid текст