Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Погрузись в «Свидания с отличиями» — увлекательную романтическую игру в жанре «найди отличия», где ты знакомишься с обаятельными девушками, узнаешь их истории и организуешь незабываемые свидания. Тебя ждут десятки уровней, полных эмоций, и множество очаровательных спутниц!

Свидания с отличиями

Казуальные, Головоломки, Новеллы

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
194
monobogdan
monobogdan
TECHNO BROTHER

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера⁠⁠

2 года назад

К сожалению, в наше время многие старые, но весьма неплохие по характеристикам гаджеты отправляются напрямую в помойку, и их владельцы не подозревают, что им можно найти применение. Сервер, мультимедийная-станция, да даже просто как TV-приставка — люди в упор не замечают сфер, где старенький планшет мог бы быть полезен. Но как быть, если посвящаешь жизнь портативным гаджетам, кодингу и копанию в железе? Правильно: сделать довольно мощную игровую консоль из старого планшета самому! Сегодня вам расскажу, как я сделал свою портативную приставку из планшета с нерабочим тачскрином, Raspberry Pi Pico и 8 кнопок! За рабочим результатом прячется несколько дней работы: поиск UART на плате, разработка контроллера геймпада на базе RPi Pico, написание приложения-сервиса, которое слушает события и отправляет их в подсистему ввода Linux в обход Android. Интересно? Тогда жду вас под катом!

❯ Мотивация


Прошло уже практически 10 лет с того момента, как у меня появилась моя первая портативная консоль. Несмотря на то, что я был заядлым ПК-игроком, я уже успел посмотреть на PS3 и PSP, но денег на их покупку у меня особо не было, да и к тому времени уже был в наличии Android-планшет. Но к моему 13-летию в 2014 году, когда я ходил и выбирал себе будущий девайс на день рождения, отец и мама решили подарить мне мою первую портативную консоль. Изначально, я уговаривал её купить мне целых два девайса, но бюджет был ограничен 4.000 рублей, а я хотел взять смартфон Fly IQ239 и консоль JXD S601 одновременно:


Однако, увидев здоровую 7-дюймовую консоль в магазине TREC (думаю, жители южной части РФ помнят такой), мама уговорила меня взять именно её, мотивируя это «ну и чего ты будешь тыкаться в этот мелкий экран? Возьми большую». После покупки гаджета, я был доволен: играл какие-то игрушки с ретро-платформ, устанавливал игры на Android, сидел в ВК через Kate Mobile. Что еще нужно было школяру? Однако, планшет прожил у меня недолго: с очередного лага я психанул и ударил по нему кулачком, унеся на тот свет и дисплей и тачскрин. Так консолька и пролежала в подвале около 8 лет. Впрочем, мне продолжали импонировать подобные устройства и в прошлом году я купил и написал про несколько подобных девайсов.



Несколько месяцев назад, мой читатель Кирилл Севостьянов с Хабра прислал мне HTC HD2 в качестве донора и планшет Prestigio PMP7170B3G, который был рабочим, но… у него отказал тачскрин. Я всё думал, чего бы с ним сделать и решил реализовать игровую консольку своими руками из подручных средств. Идея крутилась в голове довольно давно, но реализовал я её только сейчас.

❯ Что нам нужно сделать?


Итак, что должно быть у портативной консоли? Чипсет, дисплей, звук, ОС — это всё нам уже предоставляет планшет. Нам остаётся лишь сделать свой геймпад. Давайте подумаем, что нам будет нужно для того, чтобы его сделать и передавать от него события на планшет:

  • Контроллер для геймпада: тут нам подойдет практически любой микроконтроллер, который работает от 3.3в. Выбор большой: Arduino Pro Mini 3.3v, ESP32, RPi Pico. Я остановился на последнем: недавно я взял себе две штучки «пощупать» их — и они мне очень понравились!

  • Физический интерфейс: с планшетом нужно как-то общаться. У нас есть три варианта: USB (не факт, что поддержка преобразователей включена в ядре), UART и SPI/I2C на пятачках тачскрина (потребуют написания драйвера т. к. в android-устройствах нет прямого доступа к SPI/I2C из userland'а). Я остановился на UART: его легко найти на большинстве китайских планшетов, а если не получилось — то на помощь может прийти схема платы.

  • Программная реализация: как это будет работать? Я решил реализовать геймпад в виде сервиса на Android, который слушает состояния кнопок с UART и «инжектит» события напрямую в драйвер ввода. Таким образом, поддержка нашего геймпада появляется даже в самой системе — можно управлять менюшкой или приложениями как с клавиатуры!


    С планом определились, пора начать с программной части: сначала нам обязательно понадобится ROOT-доступ. Его получение на разных девайсах отличается — на prestigio уже был порт CWM и я просто поставил SuperSU. Без ROOT доступа мы не сможем использовать UART!


Теперь нам нужно найти пятачки UART на плате. Разведен он не везде, но в случае устройств на MediaTek — почти всегда, ещё и пятачки подписаны. На моём планшете он нашёлся сразу: был между двух металлических экранов и соответствовал 4-ому каналу UART. Получить к нему доступ можно в /dev/ttyMT3. Я использую ESP32 в качестве UART преобразователя: подпаиваемся к RX/TX, запускаем putty и заходим в adb shell. Определяем бодрейт (скорость) нашего UART порта — на MediaTek он обычно равен 921600, на других чипсетах — 115200. Пытаемся что-то вывести и хоба — мы уже можем «поболтать» с планшетом!

❯ Приложение-сервис


Итак, у нас уже есть доступ к UART и мы можем общаться с планшетом из внешнего мира. Но получить события с кнопок пол дела, нужно их ещё и послать в систему. Для этого есть целых три способа:

  1. InputManager.injectInputEvent — именно этим методом пользуется команда input, которую вы можете использовать через adb. Но увы, он работает только при наличие разрешения INJECT_EVENTS, который доступен только системным приложениям — находятся они в /system/app и подписаны тем же сертификатом, что и остальная прошивка.

  2. Модуль uinput дает возможность создать виртуальное устройство ввода и посылать события из userland'а — т. е. из прикладного приложения. У моего планшета было устройство /dev/uinput, но lsmod показывал, что сам модуль не загружен. Так что отметаем — он есть не везде.

  3. Прямой инжект событий в character устройство — весьма грязный хак, который позволяет инжектить события, не притворяясь системным приложением, но имеет некоторые ограничения. Именно его я и выбрал и о ограничениях ниже.


Сначала нам нужно узнать, какие кнопки поддерживают загруженные устройства ввода в системе. Для этого используем команду getevent -li. Там есть разные устройства ввода, в том числе и тачскрин (если вам нужно симулировать нажатия на экран), мне же подошёл драйвер физических кнопок mtk-kpd. Он занимается обработкой кнопок громкости, включения и т. п. Тут важно обратить внимание на то, что если попытаться послать кнопку, которое устройство не реализует (например пробел), то ничего не произойдет:



Инжект событий я писал на C, т. к. это требовало прямой записи input_event, а в Java прокинул его через Jni. Концепция простая: открываем устройство /dev/input/event2 и посылаем в него события ввода и синхронизации (это обязательно!), которые затем Android читает и обрабатывает:

#include <linux/uinput.h>

#include <fcntl.h>

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

#include <android/log.h>

#include <jni.h>

int uinput;

extern "C" JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_init(JNIEnv *env, jclass clazz) {

uinput = open("/dev/input/event2", O_WRONLY);

__android_log_print(ANDROID_LOG_DEBUG , "Test", uinput >= 0 ? "Open event OK" : "Failed to open event"); }

void emit(int fd, int type, int code, int val) {

struct input_event ie; ie.type = type;

ie.code = code; ie.value = val;

ie.time.tv_sec = 0;

ie.time.tv_usec = 0;

write(fd, &ie, sizeof(ie)); }

extern "C" JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_sendKeyEvent(JNIEnv *env, jclass clazz, jint key_code, jboolean pressed) {

__android_log_print(ANDROID_LOG_DEBUG , "Test", "Send");

emit(uinput, EV_KEY, key_code, (bool)pressed ? 1 : 0);

emit(uinput, EV_SYN, SYN_REPORT, 0);

}

Основной обработкой занимается сервис, который я реализовал в отдельном потоке: он слушает события с UART и посылает соответствующие изменения состояния через sendKeyEvent. На вход приходят простые сообщения вида:

U L где U/D — нажато, не нажато, а L — однобайтовый идентификатор кнопки. В случае L — это влево, R — вправо и т. п. Вся доступная раскладка хранится в словаре. Причём само чтение из UART реализовано костылем с чтением «чужого» stdout, т. к. android-приложения не умеют сами по себе работать с root правами. В теории, это могло дать неприятный оверхед, но на практике никакого серьезного инпут лага это не создает. Не забываем сделать устройство event записываемым — ставим ему права 777:

package com.monobogdan.inputservicebridge;

public class InputListener extends Service {

private static final int tty = 3;

private InputManager iManager;

private Map<Character, Integer> keyMap;

private Method injectMethod;

private Process runAsRoot(String cmd)

{

try {

return Runtime.getRuntime().exec(new String[] { "su", "-c", cmd });

}

catch (IOException e)

{

e.printStackTrace();

return null;

}

}

@override

public void onCreate() {

super.onCreate();

// According to linux key map (input-event-codes.h)

keyMap = new HashMap<>();

keyMap.put('U', 103);

keyMap.put('D', 108);

keyMap.put('L', 105);

keyMap.put('R', 106);

keyMap.put('E', 115);

keyMap.put('B', 158);

keyMap.put('A', 232);

keyMap.put('C', 212);

InputNative.init();

try {

runAsRoot("chmod 777 /dev/input/event2").waitFor();

} catch (InterruptedException e) {

throw new RuntimeException(e);

}

Executors.newSingleThreadExecutor().execute(new Runnable() {

@override

public void run() {

Process proc = runAsRoot("cat /dev/ttyMT" + tty);

BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

while(true)

{

try {

String line = reader.readLine();

if(line != null && line.length() > 0) {

Log.i("Hi", "run: " + line);

boolean pressing = line.charAt(0) == 'D';

int keyCode = keyMap.get(line.charAt(2));

Log.i("TAG", "run: " + keyCode);

InputNative.sendKeyEvent(keyCode, pressing);

}

}

catch(IOException e)

{

e.printStackTrace();

}

/*try {

Thread.sleep(1000 / 30);

} catch (InterruptedException e) {

e.printStackTrace();

}*/

}

}

});

}

@override

public IBinder onBind(Intent intent) {

return null;

}

}

Таким образом, если мы отправляем с ПК «D L» — система считает, что мы зажали стрелку влево, а U L — считает что мы отпустили. Но если mtk-kpd поддерживает стрелки и еще некоторые действия без каких либо проблем, то enter в список обрабатываемых кнопок не входит: придется мудрить! И тут нам приходит на помощь механизм трансляции кодов кнопок в действия: они хранятся в специальных файлах .kl в /system/usr/keylayout/. Я назначил DPAD_CENTER на… кнопку регулировки громкости звука! Ну, а почему бы и нет. :) Таким образом можно переназначить уже имеющиеся кнопки громкости на, например, start/select.

❯ Геймпад


После того, как сервис был готов и отлажен, нужно было реализовать хардварную часть проекта — сам геймпад. В качестве контроллера я, как уже говорил, выбрал Raspberry Pi Pico на базе МК RP2040 — бодреньком контроллере с двумя ARM Cortex-M0 ядрами. Стоит копейки, а в отличии от ESP'шек, его SDK не такое перегруженное и выглядит более приближенным к bare-metal.



На данный момент, я решил развести все кнопки на бредборде — макетной плате без пайки, т. к. макеток для пайки у меня под рукой не было. Сделал примитивный геймпад:



Развел на соответствующие GPIO:



И написал примитивную прошивку, которая отслеживает состояние кнопок. В прошивке точно так же есть словарь, задающий ассоциацию между физическими пинами и «виртуальными» кнопками. При нажатии или отжатии кнопки, программа изменяет стейт и отсылает новое состояние планшету.

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "pico/stdlib.h"

#include "pico/time.h"

#include "hardware/uart.h"

struct keyMap

{

int gpio;

char key;

bool pressed;

int lastTick;

};

keyMap keys[] = {

{

15,

'L',

false,

0

},

{

14,

'U',

false,

0

},

{

13,

'D',

false,

0

},

{

12,

'R',

false,

0

},

{

11,

'E',

false,

0

},

{

10,

'B',

false,

0

},

{

20,

'A',

false,

0

},

{

21,

'C',

false,

0

}

};

#define KEY_NUM 8

int main() {

stdio_init_all();

uart_init(uart0, 921600);

gpio_set_function(PICO_DEFAULT_UART_TX_PIN, GPIO_FUNC_UART);

gpio_set_function(PICO_DEFAULT_UART_RX_PIN, GPIO_FUNC_UART);

sleep_ms(1000); // Allow serial monitor to settle

for(int i = 0; i < KEY_NUM; i++)

{

gpio_init(keys[i].gpio);

gpio_set_dir(keys[i].gpio, false);

gpio_pull_up(keys[i].gpio);

}

while(true)

{

int now = time_us_32();

for(int i = 0; i < KEY_NUM; i++)

{

char buf[5];

buf[1] = ' ';

buf[3] = '\n';

buf[4] = 0;

if(!gpio_get(keys[i].gpio) && !keys[i].pressed && now - keys[i].lastTick > 15500)

{

buf[0] = 'D';

buf[2] = keys[i].key;

puts(buf);

keys[i].lastTick = now;

keys[i].pressed = true;

continue;

}

if(gpio_get(keys[i].gpio) && keys[i].pressed && now - keys[i].lastTick > 15500)

{

buf[0] = 'U';

buf[2] = keys[i].key;

puts(buf);

keys[i].pressed = false;

keys[i].lastTick = now;

}

}

}

}

Собираем всё вместе и тестируем. Хоба, всё работает, мы можем перемещаться по менюшке используя наш геймпад!



А почему бы не попробовать поиграть в какую-нибудь игру? Ну мы же консоль вроде делаем: берём эмулятор NES, биндим кнопки в настройках и наслаждаемся игрой в Марио!

Перейти к видео

❯ Заключение


Реализация этого проекта заняла у меня не так уж и много времени: всего около 3-х дней работы по вечерам. Вероятно кто-то спросит: «а чего ты просто Bluetooth геймпад не купил?». Так это не прикольно ведь. Гораздо приятнее играть в девайс, к которому ты приложил руку сам. Более того, не у всех старых планшетов есть BT. Обошёлся на данной стадии проект недорого: планшет мне подарили бесплатно (точно также у вас дома может лежать подобный), RPi Pico — 350 рублей, кнопки по 10 рублей/штучка.

В целом, я сам по себе обожаю копаться в различных железках и их софтварной части (вспомнить хотя-бы статью про перекомпиляциюu-boot из вендорских исходников для нонейм консоли), а созидать что-то свое вообще вызывает какие-то нереальные всплески эндорфина — оно и понятно! :)

Однако несмотря на то, что мы уже имеем рабочий «прототип», проект далёк от завершения: я намерен довести его до конца и окончательно перевоплотить старый планшет в автономную игровую консоль (и рассказать об этом во второй части статьи). Для этого мне понадобится распечатать корпус и кнопки на 3D-принтере. К сожалению, у меня в городе ни у кого особо нет 3D-принтеров, поэтому начну копить на Ender 3, а от вас, читателей, с удовольствием почитаю мнение в комментариях и советы касательно выбора принтера!

Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать еженедельные статьи про моддинг различных гаджетов!

Показать полностью 10 1
[моё] Смартфон Телефон Идея Своими руками Arduino Embedded Встраиваемые системы Планшет Игры Консоли Самоделки Моддинг Android Linux Java C++ Kernel Покупка Raspberry pi Микроконтроллеры Видео Длиннопост
33
38
RomanAlexandrov
RomanAlexandrov
Arduino & Pi

Квест "Стать профессионалом Embedded Dev"⁠⁠

3 года назад

Всем привет! Меня зовут Роман, 30 лет, из Праги. Ищу единомышленников для совместного изучения сложной, но бесконечно увлекательной IT-профессии Embedded Software Developerа.


Возраст, пол, местонахождение и продвинутость знаний не важны. Пока только разбираешься с Arduino и делаешь первые шаги в С? – это нормально, с удовольствием поделюсь тем, что знаю сам. Уже вовсю компилируешь и прошиваешь STM32 через линуксовскую консоль на Raspberry Pi, а потом микропайкой размещаешь их на тобой спроектированные PCB? – мне придётся тебя догонять, но я постараюсь :)


Будем общаться, делиться знаниями и идеями, координировать план обучения, ставить цели и оценивать успехи, разрабатывать совместные проекты, помогать советами, мотивировать друг друга, поддерживать если собьёшься и уткнёшься в тупик. Вместе любой путь легче! Цель – сплочённо достичь начального уровня профессионализма и наполнить портфолио достаточным количеством проектов, чтобы претендовать на рабочую позицию junior разработчика. Средства – групповой чат в Skype, где мы будем созваниваться минимум раз в неделю; общее облако, куда мы будем аккумулировать книги, руководства, статьи, ссылки на обучающие видео, онлайн-курсы и полезные сервисы, общие наработки, даташиты, схемы, свои заметки, информацию по работодателям и т.п.; другие средства по договорённости (Codewars для тренировки языков программирования? Trello для визуализации плана обучения? GitHub для совместных проектов? Участие в Hackathon-ах чтобы записать награды в свои резюме?)


Имеющих любые вопросы и предложения приглашаю в комментарии, а уже решившихся присоединиться — в групповой чат в Skype: https://join.skype.com/MiEoLCg6vG2g =)

Квест &quot;Стать профессионалом Embedded Dev&quot;

UPD: По многочисленным просьбам группа переезжает в Telegram: https://t.me/+pvYOk_AV4h81Mjg0

Показать полностью 1
Образование Профессия Обучение Мотивация IT Программирование Разработка Embedded
43
10
LizaNyliza
LizaNyliza

Nvidia nano Jetson или Raspberry pi 4B для новичка?⁠⁠

4 года назад

Привет Пикабу!
Я не очень умею писать, так как не очень общительная, это мой первый пост, не судите пожалуйста строго :)

Знающие люди помогите советом по выбору одноплатного компьютера. Я учусь на втором курсе "на программиста" и в последние пол года заинтересовалась робототехникой. Перепрошла школьный курс физики затем ТОЭ и несколько книг ( Рудольфа Свореня и Юрия Ревича и Чарльза Платта и т. д.) по электронике, а сейчас только начала изучать STM32.

И тут передо мной встал вопрос, а какой выбрать одноплатный компьютер. Так как появилась идея сделать в течении ближайших 6-8 месяцев один интересный проект со слежением за летающим объектом и нейросетью, но микроконтроллера под него не хватит.

Я читала про Nvidia nano jetson, он как раз специализирован под нейронные сети. Однако я боюсь что не смогу разобраться в нём с налёту. Как считаете могу ли я взять "для учебы" с начала Raspberry pi 4B, а потом уже полученные знания (в интернете вроде много материалов по нему) применять для более продвинутых систем? Просто боюсь что малина окажется чем то вроде Ардуино в микроконтроллерах, то есть слишком высокоуровневой штукой пригодной лишь для обучения детей или как хобби для взрослых, и что знания полученные на малине особо не пригодятся. Или же можно начинать с неё?

Заранее большое спасибо!

Nvidia nano Jetson или Raspberry pi 4B для новичка?
Показать полностью 1
[моё] Электроника Микроконтроллеры Arduino Raspberry pi Nvidia Программирование Физика Компьютер Embedded Компьютерная помощь
22
10
atk27
atk27

Как я упоролся с одним фриланс сервисом⁠⁠

4 года назад

Мой первый пост, не кидайте тапками, чукча не писатель, Grammar Nazi будет негодовать, лонг-рид.


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


Забавляюсь перепиской со службой поддержки мошеннической фриланс платформы. На данный момент это уже 5+ месяцев, недо-300 писем в обе стороны (примерно 50%50 – они пишут, я отвечаю). Сумма смешная, в положительный исход не верю, зато нашу переписку нахожу очень забавной. Да и вообще, каждый развлекается как хочет: они воруют, я переписываюсь с ними, стараюсь не давать закрыть тикет.


Но обо всем по порядку. Сначала про мой путь джедая фрилансера.


Когда у нас начался локдаун в марте-апреле, проект в котором я работал решили «оптимизировать», и все контракторы, в числе которых был и я, ушли на китайскую гору. С работодателем нам вполне повезло - меня не уволили, хотя и сократили рабочие часы с 8 до 4, что привело бы к сокращению и зарплаты в 2 раза, но т.к. были еще и всякие бонусы, которые остались неизменными, просто доход похудел на 35-40%, что неприятненько, но приемлемо.


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


Нормальный человек начнет читать все эти ваши интернеты на предмет отзывов про площадки, смотреть видеообзоры на ютюбчике. Надо бы и мне бы так, но я выбрал путь джедая, и, увы, зря.


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


Итак, начал я параллельно с двумя этими площадками, но первая меня немного разочаровала количеством проектов по моей теме (embedded sw/sw+hw development), и еще там было пару моментов, которые тануна хоть и не cущественны, но неприятны лично для меня. А вот на второй площадке оказалось проектов не в пример больше, что придало мне идиотизма оптимизма и веры в себя.


На подобных платформах обычно играет роль рейтинг, т.е. количество выполненных проектов и положительных отзывов. У меня рейтинги были по нулям, их надо было прокачать. Время есть, тылы прикрыты - какое-никакое финансирование на это время имеется, так что целиться на заработок прям с самого начала не обязательно, и можно спокойно прокачать рейтинг. Проектов по embedded в целом немного, куда можно попасть с низким рейтингом - вообще нет еще меньше. Как правило, 3-5 проектов надо иметь выполненных отлично, и уже можно выбирать куда подавать заявки. Для прокачки профиля в таких условиях, я вывел для себя четыре основных правила:

1. Читаю описание проекта внимательно, не смотрю на стоимость, подаю заявку если смогу выполнить проект быстро и в срок - подаюсь, цену ставлю около медианы по уже поданым другими соискателями заявкам. Никаких «а, не, тут мало бюджета», никаких «о, тут $100 бюджета, но это нереально - работы на месяц, поставлю-ка я $5к».

2. Проект выполняю так, как будто бы от этого зависит моя жизнь – качественно, внимательно пересматриваю код, тестирую все по 10 раз перед отправлением, обязательно - на железе (выбору дев-бордов и контроллеров у меня позавидует mouser среднего размера магазинчик). Никаких «я так уже делал, оно будет работать», никаких «в симуляции взлетело – отправляю». Всегда только тесты, только на железе, только в релизе.

3. Подаю заявки ровно в таком количестве, чтобы если все вдруг приняли, я бы смог все выполнил в срок, так что никаких «отправлю еще заявок на 10 проектов, все равно не все отзовутся». Сроки на каждый проект ставлю тоже с учетом уже поданных заявок, сделаю раньше – заказчик вряд ли огорчится.

4. Заявки не отменяются: подал – значит подал, приняли – значит я работаю. Так что никаких «подам, а если что – потом подумаю и откажусь».


