Какво ядат Arduino Uno

Всички Arduino Uno са едни и същи, така че текстът не етолкова много за това, което имам, колко за това, което излезе от него и как да имитираме превключвателя на радио превключвател, използвайки два резистора, кондензатор и клечка за зъби. Т.е. хвалете и, ако имате късмет, споделяйте идеи.
Заедно с Uno поръчаха: Ethernet-щит с microSD слот (Wiznet W5100), комплект от два блока с по 4 релета, два комплекта прости OOK / ASK приемници и предаватели. Ами и provodochki, къде без тях?
Накратко. Играчката е невероятна и вече разбира моите команди чрез Интернет, приложението в смартфона и гласовите команди в него.
PS. Вече почти месец пиша текста (можеш да си представиш колко има глупости), надявам се, че ще четеш по-малко, но за всеки случай, запаси пуканки.
APDATE 10/30/2013
За интересуващите се: напълно промени процедурата за контролиране на превключвателите Livolo. Сега всичко е проектирано като отделна библиотека Livolo с възможност за симулиране на няколко дистанционни управления (пробна и грешка).
изтегляне:
Livolo превключва контролната библиотека с Arduino
Първо, веднага за пазаруване и впечатления за продавача.
пазаруване
Опаковка - кутия от плътен картон,увит в традиционен жълт скоч. Нишка и изкуствена кожа не, така че нищо не се залепва и не мирише. Вътре в кутията всичко е опаковано доста плътно и без допълнителна защита / амортизация. Лошо или не - не знам, стигнах до цялото.
Пощенски картички за фенове на разопаковането



Arduino uno
Характерно е надписът Arduino на дъската, въпреки че продавачът има снимка на Funduino. От друга страна, аз все още не се различавам от оригинала. И това не е необходимо - те са функционално идентични.



Ethernet щит Wiznet W5100$ 9.87
Удобно, той се качва на борда без никакви проблемиUno места. Що се отнася до SD слота, от една страна това нещо е полезно, а от друга - сега е абстрактно, защото все още не съм достигнал работното си приложение.



комплект от два блока от 4 релета$ 13.88 за комплект
Както виждате, релето вече е с контролна каскадаследователно Arduno се контролира директно, без допълнителни компоненти. Достатъчно общо устройство и контролер за цифров изход. Всяко реле може да се използва в режими NO / NC (нормално отворени / затворени). Всяко реле има светодиод за включване.



Храни се от изхода на Arduino, въпреки съвпадениетонапрежение (5V) ми изглежда не най-добрата идея, тъй като ток от около 80 mA се прилага към едно реле. Така че, ако включите всичките четири, ще се получи под 400 mA, а това е твърде много за вградения стабилизатор. Обобщение - можете да контролирате с Arduino, но за захранване на намотките на релето се нуждаете от отделен източник (добре, в една или друга форма).
Защо ми трябват 8 релета? Не бях сигурен, че ще се справя с контрола върху радиоканала, така че очаквах да свържа релето с бутоните на съществуващите дистанционни управления. Осем канала за първи път трябваше да са достатъчни. В допълнение, за този проект вече е готово решение. Осем контрол,
комплект от два чифта приемник-предавател$ 5.99 за комплект
Много спартански неща. Предавателят, ако разбирам правилно, се състои практически от резонатор и RF транзистор. В приемника вместо транзисторния усилвател. Те се доставят без антени, така че трябваше да стана креативен и да направя необходимите кабели. За обхват от 433 MHz дължината на антената е около 17,3 см. За да спестите място, можете да навиете тръбата, но това също ще влоши работата.
предавател:


Субективно предавателите не са лоши. Поне с 5V захранването, те доста надеждно превключват всичко, което искам. И те го правят ясно по-добре от обикновените дистанционни контакти с 12V захранване.
Приемниците не се различават. Сигналът на “собствения” предавател се получава перфектно, но, да речем, метеорологичната станция се вижда ясно само ако безжичният сензор е поставен до антената.
приемник:


оформление майка-татко, Две "ленти" от по 40 броя, всяка с дължина 20 см. $ 8.68 на комплект.


ХАРАКТЕРИСТИКИ НА КИТАЙСКАТА ТЪРГОВИЯ
Бъдете внимателни, продавачите на Aliexpress имат много лош навик да пишат нещо като 2pcs в името на продукта, което изглежда да намеква, че това са две имена за определена цена. Но това е малко погрешно и е направено за стимулиране на импулсни покупки.
Например в описанието на дъската Arduino Uno е написано:че "UNO R3 MEGA328P ATMEGA16U2 + USB кабел (1UNO R3 + 1 кабели) Най-добри цени & Свободен кораб !!!", цената е $ 9,98 и се добавя, че е много (2 броя / партида).
На пръв поглед изглежда, че това е ДВА (печалба !!!) Arduino Uno дъски. Но всъщност за 2 парчета / лот точно това, което е написано в заглавието и, точно под описанието (за кредита на китайците - в огромни букви) е скрито. Това е:
- Arduino Uno - 1 брой
- USB кабел - 1 брой
Общо: ДВЕ парчета
Т.е. в този случай, една партида е на борда + кабел. Извинете продавача, освен че цената е средна за пазара.
Какво друго не харесвам в тази поръчка. От набор от две релета дойде само една единица. Продавачът реагира бавно, дълго време, но накрая се съгласи да изпрати втория блок.
В противен случай всичко е поносимо. Доставката отне около месец, а опаковката е доста твърда картонена кутия, обвита с лента. Вътре всичко е в антистатични торби, бордът на Ethernet-щит е закован на полипропиленови (?) Подложки, така че контактите да не се огъват.
Достигнаха всичко по най-добрия начин. Но като се има предвид някакво потискане на продавача и дори тези релета, не мисля, че ще си купя нещо друго от него.
КАКВО И ЗАЩО
Според моите наблюдения 90% от тези, които купуват Arduino,мигащи светлини или въртящи се двигатели. Аз принадлежа към първата категория, и тъй като има четири радиостанции и колкото се може повече радиоуправляеми превключватели на светлината у дома, ясно е какво щях да управлявам.
Това обяснява комплекта:
- Arduino - централен контролер
- Приемник - за тренировъчни отбори
- Предавател - команди за излъчване на радиоприемници и комутатори
- Ethernet Shield - контрол на LAN / WAN
- Relay - само за всеки случай, като изпълнители, ако не можете да четете командите на конзолите. След това конзолите могат просто да бъдат запоени към релето и да затворят проблема с инструкциите на екипите.
Моят TK в системата накратко изглежда така:
1) контрол на неназовани радиостанции и светлинни ключове Livolo чрез браузър на всеки компютър / смартфон / таблет в домашната ви мрежа
2) Дистанционно управление - // - чрез интернет
3) Управление (PP. 1 и 2) чрез APP
4) Гласов контрол (стр. 1 и 2) с помощта на смартфон
5) Автоматичен рестарт на модема, ако няма връзка с интернет и уведомяване за това по пощата / Twitter
6) Дистанционно активиране и деактивиране на уеб камера
7) Перспективни контролни функции: автоматично управление на светлината с датчици за движение и осветление
8) Перспективни функции на контролера: събиране на данни от безжичен сензор на метеорологична станция, функции за сигурност и пожароизвестяване
Какво се случи
Сега накратко обобщено.
Ето го готовата кутия с Arduino в интериора:

Така че - отделно:


Ако ви харесва кутията - повече изгледи


Дистанционно управление на вашия смартфон:

Текуща функционалност:
1) Управление на четири радиостанции и четири превключвателя Livolo
а) Чрез браузъра
б) Чрез приложението в смартфона
в) Чрез гласов контрол в смартфона
2) Автоматично / ръчно рестартиране на модема / рутера, ако няма интернет
3) Дистанционна уеб камера за включване / изключване на дома
4) Автоматично включване / изключване на светлината в гардероба чрез сензора за отваряне на безжичната врата (поради някаква причина е нестабилна, но не разбрах защо)
5) Предупреждение за изтичане (безжичен сензор за изтичане)
6) Възможност за свързване на допълнителни безжични датчици за дим, отваряне на вратите, движение и изтичане от обикновени китайски аларми
8) Известие по електронна поща, че някой звъни на звънеца на входната врата
7) Уведомяване за важни събития по електронна поща
скици:
1) Тест на скицата за управление на превключватели Livolo
2) Скица с почти пълна функционалност (без обаждане и малки оптимизации), като пример (известията чрез Twitter са коментирани - спестявам памет и скорост, но можете да опитате да го включите)
РАДИО КОНТРОЛ
Първо, разбира се, аз премигнах на светодиода на добре познатия щифт # 13, вграден в Arduino, след което включих приемника към дъската и използвах отличната библиотека. RC-Switchкойто е в състояние да чете и предава команди на дистанционно управление на радиостанции. Всичко се оказа първо и без съмнение.
За да тествате свързан към предавателя Arduino иТой примигна малко вкъщи, използвайки радиоприемници. Следващият номер се опитах да прочета кодовете на осветителната конзола, но идеята се провали: RC-Switch не можеше да приеме командите на Livolo.
Радио-гнезда тук:


вътрешностите


КОНТРОЛ НА РАДИОСТОЯТЕЛ
Става дума за радио превключватели радио-контролирани ключове, придобити преди около година и радио-контролирани ключове радио-контролирани ключове.
Не се надявах особено на собствената си интелигентност при решаването на този проблем, така че в началото се опитах да направя най-лесния начин.
Една от идеите беше сходна с колко времеДълго време те получавали сигнали от дистанционното управление. Т.е. Запишете сигнала като звук и след това го възпроизведете. Но се оказа, че Arduino няма достатъчно производителност, за да възпроизведе звука с необходимото качество, въпреки че има платформа за Wav плейър и възпроизвеждането наистина работи (за тази цел SD слотът на Ethernet-щита е много полезен).
Затова преминах към следващата точка от програмата. А именно - реших да се опитам да повторя формата на вълната, без да навлизам в декодиране. Въз основа на факта, че конзолите са PIC16F690, т.е. кристали със същата производителност като в моя Arduino и обичайния OOK / ASK предавател (PT4450). От това стигнах до заключението, че ако правилно се изчисли дължината на импулсите в една команда, шансовете за повторение са доста високи: модулацията е същата, скоростта на микроконтролера, въпреки високото ниво на програмиране, е същата.
Затова свържете приемника делител на входа на микрофона на лаптопа, стартира дързост и няколко пъти с натискане на интервал от 2-3 секундисъщия бутон на дистанционното управление. Трябваше да се уверим, че командите са идентични или да разберем, че командите се променят и задачата не е решена без декодиране.
Началото на прехвърлянето се определя доста лесно дори при минимален мащаб. Ако го увеличите малко, вече можете да оцените дължината на командния пакет: около секунда. Освен това, за разлика от гнездата, няма ясно дефинирани паузи за синхронизация, които да отделят повтарящи се команди.

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

Може да се види, че в този случай физическото нивопредставени от пет различни импулса (дълго надолу, кратко нагоре, кратко надолу, средно нагоре, средно надолу). Повтарям, не знам нищо за логиката, моята задача е да имитирам сигнал в радиоканал.
Следователно, в следващата стъпка,увеличаваше всеки интерес от интерес и буквално определяше продължителността му по линията на Audacity. Като спомагателен инструмент можете да използвате ProtocolAnalyzerно там сигналът изглежда малко по-различен и дължината на най-краткия импулс с него не можеше да се изчисли. Но на относително дълги импулси (от 300 микросекунди) има шанс да се видят приблизителни стойности, които помагат при декодирането в Audacity.

