"Вы читаете о роботах и программировании и думаете: «Было бы здорово сделать что-то подобное самому!» Теми, кем эта идея овладевает чуть больше просто мыслей смотрят кто и как делал своего робота. Читают статьи, смотрят видео. На картинках все понятно. В видеороликах тоже обычно показываются уже готовые продукты, а также сжато показываются технологии их изготовления. И вроде бы то же всё понятно: отпилил, прикрутил, припаял, соединил, запрограммировал вон на той программе вот этим кодом."

суббота, 30 ноября 2019 г.

Мнение

Профессии будущего. Чему учить новые поколения?

Профессии будущего. Чему учить новые поколения?

Опасное будущее


Проблема трудоустройства будущих поколений только на первый взгляд кажется простой и легко решаемой. Главным трендом становится повсеместная роботизация и компьютеризация практически всех сфер жизни человека, что автоматически освобождает массу людских ресурсов. Посмотрите вокруг: в городах практически пропали банковские кассы, все перешли на электронные платежи и переводы. За последние пять-шесть лет прошло несколько волн массовых сокращений в российском банковском секторе. Еще пара-тройка законопроектов, ограничивающих хождение бумажных денег, — и среди банковских служащих останутся одни программисты.

Этот тренд уже давно царствует в Европе. В Германии, к примеру, вообще в автосалоне невозможно купить машину за наличные деньги. С одной стороны, такой подход позволяет тотально контролировать движения денежных масс, а с другой заставляет коррупционеров покупать квартиры для хранения сотен килограммов наличности. В отдаленном будущем ситуация может серьезно осложниться – рабочих мест для постоянно растущего населения Земли просто не останется. Ведь даже сейчас, если по всей России перевести организации на настоящий электронный документооборот и электронные базы данных, то четверть, а то и треть служащих можно будет смело увольнять. А в будущем придется для страдающего праздностью населения придумывать искусственные профессии, результативность которых никому не интересна. Государство во многом держится за класс трудящихся в своей стране: если они массово забастуют, экономика рухнет. Это, кстати, было в основе всех революций, и правителям приходилось прислушиваться к голосу трудящихся. Если же от миллионов граждан ничего не будет зависеть, их руки будут не нужны, то и государству в них особой надобности особо нет.


К каким это приведет последствиям, думаю, фантазировать излишне. Сейчас даже название для этой прослойки людей придумали – useless class, или «бесполезный класс». Но спешу успокоить, это лишь самый пессимистичный сценарий развития предполагаемого будущего. Все-таки большая часть футурологов сходится на принципах серьезной трансформации рынка труда, а не его исчезновения.


Самой главной особенностью всех изменений в будущем будет их неимоверная быстрота. К примеру, глобальный трафик интернета с 2005 по 2021 годы должен вырасти в 127 раз! Он распространяется не только на гаджеты и ПК, но и на вещи, окружающие нас: холодильники, телевизоры и так далее. Пройдет пара-тройка лет, и на каждого жителя Земли будет приходиться не менее трех устройств, подключенных к Всемирной паутине. Естественно, это напрямую касается и рабочих мест. «Умные устройства» вытеснят людей из сферы массового производства раз и навсегда, заставляя искать новые сферы применения своего личного времени и потенциала. Здесь у человека есть одно неоспоримое преимущество даже перед самым совершенным роботом или программой: он способен творчески мыслить. Так называемая кастомизация промышленного производства, сферы услуг и экономики знаний пока дает надежду, что человек где-то будет нужен. Кажется, что инженеру будущего вообще без надобности будет знать базовые физические законы – за него все рассчитает искусственный интеллект, а одушевленный творец лишь добавит несколько штрихов, «очеловечивающих» итоговый продукт. Либо ему просто будет достаточно сгенерировать идею, а условный компьютер все сделает дальше сам.



Кривая Аутора
В этой связи очень интересно выглядит анализ американского экономиста Дэвида Аутора, который отследил изменения в занятости в промышленности Соединенных Штатов с 1980 по 2005 гг. Краткое изложение его работы можно встретить в сборнике «Навыки будущего. Что нужно знать и уметь в новом сложном мире».

Аутор выявил двадцатипятилетний тренд на снижение занятости специалистов среднего уровня квалификации, с одновременным ростом потребности в высококвалифицированных работниках. Грубо говоря, менять высшее звено на роботов и программы очень дорого, творческий потенциал человека пока обходится гораздо дешевле. При этом наблюдается рост потребности в низкоквалифицированном труде – здесь также широкое внедрение автоматизации окупится только через десятилетия, если не позже. Конечно, в этой ситуации серьезно спасают потоки трудовых мигрантов, готовыхработать за низкую заработную плату. А что делать, когда экономический эффект от внедрения роботов в сектор гастарбайтеров в один прекрасный момент перевесит все издержки? Уже сейчас роботы Kiva, которых у гиганта Amazon более 50 тысяч, вполне себе заменяют низкоквалифицированных складских рабочих. Нам в России, кстати, пока в этой связи можно быть спокойными – в стране на 10000 рабочих мест всего 1 промышленный робот приходится. А вот в США это число достигло 176, в Японии 305, а в Корее вообще 531.



Робот Kiva в империи Amazon
Кроме вытеснения рабочих с промышленных предприятий, автоматизация создает еще одно благо – исключение целого ряда посредников между производителем товара и его потребителем.  Пример «Яндекс.Такси» тому самое яркое подтверждение – вылетел в трубу целый класс координаторов, менеджеров и диспетчеров, заметно поднимавших среднюю стоимость услуги.

Учиться по-новому?


В связи с надвигающейся на нас волной тотальной автоматизации пора бы задуматься о том, какие навыки нужны нашим детям. Об этом, кстати, задумался гораздо раньше (в 50-х годах прошлого столетия) профессор педагогики Чикагского университета Бенджамин Блум. Он предложил ранжировать по уровню сложности и востребованности шесть мыслительных (когнитивных) задач по возрастанию: помнить, узнавать, применять, анализировать, оценивать и создавать. То есть классический постулат «зубрежка в школе решает всё» еще в прошлом веке оказался ущербным. Сейчас на вершине тренда у детей должны быть способности вычленять из системы составные части и описывать, как части соотносятся друг с другом и с целым. На следующем уровне — умение оценивать, то есть выносить собственные суждения, основанные на внешних или внутренних критериях. Наконец, самым важным видятся способности создавать принципиально новое, определять компоненты новой структуры, соединять существующие части для возникновения нового. Собственно, вот на этих трех китах и должно строиться образование будущего. Вопрос только в том — как?

Оставим проблемы создания новых школ педагогам, а сами рассмотрим, что еще нового готовят нам футурологи в недалеком будущем на рынке труда. На первый план выходит востребованность человеческого воображения, которое пока на несколько порядков превосходит машинное. И есть предположение, что компьютер никогда не станет равным человеку в этой категории. Поэтому в индустрии игр, видео, музыки, сценариев и всего подобного можно вполне искать своим потомкам «тёплое» местечко. Кроме этого, ожидается спрос на профессии, в которых роботизация не сможет заменить общения человека с человеком. К примеру, педагог, наставник, ментор, коучер (называйте как хотите) никогда не выйдут из тренда. При этом на первый план выйдет глубокая индивидуализация процесса научения. Чувствуете современную востребованность репетиторов? Это первые ласточки будущего.

Человечество медленно, но верно увеличивает среднюю продолжительность жизни. В связи с этим ждем развития целой сферы услуг, направленной на пожилых людей. Это будет примерно так же, как и сейчас на детские интересы работают целые корпорации.


Сейчас в связи с описанными проблемами всерьез рассматриваются возможности введения в будущем безусловного основного дохода (handsome fellowship), который бы гарантированно обеспечивал базовые потребности всех членов общества. И это не пособие по безработице – в Финляндии с 1 января 2017 года 2000 безработным выплачивали по 560 евро, при этом не прекращали выплаты при трудоустройстве человека. В далеко идущем варианте рассматривается даже перестройка всего сознания человека: теперь ему не нужно будет заботиться о заработке, а освободившееся время будет расходоваться на общение, помощью ближним, удовольствия и самореализацию.

Автор:Евгений Федоров
Использованы фотографии: sunmag.me, atlas100.ru, robotrends.ru





среда, 27 ноября 2019 г.

Ардуино на чистом С

Поднимем вопрос программирования Arduino на языке Си. Зачем это может понадобиться, ведь на языке Arduino писать значительно проще? Во-первых, код на Си весит намного меньше, чем на Arduino (насколько меньше увидите дальше). Во-вторых, он может выполняться быстрее (для задач, где критична высокая скорость). Кроме того, это может стать первым шагом при освоении собственно микроконтроллеров. Как всегда здесь не будет теории, только практика.
Для начала необходимо подключить библиотеку, позволяющую отправлять-принимать сигналы. Делается это командой
 
#include <avr/io.h>
 
Если на Arduino было необходимо наличие функций loop и setup, то на Си должна быть функция main, возвращающая тип int. Внутри этой функции и будет находится наш код.
 
 int main (void) {
 
}
 
 Поставим себе простейшую задачу — зажечь светодиод на порту №13. И тут мы столкнемся с тем, что собственно на микроконтроллере нет 13 порта. Посмотрим распиновку (pinout) микроконтроллера, установленного в Ардуино (atmega328p).
 
 
 
http://studrobots.ru/wp-content/uploads/2016/12/atmega328w_pinout.png 
 
 Тут обращаем внимание на PB0 — PB7, PC0 — PC6, PD0 — PD7. Это и есть порты для подключения устройств, с ними и предстоит работать. Посмотрим, как эти порты соотносятся с портами Arduino.
 
 
http://foros.giltesa.com/otros/arduino/fc/docs/pinout/uno.jpg 
 
 
Мы задались целью зажечь светодиод на 13 порту. По распиновке Arduino мы видим, что там находится порт PB5. Собственно, правильнее сказать, что порт B, 5 бит. В программе будем работать сразу со битами порта B (0-7), но постараемся не затрагивать биты кроме 5.
Сначала нужно обозначить B5 как выход, то, что на Ардуино делалось командой pinMode (13, OUTPUT).
На Си для этого существует команда DDRB, где B — порт (соответственно, могло быть DDRC и DDRD).
У порта B 8 битов, каждый из которых может быть настроен на выход (1) и вход (0). Поэтому, мы можем задать двоичное число, где каждому биту соответствует 0 или 1.
Например, запись
 
DDRB = 0b00000001


говорит о том, что 0 бит порта B, т.е. PB0 (8 порт Ардуино) будет выходом (OUTPUT), остальные — входом (INPUT). 0b перед числом позволяет указывать двоичную запись числа.
Так как мы работает с PB5, то 1 мы должны поставить в 5 бит

 DDRB = 0b00100000

 Теперь нужно подать напряжение на данный порт. Делается это командой PORTB, где B — снова порт. Напряжение подается единицей, отсутствие напряжения — 0. По аналогии запишем команду

PORTB = 0b00100000

 чтобы подать напряжение на 5 бит.
Код целиком:
#include <avr/io.h>
 
int main (void) {
 
 DDRB = 0b00100000;
 
 PORTB = 0b00100000;
 
}
 
 Что в этом коде нехорошо, так это то, что мы указывали сразу все биты одного порта. Иногда мы не знаем заранее, подается питание на тот или иной бит и изменять мы его не должны, а значит, мы не можем сами подавать туда 0 или 1. Поэтому важно уметь настраивать нужный бит, без изменения остальных.
Для этого потребуется знание логических операций и операций над битами.
Логическое ИЛИ (|)
 Результат ИЛИ равен 1 если хотя бы один из операндов равен 1.

Логическое И (&)
Результат И равен 1 если оба операнда равны 1.


Побитовые сдвиги влево и вправо (<< и >>)
Данные операции сдвигают все биты числа вправо или влево на заданное количество позиций.
Например, запись 1<<2 означает, что биты изначального числа 00000001 сдвинутся влево на 2 позиции и получится 00000100.
Воспользуемся данными операциями, чтобы работать только с необходимыми битами портов.
Мы должны PB5 настроить на выход. Сделаем это так:

DDRB |= (1<<5);


1<<5 это 1 в 5 бите, т.е. 0b00100000. Применяем логическое ИЛИ для текущего состояния порта B и данного числа. Так как 1 находится только в 5 бите, то и в результате изменится лишь 5 бит порта B (станет 1), остальные биты останутся без изменений. Результат операций перезаписывается в DDRB.
Тоже самое проделаем и для отправки сигнала:

PORTB |= (1<<5);


Вновь, благодаря данным операциям изменится состояние лишь 5 бита порта B.
Код программы:

#include <avr/io.h>
 
int main (void) {
 
  DDRB |= (1 << 5);
 
  PORTB |= (1 << 5);
 
}


Теперь посмотрим, сколько памяти требует данный код и аналогичный код на Ардуино.

 http://studrobots.ru/wp-content/uploads/2016/12/%D1%81%D0%B8.jpg

 http://studrobots.ru/wp-content/uploads/2016/12/ard.jpg


 На языке Си код занимает 144 байта, на Ардуино — 710, т.е. разница почти в 5 раз и это всего при двух командах.



 по материалам http://studrobots.ru/arduino-c-1/










 
 
 

пятница, 15 ноября 2019 г.

Тригер на электромагнитном реле


