Site Loader

Содержание

Arduino — ошибки и частые вопросы

Итак, разобрались со средой разработки, теперь можно загрузить первую прошивку. Можно загрузить пустую прошивку, чтобы просто убедиться, что все драйвера установились и платы вообще прошиваются. Если вы не читали гайд для новичков, обязательно его прочитайте!

Выбираем плату согласно своей плате. Если у вас Nano, то в новых версиях IDE нужно выбрать процессор 328p Old Bootloader. Далее выбираем порт, отличный от COM1 (т.к. это системный) и нажимаем кнопку загрузить. Если появилась надпись “Загрузка завершена” – значит всё в порядке и можно прошивать другие скетчи. В любом случае на вашем пути встретятся другие два варианта событий, происходящих после нажатия на кнопку “Загрузка” – это ошибка компиляции и ошибка загрузки. Вот их давайте рассмотрим более подробно

Ошибки компиляции


Возникает на этапе сборки и компиляции прошивки. Ошибки компиляции вызваны проблемами 

в коде прошивки, то есть проблема сугубо софтварная. Слева от кнопки “загрузить” есть кнопка с галочкой – проверка. Во время проверки производится компиляция прошивки и выявляются ошибки, если таковые имеются. Ардуино в этом случае может быть вообще не подключена к компьютеру.

  • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
  • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текст ошибки и понять, куда копать
  • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием <название файла>.h no such file or directory. Это означает, что в скетче используется библиотека 
    <название файла>
    , и нужно положить её в Program Files/Arduino/libraries/. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки всегда можно поискать в гугле по <название файла>.
  • При использовании каких-то особых библиотек, методов или функций, ошибкой может стать неправильно выбранная плата в “Инструменты/плата“. Пример: прошивки с библиотекой Mouse.h или Keyboard.h компилируются только для Leonardo
     и Micro.
  • Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк. Обычно указывается строка, в которой сделана ошибка, также эта строка подсвечивается красным.
  • Иногда причиной ошибки бывает слишком старая, или слишком новая версия Arduino IDE. Читайте комментарии разработчика скетча
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Если в проекте используется плата Nano на процессоре 328p, а вы сэкономили три рубля и купили на 168 процессоре – скупой платит дважды. Оптимизация: статическая память – память, занимаемая кодом (циклы, функции). Динамическая память занята переменными.

Ошибки загрузки


Возникают на этапе, когда прошивка собрана, скомпилирована, в ней нет критических ошибок, и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за настроек программы и драйверов.

  • USB кабель, которым подключается Arduino, должен быть Data-кабелем, а не кабелем только для зарядки. Нужным нам кабелем подключаются к компьютеру плееры и смартфоны.
  • Причиной ошибки загрузки являются не установленные/криво установленные драйвера Ch440
    , если у вас китайская NANO.
  • Также будет ошибка avrdude: ser_open(): can’t open device, если не выбран COM порт, к которому подключена Arduino. Если кроме COM1 других портов нет – читай два пункта выше, либо попробуй другой USB порт, или вообще другой компьютер.
  • Большинство проблем при загрузке, вызванных “зависанием” ардуины или загрузчика, лечатся полным отключением ардуины от питания. Потом вставляем USB и по новой прошиваем.
  • Причиной ошибки загрузки может быть неправильно выбранная плата в “Инструменты/Плата”, а также неправильно выбранный процессор в “Инструменты/Процессор”. Также в свежих версиях IDE нужно выбирать 
    ATmega328P (Old Bootloader)
     для китайских плат NANO.
  • Если у вас открыт монитор COM порта в другом окне Arduino IDE или плата общается через СОМ порт с другой программой (Ambibox, HWmonitor, SerialPortPlotter и т.д.), то вы получите ошибку загрузки, потому что порт занят. Отключитесь от порта или закройте другие окна и программы.
  • Если у вас задействованы пины RX или TX – отключите от них всё! По этим пинам Arduino общается с компьютером, в том числе для загрузки прошивки.
  • Если в описании ошибки встречается bootloader is not responding и not in sync, а все предыдущие пункты этого списка проверены – с вероятностью 95% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.

Предупреждения


Помимо ошибок, по причине которых проект вообще не загрузится в плату и не будет работать, есть ещё предупреждения, которые выводятся оранжевым текстом в чёрной области лога ошибок. Предупреждения могут появиться даже тогда, когда выше лога ошибок появилась надпись “Загрузка завершена“. Это означает, что в прошивке нет несовместимых с жизнью ошибок, она скомпилировалась и загрузилась в плату. Что же тогда означают предупреждения? Чаще всего можно увидеть такие:

  • # Pragma message……. – сообщения с директивой Pragma обычно выводят библиотеки, сообщая о своей версии или каких-то настройках
  • Недостаточно памяти, программа может работать нестабильно – Чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.

FAQ


Завершая раздел Введение в Arduino поговорим о вопросах, которые очень часто возникают у новичков:

  • Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс flash памяти. А он довольно большой.
  • Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке, старая прошивка автоматически удаляется.
  • Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные. Из двух прошивок нужно сделать одну, причём так, чтобы не было конфликтов.
  • Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде нечитаемого машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию. 
    • Зачем это нужно? Например есть у нас прошитый девайс, и мы хотим его “клонировать”. В этом случае да, есть вариант сделать дамп прошивки и загрузить его в другую плату на таком же микроконтроллере.
    • Если есть желание почитать код – увы, прошивка считывается в виде бинарного машинного кода, превратить который обратно в читаемый Си-подобный код обычному человеку не под силу
    • Вытащить прошивку, выражаясь более научно – сделать дамп прошивки, можно при помощи ISP программатора, об этом можно почитать здесь
    • Снять дамп прошивки можно только в том случае, если разработчик не ограничил такую возможность, например записав лок-биты, запрещающие считывание Flash памяти, или вообще отключив SPI шину. Если же разработчик – вы, и есть желание максимально защитить своё устройство от копирования – гуглите про лок-биты и отключение SPI

Важные страницы


  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете

Урок по ремонту сгоревших микроконтроллеров Arduino

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

В этом уроке мы починим Arduino Nano, если вы «поджарили» Uno или Mega, переходите к шагу 6, но сперва посмотрите все шаги один раз.

Шаг 1: Анализ проблемы

Есть два способа, которыми вы можете сжечь свой Ардуино:

  1. USB
  2. Внешний вывод Vin

Шаг 2: USB

Если вы использовали USB для питания своего Ардуино, когда он перестал работать, — переверните плату и вы увидите черный компонент, который является диодом. Если вы посмотрите внимательно, увидите у него небольшую выпуклость или набухшее пятно, что является индикатором того, что он мертв в нашем случае.

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

Шаг 3: Vin Pin (vin выход)

Если вы использовали штырь Vin, когда умер Arduino, то, если вы перевернете его, увидите небольшую выпуклую область, которая является регулятором напряжения. Замена также может исправить вашу проблему. Но в нашем случае всё работает через вывод Vin, но не через USB, поэтому нам необходимо заменить диод. Давайте сделаем это!

Шаг 4: Компоненты и инструменты

  1. Паяльник
  2. SMD MBR0520Tp диод Шоттки
  3. AMS1117 — 5В

Шаг 5: Пайка

У нас не было диода Шоттки SMD, поэтому мы будем использовать диод с коротким ключом общего назначения. И время для пайки. Для удобства мы повернули ножки диода. Смотрите процесс на фото выше. Мы сделали это!

Шаг 6: Чиним Uno и Mega

Аналогично, если вы закоротили Arduino Uno или Mega, вам нужно заменить предохранитель 500 мА (показан на рис.2 выше) или регулятор напряжения (показан на рис.3 выше), который аналогичен Нано. Это решит проблему!

На этом пока всё. Оставляйте комментарии в нашей группе ВКонтакте, хороших вам проектов.

Arduino IDE ошибки компиляции | РоботоТехника Ардуино

Ошибки компиляции Arduino ► возникают при проверке или загрузке скетча, если код содержит ошибки. Рассмотрим, как исправить ошибки программы Ардуино.

Ошибки компиляции Arduino IDE возникают при проверке или загрузке скетча в плату, если код программы содержит ошибки, компилятор не может найти библиотеки или переменные. На самом деле, сообщение об ошибке при загрузке скетча связано с невнимательностью самого программиста. Рассмотрим в этой статье все возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.

Ошибка компиляции для Arduino Nano, Uno, Mega

Самые простые ошибки возникают у новичков, кто только начинает разбираться с языком программирования Ардуино и делает первые попытки загрузить скетч. Если вы не нашли решение своей проблемы в статье, то напишите свой вопрос в комментариях к этой записи и мы поможем решить вашу проблему с загрузкой (бесплатно!).

Ошибка: avrdude: stk500_recv(): programmer is not responding

Что делать в этом случае? Первым делом обратите внимание какую плату вы используете и к какому порту она подключена (смотри на скриншоте в правом нижнем углу). Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже.

Ошибка: programmer is not respondingОшибка: programmer is not respondingОшибка Ардуино: programmer is not responding

Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает (programmer is not responding). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM7».

Ошибка: a function-definition is not allowed here before ‘{‘ token

Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.

Ошибка: a function-definition is not allowedОшибка: a function-definition is not allowedОшибка: a function-definition is not allowed here before ‘{‘ token

Ошибка: expected initializer before ‘}’ token  /  expected ‘;’ before ‘}’ token

Сообщение expected initializer before ‘}’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘}’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.

Ошибка: ‘ ‘ was not declared in this scope

Что за ошибка? Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Например, вы забыли продекларировать переменную или задали переменную ‘DATA’, а затем по невнимательности используете ‘DAT’, которая не была продекларирована. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.

Ошибка Ардуино: was not declared in this scopeОшибка Ардуино: was not declared in this scopeОшибка Ардуино: was not declared in this scope

Например, на скриншоте выделено, что программист забыл продекларировать переменную ‘x’, а также неправильно написал функцию ‘analogRead’. Такая ошибка может возникнуть, если вы забудете поставить комментарий, написали функцию с ошибкой и т.д. Все ошибки также будут подсвечены, а при нескольких ошибках в скетче, сначала будет предложено исправить первую ошибку, расположенную выше.

Ошибка: No such file or directory  /  exit status 1

Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Например, не установлена библиотека ИК приемника Ардуино: fatal error: IRremote.h: No such file or directory. Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:\Program Files\Arduino\libraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.

exit status 1 Ошибка компиляции для Arduino Nanoexit status 1 Ошибка компиляции для Arduino Nanoexit status 1 Ошибка компиляции для платы Arduino Nano

Довольно часто у новичков выходит exit status 1 ошибка компиляции для платы arduino/genuino uno. Причин данного сообщения при загрузке скетча в плату Arduino Mega или Uno может быть огромное множество. Но все их легко исправить, достаточно внимательно перепроверить код программы. Если в этом обзоре вы не нашли решение своей проблемы, то напишите свой вопрос в комментариях к этой статье.

arduino — Как я могу определить, какая плата arduino (или какой контроллер) в программном обеспечении?

Насколько я знаю, вы не можете определить тип платы, но вы можете прочитать идентификатор устройства ATmega. Проверьте этот вопрос, как это можно сделать: Можно ли читать подпись устройства ATmega или ATtiny во время работы? Обратите внимание, что при использовании этого метода несколько изменений регистра будут меняться, а не только распиновка. Поэтому ваш код может стать значительно более сложным. Преимущество состоит в том, что if вам удастся обойти все изменяющиеся назначения регистров и другие аппаратные зависимости, вы можете использовать один .hex-файл для программирования ваших устройств непосредственно из avrdude

Другой способ выяснить тип платы /контроллера — во время компиляции. В основном вы компилируете части кода или устанавливаете макросы в зависимости от типа устройства, настроенного в среде Arduino. Проверьте этот снимок кода на пример:

#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define DEBUG_CAPTURE_SIZE 7168
#define CAPTURE_SIZE 7168
#elif defined(__AVR_ATmega328P__)
#define DEBUG_CAPTURE_SIZE 1024
#define CAPTURE_SIZE 1024
#else
#define DEBUG_CAPTURE_SIZE 532
#define CAPTURE_SIZE 532
#endif

Снюплер кода был бесстыдно скопирован из https://github.com/gillham/logic_analyzer/wiki Проверьте этот код для некоторых более сложных обманов, связанных с устройством.

В зависимости от операционной системы вашего хоста поддерживаемые типы контроллеров можно найти в следующем файле:

  • Linux: /usr/lib/avr/include/avr/io.h
  • Windows: ...\Arduino\hardware\tools\avr\avr\include\avr\io.h

Использование C-препроцессора (с помощью которого обрабатывается вышеуказанный код), вероятно, выходит за рамки этого сайта. http://stackoverflow.com будет лучшим местом для подробных вопросов.

Если вы находитесь в Linux, вы можете легко найти все поддерживаемые типы контроллеров, набрав:

grep 'defined (__AVR' /usr/lib/avr/include/avr/io.h | sed 's/^[^(]*(\([^)]*\))/\1/'
ответил jippie 18 FebruaryEurope/MoscowbMon, 18 Feb 2013 23:58:53 +0400000000pmMon, 18 Feb 2013 23:58:53 +040013 2013, 23:58:53

Настройка плат Arduino при первом подключении к ПК

В этой инструкции, для примера, рассмотрим начало работы в операционной системе Windows. Для операционных систем Microsoft (Windows 2000/Vista) различия незначительны, они в основном относятся к названиям вкладок в Диспетчере устройств. В прочих операционных средах, таких как Linux, FreeBSD, Mac OS X и т.д, порядок настройки значительно отличается. При необходимости организовать работу с этим программным обеспечением, рекомендуем искать ответы на вопросы на основном сайте разработчика //www.arduino.cc .

 

В качестве подключаемой платформы возьмём Arduino Uno. Разница с другими платами у неё минимальна.

 

Кабель для связи с ПК

 

Для передачи данных с персонального компьютера на Arduino, необходимо подыскать соответствующий кабель. С отдельными платами кабель не поставляется, только есть в стартовом наборе Arduino для практикующего конструктора-программиста.

 

Arduino Uno, Arduino Mega 2560 соединяются кабелем со штекерами USB тип А. Такой кабель часто применяется для подключения принтера или сканера.

Arduino Leonardo, Arduino Due для подключения имеют гнездо micro USB тип В.

Arduino Nano, Freeduino Nano подключаются через гнездо mini USB тип B.

гнездо mini USB тип B

Для подключения Freeduino MaxSerial потребуется кабель последовательного порта 9M-9F.

9M-9F.Установка Arduino IDE

 

Arduino IDE — интегрированная среда разработки софта для Arduino устройств, устанавливаемая на компьютер.

В зависимости от модели платы важно правильно выбрать подходящую версию Arduino IDE:

  • Arduino IDE 1.6.4 — для многих плат, кроме Arduino Leonardo ETH и Arduino M0 (программное обеспечение от Arduino LLC).
  • Arduino IDE 1.7.7 — для всех типов плат (программное обеспечение от Arduino SRL).

 

Частичная несовместимость ПО стала следствием разногласий между отцами-основателями Arduino итальянцами Массимо Банзи и Джанлука Мартино, которые не смогли договориться о дальнейшем курсе развития компании. Завод, на котором разрабатывают и производят оригинальные платформы Arduino, под управлением Джанлука Мартино откололся от головной компании Arduino LLC и стал самостоятельной компанией Arduino SRL (ранее Smart Projects Srl).

 

Запуск Arduino IDE

 

После запуска успешно установленной Arduino IDE, должна открыться графическая консоль, как на картинке внизу.

После запуска

Возникла неполадка: Arduino IDE не запускается.

 

Способ устранения.

Скорее всего, на компьютере установлена неподходящая виртуальная среда JRE (Java Runtime Environment), необходимая для запуска графических приложений.

Возвратитесь к переустанавке Arduino IDE: на этот раз инсталлятор развернет работу по настройке JRE.

 

Подключение плат Arduino к компьютеру

 

После успешного запуска среды разработки Arduino IDE пришло время связать какую-то платформу Arduino с компьютером. Как вы уже знаете, подключение плат Arduino к ПК выполняется через USB-кабель.

 

Соединив консоль Arduino с ПК, на ней загорится один светодиод «ON», и начнёт мигать другой «L». Это означает, что через кабель подано питание и микроконтроллер начал выполнять предустановленную на заводе программу Blink (мигание).

 

Остается только узнать, какой номер COM-порта присвоил компьютер нашей плате Arduino, что важно для корректной работы программного обеспечения Arduino IDE с новым устройством.

 

Номер COM-порта можно узнать в «Диспетчере устройств», вкладка «Порты (COM и LPT)».

На системах Windows скорее всего нашей Arduino Uno с последовательным интерфейсом присвоится один из портов COM1 или COM2. Для Ардуино с USB-контроллером портом ввода будет COM4, COM5, COM6 или выше.

На системах Linux последовательным портом будет USB0 либо USB1.

port

Высветилось новое устройство Arduino в «Диспетчере устройств» — значит, операционная система распознала нашу плату, нашла для неё подходящий USB-драйвер и присвоила номер её интерфейсу. При совместном подключении ещё одной платы Arduino, ей присвоиться уже другой номер порта.

 

Возникла неполадка: при подключении платы Arduino к компьютеру, в Диспетчере устройств она не появляется.

 

Способы устранения:

  1. Не всунут до конца или поврежден USB-кабель или порт.
  2. Нет драйвера для этой платы Arduino. Если у вас китайская Arduino или от другого неизвестного производителя, попробуйте переустановить USB-драйвер вручную.
  3. Блокировка со стороны антивирусника.
  4. Неисправна плата Arduino.

 

Настройка Arduino IDE

 

В открытой Arduino IDE, заходим: Инструменты > Порт > выбираем номер порта COM — сообщаем программе номер порта, к которому подключена микропроцессорная платформа Arduino.

Настройка Arduino IDE

Чтобы у прошивающей программы Arduino IDE не осталось никаких сомнений, с чем ей предстоит работать, указываем тип нашей подключенной платы. Для этого переходим по меню: Инструменты > Плата > выбираем тип своей платы Arduino.

Настройка Arduino IDE

Возникла неполадка: во вкладке Порт нет ни одного COM-порта.

Способ устранения.

Очевидно, нарушено соединение устройства Arduino с компьютером. Верните устойчивое соединение с ПК.

Или нет драйвера. Скачать можно в конце статьи.

Как проверить подключение устройства Arduino

Все числовые данные, поступающее через COM-порт, выводятся в Монитор порта во всё той же удобной графической среде Arduino IDE. Следовательно, нажав соответствующую иконку «Монитор порта» в верхнем правом углу консоли или найдя соответствующий пункт в меню Сервис, по изменяющимся числам в открывшимся окошке можно убедиться, что через USB-кабель передаются данные, а значит, и плата Arduino надежно подключена.

Как проверить подключение

Обратите внимание, что в нижней части окошка Монитора порта выводится информация о скорости работы с COM-портом «19200 baud» (19200 бит/сек). Такая скорость задана по умолчанию в предустановленном скетче на плате Arduino. В этом скетче есть строка Serial.begin(19200), в которой можно задать любую требуемую скорость передачи, но это возможно только при работе через USB-кабель. Ежели передача данных идет через радиоканал Bluetooth, то скорость обмена с COM-портом должна быть задана заранее, точно такой же, какую мы выбираем при отладке Bluetooth-модуля.

 

Возникла неполадка: невероятно тормозит Arduino IDE при навигации по меню.

 

Способ устранения.

В Диспетчере устройств, во вкладке Bluetooth Serial отключите Bluetooth-соединение с мобильным телефоном. Все внешние подключения через Bluetooth значительно пожирают объем виртуальной памяти.

 

Загрузка первого скетча

 

Соединение установлено, среда разработки настроена — теперь в ваших руках отлаженный инструмент для прошивки любых микроконтроллеров AVR серии: ATtiny, ATmega, AT90S, AT90CAN, AT90PWM.

 

В среде разработки Arduino IDE есть много готовых образцов для различных задач, но для проверки отзывчивости платы на перепрошивку достаточно внести небольшие изменения в предустановленную программу Blink (мигание светодиода «L» на плате).

Загрузка первого скетча

Достаточно в открытом эскизе Blink внести свои изменения в строчке delay(1000), нажать «Вгрузить» и засечь изменения в работе платы Arduino.

Загрузка первого скетча

Установив delay(500) — светодиод «L» будет мигать в два раза чаще, с задержкой в пол секунды.

Задав delay(100) — светодиод «L» будет загораться и гаснуть в 10 раз быстрее, чем по заводской настройке, то есть каждые 100 миллисекунд.

 

Возникла неполадка: при загрузке скетча всплыла ошибка вида «not in sync».

 

Способ устранения.

Значит, подключенная платформа Arduino не была распознана операционной системой. Вернитесь к пунктам установки правильного номера COM-порта и модели платы в меню Инструменты Arduino IDE.

Да и напоследок, если вы купили плату Arduino на каком-нибудь онлайн китайском рынке, то очень часто возникают проблемы при подключении платы – просто она не определяется. Чтобы решить эту проблему умельцами был создан драйвер . СКАЧАТЬ

Автор: Виталий Петрович.


 

устранение недостатков оригинального прибора для проверки микросхем

Некоторое время назад я купил IC тестер от Genius. Модель G540 позволяла программировать различные IC, была способна тестировать CMOS и TTL IC. Последняя функция была достаточно интересной, так как это позволяло ремонтировать и проверять вещи намного проще — ты знаешь, какая часть имеет дефект, вместо того, чтобы заменять все части и микросхемы по одной в поисках неисправной.

Девайс работал хорошо до тех пор, пока я не перешел на Win7. На этом этапе он начал создавать проблемы, не распознавался в некоторых случаях, а сама программа могла зависнуть в момент IC тестирования. В поисках альтернативы я решил сделать тестер своими руками с некоторыми дополнительными улучшениями.

В результате я получил IC tester на Ардуино с возможностью вывода результатов проверки на серийный порт, при этом он работает в большинстве случаев (но до сих пор есть кое что, что можно улучшить).

Шаг 1: Что было в начале

Оригинальный тестер от Genius работал хорошо, но вначале нужно было сделать множество кликов, выбирая девайс и т.д. Всегда нужно было запускать программу и самое важное, что не было никакой информации об итогах тестирования. Если IC не был найден, то невозможно было определить по какой причине: из-за поломки, или из-за некорректного цикла тестирования (что случается с некоторыми IC).

Идея состояла в том, чтобы устранить эти недостатки разработав на Ардуино Нано свой тест.

Шаг 2: Схема

Схема тестера конденсаторов довольно проста. Центральным элементом является Ардуино нано. Ввиду ограничения доступных портов, максимальное количество тестируемых пинов равняется 16 (чего вполне хватает для большинства IC).Чтобы добиться этого, коммуникация с экраном и EEPROM, содержащим тестовые данные, осуществляется через I2C. Нано берёт на себя коммуникацию с компьютером и отображает детальные результаты тестов.

Дисплей LCD — стандартный экран 16*2 с I2C конвертером, он занимает всего 2 пина на Ардуино.

Тестовые данные хранятся в I2C EEPROM AT24C512. Там хранится скрипт, который шаг за шагом проводит тестирование. Для каждого типа IC посылается последовательность логических входных данных, и определенные данные ожидаются на выходе. В случае если данные не соответствуют ожиданиям, скрипт перепрыгивает к следующей возможной части исполнения. В данной версии девайса EEPROM нужно отдельно программировать программатором. Я не нашел способа переправить 25кБ данных кроме как через серийный порт.

Тестовые скрипты находятся в текстовом виде, так что их можно легко модифицировать, синтаксис в скетче Ардуино.

При тестировании, несколько сигналов посылается на тестируемую часть, которая не соответствует спецификации и проверяются все возможные комбинации. Чтобы предотвратить перегрузку Arduino и детали, все соединения проходят через резисторы на 680 Ом. Это создает много сигналов «ниже спецификаций», что приводит к случайным выходам тестируемой ИС. Тем не менее, если IC подключается к тестируемым сигналам, выход тестируемой IC можно использовать.

Тестирование начинается с одного коммутатора, подключенного к одному из аналоговых входов.

Шаг 3: Девайс в работе

В приложенном видео можно посмотреть тестер в работе.

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

Файлы

Шаг 4: EEPROM для тестера

Кто-то из вас может задаться вопросом, можно ли загрузить тестовую информацию в EEPROM без использования программатора.

После некоторых изысканий я дописал код, чтобы сделать эту задумку возможной. Очень важным аспектом загрузки данных через Serial Monitor Ардуино является то, что нужно выставить значение baudrate на 1200! При этом загрузка кода займёт некоторое время, но вы обезопасите себя от потери данных.

Загрузите набросок программы, откройте Serial Monitor и дождитесь, пока перед вами не появятся опции. Нажмите «d», а затем Enter. Тестер войдёт в режим загрузки. Просто вставьте всё содержимое test_16_full.dat и нажмите Enter. На экране начнут отображаться байты. «done» на мониторе будет означать, что данные успешно загружены.

Файлы


NewliquidCrystal_1.3.4.zip

Советы по устранению ошибки последовательного порта в Arduino и ESP8266 (ESP-12E) — Мои статьи — Компьютер и интернет

Сначала проверьте последовательные порты. Загрузите Windows, но не подключайте плату Arduino или ESP8266. На рабочем столе щелкните правой кнопкой мыши (ПКМ) по ярлыку Этот компьютер (Компьютер). В меню выберите Свойства. В окне Система щелкните по ссылке Диспетчер устройств. В окне Диспетчер устройств откройте Порты (COM и LPT). Должен присутствовать последовательный порт COM1.

Теперь воткните в USB порт кабель от Arduino или ESP8266. В диспетчере устройств должен появиться дополнительный COM порт. Я подключил NodeMCU v3 и появился дополнительный порт COM3.

Если порт определился, но никаких сообщений в монитор порта не выводится, то проверьте скорость порта. В настройках Arduino IDE выставьте скорость порта ту, которая прописана в скетче. В окне монитора порта нажмите кнопку Очистить вывод. После этого монитор порта должен заработать.

Если ничего не изменилось и присутствует только порт COM1, то значит у вас проблемы с последовательным портом.
В этом случае при запуске скетча в окне выдается сообщение «Порт недоступен», «Ошибка подключения последовательного порта», «Порт не найден» и т.п. После этого начинаются пляски с бубном —  отключаются и снова подключаются кабели, перезагружается компьютер. Иногда это помогает, иногда — нет.
Вероятная причина ошибки порта — помехи при передаче данных по USB кабелю. Вначале проверьте кабели и USB разъёмы. Замените ненадёжные кабели и не используйте разбитые USB разъёмы.

Другая причина — недостаточно тока для питания Arduino или ESP8266. USB порт в компьютере может быть запитан от источника с малым выходным током. Попробуйте самое простое — подключить Arduino к другому порту в надежде на то, он запитан от более мощного источника. Такое возможно, если USB портов несколько. Кардинальное решение — подключить Arduino или ESP8266 через USB хаб (USB-разветвитель) с внешним блоком питания с выходным током не менее 2 — 3 А.
Ещё одно причина нехватки питания для портов USB — подключение к роутеру по Wi-Fi. Wi-Fi адаптер потребляет значительный ток и нагружает шину питания портов  USB. В связи с этим отключите  Wi-Fi адаптер и подключите компьютер к роутеру кабелем. Иногда это сразу может решить проблему.
Предпочтительно использовать компьютер с подключением клавиатуры и мыши к портам PS/2. Клавиатура и мышь с подключением по USB будут дополнительно нагружать шину +5В и питания для Arduino или Node MCU может не хватить. По возможности используйте десктоп с достаточно мощным блоком питания, который обеспечивает с запасом ток по шине +5В. Некоторые дешёвые материнские платы при подключении двух-трёх USB устройств уже начинают давать сбои.

Используйте короткий USB кабель, насколько это возможно. Это уменьшит помехи при передаче данных.
Не используйте USB удлинители, подключайте Arduino или ESP8266 непосредственно к USB портам компьютера на задней стенке системного блока. Не используйте USB разъёмы на передней панели системного блока или USB порты картридера. Они подключаются к материнской плате кабелями. Это увеличивает помехи при передаче данных.

Самый действенный способ снизить помехи это использовать USB кабель с ферритовыми фильтрами — цилиндрическими утолщениями из ферритовых колец на концах кабелей.

Фильтры бывают съемными, они надеваются на кабель и защелкиваются.

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

Если использовать кольца небольшого диаметра, то никакой фиксации не понадобится. Например, я использовал два кольца, снятые с неисправной материнской платы. Только придется разрезать кабель и затем спаять его снова или припаять новый USB разъем.

Бывают ситуации, когда Arduino работает нормально, а при подключении ESP8266 появляются ошибки и скетч не работает. Такое может быть из-за того, что Wi-Fi передатчик модуля потребляет довольно значительный ток и для нормальной работы просто не хватает тока. Подключите ESP8266 через USB хаб с внешним блоком питания с выходным током 2-2.5-3 А. Также используйте для подключения короткие кабели с ферритовыми фильтрами на концах.

Пробуйте подключаться к разным USB разъёмам компьютера, если их несколько, или разным разъёмам USB хаба.
Если ваш компьютер имеет порты USB2.0 и USB3.0, то пробуйте подключаться к тем и другим. Скорее всего лучшие результаты получите при подключении к USB2.0. Драйвер USB3.0 может работать некорректно.
Windows иногда просто не может определить порт. Проверьте контакты блока питания USB хаба в розетке сети. Если блок питания болтается, то о надёжной работе USB портов не может быть и речи.

Подключайте плату Arduino или ESP8266 в USB разъём после полной загрузки Windows.
При переключениях в другие порты номер порта может измениться. Проверяйте номер порта. В верхнем меню Arduino IDE выберите Сервис (Tools) -> Последовательный порт (Serial Port). Рядом с портом COM1 должен быть дополнительный порт. Поставьте галку, чтобы активировать его. 

Работу COM порта и загрузку скетча визуально можно проверить по миганию светодиодов RX и TX на плате Arduino или по частому миганию светодиода рядом с Wi-Fi антенной на плате ESP8266 (NodeMCU v3).

Несмотря на все ухищрения, Windows 10 не открывает COM порт для Node MCU v3 (ESP-12E). Иногда подключает порт и тут же сбрасывает его и так без конца.
Подключил Node MCU v3 (ESP8266) через USB хаб с внешним блоком питания к компьютеру с Windows XP SP3. Установил драйвер ch441ser.exe и Arduino IDE 1.6.5. COM порт определяется и работает. В Windows XP COM порты определяются более надёжно. Проверил это на двух компьютерах с Windows XP с Intel и AMD процессорами.
Однако некоторые скетчи уже не используют приложения Win32 и при компиляции выдаётся ошибка. В этом случае потребуется как минимум 64-разрядная Windows 7.
COM порты виртуальные и, как в любой программе, возможен сбой при определении порта.

В Windows откройте Диспетчер устройств, раскройте Порты (COM и LPT). Не закрывайте это окно. Начинайте пробовать разные кабели, разные порты и разные варианты подключения оборудования и, как только порт надёжно определится в Диспетчере устройств, запомните эту конфигурацию оборудования.

Резюме
Чтобы устранить ошибки последовательного порта —
► используйте для питания Arduino или ESP8266 USB порты с достаточным выходным током или USB хаб с внешним питанием
► используйте для подключения короткие USB кабели с ферритовыми фильтрами около разъемов.

Последнее редактирование 9 января 2020 г.

Использованные ресурсы
https://wm-help.net/lib/b/book/1248084587/4
https://masterpaiki.ru/top-10-samyih-chastyih-neispravnostey-zhk-monitorov.html

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *