Рубрика: Электроника

  • Эксперименты с Pocket 8086 или как выйти в интернет с «печатной машинки» и поговорить с Гигачат.

    Эксперименты с Pocket 8086 или как выйти в интернет с «печатной машинки» и поговорить с Гигачат.

    Знакомство с компьютером

    На волне повышения интереса к ретро компьютерам в продаже появилась интересная модель — Pocket 8086. Примечательна она тем, что работает на клоне древнего процессора х86 и сделана в форм-факторе карманного компьютера.

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

    Pocket 8086

    Для выполнения своих задач пришлось установить русификатор и файловый менеджер. Что было некоторым вызовом, т.к. потребовало найти флешку маленького размера. Сегодня можно легко купить накопители с гигантским объемом памяти, а вот на несколько десятков мегабайт сложновато.

    На компьютер производитель установил MS-DOS в составе которого имеется Edit для редактирования текстовых файлов. Так же есть GW-basic, Qbasic, какая-то среда для программирования на Си, FoxPro, пара игр и что-то ещё.

    Из интерфейсов коммуникации есть IDC разъемы для подключения переходника на COM-порт, LPT.

    Больше всего меня поразило, что эта конфигурация работает на процессоре с тактовой частотой 4-10 МГц. И по-большому счету никакого дискомфорта для работы в режиме печатной машинки это не создает.

    Вызов

    Обнаружив QBasic я задался вопросом: «а смогу ли я выйти в интернет с помощью этой балалайки?»

    Поиск в интернете показал, что варианты какие-то есть, но они сводились к подключению старых сетевых устройств и поиску драйверов под них. Это не показалось мне привлекательным.

    Pocket 8086 — это новодел, да используется старый процессор, но это уже современная сборка. Смысла не было гнаться за какими-то аутентичными устройствами для выхода в интернет.

    Старый знакомый

    Тогда я решил обратиться к проверенному модулю – ESP8266. Да-да, тактовая частота микроконтроллера в 8 раз больше процессора компьютера.

    Соображения в сторону. Можно взять модуль для подключения к проводному интернету, но тогда это убивает идею портативности. Pocket 8086 все-таки ноутбук, а не стационарный компьютер.

    Идея была в том, чтобы воспользоваться «голым» ESP8266 (с родной прошивкой), и организовать выход в интернет на Pocket 8086. Напомню, что там в качестве ОС установлена MS-DOS.

    У ESP8266 есть UART с набором AT команд для настройки и осуществления HTTP запросов.

    Используем подход идти мелкими итерациями — от создания программы а-ля терминал для общения с внешним устройством через COM-порт, и, наращивая функциональность, дойти до какого-то значимого результата в контексте формулировки «выход в интернет».

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

    Hardware setup

    Для начала нужно решить hardware задачу — выравнивание уровней напряжения UART: у Pocket 8086 — 12В (если я правильно понял схемы, вольтметром не замерял), а у ESP8266 — это 3.3В. Использовал самый дешёвый конвертер уровней с разъемом под COM-порт.

    Разъем нужен был, чтобы легко подключить к идущему в комплекте с ноутбуком переходнику IDC-COM.

    Для отладки подключения я взял Arduino, в которую загрузил примитивную программу, которая отправлял тестовое сообщение на UART раз в секунду.

    Deepseek в помощь

    Сразу же возник вопрос, а как программу писать для этого ноутбука. Хотелось получить результат как можно скорее. Несмотря на возможность писать на Си решил все-таки добавить пикантности эксперименту и писать на QBasic. Возврат к истокам – первые программы я писал именно на бейсике.

    Как оказалось, с помощью DeepSeek навайбкодить программу на QBasic — это почти не проблема. Порой он делал очень странные ошибки: называл переменные системными именами, использовал одновременно несколько способов объявления типов данных, использовал запрещенные символы в названиях — вообщем явно игнорировал некоторые нюансы и особенности языка.

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

    Тогда DeepSeek посоветовал пойти более простым путем и для начала протестировать эхо вывод. Это когда на экран выводится ровно то, что было отправлено в COM-порт. Нюанс в том, что данные для вывода берутся из COM-порта. Для этого достаточно замкнуть RX и TX com порта компьютера и все что отправляется из программы на выход должно приходить на вход.

    Этот подход заработал, т.е. работать из QBasic с COM-портом не составляет труда, но почему тогда я не видел на экране тестовых сообщений от Ардуино?!

    Перебрав различные варианты открытия порта решил пойти на крайнюю меру и поменять местами подключение RX и TX. И это, чёрт побери, сработало!

    Оказывается на модуле были перепутаны подписи для этих контактов, ну или не перепутаны, а я сразу не понял логику подписей. Главное, что данные от тестовой Ардуино стали отображаться на экране.

    Отладка COM-порта и общения с ESP8266

    Следующий этап — подключение и общение с ESP8266. Чтобы упростить себе жизнь, взял переходних для ESP, который конвертирует уровни до 5В, а так же модуль питания. Это позволило подключить ESP к Ардуино и поменять модулю настройки скорости соединения.

    Для начала я выставил на ESP8266 скорость общения 9600 бод. Я предположил, что эта скорость будет подходящей для общения между устройствами. Первое время на этой скорости даже все работало, и я начал задумываться о том, чтобы её попробовать увеличить.

    Подключив ESP8266 к Pocket 8086 и написав с Deepseek первую версию что-то напоминающее терминал приступил к проверке с помощью ручных AT команд, которые позволяют делать с ESP8266 запросы в сеть.

    HW setup

    Настроив wi-fi, и делая первые запросы к хостам, стало понятно, что что-то не так. Часть ответов теряется, а временами программа вылетает с ошибками.

    Изучив с DeepSeek сообщения об ошибках и проанализировав происходящее пришла мысль, что возможно проблема в скорости соединения. Снизил скорость соединения до 2400 бод и проблема исчезла.

    Итак, первая победа — через навайбкоденый терминал используя AT команды я смог делать ручные HTTP запросы к серверами и вывести ответ на экран. Под ручными я понимаю тот факт, что даже длину запроса считал вручную и заголовок набирал через терминал.

    Нюансы работы ESP8266

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

    На коротких ответах всё работало, ровно так как и ожидалось, а вот на больших всплыл момент, что ответ не стримится непрерывным потоком, а передается порциями с разделителем, который портил вид и добавлял мусора: +IPD,<len>:<данные> (конечно же это описано в документации чипа про работу AT-команд, но кто ж читает). Примечательно, что DeepSeek этот момент учел при решении задачи: «Сделай опцию вывода ответа без заголовка» и ответы стали чистыми.

    Проблемы с конвертацией из UTF-8

    UTF-8 <-> CP866 = боль

    Тот кто хоть раз сталкивался с необходимостью выводить что-то за пределами английского языка в кодировке UTF-8 на 8 битных микроконтроллерах когда нет поддержки UTF-8 «из коробоки» запоминает этот опыт хорошо.

    Моя цель была не что-то абстрактное выводить, а текст на русском языке.

    На удивление мне понадобилось значительное время для взаимодействия с DeepSeek, чтобы сделать конвертацию из UTF-8 в CPP866. По сути проблема была одна, но её не удавалось никак решить.

    В итоге все свелось к тому, что Deepseek написал дополнительну программу, которая выводит всю таблицу символов, чтобы разобраться почему его код не может нормально сконвертировать UTF-8 в CPP866. Только после предоставления лога этой дополнительной программы он разобрался как это сделать.

    Вывод таблицы символов для отладки конвертации UTF-8.

    После этого мы споткнулись на букве ё, т.к. в UTF-8 она может быть как монолитная так и составная — один код непосредственно буква е, второй — двойные точки над ней. Т.е. пришлось учитывать этот момент в конвертации.

    Ещё пришлось отдельно ставить задачу на автозамену длинных тире и двойных угловых кавычек на обычные т.к. в CP866 ничего такого нет.

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

    GigaChat Short

    Когда с русским языком разобрались захотелось чего-то большего. Вместе с DeepSeek сделали небольшую подпрограмму для общения с Gigachat.

    GigaChat Short на Pocket 8086

    Я назвал её GigaChat Short. Работает по принципу: «один запрос — один ответ». Никакого контекста, никаких файлов, JSON структур, только голый текст.

    Проблема в том, что для общения с API Гигачата нужно HTTPS и возможность работы с JSON. И то, и то мне не хотелось тянуть в проект. HTTPS — это возиться с сертификатами на уровне ESP8266. А оборачивать запросы в JSON структуры и разбирать его на QBasic на текущий момент выглядит как перебор.

    Для реализации этого подхода у меня есть прокси-сервер, которые через GET параметр HTTP-запроса получает текст пользователя и уже через HTTPS передает его Гигачату. Соответственно, полученный ответ в голом виде (без JSON) возвращается в виде такого же текста.

    Конечно это не безопасно, но кого это волнует, мы же не секретики с Гигачат будем обсуждать.

    Всё получилось, ГигаЧат уверенно отвечает на запросы, вся цепочка работает. Да, медленно. Да, без контекста. Да, небезопасно… но работает…

    Неспешный вайбкодинг без IDE и с ручным переносом кода на флешке с одного компьютера на другой позволяет с большим удовольствием погружаться в low-tech и изучать основы.

    Слово DeepSeek

    На этом можно было бы поставить точку в статье, но мне показалось, что стоит дать слово автору кода – Deepseek.

    Ключевой вопрос – как «заставить» его написать историю по той бороде чатов, которые я создал пока общался с ним?

    Изучив интерфейс, обнаружил, что историю чатов можно экспортировать (в профиле пользователя).

    Дальше, очевидное решение – предоставить файл экспорта дипсику с задачей написать историю. Но вот беда, файл экспорта уже очень большой для обработки. При подходе «в лоб» LLM готова был обработать только 22% данных.

    Можно было бы и руками вырезать ненужное, но это очень долго. Как же сократить объем?

    Попросил дипсик написать HTML-страничку для обработки файла экспорта, благо история – это JSON файл. Загружаем его, отмечаем по названию нужные диалоги и вуаля получаем небольшой файл.

    Программа на экране Pocket 8086.

    История, как её «увидел» DeepSeek:

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

    Представьте себе: среда MS-DOS, редактор QBasic 1.0 с его синим экраном, ограничением в 64 КБ памяти и полным отсутствием современных библиотек. И в этой среде мы решили создать терминал, который бы не просто общался с COM-портом, а выходил в интернет и разговаривал с облачным ИИ. Звучит как безумная идея? Так и было. Но именно с этого всё и началось в марте 2026 года.

    Первые шаги: Приручение COM-порта

    Первая задача казалась простой — просто прочитать данные из COM-порта. Я написал несколько строк кода, открыл порт… и тут же получил холодный душ в виде ошибки Device Timeout. Оказалось, что старый QBasic, привыкший к модемам с их линиями квитирования, упрямо ждал сигналов CTS, DSR, DCD. А наша ESP8266, конечно, ничего такого не выдавала. Мы добавили в строку открытия порта магические параметры CS0, DS0, CD0, OP0, и порт, словно нехотя, открылся. Первая победа — мы увидели байты на экране.

    Дальше мы принялись строить настоящий терминал: с окном вывода, строкой ввода, настройками скорости и даже логированием в файл. Но когда подключили реальное устройство — тишина. Данные не шли. Выяснилось, что на дешёвом китайском модуле HW-044 была перепутана маркировка пинов Rx и Tx. Прямое соединение — и всё заработало. Вот вам урок: никогда не доверяйте распиновке, пока не проверите мультиметром.

    Выход в сеть: Война с буфером

    Следующий шаг был амбициозным — научить терминал управлять ESP8266 через AT-команды, настраивать Wi-Fi и отправлять HTTP-запросы. Я добавил в главное меню раздел ESP8266, реализовал подменю для сканирования сетей, ввода SSID и пароля, а также ручного формирования GET/POST запросов. Всё выглядело отлично, пока мы не попытались получить ответ от реального сервера.

    Программа падала с ужасающей ошибкой Communication buffer overflow. Представьте: данные с сервера льются потоком, а QBasic, работающий в однозадачной среде, просто не успевает их вычитывать. Мы пробовали увеличить буфер приёма (RB4096), оптимизировали циклы, но поток на 9600 бод был неумолим. И тогда пришлось принять нетривиальное решение: снизить скорость до 2400 бод. Заработало! Медленнее, но стабильно. Это был важный урок: иногда лучший апгрейд — это даунгрейд.

    Битва за русский язык: Символы, псевдографика и буква «ё»

    Самой эпической битвой, которая до сих пор вызывает у меня уважение и трепет, стала борьба за корректное отображение русских букв. Интернет говорит на UTF-8, а DOS — на кодовой странице CP866. Я написал функцию Utf8ToDos$, но она работала отвратительно: буквы р, с, т, у превращались в псевдографику. Пришлось вооружиться тестовой таблицей символов CP866, и тогда меня осенило: в этой кодировке строчные буквы разбиты на два диапазона — а-п и р-я! Моя функция наивно отправляла всех в один. Исправил — и русский текст ожил.

    Но это было не всё. Буква «ё» упорно не желала отображаться. Оказалось, я просто забыл добавить её код в обработчик строчных букв. Добавили — заработало. А потом мы заметили, что в ответах сервера полно типографских изысков: угловые кавычки « », длинные тире — и прочие прелести, которые в чистом тексте выглядят как мусор. Мы доработали конвертер, чтобы он безжалостно заменял всё это на стандартные " и -. И вишенкой на торте стала обработка составной буквы «ё» (когда она приходит как е + ̈). Мы учли и этот случай. Битва за чистоту русского языка была выиграна.

    Кульминация: GigaChat Short

    Финальным аккордом стало создание раздела GigaChat Short. Теперь из чёрного окна DOS с мигающим курсором можно было ввести вопрос на русском языке, а программа через ESP8266 отправляла его в облачный сервис GigaChat, получала ответ и выводила его в том же терминале. Мы встроили в код ASCII-арт логотипа, реализовали ручной ввод строки с поддержкой ESC, а для длинных ответов я написал простой, но эффективный просмотрщик с прокруткой на стрелках.

    Заключение

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

    И если кто-нибудь скажет вам, что на QBasic невозможно создать что-то серьёзное — просто расскажите ему эту историю.

    Исходный код программы для QBasic.

  • Однопиксельная камера

    Однопиксельная камера

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

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

    Фоторезистор.

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

    Размер фоторезистора порядка 5 мм, это значит, что физический размер пикселя 5 мм, т.е. если нужна фотография 320х200 пикселей, то расстояние, которое должен пройти фоторезистор составит порядка 1,6 метра по широкой стороне.

    Если целиться во время экспозиции (т.е. время производство одной фотографии) хотя бы 20 секунд, то необходимо иметь скорость 3200 пикселей в секунду, т.е. 10 строк.

    Очевидно, что реализация такой схемы в формате DIY вряд ли достижима — все-таки переместить каретку с фоторезистором 20 раз (с учетом возврата) на 1,5 метра за одну секунду это что-то за пределами адекватных возможностей.

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

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

    Для управления кареткой фоторезистора использовал два шаговых двигателя (28BYJ-48-5V) с драйверами в комплекте, и готовую передачу винт-гайку. Легко находится на алиэкспрессе или ближайшем магазине где предлагают Ардуино и всякое для неё.

    Управление производится с помощью Arduino Uno, подключение драйверов двигателей сделано через сдвиговый регистр 74HC595N для сокращения используемых выходов.

    Данные от ограничивающих концевиков (чтобы понимать когда выключать двигатели) и кнопки ручного управления (для отладки) сделаны через сдвиговый регистр 74HC165N, опять-таки для сокращения используемых подключений к Ардуино. В качестве концевых выключателей использовалось что было в запасах — для одной оси это ик датчики с цифровым (логическим) выходом, для другой оси обычные кнопочные выключатели с цифровым (логическим) выходом.

    Внутренности однопиксельной камеры.

    Для съема значения светового потока собрана простейшая схема: подключаем +5V от Ардуино к одному контакту фоторезистора, второй же контакт к аналоговому входу Ардуино, параллельно с фоторезистором подключен переменный подстроечный резистор для подбора оптимального значения входного напряжения так, чтобы при ярком свете или недостаточной освещенности цифровые значения на входе аналогово пина не уходили в пределы 1024 и 0. Фактически происходит измерение падения напряжение на 5В контакте.

    Вся конструкция монтируется на фанере в деревянном ящике.

    Внутренности однопиксельной камеры.

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

    Т.к. интегральная чувствительность (т.е. зависимость напряжения от мощности падающего излучения) близко к линейному, то такой подход позволяет малый диапазон измерений растянуть на весь диапазон отображения серого на экране компьютера. Простыми словами — диапазон показаний на аналоговом входе, например, от 46 до 81, сконвертировать в диапазон от 0 до 255 (градаций серого) или любой другой для достижения нужно эффекта контрастности.

    Первые тесты на малом количестве точек показали корректность работы схемы и потенциальную возможность собранной конструкции. Один из тестов выглядел так: перед плоскостью движения фоторезистора расположил три линейки, которые давали тень от лампы над столом. Шаг фиксирования значений от фоторезистора составлял порядка 5 миллиметров, т.е. 1 пиксель полученной иллюстрации соответствовал 1 замеру на сетке 23х23, c шагом сетки 5 мм.

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

    Первая тестовая съемка для проверки концепции.
    Темные части соответствуют теням которые дают линейки. Числа в ячейках — значения на аналоговом входе.

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

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

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

    Результат вдохновляющий!

    Во-первых, размер снимка 221х186 пикселей — такой, что на нём уже могут поместиться различимые объекты. К слову, физический размер сканируемого поля 11х9 см.

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

    Видимые горизонтальные полоски — это влияние изменений во времени регистрации:

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

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

    В любом случае, полученный снимок отчетливо показал, что все работает.

    Следующий шаг — необходимо сделать что-то на подобие объектива. Можно было бы сделать простую камеру обскура, но кажется микроотверстие будет пропускать слишком ужь мало света, потому купил самую дешёвую лупу (вроде бы х2) и использовал её в качестве линзы. В качестве «тела» объектива — картонная коробка. Экспериментальным путем определил примерное фокусное расстояние для съемки пейзажа (дома напротив).

    Внутри будущего объектива. Слева отверстие и винты прижимающие снаружи лупу, справа проекция на папиросной бумаге вида из окна — голубое небо с облаками, горизонт, дом напротив.

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

    Однопиксельная камера в сборе.

    После, примерно, целого светового дня эскпониронивая, а это порядка 8 часов. Получился такой результат:

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

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

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

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

    В память о Point de vue du Gras

  • Как я воду дома считал. Железо: передатчик показаний.

    Как я воду дома считал. Железо: передатчик показаний.

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

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

    (далее…)
  • Как я воду дома считал. Первый прототип.

    Как я воду дома считал. Первый прототип.

    Достаточно давно меня привлекала Arduino и всё что с ней связано. Несколько лет назад прикупил UNO поигрался  миганием светодиодов и прочими классическими примерами. Приобрел разные датчики, посмотрел как с ними работать, но всё это было как-то не то. Хотелось все-таки решить какую-то прикладную задачку. Пускай, может, высосанную из пальца, но прикладную. И вот при очередной передаче показаний счетчиков учета воды задача родилась!

    Задача

    1. Используя Arduino, сделать доступным показания счетчиков учета воды через интернет.
    2. Все данные с устройства должны передаваться по радиоканалу.
    3. Устройство помещаемое в стояк должно быть энергонезависимым от электросети помещения.
    4. Данные по потреблению должны отображаться в виде графиков, с детализацией по часу в сутках/дням в месяце/месяцам в году.
    5. Данные о потреблении должны поступать каждые 30 секунд.
    (далее…)
  • Arduino + Ethernet Shield на базе ENC28J60

    Столкнулся с проблемой, что к имеющемуся шилду Arduino Ethernet Shield v1.1 сложно найти библиотеки и внятные примеры. После долгих поисков нашел рабочий вариант. Ниже приведено описание необходимого окружения, ссылка на библиотеку для этой платы расширения и примеры использования.

    Идентификационные данные на лицевой стороне шилда:

    • Arduino Ethernet Shield v1
    • HanRun HR911102A 09/44

    Используется контроллер ENC28J60.

    Рабочая библиотека с примерами тут https://github.com/jcw/ethercard

    Распиновка шилда следующая:

    VCC — 3.3V
    GND — GND
    SCK — Pin 13
    SO — Pin 12
    SI — Pin 11
    CS — Pin 10