Недавно я писал обзор о Ардуино на базе микроконтроллера 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
- Переназначение выводов
В заголовке не тот лот, что я покупал, та ссылка давно уже стухла. Что уж нашлось аналогичного.
То что я купил — вот оно, обратите внимание на даты и цены:
В те времена еще и доставка бесплатная была. Цены указаны за десяток — по нынешним временам, просто ненаучная фантастика.
Вообще-то я уже встречался с этими микроконтроллерами раньше. Дело было лет пять тому назад.
Однажды большой шеф (ну да, это опять про нашу супер-пупер контору из двух развлекающихся пенсионеров: большой шеф и я) встречался с представителями одной местной фирмы, которая шьет спортивную одежду. У них была идея сделать куртку для мотоциклиста с дублерами сигнальных огней на спине — тормоз, поворот, габариты. И чтобы передача энергии и сигналов управления этими огнями были без проводов между мотоциклом и курткой. И чтобы аккумулятор предусмотрен был — если вдруг, в случае аварии, мотоциклист вылетит с мотоцикла, чтобы включался аварийный сигнал, который поможет быстро найти тело мотоциклиста в темное время суток. Договор сразу они подписывать не захотели, просили сделать концепт.
В поисках решения решили попробовать использовать идею Qi зарядок — в первых версиях была передача информации от потребителя энергии к источнику, надо было добавить канал передачи данных от источника к потребителю, чтобы включать светодиоды на спине мотоциклиста в такт с основными лампами. Устройство должно быть очень дешевым и технологичным, поэтому никакие другие каналы передачи данных не рассматривались.
Накупили кучу разных Qi зарядок — 90% китайских устройств было сделано на базе STM8S003F3P6TR — уж больно там хороший и подходящий для всяких преобразователей таймер. Ну и плюс цена микроконтроллера ниже плинтуса. А для концепта такое устройство — вообще песня — детали покупать не надо, платы разводить — не надо. Возьми готовую железку и напиши свое программное обеспечение. По крайней мере для передатчика энергии. Приемник пришлось все-таки делать свой — на первых порах декодирование сообщений показалось легче сделать на элементарной CD4046. Кроме того, там нужно было добавлять и зарядку для батарейки, и управление светодиодными панелями, и датчик ускорения. Одна лишняя микросхема для прототипа погоды не делала.
Сгородили макет, пришли к потенциальному заказчику. А у него уже все идеи поменялись
— «Не хочу быть вольною царицей, хочу быть владычицей морскою, чтобы жить мне в окияне-море, чтоб служила мне рыбка золотая. И была б у меня на посылках». ©
— Хотим теперь, чтобы еще подогрев был. И передача энергии — безо всяких фиксаторов, передатчик энергии в сидении мотоцикла, приемник — в штанах.
Если для светодиодов достаточно передавать 5 ватт, а с учетом аккумулятора расходовать в импульсе можно гораздо больше, то для нагрева нужно ватт 50-100. Вам филейную часть мотоциклиста не жалко?
И платить за разработку собираетесь вообще-то?
— А нам тут одна китайская фирма обещает разработать все бесплатно и потом поставлять готовое устройство почти задаром.
— Флаг вам в руки, барабан на шею — на этом проект и умер почти не начавшись.
Вторая история более оптимистичная — на этот раз заказ поступил от нашего постоянного клиента, который, кроме всего прочего, производит электронику на заказ. Они уже лет двадцать с небольшим штамповали одно маленькое устройство в небольших количествах — чуть больше 10 тысяч штук в год. Зачем их столько — для меня загадка, оно используется в каких-то горно-добывающих машинах. Рядом с такой машиной карьерный самосвал выглядит, как детская машинка рядом в карьерным самосвалом. Откуда такие тиражи?
В этом маленьком прибамбасе использовался какой-то японский микропроцессор, и фирма, его производящая, уведомила о прекращении производства. Та контора, что когда-то разрабатывала электронику, уже давно и думать забыла о этом проекте. Но фирма большая — плати деньги, что угодно сделают. Через год. Или через два — когда время будет.
Может показаться, что любые затраты по сравнению с ценой монстра — копейки, но не тут-то было. Все уже давно подсчитано и поделено, выдавить лишнее из системы — задача не их простых. Тут пара пенсионеров и пригодилась — за пару месяцев перенесли программное обеспечение на другой процессор, разработали новую печатную плату — короче, полностью подготовили новое устройство к производству и все это за смешные деньги — местный маляр, и тот запросил бы за свою работу бОльшую почасовую оплату. Микросхема была немного в другом корпусе, но не суть важно.
Как заказчик решал вопросы с сертификацией — это мне неведомо. Но остались очень довольны — новый микропроцессор при их тиражах стоил им меньше 10 центов за штуку. Ну и мы, как всегда, развлеклись и получили моральное удовлетворение. Ну и на бутерброде слой масла потолще обычного был.
Для первого проекта я использовал компилятор Cosmic, он работает только под Windows и бесплатный. Не помню уже, что там меня не устроило, но второй проект я делал на IAR — он тоже для Windows и версия до 8КБ бесплатно — а больше и не надо, память микропроцессора — всего 8КБ. Через какое-то время после того, как я запрашивал лицензию на ограниченную версию, кто-то из IAR прислал письмо — а когда вы собираетесь полную версию купить? Пришлось огорчить товарища — если мой проект не войдет в бесплатные 8КБ — практически это означает конец проекта. Под Linux был компилятор, но уж совсем убогий. Ардуино-сообщество STM8 игнорировало. Но времена меняются, микроконтроллеры дорожают и кому-то на безрыбье уже и STM8 рыба.
Появилась поддержка в Ардуино — правда, STM8S003 в списке отсутствует. Зато есть STM8S103 — не стесняйтесь использовать, разница только в объеме EEPROM, 128 против 640 байт, остальное тоже самое.
В PlatformIO STM8S003 в списке есть, и тут можно использовать SPL вместо Ардуино, если вдруг памяти не хватает. Ну или по-сермяге использовать регистры вместо SPL.
Еще один нюанс — если для программирования всех Ардуиновских плат используется C++, то для STM8 — только классический C, только хардкор. Соответственно, абсолютное большинство готовых Ардуиновских библиотек использовать не получится. Какие-то библиотеки адаптированы, в другим придется приложить голову или подождать, когда это кто-то другой сделает.
Собственно, давайте ближе к телу.
Чтобы Arduino IDE могла найти STM8 платы, нужно добавить еще один источник —
github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json
О версии можно почитать у автора —
tenbaht.github.io/sduino/
В PlatformIO думать ни о чем не надо — после того, как укажете плату на базе STM8, весь необходимый софт будет установлен без вашего участия.
Вытаскиваем из шкапчика микросхему, припаиваем на плату-адаптер ее и пару конденсаторов — и ваша Ардуина готова.
Назначение ног:
То же самое в стиле Ардуино:
Хотя по нынешним временам, наверно, проще заказать
готовую плату
Цена за штуку €1,28 плюс доставка €1,62 — может есть и дешевле, особо не искал.
Там и микроконтроллер будет STM8S103, и разъемы, и пара светодиодов, и USB для питания
Но, раз уж выбрали окольный путь, попытаемся облегчить себе жизнь. Для начала припаиваем разъем для программатора — да, его нужно тоже купить, тот самый ST-LINK.
Пробуем загрузить программу — работает.
Неплохо бы светодиодики добавить — один на питание, второй чтобы было чем мигать.
Для проверки последовательного интерфейса добавляем еще один разъем и подключаем USB-SERIAL адаптер.
А теперь мой любимый дисплейчик от Нокия — хоть и маленький и черно-белый, но дюже хорош. Особенно на солнечном свете — на современных цветных дисплеях ничего не видно, одни блики, а на этом — пожалуйста.
В заключение — схема:
и тестовый скетч:
#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 центов — это как раки, вчера, большие но по пять. А сегодня по три, но очень маленькие. Если бы я такое дело знал — купил бы их тогда ведро. А нынче сидел бы на базаре, стаканами бы продавал :)
Давно покупаю. но не видел таких цен, хотя может и не там искал, я свою ардуинку купил за 1.78 и за 0.01 бакса (ибо там были проблемы с прошивкой (не тот контроллер и вернул через спор).
Хочется купить всего, но оно всё дорожает и тд + повысили налоги для иностранных компаний, и али — должно платить налог в 20% за товар, то есть нам + 20%, также и посылки должны быть отслеживаемыми ещё + 7% и тд.
Курс сейчас — меньше 0.00003 $ за монету. (но это не точно)
Теперь они исчезли из продажи.
Понятно, что не заработок, ради фана если только.
Профитность майнинга на ардуино в сотни тысяч раз ниже чем убыток от ее покупки и потребления энергии, так же как и с распбери пи, и с другими одноплатниками.
А старые расбери или оранжи — за 100 штук за 235 баксов, очень хорошая цена как по мне, но тогда таких денег не было.
Добро пожаловать в мир познавательной экономики где есть такое чудо как инфляция, а в наше время инфляция умноженная на проблемы с поставками, ковидом и правилами NEW китая где у работников теперь есть выходные, пара часов отдыха в обед, и нормальная зарплата.
Цен как «раньше» не будет. и с майнингом это никак не связано, уж успокойтесь.
Так что да, майнит на бензине, как верно подметили выше, государство… ох как майнит)
Советую переходит на Китайские аналоги и Китайские микроконтроллеры
Китайское правительство выпустило указ что их локальные заказы важнее зарубежных, от чего большинство заводов теперь клепают чипы для китайских компаний в тройном размере.
как только все встало колом, то они стали никому не нужны, рыночек перешел на что-то другое и всё.
точно также как не дешевеет Z80, PIC, AVR и все прочие «музейные» экспонаты. время STM8 ровно также ушло. спроса на них нет.
ESP32?
Упомянутый STM8S103 у более-менее приличного продавца стоит 1.25$, а ESP32 модуль 2$.
Потом одни изобретают датчик температуры с 2-мя ядрами 240МГЦ, а другие кричат «оверинжиниринг!»…
Нет, это просто здравый смысл :))
https://aliexpress.com/item/item/1005002859523225.html
А клоны есть у stm32.
Отдельная благодарность «кружку пенсионеров» за искромётный
живой юмор, связный грамотный слог обзора, и вообще-за позитивный
настрой в передачах своего опыта.
А то, например, когда-то купил китайский step-down преобразователь с показометром тока и напряжения (те, что по $4.5). А оказалось, что показометр заточен под какую-то одну кривую изменения напряжения на усилителе с шунта, а фактически кривая не совпадает (детали другие), поэтому показывает фигню и методом научного тыка подобрать резисторы и шунт не получается.
А так бы стереть ту программу, и написать/записать новую для цифрового датчика тока-напряжения…
И есть ли разница между переходниками-программаторами в USB разной ценовой категории?
Настоящее IAR мало что бывает — у них есть компиляторы на большую часть существующих процессоров, сделано единообразно, с одним разобрался — с другим работать будет значительно проще. Редактор по нынешним временам не лучший — зато все работает их «каропки» и без бубна.
Вы думаете, там на входе контроллера прямая линия с наклоном должна быть, чтобы вольты совпали с зашитыми амперами? А если нет? Может проблема в том, что усилитель нужен другой? А может вообще проблема в том, что напряжение питания плавает в зависимости от напряжения на входе (а оно там так и есть).
Я все эти загадки решить не смогу.
Мне кажется, что проще попытаться переписать программу заново, и в крайнем случае, ничего не перепаивая, вписать свою математику (типа того «если на входе меньше 3 вольт, то считать так, а если больше 10 вольт, то по другому» и т.п.)
Благо схема есть: mysku.club/blog/aliexpress/33891.html
А с внутренними датчиком температуры — их очень много. Самый дешевый из STM32 скорее всего Вам подойдет, чтобы голову зря с программным обеспечением не морочить. И к CAN при желании подключить можно :) — даже обороты двигателя можно видеть будет. И штатный автомобильный датчик температуры.
Как пример первый попавшийся лот: https://aliexpress.ru/item/item/4000410958178.html
Как датчик температуры подойдёт в данном случае и простейший термистор, погрешность в пару градусов для данной задачи не критична.
Но можно использовать и что-то поточнее, типа LM35.
Смысла мерить температуру встроенным датчиком нет, нужен именно выносной датчик, так как нужно мерить температуру в салоне, а не в чипе.
вopoвaть ....программировать не надо, все уже запрограммировано до нас.Но если уж очень хочется попрограммировать, то вот этот вот контроллер, думаю, подойдет.
Здесь есть реле с сухими котрактами, и один свободный вход ESP32.
Как бонус, можете с телефона управлять этой мандулой.
На IDE Arduino тоже шьется.
WiFi-розетка в готовом виде ограничивает, разумнее тогда взять плату ESP32/8266 с большим количеством GPIO и подключить блок реле, всё же надо управлять несколькими устройствами(тогда можно их включать при разных температурах).
встроенный термодатчик часто есть, вопрос только в точности, ну и АЦП не вопрос.
но я бы зашёл с другой стороны и спрерва спросил: кто и как этот контроллер будет прошивку ваять и чем прошивать
if ADCread > 13V
{sleep 10s
pin1 = enable
pin2 = enable
pin3 = enable
sleep 200ms
pin1 = disable
pin2 = disable
pin3 = disable
}
Да, и настройку всей периферии — это тоже строки.
Там можно и по температуре включать, и по управляемому каналу, и много чего.
96 на avito от 10000, поставить можно и самому, тем более всё уже проложено.
Я вот лично всё хочу сделать именно электронный блок и управление кнопками через «вставку» со штатными разъёмами.
хардкор это когда отреверсить прошивку неизвестного контроллера, да написанную на каком нить экзотиеском языке, ну или хотя бы без документации.
в общем хабр уже не тот. ой… а мы не на хабре :)
лан для муськи это хардкор :) :)
хардкорно вы до шутки докопались!
МК с 1,27 гораздо удобнее. Лично мне остатки зрения дороже пары десятков центов
Поэтому и резюки/кондёры у меня 1206, и ИМС стараюсь брать с шагом 1,27
А 1,27 пока ещё без лупы запаиваю.
А ведь каких-то 20 лет назад перепаивал успешно 486SLC в ноутбуке… 65-ваттным паяльником с огромным жалом.
Прижмёт — еще не так раскорячишься.
Желаю дальнейшей поправки здоровья.
Хуже всего, когда несколько проектов одновременно с разными процессорами — из регистров в голове бардак получается.
А почему статься про STM8 — так что в голову пришло, про то и пишу. Красиво жить не запретишь :)
А большой плюс STM8 — допустимый диапазон питающих напряжения, часто это важно.
Разве это большой диапазон?
Для примера первый попавшийся под руку:
1.8V-5.5V (PIC16F1938)
Он всего-лишь достаточный для работы на стандартных 3,3/5 вольтах.
А вот для работы от двух никельметалгидридных АКБ уже не прокатит.
Действительно большой диапазон — это было бы что-то типа 1,2-5,5 вольта
А ещё есть TI с её «25 функций за 25 центов».
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.