Моят съученик Тод и аз прекарахме много време в работа по проект, който не се осъществи, но в процеса научихме много за кодирането, електрониката, Arduino и дори малко за себе си. Е, по-малко последните, но определено първите три.

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

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

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

Програмирането в Arduino е интересно с това, че има две места за писане на вашия код и всяко прави специфично нещо. Настройката се изпълнява първо и само веднъж. Това е мястото, където задавате всякакви инициализации, свързвате се към WiFi, стартирате сървър или нещо друго, което не искате да повтаряте. След това всичко в Loop ще работи, докато не изключите устройството или не му кажете да спре. Може да е малко трудно да се увиете, когато сте свикнали просто да пишете цикли навсякъде, където пожелаете.

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

Тестването на Arduinos също е малко болезнено, тъй като вашият код не се компилира и изпълнява само на вашия компютър. Можете да го тествате за сериозни грешки, преди да го изпратите на устройството, но за да сте сигурни, че наистина работи, трябва да качите кода си на вашия Arduino. Нашето най-дълго компилиране и качване отне само минута и половина, но когато тествате отново и отново, тази минута и половина наистина става много дълга.

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

Също така най-накрая успяхме да хакнем везната и най-накрая изпратихме информация. Тод има опит в електроинженерството, така че той беше от съществено значение за стартирането и работата на това.

Има няколко неща, които можехме да направим по различен начин, за да улесним този проект, но като цяло съм много доволен от работата, която свършихме. Освен това ми дава голяма увереност, че програмирането на IoT устройства не е напълно недостъпно за уеб разработчик.

Следващият проект на Arduino или Pi, върху който започвам да работя, със сигурност ще бъде много по-прост, но имам пълна вяра в способността си да се справя с него.