Search
Write a publication
Pull to refresh
28
0
Send message

Орион-128: радиолюбительский компьютер

Reading time9 min
Views143K
Исторически, первым массовым радиолюбительским компьютером был Радио-86РК, требовавший для построения всего 29 микросхем. Его существенным ограничением был то, что он поддерживал только текстовый режим и требовал трудно-доставаемых микросхем. Орион-128 — был логическим продолжением — также ориентирован на сборку радиолюбителями, имел больше памяти (128кб против 16/32кб) и поддерживал графический режим: 384 × 256 (в режиме 2 цвета, 4 цвета, и 2 цвета из палитры 16 цветов на каждые 8 пикселей). Ориентировочный размер популяции Орион-ов в период его пика популярности — около 30-40 тыс. компьютеров.

Орион появился у меня в 94-м году, и именно на Орионе я запускал свои первые программы (до него их приходилось писать «в стол»). К моменту приобретения первой PC-шки в 97-м — Орион начал глючить все забористее (не грузился с первого раза, приходилось много раз перезагружать...) и под конец перестал работать совсем. Отремонтировать я его тогда не мог, и все эти годы он пролежал без движения, но не забытым.

Этим летом я наконец решил попробовать его отремонтировать — что из этого получилось (а также обзор архитектуры и некоторых программных особенностей) — под катом.
Читать дальше →

Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту

Reading time25 min
Views188K

Добрый день, уважаемые хабровчане. В этом цикле статей мы с вами пройдем достаточно длинный, но весьма интересный путь по превращению обычного роутера в мини-компьютер с LCD-дисплеем. Для этого мы разработаем сначала USB-видеокарту на базе микроконтроллера STM32F103, потом тестовый драйвер, который позволит нам выводить на него графику, и, наконец – полноценный драйвер фреймбуффера, благодаря которому можно будет запустить настоящие графические приложения, такие как x-сервер. Заодно мы научимся включать наш код в дерево исходников OpenWRT, допиливать его ядро и делать прочие полезные вещи.
Ну а в самом конце мы получим результат, который, я надеюсь, вызовет ностальгическую слезу у многих читателей. Я постараюсь излагать материал таким образом, чтобы в конце каждого этапа мы получали осязаемый результат, не дающий угаснуть энтузиазму. Итак, начнем.
Читать дальше →

Допиливание MR3020, пересборка его ядра и конфигурирование инструментария разработчика

Reading time18 min
Views247K
Добрый день, уважаемые хабровчане. Так как в последнее время в DIY-проектах стал набирать популярность китайский роутер фирмы TP-Link TL-MR3020 (или его аппаратный аналог для китайского рынка TL-WR703N), я решил написать статью по вариантам его допиливания и конфигурирования для своих проектов, тем более что по работе я развлекался с ним последние несколько месяцев. В статье я постараюсь рассмотреть аспекты, которые не охватывают в большинстве статей для начинающих – а именно – практические примеры по пересборке его прошивки и конфигурировании для себя удобного инструментария разработчика.
Читать дальше →

История взаимодействия «чайника» и DS18B20 посредством Raspberry Pi с отправкой данных на narodmon.ru

Reading time7 min
Views179K
Доброе время суток, уважаемое хабрасообщество!
Неделю назад я наконец-то дождался свою Малинку. Этот пост о том, как можно набить шишки в такой простой задаче как работа с датчиками температуры.
Кому интересно — добро пожаловать под кат.
Читать дальше →

Рисование графиков. Python. Tkinter

Reading time2 min
Views146K
Это моя первая статья и я хотел бы рассказать о том как написать простейшую программу по рисованию графиков функций.
Статья ориентирована на новичков!
Начнем с того, что наша функция будет иметь вид:
y = c(x)
Где c(x) — это выражение от одной переменной «x».
Сразу считаем её.

f = input('f(x):')


Считать значение функции мы будем функцией eval().
Подключим нужные нам библиотеки.

from math import *
from tkinter import *
f = input('f(x):')


Теперь надо нарисовать оси координат.

from math import *
from tkinter import *

f = input('f(x):')

root = Tk()

canv = Canvas(root, width = 1000, height = 1000, bg = "lightblue", cursor = "pencil")
canv.create_line(500,1000,500,0,width=2,arrow=LAST) 
canv.create_line(0,500,1000,500,width=2,arrow=LAST) 

canv.pack()	
root.mainloop()


Читать дальше →

Хайку. Начало

Reading time18 min
Views41K
О том, как команда энтузиастов воссоздала замечательную операционную систему.

image
Недавнее собрание в Дюссельдорфе команды программистов работающих над «Хайку» — операционной системой с открытым исходным кодом, которая представляет собой попытку воссоздания и усовершенствования старой операционной системы, известной как BeOS. Фото: Андреас Тейхман
Читать дальше →

Краткий обзор Stellaris LaunchPad

Reading time2 min
Views59K
Наконец-то приехал давно заказанный LaunchPad, первые фотографии и быстрый старт — под катом.

