I try to loaded standard firmata on my arduino but there is an error, if i try to load firmta arduno says error during compilation. if I try to connect arduino whit s4a, on connect arduino, COM4, s4a says: cuold not talk to arduino in port 4,che if firmata is loaded, I also try whit the other port but nothing…
what I can do?
Hi @SUperMattew043,
First of all. If you can’t upload a Firmata firmware, don’t try to connect the board to Snap4Arduino, because it has no sense.
You must check the «compilation error». If you are using the StandardFirmata (no hacked) the compilation will have to be ok. Maybe you haven’t choose the right board…or maybe you are using a board not supported by firmata? Anyway, you can check the complete error message.
Can you send us the complete error message from the Arduino IDE? Also, what board model are you using?
Прежде чем писать программу на Python для управления Arduino, вы должны загрузить эскиз Firmata, чтобы использовать этот протокол для управления платой.
Эскиз доступен во встроенных примерах Arduino IDE. Чтобы открыть его, откройте меню «Файл» (File), затем «Примеры» (Examples), затем Firmata и, наконец, StandardFirmata:

Скетч будет отображен в новом окне IDE. Чтобы загрузить его в Arduino, вы можете выполнить те же действия, что и ранее:
- Подключите USB-кабель к ПК.
- Выберите соответствующую плату и порт в IDE.
- Нажмите «Загрузить».
После окончания загрузки вы не заметите никаких действий на Arduino. Для управления им все равно нужна программа, которая может связываться с платой через последовательное соединение.
Для работы с протоколом Firmata в Python вам понадобится пакет pyFirmata, который вы можете установить с помощью pip:
$ pip install pyfirmata
После завершения установки вы можете запустить аналогичное приложение Blink, используя Python и Firmata:
import pyfirmata
import time
board = pyfirmata.Arduino('/dev/ttyACM0')
while True:
board.digital[13].write(1)
time.sleep(1)
board.digital[13].write(0)
time.sleep(1)
Вот как работает эта программа. Вы импортируете pyfirmata и используете его для установления последовательного соединения с платой Arduino, которая представлена объектом board в строке 4. Вы также конфигурируете порт в этой строке, передавая аргумент pyfirmata.Arduino(). Вы можете использовать Arduino IDE, чтобы найти порт.
board.digital — это список, элементы которого представляют цифровые контакты Arduino. Эти элементы имеют методы read() и write(), которые будут читать и записывать состояние выводов. Как и большинство встроенных программ для устройств, эта программа в основном состоит из бесконечного цикла:
- В строке 7 включен цифровой вывод 13, который включает светодиод на одну секунду.
- В строке 9 этот вывод отключен, что приводит к выключению светодиода на одну секунду.
Теперь, когда вы знаете основы управления Arduino с помощью Python, давайте рассмотрим некоторые приложения для взаимодействия с его входами и выходами.

Firmata — это базовый протокол, который предоставляет возможность для коммуникации между микроконтроллером и ПО, работающим на компьютере. Любое программное обеспечение на любом компьютере, которое совместимо с Serial-соединением может обмениваться данными с микроконтроллером, используя Firmata. Firmata дает полный доступ к Arduino прямо из ПО и исключает процессы модификации и загрузки скетчей Arduino.
Используя протокол Firmata, разработчик может загрузить скетч, который поддерживает протокол с клиентом Arduino. После этого, появляется возможность писать собственное ПО на управляющем компьютере и выполнять сложные задачи. Это ПО передает команды через последовательный порт в плату Arduino, по протоколу Firmata, что позволяет изменять логику работы программы на управляющем компьютере, не сбрасывая Arduino.
Более подробно узнать о протоколе Firmata и его последней версии и скачать тестовое ПО можно на официальном сайте.
Загрузка скетча Firmata в плату Arduino
Лучшим способом начать тестировать протокол Firmata является загрузка стандартной программы Firmata в плату Arduino и использование тестового ПО на управляющем компьютере.
Реализация протокола Firmata требует последней версии прошивки Firmata и вам не нужно беспокоится по поводу ее написания. Arduino IDE уже имеет стандартную версию прошивки Firmata.
Для загрузки программы в плату Arduino:
- В Arduino IDE открываем меню → → →

- Компилируем и загружаем его в свою плату Arduino
Тестирование протокола Firmata
Существует множество способов для коммуникации платы Arduino с управляющим компьютером, используя протокол Firmata. Например, можно написать собственную программу на Python, используя библиотеку, поддерживающую этот протокол или же воспользоваться уже готовой тестовой программой. Пока пойдем самым простым путем: используем готовое тестовое ПО, загрузив его с официального сайта Firmata.
На главной страничке сайта Firmata находим раздел Firmata Test Program и загружаем инструмент под названием firmata_test для своей операционной системы.
Подключаем свою плату Arduino и запускаем приложение firmata_test. В открывшемся окошке в меню Port выбираем тот порт, к которому подключена Arduino.

Как только вы выберете соответствующий порт Arduino, на экране появится окошко со множеством кнопок и меню выбора с названиями пинов.
Я использую Arduino Mega 2560, поэтому доступных пинов у меня достаточно много. Это цифровые пины с Pin 2 по Pin 53 и аналоговые пины с Pin 54 по Pin 69.

В первом столбце указан номер пина вашей платы Arduino, во втором столбце напротив названия каждого пина можно выбрать режим его работы: Input, Output, Analog, PWM, Servo (доступный режим зависит от конкретного вывода). В третьей колонке можно задать состояние этого пина.

Для проверки найдем пин под номером 13 (к нему подключен встроенный в плату светодиод) и зададим ему состояние High. Светодиод должен загореться. Теперь вернув состояние этого пина в Low можно вновь выключить светодиод. Аналогично можно изменять состояние любых пинов.
Итак, нам удалось изменять состояние любого пина в реальном времени, используя эту простенькую тестовую программу. В реальных приложениях нам необходимо использовать методы Firmata в собственном коде, который в дополнение к изменению состояния выводов также включает некоторую логику и алгоритмы, взаимодействие с другими компонентами и так далее. Я собираюсь использовать язык программирования Python для этих приложений. Но это будет другая история.
Следите за новостями. Продолжение уже скоро!
Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.
Визуальное программирование для детей. Выбираем платформу обучения

В нашем постиндустриальном обществе в первую очередь ценятся: уровень образования, обучаемость, профессионализм и способность творческого подхода в решении задач. Так как большинство современных профессий, в той или иной мере, связано с компьютерной техникой и автоматикой, то вполне логично, что при обучении детей особое внимание необходимо уделять компьютерной грамотности. При должном подходе к обучению и интересе, со стороны ребенка, стоит обратиться к углубленному изучению информационных технологий и программированию в частности.
С каждым годом возможности компьютерной техники непрерывно растут и даже взрослому тяжело обучаться программированию, что же говорить о детях? Как их к привлечь к программированию? Давайте разбираться в этом.
У большинства людей, когда они слышат слово — программист, перед мысленным взором сразу же возникает образ быстропечатающего человека, сидящего перед экраном монитора по которому пробегает множество непонятных букв и символов. Но это только отчасти правда. Действительно, даже не большая программа может занимать несколько десятков печатных страниц кода. Но программирование это не всегда рутина, особенно заметно на этапе обучения.
Давайте подумаем как обычно можно заинтересовать ребенка какой-либо профессией? Конечно же через игры и игрушки, соответствующие изучаемой профессии. Если для обычных профессий вполне подойдут конструкторы или наборы инструментов, то при обучении программированию без компьютера и специализированных программам практически не обойтись.
Давайте найдем специализированные программы, применяемые для обучения детей программированию.
Scratch
Одним из лучших инструментов для обучения детей и подростков программированию считается Scratch (Скретч) — визуальная событийно-ориентированная среда программирования. Он появился в 2007 году и завоевал миллионы поклонников по всему миру. Скретч специально разработан для обучения программированию. Однако в первую очередь он ориентирован на создание визуальных проектов в самом приложении. Например, интерактивных видео и игр. В части управления роботами и программирования конструкторов приложение поддерживает исключительно конструкторы Lego и micro:bit.
Однако наиболее популярной базой, для большинства роботизированных конструкторов, является Arduino и ардуино-совместимые платы. Поэтому нам нужно найти универсальную среду программирования или хотябы совместимую с Arduino платами.
Scratch for Arduino (S4A)
Scratch for Arduino, или как чаще ее называют S4A — модификация среды Скретч позволяющая работать с платами ардуино. Давайте найдем и изучим ее.
Прямых ссылок с официального сайта Скретч на нее нет. Идем в поиск. По запросу «S4A» поисковик уверено выдает нам сайт s4a.cat.

