Arduino nano Linux Ubuntu 18 start


Очередная статья про arduino и первое знакомство с этим микроконтроллером.
Покупал на «али» разные модели. Но эксперименты и настройку arduino IDE начал с:

1. Чтения документации и разбора статей по ардуино. Пока ехали из Китая мои железки, у меня было время не спеша почитать документацию.

2. Установка Arduino IDE:
Ubuntu 18.04 у меня стоит mint c cinnamon, но это роли абсолютно не играет.
Изначально я поставил arduino IDE через apt install arduino arduino-core … Но это оказалось ошибкой.
Так как очень скоро я наткнулся на рекомендации снести это урезаное нафиг и поставить нормальный ардуино ИДЕ.
У меня не было оснований не доверять опыту других, так как своего опыта не было вообще. (моя первая ардуина еще ехала ко мне).
Поэтому я снёс пакеты установленой arduino IDE 2:*** (Version: 2:1.0.5+dfsg), скачал и поставил версию с официального сайта:
https://www.arduino.cc/
https://www.arduino.cc/en/Main/Software
Скачал архив arduino 1.8.8 Linux 64
Тупо распаковал его в папку

~/ARDUINO

(которую создал).
Перешел в получившуюся cd

~/ARDUINO/arduino-1.8.8

Конечно я всё-таки поизучал install.sh и что он делает, перед тем как ставить — не удержался =))
Запустил

./install.sh

Done
В моей папке ~/ARDUINO появилась сама IDE со всеми внутренностями;
Создалась папка ~/.arduino15/ с параметрами запуска IDE;
В ~/.local попали иконки.
В меню и на десктопе появились значки. С установкой всё.

3. Первой приехала ноунейм arduino nano (потом приехали другие nano, UNO и т.д. Но начало ничем не отличается.) Этот вариант типа-nano был ну самый дешевый и покупался «на убой» и чтоб «не жалко спалить в тестах».
Подключение:
Сначала

$ lsusb

Втыкаю кабель в nano и в usb диод загорелся питание есть. Еще раз

$ lsusb

Вижу разницу.

Bus 001 Device 015: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

При подключении кабеля в девайсах появился /dev/ttyUSB0

если не появился — идём в /etc/udev/rules.d/ и разглядываем какие правила есть и что именно там в правилах.
У меня среди правил есть такое:

$ cat /etc/udev/rules.d/90-extraacl.rules
# Setting serial port rules
"KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="ИмяМоегоЮзера"
"KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="ИмяМоегоЮзера"

Этого достаточно чтобы МойЮзер и доступ имел и чтобы девайс появлялся при подключении.

Запускаю arduino IDE:
Tools -> Board -> Arduino Nano
Tools -> Processor -> ATMega328P — дал ошибку: avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
Поэтому:
Tools -> Processor -> ATMega328P (old bootloader)
Tools -> Port -> /dev/ttyUSB0

4. Проверка:
File -> Examples -> 01.Basics -> Blink
Нажал кнопку Upload. И ура, Ардуинка заработала! Диод мигает. Можно прям на ходу поиграться с разными значениями цифр и позаливать — получаю соответственно разные периоды вкл/выкл диода.
Можно писать свой код и приступать к экспериментам.

Из опыта предшествующих поколений вынесено:
a) Если игнорируется скорость порта и даже Serial.begin(9600) игнорируется и ну никак не ставится заветные 9600 для общения:

cat ~/ARDUINO/arduino-1.8.8/hardware/arduino/avr/boards.txt

Ищем нашу модель, пареметр upload.speed видим типа:

nano.menu.cpu.atmega328.upload.speed=115200

Меняем на 9600
b) Всякие советы «жать reset», «проверяй и меняй кабель», «твоя ардуинка не рабочая» и прочее в этом стиле — лучше игнорировать. Таких советов оказалось много. А на деле Китайцы молодцы и ардуинки (и ноунейм) живучие. Им не страшна, ни долгая дорога, ни почта России ни прочие перипетии. Если диод загорелся — в 99.9% это значит что работает и кабель и ардуинка, осталось настроить.
c) Реально разбирающихся электронщиков в поле обсуждения вопросов  arduino — мало. (Что вполне объяснимо. Они итак могут прошить себе любой контроллер и без IDE). Вопросы в основном от новичков и в основном англоязычных. Помогают такие же новички и в основном типа «а ты с бубном танцевал?». Хотя, на второй день всё уже настолько просто, что смешно от своих же вопросов.

Первый эксперимент свёлся в тому, что был скопирован стандартный Blink и дописаны пару строк:
в setup: Serial.begin(9600);
в loop: Serial.println(«Hello World!»);

То есть:

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
Serial.println("Hello World!");
}

arduino serial

Нажал на кнопку upload, залил, потом справа вверху (лупа) Serial Monitor
и увидел свои хеллоу ворлды. Чего и вам желаю.


Приятных, интересных, а главное, полезных вам открытий!
Продолжение «Общение с Ардуино через порт».