На апворке с проектами по моей теме дела обстояли чуть хуже, и основной упор был сделан на «фрилансер». Там нашел первый проект, успешно его сделал, осчастливив заказчика чуть более чем полностью (как раз в этой теме у меня опыт огромный, много проектов «с нуля» спроектировано и собрано, так что это было не сложно и интересно), он написал годный отзыв, сказал что тема будет развиваться, и он будет рад продолжать сотрудничество.

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


И проект был не очень сложный, и контроллер этот знаю вдоль и поперек, и трудностей особо не было, и с со всеми модулями этого проекта работал раньше, и все есть у меня в наличии, и все должно было бы закончиться хорошо. Не то чтобы совсем гладко – были моменты (я написал спецификацию, заказчик утвердил, потом просил внести правки разной сложности на разных этапах готовности - короче все как обычно, хе-хе), но в целом неплохо. И все вполне быстро взлетело. У меня. А вот у заказчика – ну никак не взлетает! Один датчик, как раз самый важный, отказывался выходить в рабочий режим, а без него весь проект теряет смысл. Я даже поменял тестовую борду: я делал на аналогичной, прошивка бы взлетела и на искомой борде, но раз уж что-то не заработало, то просто пошел и купил борду "в точности как у заказчика" (примерно треть цены проекта, но в любом случае борда не скиснет), результат, как и ожидалось, не изменился.


Те, кто в теме, знают: такое бывает. Как примеры, только за последние полгода из моего личного опыта (с начала лета, если точно):

* «У меня ничего не работает! Да, все перемычки как ты написал! Да, сверился с фоткой которую ты прислал! Да, все провода подключил! Да, питание в норме, выходы с датчиков есть, плата не стартует!». Приезжаю (~80км в одну сторону), спрашиваю «а это что?» - «ой! Перемычка! Да я ж ее проверял! Была на месте! Как так же ж?», перестваляет перемычку, все работает, мы пьем кофе, курим, я еду обратно.

* Еще пару раз было скромнее и ближе – 20+ км пути чтобы, например, батарейки перевернуть  - хорошо что защиту от переполюсовки решил поставить. Ну и третий пример аналогичен по своей глупости и расстоянию.


И это все случаи после того как мы по скайпу/вайберу перепроверяем все, я подробно пишу и рассказываю что может помешать запуститься, да и люди с другой стороны – толковые инженера, с которыми мы сработались, не первый раз работаем вместе. Так что человеческий фактор часто решает многое. Бывает человек устал, или торопится, или просто "замыленый глаз", или еще 100500 всякого разного. Итог один: бы-ва-ет.


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


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

Отзыва я так и не дождался, заказчик на связь вышел один раз, написав что новый датчик не решил проблемы. Я напомнил что готов помочь, можем колдовать дальше, на что получил ответ "уже, наверное, не стОит". У меня очень неприятный осадочек проект оставил – не люблю когда заказчик не доволен результатом (та даже когда доволен, но не в восторге - уже не так хорошо), мне очень жаль что не смогли все запустить с его стороны, и даже увереность что я сделал все возможное (и немножко больше) со своей стороны, не сильно успокаивает: явно же какая-то мелочь ушла от внимания!


Потом был (нет) еще один заказчик, которому нужен был мой специфический опыт в classified закрытой теме, с почасовой оху достаточно высокой оплатой, и могло бы все закончится красиво для всех – я за полгода-год заработал бы несколько килограмм денег, заказчик был бы с качественно выполненным проектом, фриланс-площадка – со своим процентом. Но все уперлось в обсуждение деталей: общение за пределами площадки не допустимо по правилам площадки (и все попытки рубятся в мессенжере достаточно серьезно, да и мне не особо хотелось нарушать правила), голосовой звонок не возможен (как минимум до «подписания контракта», а может и просто нет такой фичи у них), готовой точной спецификации и стадии готовности сопряженных устройств у заказчика не было, в тексте обсуждать такими темпами (заказчик долго отвечал) такие объемы деталей – так на полгода переписки при попутном ветре, ну а я не берусь за работу если не уверен хотя бы на 99.9999% что все сделаю качественно и вовремя. Проект был вкусный, я связывался с тех-поддержкой "фрилансера" с объяснением ситуации и просьбой разрешить в виде исключения общение за пределами площадки, и, естественно, получил отказ. Так что со слезами на глазах было принято волевое решение не подавать заявку на очень вкусный проект из-за правил площадки.


Ну и наступает момент истины - пора бы подержать в руках свои пиастры! Пора выводить деньги! Подаю запрос - вывести все (там только два проекта, суммы детские, так что в основном надо было проверить работает ли главная функциональность сайта!). Первый вывод денег занимает сколько-то там дней (неделю, что ли), и я терпеливо жду. И вот в тот день когда был трансфер, мне вдруг приходит письмо с отличной новостью - денег за второй проект я не получу по причине «подозрительной активности в аккаунте». Зашел в свой аккаунт, вижу - типа transfer pending, и обратный отсчет от 30 дней. Типа "не волнуйтесь, в течение этого времени все будет решено, деньги получите, никаких действий от вас не ожидается". Ну хорошо, я не голодаю, подожду свои $100, месяц – не есть проблема. Хоть за первый проект деньги успешно вывелись, уже хорошо!


Работать пока не получу в руки уже заработанные деньги я не захотел, проверял только активные заявки на проекты, но никто не отозвался. Прошло чуть больше месяца, я зашел на сайт посмотреть как там дела. А там счетчик дней – минус 3 дня! О как! Ну что ж, пора писать в тех-поддержку!


Пишу – так, мол, и так, я вот тут проект выполнил, заказчик подтвердил, перевод на месяц заблокировали, не хорошо, ну да ладно, раз уж вам так надо – пользуйтесь моими мульйонами, я подожду. Но вот кагбэ уже прошло 30 дней, и счетчик ушел в минус. Нет ли у нас, уважаемые, какого-то пути, чтобы не переполнять int32 счетчиком дней по моему проекту? Или до скольки он считать вообще будет? (дисклеймер – до -118 только)


Служба поддержки отвечает что есть какие-то проблемы безопасности, и для моей же безопасности деньги у меня отняли и хрен там отдадут. Сначала я принял все как должное – ну кинули, бывает, если им нужнее – пусть подавятся оставят себе, с меня не убудет. Но тут черт меня дернул уточнить – как же ж так, дорогие серы и мьсё, выходит, что для моей же безопасности у меня отжимают мои же кровно заработанные? Да и вообще, что произошло? И вот тут началось такое, что остановиться я так до сих пор и не смог... было то интересно, то смешно, то тупо. В общем, судите сами.

Суть переписки в общем сохранена, хотя и скорее тезисно, стиль схож, а вот хронология – не очень. Копипастить все письма не стал - напомню, под три сотни, и чаще на пару страниц, чем на пару строчек, так что мне было бы долго, а вам - скучно.

Итак, поехали:


(я) - Вы крадете у меня для моей же безопасности?

(fl) - мы не крадем, мы временно блокируем. деньги на вашем счету, просто заблокированы.

(я) - Нет, простите, все что у меня на счету – я могу использовать, если нет проблем с моим счетом. Скажите как я могу исправить ситуацию со своим счетом, какие вам документы предоставить, и отдайте мне мои деньги.

(fl) - проблемы со счетом у вашего job poster ака заказчика, и как только заказчик решит проблемы со своим счетом - мы разблокируем ваш вывод денег. мы только что отправили ему письмо (речь идет, естсественно, об email).

(я) - только сейчас отправили? а как же этот месяц, что я терпеливо ждал (в оригинале была эпичная фраза Шелдона - I suffered in silence)? и вы только сейчас решили отправить письмо?

(fl) - не переживайте. мы отправили письмо еще в самом начале. и потом отправляли письма (ага, думаю, "их есть у нас, мы компания серьезная, и можем себе позволить", ха-ха) сейчас мы отправили очередное письмо.

(я) - так. то есть вы отправили уже несколько писем заказчику, потому что есть какие-то проблемы с его аккаунтом. и он не ответил вам. и времени прошло уже более месяца. а вам не кажется что, возможно, он и не ответит? и вообще, подождите, какое отношение проблемы со счетом третьего лица имеют к моим деньгам? Вы проверили все данные на момент заключения сделки, взяли деньги с заказчика, и после того как деньги были переведены мне – возникли какие-то проблемы? После окончания заказа и подтверждения оного заказчиком, мы с ним вообще никакого отношения друг к другу не имеем! Вы провели свою проверку безопасности до перевода? Провели. Деньги мне перечислили с проверенного аккаунта? С проверенного. Какое отношение теперь какие-то ваши проблемы с безопасностью счета третьего лица имеют к моим заработанным деньгам?

(fl) - когда вы заключали сделку, проверка была пройдена и все было хорошо. Потом, по причине подозрительных действий, мы заблокировали счет заказчика. Не беспокойтесь, мы уже отправили письмо заказчику чтобы он решил все проблемы со счетом.

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

(fl) - мы можем предложить вам 3 месяца премиум бесплатно, вы сможете найти больше проектов. Мы отправили еще одно письмо заказчику с просьбой доказать происхождение денег. Как только он подтвердит законность его денег, мы освободим платеж. Пишите если есть еще вопросы.

(я) - 3 месяца премиум? Что, простите? Чтобы я больше нашел проектов, из которых у вас будет больше выбор что воровать? Серьезно? Нет, спасибо, я дождусь получения этого платежа, а там посмотрим. До того как вы вернули мне мои деньги, такое предложение звучит оскорбительно. Еще одно? То есть вам не ответили на первые N, вы думаете – почтовых голубей застрелили по пути? Или в проводах потерялись? Или как? Если вам не ответили на первые N, то у меня есть большие сомнения что вам ответят на следующие: мне кажется вас просто игнорируют! Вопросов других у меня не будет пока мы не решим первый и основной: где карта, Билли? Верните деньги!

(fl) - Спасибо что обратились к нам с вашим вопросом. Мы хотим вам сообщить что мы написали еще одно письмо заказчику. Также мы просим обратить внимание на пункт 18 наших правил, на основании которого мы заблокировали ваш платеж, мы не воровали у вас деньги.

(я) - (смотрю этот пункт 18 – там 4 подпункта, ни один не соответствует ситуации) а какой подпункт этого пункта 18 соответствует ситуации, укажите, пожалуйста, если не сложно.

(fl) - пункт 18 наших правил, да. Прочтите, пожалуйста. И свяжитесь с вашим заказчиком, попросите его решить проблемы на нашем сайте.

(я) - (захожу на страничку заказчика – заблокирована) хм. Простите. Согласно вашим правилам, я не имею права связываться никаким образом с заказчиком вне вашего сайта – из-за этого я мля проморгал кошерный проект! А теперь – «свяжитесь»! Вы сами читали ваши правила? На основании какого подпункта этого пункта 18 ваших правил вы заблокировали мои деньги?

(fl) - на основании пункта 18 же! Свяжитесь с заказчиком, попросите его решить проблемы с его аккаунтом, это же в ваших интересах!

(я)  - ребята, он уже не мой заказчик. Сразу после того как подтвердил выполнение мной проекта. В то время у него с аккаунтом не было никаких проблем. Так что, как по мне, теперь это ваша головная боль. Для меня все просто: я зарегистрировался, отправил вам мой паспорт, свои данные, телефон, имейл, что вы там еще хотели, привязал банковский счет, еще чего. Нашел проект, подал заявку, меня выбрали, я заплатил вам ваши 10%, выполнил проект. Верните мне мои деньги!

(fl) - уважаемый пользователь, уделите немного вашего времени и прочитайте наши правила! Мы имеем правило заблокировать ваш платеж согласно п.18 наших правил. Свяжитесь с заказчиком, пусть он решит свои проблемы, и мы разблокируем ваш платеж!

(я) - а вы не могли бы прочитать свои правила? Аккаунт заказчика заблокирован! У меня про заказчика есть только название страны со 150+млн жителей, упоминание про небольшой городишко (коих вряд ли меньше сотни), почти наверняка - пол, и возможное (даже не 50%50) имя заказчика. Мне что, лететь в Россию, искать? Или как вы предлагаете мне связаться с заказчиком? Согласно вашим правилам, нельзя общаться напрямую, у вас тут нельзя обмениваться контактами, вы заблокировали заказчика. Расскажите как вы видите исполнение вашей рекомендации – «свяжитесь» ! Мне интересно! (ниже идет копи-паста этой части 18 их правил, под каждым из нескольких подпунктов подписано почему я считаю что это не применимо к моей ситуации, и вопрос – согласно какого подпункта именно они заблокировали платеж)

(нет ответа, через 2 суток без активности тикет закрывают).

(я со словами "непорядок!" и "утомили!" переоткрываю тикет)

(я) - денег я так и не получил, тикет не надо закрывать.

(fl) - спасибо что связались с нами! Мы уже связались с вашим заказчиком, как только он устранит проблемы со своим аккаунтом, мы вам вернем деньги. Мы можем предложить вам бесплатно премиум-аккаунт на N месяцев, чтобы вы смогли быстрее компенсировать ваши потери на данном проекте.

(я) - вы ж понимаете что для меня это звучит как «когда солнце встанет в количестве двух штук, а уйдет в закат в количестве четырех котенков, мы вам вернем деньги». Про «премиум» я вам уже говорил, будьте добры, потратьте немного времени на прочтение предыдущей переписки по данному тикету. Я не хочу работать над тем чтобы компенсировать то что вы украли. У меня есть сомнения в надежности вашей площадки, если вы воруете даже такие копейки у начинающих пользователей. Я не знаю зачто вы берете комиссию в 10%, если вы не обеспечиваете безопасность. Давайте думать другой вариант! Если вы отправили уже больше десятка писем, и вам не ответили, вы что, серьезно думаете что отправить еще одно – как раз есть решение проблемы? Вы, скорее всего, еще после третьего письма оказались в спаме, или брокированы. Какие у нас есть альтернативные варианты?

(fl) - а давайте мы вернем деньги заказчику, а вы с ним свяжетесь чтобы он их вам передал? Или мы можем отправить еще одно письмо.

(я) - В каком смысле: оправите мои деньги кому-то? Я не даю свое согласие вам распоряжаться моими деньгами на моем счете (а по вашим многократным заверениям это так и есть – деньги мои, и на моем счете). Мои деньги должны быть переведены на мой банковский счет. Без вариантов. Желательно два месяца назад, в крайнем случае сейчас. В каком смысле: я потом свяжусь с заказчиком, чтобы он мне их перевел? Как я свяжусь? Я кроме страны (в которой 150+млн жителей) ничего не знаю. Как мне по таким критериям связываться с заказчиком? Почитайте свои же правила – там написано что так нельзя! Давайте не будем их нарушать? Переведите. Мне. Мои. Деньги. И, будьте добры, читайте переписку, или хотя бы последний вопрос, перед тем как отвечать на него.

(fl) - нам нужно подтверждение происхождения денег у заказчика, мы хотим удостовериться что эти деньги не есть результат преступной деятельности. Пока заказчик не подтвердит происхождение денег, мы не сможем их освободить. Это сделано в целях вашей же безопасности. Мы по-прежнему можем предложить вам 3 месяца премиум бесплатно (в переписке данное непристойное предложение мелькало существенно чаще).