Схема простого триггера на одном реле (схема включения и выключения одной кнопкой).

Вашему вниманию очень простая электрическая схема триггера на одном реле. Для тех, кто не знает, что это такое, поясню. Допустим имеется задача организовать схему, которая бы замыкала контакты, управляющие той или иной нагрузкой, с помощью всего одной кнопки (без фиксации). То есть, один раз нажали на кнопку – реле сработало и включилось, второй раз нажали на кнопку – реле выключилось, перейдя в исходное состояние. Ну, а примером применения такого электрического переключателя на реле может быть вариант проходного выключателя. Это когда включение и выключения освещения можно осуществлять из различных мест, где установлены кнопки схемы. Количество кнопок вкл/выкл может быть различным, и все они подключаются параллельно друг другу. Думаю смысл этого понятен.

Теперь давайте разберем как именно работает данная схема, состоящая всего из нескольких элементов. Сразу можно увидеть, что схему можно разделить на две части по вертикали. Неким мостом этих частей выступают электрические переключатели (нефиксируемая кнопка S1 и одна рабочая группа контактов самого реле K1). Итак, на схему подано напряжение питания (используется постоянный ток). В начальный момент с реле ничего не происходит, а вот поданное на схему питание идет на зарядку конденсатора C1. Причем, скорость процесса заряда ограничивается резистором R1.

 Конденсатор заряжается достаточно быстро. После чего с этой схеме никаких токов не протекает, данный триггер на реле находится в состоянии покоя и ожидания. Далее когда мы нажмем на кнопку S1, то накопленный конденсатором электрический заряд через эту кнопку пойдет на катушку реле, что спровоцирует кратковременное срабатывание этого реле. При этом рабочая группа контактов K1 данного реле переключится. То есть, плюс питания уже присоединиться к резистору R3, что обеспечивает постоянное питание катушки реле от источника питания этой схемы. Реле перешло в режим самоподхвата (поддерживает внешним питанием само себя).

В результате мы одним нажатием на кнопку перевели реле из нерабочего состояния в рабочее. Другие группы контактов реле (которые не указаны на этой схеме, но имеются на самом реле) могут быть подключены к различным внешним устройствам, тем самым управляя ими. Если эта схема триггера на реле стоит в проходном выключателе, то начнет гореть свет в определенном помещении, коридоре и т.д.

Поскольку плюс питания переключен на катушку реле, то в это время процесс заряда конденсатора отсутствует, а тот, который был до этого был израсходован на старт включения катушки реле. А то остаточное количество электрического заряда, что могло остаться на конденсаторе быстро разрядится через параллельно стоящий резистор R2. Итак, как известно разряженный конденсатор имеет практически нулевое сопротивление. Как только мы второй раз нажмем на кнопку S1, то получится что этот конденсатор на короткое время закоротит катушку реле. Это равносильно, что мы на короткий промежуток времени поставим перемычку на эту обмотку реле.

Естественно, это приведет к тому, что реле кратковременно отключится и вернет свои рабочие контакты K1 в исходное состояние. В итоге плюс питания обратно начнет заряжать конденсатор, а катушка реле останется без запитки. Схема триггера на одном реле снова поменяет свое  состояние из рабочего в нерабочее. Наша схема проходного выключателя, что взята для примера, отключит освещение в помещении. И эта схема обратно готова к новому циклу включения-выключения.

А зачем нужны резисторы R1 и R3? Стоящие последовательно конденсатору и катушке реле. Ведь они только ограничивают силу тока. Дело в том, что если не будет резистора R1 на конденсаторе, то при подаче напряжения питания для его зарядки в начальный момент возникнет некоторая просадка напряжение в самой питающей цепи. Поскольку, как я ранее упомянул, в разряженном состоянии конденсатор имеет практически нулевое сопротивление. Именно это кратковременное падение напряжения в цепи питания схемы может отрицательно влиять на стабильность работы триггера, что приведет к нестабильным срабатывания данной схемы.

Если же будет отсутствовать резистор R3, стоящий последовательно катушке реле триггера (плюс будет сразу подаваться на катушку реле), то при попытке отключить питание от катушки реле, путем ее замыкания разряженным конденсатором, значительная сила тока питания не даст это сделать. Энергия питания окажется достаточной и для осуществления питания катушки и процесса заряда конденсатора. В итоге при нажатии на кнопку для отключения схемы ничего не произойдет, схема триггера на реле не отключится. Именно резистор R3 делает определенное ограничение по току питания и делает схему работоспособной.

по материалам  https://electrohobby.ru/shem-prost-trig-rele-vvz.html