Ви не увійшли.
Всім мирного неба!
Починаю вивчати ардуіно.
Стикнувся з проблемою.
Не можу записати данні в файл на sd за допомогою w5100
Я пыдключаю pin:
w5100 Mega
MOSI------10 ----51
MISO------11-----50
SCK-------12------52
SS---------13-----53
#include <microDS18B20.h>
#define DS_PIN 7 //пін для термометрів
// Унікальні адреси датчиків
uint8_t s1_addr[] = {0x28, 0x3C, 0xC0, 0x57, 0x0, 0x0, 0x0, 0xF2}; // Основний датчик температури, з одним вузлом
uint8_t s2_addr[] = {0x28, 0x61, 0x64, 0x35, 0xFA, 0x7E, 0x14, 0x5C}; //Давач в шафу для контролю охолодження
uint8_t s3_addr[] = {0x28, 0xBC, 0x73, 0x57, 0x0, 0x0, 0x0, 0x19}; //Запасний датчик температури реактора
MicroDS18B20<DS_PIN, s1_addr> temperReactor;
MicroDS18B20<DS_PIN, s2_addr> sensor2;
MicroDS18B20<DS_PIN, s3_addr> sensor3;
#include <SPI.h>
#include <SD.h>
File myfile;
String sfilename;
char filename[20];
String record = "";
void setup() {
Serial.begin(57600);
Serial.println("виконання setup");
delay(1000); // затримака
pinMode(53, OUTPUT);
Serial.print("Initializing SD card...");
if (!SD.begin()) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
void loop() {
static uint32_t tmr;
if (millis() - tmr >= 5000) {
tmr = millis();
// temperature
temperReactor.requestTemp();
sensor2.requestTemp();
sensor3.requestTemp();
Serial.print("t1: ");
if (temperReactor.readTemp()) Serial.println(temperReactor.getTemp());
else Serial.println("error");
Serial.print("t2: ");
if (sensor2.readTemp()) Serial.println(sensor2.getTemp());
else Serial.println("error");
Serial.print("t3: ");
if (sensor3.readTemp()) Serial.println(sensor3.getTemp());
else Serial.println("error");
//--------------
// sd card
if (!SD.begin()) {
Serial.println("initialization failed!");
return;
}
myfile = SD.open("data.txt", FILE_WRITE);
record = "Temperature";
record += " ";
record += String(temperReactor.getTemp());
myfile.println(record);
myfile.close();
//--------------
}
}
я постійно отримую помилку підключення до карти.
Прошу допомоги, та пояснити де я роблю не вірно?
Остання редакція HelloArduino (2025-04-13 09:36:13)
Неактивний
Не можу записати данні в файл на sd за допомогою w5100
Я пыдключаю pin:
w5100 Mega
MOSI------10 ----51
MISO------11-----50
SCK-------12------52
SS---------13-----53
А chip select для SD-карти (SD_CSn)?
Неактивний
А chip select для SD-карти (SD_CSn)?
підключено на 4 pin mega -> 4 pin w5100
if (!SD.begin()) {
намагався if (!SD.begin(53))
виходить те саме
Остання редакція HelloArduino (2025-04-13 20:41:16)
Неактивний
підключено на 4 pin mega -> 4 pin w5100
намагався if (!SD.begin(53))
виходить те саме
Чому 53, якщо до нього вже підключений chip select для W5100? Вказуйте той пін, до якого підключений SD_CSn.
Неактивний
пробував і 4, не працює.
я щось пропустив, але не можу зрозуміти де
Неактивний
може з самим шілдом щось не так? перевірте, чи доходять сигнали до sd карти. і живлення теж.
пробував і 4, не працює.
Пробували для того SD.begin() що в loop(), чи тільки для того що в setup()? Взагалі-то не дуже хороша ідея реініціалізувати SD на кожній ітерації головного циклу.
Для початку спробуйте мінімальний скетч, який тільки ініціалізує SD і виводить результат, більш нічого не робить.
Спробуйте скетч listfiles із SD examples.
Неактивний
Пробували для того SD.begin() що в loop(),
І там і там!
Взагалі-то не дуже хороша ідея реініціалізувати SD на кожній ітерації головного циклу.
Згоден, в loop зробив для тесту.
Для початку спробуйте мінімальний скетч, який тільки ініціалізує SD і виводить результат, більш нічого не робить.
Може в кого є скетч та схема саме для mega та w5100
Бо в мене є сумнів що я вірно все зробив.
Неактивний
В папочці examples дивились? там не повинно бути нічого w5100 специфічного.
Купіть логічний аналізатор, 5 баксів на Алі. Відповість зразу на всі питання.
Може в кого є скетч та схема саме для mega та w5100
Шілда W5100 у мене нема, але знайшовся модуль TFT з розʼємом для SD-карти. Підключив до Arduino Mega 2560:
SD Mega
SCK <-> 52
MISO <-> 50
MOSI <-> 51
SD_CS <-> 4
VCC <-> 5V
GND <-> GND
Вставив SD-карту з FAT32.
В Arduino IDE завантажив приклад: File -> Examples -> SD -> listfiles. Вибрав "Arduino Mega or Mega 2560" і відповідний порт.
Замінив
const int chipSelect = 10;
на
const int chipSelect = 4;
Скомпілив, завантажив. Все працює:
12:52:54.452 -> Initializing SD card...initialization done. 12:52:54.484 -> U-BOOT.IMG 464508 12:52:54.516 -> MLO 43828 12:52:54.516 -> ROOTFS~2.SQU 12943360 12:52:54.548 -> AM335X~1.DTB 98763 12:52:54.579 -> ROOTFS~1.SQU 12943360 12:52:54.612 -> ZIMAGE 8115424 12:52:54.612 -> done!
Наскільки памʼятаю, контролер SPI на всіх атмегах однаковий, не має бути різниці чи там atmega2560, чи atmega328P.
Бо в мене є сумнів що я вірно все зробив.
Перевірте живлення що йде на саму SD-карту. Перевірте, чи доходить до неї chipselect.
Якщо у вас підозра, що там щось специфічне для W5100, то давайте схему вашого шілда і що куди підключено, включно з живленням. Телепатично вгадувати будем довго.
Неактивний
Перевірте, чи доходить до неї chipselect.
перевірте, чи доходять сигнали до sd карти. і живлення теж.
Коли мега звертається до шилда, світеться світо діон на шилду.
напруга є, 4,8 В
Шилд купив цієї суботи. має робити
В папочці examples дивились? там не повинно бути нічого w5100 специфічного.
де ця папка?
Неактивний
Коли мега звертається до шилда, світеться світо діон на шилду.
До якої лінії цей світлодіод підключений? W5100 - це взагалі мікросхема ethernet-контролера. Шилдів з нею багато різних може бути. SD-карта на шилді - це окремий пристрій, тільки використовує спільну з W5100 SPI-шину (мабуть). А chip select у неї окремий. І має бути конвертор рівнів на SPI, або хоча б резистивні дільники.
Давайте схему вашого шилда. Або хоча б посилання чи фото, по якому можна пошукати його схему. Маркування пінів на ньому якесь є?
напруга є, 4,8 В
4.8 В на SD-карті? Вона б мала вже згоріти. На шилді має бути регулятор, з якого живлення подається на SD-розʼєм.
Неактивний
Приклади йдуть разом з Arduino core, покладайте менюшки в Arduino ide. з живленням дивно. карті потрібно 3.3в.
Всім дякую!
Проблеми вирішив.
Неактивний
Всім дякую за ваш час, та бажання допомогти.
цього виявляється мало
потрібно ще так з'єднати
цє інфо знайшов на https://forum.arduino.cc/
Неактивний
Проблеми вирішив.
Вітаю!
потрібно ще так з'єднати
Reset там, мабуть, зайвий. А розпіновка вашої версії шилда мала би бути відома вам.
Моя б воля, я б законодавчо заборонив продавати периферійні модулі та шилди без надання схеми електричної принципової
Остання редакція dimich (2025-04-14 21:58:31)
Неактивний
HelloArduino пише:Проблеми вирішив.
Вітаю!
HelloArduino пише:потрібно ще так з'єднати
Моя б воля, я б законодавчо заборонив продавати периферійні модулі та шилди без надання схеми електричної принципової
Так є такий закон, навіть забороне продавати обладнання без Україно мовної інструкції.
Ми бере часто у італійців, вони наймають перекладача
але все що купуємо з Китаю приходить так
Неактивний
Все одно не зрозуміло. Різниця між картинками - в проводів reset, який в sd карті не використовується. Може, була помилка в монтажі, і ви її случайно виправили? ну і 4.8 В, це ж не просто так.
Все одно не зрозуміло. Різниця між картинками - в проводів reset, який в sd карті не використовується.
Якщо там такий варіант шилда, то SPI виведено тільки на ICSP, а на пінах 10..12 ніякої SPI нема.
4.8 В, це ж не просто так.
То мабуть не на карті міряли, а на вході шилда.
Остання редакція dimich (2025-04-15 13:49:37)
Неактивний
Все одно не зрозуміло. Різниця між картинками - в проводів reset, який в sd карті не використовується. Може, була помилка в монтажі, і ви її случайно виправили? ;
Добрий день!
Як що уважно порівняти картинки то можна побачити
На першій та другій на шил підключено до різних контактів.
На першій для роботи Ethernet на другій для SD card
Як що я помиляюсь, тоді не знаю що було.
Остання редакція HelloArduino (2025-04-15 15:27:39)
Неактивний
То мабуть не на карті міряли, а на вході шилда.
Так вірно, то я помилився, та міряв на вході.
Неактивний
На першій для роботи Ethernet на другій для SD card
Ethernet та SD card працюють по одній і тій же шині SPI, тільки chip select у них різні. Просто на вашому шилді SPI виведено тільки на на отой 6-піновий ICSP, якщо вірити схемі по посиланню з попереднього повідомлення.
Неактивний
HelloArduino пише:На першій для роботи Ethernet на другій для SD card
Ethernet та SD card працюють по одній і тій же шині SPI, тільки chip select у них різні. Просто на вашому шилді SPI виведено тільки на на отой 6-піновий ICSP, якщо вірити схемі по посиланню з попереднього повідомлення.
Схоже що так і є
Неактивний
Як що уважно порівняти картинки..
Не дуже люблю різнокольорові ребуси. Тим більше розгадувати їх з мобільного телефона Був би даташіт на ваш шілд з нормальною схемою - можна було б щось запідозрити. А так, номери пінів на вашій платі щось скажуть лише тому, хто грався в точно таку гру з точно такою платою. Вірогідність цього близько 0.