(я) - заверяю вас, единственная опасность для моих денег – это ваш сервис. Больше ничего моим деньгам не угражает. Если что-то и есть – я готов принять все возможные риски на себя. ВЕР-НИ-ТЕ ДЕНЬ-ГИ! Я слышу ваше предложение премиума бесплатного как «ты лох, давай, ипашь, а мы будем воровать», так что если мне еще раз предложат – я не могу обещать что смогу продолжать культурно вам объяснять почему это оскорбительно. Будьте добры, оставьте ваш премиум для тех у кого вы не воровали. И читайте письма перед тем как на них отвечать – вам за это платят.

(fl) - мы не воруем деньги. Они на вашем счету, просто заблокированы.

(я) - (скидываю ссылку на вики где описано что такое есть воровство: изъятие материальных благ без согласия и без возможности собственника воспрепятствовать, и без последующей передачи обратно; привожу аргументы – я не могу восприпятствовать, вы изъяли, я с этим не согласен; возвращать вы собираетесь только в случае «если солнце взойдет на севере, и их (солнц) будет три». Это вообще не вариант решения, это – отговорка. Попросил подумать над альтернативными вариантами).

(fl) - мы просим вас ознакомиться с нашими правилами. Согласно п.18 мы заблокировали ваш платеж. Учтите: мы только площадка для встречи фрилансеров с заказчиками.

(я) - о! Итак, ваша коллега сказала что деньги на моем счету (хотя это не так, ибо на своем счету я могу пользоваться деньгами, или знаю что мне надо сделать чтобы мог, но это же не наш случай, верно?). Теперь вы говорите что вы – только площадка? Так не лезьте не в свое дело, и не блокируйте мои деньги, пока у заказчика нет претензий к качеству работы! У заказчика ж нет претензий? И отлично! Раз уж вы, будучи только площадкой для встречи, по ошибке, заблокировали мои деньги, то ОСВОБОДИТЕ МОЙ ПЛАТЕЖ, причем лучше чтобы полгода назад! Ладно, уже, наверное, не успете. Хорошо. Давайте перенесем на сейчас. Вот прямо сейчас и разблокируйте! Спасибо за понимание. Жду деньги и извинения.

(fl) - свяжитесь с заказчиком чтобы он решил свои проблемы на своем счету, это в ваших интересах, содействуйте со своей стороны.

(я) - ребята, это ваша работа. Давайте так: вы не будете заниматься моей работой, а я не буду делать вашу работу! У меня к заказчику претензий нет: он опубликовал проект, я подался, он оплатил, я выполнил, от подтвердил. По идее я должен был получить свои деньги, которые через вас просто передали мне, а вы хотите не только свои 10% взять, а еще и остальные 90% не отдаете! Апворк, например, покрывает такие проблемные случаи, даже если заказчик не заплатил (есть там как провернуть такую махинацию, проверено – таки апворк платит фрилансеру, а потом разбирается с заказчиком). А вы? Это у вас такая бизнес-модель? Воровство и мошенничество? В моем понимании, такие сервисы берут высокую комиссию для обеспечения безопасности сделки, и являются гарантом. Так же написано и у вас в правилах. Только работает у вас все наоборот – взять 10% чтобы потом случайным образом украсть и остальное? Через вас их просто передал заказчик мне, вы оставили свой процент (на самом деле сняли у меня со счета при подписании контракта, но не принципиально), и потом вы должны были мне эти деньги перевести. Про какую безопасность идет речь? Только вы представляете угрозу моим сбережениям в данный момент!

(fl) - поймите, таковы правила: нам нужно подтверждение происхождения денег у заказчика! Мы отправили ему еще одно письмо, как только заказчик решит проблемы со своим аккаунтом – мы вам переведем деньги. Это сделано в целях безопасности. Транзакция заблокирована как связанная с риском.

(я) - Происхождение денег? Хм. Давайте подумаем. Заказчик зарегистрировался на сайте для того чтобы найти исполнителя единственного проекта (собсна и я так оказался на вашем сайте много лет назад), опубликовал проект, внес сумму вам как гаранту, выбрал меня для выполнения проекта, получил свой проект, подтвердил что все ОК, и больше сайтом не пользуется.Так что, во-первых, ему не интересно ничего вам предоставлять, никакие документы: зачем? Проект выполнен, деньги переведены. Все отлично, и его совесть чиста! Во-вторых, Если я правильно понял вашу формулировку про «происхождение денег», то... вы блин шутите? думаете что эти $100 получены за торговлю наркотиками/оружием? Вам что, справку о доходах надо? Или справку из налоговой, что нет задолженности по налогам? Что вообще у вас происходит? В-третьих, если вы – только площадка, то не лезьте не в свое дело, и разблокируйте платеж. Если вы фриланс-платформа, то переведите мне деньги за работу, и решайте потом проблемы со счетом заказчика сколько угодно! В-четвертых, «Рисковые операции» со счетом – вы боитесь что будет запрос на возврат денег? Так через несколько месяцев после платежа нереально ни с какой платежной системой, на сколько мне известно. У меня нет доступа к информации о виде платежа и платежной системы заказчика, а у вас есть. Вы проверяли эту информацию? За что вы получаете зарплату?

(fl) - спасибо что вы связались с нами. Мы только что отправили еще одно письмо заказчику с просьбой решить проблемы с его аккаунтом. Как только это будет выполнено, мы вас обязательно уведомим.

(я) - этим письмом я ставлю вас в известность: я собираюсь предоставить все детали и подробности, включая, но не ограничиваясь: письмами из данной переписки и деталями проекта, со своим адвокатом, для дальнейшего составления претензии и передачи ее в суд, и при необходимости и с другими лицами.

(конечно же я понимал что овчинка выделки не стОит и до разговора с адвокатом, который дал вполне очевидный ответ в своем стиле: «какая-какая сумма? $100к? А, просто $100? тышо, atk27, совсем плохой стал? вот так плохо живут сейчас програмисты-электронщики? тебе денег дать до зарплаты?», но я все же предыдущее письмо написал и отправил. Возражений не было, так что теперь я имеию законное право выложить эту всю переписку сюда, хоть в полном объеме, хе-хе)


Несколько раз тикет закрывали: я не знал про 48 часов бездействия, потом думал что только с моей стороны, т.е. если я отправил письмо, а мне не ответили, то тикет не смогут закрыть; потом не уследил за этими 48 часами. Было очень много повторений ответов и вопросов, вроде «ждите, мы отправили еще одно письмо» и «деньги ведь на вашем счету», но им таки еще есть чем меня удивить - встречаются настоящие жемчужины, вроде "мы просто площадка для встречи фрилансера и заказчика".


Помимо того что это интересно, и стало своего рода хобби, мне кажется что я еще делаю доброе дело: данный сервис аналогичным образом упер деньги кмк явно больше чем у тысячи пользователей. Если бы каждый с ними обменялся 300-500-10,000 письмами, они бы, может быть, не так свободно мошенничали.


В последнее время была запарка на работе, и писать длинные письма перестал, но давать закрывать тикет им не хочу, так что ограничивался стандартным «здравствуйте. Заказчик ответил уже? Вы не обдумали возможные альтернативные решения без участия заказчика? С наилучшими пожеланиями, А.»


Немножко скринов:

счетчик дней замер на минус 118 дней, дальше - то ли его остановили после очередного письмо, то ли дальше не считает.

ну и количество писем в нашей оживленной переписке:

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


Баяномер упоминал картинку "минпромторг России" и постик "с днем рождения".


Тег "записки фрилансера" вроде подходит, про "микроконтроллеры" не особо упоминались напрямую, но, может, больше коллег прочитают, може кому будет интересно. "упоротость" как по мне имеет место быть. Что еще из тагов добавить - даже не знаю. Рекомендуют тег "негатив", но я не согласен, ибо настроен позитивно, и с юмором смотрю на ситуацию, старался и постик в этом ключе сделать.

Фейл мой, упоротость моя, тег «мое».
Показать полностью 3
[моё] Embedded Первый пост Фриланс Фрилансер Микроконтроллеры Упоротость Мошенничество Длиннопост Негатив
8
648
kolyandex
kolyandex

