More...

Time is an illusion. Compile time - doubly so.

Теми от: Декември '12


Да живее китайската прецизност!

Image

Всъщност, по-важното е, че си бях поръчал само едното (дясното), но китайците са си рекли - що пък да не му пратим още едно, за всеки случай? И са ми начислили само едното. Прецизност!


Публикувано в категория Картинки -- clock 14 Dec 2012, 13:34, 5 коментара -- English View in English


thought

Хардуерен случаен генератор

Задобрявам с електрониката :) Вече като ми текне да си скова нещо, ей така, за кефа, докарвам 6 часа време от-до. Уикенда бях нещо болен и реших да си направя един случаен генератор.

И то не какъв да е, ами яко аркаден. С големи цифри, голям бутон, ярък, мигащ, светещ :) За употреба в игри, които се играят с две зарчета, чиито числа се сумират - като например Заселниците на Катан. Всъщност, генераторът просто "хвърля две зарчета", а какво се прави с резултатите им се настройва с един джъмпер.

Хардуерен рандом генератор

В компютрите обикновено ползват LCPRNG алгоритми (или по-сложни), което води до това, че когато някакво "уж случайно" теглене (например, за лотария) се прави от компютър, никога не можеш да убедиш баба си, че тегленето не е манипулирано :) За щастие, когато човек има по-директен достъп до хардуера, може да направи нещо като това:

	while not keypressed() {
		counter++;
	}
	return (counter MOD 36);


Какво имаме тук? Един брояч се увеличава бясно (хиляди, милиони пъти в секунда). В момента, в който човекът натисне бутон, броячът замръзва на последната си стойност, която се използва за да се определи какво се е "паднало" от "заровете".

Представете си, че се движите с кола по магистралата. И магистралата не е само с табелки на всеки километър - ами е разграфена на метри и сантиметри. На съседните сантиметрова деленийца се изреждат числата 0, 1, 2, ..., 34, 35, 0, 1, ... и така до безкрайБургас. Както си върви колата, хвърляте от нея едно метално топче. На което сантиметрово деление се спре топчето, вземате числото от оттам. Е точно нещо такова прави горният код - числото е практически случайно. Остава само на всяка възможна комбинация от две зарчета да й се даде чисълце от 0 до 35 и така имаме 1:1 съпоставка между генерираните числа и "двойка зарчета".

Дизайн

Пробвах няколко подредби на елементите върху платката. Огромният бутон е от SparkFun - друг не успях да си харесам, макар че този пък идва възголемичък, ама карай.
Image Image

Разработка

Няма как да не се мине през бредборд:
Image

И умалена версия на червения бутон - докато си тествам софтуера:
Image

Платка

Нали се бях заклел - повече никога перфборд! Но за този проект щеше да е overkill печатна платка (макар, че вече се научих горе-долу как стават и чакам едни от Сириус PCB, за едно друго проектче, за което ще пиша скоро). Та тук ползвам stripboard (още известна като Veroboard). Това е монтажна платка, на която има хоризонтални пътечки. Елементите се монтират перпендикулярно на пътечките, което води до една характерна подреденост в дизайна - всички пътища са прави (което е в пълно съзвучие с вътрешната душевност на човек, расъл в Стара Загора или Манхатън!).

Първата работа беше да пробия 4 дупки с новата си придобивка:
Image

Не знам как съм живял преди без дремел :)

После споих малко рейки:
Image Image

Ключова особеност на стрипборда е, че пистите са много дълги, но позволяват лесно да се прекъсват с едно инструментче и така един хоризонтал може да се ползва да свързва няколко отделни групи компоненти. В случая: наложително е да изолираме двете страни на микроконтролера, както и двете - на индикаторите, една от друга:

Image

Като плюсове на стрипборда е: по-малко поене, много по-малко custom свързване, толерантност към грешки. Ако нещо объркате, често не се налага да се разпоява - с "шилото" изолирате дефектната част и си я прекарвате от другаде. Като недостатък: внимателно с поенето, да не някое "мустаче" да свърже две писти. Два такива хардуерни бъга имах и ги търсех сума време...

Нещата взеха да се позапълват с резистори...:
Image

...и елементи:
Image

Please, install software:
Image