Тук червените и сините подчертават възможните граници.импулси, а истината също може да бъде някъде между, защото цифровите фронтове на сигнала са вертикални, а тук - наклонени поради особеностите на аналоговото предаване.
Например, погледнете дългата надолу,ние се ръководим от червените линии. Оказва се: 2.11680 - 2.11624 = 0.56 ms. Умножете с 1000 и вземете 560 микросекунди. Заобиколил съм го до 550. Между другото, закръгляването е и на око, в разумни граници. Т.е. 10 микросекунди могат да бъдат закръглени, но 50 вече е изпълнен с факта, че получаващата страна не разбира.
След изчисляване на дължината на импулсите, аз записахтяхната последователност в "сурова" форма. Тоест - ако е кратко, означава, че пишем - „нагоре е кратко“, а не „1“ или „Не знам какво, по дяволите, е това, а не нула, а не едно“. В този случай, между другото, една клечка за зъби помага, което е удобно да сочи към импулси, защото в противен случай аз просто събирам очите си, когато се опитвам да преброя върхове и спадове.
Когато има импулсни дължини и технитепоследователност, написал прост код за Arduino, включен в предавателя и предавал сигнал. В същото време аз го записах чрез описаната по-горе конструкция в Audacity, за да сравня два пакета - оригиналния Livolo и този, който току-що генерира. Електрическата крушка не реагира, но в Audacity имаше забележими несъответствия между продължителността на импулсите, които аз отново коригирах с око.
По принцип подобна корекция може да се случи и предипълно удовлетворение. Но имах късмет: буквално на втората итерация се озовах в пълна тъмнина, т.е. светлината се изключи при сигнала на моя предавател, вече свързан с Arduino.
Остава само да се записват сигналите на всички необходими бутони в Audacity, да се пренапишат импулсните им последователности и като цяло всичко.
Ето тестов код за livolo с командите на единадесетте бутона на дистанционното ми (0 -9 и "Изключване на всички"). Тъй като превключвателите Livolo са обучени, мисля, че можете лесно да ги обучите на тези екипи - просто трябва да превключите на режим за обучение и да натиснете “желания” бутон.
УПРАВЛЕНИЕ ЧРЕЗ МРЕЖА И ИНТЕРНЕТ
Сега всичко е готово за следващата стъпка - т.е. управление.
Взех скицата като основа, в която са комбинирани RC-Switch и класически уеб сървър за Arduino, всички от един и същ автор RC-Switch,
Тя може да се адаптира, както ви харесва, така че азлеко разширена функционалност. А именно - добавен контрол на връзката към интернет, рестартиране на модема, ако няма интернет и известяване по e-mail / Twitter за този удивителен факт. Строго погледнато, това са експериментални характеристики,особено Twitter, но пощата има двоен смисъл: факт е, че mail.ru включва заглавия на IP изпращача. Това е много важно, защото вкъщи имам уеб камера, която бих искала да гледам например на почивка. Но понякога у дома те изключват електричеството или модемът просто виси, а когато се рестартира, адресът му се променя, така че “филмът” свършва. Следователно известието по пощата автоматично ми дава нов външен IP.
Други промени - почти пълно освобождаване.от секцията HTML, защото ако напишете в него всички команди за лесен контрол през браузъра, Arduino в някакъв момент замръзва дори и в началото. Реших, че това се дължи на ограничените ресурси на Arduino и не се заех с този въпрос. Затова се оказа, че е възможно да се контролира чрез браузъра, но командите трябва да бъдат въведени в адресната лента. Например: 192.168.1.1/?1-.
Ако повторите - обърнете внимание, че браузърите са склонни да кешират страници. В резултат на това управлението в даден момент спира да работи и само почистването на кеша помага.
Първите две точки на работа считаме за завършени.
УПРАВЛЕНИЕ ЧРЕЗ AMS НА SMARTPHONE
Имам смартфон с Android, за който има прекрасно приложение Tasker, Това исках да използвам за автоматизация.
Красотата на Tasker също е, че скриптове исъздадените в него диалози могат да бъдат експортирани в самостоятелно приложение, инсталирано на устройства с Android по същия начин, както всяко друго приложение. С други думи, плюс е, че няма нужда да купувате Tasker за всеки телефон и таблет: само една пълнофункционална версия е достатъчна, за да разположи контрол върху всички джаджи.
Процедурата е следната:
1) Методично създаване на нови задачи в категорията Net - GET заявка. В параметрите на заявката е необходимо само едно нещо: попълнете адресния ред с пълна команда. В моя случай например 192.168.1.1/?1-.

2) Отворете сценичния редактор на сцени и там ще добавим необходимите бутони, без да забравяме да присвоим една от предварително създадените задачи на кратко натискане.



3) Създайте сервизни задачи: Покажете сцената и унищожи сцената, те ще трябва да отворят и затворят виртуалното дистанционно управление. По принцип, можете да го направите без Destroy, само трябва да се уверите в Show Scene, че опцията за бутона за изход е активирана.



Тук, като цяло, и всичко. Така се реализира трети параграф от ТЗ: контрол чрез приложението на смартфона.
ГЛАСЕН КОНТРОЛ ЧРЕЗ SMARTPHONE
За четвъртата точка използвах друго голямо приложение - Изпей! Гласови команди Бетатъй като се интегрира с Tasker и може да изпълнява задачите си чрез гласова команда.
Но настройката изисква само ангелско търпение. Процедурата е проста: въпреки изискването Utter! Задайте гласовото търсене на руски език Android. След това отворете интерфейса Utter! (важно - не разпознаване на команда, а интерфейс на програмата) - Персонализиране - Създаване на команди - Run Tasker Task - избираме задачата и се опитваме да кажем една и съща команда два пъти подред. Ако се получи, ние не се отпускаме и казваме още две думи: за успешно изпълнение на командите и грешки.



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


Да, не се уплашвай, когато говориш! когато повтаряте команда на руски, тя не я произнася. Това отново е следствие от факта, че приложението не знае как да използва руския двигател за глас.
Като цяло, задачата е мрачна, но разрешима.
МАЛКИ трикове
За точки 5 и 6 на TZ използвах релейна единица, а не безжични гнезда, тъй като модемът, камерата и Arduino могат да бъдат разположени един до друг.
И за да не се режат кабелите на стандартните мрежови адаптери, свързах захранването на модема и камерата чрез съединители, включени релета. Общо имаше два чифта конектори, сконектора на камерата (5V) Вземам захранването на релейния блок, предавателя и приемника, както и от конектора за модема (9V) за Arduino. Това ви позволява да минимизирате броя на мрежовите адаптери, в противен случай една ниша за всяко такова оборудване рискува да стане нещо с блекджек и, да, разбирате.
В резултат на това кутията с Arduino изглежда такапо някакъв начин. Предавателят просто разклати лентата, така че да не я затвори случайно. Струваше ми се по-разумно, отколкото да изливам горещата стопилка. В крайната версия, приемникът лежи до него, просто увит с лента.

Благодаря на китайските аларми
Тайната: този фрагмент от текста се отнася до третото, така да се каже, генерирането на функционалността на моята кутия. Първият е контролът на радиостанциите. Втората е неочакваната способност да се контролират радио превключвателите.
И това поколение принадлежи на невероятнотооткритие. Оказва се, че евтини китайски безжични аларми са снабдени със сензори, които по отношение на вече познатата ни RC-Switch библиотека не се различават от дистанционното управление с един бутон. Т.е. Вътре в сензора е кодиращ чип, който осигурява уникална поредица от нули и единици и предавател, който излива цялото това щастие във въздуха.
Аз не споря, вероятно има и други възможности, но имам подозрение, че тази технология е основната.
По този повод купих няколко различни сензора (отвори на врати и течове), за да сравня вътрешностите им и да се опитам да се свържа с Arduino. След аутопсията се оказа, че вътрешностите са напълно идентични, а след експериментиране с контролера - че RC-Switch перфектно получава сигналите си.
От лявата страна е датчик за течове, от дясната страна е сензор за отваряне на вратата.

Те са толкова сходни, че може да бъде направено от другото:


Друго не по-малко изненадващо откритие е, че безжичните врати работят на същия принцип. Това означава, че Arduino ще може да предупреди за товаче някой звъни на вратата. Това е полезно, между другото, в много случаи: първо, само статистика; второ, удобно е, ако у дома има силна музика или просто батериите във вътрешното звено на камбаната просто седнаха.
Честно казано, дори не отворих обаждането. Просто прочетете кода в RC-Switch и добавихте контрол върху функционалността на кутията.
Ако използвате тези сензори,запомни някои важни характеристики. Първо, сигналът се предава веднъж. На второ място, няма обратна връзка, така че сензорът не знае дали е получен сигнал. Затова „разработчиците” на сензорите бяха осигурени по следния начин: сензорът издава изключително дълъг „трил” - около 2 секунди. По принцип това гарантира приемане на сигнал, но има своите недостатъци:
1) В изключително редки (помнете за закона на подлостта) ситуации, когато няколко сензора се задействат едновременно, някой ще бъде загубен;
2) Дългосрочното предаване може да повлияе на други безжични системи;
3) Една и съща дълга предаване налага ограничения върху скоростта на обработване на Arduino събития. Например, за да се избегне двойно задействане от един и същ сензор, е необходимо да се спре приемането на сигнали от външни сензори за няколко секунди.
В резултат се използват двата налични сензоракакто следва: сензорът за изтичане е под мивката в кухнята, сензорът за отваряне на вратата контролира отварянето на плъзгащите врати на гардероба и по неговия сигнал Arduino включва / изключва светлината вътре.
Сега планирам да поръчам повече сензори и да се разширяпо този начин тяхната мрежа. В същото време, разбира се, разбирам, че това не е истинска охранителна и пожароизвестителна система, а по-скоро информационен комплекс. Между другото, за да изглежда по-скоро като OPS, за критичните сензори трябва да изберете свой собствен контролер, който ще има двупосочна комуникация със събития за обработка на основната единица.
Ето защо считам, че позиции TZ 7 и 8 в по-голямата си част са затворени.
И КАКВО НЕ Е
Засега за радиоуправляемите ключовепесимистични. От една страна, беше възможно да се разбере, че в сигнала той е отговорен за температурата и влажността. От друга страна, намерените скици не разбраха станцията, но не разбрах как да ги променям. Дори не е за писане на скица.
От трета страна, все още не разбирам напълно защо бих се нуждаел от него, освен с „да го направя“.
КАК ДА СЕ СВЪРЗВА СКРИВА
Аз, както не знам кой, не е записал разходите, така че изчислението е приблизително. Сензори, ключове и контакти не са включени в него, цената е само на централния блок.
1) Arduino Uno: $ 9.98
2) Ethernet щит: $ 9.87
3) Блок от 4 релета: $ 6.94
4) двойка приемник / предавател: $ 3
5) Един набор от тестови проводници: $ 4.34
7) Случаят, изглежда, G1037B (да, в чип и Dipe кон цена): $ 10
8) NP117A щепсели, 7 броя: $ 9.3
9) Крикове за тапи, 4 броя: 5,3
10) Двупроводна, 3 m (добре, тя все още остава, разбира се): $ 2.2
ОБЩО, приблизително: $ 61
За справка: гнездата струват около $ 50 на три парчета, радио превключватели - $ 23 на единица, сензор за отваряне - $ 5, сензор за течове - $ 7.
Благодаря ви за вниманието)