Расширяем функционал штатной аудиосистемы⁠⁠

6 лет назад

Всем привет. Являюсь обладателем десятилетнего японца, в котором меня все устраивало, за исключением штатной аудиосистемы - в ней отсутствовал Bluetooth. Передо мной стояло три варианта решения этой проблемы:


1. Купить затычку в прикуриватель и не выпендриваться.

2. Купить на разборках за немалые деньги штатный блок Bluetooth + голову поновее.

3. Сделать что-либо самому, но так, чтобы не урезать имеющийся функционал.


Как вы поняли из названия, я выбрал путь номер 3. (не тот, о чем вы подумали)


Итак, имеем:


Штатная аудиосистема, которая состоит из головного устройства и панели, которая выглядит так:

В ней есть режим AUX, который позволяет подключать внешние устройства для прослушивания музыки. Почему бы не воспользоваться им в своих целях? Примерное тз - сделать так, чтобы определенной комбинацией клавиш запускался режим AUX, но в то же время все данные на экране полностью переходили под наше управление и звук в AUX перенаправлялся из Bluetooth модуля. Будем разбираться с проблемами по мере их поступления.


Задача: выяснить, как осуществляется обмен данными между панелью и головой.


К счастью, в открытом доступе можно найти мануал со схемой, из которой становится ясно, что интерфейсом между головой и панелью является обычный UART, он же COM порт на ПК.

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

Следующим шагом был этап выбора микроконтроллера для реализации этой содомии) Выбор пал на STM32F103, на борту которого целых 3 UART и есть поддержка CAN шины (почему бы не добавить и ее). В качестве Bluetooth модуля изначально был куплен CSR8645, первая версия была с ним, но он не мог выводить названия треков, а также не имел управления по цифровой шине, поэтому был куплен прямо from USA модуль под названием Bluegiga WT32i, в котором было все, что нужно и даже больше - поддержка вывода цифрового звука и поддержка lossless кодека AptX. В течение пары месяцев, когда было свободное время велась разработка прототипа. Были познаны все ужасы HAL и прелести SPL. Досконально изучены UART и DMA в микроконтроллере, т.к. связать все это вместе и чтобы оно работало без тормозов и сбоев было необходимо.


Отладка обмена:

Отладка и настройка Bluetooth-модуля с внешним ЦАПом

Затем все это добро было внедрено в головное устройство, но так, чтобы можно было без проблем прошить и снять для доработки. В качестве интерфейса был задействован кабель HDMI и разъем из мертвого ноутбука. Изнутри все выглядело так:

Снаружи вот так:

Корпусом выступил старый блок питания от ноутбука.


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

Ну и результат после месяца ожидания:

На фото и модели платы немного отличаются, был добавлен CAN трансивер и еще по мелочи.


Вечер на пайку и все заработало с первого раза, чему я очень удивился.

Корпусом выступил все тот же блок питания.


Далее был добавлен CAN трансивер, с помощью которого можно получать кучу интересных и не очень данных из CAN шины автомобиля. Я пока использую только вывод расхода топлива в час, т.к. штатный бк такой функцией не обладает.

Вид в сборе

Ну и видео работы

Примечание. Как вы могли заметить, русский текст выводится транслитом, более-менее умным. Например буква ч заменяется на ch и т.п., чего штатными средствами достичь никак бы не удалось. Ну и в добавок поддержка lossless аудио.


Если кто захочет повторить, пишите, у меня еще осталось 9 плат. Прошивку скину :)


Тем, кто жаждет подробностей. Задействованы все 3 UART. Один на дисплей, один на клавиши и один на Bluetooth модуль. Звуковой поток переключается аналоговым мультиплексором. CAN используется тоже из STM32. Стоит внешний ЦАП PCM5102, звук очень недурный. Подключается между головой и проводкой автомобиля. Разъемы были найдены на разборке за дофига денег)


Вышло дороже, чем купить штатную систему Bluetooth, но удовольствия от разработки оно принесло намного больше)


iam@kolyandex.su

Показать полностью 12 1
[моё] Своими руками Электроника Mitsubishi Embedded Stm32 Видео Длиннопост
178
27
kababok
kababok
Жизнь пикабушников за границей

Embedded world 2019 в выставочном центре Нюрнберга⁠⁠

6 лет назад

Всем интересующимся хотелось бы сообщить или просто напомнить, что на следуюшей неделе, во вторник 26.02.19 в выставочном центре г. Нюрнберг стартует одна из самых крупных международных выставок в сфере embedded electronic («встраиваемые системы») — embedded world 2019.

Выставка проходит, как обычно, на протяжении трёх дней — и предоставляет массу интересного материала для ознакомления с самыми новыми тенденциями в сфере современной электроники и соответствующего программного обеспечения — а также в отраслях промышленных автоматизации, робототехники, цифровых технологий и всяческих сетевых тенденций (Интернет Вещей/IoT и прочие плюшки).

В этом году упор делается на всевозможные типы дисплеев, человеко-машинные интерфейсы (HMI), машинно-машинную коммуникацию (M2M), графические оболочки пользователя (GUI) и многом другом.


Маленькая хитрость

На стенде издательства «Weka Fachmedien» после заполнения небольшого опросника вы получите возможность бесплатно подписаться на целый ряд обычно недешёвых профессиональных журналов по разработке электроники, по электротехнике, промышленному дизайну и современной автомобильной электроники. Абонемент автоматически НЕ продлевается и не становится платным — так что вы ничем не рискуете (но бланк всё же прочитайте перед подписыванием :).


Бесплатные билеты

Бесплатные билеты раздают вот здесь:

www.messe-ticket.de/Nuernberg/embeddedworld2019/Regis...



Разное

Собственно, как интересное могу порекомендовать стенд компании Vector (он один из самых больших) — там софт и железо для разработки и калибровки автоэлектроники представлены, ими все автопроизводители и поставщики автокомплектующих пользуются.

Недалеко находится и стенд их прямого конкурента, компании ETAS — но у «Вектора» обычно гораздо информативнее, интереснее и насыщеннее, хотя с ETAS работают непосредственно, например, BMW и Volvo.

Показать полностью
[моё] Германия Нюрнберг Embedded Выставка Электроника Gui M2m-технологии Текст
7
24
kababok
kababok
Жизнь пикабушников за границей

Современное автомобилестроение — ликбез. Вводная часть⁠⁠

7 лет назад

Статья написана для сайта "Гиктаймс", размещаю и здесь с некоторыми корректировками.
Первые несколько абзацев уже публиковал здесь - в текущей статье они проапгрейдены и расширены.
Если вы интересуетесь темой глубже - рекомендую заглянуть и в комментарии на "Гиктаймс".
Исходная версия лежит по ссылке: https://geektimes.ru/post/298445/

Автомобили интересны если не только лишь всем, то очень многим. По разным причинам.

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

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

«Доколе?!» — спросите вы. И будете правы — ситуацию необходимо исправлять.


О себе и о статье

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

Дальнейший текст — своеобразный итоговый конспект знаний и наблюдений, собранных автором из различных источников и из рабочего опыта.

В целях экономии времени всё будет шифром многое будет записываться тезисно — с само собой разумеющейся возможностью обсуждения написанного в комментариях.

Вроде бы всё.

Покатились! (привет, Гётеборг!)


Разбираемся с определениями и терминами

0. Немного о «бортовом компьютере»


Граждане!

Пожалуйста, нигде и никогда в профессиональном общении не используйте определения "центральное управляющее устройство автомобиля", "бортовой компьютер автомобиля" или даже "центральный бортовой компьютер автомобиля"!

Причина сей просьбы банальна: такового устройства в подавляющем большинстве современных автомобилей с точки зрения архитектуры внутренних коммуникационных сетей попросту не существует.

По сути современное авто являет собой эдакую моторизированную компьютерную сеть с как минимум двадцатью специфическими микрокомпьютерами в своем составе. А в среднем — совсем даже с 30-40-50-60 членами сией сети.

