Aven

Arduino. Энергосбережение и SD карта.

9 сообщений в этой теме

Aven    0

Появилась необходимость собрать устройство на базе Arduino, которое работает с SD картой.

Так как работа от аккумулятора, нужно максимально снизить ток потребления.

Возникла проблема, если отключить питание SD карты, чтобы уйти в сон, после его возобновления работа с картой уже невозможна, при попытке пере инициализировать все виснет.

Вопрос, как лучше реализовать отключение SD карты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
andryxa    228

Попробуйте после подачи питания на карту, сделать не большую паузу, перед инициализацией карты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Aven    0
Только что, andryxa сказал:

Попробуйте после подачи питания на карту, сделать не большую паузу, перед инициализацией карты.

Пробовал, ставил 5 секунд, не получилось.

 

  digitalWrite(9, HIGH); //подача питания на карту
  delay(5000);

  while (!SD.begin(10)) errorSDcard();  //пытаемся инициализировать карту

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
andryxa    228

а как у вас чип селект подключен? вы им управляете или он все время на земле?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
andryxa    228

это конечно многое проясняет :D.  В таких случаях хорошо помогает лог анализатор....

Изменено пользователем andryxa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Aven    0
4 минуты назад, andryxa сказал:

это конечно многое проясняет :D.  В таких случаях хорошо помогает лог анализатор....

 