Полека-лека заприличва:
Image Image

Реших индикаторите също да са върху рейки. Могат да се запоят и директно, обаче тогава обширното пространство под тях щеше да е неизползваемо.

Довършителни работи


Тестов блинк върху сегментите:
Image

... както и тестови цифри. Всичко е 6:
Image

Ето как си го представях да изглежда финално:
Image

Обаче не се накефих на ключето за включване. Голямо е, и ако исках да го изведа на удобно, щеше да трябва да правя редизайн и да дупча голяма дупка. Но пък ми се намираха едни ЦК ключета...

Включих в действие другата нова играчка:
Image

На вид върти свредлото много мързеливо, ама как я дупчи тая пластмаса - все едно е масло...
Image

Културна работа:
Image Image

Готово

Таймерът е на 6 часа и половина от първата снимка. Ето как изглежда вече опаковано:

Please, press the button:
Image

Here, you're lucky:
Image

И един безсмислен надпис:
Image
нещо като жичкаджийския еквивалент на кода i++; /* увеличаваме i с единица */

Ето го в действие: YouTube

В крайна сметка, исках да си направя рандом генератор, а финалното изделие подозрително прилича на бомба със закъснител (може би по-скоро от вида, който Холивуд ни е формирал като представа за такава бомба). Малко като вица за бабата в соца, дето работила в завод и цял живот правила "бързовари", та като си откраднала малко части да си направи вкъщи един бързовар за себе си, взела, че сглобила Калашник. И така три пъти подред :D

Заключение

Предимства:



Недостатъци:



Сорс-кода на нещото можете да изтеглите оттук.

По празниците предстои доста Катан, нямам търпение да го пробвам :)


Публикувано в категория Hardware -- clock 9 Dec 2012, 16:09, 3 коментара -- English View in English

Language:

bgБългарски
enEnglish


Категории:

Мета
Hardware
Технологии
Забава
Open source
Интересно
Наляво-надясно
Простотии
Програмиране
Музика
Картинки
Фотография
Всички


Архив:

+ 2008 (21)
Март '08 (3)
Април '08 (5)
Май '08 (5)
Юли '08 (2)
Септември '08 (1)
Октомври '08 (2)
Декември '08 (3)
+ 2009 (15)
Януари '09 (2)
Февруари '09 (1)
Март '09 (1)
Юни '09 (1)
Юли '09 (1)
Август '09 (3)
Септември '09 (1)
Октомври '09 (2)
Ноември '09 (1)
Декември '09 (2)
+ 2010 (11)
Януари '10 (1)
Април '10 (2)
Юни '10 (2)
Юли '10 (1)
Септември '10 (1)
Ноември '10 (2)
Декември '10 (2)
+ 2011 (11)
Януари '11 (3)
Февруари '11 (1)
Юли '11 (1)
Август '11 (2)
Септември '11 (1)
Октомври '11 (3)
+ 2012 (19)
Януари '12 (3)
Февруари '12 (1)
Март '12 (1)
Април '12 (2)
Май '12 (3)
Юни '12 (1)
Август '12 (2)
Септември '12 (1)
Ноември '12 (3)
Декември '12 (2)
+ 2013 (6)
Март '13 (3)
Юни '13 (1)
Август '13 (1)
Октомври '13 (1)
+ 2014 (7)
Март '14 (1)
Април '14 (1)
Юни '14 (1)
Септември '14 (3)
Декември '14 (1)
+ 2015 (5)
Януари '15 (1)
Март '15 (3)
Май '15 (1)
+ 2016 (5)
Юни '16 (1)
Юли '16 (1)
Септември '16 (1)
Ноември '16 (1)
Декември '16 (1)
+ 2017 (1)
Август '17 (1)


Последни коментари:

23 Jun 2024, 18:01 от anrieff
21 Jan 2020, 09:01 от anrieff
20 Jan 2020, 11:38 от Владо
30 May 2017, 02:02 от anrieff
26 May 2017, 01:00 от Mathew
30 Mar 2017, 13:59 от antfarmer


Valid XHTML 1.0 Strict

Blogroll:

linkТимур и неговите командоси
linkivanatora
linkБезброй математици...
linkJoel on Software
linkRidiculous Fish
linkXKCD blag