Что за штука? Отладочная плата от Texas Instruments с процессором Cortex-M4F.
Характеристики:
  • Частота ядра 80 MHz(производительность 100 DMIPS)
  • Память: 256 KB флеша, 32 KB SRAM, 2KB EEPROM
  • 8 UART, 4 SPI, 1 CAN, 6 I²C, самое вкусное — полноценный USB(способный как на Device, так и на Host и OTG)
  • 3 аналоговых компаратора, два 12-битных АЦП, датчик температуры.
  • 16 ШИМ, 2 входа для энкодеров, 12 таймеров, таймер реального времени с часовым кварцем, 2 вачтдога.
  • 43 пина I/O.

Смотреть и читать

Как найти PCI устройства без операционной системы

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

В качестве минимальной базы для работы с PCI-устройствами будем использовать ядро, поддерживающее спецификацию Multiboot. Так удастся избежать необходимости писать собственный загрузочный сектор и загрузчик (loader). Кроме того, этот вопрос и так отлично освещен в интернете. В качестве загрузчика будет выступать GRUB. Грузиться мы будем с флэшки, так как с нее удобно загружать и виртуальную, и реальную машину. В качестве виртуальной машины будем использовать QEMU. В качестве реальной машины должна выступать машина с обычным BIOS-ом (не UEFI), поддерживающим загрузку с USB-HDD (обычно присутствует опция Legacy USB support). Для работы понадобятся Ubuntu Linux со следующими программами: expect, qemu, grub (их можно легко установить при помощи команды sudo apt-get install). Используемый gcc должен компилировать 32х битный код.
Читать дальше →

Веб-контроль Raspberry Pi GPIO

Reading time4 min
Views83K
Доброго времени суток! В этом посте я хочу показать, как управлять электроникой через Интернет используя Raspberry Pi. Выглядеть это будет примерно вот так.



Краткое описание:
  • Серверная программа, которая работает на Raspberry Pi, для того чтобы читать переменные
  • Базы данных MySQL для хранения переменных
  • Веб-страница Apache2, для того чтобы контролировать переменные


Читать дальше →

Как устроены переменные в PHP

Reading time3 min
Views65K
Вроде простой вопрос, даже не понятно что на него ответить, правда?
Мы все знаем как создать переменную, как получить значение переменной, как взять ссылку на переменную в конце концов.
Но как они работают изнутри?
Что происходит в интерпретаторе, когда вы изменяете значение переменной? Или когда удаляете ее?
Как реализованы типы переменных?

В этой статье я постараюсь раскрыть именно эти темы.

Abstract

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

Реконструкция автомата Pong

Reading time2 min
Views60K


В 1972 году инженер Аллан Алкорн столкнулся с необходимостью сделать простую видеоигру, в которой были бы двигающаяся точка, две управляемые ракетки и цифры для отображения счета. По сути, это задание было дано, чтобы помочь освоиться в Atari специалисту в электротехнике, не имевшему на тот момент опыта работы в зарождающейся сфере развлечений. Неясно, откуда была взята идея — то ли из симулятора тенниса на PDP-1, то ли украдена у провалившейся приставки Magnavox Odyssey, вышедшей в том же году, но Pong оказалась исторически первой коммерчески успешной компьютерной игрой.

Не было никакой заложенной программы, операционных систем, ОЗУ или процессоров; логические элементы обеспечивали функционирование графики, звука и управления. Игральный автомат состоял из 66 отдельных микросхем, и лишь для домашней версии всё это было собрано на отдельный кристалл. Умелец из Канады решил воссоздать оригинальный Pong по дошедшим до него схемам на основе ТТЛ.
Процесс выполнения и демонстрация работы

Запускаем консольные Java приложения на Android

Reading time2 min
Views41K


Речь пойдёт о проекте-утилитке, который может пригодиться всякому кто изучает Java и не всегда имеет под рукой ПК для просмотра работы примера кода в полевых условиях (как-то — в метро, маршрутке, кафешке и т.д.).
Читать дальше →

Java собеседование. Коллекции

Reading time10 min
Views910K
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →

ЛУТ на виниле или домашняя Arduino Mini

Reading time4 min
Views228K
Здравствуйте, изначально статья задумывалась как обзор плоттерного винила Oracal 651 в качестве замены фотобумаги для переноса тонера. Однако, в качестве примера я выбрал самодельную версию Arduino Mini (ATMega8) и решил довести статью до логического завершения.



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

Гвидо ван Россум перешёл из Google в Dropbox

Reading time1 min
Views25K
Автор языка программирования Python Гвидо ван Россум в пятницу отработал последний день в Google, а с января будет зачислен в штат компании Dropbox. Руководители Dropbox с радостью приветствуют Гвидо. Они называют его старым другом, помогавшим создавать Dropbox «с первых строчек кода» (dropbox.py).

