• Vytváříme aplikaci pro Android pro ovládání domácího robota přes Bluetooth. Výukové programy Arduino: Ovládání zařízení chytrými telefony pro figuríny

    Dobré odpoledne

    Nedávno mě zaujala myšlenka vytvořit " chytrý domov". Od od potřebné komponenty Zatím mám k dispozici pouze arduino a android telefon, bylo rozhodnuto začít vytvořením ovládacího panelu a propojením se zbytkem systému.

    Moje vize systému vypadá takto:

    Myslím, že se vyplatí zkombinovat domácí a webové servery zakoupením statické IP, ale poprvé to bude stačit. Začněme jednoduše – naučte se na dálku ovládat LED a LCD displej.

    webový server
    Na webovém serveru vytvoříme databázi se dvěma tabulkami - led a texty. Tabulka LED obsahuje 2 pole – id a status. Obsahuje jeden záznam s aktuálním stavem LED. Tabulka textů obsahuje 2 pole - id a text. Obsahuje také jeden záznam s textem, který je tento moment zobrazené na LCD.

    Nyní si napíšeme pár skriptů, které budeme volat z telefonu a přenášet informace do databáze. Píšeme v php.

    Skript led.php (kontrola LED):

    Skript msg.php (ovládání LCD):

    Myslím, že z komentářů je jasné, jak tyto skripty fungují. To je vše, co je na webovém serveru. Nyní přejdeme k domovskému serveru (nebo jednodušeji k počítači, ke kterému je arduino připojeno).

    domácí server
    Neustále na něm bude pracovat program (můžete mu říkat i démon), posílat požadavky do databáze a když se změní informace tam umístěné, pošle z arduina příslušný příkaz na COM port. Napišme program v jazyce Processing:

    Importovat zpracování.seriál.*; //knihovna pro práci s COM portem import de.bezier.data.sql.*; // knihovna pro práci s databází MySQL Sériový port; dbconnection MySQL; int prevLEDState = 0; //předchozí stav LED String prevS = ""; //předchozí text odeslaný na LCD void setup() ( port = new Serial(this, "COM4", 9600); //inicializace COM portu 4 (Arduin není připojen), přenosová rychlost je 9600 port. bufferUntil("\ n"); String user = "username"; String pass = "heslo"; String database = "dbname"; dbconnection = new MySQL(this, "yourdomain.ru", databáze, uživatel, pass); / /připojit k database dbconnection.connect(); ) void draw() ( //monitorování informací o LED v databázi dbconnection.query("SELECT * FROM LED WHERE id = "1""); //proveďte dotaz do tabulky LED while (dbconnection.next()) //procházení výběru z výsledku dotazu ( int n = dbconnection.getInt("status"); //získání hodnoty ze stavového pole if (n != prevLEDState) //pokud je se změnil oproti předchozímu "cyklu" programu, pak odešleme příkaz na COM port ( prevLEDState = n; port.write("1"); //první přenesený znak bude znamenat kód právě probíhající operace provedeno: 1 - ovládání LED, 2 - ovládání LCD port.write(n); ) ) //sledování informací o LCD v databázi dbconnection.query("SELECT * FROM texts WHERE id = "1""); //provede dotaz na textovou tabulku, zatímco (dbconnection.next())//projde výběr z výsledku dotazu (String s = dbconnection.getString("text"); //získáte hodnotu z textového pole if ( s != prevS) ( prevS = s;port.write("2"); port.write(s); ) ) delay(50); // udělejte zpoždění 50 ms, abyste neodesílali požadavky nepřetržitě)
    Ani tento kód nebudu vysvětlovat, vše je jasné.
    1 další důležitý bod. Aby mohl program z našeho počítače přistupovat k databázi umístěné na vzdáleném serveru, musí to být povoleno. Zadejte naši IP do seznamu povolených:

    Telefonní aplikace
    Mám telefon s Androidem, píšeme si o něj. Nebudu se příliš rozepisovat (je to velmi dobré jak o instalaci programovacího prostředí, tak o psaní první aplikace v tomto článku - odkaz).

    Vzhled aplikace působí spíše skromně, ale in tento případ to není důležité:

    Uvedu pouze fragmenty kódu programu pro Android. Funkce, která volá skript, který ovládá LED:
    public void changeLED() ( try ( URL url1 = new URL("http://your_domain.ru/led.php"); HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection(); try ( InputStream in = new BufferedInputStream(urlConnection) .getInputStream()); ) nakonec ( urlConnection.disconnect(); ) ) catch (Výjimka e) ( ) )
    Funkce, která odesílá text k zobrazení na LCD:
    public void submitMsg() ( final EditText tt = (EditText) findViewById(R.id.editText1); try ( URL url1 = new URL("http://your_domain.ru/msg.php?msg="+tt.getText ()); HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection(); zkuste ( InputStream in = new BufferedInputStream(urlConnection.getInputStream()); ) nakonec ( urlConnection.disconnect(); ) ) catch (Výjimka) e) ( )
    No, hlavní funkce, ve které jsou obsluhy událostí vázány na tlačítka:
    public void onCreate(Bundle SavedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.main); final Button btn1 = (Button) findViewById(R.id.button1); btn1.setOnClickListener(new Button.On)ClickListener ( public void onClick(View v) // kliknutí na tlačítko ( changeLED(); ) )); final Button btn2 = (Button) findViewById(R.id.button2); btn2.setOnClickListener(new Button.OnClickListener() ( public void onClick(View v) // kliknutí na tlačítko ( submitMsg(); ) )); )
    A ještě jeden důležitý bod je přidat do aplikace oprávnění pro přístup k internetu. Chcete-li to provést, přidejte řádek do souboru AndroidManifest.xml (nachází se v adresáři naší aplikace pro Android):

    Export naší aplikace do APK soubor a nainstalovat do telefonu. Dálkové ovládání chytrý domov připraven!

    Arduino
    A nakonec, v neposlední řadě – připojení arduina a jeho firmwaru. Schéma připojení LCD obrazovky a LED k Arduino Uno je následující:

    Vezmeme odpor 220 ohmů. Více o připojení LCD obrazovky si můžete přečíst zde - odkaz

    A takhle to všechno vypadá ve skutečnosti:

    Je to opravdu krásné?

    Úkolem arduina je poslouchat, na čem běží démonický program domácí server posílá na COM port, ke kterému je arduino připojeno (ačkoli skutečné připojení je přes USB kabel, počítač jej rozpozná jako sériový port). Po přijetí jakýchkoliv dat z počítače ovladač rozpozná příkazový kód podle prvního znaku přenášené informace (tedy toho, co má být nyní ovládáno - LCD displej nebo LED). Dále, v závislosti na kódu a informacích následujících za ním, se buď rozsvítí / zhasne LED, nebo se zobrazí přenášená zpráva. Takže tady je skutečný kód:

    #zahrnout //vestavěná knihovna pro práci s LCD displejem boolean isExecuting = false; //proměnná odrážející, že nějaký příkaz se již provádí //Hned vysvětlím, proč je to potřeba. Pro každý „tik“ smyčky načte Arduino kód jednoho znaku z COM portu. //Proto bude řetězec přenášen v několika cyklech. V tomto případě se před každým ze dvou možných příkazů (změna stavu LED a odeslání textu na displej) odešle //kód tohoto příkazu (1 a 2). Tato proměnná se //používá k oddělení kódů příkazů od dalších informací (stav LED nebo text na displeji). LiquidCrystal lcd(4,5,10,11,12,13); //zobrazení inicializace int ledPin = 8; //číslo Arduino pinu, ke kterému je LED připojena int prevLEDStatus = 0; //předchozí stav LED (zapnuto/vypnuto) int newLEDStatus = 0; // nový stav LED int cmd = 0; //kód provedeného příkazu void setup() ( Serial.begin(9600); //inicializace COM portu (9600 - přenosová rychlost) pinMode(ledPin,OUTPUT); //inicializace 8. pinu arduina as lcd výstup. begin(20,4); //inicializace LCD displeje (4 řádky po 20 znacích) ) void loop() ( if (Serial.available() > 0) //pokud na COM port ( if (isExecuting == false) //pokud v tuto chvíli není prováděn žádný příkaz ( cmd = Serial.read() - "0"; //přečtěte si kód prováděného příkazu isExecuting = true; // nyní proměnná indikuje, že provádění příkazu začalo ) if (cmd == 1) //ovládání LED ( newLEDStatus = (int) Serial.read(); //přečtení nového stavu LED if (newLEDStatus != prevLEDStatus) //pokud se změnil oproti aktuálnímu stavu, pak změň aktuální stav ( digitalWrite(ledPin,newLEDStatus); prevLEDStatus = newLEDStatus; ) ) else //zobrazí ovládací prvek ( if (isExecuting == false) //pokud žádný příkaz právě probíhá ( lcd.clear(); //vymazat obrazovku ) else ( lcd.print((char)Serial.read()); //vytisknout znak na displej ) ) ) else //pokud na COM port nepřišla žádná informace ( delay(50); // udělá zpoždění 50 ms if (Serial.available()<= 0) //если информации по-прежнему нет isExecuting = false; //считаем, что никакая команда не выполняется } }
    Myslím, že to nevyžaduje vysvětlení, protože jsem vše popsal velmi podrobně v komentářích. Jediná věc, která stojí za zmínku, jsou určitá omezení týkající se řetězců předávaných k zobrazení. Nesmí obsahovat mezery (toto omezení je způsobeno nedokonalostí mého algoritmu) a nesmí obsahovat azbuku (protože ji nepodporují všechny displeje, a pokud je podporována, vyžaduje přenos kódů znaků ve vlastním kódování, převádění postav, do kterých nejsou žádné touhy).

    Závěr
    Dobře, teď je po všem. Ukázalo se, že je to docela jednoduché.
    Video jak to funguje:

    Tento článek obsahuje podrobného průvodce, který vám pomůže vytvořit si vlastní aplikaci pro chytré telefony pro Android, abyste mohli něco ovládat přes Bluetooth. Pro demonstraci podrobně rozebereme příklad blikání LED na Arduinu pomocí příkazů z telefonu nebo tabletu. V důsledku toho, že budete postupovat podle našich pokynů, se dozvíte, jak to udělat:

    Pro ovládání domácího robota stačí přidat tlačítka a zpracovat jejich příkazy na straně Arduina.

    Co je k tomu potřeba

    1. Jakákoli deska kompatibilní s Arduino
    2. bluetooth modul
    3. Zařízení, na kterém je nainstalován OS Android

    Jako modul Bluetooth je nejlepší použít HC-05. Je snadné jej koupit v čínském internetovém obchodě nebo na eBay. Modul je napájen 3,3 V, ale jeho I/O linky zvládnou i 5V logiku, což umožňuje jeho UART připojit k Arduinu.

    Bluetooth modul HC-05

    Připojení Bluetooth modulu k Arduinu

    Nyní tedy musíme propojit naše Arduino s Bluetooth. Pokud Arduino nemá výstup 3,3V, ale pouze 5V, pak budete muset nainstalovat regulátor pro snížení výkonu. Přiřazení pinů HC-05 lze snadno najít na internetu. Pro použití doporučujeme vyrobit desku s výstupními linkami pro napájení, Rx a Tx. Připojení k Arduinu musí být provedeno v následujícím pořadí:

    • Arduino 3,3V výstup nebo (5V přes stabilizátor!) - na pin 12 modulu Bluetooth
    • Arduino GND výstup - na pin 13 modulu Bluetooth
    • Arduino TX pin - na pin 2 modulu RX Bluetooth
    • Arduino RX pin - na 1 pin modulu TX Bluetooth

    Po připojení je třeba zkontrolovat funkčnost modulu Bluetooth. Připojte LED k Arduino pin 12 a nahrajte na desku následující skicu:

    Char incomingByte; // příchozí data int LED = 12; // LED připojená ke kolíku 12 void setup() ( Serial.begin(9600); // inicializace portu pinMode(LED, OUTPUT); //Nastavit kolík 12 jako výstup Serial. println("Stisknutím 1 zapnete LED nebo 0 LED OFF..."); ) void loop() ( if (Serial.available() > 0) ( //pokud data dorazila incomingByte = Serial.read(); // čtení bajtu if(incomingByte == "0" ) ( digitalWrite(LED, LOW); // pokud 1, pak vypněte LED Serial. println("LED OFF. Stisknutím 1 LED ON!"); // a vytiskněte zpět zprávu ) if(incomingByte == " 1") ( digitalWrite(LED, HIGH); // pokud je 0, pak zapněte LED Serial. println("LED ON. Stisknutím 0 LED zhasne!"); ) ) )

    Přenos firmwaru, aktualizací a dalších dat pomocí páječky a drátů není Nejlepší rozhodnutí pro Arduino. Nicméně mikrokontroléry arduino wifi nejsou levné a ne vždy je jich potřeba, proto je uživatelé ve svých projektech raději zbytečně nepoužívají.

    Nyní se ale na trh dostal další čínský produkt, kutilský wi-fi rušič esp8266 lze připojit k desce Arduino nebo jinému systému a získáte stabilní připojení s řadou dalších výhod. Pojďme se tedy zabývat arduino uno wi-fi, a zda se vyplatí kupovat tento modul a také co je podobný mikrokontrolér na wi-fi arduino.

    Nyní se většina uživatelů arduina již nebojí o cenu takových zařízení, ačkoli před 3 lety byl arduino wi-fi modul považován za luxus. To vše díky wi-fi rušičce esp8266, jejíž výrobci představili kompletně Nový výrobek, nápadný svou funkčností a zároveň poměrně levný, což významně přispělo a vytvořilo v tomto směru konkurenci.

    Proto je nyní arduino wi-fi esp8266 považován za nejdostupnější modul na trhu, stejně jako všichni jeho bratři. Cena na zahraničních webech tedy začíná od 2 $, což vám umožňuje nakupovat tyto moduly v dávkách a ne je tisíckrát přerovnávat, pájet kontakty, aby se zachoval výkon.

    Nejprve byl tento arduino wi-fi modul používán hlavně jako arduino wi-fi štít, protože to byla nejlevnější varianta a nebyl v žádném případě horší než původní. Zařízení je opravdu téměř legendární, protože za jeho cenu neexistují žádné významné mínusy. Existuje mnoho knihoven, včetně uživatelských, a také podporuje provoz přes sériové sběrnice a nejjednodušší příkazy AT a AT +. Díky tomu není potřeba studovat sémantiku notoricky známého C99, jak tomu často bývá u jiných mikrokontrolérů třetích stran.

    V souladu s tím na to přijde i začátečník během několika sekund a profesionál bude moci používat již připravené knihovny. Mezi další výhody patří:

    1. Procesor je 160 MHz, ale je 32bitový, což zanechává určitý otisk na výkonu. Ale stojí za to připomenout, že modul se stále používá ve spojení s deskami Arduino, které samy řežou vysoké frekvence a sníst většinu zdrojů bez neznámého důvodu.
    2. Výrobce, který vydal wi-fi modul esp8266, v tomto nedokončil zajímavé projekty a nyní existuje celá řada mikrokontrolérů osvědčené kvality.
    3. Moderní síťové bezpečnostní standardy. WPA a WPA2 už samozřejmě dávno nejsou tak bezpečné, jak bychom si přáli, ale jejich přítomnost se z tak levného ovladače nemůže radovat.
    4. 16 výstupních portů, včetně 10bitových, umožňuje experimentovat s deskou.

    A co je důležitější, z krabice na vás čeká permanentní paměť až 4 megabajty v závislosti na typu desky, což výrazně zjednodušuje práci s velkými knihovnami a dokonce i některými mediálními soubory. Na většině desek Arduino je skutečně 1 megabajt považován za nedostupný luxus.

    Vlastnosti esp8266 wi-fi jistě potěší, zvláště ve srovnání s její dražší konkurencí, ale uživatel, který nemá s těmito deskami žádné předchozí zkušenosti, bude mít otázku, jak ji připojit. Faktem je, že modul má mnohem více pinů, než jsou začátečníci zvyklí vidět, a proto začnou panikařit. Pokud však situaci rozumíte, ve skutečnosti na tom není nic složitého. Stačí se zásobit pájkou a páječkou a jen si přečíst návod.

    Jak připojit Wi-Fi modul k Arduinu

    Podívejme se na připojení esp8266 esp 12e a co je esp8266 wifi most uart. Ostatně právě připojení a konfigurace modulu vyvolává nejvíce otázek.


    Nejprve se rozhodněte, jakou verzi mikrokontroléru máte po ruce. V prvním jsou LED diody postaveny v blízkosti pinů a na druhém, který začali vyrábět poměrně nedávno, jsou signální světla umístěna v blízkosti antény.

    Před připojením si prosím stáhněte. nejnovější firmware, což umožňuje zvýšit rychlost výměny paketů až na 9600 jednotek informací za sekundu. A zkontrolujeme připojení přes kabel usb-ttl a odpovídající terminál od CoolTerm.


    Výše popsané piny pro připojení kabelu jsou standardní, ale napájení jde přes 3,3 voltový pin od Arduina. Je důležité si uvědomit, že maximální proud, který deska dodává, nelze nastavit nad 150 mA a esp8266 esp 07 a esp8266 witty cloud wi-fi modul pro arduino vyžadují 240 mA.

    Pokud však není jiný zdroj proudu, můžete použít standardní verzi od Arduina, utrpí tím ale výkon desky. Přestože 70 mA stačí pro malou zátěž, připravte se na náhlé restarty mikrokontroléru ve špičkách zátěže a podle toho zapište software tak, aby filtroval a rozděloval soubory bez přetížení desky.


    Další možnost připojení je níže. Důležité - kontakty RX-TX jsou spojeny nitkovým křížem. Protože úrovně signálu modulu ESP8266 jsou 3,3 V a Arduino je 5 V, musíme pro převod úrovně signálu použít odporový dělič napětí.

    Wi-Fi modul registrujeme v Arduinu

    Jak víte, s patřičnými zkušenostmi můžete štít esp8266 ex 12e spárovat také se smartphonem, ale začátečníkům způsobuje registrace esp8266 esp 12 v systému Arduino potíže. Ve skutečnosti stačí modul připojit a zkontrolovat jeho výkon vypuštěním několika běžných AT příkazů z nabídky ladění.

    Můžete například přidat blikání standardní LED (pro schéma zapojení výše):

    #define TXD 1 // GPIO1/TXD01 void setup() ( pinMode(TXD, OUTPUT); ) void loop() ( digitalWrite(TXD, HIGH); delay(1000); digitalWrite(TXD, LOW); delay(1000) ;)

    Jakmile deska potvrdí, že vidí mikrokontrolér v systému, můžete začít práce na plný úvazek s ním. Je však vhodné poznamenat, že pokud je samotná deska Arduino v projektu použita pouze pro připojení tohoto řadiče, je to iracionální.

    Stačí převodník USB-UART, protože esp8266 nepoužívá "mozky" arduina a jeho flash paměť je docela dost na to, aby uložila pár základních knihoven a firmwaru. V souladu s tím nemá smysl utrácet peníze navíc za pomocnou desku, pokud ji můžete jednoduše připájet k převodníku a nadále ji používat v projektu. Zároveň tím, že připojíte pomocný zdroj energie a nebudete se bát, že se data přestanou v nejklíčovějším okamžiku přenášet kvůli nedostatku napájení systému.

    Důležitá poznámka! U posledního obvodu nahrajeme skicu do Arduina jako obvykle, ale protože je modul ESP8266 připojen na piny 0 a 1, programování je nemožné. Kompilátor zobrazí chybu. Odpojte vodiče vedoucí k ESP8266 od kolíků 0 a 1, proveďte programování a poté vraťte kolíky na místo a stiskněte tlačítko reset na Arduinu.

    V tomto článku informace o tom, jak sestavit svůj tank vybavený webová kamera a ovládá se přes Wifi router.

    Potřebné materiály:

    1. webová kamera
    2. Router TP-Link TL-MR3020
    3. Serva SG90 - 2 ks
    4. Antivibrační platforma fotoaparátu
    5. Baterie 7,2V 5000mAh
    6. Baterie 5V 2000mAh
    7. Nano 3.0 Atmel ATmega328
    8. Ovladač motoru L298N
    9. dráty, termotrubice, USB hub, diody a další.
    10. Platforma dle vašeho výběru, zvolil jsem DD1-1

    Stavba našeho monstra
    Nastavení routeru MR3020.
    Začněme nejprve routerem. Dlouho jsem přemýšlel, co zvolit OR-WRT nebo CyberWRT. OR-WRT je flexibilní v nastavení, ale veškeré úpravy a vlastní nastavení se provádí přes terminál pomocí programu Putty. A protože jsem se v tu chvíli bál pracovat přes terminál, vybral jsem si kam GUI je to CyberWRT a navíc se můžete připojit přes USB port.
    Abyste mohli změnit firmware našeho routeru, musíte si stáhnout firmware CyberWrt MR3020.

    Při stahování provádíme následující:

    1) Zapněte router a počkejte na stažení.
    2) Přihlaste se a přihlaste se na 192.168.0.254 (výchozí admin\admin)
    3) V levém menu najděte System Tools, tam je položka System Upgrade a nahrajte firmware přes webový formulář
    4) Počkejte na restart (asi 4 minuty)
    Router je připraven ke konfiguraci.

    Můžete si vybrat jeden z režimů:"Přístupový bod" a " WiFi klient sítě“. Chcete-li nastavit režim klienta:
    - vyberte režim "Klient WiFi sítě»
    - IP adresa vašeho zařízení (vaše zařízení bude dostupné na této adrese. Zkuste zvolit nečinnou IP. Například: 192.168.1.100)
    - Maska podsítě (255.255.255.0)
    – Brána (například IP vašeho domácí router nebo brána - 192.168.1.1)
    - Typ šifrování (typ šifrování používaný ve vaší domácí síti)
    - Heslo (heslo pro přístup k vaší domácí síti)

    Pokud jste udělali vše správně, budete mít ve spodní části obrazovky řádek RSS.

    Když vše funguje, budete mít sekci modulů, kde najdete modul "ROBOT". Nainstalujte. Připraven.

    Připojení L298N, Arduino Nano, MR3020, kamery a dalších

    Obrázek vše jasně ukazuje, ale pro jistotu to napíšu.

    Arduino DIGITAL 4 pin - na IN1 pin modulu.
    Arduino DIGITAL 5 pin - na pin IN2 modulu.
    Arduino DIGITAL 6 pin - na pin IN3 modulu.
    Arduino DIGITAL 7 pin - na IN4 pin modulu.
    Pin Arduino GND je ke svorce GND modulu.
    Terminál modulu GND - Baterie minus.
    Svorka modulu 7,2V - Baterie kladná.
    Terminál modulu RM - Pravý motor.
    Terminál LM modulu - Levý motor.
    Arduino USB port – připojte se k USB hubu
    Webová kamera – připojte se k rozbočovači USB
    Rozbočovač USB – Připojte se k USB routeru

    Energii, takříkajíc logistiku, zajišťuje druhá baterie. Kapacita 2000 mA/h 5v, aby se router nespálil. A se dvěma bateriemi robot pracuje stabilněji. Takže to jen připojíme ke konektoru micro usb. Prostřednictvím rozbočovače USB, který je připojen k routeru, jsou kamera i naše arduino již napájeny.

    Skica pro Arduino Nano
    Musíte si stáhnout knihovnu CyberLib, je pouze pro Atmega 328.

    /* Verze 1.5 WIFI Tanka na DD1-1 Implementováno: 1) Pohyb kamery v X a Y 2) Houkačka 3) Světlomety 4) Zvuk při zapnutí */ #include // Zahrnout knihovnu #include // Zahrnout knihovnu serv Servo myservo1; Servo myservo2; dlouho předchozíMillis; // Potřebné pro časovač int LedStep = 0; // Čítač pro LED int i; #define robot_go (D4_High; D5_Low; D6_Low; D7_High;) #define robot_back (D4_Low; D5_High; D6_High; D7_Low;) #define robot_stop (D4_Low; D5_Low; D6_Low; D7_lowH; D7_Low; D7_Low; D7_Low;D4pravý robot;D4right;) D7_Low ;) #define robot_rotation_left (D4_Low; D5_High; D6_Low; D7_High;) #define LED_ON (D13_High;) #define LED_OFF (D13_Low;) #define Headlamp_ON (D8_Low;) #define Headlamp_OFF (D8_High;1 Bzučák) (D8_High; , 494, 500);) #define init (D4_Out; D5_Out; D6_Out; D7_Out; D8_Out; D13_Out;) uint8_t inByte; void setup() ( myservo1.attach(9); // Připojte serva k portu myservo2.attach(10); // Připojte serva k portu D11_Out; D11_Low; // Speaker Headlamp_OFF; // Světlomety jsou standardně vypnuty pro (uint8_t i =0;i<12; i++) beep(80, random(100, 2000)); //звуковое оповещение готовности робота init; // Инициализация портов //Buzzer; // Инициализация портов динамика UART_Init(57600);// Инициализация порта для связи с роутером wdt_enable (WDTO_500MS); } void loop() { unsigned long currentMillis = millis(); // Обновление таймера if (LedStep == 0 && currentMillis - previousMillis >500)( // Zpoždění 0,5 s. previousMillis = currentMillis; // aktualizace časovače LED_ON; // Povolení LedStep = 1; // Počítadlo kroků ) if (LedStep == 1 && currentMillis - previousMillis > 500)( // Zpoždění 0,5 s previousMillis = currentMillis; // aktualizace časovače LED_OFF; // Vypnutí LedStep = 2; // Počítadlo kroků ) if (LedStep == 2 && currentMillis - previousMillis > 500)( // Zpoždění 0,5 s LedStep = 0; // Počítadlo kroků ) if (UART_ReadByte(inByte)) //Pokud něco přišlo ( switch (inByte) // Podívejte se, jaký příkaz přišel ( case "x": // Robot stop robot_stop; break; case "W" : // Move forward robot_go; break; case "D": // Otočte se doleva robot_rotation_left; break; case "A": // Otočte se vpravo robot_rotation_right; break; case "S": // Pohyb vzad robot_back; break; case " U": // Servo jde up myservo1.write(i -= 20); break; case "J": // Servo jde dolů myservo1.write(i += 20); break; case "H": // Servo se otočí doleva myservo2.write(i += 20); přestávka; case "K": // Servo se otočí doprava myservo2.write(i -= 20); přestávka; case "Y": // Servo se otočí o 85 myservo1.write(85); myservo2.write(85); přestávka; case "F": // Zapnout světlomety Headlamp_ON; přestávka; case "V": // Vypnout světlomety Headlamp_OFF; přestávka; case "I": // pípnutí bzučáku; přestávka; )) wdt_reset(); )

    Provádění změn na routeru
    Za účelem ovládání kamer byly provedeny změny v knihovně routeru. Budete si muset stáhnout upravený kód a nahradit jím původní soubory.

    Může být RC auto WiFi auto...?

    RC auta jsou dobrá, ale levná RC auta mají omezený dojezd a ovládají se pouze specifickým dálkovým ovladačem, který je součástí sady.

    Koupil jsem si 4x4 RC Jeep s pružným odpružením a terénními pneumatikami za asi 30 dolarů. Poté, co jsem si se strojem pohrál, rozhodl jsem se, že by se dal vylepšit WiFi asistence a Android. Poté, co jsem strávil trochu času, jsem úplně odstranil desku ze stroje. Změřil jsem napětí na této desce a vyvinul systém řízení motoru s Nápověda pro Arduino. Původní řídicí systém nepoužívá PWM pro regulaci otáček. Stroj je navržen tak, aby se přes překážky pohyboval na velmi nízkém převodovém stupni a v důsledku toho velmi pomalu. Můj obvod používá PWM.

    Arduino používám již několik měsíců. Také jsem si zakoupil asynclabs WiFi Sheild pro Duemilanoe Arduino, abych experimentoval s WiFi. Dodává se s nainstalovanou knihovnou Arduino IDE. Podařilo se mi vytvořit program, který umožňuje ovládat motory a směr pohybu pomocí WiFi.

    S pomocí vizuální studio Vyvinul jsem okno programu, které se připojuje k serveru auta a dává mu příkazy. Poté jsem po několika pokusech napsal aplikaci pro Android, která používá k ovládání auta akcelerometr.

    Nástroje a prvky

    Tento společný seznam nástroje a prvky, které byly použity v tomto projektu. Dokumentace Eagle přesně specifikuje Specifikace použité komponenty.

    multimetr
    páječka
    Pájka
    Šroubováky
    Řešení pro leptání desek plošných spojů
    Sklolaminátová fólie
    Kleště
    Arduino
    AsyncLabs WiFi Shield
    konektory RJ45
    Ovladač motoru H-můstek
    Kondenzátory

    Řidič motoru

    Pomocí Eagle jsem navrhl a vyrobil tento obvod tištěný spoj pro ni. Funguje jako ovladač motoru a regulátor výkonu pro Arduino.
    To vám umožní používat standardní 7,2V baterii pro napájení hlavního a řídicího motoru a Arduina.

    Tento obvod používá k ovládání motorů duální integrovaný ovladač H-můstku SN754410. Ovládací kolíky ovladače jsou připojeny ke kabelu RJ45, který se připojuje k AsyncLabs WiFi Sheild.

    štít arduino

    Pomocí knihovny SparkFun v Eagle jsem vyvinul štít arduino, přes který projdou kontakty z WiFi Shield a připojí se k ovladači motoru přes konektor RJ45 a 2 šroubovací svorky.

    Pinout RJ45 je velmi důležitý. Chyba připojení může vést k nepředvídatelným výsledkům a budete muset desku předělat.

    Leptání DPS

    Toto téma už bylo mnohokrát probíráno a nebudu ho podrobně popisovat.
    Používám ho a vyhovuje mi a se zkušenostmi dává vynikající výsledky.

    K upevnění desky k pouzdru byl použit suchý zip. Měl jsem štěstí, protože v mém psacím stroji bylo pod trubkovým rámem hodně místa pro elektroniku.
    Zapomněl jsem vyfotit spojení desky ovladače motoru se zbytkem desek, ale dopadlo to dobře a nezabralo moc místa v pouzdře.

    Program

    Můj kód možná není dostatečně efektivní, ale funguje.

    psací stroj

    Byl jsem schopen postavit CarServer na základě příkladu SocketServer, který jsem dostal od Wifi Sheild AsynLabs.
    Budete muset zadat informace o svém bezdrátová síť do kódu Arduino. Když je stroj zapnutý, dejte mu 15–45 sekund na navázání spojení se směrovačem. Červená LED na WiFi Shield znamená, že připojení je navázáno.

    Tento program jsem vytvořil v C# a MS Visual Studio 2008. Udělal jsem pěkné okno a auto se dá ovládat šipkami.

    Proč neovládat auto z telefonu?

    Tato myšlenka mě napadla asi týden po koupi DroidX. Začal jsem experimentovat a nakonec jsem použil Android SDK. Našel jsem podobné aplikace, kde k ovládání slouží akcelerometr. Při pohledu na tyto aplikace jsem napsal vlastní.

    Vložte IP a port zadaný v kódu Arduino. Držte telefon vodorovně. Poté jej nakloňte směrem od sebe pro jízdu vpřed a směrem k sobě pro jízdu vzad. Použijte svůj telefon jako volant.
    Toto je moje první velká aplikace pro Android. Stále má nějaké chyby, ale z velké části funguje dobře.

    Jezděte na dvoře s autem 4x4 s WiFi!

    Při vytváření tohoto projektu jsem se skvěle bavil. Získal jsem spoustu znalostí a nových dovedností a nyní mám auto s pohonem 4x4, které lze ovládat z telefonu.

    Potřebuji kameru namontovat za přední sklo, abych viděl, kam jedu. Měl by mít nízkou spotřebu a také sám přenášet video. (Myslím, že to Arduino zvládne).

    Seznam rádiových prvků

    Označení Typ Označení Množství PoznámkaProdejnaMůj poznámkový blok
    Řidič motoru
    IC1 ČipSN7544101 Do poznámkového bloku
    Lineární regulátor5 V1 Do poznámkového bloku
    bipolární tranzistor

    2N3904

    1 Do poznámkového bloku
    C1, C2 elektrolytický kondenzátor 2 Do poznámkového bloku
    Konektor2 špendlíky7 Do poznámkového bloku
    Konektor8 pinů1 Do poznámkového bloku
    štít arduino
    U1 Deska Arduino 1 Do poznámkového bloku
    T1 bipolární tranzistor

    2N3904

    1 Do poznámkového bloku
    R1 Rezistor 1 Do poznámkového bloku
    3 USD Trimrový odpor 1 Do poznámkového bloku
    Konektor2 špendlíky2