КАлина-мАлина. Обзорная статья по Raspberry Pi и Arduino и тред для радиолюбителей.

El Jefe

Consejero
Проверенный сервис
Сообщения
1.503
Реакции
4.007
Перенесена из недавнего вебинара к вниманию всех интересующихся.

По криптографии и криптоанализу, а также проникновению в чужие корпоративные сети я уже выложил три более-менее подробные статьи в авторских статьях на форуме(ссылка в голове материала); хотелось бы теперь рассмотреть такую модную тему, как повальное увлечение публикой такими изделиями, как Raspberry Pi и Arduino. До конца не уверен, что на форуме вообще это кому-то интересно, но аппетит приходит во время еды, поэтому решился написать тут небольшую обзорную статью, может, кто-то заинтересуется. Вообще-то на форуме была раньше парочка ардуинщиков, собственно Ардуиндрр и ещё один товарищ(они даже участвовали в конкурсе радиоинженеров здесь однажды и взяли призы), но впоследствии, я так понял, чевой-то там накосорезили что один, что второй, и куда-то пропали. Была ещё одна дама(?), тоже интересовалась этой темой, но тоже куда-то пропала.

Итак, о чём же вообще речь? Raspberry Pi представляет собой маленький, с два спичечных коробка размерами, дешёвый одноплатный компьютер с процессором ARM(Advanced RISC Machine, RISC означает reduced instruction set computer, ну вы понели :) дешёвый и сердитый, с упрощённым набором команд). Производится он британскими учоными британской компанией Raspberry Pi Foundation с 2012 года и по сей день. Первые модели были совсем деревянными, с тактовой частотой 32-х разрядного одноядерного процессора ARM 11 порядка 700Мгц и RAM 256 или 512 Мб; сейчас уже доступны модели с 64-битными 4-ядерными процессорами тактовой частотой 1,5 и даже 1,8 ГГц. Изделие оснащено также USB-портами в количестве от 1-ого до 4-х, коаксиальным антенным входом, аудиовходом-выходом TRS 3,5 мм, портом Ethernet, Wi-Fi на более старых моделях обеспечивается через USB-донгл, а на более новых встроен; имеется также HDMI-порт для подключения монитора и других устройств и слот под карту памяти SD, на которой хранятся файловая система, ядро и пользовательские файлы; на новых моделях бывает также встроенный Bluetooth. Работает это все под операционными системами Linux/FreeBSD; весьма распространены Raspbian(специальная сборка Debian) и Pidora(специальная сборка Fedora, поручик Ржевский, молчите, это не то, о чём вы сейчас подумали!) с облегченным графическим интерфейсом LXDE. Также использует народ ArchLinux, Gentoo, FreeBSD, Sailfish OS; возможно использование Android 7.0 и даже Windows 10 IOT(так и хочется оговориться - “идиот”, ибо лютый идиотизм ИМХО втетерить винду в Распберри, это всё равно что навьючить небольшого ослика мешком дурных проприетарных силикатных кирпичей, но разве поганый Билл Гей(тсс!) не всунул бы и сюда своего длинного носа и всё не опошлил, подобно тому, как он поступил со Скайпом, выкупив его в 12-ом у люксембургской компании).


Raspberry_Pi_scheme.jpg




GPIO2.JPG



Ну и что, скажете вы, ну маленький, ну дешёвый(35 Бакинских где-то), ну и что? Самой большой вкусностью означенного устройства ИМХО является наличие в нём интерфейса GPIO(general purpose input/output) из 26 пинов(на более современных моделях целых 40!), что открывает широкое поле возможностей для управления всевозможной периферией. Нормальное напряжение на пинах 5 и соответственно 3,3 В; не подавайте больше – можете сжечь выводы! Итак, имеем в том числе 2 вывода с постоянным уровнем напряжения 5 В , 2 вывода с постоянным уровнем напряжения 3,3 В , 5 общих выводов (земля), 17 цифровых программно управляемых выводов. Варианты распиновки на 26 пинов привожу ниже.


gpio-srm.png




GPIOs.png



Рассмотрим ниже что-нибудь простенькое, например, как помигать LEDом с помощью интерфейса GPIO нашей калинки-малинки и используя, к примеру, Python. Ибо, перефразируя латинское cogito ergo sum, можно сказать, “моргает, значит работает!”.

Командуем в командной строке, чтобы установить Python:



Код:
sudo apt-get install python-rpi.gpio (или python3-rpi.gpio)




Код:
sudo python




Код:
import RPi.GPIO as GPIO #подключаем библиотеку
GPIO.setmode(GPIO.BCM) #устанавливаем режим нумерации
GPIO.setup(7, GPIO.OUT) #конфигурируем GPIO 7 как выход
GPIO.setup(8, GPIO.IN) #конфигурируем GPIO 8 как вход
GPIO.output(7, True) #выводим на GPIO 7 логическую "1" (3.3 V)

GPIO.output(7, False) #выводим на GPIO 7 логический "0"
signal = GPIO.input(8) #считываем сигнал с GPIO 8 в переменную signal
GPIO.cleanup() #завершаем работу с GPIO

И, подключив предварительно джамперами LED к 7-ому пину и к “земле”, получаем желаемое моргание(данный пример был взят с “гексвольта”).

А вот как моргать целой шайкой LEDов, занесём нижеследующее в файл blinker.py и запустим его через командную строку; время везде в секундах, разноцветные LEDы подключаем через бредборд и джамперы одним концом к номерному пину, а другим концом к “земле”.


Код:
import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BOARD)

GPIO.setup(7, GPIO.OUT)

GPIO.setup(10, GPIO.OUT)

GPIO.setup(13, GPIO.OUT)

GPIO.setup(19, GPIO.OUT)

GPIO.setup(23, GPIO.OUT)

GPIO.output(7, 1)

time.sleep(0.4)

GPIO.output(10, 1)

time.sleep(0.3)

GPIO.output(13, 1)

time.sleep(0.3)

GPIO.output(19, 1)

time.sleep(0.3)

GPIO.output(23, 1)

time.sleep(0.3)

while True:

GPIO.output(10, 0)

time.sleep(0.6)

GPIO.output(10, 1)

GPIO.output(13, 0)

time.sleep(0.6)

GPIO.output(13, 1)

GPIO.output(19, 0)

time.sleep(0.6)

GPIO.output(19, 1)

GPIO.output(23, 0)

time.sleep(0.6)

GPIO.output(23, 1)

Сначала всё по очереди зажигаем, потом(while True:) осуществляем цикл. Подобным образом мы можем управлять через сервопривода по написанной нами программе хоть детским автомобильчиком, хоть “умным” домом, хоть чёртом с рогами(предварительно установив ему электромоторчик в задницу :) ).


arduino.png



Теперь отдадим дань пресловутому Ардуино. Представляет оно из себя семейство микроконтроллеров, производимое компанией из итальянского Ивреа, что под Турином, и названное так в честь местной пивной/рюмочной(в которой и были собственно изобретены в процессе распития напитков местными джуликко бандитто), а та в свою очередь названа в честь местного средневекового короля Ардуина Н-надцатого. К нему(микроконтроллеру) придаётся программное обеспечение в виде среды разработки IDE и C-подобного языка программирования, а если точнее, то C++ c фреймворком Wiring. Скрипты работы в нём называются производителем – скетчами. А вот и иллюстрация распиновки Arduino Due.


arduino_due_pinout_l.jpg



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



Код:
void setup () {
pinMode (13, OUTPUT); // Назначение порта 13 в качестве выходного порта
}

void loop () {
digitalWrite (13, HIGH); // Установка порта 13 в состояние "1", светодиод загорается
delay (1000); // Задержка на 1000 миллисекунд
digitalWrite (13, LOW); // Установка порта 13 в состояние "0", светодиод гаснет
delay (1000); // Задержка на 1000 миллисекунд
}

Теперь, в чём разница между Ардуино и Распберри. Распберри – это практически честный компьютер, а Ардуино – всего лишь микропроцессор, его возможности более, как бы это помяхше сказать, несколько ограничены. Критики Распберри скажут, что он-де типа работает “не в реальном времени”, то есть тупит порой, так поставь на него микроядерную RISC OS или RTLinux и будет тебе реальное время, процессор ARM под это изначально и заточен. Можно ли эти два изделия сопрягать в одном изделии – можно конечно, только нужно ли?


e5768d7dd0d68580d19d6fc19e391430.jpg



А вот некоторые говорят так: “зачем вообще нужно это Ардуино, если можно взять программатор, прошить им контроллер в DIP-корпусе и установить его в плату, получив более дешёвое, компактное и портативное устройство.” И они ИМХО по-своему правы. А вот ещё мнение: “я буду рад, если хоть один человек… поменяет Arduino на простой микроконтроллер – может быть, из него получится хороший разработчик встраиваемых систем в будущем.”

Смысл в том, что Ардуино – это не уровень приличного инженера, а уровень какого-нибудь радиокружка при провинциальном Дворце Пионеров(были такие при советской власти), где раньше пионеры юные – головы чугунные сидели с паяльниками и припоем и нюхали канифоль, а теперь сидят с бредбордами и джамперами и даже не паяют почти, балбесы :) И все эти Ардуины – это не haute cuisine, а своего рода Макдональдс, позволяющий, впрочем, непритязательному едоку быстро и нажористо утолить голод. И что они крепко расхолаживают конструктора и отучают его анализировать, понимать физический смысл происходящего и вообще шурупить своей бестолковкой...
 

El Jefe

Consejero
Проверенный сервис
Сообщения
1.503
Реакции
4.007

Jacqueline

Местный
Сообщения
493
Реакции
1.013
радиокружка при провинциальном Дворце Пионеров(были
Даже на этом уровне всё рано не пойму для чего эта штуковина ?
Если не в тягость, можно коротенькое пояснение ?
 

El Jefe

Consejero
Проверенный сервис
Сообщения
1.503
Реакции
4.007
Если не в тягость, можно коротенькое пояснение ?
Для управления неким навесным электрооборудованием, согласно загруженной в контроллер программы, вертеть электромоторчиками, сервоприводами, моргать лампочками, включать и выключать устройства дистанционно, что-то вроде доморощенной робототехники такой. При желании можно сделать даже блок управления СВУ ( Я этого не говорил :))
 

Jacqueline

Местный
Сообщения
493
Реакции
1.013
Для управления неким навесным электрооборудованием,
А на некое оборудование сигнал идёт по проводу или вифи или через
тухлый блюТУЗ ? Собственно как и сам девайс тем же способом управляется ?
Сообщение обновлено:

К примеру мне нужно будет подать питание 5в на электронный детонатор
Как я могу сделать это удалённо не засвечиваясь ?
 

El Jefe

Consejero
Проверенный сервис
Сообщения
1.503
Реакции
4.007
по проводу или вифи или через
тухлый блюТУЗ ?
Можно и так, и так в зависимости от того, что именно нам нужно сконструировать. Блю-тусом, Z-wawe, ZigBee и другими радиопротоколами лучше управлять с Распберри.
 

Jacqueline

Местный
Сообщения
493
Реакции
1.013
в зависимости от того, что именно нам нужно сконструировать.
Хорошо, тогда более детально конкретизирую:
сидя дома как с помощью этого девайса подать напряжение,
будучи расположив его за десятки километров ?
В принципе такое возможно ? Или ещё нужна будет точка с
раздачей вифи к примеру от смартфона ? И это всё должно быть
где то рядом друг от друга ?
 

El Jefe

Consejero
Проверенный сервис
Сообщения
1.503
Реакции
4.007
К примеру мне нужно будет подать питание 5в на электронный детонатор
Как я могу сделать это удалённо не засвечиваясь ?
Аккумулятор к нему придаётся. Через USB на Распберри и через штатный вход питания на Ардуино.
будучи расположив его за десятки километров ?
Через мобильный интернет и симмку(купленную в подземном переходе у таджиков).
 
Последнее редактирование:

Jacqueline

Местный
Сообщения
493
Реакции
1.013
Через мобильный интернет
Да это понятно, что через пауэр банк дам питание и на телефон
и на Распберри. Телефон раздаст интернет для девайса, внимание
вопрос - как и чем дать команду удалённо на девайс, чтоб включить
выходное питание с него ?
 

El Jefe

Consejero
Проверенный сервис
Сообщения
1.503
Реакции
4.007
Если использовать Распберри - подключить её к интернету через собственный Wi-Fi донгл и дешёвый переносной роутер с симмкой используя его как модем для раздачи интернета, с помощью удалённой командной строки подать сигнал на выходы GPIO, которые подсоединены куда надо, вот как-то так.

Но я полагаю, с инженерной точки грамотнее соорудить с помощью программатора собственный контроллер, подобный тому, который используется в GPS-трекерах для автомобилей и контейнеров. Можно даже распатронить такой трекер-маячок и переделать его под подобное устройство.
 
Последнее редактирование:

stalkerred

Местный
Сообщения
566
Реакции
700
что у тебя за канал такой узкий?
Как-то это все звучит не однозначно, даже как ответить не знаю...
Э-э-э нормальный у меня канал не хуже чем у других, а шлейф даже длиннее между прочим...
Авось прокатит.
 

Gore

Котяра
Сервис
Сообщения
588
Реакции
998
Приветствую, бро!) Слушаай, а ультразвуковую пушку можно собрать, что б псину гонять от окон? А то китайские устройства мало того, что убогие, так ещё и не на всех собак действуют. :(
Или я не по теме?
 

El Jefe

Consejero
Проверенный сервис
Сообщения
1.503
Реакции
4.007
Ультразвук малоэффективен от млекопитающих, даже от грызунов. В перестройку продавались такие кооперативные(даже не китайские) устройства, через недели 3 вредители(крысы, мыши) адаптируются и возвращаются. Единственно, от летучих мышей и птиц ещё может быть какой-то эффект.
 

Gore

Котяра
Сервис
Сообщения
588
Реакции
998
Ультразвук малоэффективен от млекопитающих, даже от грызунов. В перестройку продавались такие кооперативные(даже не китайские) устройства, через недели 3 вредители(крысы, мыши) адаптируются и возвращаются. Единственно, от летучих мышей и птиц ещё может быть какой-то эффект.
Жаль, жаль. Не хочу животное травить, придётся как-то иначе гонять. )
Благодарю за ответ! :)
 

Маскарад

Местный
Сообщения
938
Реакции
2.192
Жаль, жаль. Не хочу животное травить, придётся как-то иначе гонять. )
Благодарю за ответ! :)
Кидай в нее петардами, урона ей они не нанесут, зато пугают отлично.
Они и против млекопитающих и против алкашей хороши.
У меня под окнами однажды синяки собирались, бомжи какие то. Я тогда на первом этаже жил в доме.
Вонять стали, мусорить, шуметь, петардами вытравил очень легко этих паразитов.
Просто стоял и кидал в них петардами, до тех пор, пока маргиналы не передумали туда приходить.
Камнями тоже кидал, но не часто. Возмущались очень сильно правда, но сделать мне ничего не могли.
Против собаки кажется тоже должно подействовать.
 
Последнее редактирование:

Gore

Котяра
Сервис
Сообщения
588
Реакции
998
Кидай в нее петардами, урона ей они не нанесут, зато пугают отлично.
Они и против млекопитающих и против алкашей хороши.
У меня под окнами однажды синяки собирались, бомжи какие то. Я тогда на первом этаже жил в доме.
Вонять стали, мусорить, шуметь, петардами вытравил очень легко этих паразитов.
Просто стоял и кидал в них петардами, до тех пор, пока маргиналы не передумали туда приходить.
Камнями тоже кидал, но не часто. Возмущались очень сильно правда, но сделать мне ничего не могли.
Против собаки кажется тоже должно подействовать.
Видимо, придётся. )
 
Сверху Снизу