Теми от: Декември '12
Да живее китайската прецизност!
Всъщност, по-важното е, че си бях поръчал само едното (дясното), но китайците са си рекли - що пък да не му пратим още едно, за всеки случай? И са ми начислили само едното. Прецизност!
Публикувано в категория Картинки -- 14 Dec 2012, 13:34, 5 коментара -- View in English
Хардуерен случаен генератор
Задобрявам с електрониката :) Вече като ми текне да си скова нещо, ей така, за кефа, докарвам 6 часа време от-до. Уикенда бях нещо болен и реших да си направя един случаен генератор.
И то не какъв да е, ами яко аркаден. С големи цифри, голям бутон, ярък, мигащ, светещ :) За употреба в игри, които се играят с две зарчета, чиито числа се сумират - като например Заселниците на Катан. Всъщност, генераторът просто "хвърля две зарчета", а какво се прави с резултатите им се настройва с един джъмпер.
Хардуерен рандом генератор
В компютрите обикновено ползват LCPRNG алгоритми (или по-сложни), което води до това, че когато някакво "уж случайно" теглене (например, за лотария) се прави от компютър, никога не можеш да убедиш баба си, че тегленето не е манипулирано :) За щастие, когато човек има по-директен достъп до хардуера, може да направи нещо като това:
while not keypressed() { counter++; } return (counter MOD 36);
Какво имаме тук? Един брояч се увеличава бясно (хиляди, милиони пъти в секунда). В момента, в който човекът натисне бутон, броячът замръзва на последната си стойност, която се използва за да се определи какво се е "паднало" от "заровете".
Представете си, че се движите с кола по магистралата. И магистралата не е само с табелки на всеки километър - ами е разграфена на метри и сантиметри. На съседните сантиметрова деленийца се изреждат числата 0, 1, 2, ..., 34, 35, 0, 1, ... и така до безкрайБургас. Както си върви колата, хвърляте от нея едно метално топче. На което сантиметрово деление се спре топчето, вземате числото от оттам. Е точно нещо такова прави горният код - числото е практически случайно. Остава само на всяка възможна комбинация от две зарчета да й се даде чисълце от 0 до 35 и така имаме 1:1 съпоставка между генерираните числа и "двойка зарчета".
Дизайн
Пробвах няколко подредби на елементите върху платката. Огромният бутон е от SparkFun - друг не успях да си харесам, макар че този пък идва възголемичък, ама карай.
Разработка
Няма как да не се мине през бредборд:
И умалена версия на червения бутон - докато си тествам софтуера:
Платка
Нали се бях заклел - повече никога перфборд! Но за този проект щеше да е overkill печатна платка (макар, че вече се научих горе-долу как стават и чакам едни от Сириус PCB, за едно друго проектче, за което ще пиша скоро). Та тук ползвам stripboard (още известна като Veroboard). Това е монтажна платка, на която има хоризонтални пътечки. Елементите се монтират перпендикулярно на пътечките, което води до една характерна подреденост в дизайна - всички пътища са прави (което е в пълно съзвучие с вътрешната душевност на човек, расъл в Стара Загора или Манхатън!).
Първата работа беше да пробия 4 дупки с новата си придобивка:
Не знам как съм живял преди без дремел :)
После споих малко рейки:
Ключова особеност на стрипборда е, че пистите са много дълги, но позволяват лесно да се прекъсват с едно инструментче и така един хоризонтал може да се ползва да свързва няколко отделни групи компоненти. В случая: наложително е да изолираме двете страни на микроконтролера, както и двете - на индикаторите, една от друга:
Като плюсове на стрипборда е: по-малко поене, много по-малко custom свързване, толерантност към грешки. Ако нещо объркате, често не се налага да се разпоява - с "шилото" изолирате дефектната част и си я прекарвате от другаде. Като недостатък: внимателно с поенето, да не някое "мустаче" да свърже две писти. Два такива хардуерни бъга имах и ги търсех сума време...
Нещата взеха да се позапълват с резистори...:
...и елементи:
Please, install software:
Полека-лека заприличва:
Реших индикаторите също да са върху рейки. Могат да се запоят и директно, обаче тогава обширното пространство под тях щеше да е неизползваемо.
Довършителни работи
Тестов блинк върху сегментите:
... както и тестови цифри. Всичко е 6:
Ето как си го представях да изглежда финално:
Обаче не се накефих на ключето за включване. Голямо е, и ако исках да го изведа на удобно, щеше да трябва да правя редизайн и да дупча голяма дупка. Но пък ми се намираха едни ЦК ключета...
Включих в действие другата нова играчка:
На вид върти свредлото много мързеливо, ама как я дупчи тая пластмаса - все едно е масло...
Културна работа:
Готово
Таймерът е на 6 часа и половина от първата снимка. Ето как изглежда вече опаковано:
Please, press the button:
Here, you're lucky:
И един безсмислен надпис:
нещо като жичкаджийския еквивалент на кода i++; /* увеличаваме i с единица */
Ето го в действие: YouTube
В крайна сметка, исках да си направя рандом генератор, а финалното изделие подозрително прилича на бомба със закъснител (може би по-скоро от вида, който Холивуд ни е формирал като представа за такава бомба). Малко като вица за бабата в соца, дето работила в завод и цял живот правила "бързовари", та като си откраднала малко части да си направи вкъщи един бързовар за себе си, взела, че сглобила Калашник. И така три пъти подред :D
Заключение
Предимства:
- "Хвърлянето" на зарове става адски бързо и не заема толкова място на масата;
- Общо взето гарантирано равномерно разпределение. Няма вече "ей, ама ти не завъртя зарчетата като хората...";
- Написах си една функция - да ми води статистика. Така, след дадена игра, може да видим кое число колко пъти се е падало (печатането на статистиката се активира със задържане на бутона за над 6 секунди);
Недостатъци:
- "Рупа" батерийки бързо, тази ще издържи за 2-3 игри най-много;
- Подозирам, че ще трябва да разкажа аналогията с магистралата доста пъти, като пак не съм сигурен, дали ще помогне срещу предубедени хора. Има такива, дето си мислят, че модернизирането и компютризирането на каквото и да е непременно води до неговото разваляне. Без значение, че целия им живот зависи от компютри, и, ако им спреш Фейсбука за 2 дена ще изпаднат в нервна криза;
- С това ще ме пуснат на самолет точно никога :D Сигурно даже ще ме затворят да ме разпитват дооооста дълго време :D
Сорс-кода на нещото можете да изтеглите оттук.
По празниците предстои доста Катан, нямам търпение да го пробвам :)
Публикувано в категория Hardware -- 9 Dec 2012, 16:09, 3 коментара -- View in English