LED тикер (помогнете ми да разбера)
Помолиха ме да помогна с линията за движение, добре, такава, каквато слагат в автобусите например. А именно: линията е проектирана да работи през интернет, но трябва да я „преработите“, така че просто да изтегля данни от компютър (накратко, напълно изхвърлете частта с модема). Всъщност задачата изглежда разбираема, но с моето ниво на знания се страхувам, че няма да мога да се справя сам (е, не е страшно, защото ако не го направя, просто ще го върна, но бих искал да помогна на човек).
И така, кой ще помогне в обратното инженерство? :) Или може би някой вече е работил с такива, и имате информация, докове?
За да започнете, ето как изглежда:
Излезе твърде дълго, по някаква причина се опитах да направя снимки на чиповете, тогава си помислих, че ще бъде по-лесно да направя снимка ...
Захранване 5 волта.
Самата линия за движение се състои от 3 секции, свързани последователно. 4 LED матрици 8х8 на всяка секция. Следните елементи също присъстват във всеки раздел: 1) toshiba japan tb62706bng 5e9ka 2 бр. - 16-БИТОВ РЕГИСТЪР ЗА СМЕСТВАНЕ, РЕЗАЛИ & ДРАЙВЕРИ ЗА ПОСТОЯНЕН ТОК 2) 74hc138d 1бр. - 3-към-8 редов декодер / демултиплексор; обръщане 3)in74ac244 1бр. - Осмичен неинвертиращ буфер с 3 състояния/линеен драйвер/линеен приемник И няколко други подробности.
Контролният блок е включен в първата секция (в 2x8 пиновия конектор), той съдържа: 1) atmega128L-8au 1 бр - както разбирам, тя командва парада 2) at45db041b-tu 1 бр - флаш памет 3) 74act244 1 бр - Осмични неинвертиращи буфери / Линейни драйвери с 3 състояния Изходи 4) 7 4hc573d 1бр - Осмичен D-тип прозрачен ключ; 3-състояние 5) BSI BS62LV256SCP70 1бр - CMOS SRAM с много ниска мощност, 32K X 8 бита 6) модел на модул за данни на motorola g24: f6423aac 1бр - модем
Също така на контролния блок имаме конектор за SIM карта и три щифтови конектора: 1) 2x8 - залепва в движещата се линия Изглежда така: два най-леви контакта - минус захранване следващите два отляво са затворени един към друг, отидете на 74act244 след това следващите два два по два изобщо не отиват към нищо (не можете да видите през светлината, платката изглежда общо двуслойна) след това следващите два отново са затворени, отидете на 74act244 след това 4 контакта отиват на 74act244 две най-десни - съответно плюс хранене
2) 2x3 - Веднага си помислих "ISP", но nifiga! Всъщност истината е ISP и аз отново съм глупак. Извикано досега: —+мощност —земя —2-ри и 3-ти мега крак —11 мега крак SCK —20 мега крак RESET
3) 1x4 - Веднага си помислих "UART", но също и от! - земя - 7, 8 и 9 мега крака O_o Чудя се, хм, може би това е конектор за свързване на контролни бутони? При включено захранване два от тях имат 3,3 волта, а последният има 0,03 волта.
Опции за решаване на проблема:1) Разберете командната система на местните мозъци и принудете техните данни да се показват на линия без модемна връзка, само с компютърен порт 2) Ако първата опция се прекъсне, напълно се отървете от мозъците (жълта дъска), вместо тях, развъждайте свои собствени със собствените си мозъци 3)Актуализация:напишете свой собствен фърмуер и го качете на мозъците, макар че би било жалко, тогава модемът на шала ще бъде празен
Първо, мисля, че трябва да опитате да се свържете чрез UART. Очевидно няма да работи, тъй като не се оказа, че е UART, но просто ISP виси на него ...
Кой какво ще каже?
Актуализация1:Тъй като конекторът 2x3 се оказа ISP, както първоначално си помислих, се свързах с него и изтече фърмуера (вижте прикачения файл по-долу). Това е мястото, където познанията по асемблер и способността да разглобявам и т.н. вероятно биха ми били полезни, но, грешен - признавам, не знам всичко това и не мога ... В това отношениеПоявиха се 3 решения (виж по-горе). В същото време, ето и предпазителите: High C9 Low BF Ext FF Lock 3F
Актуализация2:(Тук се появи малко време, седнах да размишлявам.) Както първоначално планирах, плюх на собствените си мозъци и започнах да изучавам конектора 2x8 за независим контрол на този боклук.
Всъщност на тези конектори имаме: > 2 линии - мощност (5,2 волта) > 6 реда - контрол (всички се изтеглят от резистори с 6 или 12 kOhm до +, т.е. контролируеми - плъзгане към минус): >> 3 реда - управление на реда 2^3=8 реда, т.е. с техните различни комбинации свети определен ред >> 3 реда - управление на колони (и тук имаме регистър за смяна): >>> 1 ред - данни >>> 1 ред - часовник / такт >>> 1-ви ред - enable+latch Това е всичко :)
Алгоритъмът е прост: 1) Освобождаване на активиране 2) Издаване на 96 бита данни (първи ред) към линията за данни (часовник през часовника) 3) Издаване на желаната комбинация на контролните линии на линията, за да освети първия ред 4) Дайте активиране 5) Повторете стъпки 1-4 за останалите 7 реда 6) ПЕЧАЛБА :)
Сега трябва да разработим парче желязо. Тоест парче желязо е просто до мозъка на костите. Накратко, отидох да помисля за парчето желязо. Има налични мега 8 и 16, в идеалния случай би било направено на V-USB, така че адаптерът за com порта да не произвежда, но това не е толкова критично в действителност. Е, напишете софтуер. :)
Update3:Зарадвах се рано, човечецът ми изясни, че трябва не само да работи от компютъра, а само да качва данни от компютъра и след това трябва да работи автономно. Елхи… Така че чипът на простото решение няма да работи в челото. Така че имате нужда от памет и т.н., така че ще трябва да използвате собствените си мозъци и да се справите с паметта за тях, а щастието беше толкова близо ...
Update4:Хм, добре, засега съдът и делото (обещаха да ми изпратят програма, която генерира данни за низа и с която просто искаха да работят, чакам), попълних малко кода си: накарах низа да работи от мозъка ми (но не в буквалния смисъл, разбира се) от компютър (от софтуер Delphi). Алгоритъмът е следният: 1) Delphi показва текст върху картината, след това чете картината байт по байт и изпраща тези байтове (12x8 = 96) чрез UART 2) MC, чрез прекъсване от таймера, постоянно рисува това, което е в буфер 1 на екрана, и чрез прекъсване от UART, записва това, което е дошло в буфер 2 3) Веднага след като буфер 2 е напълно запълнено, MC разменя буфери 4) Delphi shift изписва надписа върху картината и отново точка 1 Ето какво се случи:
Линията върви нормално, черни пропуски - просто честотата на камерата съвпада с актуализирането на линиите :)
Актуализация 5:В резултат на това стигнах до следното: ATmega328 + SD карта. Изглежда, че задачата е изпълнена. Автономност и простота: вземаме SD карта, поставяме я в компютър, в програмата, която собственикът на линията ми предостави, създаваме скрипт и го запазваме на картата (за щастие тази програма има такава функция, въпреки че можеха да направят само запис във файл, но не, само на карта с памет и всичко се изтрива от картата, какво по дяволите? O_o). След това стартираме малка програма, която леко модифицира файла със скрипта (болно е, че структурата на оригиналния файл не е оптимална). След това поставяме картата в текущата линия, включваме линията, ПЕЧАЛБА? Изглежда да. Тук:
Актуализация 6 (последна):като логично заключение, прилагам снимка на това как LED низът сега изглежда отзад:
Изглежда, че дори се оказа доста спретнато, лошо е обаче, че шалът с SD конектора е отворен, но честно казано, бях твърде мързелив, за да измисля „опаковка“ за него ... Да, итака че подписът на "създателя" винаги се вижда;) Но мозъците са вътре (по някаква причина не направих снимка).