Изучение сайта наводит на мысль о его заброшенности: версия сайта 2015 года, последняя статья выложена в феврале 2016, версия программы для Windows датирована концом 2014 года.
Установка и запуск
На сайте предлагаются версии программы для:
-
Win OS (версия 1.6);
-
Mac OS (версия 1.6);
-
Linux (Debian) (версия 1.6);
-
Linux (Fedora) (версия 1.5);
-
Raspbian (Debian для RaspberryPi) (версия 1.5).
Архив занимает 27МБ, а после установки программа займет 53МБ дискового пространства.

Для привязки платы к программе потребуется установить Arduino IDE и загрузить на плату скетч S4AFirmware16.ino (размещен на сайте). S4A переведена на 40 языков, в том числе и на русский. Имеет простой и понятный дизайн с минимальным функционалом. Программа не имеет дополнительных библиотек с блоками управления. Однако есть библиотеки примеров, звуков и спрайтов низкого качества.
Программа работает только в онлайн режиме, то есть скетч выполняется на компьютере, а Ардуино выполняет посылаемые ей команды. Это означает, что записать программу на плату и использовать ее в автономном режиме не выйдет.
Однако, S4A не всегда корректно ведет себя при работе с неоригинальными платами.
Snap4Arduino
Если Скретч – разработка массачусетского технологического института, то Snap! (или BYOB) – это его модификация выполненная Университетом Беркли. Ключевым нововведением стало добавление в программу возможности создания пользовательских блоков. Это позволило разработать сообществом множество библиотек для управления различными модулями и платами.
По запросу «Snap4Arduino» и нам выдает ссылку на сайт snap4arduino.rocks.

Этот сайт выглядит свежее. Однако здесь язык сайта также только английский, но найти ссылки на скачивание программы, примеры и форум сообщества не составляет сложности.
Актуальная версия программы на сайте 6.2 от 09.01.2020.
К установке предлагаются версии для:
-
Windows (32-bit и 64-bit);
-
Mac OSX (64-bit);;
-
GNU/Linux (32-bit и 64-bit);
-
портативная версия для Windows;
-
плагин для Chrome и Chromium.
Мобильная версия для Android представлена «сырым» дистрибутивом и его разработка временно приостановлена.
Установка и запуск
Установка не примечательна и заострять внимание на ней нет смысла. Дистрибутив для 64-битной версии Windows «весит» 163МБ до установки и 350МБ – после.
Для работы с программой нам понадобится плата с встроенной прошивкой от Firmata. Если такой нет, то придётся воспользоваться Arduino IDE для загрузки прошивки в плату. Для этого скачиваем и устанавливаем программу с официального сайта www.arduino.cc. По окончании установки подключаемся выбрав в соответствующем меню тип платы и порт.

Далее открываем вкладку «Library Manager» или проходим в меню Tools – Manage Libraries… Набираем в поиске Firmata и устанавливаем библиотеку «Firmata by Firmata Developers».

Теперь во вкладке «Уроки» находим нужный скетч: File → Examples → Firmata → StandardFirmata

Открывшийся скетч загружаем в нашу Arduino-плату и по окончанию установки открываем установленный ранее Snap4Arduino. Выбираем вкладку «Arduino», кликаем по кнопке «Подключится к Arduino» и выбираем порт. Если все прошло успешно, то вы увидите соответствующие уведомления.

Для проверки работоспособности пишем простую программу мерцания встроенным светодиодом, расположенном на 13 пине нашей платы.

Нажимаем на зеленый флажок и наблюдаем работу скетча.

Все отлично работает.
К особенностям работы с Snap4Arduino можно отнести:
-
поддержка работы платы только в online-режиме;
-
возможность замедления работы выполнения скетча, что позволяет отследить работу программы и выявить наличие ошибок;
-
возможность сохранения скетча как в облаке, так и на ПК;
-
возможность копирования как одного, так и нескольких блоков скетча;
-
есть несколько примеров программ для работы с сенсорами и графикой.
Также в программу включено множество библиотек с блоками для:
-
итерационных и композиционных вычислений;
-
работы со списками, текстом, музыкой и координатами;
-
работы с базами данных, диаграммами и анимацией;
-
частотными распределениями, веб-сервисами (https) и другие.
К сожалению программа не имеет офлайн режима, дополнительные блоки не русифицированы, а графический интерфейс давно не обновлялся и выглядит скудно. Меню программы не интуитивно и часть настроек не ясна.
Однако множество учебников, примеров и иной обучающей информации делают Snap4Arduino достаточно привлекательной платформой. При этом программа поддерживает работу с платами SP8266 и NodeMCU, а также Picaxe, micro:bit, Lego WeDo, Boost и ряд других конструкторов.
Программа вполне подойдет для дистанционного управления ардуино-совместимыми роботами, конструкторами и собственными проектами на их базе.
МакеBlock
Заглянем на официальный сайт mBlock.

