Аз съм специалист по вградени системи. През свободното си време обикновено търся нещо, което мога да използвам в проектирането на бъдещи подобни системи или да удовлетворя някои от интересите си.
Една от областите, които ме интересуват, са евтините компютри, които могат да работят под управлението на Linux, при това, колкото са по-евтини, толкова по-добре. И ето как се озовах в заешката дупка на малко известните процесори.
Помислих си, че има процесори, които са толкова евтини, че могат да се подаряват. Веднага ми хрумна, че мога да направя малък компютър с форм фактор на визитна картичка.
Стори ми се, че това ще е много яко и интересно. Бях виждал електронни визитни картички и по-рано, които имат най-различни интересни възможности – емулиране на флаш памети, мигане на светодиоди и дори безжичен обмен на данни. Но досега не бях срещал визитки с Linux. Така че реших да си направя една.
Това е крайната версия на този продукт – пълноценен минимален компютър с ARM процесор, който работи под управлението на моя собствена версия на Linux, създадена с помощта на Buildroot.
В единия ъгъл се вижда USB порт. Ако тази визитна картичка бъде включена към компютъра, то всичко се зарежда за около 6 секунди и тя се вижда в компютърната система като флаш карта, като е достъпен виртуален сериен порт, чрез който може да се влезе в средата на картата. В нея е записан README файл, копие на моята автобиография и няколко мои снимки. Има и няколко игри – Unix класиките fortune и rogue, малка версия на играта 2048 и MicroPython интерпретатор.
Всичко това е побрано на съвсем малък флаш чип с капацитет 8 MB. Зареждащата програма заема 256 KB, Linux ядрото е с големина 1,6 MB, а цялата root файлова система – 2,4 MB. Ето защо за виртуалната флаш карта остава съвсем малко място. Но домашната папка е с дадени права за запис на данни и на чипа може да се запише полезна информация. Всичко това се намира в малкия флаш чип.
Цялото устройство струва $3. То е достатъчно евтино, за да може да се раздава и подарява.
Проектиране и сглобяване
Всичко проектирах и сглобих самостоятелно. Това е част от моята работа, която харесвам. Всъщност, най-трудното бе намирането на най-евтините компоненти за това хоби.
Изборът на процесор бе най-важното решение, което оказва влияние на цената и реализуемостта на проекта. След много ровене и сравняване избрах процесора F1C100s – неособено известен чип на Allwinner, който е много евтин. В корпуса на този чип е интегрирана и оперативната памет. Купих няколко от тези процесори от Taobao. Останалите компоненти взех от LCSC.
Първата партида направих матово черна. Тези визитки изглеждаха адски красиво, но бързо се замърсяваха и зацапваха всичко наоколо.
С първата партида имах два проблема. Първо USB конекторът не бе достатъчно дълъг, за да влезе надеждно в USB порта. Второ, пътечките за чипа не бяха правилни, но се справих с това, като огънах крачетата.
Най-подробно проверих дали всичко работи и поръчах нова партида платки. Една от тези карти се вижда в първата снимка на тази статия.
Поради съвсем малкия размер на компонентите реши да използвам по-специалното (reflow solder) запояване с използването на сравнително евтин инструмент. Имам достъп до лазерен нож и с негова помощ изрязах шаблон за пътечките от материал за ламиниране. Получи се доста добре. Отворите за крачетата на процесора с диаметър 0,2 мм изискваха особено голямо внимание, за да се получи както трябва и много внимателно регулирах мощността на лазера и фокусирах лазерния нож.
Нанесох паста за запояване и ръчно поставих всички компоненти. При спойките никъде не използвах олово – всичко – платката, детайлите и пастата съответстват на RoHS стандарта, за да не ме мъчи съвестта, когато давам тези визитни картички на хората.
Списък на използваните материали и компоненти и техните цени
Придържах към възможно най-ниския бюджет и визитката се получи именно такава, каквато исках, без да ми е жал да я давам! Разбира се, няма да давам на всеки от тези визитки, понеже за изготвянето на всеки екземпляр се губи време.
Компоненти и цени
- F1C100s – $1,42
- PCB – $0,80
- 8MB flash – $0,17
- Други – 0,49
- Общо – $2,88
Разбира се, има и други разходи, които не е лесно да се пресметнат. Това са цената на доставката, понеже тя се разпредели в цената на компонентите в различните проекти. Но за една малка платка с Linux това е много евтино. Тази калкулация съвсем нагледно показва каква е себестойността на подобни устройства при големите компании и можете да бъдете сигурни, че при тях всичко е много по-евтино.
Възможностите
Тази визитна карта разполага със силно орязана Linux дистрибуция, която се зарежда за 6 секунди. Поради специфичния форм фактор няма поддръжката на входно-изходни устройства, няма мрежа и мястото за файлове е малко, за да могат да се стартират тежки програми. Но все пак успях да вмъкна в този фърмуер маса интересни неща.
USB
С USB можеха да се направят редица интересни неща, но аз избрах най-опростения вариант, за да може устройството да работи навсякъде, с най-различни компютърни конфигурации. Linux дава възможност на тази визитка да се вижда от компютърната система като устройство с поддръжката на Gadget Framework. Някои драйвери взех от предишните си проекти, включващи същия процесор, а и аз имам пълен достъп до платформата USB gadget framework. В крайна сметка реших да емулирам предварително генериран флаш диск и да дам достъп до shell-а чрез виртуален сериен порт.
Шелът
След логването като root, в конзолата могат да се стартират следните програми:
- rogue: класическа Unix игра – приключения в подземията
- 2048: опростена версия на играта 2048 в конзолен режим
- fortune: изписване на най-различни патосни изречения
- micropython: малък Python интерпретатор
- Емулацията на Flash Drive
По време на компилирането се генерира малък FAT32 образ, който се добавя като дял в UBI. Linux го представя на външната компютърна система като диск, на който може да се записва и от който да се чете информация.
Ако искате да видите, какво има в този виртуален диск, то това е по-лесно да се направи чрез разглеждане на сорс кодовете. Там има и няколко мои снимки и моята автобиография.
Ресурсите
Сорс кодовете
Моето хранилище Buildroot е в GitHub— thirtythreeforty/businesscard-linux. Там се намира кодът за генериране на флаш образа NOR. Там са и всички настройки за игрите и другите програми, които записах в Buildroot, след като всичко започна да работи. Ако искате да използвате F1C100s в свои проекти, то това би било една отлична начална точка. Ще се радвам, ако ми задавате въпроси.
Използвах чудесно направения софтуерен пакет Linux v4.9 за F1C100s, създаден от Icenowy и го промених малко. На моята електронна визитна картичка работи почти стандартната версия v5.2. Тя също е качена в GitHub – thirtythreeforty/linux.
Мисля си, че имам най-доброто в света портване на U-Boot за F1C100s. То частично се базира на работата на Icenowy, като неочаквано трудно се оказа да накарам U-Boot да работи както трябва. Това също е качено в GitHub – thirtythreeforty/u-boot.
Документацията
Намерих доста оскъдна информация за F1C100s, която показвам и тук:
- Allwinner F1C100s Datasheet – обща информация
- Allwinner F1C600 Reference Manual – регистрите на F1C600
- Схемата на Sipeed’s Lichee Nano – платката за разработчици, която използвах за настройката на софтуера
За любопитните публикувам и схемата на моя проект:
Заключение
Докато работих върху този проект научих много неща. Това е моят първи проект със запояване без олово. Научих се и да намирам ресурси, от които да вземам информация за компоненти с лоша документация.
Използвах натрупания през годините опит с Linux и уменията си да разработвам печатни платки. Проектът си има някои недостатъци, но доста добре показва основните ми умения.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!