Один из вариантов иллюстрации, представляющей обзорную структуру коммуникационных сетей автомобиля.
Таких картинок в сети — море, еслишто.

И устройство, показывающее вам всякие циферки и буковки в привычной для человеческого глаза форме, нередко совсем даже не является микрокомпьютером, первоочередным по важности для успешного передвижения транспортного средства из точки А в точку Б.

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

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

Вот он, этот сеньор с гордыми амбициями

Но в повседневно-разработческой жизни никто такими высокими материями заморачиваться не будет, так как, как уже было сказано, компьютеров внутре — десятки.

И незачем выделять именно этот, хотя бы потому, что если он даже полностью устанет, мигнёт на прощание, отлючится и выпадет из гнезда на колени водителю — автомобиль всё так же продолжит своё движение, цинично игнорируя потерю.

Кстати, у VW этот же самый экранчик на немецком языке называется «Multifunktionsanzeige», что можно перевести как «многофункциональный дисплей» или «многофункциональная информационная панель» — и так оно будет честнее, как по мне.

1. Есть ECU, а есть ECU
Итак, в подавляющем большинстве профессиональных публикаций по автотематике под аббревиатурой «ECU» понимается «Electronic Control Unit» — общий термин для обозначения фактически любогоуправляющего устройства в автомобиле (помните, чуть повыше был дивный ряд в «30-40-50-60»? ;)

И очень-очень немногая часть публикаций, в которых речь идёт непосредственно о микропроцессорном блоке управления двигателем внутреннего сгорания, под таковой аббревиатурой будет воспринимать понятие «Engine Control Unit». И это обычно специально подчёркивается в начале публикации.

Мало того, иногда в переводе на русский язык аббревиатуру «ECU» начинают толковать как приснопамятный «бортовой компьютер», что уже вообще как-то некузяво.

Пример: статья 2017 года о знаменитых Миллере и Валасеке:

При этом в упомянутом докладе авторы много раз с разных сторон явно указывают, что «ECU» для них — это именно «еlectronic control unit», и этих юнитов в авто — туева хуча очень много (сами Миллер и Валасек, судя по всему для упрощения, просто называют красивой число 50).

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

Поэтому, запомним: по умолчанию "ECU" = "Electronic Control Unit".

Ну, а на русском языке я бы эту сложносоставную материю предложил бы именовать как "ЭУУ" — "электронное управляющее устройство".

2. Automotive и automation

Лет так десять назад автор к своему некоторому удивлению осознал, что такие схожие слова "automotive" и "automation" обозначают вполне себе разные сферы человеческой деятельности.

Конечно же, исторически и логически между собой они имеют много общего — но всё-таки это разные миры.

Значит, закрепляем:

* "Automotive" — это всё, что связано с автомобильной тематикой (непосредственные производители, их поставщики, производители всяческого-всяческого околоавтомобильного ПО, стандарты, регуляционные предписания и т.д., и т.п.).

* "Automation" — это, как понятно из названия, всё, что связано с автоматизацией (производства в первую очередь, но не только) — то есть здесь и ТАУ, и конвеерные линии, и всяческие виды приводов, и IoT, и дигитализация, и прочее Industry 4.0, и все-все-все.

3. OEM & Automotive Supplier (Automobilzulieferer)

В автомобильном мире всё очень просто и не так, как в других мирах:

* "ОЕМ" — непосредственно сами автопроизводители, которые выпускают автомобили: т.е. Toyota, VW, BMW, Daimler, Audi, Ford, Opel, Honda, AvtoVAZ и т.д.

* "Automotive Supplier
" (нем. "Automobilzulieferer") — все остальные, кто поставляет что-то для OEM.
Естественно, в обиходе говорится короче: "Supplier"/"Zulieferer".

Есть ещё такие градации, как «Tier-1 supplier», «Tier-2 supplier» и пирамида с Маслоум «пирамида поставщиков» («Zulieferpyramide»/«supply pyramid») в общем — но это уже классификационные частности.

4. Иногда все любят покороче

Человеческий мозг, как известно, крайне ленив стремится экономить ресурсы.

Этому правилу подчиняется и повседневная жизнь автомобильного мира: всем попросту лень каждый раз выговаривать и/или писать какие-нибудь длинные многослоговые названия, поэтому все стараются всё сокращать.

Это приводит к тому, что вместо длинных напыщенных названий, так же, как и в русском языке (внезапно!) радостно используются всяческие сокращения (всякие «AG» здесь опускаю по умолчанию).

Вместо "Bayerische Motoren Werke Aktiengesellschaft" — "BMW" (даже «BMW AG» уже содержит ненужный хвост, поэтому его — вон!)

Вместо "Continental" — "Conti" (да-да, именно «Коньти» — привет печенькам «Киев-Коньти» из студенчества пятнадцатилетней давности!)

"Daimler" и так уже достаточно краток, его не трогают.

"Bosch" — тоже вполне краток.

"VW" — тут вообще без слов.

"VAG" — почти как "VW", только корпорация.

Вместо "Volvo Car Corporation" — "VCC" (и не забывайте, что "VolvoTrucks" — это вообще совсем отдельная корпорация ныне, хоть они на родине, конечно же, плотно соприкасаются рукавами).

Вместо "ZF Friedrichshafen" — "ZF".

Вместо "Siemens AG" — "SAG".

"Magna" — так и есть.

"Schaeffler" немцы могут написать как "Schäffler" — экономим знак, как-никак.

"Hyundai Mobis" — логично, что просто "Hyundai".

И так далее.

5. На пике внимания: электромобили

В дальнейшем, дабы обобщить текст, под определением «электромобили» будет так же, как и со стороны немецкого правительства, пониматься не только «чистое электроприводное решение», но и все варианты гибридных версий.

По сути и технически дальность поездки на электроприводе зависит в основном от ёмкости силовой батареи, а принципиального различия между «Приусом» и непрокачанной BMW i3 — попросту нет.

Делаем паузу

На сегодня прервёмся

К замечаниям и комментариям автор всячески открыт.

P.S. Заметьте, и ни слова о блокчейне!

Показать полностью 4
[моё] Германия Авто Электроника Embedded Техника IT Электромобиль Длиннопост
21
21
kababok
kababok
Жизнь пикабушников за границей

Embedded world 2018 в Нюрнберге⁠⁠

7 лет назад

Всем интересующимся хотелось бы снова сообщить или просто напомнить, что завтра (во вторник 27.02.18) в выставочном центре г. Нюрнберг стартует одна из самых крупных международных выставок в сфере embedded electronic ("встраиваемые системы") — embedded world 2018.

Выставка проходит, как обычно, на протяжении трёх дней — и предоставляет массу интересного материала для ознакомления с самыми новыми тенденциями в сфере современной электроники и соответствующего программного обеспечения — а также в отраслях промышленных автоматизации, робототехники, цифровых технологий и всяческих сетевых тенденций (Интернет Вещей/IoT и прочие плюшки).

В этом году упор делается на автономные системы - а это ведь не только популяризируемые ныне робомобили, но и всяческие системы искуственного интеллекта, машинного зрения, самодвижущиеся роботы широкого спектра применения, системы "умного окружения", интеллектуальные здания, компьютеры-помощники и прочее-прочее-прочее.

Маленькая хитрость: на стенде издательства "Weka Fachmedien" после заполнения небольшого опросника вы получите возможность бесплатно подписаться на целый ряд обычно недешёвых профессиональных журналов по разработке электроники, по электротехнике, промышленному дизайну и современной автомобильной электроники. Абонемент автоматически НЕ продлевается и не становится платным — так что вы ничем не рискуете (но бланк всё же прочитайте перед подписыванием :).

Показать полностью
[моё] Интернет вещей Нюрнберг Германия Робомобиль Машиностроение Выставка Embedded Электроника Текст
13
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии