Умна шамандура, част 1

a.k.a. “инж.”, part deux

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

Първият draft на това е от втори януари 🙂

Ghetto-ass шамандура
“Шамандурата”, сглобена върху прототипна платка, две планки и няколко шпилки за закрепване на анемометъра, ветропоказателя, LoRa-та и GPS-а.

Ще я опиша тук, за да си припомням какви шарении съм правил преди да стана стар, циничен и (още по-) скучен. Записката излезе малко над 100 страници без задължителния пейстнат код. Освен многото приказки, има и 102 “фигури”, примери и таблици, солидна част от които си играх да рисувам.

Първоначалната идея беше следната – едно Arduino следи всички датчици и предава стойностите им безжично по LoRa радио. От другата страна да стои друг LoRa възел, който е свързан към PSoC 4 и приема данните. PSoC-ът ги предава по сериен порт към компютър, на който работи .NET-ско приложение, което ги обработва и ги тика в MS SQL баз от данни някъде. Визуализацията е с много форми, графики и т.н.

Проблемът с това е, че цялото нещо може да тръгне точно веднъж, защото има много зависимости от библиотеки, dll-и и т.н (това да се чете като “не ми се занимаваше с глупости”).

Тъй катo трябваше да напиша документацията и да направя всичко сравнително бързо, реших да не се затормозявам с излишно сложни неща и разделих работата на три части: “отдалечена станция” (a.k.a шамандура), наземна станция и уеб приложение.

Представено графично изглежда долу-горе така:

Шамандурата използва китайска имитация на Arduino Nano. Микроконтролерът е същият, но и ма малки разлики в пиновете. Когато паметта в един момент се запълни на 99%, контролерът спря да работи и да се разпознава от компютъра. Оказа се, че докато е в “bootloader” режим (или както се нарича, режимът, в който влиза, малко след като му се бутне Reset копчето), може да се програмира. Освен това се оказа, че Serial1.available() връща true, когато на серийния порт няма нищо. Дори когато RX пинът е с pull-down резистор. Благодарение на това се наложи да правя геройства като изчакване на някакви секунди време, когато си говоря с LoRa модула.

Така и не успях да подкарам GPS модула успешно, дори след като го изкарах на терасата и чаках 30 минути да търси сателити с неговия си софтуер. Хардкодването на NMEA данните, които очаквах, ми спести няколко байта и нещото заработи пак.

Тук е моментът да си призная как ме домързя да изградя LoRa мрежа само за едната дипломна работа. Добре, че модулите (RN2483) могат да работят като прости радиа. Цялата безжична комуникация се гради на две команди.
В изпращащата част:
mac pause\r\n
radio tx CAFEBABE\r\n

Където “CAFEBABE” е гениално построеният ми пакет от данни, разделени с точка и запетая, но представен като шестнадесетичните стойности на ASCII кодовете на всеки символ от низа.

Приемащата част прави това постоянно:
mac pause\r\n
radio rx 0\r\n
Втората команда отваря неограничен прозорец за приемане на данни и блокира модула, докато не дойде нещо.

Така изглежда LoRa модулът, след като го запоих с поялник, на който човката е дебела, колкото пин и половина.

Радвам се и, че нямах антени за радиата, защото иначе щеше да ми се наложи да вложа мисъл и да се боря със смущения, ако някой беше решил да предава произволни данни на 868 MHz. Вярно е, че щеше да ми е по-забавно да направя комуникацията с целия LoRa стек, но реших да не се хабя толкова. Някой ден ще си поиграя с истинското нещо, както трябва.

Като се замисля, че миналата година си играх да чертая схема на Proteus за това, ми става смешно.

В един момент мислех да сложа и LDR, за да следя видимостта и коя част от денонощието е в момента. (наблюдателните ще забележат, че някои букви имат фон, защото ме домързя да експортирам наново и трих фона, който слага Proteus, с GIMP)

Приемащата част на това беше изключително лесна – PSoC 4, който само праща команда за чакане към LoRa-та, приема, каквото дойде и го предава към компютъра. В PSoC Creator това изглежда като два UART блока и малко код за комуникация.

На компютъра работи .NET (C#, разбира се) приложение, което слуша на някой COM порт, обработва данните и ги хвърля към уеб приложението. Изглежда така:

Token-ът е md5 на “suck my dick”.

Първата версия се казваше “Shamandura Control Center” и използваше DevExpress. Имаше няколко екрана за управление на всичките данни, но не ми хареса колко много работа трябва да се свърши, за да изглежда добре и зарязах.

Най-забавната ми част от това е, че BackgroundWorker-а, който се грижи за серийната комуникация, има методи “worker_Suffer” и “worker_Whine”, съответно за DoWork и ProgressChanged. Голямата хитрост тук е, че използвам ProgressChanged метода, за да си пращам съобщения, които да вършат нещо в UI нишката. Това е, за да избегна всички красоти около делегатите и другите C# неща за достъпване на контрол от не-UI нишка.

Така нареченото уеб приложение е Symfony проект с няколко контролера, генерирани с app/console generate:doctrine:crud и един, който се грижи да приеме и обработи заявката от десктоп приложението. Бидейки почти арт директор, намерих готова bootstrap-ска тема и я орязах, докато заприлича на нещо.

След логин излиза това.

Скоро не си бях играл с Google Maps, затова след логин в системата се показва карта с всички шамандури и по тях може да се цъка. В страницата с “детайли” на шамандура има няколко графики и карта с история на местоположението.

Тук скрих sidebar-а.

Това е.

Смятам, че си заслужих шестиците. Заедно с мен шестиците си заслужиха и проекти, които работят само на хартия и такива, на които дизайнът включваше форми, подредени с <br/> и много &nbsp;, както и черен цвят на тъмнозелен фон. Всички сме инженери 🙂

От въпросите, които ми зададоха, ми беше интересен следния: “Добре, де, виждам, че сте използвали всякакви езици: C, C#, PHP, има сайт… Защо не го написахте цялото на C#?”. Това зададено с леко тъп, снизходителен тон.

Bullshit mode: ON.

Както писах, горе – мързел. Използвайки суперсилата ми за празни приказки, “мързел” се превърна в обяснение как няма смисъл да товаря компютрите на хората със зависимостите, които води със себе си сложния .NOT проект. Всички имат браузър => сайт.

Приключвам с училището след близо 18 години. Ако се пречупя, може да изкарам и PhD, но това е прекалено ниско в приоритетите ми засега.

return; return; и обратно към интересните неща.

Privacy fuckup

Днес към 11 ме посрещна следният имейл: “Your Mojang password has been changed”. Не бях бутвал Minecraft или каквото и да е свързано с Mojang от няколко месеца, затова очевидно няма как аз да съм сменил паролата.

В имейла имаше линк за директна смяна на паролата, затова нещастникът е имал по-малко от час да се радва на акаунта ми. За това време е сменил всичко, което може да се сменя, с изключение на имейла. След като се логнах, смених всичко без името ми в играта, което може да се сменя веднъж на 30 дни. Писах на Mojang, но благодарение на Коледната им почивка все още отговарят на ticket-и от 24-и януари. Най-вероятно боклукът ще играе с моя акаунт и тъпото име, което е сложил, поне седмица, докато не се изясни всичко.

Реших да сменя всичките си пароли и попаднах на интересни неща, докато ровех из опциите за сигурност на facebook. Оказа се, че всякакви малоумни сайтове успяват да ми източат данните. Въпреки пуснатия adblock с добавени филтри за това. Не точат нищо, което да не е публично, но пак са утрепки, защото го правят неявно.

Решението е лесно – в настройките за приложения -> Apps, Websites and Plugins -> Edit -> Disable Platform.

Tough choice...
Tough choice…

Любимата ми част е “Your friends won’t be able to interact and share with you using apps and websites”. Звучи добре. Не знам защо не съм се сещал по-рано, че може да има такова нещо.

Стигнах и до частта за рекламите, но там нацелих еднорог:

Това не се случва често.

След като се наиграх с всичките тъпотии покрай настройките, дойде време на паролата. Там беше тъжно и срамно.

securityexpert

Остава само да подкарам нещо подобно на pi-hole върху някое от OLinuXino-тата.

Българска клавиатура за FirefoxOS

От следващата версия на FirefoxOS вече ще има българска клавиатура. Даже 3 🙂
Screenshot from 2013-11-30 21:56:34
Ще са налични БДС, нормална фонетична и другата фонетична (която на места пишат като БАН)

Не можах да измисля по-къси имена, затова името на нормалната фонетична подредба не се вижда изцяло в списъка.

Наваксване

През 2011 зарязах 90% от интересните неща, с които се занимавах, за да мога да си взема матурите с приемливи оценки и да вляза да уча някъде. Е, успях, но още не мога да вляза в ритъм с всичките странични глупости, които се навъдиха около университета.
Вече почти три месеца след края на семестъра и имам достатъчно свободно време след работа да наваксвам с нещата, които зарязах заради училището.

За тези малко повече от два месеца без да си давам зор, успях да науча повече, отколкото за две години в университета 🙂
Разочарованието не е пълно, защото тук-там се намират свестни преподаватели, на които им пука, че има хора, които са отишли с очакване да научат нещо. Нищо.

В момента работя върху няколко странични неща, които са ми интересни.
В края на семестъра започнах пак да се занимавам с Android-ското SDK и в момента имам две почти завършени приложения с много идеи около тях, които се надявам да успея да развия. Нищо кой-знае какво не са, но около тях уча SDK-то.

Извън якостите на Java-та се занимавам с две-три неща на PHP – пренаписвам един сайт, около който се заформя подобие на framework. Поиграх си и с API-то на Last.fm, навъдиха се интересни идеи за следене на някои статистики.

Отново се обърнах към Ruby с Ruby on Rails. Оказа се по-лесно и интересно, отколкото го помня. Освен с Ruby около Rails се забавлявам и с CoffeeScript и Sass, скоро и Haml.

Остава ми да започна пак да свиря и всичко ще ми е наред 🙂

Около редовното ми писане тук ми дойде идея за WordPress plug-in – колкото повече време минава от последнатото постнато нещо, толкова по “прашасала” става темата на блога. Или ще се случва нещо друго. Не знам.

Хубаво е като не те занимават с глупости.

2012

Равносметка. Защото така.

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

Общо взето се случи това:

  • Успях без кой знае какви усилия известно време да се издържам като freelancer. Имах достатъчно време да мързелувам и да уча, докато се занимавам с разни проекти. Научих се (или поне така си мисля) да подхожам както трябва към клиентите. Беше интересно.
  • След това си намерих постоянна (да се чете истинска) работа и общо взето ежедневието ми стана почти монотонно – работа, спане, работа и межувременно ядене и други работи.
  • Освен, че се издържах сам, се насладих на търсенето на временно място за живеене. Това беше от неприятните преживявания, но накрая успях да си намеря добро и удобно място.
  • Все още не са ме отказали от ученето тук. Даже към момента съм почти 55% инженер – клик.
  • Не научих нито един нов език, било то за програмиране или междучовешка комуникация. Но пък развих тези, които вече знам. Например – написах си php framework и половина. Не подозирах колко елементарно става и колко малко е нужно.
  • Купих си кола. Много полезно нещо. Ако ми се осъществят плановете, ще направя доста интересни неща по нея.

Като цяло не беше крайно зле, но, както винаги, може и по-добре.
Ще ми се през 2013 да реализирам поне половината от нещата, които съм си намислил. Първо да се наспя, пък после ще мислим другите работи.

That is all.

2011-12-27

Status update.
Сега като съм ваканция, ще имам малко повече свободно време, което да пилея в интернетене, та реших да пиша за едно-две неща, които станаха.

Първо – преди около две седмици в университета имаше “Ден на Роботиката” (не писах тогава заради стандартните причини).
Имаше няколко лекции. Първата беше за роботите, помагащи на стари хора. Не знаех, че в БАН се разработва такова чудо.
Не ми харесва цялата работа. От тези роботи (не само българския) се очаква да помагат. Чудно ми е как ще е полезна играчка за $200,000, която се движи страшно бавно, тежи повече от 100кг и не може да се качва по стъпала. Колко е полезно, ако 90-годишната баба може да стане и да си вземе водата и хапчетата по-бързо от робота 🙂
Вярно, че става въпрос за сложни математически изчисления, алгоритми, ала-бала, но все пак…
Както и да е, направили са нещо много добро с не толкова много пари. Има напредък от последния път, когато гледах такова.

Човекът от БАН изнесе още една лекция освен тази – за роботите РОБКО. Тя беше по-интересна. Разказа как са подкарали старите играчки под windows/Linux и че са направили нова серия (май беше Феникс). Все интересни неща.
Спомена ѝ ROS, което изглежда интересно.

Следващата лекция беше на един леко неподготвен човечец и беше с основна цел реклама.

Последната, която гледах, беше на човек от нещо, свързано с National Instruments, не помня точно. Май бяха metrisys, но може и да се бъркам. Няма значение.
Показа много интересни неща – FPGA матрици, разни малки процесори, програма за графично програмиране на FPGA, която обръща нещата директно във VHDL. Все забавни шаренийки.
Добре, че не казаха кое колко струва 🙂

Извън конферентната зала имаше наредени всевъзможни играчки – от “прости” line tracer-и с Arduino до огромни line tracer-и и ходещи “паяци” с ARM-не-помня-какъв.
РОБКО-то също беше пич.
По едно време на земята пуснаха една гадинка, която с ултразвук търси най-дългото разстояние и тръгва по него. Шашнахме я.
Хората от NI имаха як софтуер с изкуствен интелект за контрол на качеството. С професионална камера работеше добре. Ще ми се да го видя с нормална 🙂
Не можах да стоя целия ден, но това, което видях, ми стигна.
След като си тръгнах е имало състезания с роботите – следене на линия, “футбол” и ориентиране в лабиринт. Догодина може да се задържа повече.

***

С това C в университета взех да забравям Java-та (“забравям” като “не си играя толкова често”). Но пък от друга страна C/C++ level-а ми се вдигна. Вече нещата в stl_algo.h (например) не ми изглеждат толкова страшни, че даже и са разбираеми. Взех да се заглеждам и кое как изглежда в Assembler.
Оказа се, че домашните, които имаме, на други места ги получават за курсови 🙂
Още чакам нещо трудно.

***

Вчера пак се заиграх с Qt и успях да си преведа геодезическата програма за нула време. Ще му отделя повече внимание по-нататък.

***

Прави ми се нещо Open Source. Имам няколко интересни идеи и трябва да видя дали има нещо в университета. Ако няма, ще правя. След сесията, разбира се. Бррр…

 

8 декември

Накратко, че бързам ме мързи.
Мина първият ми осми декември и беше доста добре.
Първо объркахме посоката на автобуса и се озовахме в Почивка (това от “Гошо от Почивка”).
Хотелът беше доста добре. Стаята имаше хубава гледка.
Вечерта мина интересно. Малко повече от час нямахме ток и бяхме на свещи.
Като изключим повтарящата се чалга и еднообразните “хаус” неща, музиката беше търпима. По едно време пуснаха thunderstruck 🙂
Бях от малкото трезвени.
Заформя ми се една теория, че българските “диджеи” имат едни и същи песни. Без значение какво е събирането, винаги се върти едно и също – нещо подобно на house, чалга, много чалга, една нечалга песен (“Speed” (досада) или “It’s my life”), нещо от времето комунизъма и пак чалга до края. От време на време се спира за някой request. Както и да е, това е за друго писание…

Доволен съм. Догодина пак.

ТУ Варна, част втора

Накратко: записах се след чакане, обикаляне и глупости.

Първо трябваше да чакам да отвори касата да си платя таксата. От там ме върнаха да си купя документи, после ги попълвах половин час, след като се върнах в МФ за дипломата.
Лелката ме връща на няколко пъти. Беше доста passive-agressive, но не можа да ме ядоса. Все пак, разбирам я – цял ден да търпи заблудени първокурсници(като мен) и да обяснява едно и също на всеки…

Свърших там, видях си студентската книжка и лелката я прибра. След това се връщах за ISIC карта (връщанията включват подземния коридор между МФ и ЕФ). Това от 8 до към 11.

От там директно към общежитията, където работата ми беше за секунди. Човекът удари един печат, написа един номер и ми каза чао.

След това беше нормалното разтикване из града.

Съвет: ако ядете в Nemo (близо до ЖП гарата), не яжте салата “Немо”. Иначе ресторантът е готин, дадоха ми да си включа лаптопа да се зарежда без да мрънкат:)

Това е.
Сега остава да чакам.

ТУ Варна, част първа

Накратко: след като не успях с математиката в СУ, ме приеха АИУТ в ТУ Варна.
В сряда бях в университета да потвърдя, че искам да участвам във второто класиране заради КСТ. Вчера излезе и съм приет:)

Варна ще ми хареса – не е много голяма и като изключим нахалните карачи на колела, хората май не са зле. Забелязах и, че хората в града кихат много странно и смешно.
До там стигнахме с влака. От 04:15 до осем без нещо. Същия влак идва от София, тръгнал в 23:30. Не ги знам как издържат.

Работата ми в университета беше за два-три подписа и едно име. Доста задушно беше, но пък във фоайето имаше едни яки нещица.

Градът го обиколихме хубаво, после плажа, после пак малко от града, после пак плажа и т.н.
Общо взето това беше – обикаляне и оглеждане.

Интересното идва във влака на връщане.
Понеже според лелката на гишето в Горна “Няма смисъл да вземате първа класа, щото може да няма места”. Ми, добре.
Да го кажем така: ако във влака имаше 100 места, от бедежето бяха продали 350 билета и, разбира се, всички места бяха запазени. За 57-мо имаше 3-4 човека. Имаше един пиян, който каза, че бил някакъв диспечер главен.
След час и нещо стърчане в коридора и досадни работи в купето започна интересното.
Първо – когато влакът намалява или спира, се размирисва на нещо подобно на шлаката при заваряване или рязане. Нормално – триене, а и от дъжда бяха заръждясали релсите.
Изведнъж нещо изтрака и замириса на споменатото. След малко от по-задните купета (бяхме в последния вагон) взеха да излизат хора, евакуирали се били, щото влакът май се бил запалил. Е, не беше. След като им се посмяхме и ми свърши батерията на лаптопа, пак започна да се трака, този път по-силно, нещо изчатка и от влака хвръкна нещо подобно на шайба. Изхвърча назад и поне на 20м от встрани от влака. Другото го забравих.

И след като ме приеха точно това, което исках, остава да отида да се запиша и да си намеря квартира/общежитие.

Me out.

*<!−−hint−−>

Изпити

Последните месеци ми се събраха 3 кандидатстудентски изпита, 3 матури, завършване и куп други глупости.
Прекарах няколко седмици в решаване на задачи. В седмицата преди изпита денят ми минаваше в 8 часа задачи, 2 урок (+1-2 за път), 4 задачи, 8 спане и пак. Явно не е било достатъчно. Ако не друго, то поне вече схващам повечето математически вицове.

В понеделник беше втория изпит по математика в СУ. Надявах се на по-лесни неща. Изпитите от предните години ми се сториха лесни, докато ги решавах, но този го омазах доста. Каквото стане.

В залата, в която бях, май само аз не бях от това училище във Варна. Имаше някакви девойки с 6.00 от матурите, които се явяват на всички изпити на всеки университет навсякъде. Защо?

Всички ли като видят познат в зала преди изпит говорят колко са велики, на какви уроци са били и какви състезания са печелили?

След изпита тръгнах към гарата за влак към Пловдив. Успях да се загубя още с излизането и обикалях около половин час, понеже всичко ми е интересно. Пред университета ме заговори един човек. Оказа се, че е 85-годишен професор, който работи в чужбина (май каза Холандия), защото в България не го искали.

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

– “Добър ден, кога е следващият влак за Септември?”
– “След 5 минути, ‘ма няма да може да го хванете.”

‘Ми добре. Купих си билет от друга лелка на друга каса и то не какъв да е, а първа класа! Имах около час да чакам влака и благодарение на безплатния интернет не го усетих, успях да поспамя.
Странно нещо е влакопътуването. Лелката със запушен нос казва “Бързият влак задължителна резервация за Пловдив, ще отпътува от [еди-къде-си] в 15 часа и 30 минути с 15 минути закъснение”. Смешно ми беше. Другото интересно ми беше, че никой не знае откъде тръгва влака:) Добре, че хората са учтиви и отговарят нормално като ги питаш.

Във влака бях в купе с две бабки (нали това беше необидното?). Разбира се, като всеки самоуважаващ се пенсионер направиха забележка на кондуктора, че влакът е закъснял с цели 15 минути. Той спокойно им обясни, че е заради жегата се размекват релсите и т.н. Само начинът, по който пита бабката може да те ядоса – “По кое си личи, че е първа класа?” Явно не знаят какво е да чакаш автобус час и половина на сняг/дъжд/вятър 🙂
Както и да е, не бяха чак толкова зле – казаха ми къде да сляза.

Във вторник обикаляхме из Пловдив да търсим университета. След като хубаво обиколихме, го намерихме на 2 минути от входа на града.

След Пловдив отидохме до Острова в Пазарджик.
И там е пълно с интересни неща – колодрум, безплатен зоопарк, най-дългата пейка в света и скулптури. Най ми хареса желязната до входа – “Дино нещо си”. Човекът, който я е правил е използвал всякакви боклуци – пружини от амортисьори, статори, зъбчатки, гарнитури и други интересни неща. Животните в зоопарка бяха забавни. На всичките им беше горещо и не съм ги тормозил. Енотите се бяха разплули на земята, фазаните и гълъбите приритваха в калта, а патките шляпаха. Забавна картинка. Май са дресирани за снимки. Повдигат се и поглеждат към апарата, докато се затвори блендата и си продължават работата:)

Изпитът по информатика в ПУ не беше труден. Въпросите в теста бяха елементарни, въпреки сбъркания (според мен и няколко други) с архивирането. Тъпо е, че не може да се избират интересни езици за задачата по програмиране и трябваше да пиша на C++. Не ме кефи. Защо не можеше на Java? Или Brainfuck?
Не ме кефи така. Написах около 100-150 реда и не можах да я свърша, излязох предпоследен 10 минути преди края. На Java щеше да е по-лесно.
Имаше разни хора, дето излязоха 5 минути след като раздадоха теста. За задачата останахме около 20 от 80:)

След изпита тръгнахме насам. След Пловдив пътят е страшен – гладък асфалт, чисто, равно. Минахме през Шипка и толкова завои не бях правил никога! Имаше такива, дето ме изпреварват в най-тясното по средата на завоите въпреки, че карах над ограничението.

Подадох документи в СУ, ПУ и ТУ-Варна. Сега ми остава да чакам да видя къде ще се престрашат да ме вземат.

От цялата работа имам около 400 снимки, 600км и 20л пот.

Пак стана дълго.