Как я могу использовать свои скетчи Arduino в своей IDE Raspberry Pi?
Я установил Arduino IDE 2:1.0.5 на свой Raspberry Pi3 под Raspbian и использую коблер, который обеспечивает хороший макет. На этом макете я установил Arduino Nano для считывания аналогового напряжения, которое затем передается обратно на Rpi3 через последовательный порт USB, который отображается как /dev/ttyUSB0 на Rpi3.
Этот порт открывается как обычный файл в Python для дальнейшей обработки, такой как добавление даты & метка времени (полученная сервером NTP) и сохранение результатов в файл данных, который отображается в gnuplot 4.6.
Вы заметите, что я использую 3,3 В для вентилятора, чтобы он работал тихо, а два провода, идущие вверх, идут к источнику напряжения, который я отслеживаю. Если присмотреться, то можно увидеть схему делителя напряжения.
Вот сегодняшнее напряжение солнечной электростанции, которое отслеживает эта штука. Блок внизу означает, что инвертор был включен. Зеленый означает, что батарея полностью заряжена.
В любом случае получается, что такое же последовательное соединение поддерживается Rpi Arduino IDE для программирования.
Вместо того, чтобы программировать Nano на ноутбуке и постоянно отключать/подключать его к макетной плате, я хочу использовать Rpi Arduino IDE для программирования.
Поэтому я перенес все свои наброски из Arduino IDE на ноутбуке в Rpi.
Но
.... тогда каждый раз, когда я запускаю Rpi IDE, он выдает сообщения об ошибках для всех скетчей, в именах которых есть символы подчеркивания. Оказывается, версия Rpi разрешает только буквенно-цифровые имена каталогов. У меня есть пара десятков набросков, и это непродуктивно. Для этого требуется нажимать OK для каждого пропускаемого каталога, а это оказывается для всех.
Итак, мой вопрос: что я могу с этим сделать?
@SDsolar, 👍2
Обсуждение3 ответа
Лучший ответ:
Чтобы решить эту проблему, я придумал следующую процедуру, которая удаляет все символы подчеркивания из каталогов & имена файлов и каждое слово пишется с заглавной буквы.
Сначала я скопировал все свои скетчи и библиотеки (из каталога мои документы/arduino) на USB-накопитель.
При установке Rpi Arduino IDE создает каталог альбомов для рисования, поэтому я
Скопировал папку с библиотеками в ~/sketchbook/libraries
Скопировал папку с скетчами в ~/sketchbook/AMSsketches
Затем я написал собственный скрипт, который копируется в мой домашний каталог на Rpi, который можно получить здесь в виде текстового файла (используйте Chromium или wget, чтобы скопировать его в файл ~/AMS2Rpi). Вот ссылка: http://calttc.net/AMS2Rpi
который содержит этот код:
#! /бин/баш # # AMS2Rpi - конвертирует имена скетчей MS Arduino IDE в имена скетчей RPI Arduino IDE # # SDsolar 2017-01-29 # # Причина: Arduino IDE на MS вставляет символы подчеркивания в файл & имена каталогов # Arduino IDE на Rpi отклоняет все символы, кроме буквенно-цифровых # # Решение: удалить все символы, кроме буквенно-цифровых. # и писать каждое слово в именах с большой буквы # # Использование: # Установите Raspbian Arduino IDE 2:1.0.5 на Raspberry Pi 3. # Используйте флэш-накопитель USB для копирования скетчей и библиотек из Arduino IDE на базе MS. # На Rpi скопируйте каталог библиотек в ~/sketchbook/libraries # На Rpi скопируйте каталог скетчей в ~sketchbook/AMSsketches # Скопируйте этот скрипт в свой домашний каталог как AMS2Rpi, используя Chromium # CD # chmod +x AMS2Rpi # ./AMS2Rpi (это займет некоторое время) # кошка /tmp/AMS2Rpi | grep "AMSsketches" >~/AMSRpiQ # chmod +x ~/AMS2RpiQ # ~/AMS2RpiQ # Откройте Rpi Arduino IDE # # В качестве альтернативы, если у вас много скетчей, вы можете # измените "mv -i" ниже на "mv" # и вставьте его в AM2SRpiX выше # поэтому вам не нужно отвечать "y" на каждое переименование. # # Спасибо Марко Фьоретти за его статью на http://www.techrepublic.com/blog/linux-and-open-source/how-to-remove-weird-characters-from-file-and-directory-names-automatically / # -------------------------------------------------- -------------------- rm -f /tmp/AMS2R* CD $1 находить . | awk '{длина печати(), $0 | "сортировать -n -r" }' | \ grep -v '^1 \.$' | вырезать -d/ -f2- > /tmp/AMS2Rpi_1 коснитесь /tmp/AMS2Rpi_2 при чтении строки делать BASE=`базовое имя "$line"` NEWBASE=`базовое имя "$line" | perl -e '$N = <>; жевать ($N); $N =~ s/[^a-zA-Z0-9.]//g; $N =~ с/_+/_/г; $N= lc($N); $N =~ s/_([az])/_.uc($1)/например; напечатать ucfirst($N);' ` если [ "$BASE" != "$NEWBASE" ] затем OLDPATH=$(echo "$line" | sed -r 's/([^a-zA-Z0-9./_-])/\\\1/g') DIR=$(dirname "$line" | sed -r 's/([^a-zA-Z0-9./_-])/\\\1/g') echo "mv -i $OLDPATH $DIR/$NEWBASE" >> /tmp/AMS2Rpi_2 фи готово </tmp/AMS2Rpi_1 rm -f /tmp/AMS2Rpi_1 mv /tmp/AMS2Rpi_2 /tmp/AMS2Rpi Выход
Затем сделайте его исполняемым и запустите:
#! /bin/bash
#
# AMS2Rpi - Converts MS Arduino IDE Sketch names to RPI Arduino IDE Sketch names
#
# SDsolar 2017-01-29
#
# Reason: Arduino IDE on MS inserts underscore characters in file & directory names
# Arduino IDE on Rpi rejects all but alphanumeric characters
#
# Solution: Remove all but alphanumeric characters
# and capitalize each word in the names
#
# Usage:
# Install Raspbian Arduino IDE 2:1.0.5 on the Raspberry Pi 3
# Use a USB flash drive to copy sketches and libraries from the MS-based Arduino IDE
# On the Rpi, copy the libraries directory to ~/sketchbook/libraries
# On the Rpi, copy the sketches directory to ~sketchbook/AMSsketches
# Copy this script to your home directory as AMS2Rpi using Chromium
# cd
# chmod +x AMS2Rpi
# ./AMS2Rpi (This will take some time)
# cat /tmp/AMS2Rpi | grep "AMSsketches" >~/AMSRpiQ
# chmod +x ~/AMS2RpiQ
# ~/AMS2RpiQ
# Open the Rpi Arduino IDE
#
# Alternatively, if you have a lot of sketches you might want to
# change the "mv -i" below to "mv"
# and cat it into AM2SRpiX above
# so you don't need to answer "y" for every rename.
#
# Props to Marco Fioretti for his article at http://www.techrepublic.com/blog/linux-and-open-source/how-to-remove-weird-characters-from-file-and-directory-names-automatically/
# ---------------------------------------------------------------------
rm -f /tmp/AMS2R*
cd $1
find . | awk '{ print length(), $0 | "sort -n -r" }' | \
grep -v '^1 \.$' | cut -d/ -f2- > /tmp/AMS2Rpi_1
touch /tmp/AMS2Rpi_2
while read line
do
BASE=`basename "$line"`
NEWBASE=`basename "$line" | perl -e '$N = <>; chomp ($N); $N =~ s/[^a-zA-Z0-9.]//g; $N =~ s/_+/_/g; $N= lc($N); $N =~ s/_([a-z])/_.uc($1)/eg; print ucfirst($N);' `
if [ "$BASE" != "$NEWBASE" ]
then
OLDPATH=$(echo "$line" | sed -r 's/([^a-zA-Z0-9./_-])/\\\1/g')
DIR=$(dirname "$line" | sed -r 's/([^a-zA-Z0-9./_-])/\\\1/g')
echo "mv -i $OLDPATH $DIR/$NEWBASE" >> /tmp/AMS2Rpi_2
fi
done </tmp/AMS2Rpi_1
rm -f /tmp/AMS2Rpi_1
mv /tmp/AMS2Rpi_2 /tmp/AMS2Rpi
exit
По завершении я отфильтровываю только тот каталог, который мне нужен (ОЧЕНЬ ВАЖНО):
cd
chmod +x AMS2Rpi
./AMS2Rpi
(Вы можете просмотреть этот файл, чтобы проверить его перед запуском)
cat /tmp/AMS2Rpi | grep "AMSsketches" >~/AMS2RpiQ
Очистить, если хотите:
chmod +x ~/AMS2RpiQ
~/AMS2RpiQ
Теперь Arduino IDE на Rpi открывается чисто, и все мои скетчи там.
Проблема решена. Он отлично работает.
Это напоминает мне шутку программистов, которую я читал некоторое время назад, в которой говорилось: «Программист — это тот, кто за месяц разрабатывает программу, автоматизирующую одночасовую задачу»;), @frarugi87
Это очень хорошо. Я бы только добавил, что пенсионеры - самые плохие. ;-), @SDsolar
Оказывается, есть два более простых ответа, если вы хотите сделать это вручную.
Вы можете использовать интегрированную среду разработки Windows для загрузки каждого скетча, а затем сохранить их под допустимым именем перед передачей.
Таким образом, вместо того, чтобы выполнять программу, просто сделайте это вручную - это лучше, если у вас их не слишком много или если вы очень терпеливы.
Или прыгайте обеими ногами: используйте флэш-накопитель USB, чтобы просто переместить свои библиотеки и скетчи в соответствующие каталоги в альбоме для рисования.
libraries go to ~/sketchbook/libraries
sketches go to ~/sketchbook/sketches
Go into the IDE preferences and tell it to look into ~/sketchbook/sketches
Вручную переименовать любые каталоги в обоих каталогах, чтобы они содержали только буквенно-цифровые символы в именах подкаталогов
В версии Arduino IDE для Rpi нет проблем с именами файлов, содержащими символы подчеркивания. Это просто каталоги, которые он отклоняет, если они не являются строго буквенно-цифровыми. Но он действительно предпочитает, чтобы файлы имели те же имена, что и каталоги.
Each library must be added to the IDE using the
IDE menu Sketch..Import Library..Add Library
Он хранит их в другом месте внутри IDE.
Я мог бы добавить, что это работает нормально, если у вас нет 40 скетчей и библиотек, которые игнорируются из-за этой ошибки., @SDsolar
вот выражение, которое удаляет каждый символ, который не является (буквенно-цифровым или пробельным символом, или символом точки), за которым также следует буквенно-цифровой символ, пробел или точка, и заменяет его следующим символом с заглавной буквы.
find ./ -depth | perl -wan -F'/' -e ' chomp; chomp($F[-1]);$x=$_; if ($F[-1]=~m/[^\p{Alnum}\d \.]/ and substr($F[-1],0,1) ne ".") { $F[-1]=~s/[^\p{Alnum}\d \.]+([\p{Alnum}\d \.]{1})/uc($1)/eg; $y = join "\\",@F; system("mv",$x,$y);print "mv \"$x\" \"$y\"\n";}'
игнорирует скрытый файл unix, начинающийся с "." И это также переименовывает каталоги.
Это не сработает в крайних случаях, когда последний символ в имени не является буквой.
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Не могу загрузить скетч в Arduino Nano
- Программаторы для этой платы отсутствуют - Программирование ESP32 Cam с помощью Ardunio IDE
- Эмуляция стандартного периферийного USB-устройства Mifare с помощью RFID-RC522
- Использовать Arduino Nano V3 для программирования другого Arduino (Pro Mini)?
- Arduino Nano - программатор не отвечает
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
Возможно, вы могли бы указать, какую операционную систему вы установили на свой Raspberry Pi и какая версия IDE установлена., @James Waldby - jwpat7
Небольшой комментарий: версия arduino IDE 1.0.5 довольно старая.. Возможно, стоит обновиться до 1.8.1 (однако вы не можете использовать apt; просто зайдите на [страницу загрузки Arduino](https://www. arduino.cc/en/Main/Software) и скачайте ARM-версию (кажется), @frarugi87
А, я вижу там 1.8.1. И да, я использовал apt-get install, чтобы сделать это в первую очередь. Не уверен, что у меня есть всезнайка, чтобы сделать это по-другому. При этом работает отлично. Мне нравится иметь возможность перепрограммировать свои устройства, которые находятся снаружи и далеко, без необходимости возвращать их обратно к ноутбуку и рисковать погнуть контакты и т. д. Я могу выполнять обновления практически без простоев., @SDsolar
Обязательный XKCD: https://xkcd.com/1205/, @Etzeitet