Сайт производит более приятное впечатление. Отличный дизайн в спокойном детском стиле. Присутствует анимация. Отдельно стоит отметить возможность выбора языка сайта. Доступны английский, китайский и японский языки.
Здесь также найти вкладки «Download» и «Community» не затруднительно.

Установка и запуск
Авторы предлагают к установке следующие варианты дистрибутивов:
-
Win OS (для версий Windows 7 — Windows 10 (64-bit);
-
Mac OS (версия 10.12 и старше);
-
веб-версия (для работы с ней требуется предварительная установка драйвера mLink);
-
версия для Chromebooks;
-
Windows XP;
-
для мобильных устройств (для Android 6.0 и выше (только ARM) и iOS 10.0 и выше).
Последняя версия программы для Windows — 5.3.5 от 18.06.2021 занимает 250МБ, а после установки — 888МБ.
При установке программы нам предлагают установить драйвер, для поддержки плат на базе контроллеров CH340/CH341.

mBlock предлагает набор библиотек для почти 150 видов плат, конструкторов и роботов. По умолчанию установлено расширение для приставки CyberPi, но можно ее удалить и добавить ту или иную плату из множества доступных.
В программе доступны к выбору один из 27 языков, в том числе и русский. Многие, наиболее популярные, библиотеки полностью переведены на русский. Остальные — на английском и китайском языках.
Ключевой особенностью mBlock является возможность работать с платами в двух режимах: онлайн – «Жить» и офлайн – «Загрузить в». Для работы в онлайн-режиме программе требуется установки прошивки (скетча) на плату, однако эта процедура выполняется без необходимости установки Arduino IDE.
Подключаем плату к компьютеру через USB кабель. Выбираем порт. При этом появляется желтая кнопка: «Обновление». После нажатия которой нам предлагается обновить прошивку на плате, т.е. загрузить на нее управляющий скетч.

После загрузки скетча повторно подключаем нашу плату и проверяем ее работу.
В режиме «Жить» пишем простую программу мерцания встроенным на плате светодиодом. Затем нажимаем кнопку «Загрузить», внизу экрана, и любуемся результатом.
Особенности работы с mBlock:
-
отличный дизайн;
-
отсутствие необходимости установки Arduino IDE;
-
возможность копирования нескольких блоков скетча (выбранного и последующих за ним);
-
возможность программирования как блоками, так и в классическом виде;
-
возможность просмотра составленной блоками программы в формате языка С (только режим «Загрузить в»);
-
возможность сохранения скетча как в облаке, так и на ПК;
-
комментарии к блокам;
-
большая база примеров и расширений.
ArduBlock
Еще один представитель программ блочного программирования ArduBlock. Разработана российским инженером программистом Петровым В.Н. Программа абсолютно бесплатна, имеется сообщество в ВК, Instagramm и канал на YouTube. Автор активен: выкладывает уроки и обеспечивает поддержку.
Переходим на официальный сайт:

Сайт выполнен в традиционных цветах ардуино. Предлагается два языка на выбор: русский и английский.
Здесь же автором размещено: справка, ссылки на модули (Aliexpress) и его же учебники.
Установка и запуск
К установке предлагаются варианты дистрибутивов:
-
Windows 8…10;
-
Mac OS;
-
веб-версия.
Актуальная версия программы 2.0. По ссылке на WinOS версию скачивается архив на 262МБ в котором включены все необходимые программы:
-
Arduino IDE 1.8.5;
-
драйвер CH341SER, для китайских плат;
-
скрипт Elevate для соединения ArduBlock с Arduino IDE;
-
сама программа ArduBlock.
Последовательность установки описана в текстовом файле находящимся в скачиваемом архиве. Сама программа ArduBlock не требует установки и замает 400МБ дискового пространства. Взглянем на ее.

Из особенностей стоит отметить:
-
приятный дизайн;
-
простое меню;
-
полная русификация программы;
-
справка для каждого блока со схемами и маркой подключаемого модуля;
-
монитор порта;
-
отображение кода программы с возможностью его сохранения в формате *.ino.
К недостаткам:
-
отсутствие спрайтов и работы с графикой в программе;
-
отсутствие примеров;
-
работа с платами только в офлайн режиме;
-
поддержка только плат Arduino.
ВЫВОДЫ
Родоначальником всех рассмотренных нами программ является Scratch и хотя, на первый взгляд, все они достаточно похожи все же давайте составим сводную таблицу из их ключевых особенностей, а затем дадим общую оценку каждой программе.
|
S4A |
Snap4Arduino |
mBlock |
ArduBlock |
|
|
Язык сайта |
Английский |
Английский |
Английский, китайский, японский |
Русский, английский |
|
Язык программы (в том числе русский), шт. |
40 |
44 |
27 |
2 |
|
Справка по работе с программой |
Английский |
Английский |
Английский |
Русский, английский |
|
Необходимость установки Arduino IDE |
Да |
Да |
— |
Да |
|
Формат работы с платой |
Прямое управление |
Прямое управление |
Загрузка скетча /Прямое управление |
Загрузка скетча |
|
Возможность программирования роботов и конструкторов |
Только на базе Ардуино |
Да |
Да |
Только на базе Ардуино |
|
Возможность работы со спрайтами/графикой |
Да |
Да |
Да |
Нет |
|
Поддержка устройств: |
— |
Да |
Да |
Да |
|
Хранение скетчей: |
ПК |
Облако / ПК |
Облако / ПК |
ПК |
|
Отображение скетча на языке С |
— |
— |
Да |
Да |
|
Формат файлов |
*.sb, *.arduinosprite |
*.xml |
*.mblock, *.json, *.sb2, *.sb3 |
*.ardublock, *.ino |
|
Функция снимка экрана |
Да (*.gif) |
Да (*.png) |
Да (*.png) |
Да (*.png) |
|
Пошаговое выполнение программы |
Да |
Да |
— |
— |
|
Копирование нескольких блоков |
Да |
Да |
Да |
— |
|
Комментарии |
— |
— |
Да |
Да |
|
Наличие примеров |
Да |
Да |
Да |
— |
Подведем итоги.
S4A – хоть и устарела, но не теряет своей актуальности. Преимуществом станет – малый размер, полный русский перевод, огромное комьюнити, множество текстовой и видео информации по программированию. Минимальный функционал достаточен для начального обучения.
Snap4Arduino – практически идентична S4A, но обладающая: большей базой библиотек, что позволяет программировать устройства на различных платформах. Спрайты и звук более высокого качества Поддерживает множество устройств, помимо ардуино.
Обе программы обладают возможностью создания визуальных проектов, и онлайн взаимодействия с платами. Однако для проектирования самостоятельно работающих проектов данные программы не подойдут. Также нет возможности представления программы с классическом текстовом виде.
mBlock больше подходит для начального обучения программированию. Связано это в первую очередь с тем, что здесь есть:
-
поддержка около 150 видов плат, конструкторов и роботов;
-
поддержка операционных систем Win, Мас, Linux, iOC и Android;
-
возможность онлайн и офлайн программирования конструкторов;
-
перевод основных библиотек и блоков на русский;
-
большая база фонов, спрайтов и звуков;
-
возможность отображения программы на языке С.
Однако стоит помнить, что при совместном использовании графики и внешней платы программу придётся делить на части и размешать их в отдельных окнах. Отдельно для устройства, персонажа и фона. При этом обеспечить связи между ними через блоки событий.
ArduBlock стоит немного в стороне от своих собратьев. Его неоспоримым преимуществом являются:
-
полностью русский интерфейс и справка;
-
простой и удобный интерфейс;
-
оригинальный дизайн блоков и их функционал;
-
возможность отображения программы на языке С и сохранения в формате *.ino;
-
возможность онлайн и офлайн программирования плат.
Однако отсутствие возможности создания визуальных проектов однозначно подымает возраст вхождения минимум до 10-12 лет.
Спасибо за прочтение.
Ссылки на официальные сайты программ:
-
Scratch
-
S4A
-
Snap4Arduino
-
mBlock
-
ArduBlock
-
Arduino IDE
Конструктор брался здесь.
Hi @ALL
Now it´s 2022 and there´s still a problem with Firmata. I got my Nano Every today and have changed the boards.h.
I´m trying it with:
elif defined(AVR_NANO_EVERY) || elif defined(ARDUINO_NANO_EVERY)
and getting this fault:
In file included from C:Program Files (x86)ArduinolibrariesFirmata/Firmata.h:17:0,
from C:UsersARBEIT~1AppDataLocalTemparduino_modified_sketch_434776StandardFirmata.ino:28:
C:Program Files (x86)ArduinolibrariesFirmata/Boards.h:870:2: error: #error «Please edit Boards.h with a hardware abstraction for this board»
#error «Please edit Boards.h with a hardware abstraction for this board»
Is there actually a working solution ?
Thanks,
Thorsten
Hi @ThorPrez
Please do the following: In the Arduino IDE, go to File->Preferences and enable verbose mode for compiling. Then run a build and copy the whole build output to a file. Attach this file here. The build output will contain the exact name of the preprocessor definition that is to be used.
Thanks for your feedback.
Where exactly can I see the right name for the board ?
Here are some examples of the output;
Arduino: 1.8.19 (Windows 10), Board: «Arduino Nano Every, None (ATMEGA4809)»
Using board ‘nona4809’ from platform in folder: C:UsersArbeitszimmerAppDataLocalArduino15packagesarduinohardwaremegaavr1.8.7
Using core ‘arduino’ from platform in folder: C:UsersArbeitszimmerAppDataLocalArduino15packagesarduinohardwaremegaavr1.8.7
Detecting libraries used…
…. mmcu=atmega4809 -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_NANO_EVERY -DARDUINO_ARCH_MEGAAVR ….
And here´s my edit:
// Arduino Nano Every
elif defined(AVR_NANO_EVERY) || elif defined(ARDUINO_NANO_EVERY)
#define TOTAL_ANALOG_PINS 8
#define TOTAL_PINS 24 // 14 digital + 8 analog + 2 i2c
#define IS_PIN_DIGITAL(p) ((p) >= 2 && (p) <= 21) // TBD if pins 0 and 1 are usable
#define IS_PIN_ANALOG(p) ((p) >= 14 && (p) < 14 + TOTAL_ANALOG_PINS)
#define IS_PIN_PWM(p) digitalPinHasPWM(p)
#define IS_PIN_SERVO(p) (IS_PIN_DIGITAL(p) && (p) < MAX_SERVOS) // deprecated since v2.4
#define IS_PIN_I2C(p) ((p) == PIN_WIRE_SDA || (p) == PIN_WIRE_SCL) // SDA = 22, SCL = 23
#define IS_PIN_SPI(p) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
#define PIN_TO_DIGITAL(p) (p)
#define PIN_TO_ANALOG(p) ((p) — 14)
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
#define PIN_TO_SERVO(p) (p) // deprecated since v2.4
It’s the parameters prefixed with «-D» (excluding the D itself). So try
#elif defined(AVR_NANO_EVERY) || defined(ARDUINO_NANO_EVERY) || defined(ARDUINO_AVR_NANO_EVERY)
Make sure you don’t miss the # before elif
With # before Elif I’m having more faults
Then you probably have a syntax error. Try the line exactly as I specified above.
#elif defined(AVR_NANO_EVERY) || defined(ARDUINO_NANO_EVERY) || defined(ARDUINO_AVR_NANO_EVERY)
It works, thanks.
Now I can try to communicate with Pi and Arduino. But it seems, that Node-Red cannot communicate with the Nano Every. Serial node is working, Arduino node not.
I have updated the source and after fixing the typo this works, so closing the issue.
Hi @ALL
Now it´s 2022 and there´s still a problem with Firmata. I got my Nano Every today and have changed the boards.h.
I´m trying it with:
elif defined(AVR_NANO_EVERY) || elif defined(ARDUINO_NANO_EVERY)
and getting this fault:
In file included from C:Program Files (x86)ArduinolibrariesFirmata/Firmata.h:17:0,
from C:UsersARBEIT~1AppDataLocalTemparduino_modified_sketch_434776StandardFirmata.ino:28:
C:Program Files (x86)ArduinolibrariesFirmata/Boards.h:870:2: error: #error «Please edit Boards.h with a hardware abstraction for this board»
#error «Please edit Boards.h with a hardware abstraction for this board»
Is there actually a working solution ?
Thanks,
Thorsten
Hi @ThorPrez
Please do the following: In the Arduino IDE, go to File->Preferences and enable verbose mode for compiling. Then run a build and copy the whole build output to a file. Attach this file here. The build output will contain the exact name of the preprocessor definition that is to be used.
Thanks for your feedback.
Where exactly can I see the right name for the board ?
Here are some examples of the output;
Arduino: 1.8.19 (Windows 10), Board: «Arduino Nano Every, None (ATMEGA4809)»
Using board ‘nona4809’ from platform in folder: C:UsersArbeitszimmerAppDataLocalArduino15packagesarduinohardwaremegaavr1.8.7
Using core ‘arduino’ from platform in folder: C:UsersArbeitszimmerAppDataLocalArduino15packagesarduinohardwaremegaavr1.8.7
Detecting libraries used…
…. mmcu=atmega4809 -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_NANO_EVERY -DARDUINO_ARCH_MEGAAVR ….
And here´s my edit:
// Arduino Nano Every
elif defined(AVR_NANO_EVERY) || elif defined(ARDUINO_NANO_EVERY)
#define TOTAL_ANALOG_PINS 8
#define TOTAL_PINS 24 // 14 digital + 8 analog + 2 i2c
#define IS_PIN_DIGITAL(p) ((p) >= 2 && (p) <= 21) // TBD if pins 0 and 1 are usable
#define IS_PIN_ANALOG(p) ((p) >= 14 && (p) < 14 + TOTAL_ANALOG_PINS)
#define IS_PIN_PWM(p) digitalPinHasPWM(p)
#define IS_PIN_SERVO(p) (IS_PIN_DIGITAL(p) && (p) < MAX_SERVOS) // deprecated since v2.4
#define IS_PIN_I2C(p) ((p) == PIN_WIRE_SDA || (p) == PIN_WIRE_SCL) // SDA = 22, SCL = 23
#define IS_PIN_SPI(p) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
#define PIN_TO_DIGITAL(p) (p)
#define PIN_TO_ANALOG(p) ((p) — 14)
#define PIN_TO_PWM(p) PIN_TO_DIGITAL(p)
#define PIN_TO_SERVO(p) (p) // deprecated since v2.4
It’s the parameters prefixed with «-D» (excluding the D itself). So try
#elif defined(AVR_NANO_EVERY) || defined(ARDUINO_NANO_EVERY) || defined(ARDUINO_AVR_NANO_EVERY)
Make sure you don’t miss the # before elif
With # before Elif I’m having more faults
Then you probably have a syntax error. Try the line exactly as I specified above.
#elif defined(AVR_NANO_EVERY) || defined(ARDUINO_NANO_EVERY) || defined(ARDUINO_AVR_NANO_EVERY)
It works, thanks.
Now I can try to communicate with Pi and Arduino. But it seems, that Node-Red cannot communicate with the Nano Every. Serial node is working, Arduino node not.
I have updated the source and after fixing the typo this works, so closing the issue.
Introduction: Arduino: Installing Standard Firmata
Arduino is an open-source electronics platform based on easy-to-use hardware and software. You typically use an Arduino microcontroller board in one of two ways:
- You can plug the board into a desktop computer and upload a computer program (or script). Once the board is programmed you can then embed it in your own projects and power the board using a standard AC adaptor, or,
- You can keep the board plugged into the desktop computer and transfer messages (data) between the board and the computer. In this case you are using the board as an «extension» of your computer to provide a set of digital and analog input or output connections.
In this Instructable we will consider case #2, using the Standard Firmata library. Firmata is a protocol (set of rules) for communicating with microcontrollers from software on a computer, smartphone, or tablet. Standard Firmata is a software library that allows Arduino devices to communicate with your computer using the Firmata protocol.
There are numerous software packages that make use of Standard Firmata, including Processing, Python pyFirmata, HyperStudio, HyperDuino, and many others.
In the following steps we’ll show how to download, install, and test the Standard Firmata library on an Arduino Uno device plugged into a computer running Mac OS X 10.10.3. These steps should work on any Arduino-compatible device including the Arduino Pro Mini or the LilyPad. The steps should also work on either Microsoft Windows or Linux with only minor modifications.
Step 1: Download and Install the Arduino Application
Your first step should be to download the Arduino application from http://www.arduino.cc/en/Main/Software. Be sure to choose the latest version and also the correct download for your computer and operating system.
Once the software has downloaded, you can install the application using the method appropriate for your system.
- For Mac OS X you will be downloading a ZIP file. Double-clicking on the ZIP should produce a single «Arduino» application file which you can then copy into your Applications folder.
- For Windows, you should download the .EXE containing a full Windows installer. Double clicking on the .EXE should start the installation.
- For Linux you will download a compressed TAR file. You can use the «tar» command to uncompress and unpack the application.
After installation, start the Arduino application. After the splash screen appears, the application should open up with a default program, called a «sketch», in the text editor. This is usually the «Blink» sketch.
Step 2: Plug in Your Arduino Board
At this point you are ready to plug your Arduino board into your computer. Your board should have a USB cable to attach the board to the computer. Disconnect any wires that may be attached to your Arduino or LilyPad and plug the board into the computer.
Depending upon your Arduino, the USB cable will plug directly into the board using a standard, mini, or micro USB plug.
Step 3: Choose Your Port and Board
Once you have your Arduino board plugged into your computer, you need to tell the Arduino application how to find the board and what type of board it is.
First, in the Arduino application, go under the menu item Tools —> Port. There, you should see a list of available USB ports. Hopefully, if you have plugged in your Arduino, one of the ports should have the port number followed by the name of the board. Choose this menu item to select the correct USB port.
If you don’t see your board listed under any of the ports, double check that the board is plugged into the computer. If you still don’t see the correct port, then follow one of the detailed installation guides:
- For Windows, http://www.arduino.cc/en/guide/windows
- For Mac OS X, http://www.arduino.cc/en/Guide/MacOSX
- For Linux, http://playground.arduino.cc/Learning/Linux
After you have chosen the port, go under the Tools —> Board menu item. Here you will see a list of supported Arduino and LilyPad boards. Choose the menu item that corresponds to your board. If you don’t see your board listed, check the detailed instructions that came with your board. If your board came from a third-party manufacturer such as SparkFun, the instructions should tell you which board is «compatible».
Step 4: Upload the Standard Firmata Sketch
Now we’re ready to upload Standard Firmata to the Arduino.
In the Arduino application, open the sketch using File —> Examples —> Firmata —> Standard Firmata. You should see the «C» code appear for the Standard Firmata sketch. You don’t need to understand any of the actual code to use Firmata, but if you’d like, feel free to scroll through and examine the code.
Now, at the top of the text editor window, click the «Upload» button as shown in the picture above. At the bottom of the text editor window, you should see a small status window. This will report the progress as the code is compiled and then uploaded to the Arduino. While the code is being uploaded, you should see some very small LED lights (the Transmit (TX) and Receive (RX) lights) on your Arduino board blinking as the data is transferred.
When the process is completed, you should see the message «Done Uploading» in the status window at the bottom of the editor. If you see an error message, go on to the next step about «Troubleshooting.» Otherwise, skip the next step.
Step 5: Troubleshooting
There are usually two things that can go wrong.
First, if you get the message «Problem uploading to board» (as seen in the first picture above), this usually indicates that you have chosen the wrong USB port. Go back to the Tools —> Port menu item and see if there is a different USB port that you can try. Then click the «Upload» button.
Next, you may get a series of «not in sync» error messages (as seen in the second picture). This is almost always because you have chosen the wrong Arduino board. Go back to the Tools —> Board menu item and verify that your Arduino board matches the chosen menu item. Then click the «Upload» button again.
If you are still having problems, we recommend going to the Arduino websites mentioned in step 3. Instead of uploading the «Standard Firmata» sketch, you might try uploading the «Blink» sketch, which is much quicker to upload. Once you get the «Blink» sketch to upload, come back and try to upload «Standard Firmata» again
Step 6: Testing Standard Firmata
As mentioned earlier, there are a variety of software packages that make use of Standard Firmata, including Processing, Python pyFirmata, HyperStudio, HyperDuino, and many others.
A quick test can be done using the Firmata Test application. You can download the application from the main Firmata page. Scroll down the page to find the Test application, and download the version appropriate for your desktop machine and operating system. Once you have the application running, use the Port menu item to choose the correct USB port. The Test application should report all of the available digital and analog ports for your Arduino, as shown in the second picture above.
For a more complete test, hook up an LED with a resistor to one of the ports. As seen in the first picture above, we’ve hooked two wires from the Arduino to a breadboard. The first wire comes from the ground (GND) pin of the Arduino. This wire is connected to a 100 ohm resistor (any resistor between 100 and 330 ohms should work), which in turn is connected to the short leg of a red LED. Finally, the long LED leg is connected to the blue wire which connects to pin 12 of the Arduino (you are welcome to use any of the digital output pins 2 through 13).
In the Firmata Test application, if you select «High» for your output pin, the LED should light up. Selecting «Low» should turn it off.
Congratulations! You’ve successfully set up your Arduino with Standard Firmata, and can now start building projects that transfer data between your computer and your Arduino!
2 People Made This Project!