Гдеж его взять то:))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Lost13
      помогите с простиньким скетчом для ардуино уно
      задача :
      на вход (А0) подается логический сигнал короткими импульсами, и если  промежуток между сигналами меньше 2-х секунд , то на выходе (d2) загорается светодиод на 3 секунды, если промежуток между сигналами больше 2-х секунд то он игнорируется 
    • Автор: SaintYGL
      Здравствуйте!
      Данная тема посвящена разработке устройства, имеющего название "Лампа с беспроводным управлением на Arduino".
      Краткая предыстория: я - студент последнего курса техникума, а данная тема - мой дипломный проект. Выбран был в спешке, далеко не самое дальновидное решение, как показала практика, особенно с учётом того, что тема была взята здесь же, на сайте паяльник, в этой статье, и имела незаконченное состояние, из-за чего сейчас и возникают большие неприятности. 
      Концепция: устройство имеет Bluetooth-модуль, по которому соединяется с телефоном, посредством чего и осуществляется беспроводное управление. Также к Arduino подключено двухканальное реле, которое переключает ток, идущий к патронам, в которые вкручены лампы. По команде, переданной по bluetooth, реле переключается в одно из положений (обе выкл.  / 1 вкл, 2 выкл. / 1 выкл, 2 вкл. / обе вкл.)
      Загвоздки: 1) В статье всё осуществляется с помощью отдельного микроконтроллера ATMega 328p, расположенного на макетной плате, в то время как Arduino используется лишь как программатор. Мне же необходимо, чтобы данное устройство работало не с отдельным микроконтроллером, а с самой Arduino. Кварцевый резонатор в ней есть, кнопка есть, диоды есть, bluetooth-модуль и реле докуплены.
      2) Если копировать код из статьи (а точнее перепечатать его со скриншота) и вставить в Arduino IDE, то появятся следующие ошибки: 
      Lamp: 5: error: a function-definition is not allowed here before '{' token
      D: \ Saint \ \ \ \ \ \ \ "\ \ \ \ \ \ \ \ \ Lamp \ Lamp.ino: In function 'void loop ()':
      Lamp: 16: error: 'incomingInt' was not declared in this scope
      Lamp: 27: error: 'class HardwareSerial' has no member named 'printIn'
      Lamp: 30: error: expected '}' at end of input
       
      Сам код, чтобы его не нужно было также перепечатывать со скриншота:
      #include <Wire.h>  int incomingInt = 0  void setup ( )  {  Serial.begin (9600) ;  Serial.setTimeout (1000) ;  pinMode (7, OUTPUT) ;  pinMode (5, OUTPUT) ;  }  void loop ( )  {  if (Serial.available ( ) > 0)  {  incomingInt = Serial.parseInt ();  if (incomingInt = 500)  {  digitalWrite (5, HIGH) ;  }  else digitalWrite (5, LOW) ;  if (incomingInt == 422)  {  digitalWrite (7, HIGH) ;  }  else digitalWrite (7, LOW) ;  Serial.printIn(incomingInt) ;  }  }   
      На данный момент это всё, по мере развития проекта тема будет мной дополняться. Также я буду рад любому совету, который поможет разобраться с этим устройством. Связаться со мной можно через ВКонтакте: vk.com/sainty_gl
    • Автор: mefi73
      Кроме классических Arduino с микроконтроллерами Atmel существуют так же платы, в основе которых лежат другие микроконтроллеры. Одной из таких ардуин является модель 101, в основе которой находится Intel Curie. Выглядит она так:

      Поскольку ардуино это проект открытый, то изготавливать совместимые платы может кто угодно, иногда изменяя схему.
      Так вот, у компании DFrobot свой взгляд на arduino 101. Представляю вашему вниманию DFRobot Curie Nano.


      Для сравнения приведу фото этой платы с некоторыми другими (леонардо, esp32, NodeMCU). Плата довольно компактна.

      Не вижу смысла перепечатывать характеристики микроконтроллера из даташита , просто приведу содержимое первой страницы.

      расположение и назначение выводов DFRobot Curie Nano представлено на следующем изображении.

      Итак, на борту 32-битный микроконтроллер, работающий на частоте 32 мегагерца. Есть встроенный 6-осевой акселерометр, Bluetooth, часы реального времени. То есть микроконтроллер изначально задуман для создания носимых умных устройств. К тому же DFRobot Curie Nano меньше по размеру, чем arduino 101.
      Для программирования DFRobot Curie Nano можно использовать фирменную IDE от Intel (но я её не прбовал), либо ArduinoIDE. На ArduinoIDE я и остановлюсь.
      Что бы ArduinoIDE могла работать с Curie, необходимо добавить поддержку этого микроконтроллера в «менеджере плат».

      Всего необходимо скачать чуть менее 200 мегабайт. На скриншоте только один из скачиваемых пакетов.

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

      Вот и вся установка.
      Стоит отметить, что работа с ардуино 101 (и соответственно с DFRobot Curie Nano) ничем не отличается от других плат ардуино, построенных на микроконтроллерах AVR. Дело в том, что с "ядром" Intel Curie Boards устанавливаются библиотеки, которые заменяют встроенные в ArduinoIDE библиотеки (Wire, SPI, EEPROM, servo и так далее). Кроме того, в комплект пакета поддержки входят библиотеки, специально предгазначенные для микроконтроллера Intel Curie - CurieBLE для работы с bluetooth, CurieI2S, CurieIMU для работы со встроенным датчиком положения, power для спящего режима, CurieTime для работы со встроенным RTC, CurieTimerOne в пояснениях не нуждается.
      Для прошивки микроконтроллера отведено 155682 байт, это больше чем у большинства микроконтроллеров AVR, используемых в платах ардуино. Но, одна и та же программа может занимать разный объем в микроконтроллерах разной архитектуры.  Я решил сравнить объем программ, компмллируемых для Intel Curie и ATmega 328p (arduino nano). Итак...

      С ATmega328p всё закономерно, больше объем скетча - больше памяти занимает скомпилированный код. А вот с Intel Curie не все так просто. Даже пустой скетч занимает 31% памяти. Но далее с ростом скетча рост скомпилированной программы значительно меньше, чем у ATmega328p.
      На данном примере я покажу совместную работу встроенной в ядро Intel Curie библиотеки и библиотеки U8g2. Это скетч простых часов, которые выводят данные на дисплей.
      #include <CurieTime.h> #include <U8g2lib.h> U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0,U8X8_PIN_NONE); char c_time[10]; void setup() {   u8g2.begin(); } void loop() { int i_hour=hour(); //получаем время: час, int i_minute=minute(); //минуты, int i_second=second(); //секунды и помещаем их в соответствующие переменные String s_time = String(i_hour) + ":" + String(i_minute) + ":" + String(i_second); //конактенация и одновременный пере s_time.toCharArray(c_time, 10); //преобразование переменной типа string в тип char   u8g2.firstPage(); //вывод данных на дисплей   do {   u8g2.setFont(u8g2_font_ncenB14_tr); //выбор шрифта   u8g2.drawStr(30, 36, c_time); //эта функция может вывести только значение переменной типа char   }     while ( u8g2.nextPage() ); }
      Создатели arduino 101 хорошо поработали над совместимостью исходного кода, предназначенного для микроконтроллеров AVR, с микроконтроллером Intel Curie. То есть,  большинство сторонних библиотек, написанных для arduino, совместимы так же и с DFRobot Curie Nano.
      Подробно рассматривать библиотеки, поставляемые с ядром Intel Curie, я не буду. Так как примеров, поставляемых с ядром, достаточно для понимания их работы. Отдельного внимания заслуживает библиотека CurieBLE и собственно работа с BLE, но это тема отдельной статьи.
      Кроме того, на базе Curie Nano можно построить нейронную сеть при помощи Curie's neuron SDK, вот только библиотека платная и стоит 19$.
      P.S. DFRobot Curie Nano мне очень понравилась. Уже есть огромный план по использованию этой платы по назначению, то есть для создания носимого устройства с применением возможностей микроконтроллера Intel Curie (часы с навигацией и расчетом астрономических событий для туристов и фотографов)
      Отдельная благодарность магазину dfrobot.com за предоставленную на обзор DFRobot Curie Nano.
       
    • Автор: MolodoyElectrik
      Всем привет.
      Пишу скетч для ардуины, нужно чтоб 1 светодиод мигал постоянно, и 4 светодиода включались и выключались поочередно. Все должно происходить в одно время разумеется и Delay здесь не катит. Вот пример как должно быть только с delay:
       
      Сделал такой скетч:
      Тот который 1 светодиод мигает все хорошо, а вот с 4, которые должны подряд включаться какая то лажа) Где напортачил?
      Предыдущую тему не в том разделе создал, удалите пожалуйста. 
    • Гость izakom
      Автор: Гость izakom
      Добрый день,
      Никак не могу, подключить АЦП к микроконтроллеру. Будет здраво, если кто-нибудь сможет подсказать где моя ошибка или хотя бы где ее искать.
      Я подключаю ADS1240 к arduino UNO. Описание АЦП слишком тяжелое, поэтому прикрепляю ссылку
      http://www.ti.com/lit/ds/sbas173f/sbas173f.pdf
      Также во вложении прикрепил 2 схемы подключения, которые побывал.
      Контроллер общается с АЦП по SPI, где D10 -SS, D11 - MOSI, D12 - MISO, D13 - SCLK.

      Сейчас моя задача, измерять напряжение на потенциометре с достаточной точностью. 
      К сожалению внутренний АЦП arduino 10 разрядный, поэтому пытаюсь подключить внешний.

      Также прикрепляю программу, при помощи которой пытаюсь снимать показания. Но к сожалению на контроллер приходит только "0".
      Схема_2.pdf
      Схема_1.pdf
      Тестова программа.txt
      Схема_2.pdf
      Схема_1.pdf
      Тестова программа.txt
  • Сообщения

    • А если выключить - вес изменяется?
    • Из современных, как основу, предложу микросхему SGL8022W. Четыре тактики управления освещением, в том числе и плавное изменение яркости. Правда без " лентяйки".
    • Первоначально конструкция была несколько проще.
    • Да чего уж, ладно. Критика, потому что у Вас знаний - "0", но то что есть желание изучить радиоэлектронику - вобщем-то похвально. Вот правда сколь-нибудь ощутимых успехов в этой области достигают наверное меньше 10% желающих этого. Итак: Любой ремонт техники начинают ВСЕГДА с проверки напряжений питаний отдельных блоков, узлов и/или микросхем. Коль уж Вы в достаточной мере владеете интернетом, то уж удостоверьтесь в наличии надлежащих питаний всех микросхем по их даташитам (микросхемы распространённые, даташиты легко находятся), незнание английского Вас не оправдает. А вы проверяли старый, и новый перед запайкой? Значит с уверенностью в 50% можно сказать, что микроконтроллер (он на плате один) подаёт признаки жизни, хотя может и не совсем рабочий. ATMEL-овская EEPROM-память 24с02N (которая у вас ATMEL 1502) может содержать как прошивку, так и/или калибровочные данные, но, так как к сожалению, по фото не видно модель микроконтроллера - сказать точнее весьма затруднительно. Хотя судя по размеру памяти, и принципу работы паяльной станции - скорее всего только второе. Есть. Но на 100% можно проверить только в устройстве, на 100% работающем как надо. Но как минимум нужно при выключенном питании прозвонить входные и выходные линии микроконтроллера на массу диодной прозвонкой (сверяться по даташиту): если какие-то ножки "звонятся", но при этом подключённые к ним радиоэлементы на плате как бы не должны садить на массу - значит скорее всего микроконтроллеру конец. Тут уже потребуется его замена с предварительной прошивкой в программаторе (требуется наличие прошивки под него для данного устройства), либо непосредственно в схеме после замены, если это возможно. Бывает иногда, что вход/выход микроконтроллера можно восстановить хитрыми способами, но боюсь Вам это не под силу, да и вариант такой проходит крайне редко. Если кое-что из вышенаписанного Вам непонятно - то отнесите станцию лучше к хорошему мастеру, либо забросьте её в дальний угол и сходите в магазин за новой - эту на данном уровне знаний Вам не под силу починить.
    • Не страшны ошибки. Всякое в жизни бывает. Касаемо "не включается". Посмотри прохождение напряжения питания до процессора, посмотри что у него на выходе и где есть короткие замыкания. Если процессор умер, а это частое явление - то пересобери себе паяльную станцию на Ардуино. Схем - море. А эту станцию используй как донора деталей. Заодно приобретёшь знания. И кстати. Проверь коротыши и обрывы на термопаре. 90% проблема там. Проверь прохождение сигнала так, чтобы "провод в провод"..
    • а можете узнать что там "ревизировалось" на такую сумму-то?    я когда в туман рядом с лэп прохожу - тоже слышу как звучат сетевые провода...))
    • Тогда тупик... От оригинала он внешне не отличается. Видимо, есть смысл привести цифры у оригинала и у подделки, и как и чем измерить?