«С самого начала было понятно, что Dropbox должен поддерживать все основные операционные системы. Исторически, такая поддержка требовала серьёзных усилий от разработчиков: поскольку для каждой платформы нужны различные средства разработки и языки программирования, приходилось переписывать тот же код несколько раз, — пишет основатель Dropbox Дрю Хьюстон в официальном блоге. — У нас не было на это времени. К счастью, нашим спасением стал язык программирования Python».
Читать дальше →

Программируемый микроконтроллер STM32 — с места в карьер

Reading time30 min
Views101K
Ниже описан мой первый опыт общения с программируемым микроконтроллером в лице STM32VLDiscovery, результатом которого явилась машинка из LEGO, управляемая с телефона, и ещё кое-что. Я постарался изложить свой путь в виде пошагового руководства к действию, но, предупреждаю сразу, не руководства «как делать правильно». Первые два раздела являются предисловием и не относятся непосредственно к данному микроконтроллеру.

image

Содержание:


  1. Первый контакт с микроэлектроникой.
  2. Строительство машинки на непрограммируемых логических элементах.
  3. Начало работы с STM32. Среда разработки. Подключение микроконтроллера к машинке.
  4. Определяем угол поворота передних колёс — обратная связь через АЦП.
  5. Использование ЦАП для воспроизведения звуков.


Погрузиться

Книга “Разработка приложений для Windows 8 на языке C#” доступна для скачивания

Reading time1 min
Views48K

Стала доступна для бесплатной загрузки первая русскоязычная книга по разработке Windows Store приложений на языке C#.
Вы можете скачать PDF версию данной книги на сайте:

http://www.spugachev.com/windows8book
Также, можно купить бумажную версию на OZON.RU.
Авторы книги: я (WizardBox), Atreides07 и kichik.
Читать дальше →

Скрещиваем T4 и SQL

Reading time4 min
Views6.2K
Думаю каждому разработчику баз данных (и не только их) приходилось обновлять/добавлять данные в конфигурационных таблицах. Я хочу поделится с Вами как я упростил работу с конфигурационными данными в таблицах с помощью T4.
Проще говоря данной статьей я хочу показать как вот этот SQL скрипт:

SET IDENTITY_INSERT dbo.Config ON
INSERT INTO dbo.Config(ID, ColorId, CategoryId, Name)
VALUES(2, 2, 4, N'Зеленый автобус')
SET IDENTITY_INSERT dbo.Config OFF

INSERT INTO dbo.CarDetail(ConfigID, DetailID, Count)
VALUES(2, 2, 4)
INSERT INTO dbo.CarDetail(ConfigID, DetailID, Count)
VALUES(2, 1, 1)
INSERT INTO dbo.CarDetail(ConfigID, DetailID, Count)
VALUES(2, 3, 3)

превратить в код C#:

var config = new ConfigTable();
config.Color = "Green";
config.Category = "Bus";
config.Name = "Зеленый автобус";
config.Id = 2;

config.Details.Add("Wheel", 4);
config.Details.Add("Engine", 1);
config.Details.Add("Door", 3);

Читать дальше →

MSP430 Launchpad в качестве сигнализации состояния серверного оборудования

Reading time4 min
Views20K
Специалистам, работающим с серверным оборудованием, известно насколько высокие требования ставятся перед источниками бесперебойного питания и системе кондиционирования и воздухообмена. Непосредственно сам неоднократно сталкивался с ситуациями, когда отказ той или иной системы приводил к падению ЦОДа одного из мобильных операторов стран СНГ. В одной из ситуаций одновременно основная и резервная линии питания ЦОДА были обесточены, дизельные генераторы завелись автоматически, но электрики не переключили определенный рубильник. ИБП до последнего держали нагрузку, а затем более 200 серверов оказались обесточены. В другой ситуации ЦОД после отключения питания на основной линии был переключен на резервную, напряжение на которой оказалось пониженным. Это привело к отказу в запуске кондиционеров, которые питаются в обход ИБП. От перегрева сервера отключились, коммутатор HLR завис надолго и восстановил полную работоспособность лишь спустя 2-3 дня. Все это приводило к тому, что без связи оставалось до миллиона абонентов. Отвечаю сразу на вопрос: “А что делала служба мониторинга?” В первой ситуации она посчитала работу сделанной до конца, во второй поздно заметила аларм на одном из многочисленных мониторов.

Так как непосредственно моей обязанностью было поднимать сервера после таких аварий и, мягко говоря, надоело надеяться на службу мониторинга стал искать решение кроме SNMP трапов. После разбора руководств, шедших в комплекте с ИБП и кондиционерами, было обнаружено, что все они поддерживают сухие контакты. Осталось найти, как с ними работать. На помощь пришла отладочная плата MSP430 Launchpad от Texas Instruments.
Читать дальше →

Google выпускает вторую версию Maps Android API

Reading time1 min
Views16K


Сегодня Google выпустил обновление к Maps Android API. Новое API содержит векторные карты, которые не только быстрее загружаются, но и позволяют пользователям легко переключаться между 2D и 3D режимами, в которых карты можно вращать при помощи жестов.
Читать дальше →

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity