Переход с Arduino IDE на PlatformIO IDE на базе Microsoft Visual Studio Code. Что нужно знать.

Несколько лет тому назад я подарил сыну набор «Матрёшка» с электронными компонентами и микроконтроллером Arduino Uno. Набор сопровождался скромным, но толковым учебным пособием, с которым можно не только освоить основы электроники, но и попытаться научиться программировать в среде Arduino. И хотя по первому образованию я радиотехник, а по второму инженер в ИТ, но мне было жутко интересно проходить все уроки «Матрешки» вместе с молодым поколением. Постепенно я втянулся и по дому начали плодиться многочисленные системы «Умного дома», различные датчики, улучшители и все прочее. А затем хобби перекинулось и на профессиональную сферу деятельности. И вот уже по рабочим вопросам начали появляться устройства автоматизации, измерительно-контрольные приборы и прочая уникальная незаменимая электронная утварь.

Но время идет и постепенно проекты начали усложнятся. В скетчах Arduino уже не десятки, а сотни строк. Количество переменных не влезает на один экран, а отсутствие отладчика временами приводит к нервному истощению. И в конце концов, было принято окончательное решение по миграции с Arduino IDE на что-то более удобное в плане разработки. Мой выбор почти сразу пал на PlatformIO IDE, причем перешел я на него только со второй попытки. Первая оказалась неудачной, поковырявшись несколько часов с PlatformIO я пришел к выводу, что в Arduino IDE все делается куда легче и быстрее. Но затем, спустя несколько месяцев я выкроил еще несколько часов своего драгоценнейшего времени для того, чтобы все же разобраться с PlatformIO IDE и постараться понять ее, а затем и полностью перейти на эту интегрированную систему. В качестве альтернативы я рассматривал Atmel Studio 7… Но обо всем по порядку.

Читать далее ...



Прошивка AVR (ATMEGA328) различными программаторами (в том числе и из-под Arduino)

Мир «Arduino» чрезвычайно разросся за последние несколько лет. Еще, казалось бы, совсем недавно возможность собрать что-то из цифровой электроники своими руками представлялось фантастической идеей, воплотить которую могут, пожалуй, только гении, то сегодня соединить несколько датчиков между собой и записать программу в микроконтроллер может почти любой с руками растущими чуть выше пояса. В сети полно ресурсов ломящихся от мегабайтов полезных статей о том, как запрограммировать тот или иной алгоритм под Arduino (тут, конечно, стоит понимать, что в экосистему Arduino попадают далеко не только оригинальные платы от итальянцев). А вот если вам захочется копнуть немного дальше и глубже, то вы столкнетесь с информационным вакуумом, отделяющим мир обычных любителей от мира продвинутых электронщиков. И, казалось бы, между этими двумя мирами — настоящая пропасть, перешагнуть через которую отважится не каждый. Но я попробовал, получилось и возникло желание как-то зафиксировать свой опыт, дабы в последствии им можно было бы делиться с окружающими или же вернуться к записи и освежить воспоминания, если вдруг что-то позабылось.

Итак, в качестве хобби я решил разработать для своей компании электронное устройство с «сердцем» в виде микропроцессора ATMEGA328P. Да-да, именно на основе той микросхемы, что применяется в Arduino. Только вот никакой обвязки вокруг микросхемы нет. В ней некуда подключать USB, полностью отсутствует и внешний стабилизатор питания, не говоря уже о каких-либо индикаторных светодиодах. И это чудо как-то нужно программировать, как-то заливать в него свою прошивку, как-то оживлять. Я уделил данному вопросу некоторое внимание в своей статье по детальному анализу среды разработки Arduino «Arduino IDE: разбираемся с меню Tools и некоторыми другими функциями», а в этой статье я лишь продолжу изыскания по своим наработкам.

atmel studio, blink, arduino, assempler, c++, c/c++, open, file, version7

Интерфейс Atmel Studio с импортированным Blink из Arduino

Прошивать ATMEGA можно при помощи Atmel Studio, специальной среды разработки для AVR. Среда обладает неплохим набором инструментов для полноценной разработки чего-либо под фирменные микроконтроллеры. В 7-й версии «из коробки» доступно создание проектов на С, С++ и на Assembler. Более того, возможно создание проекта из скетча Arduino. При всем при этом у разработчика в руках оказывается отладчик, с возможностью дизассемблирования кода, просмотра всех регистров и любого уголочка памяти микроконтроллера. Прямо-таки золотая мечта любого ардуиниста. А если учесть, что программировать и отлаживать код, в большинстве сценариев, можно на эмуляторе микроконтроллера, то очевидно, что Atmel Studio кроет Arduino IDE с заметными преимуществами. Но… Atmel Studio — профессиональный инструмент и для подавляющего большинства энтузиастов окажется слишком затратным по времени для изучения. Поэтому дальше речь пойдет больше про Arduino IDE в связке с AVRDUDE. Тем не менее, если вы вдруг, после знакомства с Atmel Studio почувствовали нестерпимый зуд от желания познакомиться с этой IDE поближе, то You Are Welcome. А мы же продолжим далее.

Читать далее ...



Arduino: один скетч под несколько платформ

Мир DIY на основе экосистемы Arduino цветет и пахнет. Количество плат, совместимых с Arduino становится все больше и больше. Какие-то платы полностью совместимы с Atmel AVR, какие-то имеют существенные отличия. Да и среди микроконтроллеров AVR могут быть значительные несоответствия, которые необходимо учитывать, если требуется написать скетч или библиотеку, которые должны без проблем работать на разных аппаратных платформах.

robot, франкенштейнРазличия между микроконтроллерами и платформами обычно заключается в следующих моментах (список далеко не полный):

  • Конкретные пины у разных микроконтроллеров могут иметь различные функции. К примеру, на одном микроконтроллере пин за номером 1 умеет делать PWM, а на микроконтроллере другого типа нет.
  • Могут различаться разрядности АЦП (используем для analogRead) и ЦАП (используем для analogWrite, т.е. для ШИМ). На одном микроконтроллере разрядность 8бит (изменение от 0 и до 254), на другом 10бит (измерение от 0 и до 1023), а на третьем 12бит.
  • Могут кардинально различаться даже способы указания пинов. Так, для Atmel AVR применяется просто числовое указание пинов 1, 2, 3 и т.п. А для экосистемы ESP используется наименование пинов D1, D2, D3 и т.п.

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

Читать далее ...



Arduino IDE: разбираемся с меню Tools и некоторыми другими функциями.

Итальянцы молодцы. Запустили в мир DIY настоящего монстра. С появлением экосистемы Arduino весь рынок цифрового DIY получил мощнейший толчок. Тысячи, сотни тысяч, миллионы пользователей принялись покупать оригинальные и совместимые платы для их последующего программирования и использования в своих поделках. Причина такой популярности в первую очередь связывают с низким порогом для входа в эту среду. Вам не нужно тратить много денег на приобретение плат: открытый стандарт дал дорогу на рынок множеству последователей и копировщиков. Вам так же не стоит сильно заморачиваться над программированием: поставляемая «в комплекте» Arduino IDE упрощена настолько, насколько это возможно. Пользователь просто пишет код и не задумывается о настройках компилятора, о том, что программировать при помощи Arduino IDE можно разными программаторами, а иногда и вообще голые микросхемы.

И вот, наступает момент, когда стандартная Arduino IDE становится тесновата, а ее неудобство начинает просто выбешивать, особенно, если пользователь знаком с более продвинутыми средами разработки по другим платформам и языкам программирования. Кто-то начинает мигрировать на что-то более интересное, например, на Atom или VS.Code в смеси с PlatformIO, а кто-то старается выжать из Arduino IDE все, что только можно.

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

Читать далее ...



Добываем IPv6 из МГТС с ZTE F660 и Keenetic

Проблема с конечным количеством IPv4 адресов нахлынула на человечество в начале текущего тысячелетия. Бурное развитие компьютеризации, множество гаджетов и проникновение интернета во все дома и квартиры привели к тому, что для большинства домашних и корпоративных пользователей использование глобальной сети превратилось из обоюдного обмена в одностороннее скачивание. Причина тому исчерпание свободных IPv4 адресов глобального сегмента. Без "белого" или "публичного" IP-адреса ваш компьютер не будет доступен извне. Выйти в сеть и открыть страничку с сайта он сможет, а вот подключиться к нему из другого города без посредника уже никак. И все потому, что провайдер выдаст не белый (и пушистый) адрес, а "серый". Работать с которым можно только в "пользовательском" режиме. Ни тебе свой собственный web-сервер установить, ни игровой сервер запустить. Тоска в общем.

Однако, мудреные мужи долго думали и еще в прошлом веке выдали на гора спецификацию следующего поколения глобальной сети. Имя ей IPv6. Если не углубляться в подробности, то в новой версии IP разработчики упростили маршрутизацию пакетов по сетевой инфраструктуре, с другой стороны в адресное пространство заложили такое неимоверное количество адресов, что на каждого жителя земли их приходится несколько миллионов.

Читать далее ...



System error 1219 has occurred.

Вычислительная техника всегда полностью детерминирована. В ней нет полурешений или частичных ответов. Есть только нули, есть только единицы. И если что-то не работает, то оно не работает всегда и по вполне выявимой причине. Примерно так полагали отцы-основатели храма компьютера. А потом в вычислительном блоке завелись тараканы, маленькие такие жучки, которые стохастически бегали и замыкали контакты, что приводило к ошибкам, возникающим случайным образом, к ошибкам, которые не укладываются в детерминированную, жесткую модель двоичной вычислительной техники.

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

Перфолента винтажная

Перфолента винтажная

Именно о такой «ошибке» и пойдет дальше речь. Действие происходит в среде операционной системы Windows 10. Разрядность или редакция системы не имеет значения. При попытке подключения к сервису Samba удаленного сервера в локальной сети на Linux при использовании команды net use возникает ошибка множественного доступа:

System error 1219 has occurred.

Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again.

Читать далее ...



Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция.

Однажды, в студеную зимнюю пору, возникла у меня потребность в открытии некоторых ресурсов внутреннего сервера частной сети внешним пользователям. Сервер сам удобно расположился в скромной серверной на краю промышленной зоны, в предместьях небольшой подмосковной деревушки. Где из всего многообразия способов подключения к сети Интернет, доступен только 4G модем. Да и тот, изредка пытается перейти на сеть 3G, несмотря на могучую внешнюю направленную антенну.

В довесок к нестабильной связи, российские сотовые операторы, не желают раскошеливаться на современное аппаратное и программное обеспечение и, как следствие, пользователям доступны только IPv4 сети. Никаких IPv6 нет и в помине, да и не планируется в ближайшее столетие. Плюс все это находится за NAT провайдера. Другими словами, пробраться извне к серверу, расположенному в локальной частной сети, которая подключена к глобальной сети через частную сеть сотового оператора — задача, невыполнимая без использования посредника обладающего реальным IP-адресом. Если свой NAT на своем роутере еще можно как-то настроить для подключения извне, то с NAT провайдера поделать решительно ничего нельзя.

сервер, стрелка, молния, крей, модем

Типичная топология подключения в промзоне

Читать далее ...