• Прошивка Arduino Pro Mini через Nano. Как запрограммировать Arduino Pro Mini с помощью программатора Заливаем скетч на arduino pro mini

    Данная плата предназначена для использования в готовом устройстве. Поэтому у этого микроконтроллера нет встроенной микросхемы для связи по USB-UART. Так же нет и разъемов USB для подключения и прошивки. Это позволяет сильно уменьшить размеры платы, а также ее стоимость. Для подключения к компьютеру и прошивки используется специальный программатор. Существует две версии данной платы: с питанием 3,3 В и частотой 8 МГц и с питанием от 5 В с частотой 16 МГц. В младшей версии этой ардуинки используется чип ATmega168. Этот чип обладает меньшим объемом flash-памяти, энергонезависимой памяти, а так же пониженной тактовой частотой. Так как цена разных версий Arduino Pro Mini практически не отличается мы поговорим о старшей версии с чипом ATmega328 и тактовой частотой 16 МГц.

    Arduino Pro Mini 5 В

    Эта версия снабжена микроконтроллером ATmega328. В отличии от своего младшего собрата, он имеет вдвое большие объемы энергонезависимой и flash памяти. И может похвастаться тактовой частотой в 16 МГц. Узнать о способах прошивки этого микроконтроллера вы можете в моей статье:

    Характеристики

    • Микроконтроллер: ATmega168 или ATmega328
    • Предельное напряжение питания: 3,3-12 В и 5-12 В
    • Цифровых вводов/выводов: 14
    • ШИМ: 6 цифровых пинов могут быть использованы как выводы ШИМ
    • Аналоговые выводы: 8
    • Максимальная сила тока: 40 mAh с одного вывода и 400 mAh со всех выводов.
    • Flash память: 16 кб
    • SRAM: 1 кб
    • EEPROM: 512 байт
    • Тактовая частота: 8 МГц и 16 МГц

    Подключение питания к Arduino Pro Mini

    Этот микроконтроллер можно питать тремя способами:

    • Переходником FTDI, подключенному к 6 соответствующим пинам.
    • Подавая стабилизированное напряжение на вывод Vcc. 3,3 В или 5 В в зависимости от версии
    • Подавая напряжение на вывод RAW. 3,3-12 В или 5-12 В в зависимости от версии

    Как уже было написано выше, плата имеет 14 цифровых пинов. На плате они помечены порядковым номером. Они могут быть как входом так и выходом. Рабочее напряжение этих пинов составляет 3,3 В или 5 В.

    Аналоговые пины на плате помечены ведущей «A». Эти пины являются входами и не имеют подтягивающих резисторов. Они измеряют поступающее на них напряжение и возвращают значение от 0 до 1024 при использовании функции analogRead(). Эти пины измеряют напряжение с точностью до 0,005 В.

    Широтно-импульсная модуляция (ШИМ) Arduino Pro Mini

    ШИМ выходы у этой платы никак не помечены. Нужно просто запомнить номера цифровых выводов, которые подключены к широтно-импульсному генератору. У Arduino Pro Mini есть 6 выводов ШИМ, это пины 3, 5, 6, 9, 10 и 11. Для использования ШИМ у Arduino есть специальная функция .

    Другие пины:

    • 0(Rx) и 1(Tx) используются для передачи данных по последовательному интерфейсу.
    • Выводы 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) рассчитаны для связи по интерфейсу SPI.
    • Так же на выводе D13 имеется встроенный в плату светодиод.
    • А4 (SDA) и А5 (SCL) могут использоваться для связи с другими устройствами по шине I2C. Подробнее про этот интерфейс вы можете почитать на википедии . В среде разработке Arduino IDE есть встроенная библиотека «wire.h» для более легкой работы с I2C.

    Физические характеристики

    Arduino Pro Mini имеет следующие размеры: длина 33 мм и ширина 18 мм, а весит всего около 10 грамм. Расстояние между выводами равняется 2,54 мм.


    – компактная версия платформы Arduino, предназначенная для построения всевозможных проектов, имеющих не большие размеры. Платформа на 100% совместима с другими платформами Arduino, например такой как Arduino UNO, но намного компактнее её. В данной статье я сделаю обзор на китайский аналог Arduino Pro mini, расскажу чем она отличается от оригинала, чем данная плата отличается от других плат платформы Arduino, а так же расскажу как подключить её к компьютеру для заливки в неё скетч. В завершении убедимся в работоспособности платы, на примере скетча «blink».

    Вот этот аналог Arduino Pro mini я купил на Aliexpress за $1.30, в то время как оригинальная плата на сайте производителя стоит €13. Разница в цене - это первое главное отличие китайского аналога от оригинала.

    Плата пришла в антистатическом пакете. В комплекте так же находились контактные площадки.

    Для сравнения, верхняя плата - оригинальная Arduino Pro mini, ниже, мой китайский аналог. По количеству и расположению контактов, плата идентична оригиналу, кроме контактов А4, А5, А6 и А7. На оригинальной плате эти контакты расположены в центре, на аналоге они находятся слева.

    Для того что бы иметь визуальное представление о размерах платы, приведу её рядом со своим китайским аналогом Arduino UNO. Pro mini удалось уменьшить в размерах за счёт удаления USB разъёма, схемы согласования платы с USB портом, также был удалён разъём питания. Китайский аналог на 100% совместим со всеми модулями, драйверами, датчиками, которые работают с оригинальной версией.

    Оригинальная современная плата Arduino Pro mini построена на базе микроконтроллера ATmega328 , на том же самом что и Arduino UNO . Более ранние модели этой платы строились на микроконтроллере ATmega168 .

    Китайские же аналоги Arduino Pro mini на данный момент строятся как на ATmega328 , так и на ATmega168 . В этом второе отличие оригинала от аналога. Плата на ATmega168 будет стоить дешевле, чем на ATmega328. Главное же отличие этих контроллеров в том, что ATmega328 содержит на борту в два раза больше памяти, чем ATmega168.

    Отличия микроконтроллеров

    ATmega168

    ATmega328

    16 Kбайт

    Но это не значит, что на ATmega168 не получится построить проект, который разрабатывался на плате с ATmega328, ведь 16 Кбайт будет вполне достаточно для многих скетчей. Всё же, если вам необходим двойной объём памяти, изучайте описание платы перед покупкой. При покупке своего китайского аналога, я выбрал плату за $1.30 с ATmega168, вместо платы с ATmega328 за $1.93. Как видно, здесь тоже можем сэкономить на покупке.

    Оригинальная плата Pro mini производится с двумя вариантами питания: на 5 и 3,3 вольта. У версии, работающей от 3,3 вольта, микроконтроллер работает на частоте 8 МГц, у 5-ти вольтовой версии - на частоте 16 МГц. Китайские аналоги так же производятся в 2-х вариантах. Моя плата работает от 5 вольт.
    Визуально частоту работы контроллера можно определить по установленному на плате кварцу, если он в большом корпусе, на нём отчётливо можно увидеть частоту, на которой он работает: 8 или 16 МГц.

    Фрагменты плат с кварцами, работающими на разной частоте.

    Про питание Arduino Pro mini.

    Для питания платы предназначены выводы GND, VCC и RAW.
    GND - это минус питания (земля).
    VCC – используется для подачи питания 3,3 или 5 вольт, в зависимости от версии платы. На этот разъём подаётся строго то напряжение, на которое рассчитана плата. Напряжение с этого контакта идёт напрямую на микроконтроллер, если оно будет выше необходимого, последний может выйти со строя.
    Если питать плату собираетесь большим напряжением, тогда «+» питания следует подключать к разъёму RAW . На этот разъём можно подавать до 12 в, не зависимо, на какое напряжения рассчитана плата. Напряжение с этого контакта подаётся на стабилизатор напряжения, который преобразует его до необходимого значения, а уже затем подаётся на контролер.

    Если так получилось что вы купили плату и не знаете на какое напряжение она рассчитана, подайте на разъём RAW 5 вольт и измерьте напряжение на разъёме VCC. Если плата рассчитана на 3,3 вольта, то соответствующее напряжение будет и на VCC, если будет на VCC 5 вольт, значит плата 5-ти вольтовая.

    Цифровые и аналоговые выходы Pro mini соответствуют количеству выходов как и у платы UNO: 14 цифровых и 6 аналоговых. Контакты А4 (SDA) и А5 (SCL) используются для подключения различных устройств по шине I2C.

    Про прошивку Arduino Pro mini.

    Став одной из самых маленьких плат платформы Arduino, плата Pro mini обрела недостаток - нельзя прошить плату без сторонней помощи. Расскажу про все возможные способы заливки скетчей в Pro mini.

    Прошивка Arduino Pro mini с помощью платы Arduino UNO.

    Это не самый простой способ, поскольку не у каждого имеется плата UNO и покупать её специально для прошивки плат Pro mini не целесообразно. Но поскольку у меня имеется китайский аналог UNO , я начну с этого способа. Для реализации этого способа, должен быть установлен драйвер на плату UNO и определён номер COM - порта, к которому эта плата подключена. Как это сделать, описано в статье про китайский аналог Arduino UNO.

    Соединяем платы как на картинке. Выводы GND , TX и RX соединяем с аналогичными. Вывод «VCC » на плате Pro mini соединяем с выводом «5V » или «3V3 » на плате UNO. Если у вас 5 вольтовая версия Pro mini, то соединяете с выводом «5V», как в моём варианте. Если версия 3-х вольтовая, подключаете к «3V3» на плате UNO. Вывод RESET на плате UNO подключаем к выводу DTR на плате Pro mini. На оригинальной плате вывод DTR обозначен как GRN , в общем это одно и то же.

    Когда всё подключено, запускаем Arduino IDE .



    Выбираем плату в которую нужно зашить скетч: «Инструменты » - «Плата: » и выбираем свою плату, в данном случае это « Arduino Pro or Pro Mini ».

    Поскольку платы Pro Mini могут использовать различные микроконтроллеры (ATmega168 или ATmega328), а так же различное напряжение питания (3,3 v или 5v ), выбираем свою конфигурацию: «Инструменты » - «Процессор: » в данном примере выбираю «ATmega168 (5 V, 16 M H z) ».

    Выбираем порт, к которому подключена плата UNO: «Инструменты » - «Порт: » в моём случае это « COM7 ».

    Попробуем залить первый скетч и убедится в работоспособности платы. Выбираем скетч « Blink », смысл которого - мигать встроенным в плату светодиодом: «Файл » - «Образцы » - «01. Basics » - « Blink ».

    С помощью кнопок «Проверить » и «Вгрузить » проверяется скетч на ошибки и загружается в плату. Если нет ошибок, синий светодиод начнём мигать на плате Pro Mini.

    Можно поиграться значениями в скетче и изменить время горения светодиода и время погашенного светодиода, вновь залить скетч и увидеть, что светодиод будет мигать по-другому.

    Прошивка Arduino Pro mini с помощью переходника USB to TTL.

    Об одном из таких переходников на чипе PL2303 я как то уже рассказывал , теперь пришло время его испытать на практике. Существует две версии этого переходника, один без контакта GRN (DTR), как у меня, второй с данным контактом. Те что с контактом, стоят как минимум в два раза дороже тех, что без контакта.

    Если будете использовать переходник без контакта GRN (DTR), подключаете его к Pro mini как на картинке.

    Если у вас будет 3-х вольтовый вариант Pro mini, то контакт VCC платы, нужно соединить с контактом 3V3 USB переходника.

    Когда всё подключено, запускаем Arduino IDE. Выбираем версию платы, процессор и порт, выбираем скетч «Blink», всё так же, как в приведённом выше примере с UNO.

    Для заливки скетча необходимо:
    1. Нажать на кнопку «Вгрузить ».
    2. Начнётся процесс компиляции скетча, о чём можно понять по надписи «Компиляция скетча... ».
    3. Как только данная надпись сменится на «Вгружаем... ».
    4. Кратковременно нажимаем на плате Pro mini кнопку RESET .
    5. Скетч зальётся в плату, об успешном окончании можно будем наблюдать за надписью «Взрузили » и по мигающему светодиоду на плате.

    Если у вас в руках окажется переходника USB to TTL, с контактом DTR (он же GRN, RESET) соедините его с соответствующим контактом RESET на плате Pro mini. В таком случае, при заливки скетча, кнопку RESET нажимать не придётся, плата сама сделает сброс.

    Данный переходник так же как и на PL2303 позволяет прошивать плату Arduino. Схема подключения следующая:

    Существуют так же другие USB переходники для прошивки Arduino Pro mini, например на микросхеме FT232, но ввиду того что этот переходник стоит дороже, я его не беру во внимание.

    Прошивка Arduino Pro mini с помощью программатора на CH341A.

    Программатор на микросхеме CH341A может работать в режиме UART, а значит им можно прошить Arduino Pro mini.

    Программатор может быть представлен в разном визуальном оформлении, основное отличие это цена и наличие дополнительных контактов. Среди этих контактов например, дополнительно может быть разведён контакт на +5В. На том который купил я не было этого контакта, пришлось подпаиваться на плате, что бы получить это напряжение.

    Что бы использовать данный программатор как UART переходник, нужно разомкнуть контакты P/S .

    Для подключения к Pro mini понадобятся контакты на программаторе: Tx , Rx , GND и +5В . Ещё одна особенность этого программатора в том, что на его борту имеется контакт DTR , соединив который с платой Pro mini, отпадёт необходимость нажимать кнопку Reset , при заливки скетча. Для задействования этого контакта, нужно использовать контакт MOSI , в режиме UART он работает как DTR .

    В моём варианте программатора, контакт +5В не был выведен, пришлось это напряжения взять с ножки стабилизатора. В конечном варианте подключение следующее:

    Pro mini CH341A
    Tx Rx
    Rx Tx
    DTR MOSI
    GND GND
    VCC +5В

    Скачать драйвер: Яndex-диск MEGA Облако mail@ru

    После установки драйвера, в "Диспетчере устройств" появится виртуальный COM-порт. Заливка скетчей происходит так же, как и через переходники PL2303 / CH340G, с той лишь разницей, что не нужно нажимать кнопку Reset .

    Следует отметить, данный программатор можно подключать только к 5 вольтовым платам Arduino, поскольку он использует уровни 5 вольт! Это же касается и других устройств, для которых нужен UART переходник.

    Прошивка Arduino Pro mini через COM - порт.

    Напрямую прошить плату через COM – порт не получится, поскольку у COM – порта и Pro mini разные логические уровни. Для их согласования нужно применить переходник на микросхеме MAX232. Сама микросхема не дорогая, но не знаю, стоит ли заморачиваться для прошивки Pro mini сборкой такого переходника, если по цене выйдет не дешевле, чем купить USB переходник на .

    В любом случае представляю схему.

    Что бы убедится в работоспособности этого метода, пришлось самому собрать эту схему на макетной плате. Плата в процессе...

    Загрузить прошивку на этот микроконтроллер можно несколькими способами:

    • Через другую плату ардуино, у которой есть встроенный USB-UART
    • С помощью специального программатора
    • Используя USBasp-программатор

    Последние два способа очень похожи. Они отличаются лишь типом программатора. Поэтому в этой статье мы рассмотрим только прошивку с помощью другой Arduino и с помощью специального программатора.

    Прошивка ардуино про мини с помощью Arduino Uno или Nano

    Для того что бы прошить одну ардуинку через другую, нам понадобятся 2 платы Arduino, соединительные провода, USB кабель и компьютер. Я покажу как прошить Arduino Pro Mini с помощью Arduino Nano, но по этой же инструкции можно использовать и другие платы Arduino, такие как Uno, Mega и тд.

    Для начала надо настроить нашу плату, которая будет выступать в роли программатора. Для этого подключим ее к USB компьютера и перейдем в Arduino IDE. В примерах уже есть готовый скетч, написанный специально для этой цели.

    Выбираем этот скетч и прошиваем. Теперь мы готовы подключать Arduino Pro Mini. Подключаем следующим образом:

    Arduino Nano -> Arduino Pro Mini

    • +5v -> Vcc
    • GND -> GND
    • D10 -> RST
    • D11 -> D11
    • D12 -> D12
    • D13 -> D13

    У меня это выглядит так:



    Теперь мы можем прошить нашу Arduino Pro Mini. Откройте или напишите нужную вам прошивку. Будьте внимательны! Стандартная кнопка загрузки скетча нам не подходит. По умолчанию она заливает прошивку без использования программатора. Таким образом мы прошьем микроконтроллер, который должен выступать в качестве программатора. Чтобы этого не произошло нужно перейти в меню Скетч >> .

    Прошивка Arduino Pro Mini с помощью специального программатора

    Купить специальный программатор можно . Стоит он меньше одного доллара. Если вы часто используете ардуино про мини, то этот программатор сильно упростит и ускорит прошивку.

    Для преобразования USB-to-Serial используется микросхема CH340. Что бы она определялась компьютером правильно необходимо установить специальный драйвер.

    Прошить ардуино с помощью программатора очень просто. Нужно подключить программатор к Arduino Pro Mini следующим образом:

    Arduino Программатор

    • Vcc Vcc
    • GND GND
    • RX1 TXD
    • TX0 RXD

    Подключаем программатор к компьютеру и проверяем, что он не требует драйверов. Если же он определяется как «неопознанное устройство» скачайте и установите драйвер. Его легко найти, набрав в поисковике «*модель вашего программатора* драйвер». Например «CP2102 драйвер». Далее запускаем Arduino IDE. Выбираете модель вашей платы. Потом переходим в меню Инструменты -> Программатор и выбираете ваш программатор. Далее открываете нужный вам скетч и загружаете его с помощью пункта в меню Скетч -> Загрузить через программатор .

    Если ваш программатор не поддерживает программный сброс, то вам придется вручную нажать кнопку перезагрузки на вашей Arduino Pro Mini в момент компиляции скетча. Это нужно сделать сразу как только в Arduino IDE появится строка, что скетч скомпилирован.

    Вот и все. Мы успешно прошили Arduino Pro Mini с помощью программатора.

    Не так давно столкнулся с необходимостью использования Arduino Pro Mini в своем проекте и сразу же встал вопрос как заливать в нее скетч. Конечно продаются различные переходники UART при помощи которых этот вопрос снимается быстро, но в тот момент такого переходника не оказалось под рукой.

    То есть следующим образом:

    Nano -> Pro Mini

    • +5v -> Vcc
    • GND -> GND
    • D10 -> RST
    • D11 -> D11
    • D12 -> D12
    • D13 -> D13

    У меня получилось примерно так:

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

    Далее для прошивки нам необходимо убедиться, что при выставлении прошиваемой платы и программатора у нас используются одинаковые скорости порта, взяв за стандарт скорость из скетча. Для типа платы нужно найти файл boards.txt его путь относительно установленной программы IDE такой: Arduino/hardware/arduino/boards.txt . В нем нам нужно найти раздел параметров для платы Pro Mini выглядит она примерно так:

    Pro5v328.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328

    У меня прошиваемая мини на 5 вольт с микроконтроллером ATmega328, если же у вас иная версия плата то вам нужно найти соответствующий вашей платы раздел.

    Здесь необходимо убедиться что скорость выставлена верная:

    Pro5v328.upload.speed=19200

    Затем зайдем в файл programmers.txt, его путь Arduino/hardware/arduino/programmers.txt и убедимся в верности параметров:

    Arduinoisp.name=Arduino as ISP
    arduinoisp.communication=serial
    arduinoisp.protocol=stk500v1
    arduinoisp.speed=19200

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

    После запуска IDE нам нужно выставить в меню «Инструменты» нашу прошиваемую плату и тип программатора «Arduino as ISP»:

    Теперь у нас все готово для прошивки. Выбираем нужный скетч, для пробы можно выбрать любой из примеров. А теперь особое внимание уделю как прошивать, обычная кнопка для прошивки нам не подойдет так как она предназначена для прошивки стандартным программатором т.е. в Arduino Nano и при ее нажатии мы просто прошьем Nano, что нам обсолютно не нужно.

    Верный путь прошить Pro Mini лежит в меню «Файл» и называется он «Загрузить с помощью программатора», у меня стоит версия IDE 1.5.6-r2 там этот пункт называется «Вгрузить через программатор», по всей видимости трудности перевода в этом релизе, в версии 1.0.5-r2 все в порядке.

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

    Однако не стоит беспокоится, если все собрано верно и спаяно надежно то, достаточно нажать «Reset» на Pro Mini, подождать пару секунд и плата успешно прошъется.

    Благодарю за внимание на этом все, пока.

    Большинство модулей, продаваемых как части конструктора для Arduino, представляет из себя плату с линейным стабилизатором и надписью: «входное напряжение от 3 до 5 Вольт», а сами микросхемы, выполняющие работу модулей, зачастую питаются от напряжения 3.3В, и иногда могут работать при понижении его до 3 или 1.8В.

    Данный модуль поможет оптимизировать размер и увеличить время работы моего GPS-логгера…

    Упакован о Ардуино в пакетик со штрих-кодом:



    Может, это оригинальный модуль?


    Светодиод индикации питания зелёного цвета, #13 - красного:

    Зачем нужен именно этот Ардуино - на 3.3В, а не как все - на 5В по $1.4? Всё хорошо, когда нам надо показать чудо, происходящее при подключении устройства к Ардуино: мы покупаем модули, цепляем их к общему источнику на 5В, загружаем скетч - и всё блестит и пыхтит. Но при разработке более-менее используемых устройств, приходится задумываться и об энергоэффективности, и о компактности, - в результате, из схем вылетает половина лишних блоков.

    Как видно, процессор Atmega328 данного модуля может работать на напряжении 2.7В, причем на стабилизаторе напряжение практически на падает; для сравнения, на 5-вольтной Ардуино (из предыдущей версии GPS-логгера) у меня наблюдалось напряжение 3.6 В при питании от 5В на входе RAW.

    Кстати, с какой скоростью он выдаёт информацию? У меня был файл с логом, за две минуты набегает 5.42 КБ (4336 Кб) ~ 37 Кб/с, если я не ошибся, то скорость почти в 15 раз меньше.

    Те же проводки, питание соединяем без стабилизатора - напрямую к VCC, TX -> 2:


    Скрипт посимвольно читает из программного последовательного порта и пишет в аппаратный, к которому мы подключили программатор и смотрим, что выдается:
    #include // Для использования программного порта. SoftwareSerial mySerial(2, 3); // Инициализируем 2 контакт Arduino. char ch; // Буфер. void setup() { Serial.begin(9600); mySerial.begin(9600); } void loop() { // Если прочёлся символ из программного пота, if ((ch = mySerial.read()) != -1) Serial.write(ch); // пишем его в аппаратный. }
    В «Мониторе порта» приходят строки характерные для GPS-модуля:

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


    переписал скрипт -

    почти готовый GPS-логгер

    #include #define SER_SP 9600 // Скорость последовательного порта. File flDataFile; // Файл для записи GPS-строк. char chGpsLint; // Переменная для хранения GPS-строки, byte btReaded; // её длина. void setup() { Serial.begin(SER_SP); // Настраиваем порт. if (!SD.begin()) // Если не получается начать работать с картой, delay(3600000); // ничего не делаем час. flDataFile = SD.open("-NKK-LOG.GPS", FILE_WRITE); // Файл для записи: if (!flDataFile) // если не получается открыть delay(3600000); // ничего не делаем час. } void loop() {} void serialEvent() { // Авто. вызываетcя при поступлении новых данных. while (Serial.available()) { // Пока в последовательном порту есть данные, btReaded = Serial.readBytesUntil("\n", chGpsLint, 128); // читаем строку, if (btReaded > 45) // если её длинна не менее стольки символов, flDataFile.write(chGpsLint, btReaded); // пишем данные в файл. } flDataFile.flush(); // Сбрасываем файловый буфер. }

    Ловит текст по прерыванию. Изображённое на фото выше можно уже подключать к аккумулятору и использовать, но нужно доделать изделие!

    Для монтажа было решено использовать , но пережде, чем монтировать, не лучше ли подумать, как будут располагаться элементы - Fritzing в помощь!


    Самое сложное было - дорисовывать плату, но лучше потратить время у экрана компьютера, чем еще больше с паяльником, выбирая оптимальное расположение элементов.
    «Хижина» слева - адаптер MicroSD->SD карт памяти;
    светодиоды справа вверху: 3 для каданса и один для индикации состояния устройства (сбой при обращении к карте, сбой при создании файла, ожидание данных с GPS), сопротивление будет SMD на землю;
    GPS-модуль не изображён: он располагается с обратной стороны платы;
    там же будет и батарея питания;
    справа внизу - jack-3.5 для подключения геркона, в корпусе возле его расположения нужно будет просверлить отверстие.
    Приступил к сборке, размер платы оказался как раз по размеру корпуса. Здаётся мне, я её под этот корпус и выбирал… В креплении модулей внутри корпуса, мне поможет термоклей! Сначала хотел лепить батарею к корпусу:


    Но особенности конструкции определи, что её лучше располагать на плате:


    Затем к плате (так, чтобы ложиться рядом с батареей) был прикреплен GPS-модуль и его антенна, из-за нехватки места, пришлось снять с антенны «экран»:


    Для пущей удобности извлечения, к плате была припаяна «ручка»:


    Изначально я планировал крепить модуль Ардуино через разъёмы, но т.к высоты корпуса не хватало, и больше пилить или резать ничего не хотелось, решил припаять его к плате прикольным способом:


    Впервые такой монтаж платы на плату я увидел в Bluetooth-модуле - получилось прикольно. Единственный минус - безболезненно снять обратно получится только феном. Для перепрошивки напаяю ещё контактов - плата большая.
    Правильно припаять адаптер карты памяти мне помогла иллюстрация, приведённая выше , 2 раза перепаивал, на третий запомнил расположение контактов =)


    Термоклеем фиксируем для удобства:

    ^-под адаптером расположены контакты питания GPS-модуля, соединяющиеся перемычкой: через перемычку питание происходит от линейного стабилизатора ардуино. При подключении к GPS-модулю по UART, перемычку можно снять чтобы Ардуино не перехватывала интерфейс.


    После включения, GPS выдал время по Гринвичу на через 80 секунд, а данные о позиции - через 14 минут! Много, но это только с балкона.
    После коммутации и припаивания светодиодов и конденсатора к RAW (28uF, на всякий случай, найден «лишних» деталях):

    ^- для подключения к программатору на плате торчат контакты.
    С обратной стороны упомянутая выше перемычка позволяет отключать GPS-молуль при работе с Ардуино или Адруино при работе с GPS-модулем через UART-программатор:

    ^- отдельно выведены контакты для удобства подключения к GPS.

    Крышка, в которой закрепляется плата, накладывается на дно и фиксируется (пока резинками из камеры). Дно, в свою очередь, крепится на руль, для этого имеется 4 отверстия в вершинах прямоугольника:


    Ряд отверстий с краю нужен для светодиодов индикации, но они еще будут настраиваться: либо поправлю светодиоды внутри, либо заклею отверстия прозрачным термоклеем, пока не решил. С лицевой стороны корпуса приклеена :


    Дно крепится на руль:


    Снизу цепляется «крышка» (и превращается в дно):


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

    Три синих светодиода-индикатора каденса загораются по такой схеме:
    [Светодиоды] [ * * * ] 130 + [ * * ] 120 [ * ] 110 [ * * ] 100 [ * ] 90 [ * * ] 80 [ * ] 70 70 - [Каденс]

    Из того, «что предстояло сделать»:
    - после , было принято решение отключать программно;
    - модуль повышения напряжения убран, потребляемый ток - в районе 95-125 мА - это почти в 2 раза меньше, по сравнению с и там не было светодиодов, каждый из которых потребляет 10-15 мА;
    - SD подключена напрямую;
    - расположение светодиодов и элементов внутри корпуса конфликтует со стремлением сделать универсальную/разборную систему на плате - в результате корпус остался тем же и батарею в нём почти некуда воткнуть =)

    Исходный код

    /** * По многочисленным просьбам * публикую долгожданный исходник, * без индикаторов каденса. * Один светодиод (17) горит в начале работы * до получения первой NMEA-строки длиной 70 символов. */ #include #define FILE_NM "-NKK-LOG.GPS" #define SER_SP 9600 #define RED_ON PORTC |= 0b000001000 // Зажигаем или #define RED_OFF PORTC &= 0b111110111 // тушим красный светодиод. volatile word wTotRev, // Общее количество оборотов педалей; wTotRevLastWtd = 0; // последнее, записанное в лог. File flNMEA; // Файл для записи GPS-строк. char chNMEA; // Переменная для хранения GPS-строки, byte btReaded; // её длина. bool bWaitingGps = true; // Флаг ожидания первых актуальных данных GPS. void setup() { delay(800); // При включении возможен дребезг контактов питания. pinMode(17, OUTPUT); // Светодиоды состояния устройства. while (!SD.begin()) { // Пока SD-карта не обнаружена, RED_ON; delay(150); // мигаем. RED_OFF; delay(500); } flNMEA = SD.open(FILE_NM, FILE_WRITE); // Проверка работы с файлами. if (!flNMEA) // Если ошибка при открытии файла while (true) { // мигаем по 2 раза. RED_ON; delay(150); RED_OFF; delay(150); RED_ON; delay(150); RED_OFF; delay(500); } Serial.begin(SER_SP); // Стартуем работу с GPS-датчиком. RED_ON; } // setup() // void loop() { } // loop() // void serialEvent() { // Автоматически вызываетcя при поступлении новых данных. while (Serial.available()) { // Пока в последовательном порту етсь данные, читаем. btReaded = Serial.readBytesUntil("\n", chNMEA, 128); if (bWaitingGps) { // Если GPS еще не выдаёт актуальные данные, if (btReaded > 70) { // проверяем их. bWaitingGps = false; RED_OFF; flNMEA.write(chNMEA, btReaded); } } else if (btReaded > 0) // Если GPS ранее выдал актуальные данные, flNMEA.write(chNMEA, btReaded); // пишем в файл. } flNMEA.flush(); // Сбрасываем файловый буфер. } // serialEvent() //

    Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

    Планирую купить +21 Добавить в избранное Обзор понравился +16 +36