Продовжуємо бавитись з Ардуінкою 🙂
В попередньому пості трохи поговорили про Starter Kit – тепер хочеться вже ж щось зробити.
Тож встановимо IDE на Arch Linux, і спробуємо виконати перший код.
Зміст
Запуск Arduino IDE на Linux
Документація для Arch Linux є тут>>>.
Встановлюємо IDE:
$ yay -S arduino-ide-bin
Перший запуск:
$ arduino-ide
Додамо CLI:
$ sudo pacman -S arduino-cli
Приклади в моїй офіційній документації є тут>>>, але там прям біда з форматуванням коду, тож я взяв інший приклад ось тут – Turn an LED on and off every second.
Arduino IDE, Linux та “No ports discovered”
Тепер нам в IDE треба вибрати board, тобто плату Arduino, з якою будемо працювати, але – “No ports discovered”
Ну, Linux жеж 🙂
“Нєльзя просто так взять, і…” (с)
У CLI аналогічно:
$ arduino-cli board list No boards found.
Окей, а якщо..
Але ні – після ребуту системи теж нічого не змінилося.
Судячи з документації, має з’явитись новий девайс – /dev/ttyACM0
або /dev/ttyUSBx
– проте в мене нічого. Та й lsusb
не виводить ніяких нових девайсів.
Почав гуглити, знайшов ось цей тред, і подумав – може і в мене проблема з USB-кабелем? А як перевірити? Бо іншого кабелю під рукою нема.
Проте є ігровий ПК з Віндою – давайте спробуємо там.
Встановлюємо IDE на Вінду, і – о чудо!
Але ж працювати під Віндою не хочеться, тож пішов знову пробувати з Linux, переключив Arduino назад до ноута з Arch, і – о, знову чудо!
Feb 03 16:14:41 setevoy-wrk-laptop kernel: usb 4-2: new full-speed USB device number 5 using xhci_hcd Feb 03 16:14:41 setevoy-wrk-laptop kernel: usb 4-2: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00 Feb 03 16:14:41 setevoy-wrk-laptop kernel: usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Feb 03 16:14:41 setevoy-wrk-laptop kernel: usb 4-2: Product: CP2102 USB to UART Bridge Controller Feb 03 16:14:41 setevoy-wrk-laptop kernel: usb 4-2: Manufacturer: Silicon Labs Feb 03 16:14:41 setevoy-wrk-laptop kernel: usb 4-2: SerialNumber: 0001 Feb 03 16:14:41 setevoy-wrk-laptop kernel: cp210x 4-2:1.0: cp210x converter detected Feb 03 16:14:41 setevoy-wrk-laptop kernel: usb 4-2: cp210x converter now attached to ttyUSB0 Feb 03 16:14:41 setevoy-wrk-laptop mtp-probe[48870]: checking bus 4, device 5: "/sys/devices/pci0000:00/0000:00:08.1/0000:06:00.4/usb4/4-2" Feb 03 16:14:41 setevoy-wrk-laptop mtp-probe[48870]: bus: 4, device: 5 was not an MTP device Feb 03 16:14:42 setevoy-wrk-laptop mtp-probe[48931]: checking bus 4, device 5: "/sys/devices/pci0000:00/0000:00:08.1/0000:06:00.4/usb4/4-2" Feb 03 16:14:42 setevoy-wrk-laptop mtp-probe[48931]: bus: 4, device: 5 was not an MTP device
І тепер є новий девайс в lsusb
:
$ lsusb ... Bus 004 Device 005: ID 10c4:ea60 Silicon Labs CP210x UART Bridge ...
І tty:
$ ll /dev/ttyUSB0 crw-rw---- 1 root uucp 188, 0 Feb 3 16:14 /dev/ttyUSB0
І тепер є порт в IDE під Linux:
Не знаю, чому так вийшло. Можливо, Ардуінка якось ініциалізувалася, коли нормально підключилась на Windows.
Але це ще не все 🙂
“/dev/ttyUSB0”: Permission denied
Потрібно додатково дозволити доступ до /dev/ttyUSB0
– тут трохи забігаю наперед, коли вже пробував заливати код:
Додаємо файл /etc/udev/rules.d/01-ttyusb.rules
:
SUBSYSTEMS=="usb-serial", TAG+="uaccess"
Робимо релоад udev
:
$ sudo udevadm control --reload
Перепідключаємо ардуінку, і клікаємо Upload:
І тепер все завантажилось:
Arduino “Hello, World!”
Окей, наче все готово?
Спробуємо зробити з прикладу Turn an LED on and off every second.
IDE та код
Тут просто копіюємо код з тієї сторінки:
// 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); } // 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(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Підключаємо Arduino, клікаємо Upload:
В коді все наче досить просто:
- виконуємо ініціалізацію
LED_BUILTIN
(13 pin на платі) - запускаємо цикл, в якому
- подаємо живлення на
LED_BUILTIN
- чекаємо 1000 мілісекунд
- відключаємо живлення
- подаємо живлення на
Тепер зберемо сам “девайс”, який буде нам блимкати лампочкою.
LED та резистор
Нам потрібен LED і резистор на 220 Ом.
Якщо з LED все зрозуміло, то з резистором я трохи покопався.
В наборі є кілька резисторів і таблиця відповідності кольорів – але я ну ніяк не міг розібрати які саме кольори на них (але нормально побачив, коли зробив цю фотку для цього посту 🙂 ):
Тож просто взяв мультиметр, та поміряв ним:
Коли ж вже це все зробив, то стала зрозуміла і ця схема:
Тож резистор на фотці має:
- червоний
- червоний
- чорний
- чорний
- коричневий
Тобто відповідно до схеми це буде “2 2 0 х1 1%” – 220 Ом, начебто вірно?
Тепер спробуємо це все підключити.
Breadboard для Arduino
Дістаємо breadboard (“макетна плата”).
Під капотом вона має такі з’єднання:
І шини для підключення живлення та компонентів:
Отже, нам потрібно таке підключення:
Самому резистору сторона підключення не має значення – одним кінцем до шини, де у нас червоний провід, іншим кінцем туди, де буде лампа.
Сам LED довгою ніжкою підключаємо на сторону живлення (“+”), до резистора, короткою – до “землі”:
Далі – підключаємо на самій платі Arduino: чорний провід до GRD (Ground), червоний – до 13 pin – він у нас відповідає за роботу з LED (але з портами детальніше будемо розбиратись вже далі, див. Digital Pins):
Підключаємо Arduino до ноута (або підключаємо блок живлення), і…
Wow! It works! 🙂
Окей.
Тепер, як все працює – можна починати розбиратись з рештою, і пробувати щось вже більш складне.