Товары из Китая

STM8S003F3P6TR — Arduino для бедных


  • Цена: €1,78 за 5 штук, доставка €0,99
  • Недавно я писал обзор о Ардуино на базе микроконтроллера RP2040 от Raspberry Pi Foundation — мощное решения для нижней ценовой категории. К моему удивлению, обзор понравился читателям.

    Сегодня я представлю еще одно решение из категории «Когда я думал, что уже достиг самого дна, снизу постучали».

    Будем ардуинить по-нищебродски, используя микропроцессор из серии STM8, который в староглинянные времена (всего два года назад) можно было купить за 20 центов в розницу — надеюсь, эти времена скоро вернутся.

    Что у него внутрях:

    • 16 MHz STM8S 8-bit MCU
    • 8 Kbyte Flash и 128 byte data EEPROM
    • 10-bit ADC
    • 3 timers, UART (с функциональностью LIN), SPI, I2C — не считая всяких WDT
    • Рабочее напряжние от 2.95 V до 5.5 V
    • Встроенные RC осцилляторы 16 MHz и маломощный 128 kHz
    • Переназначение выводов

    В заголовке не тот лот, что я покупал, та ссылка давно уже стухла. Что уж нашлось аналогичного.

    То что я купил — вот оно, обратите внимание на даты и цены:

    STM8S003F3P6TR — Arduino для бедных

    В те времена еще и доставка бесплатная была. Цены указаны за десяток — по нынешним временам, просто ненаучная фантастика.

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

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

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

    Накупили кучу разных Qi зарядок — 90% китайских устройств было сделано на базе STM8S003F3P6TR — уж больно там хороший и подходящий для всяких преобразователей таймер. Ну и плюс цена микроконтроллера ниже плинтуса. А для концепта такое устройство — вообще песня — детали покупать не надо, платы разводить — не надо. Возьми готовую железку и напиши свое программное обеспечение. По крайней мере для передатчика энергии. Приемник пришлось все-таки делать свой — на первых порах декодирование сообщений показалось легче сделать на элементарной CD4046. Кроме того, там нужно было добавлять и зарядку для батарейки, и управление светодиодными панелями, и датчик ускорения. Одна лишняя микросхема для прототипа погоды не делала.

    STM8S003F3P6TR — Arduino для бедных

    Сгородили макет, пришли к потенциальному заказчику. А у него уже все идеи поменялись

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

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

    STM8S003F3P6TR — Arduino для бедных

    Если для светодиодов достаточно передавать 5 ватт, а с учетом аккумулятора расходовать в импульсе можно гораздо больше, то для нагрева нужно ватт 50-100. Вам филейную часть мотоциклиста не жалко?

    И платить за разработку собираетесь вообще-то?

    — А нам тут одна китайская фирма обещает разработать все бесплатно и потом поставлять готовое устройство почти задаром.

    — Флаг вам в руки, барабан на шею — на этом проект и умер почти не начавшись.

    Вторая история более оптимистичная — на этот раз заказ поступил от нашего постоянного клиента, который, кроме всего прочего, производит электронику на заказ. Они уже лет двадцать с небольшим штамповали одно маленькое устройство в небольших количествах — чуть больше 10 тысяч штук в год. Зачем их столько — для меня загадка, оно используется в каких-то горно-добывающих машинах. Рядом с такой машиной карьерный самосвал выглядит, как детская машинка рядом в карьерным самосвалом. Откуда такие тиражи?

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

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

    Как заказчик решал вопросы с сертификацией — это мне неведомо. Но остались очень довольны — новый микропроцессор при их тиражах стоил им меньше 10 центов за штуку. Ну и мы, как всегда, развлеклись и получили моральное удовлетворение. Ну и на бутерброде слой масла потолще обычного был.

    STM8S003F3P6TR — Arduino для бедных

    Для первого проекта я использовал компилятор Cosmic, он работает только под Windows и бесплатный. Не помню уже, что там меня не устроило, но второй проект я делал на IAR — он тоже для Windows и версия до 8КБ бесплатно — а больше и не надо, память микропроцессора — всего 8КБ. Через какое-то время после того, как я запрашивал лицензию на ограниченную версию, кто-то из IAR прислал письмо — а когда вы собираетесь полную версию купить? Пришлось огорчить товарища — если мой проект не войдет в бесплатные 8КБ — практически это означает конец проекта. Под Linux был компилятор, но уж совсем убогий. Ардуино-сообщество STM8 игнорировало. Но времена меняются, микроконтроллеры дорожают и кому-то на безрыбье уже и STM8 рыба.

    Появилась поддержка в Ардуино — правда, STM8S003 в списке отсутствует. Зато есть STM8S103 — не стесняйтесь использовать, разница только в объеме EEPROM, 128 против 640 байт, остальное тоже самое.

    STM8S003F3P6TR — Arduino для бедных

    В PlatformIO STM8S003 в списке есть, и тут можно использовать SPL вместо Ардуино, если вдруг памяти не хватает. Ну или по-сермяге использовать регистры вместо SPL.

    STM8S003F3P6TR — Arduino для бедных

    Еще один нюанс — если для программирования всех Ардуиновских плат используется C++, то для STM8 — только классический C, только хардкор. Соответственно, абсолютное большинство готовых Ардуиновских библиотек использовать не получится. Какие-то библиотеки адаптированы, в другим придется приложить голову или подождать, когда это кто-то другой сделает.

    STM8S003F3P6TR — Arduino для бедных

    Собственно, давайте ближе к телу.

    Чтобы Arduino IDE могла найти STM8 платы, нужно добавить еще один источник — github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json

    О версии можно почитать у автора — tenbaht.github.io/sduino/

    В PlatformIO думать ни о чем не надо — после того, как укажете плату на базе STM8, весь необходимый софт будет установлен без вашего участия.

    Вытаскиваем из шкапчика микросхему, припаиваем на плату-адаптер ее и пару конденсаторов — и ваша Ардуина готова.

    STM8S003F3P6TR — Arduino для бедных

    Назначение ног:

    STM8S003F3P6TR — Arduino для бедных

    То же самое в стиле Ардуино:

    STM8S003F3P6TR — Arduino для бедных

    Хотя по нынешним временам, наверно, проще заказать готовую плату

    STM8S003F3P6TR — Arduino для бедных

    Цена за штуку €1,28 плюс доставка €1,62 — может есть и дешевле, особо не искал.

    Там и микроконтроллер будет STM8S103, и разъемы, и пара светодиодов, и USB для питания

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

    STM8S003F3P6TR — Arduino для бедных

    Пробуем загрузить программу — работает.

    STM8S003F3P6TR — Arduino для бедных

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

    Для проверки последовательного интерфейса добавляем еще один разъем и подключаем USB-SERIAL адаптер.

    STM8S003F3P6TR — Arduino для бедных

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

    STM8S003F3P6TR — Arduino для бедных

    В заключение — схема:

    STM8S003F3P6TR — Arduino для бедных

    и тестовый скетч:
    #include <Arduino.h>
    
    #include <PCD8544.h>
    // A custom glyph (a smiley)...
    static const byte glyph[] = { B00010000, B00110100, B00110000, B00110100, B00010000 };
    PCD8544 (lcd, PC5, PC6, PC7, PD2, PD1); // sclk,sdin,dc,reset,sce
    void setup()
    {
    pinMode(PD4,OUTPUT);
    Serial_begin(9600);
    Serial_println_s("Blink test");
    // PCD8544-compatible displays may have a different resolution...
    lcd_begin_wh(84, 48);
    // Add the smiley to position "0" of the ASCII table...
    lcd_createChar(0, glyph);
    // Write a piece of text on the first line...
    lcd_setCursor(0, 0);
    lcd_print_s(" Hi, MYSKU.RU");
    lcd_setCursor(0, 2);
    lcd_print_s(" stm8duino");
    lcd_setCursor(0, 4);
    lcd_print_s(" STM8S003");
    }
    void loop()
    {
    /*
    static uint8_t counter = 0;
    // Write the counter
    lcd_setCursor(0, 5);
    lcd_print_u(counter);
    lcd_write(' ');
    lcd_write(0); // write the smiley
    counter++;
    */
    digitalWrite(PD4, HIGH);
    delay(100);
    digitalWrite(PD4, LOW);
    delay(100);
    Serial_write('*');
    }

    Два года назад Ардуино (даже на STM8) за 20 центов — это как раки, вчера, большие но по пять. А сегодня по три, но очень маленькие. Если бы я такое дело знал — купил бы их тогда ведро. А нынче сидел бы на базаре, стаканами бы продавал 🙂


СМОТРИ ТАКЖЕ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *