Pamiętaj, jak to było
robotodkurzacz „Cybernetyka” w książce N.N. Nosova „Dunno in the Solar City”? Czy trzeba mu było przypominać, że nadszedł czas na pracę? Teraz, gdy takie urządzenia stały się rzeczywistością, okazało się, że jest to konieczne. Weź pilota i naciśnij na nim przycisk. Bohater twórczości Pachkula Pestrenky, widząc to, z pewnością zauważyłby: „Co to za automatyka, jeśli trzeba nacisnąć przycisk, gdyby tylko nie miał przycisków”. Tak też uważał autor Instructables pod pseudonimem ShaperG. I zrobiłem
zrób to sam urządzenie do uruchamiania odkurzacza robota zgodnie z harmonogramem.
Domowe składa się z mechanicznego timera do włączania różnych urządzeń elektrycznych zgodnie z harmonogramem (Ikea lub innym), zasilacza,
Arduino, zworki typu breadboard i zworki dupont (opcjonalnie można wszystko podłączyć przez lutowanie), dwie diody LED - widoczny blask i podczerwień, dwa rezystory 330 Ohm, obudowa Sparkfun lub dowolna inna.
Po wybraniu wszystkich niezbędnych komponentów kreator sporządza schemat. I znowu w programie podobnym do Fritzinga, w tym przypadku w aplikacji online Mekanizmalar. Nie wszystkim podoba się ten sposób rysowania diagramów, ale sposób połączenia wszystkiego jest zrozumiały.
Po wybraniu schematu kreator rozpoczyna programowanie:
Bierze bibliotekę
tutaja szkic jest
tutaj. Upraszcza szkic, dzięki czemu po włączeniu zasilania nieprzerwanie wysyła polecenie „czystego” co pięć sekund. Szkic będzie musiał zostać sfinalizowany, jeśli
model odkurzacz różni się od iRobot Roomba 530. Cóż, mistrz okazuje się:
#include
/ *
Super prosty Arduino Powerd Roomba Scheduler
2013-08-03 Wydanie instruktażowych
Kod zaadaptowany z: https://gist.github.com/probonopd/5181021
Wysyłaj polecenia w podczerwieni z Arduino do iRobot Roomba
przez probono
2013-03-17 Pierwsze wydanie
Copyright (c) 2013 przez probono
Wszelkie prawa zastrzeżone.
Redystrybucja i wykorzystanie w postaci źródłowej i binarnej, z lub bez
modyfikacje są dozwolone pod warunkiem spełnienia następujących warunków:
1. Redystrybucje kodu źródłowego muszą zawierać powyższą informację o prawach autorskich, to
lista warunków i następujące wyłączenie odpowiedzialności.
2. Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach autorskich,
niniejsza lista warunków i poniższe wyłączenie odpowiedzialności w dokumentacji
i / lub inne materiały dostarczone wraz z dystrybucją.
NINIEJSZE OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ POSIADACZY PRAW AUTORSKICH I WKŁADOWCÓW „TAK JAK SĄ” ORAZ
WSZELKIE WYRAŹNE LUB DOMNIEMANE GWARANCJE, W TYM, ALE NIE OGRANICZONE DO, DOROZUMIANE
GWARANCJE PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU SĄ
ZASTRZEŻENIE. W ŻADNYM WYPADKU ODPOWIEDZIALNOŚĆ WŁAŚCICIELA LUB WSPÓŁPRACUJĄCYCH
WSZELKIE SZKODY BEZPOŚREDNIE, POŚREDNIE, UBOCZNE, SZCZEGÓLNE, PRZYKŁADOWE LUB WTÓRNE
(W TYM, ALE NIE OGRANICZONE DO, ZAMÓWIENIE TOWARÓW LUB USŁUG SUBSTYTUTU;
UTRATA WYKORZYSTANIA, DANYCH LUB ZYSKÓW; LUB PRZERWANIE BIZNESU), JEDNAK SPOWODOWANE I
W JAKIEJKOLWIEK TEORII ODPOWIEDZIALNOŚCI, NAWET W UMOWIE, Ścisłej ODPOWIEDZIALNOŚCI LUB TORT
(W TYM NIELEGALNOŚĆ LUB W INNY SPOSÓB) WYNIKAJĄCE W DOWOLNY SPOSÓB Z WYKORZYSTANIA TEGO
OPROGRAMOWANIE, NAWET JEŚLI OSTRZEŻENIE O MOŻLIWOŚCI TAKICH SZKÓD.
* /
IRsend irsend; // podłączone do pinu 3; użyj tranzystora do sterowania diodą LED IR dla maksymalnego zasięgu
int LED = 10;
void setup ()
{
Serial.begin (9600);
pinMode (LED, WYJŚCIE);
digitalWrite (LED, WYSOKI); // włącz diodę LED (WYSOKI to poziom napięcia)
}
void loop ()
{
roomba_send (136); // Wyślij „Wyczyść”
opóźnienie (5000); // Poczekaj 5 sekund
}
void roomba_send (kod wewnętrzny)
{
Serial.print („Wysyłanie kodu Roomba”);
Serial.print (kod);
int długość = 8;
unsigned int raw [długość * 2];
unsigned int one_pulse = 3000;
unsigned int one_break = 1000;
unsigned int zero_pulse = one_break;
unsigned int zero_break = one_pulse;
int arrayposition = 0;
// Serial.println ("");
for (licznik int = długość-1; licznik> = 0; --counter) {
if (kod i (1 licznik <<)) {
// Serial.print („1”);
raw [arrayposition] = one_pulse;
raw [arrayposition + 1] = one_break;
}
jeszcze {
// Serial.print („0”);
raw [arrayposition] = zero_pulse;
raw [arrayposition + 1] = zero_break;
}
arrayposition = arrayposition + 2;
}
dla (int i = 0; i <3; i ++) {
irsend.sendRaw (raw, 15, 38);
opóźnienie (50);
}
Serial.println ("");
Serial.print („Raw timings:”);
dla (int z = 0; z
Początkowo kreator sprawdza działanie szkicu, aby wyprowadzić port szeregowy na monitor. Następnie umieszcza wszystko w obudowie i dostarcza Arduino nie z komputera, ale z zasilacza podłączonego za pomocą mechanicznego timera.
Teraz, umieszczając urządzenie w pobliżu stacji ładującej, do której zawsze wraca odkurzacz robota, możesz ustawić harmonogram składania mechanicznego timera, aby go uruchomić. Najlepszy ze wszystkich - raz dziennie. Tylko nie w nocy, jak w pracy N.N. Nosowa