Spisu treści:

SilverLight: monitor środowiskowy oparty na Arduino dla serwerowni: 3 kroki (ze zdjęciami)
SilverLight: monitor środowiskowy oparty na Arduino dla serwerowni: 3 kroki (ze zdjęciami)

Wideo: SilverLight: monitor środowiskowy oparty na Arduino dla serwerowni: 3 kroki (ze zdjęciami)

Wideo: SilverLight: monitor środowiskowy oparty na Arduino dla serwerowni: 3 kroki (ze zdjęciami)
Wideo: How to install Silverlight for Business Monitor 2024, Lipiec
Anonim
SilverLight: oparty na Arduino monitor środowiskowy do serwerowni
SilverLight: oparty na Arduino monitor środowiskowy do serwerowni
SilverLight: oparty na Arduino monitor środowiskowy do serwerowni
SilverLight: oparty na Arduino monitor środowiskowy do serwerowni
SilverLight: oparty na Arduino monitor środowiskowy do serwerowni
SilverLight: oparty na Arduino monitor środowiskowy do serwerowni
SilverLight: oparty na Arduino monitor środowiskowy do serwerowni
SilverLight: oparty na Arduino monitor środowiskowy do serwerowni

Kiedyś dostałem zadanie poszukiwania sondy środowiskowej do monitorowania temperatury w serwerowni mojej firmy. Mój pierwszy pomysł był taki: dlaczego nie użyć tylko Raspberry PI i czujnika DHT, można go skonfigurować w mniej niż godzinę, łącznie z instalacją systemu operacyjnego. W tym celu otrzymałem zimną odpowiedź od apodyktycznych ludzi z zawiązanymi oczami, że nie zrobimy tego, ponieważ jego skonfigurowanie kosztowałoby więcej godzin pracy niż zakup urządzenia. Konieczność zaakceptowania takich ograniczonych ludzi przez część mojego życia to jedno i zamówiłem trochę śmieci EATON klasy korporacyjnej z Ebay i nazwałem to, ale zdecydowałem w tym momencie, że dla mojej własnej serwerowni zbuduję całkowicie Open Source Arduino oparte na urządzeniu, które będzie znacznie lepsze niż to, co właśnie zamówiłem.

Ten projekt ma nazwę kodową SilverLight, nie pytaj mnie, skąd mam te nazwy:) Właśnie spojrzałem na błyszczące pół akrylowe pudełko i zdecydowałem się z tą nazwą, nie ma to nic wspólnego z produktem microhoof, o czym dowiedziałem się później.

Krok 1: Projektowanie sprzętu

Projektowanie sprzętu
Projektowanie sprzętu
Projektowanie sprzętu
Projektowanie sprzętu
Projektowanie sprzętu
Projektowanie sprzętu

Przegląd sprzętu komercyjnego.

Ok, więc nawet nie zaczynam od tego, czyje świetnym pomysłem było umieszczenie monitora środowiska wewnątrz ups, ale oczywiście jest na to rynek, więc zobaczmy, co mogą zrobić:

Urządzenie monitorujące środowisko KOMPATYBILNOŚĆ

Sieć 10/100Mb-MS, PXGUPS, PXGPDP i PXGMS.

10/100Mb ConnectUPS-X, ConnectUPS-BD i ConnectUPS-E z FW V3.01 i nowszymi. WYMIARY (DxSxW)

2,26 x 1,48 x 1,15 (cale) 57,6 x 37,6 x 29,3 (mm) WAGA

1,19 uncji (34 g)

To bardzo przydatne informacje, prawda? Nie martw się jednak, ponieważ nie mogą wiele zrobić. Aby nawet zacząć, twój UPS będzie musiał mieć inną drogą kartę dodatkową, która łączy to z czujnikiem środowiskowym, który kupujesz osobno, zwykle ze standardowym kablem CAT5 (nawet nie próbuj podłączać niczego do tego portu, ponieważ nie ma nic standardowego o tym). Twierdzą, że urządzenie potrzebuje 10 minut na „rozgrzanie”, co w rzeczywistości trwało godziny, a kiedy już to voila, pojawiło się w ich powoli aktualizującym się interfejsie Java, a my mamy temperaturę i wilgotność. Konfiguracja warunków opartych na alertach była od tego momentu łatwa, ale kogo to obchodzi, zbudujmy coś lepszego.

Ten projekt jest połączeniem wielu moich projektów: Stacja pogodowa Natalia, Cień feniksa. Box jest w stanie monitorować następujące ograniczenia środowiskowe:

  • Wskaźnik temperatury/wilgotności/ciepła
  • Stężenia LPG, dymu, alkoholu, propanu, wodoru, metanu i tlenku węgla w powietrzu (MQ2)
  • Wrażliwość na słońce (czy światło w serwerowni jest włączone?)
  • Czujnik ruchu PIR (od teraz możesz nawet automatycznie włączać/wyłączać światła dzięki czujnikowi ruchu, gdy ktoś wejdzie do pokoju)

Wszystkie te dane są ładnie wyświetlane na ekranie LCD, a także przekazywane do komputera (pomarańczowy PI Zero) w celu dalszego przetwarzania i alertów. Chociaż byłoby możliwe podłączenie czujników cyfrowych, takich jak DHT i cyfrowy pin MQ2 bezpośrednio do OrangePI, zawsze wolę używać dedykowanych mikros do tych zadań i gdy trzeba zaktualizować wyświetlacz LCD i wykonać inne niskie poziomy Rzeczywiście, Arduino jest po prostu nie do pobicia i może niezawodnie działać bez przerwy przez wiele lat (w rzeczywistości ani jedno Arduino, które działa 24/7, jeszcze mnie nie zawiodło). OrangePI ze swoimi wadami (nie oszukujmy się, że jest to komputer za 10$), jak nie nadaje się do użytku przy dużym obciążeniu, brak obsługi bsd, zintegrowane Wi-Fi jest nadęte itp., może z łatwością poradzić sobie z małym obciążeniem, takim jak pobieranie odczytów z czujników przez port szeregowy (USB) i ich przetwarzanie.

Jest to bardzo prosty projekt pod względem sprzętowym, który wymaga następujących komponentów:

  • Arduino PRO Micro
  • Ekran LCD 2x16 znaków RGB
  • Izolator AC-DC moduł zasilania 220V do 5V HLK-5M05 (są bardzo dobre dla projektów Arduino/ESP), to jest wersja 5V/5W!
  • Rezystory 2x300ohm
  • 2xleds (czerwony/zielony)
  • Czujnik ruchu PIR
  • Czujnik MQ2
  • DHT22
  • LDR
  • Rezystor 2X10Kohm
  • Brzęczyk
  • Pomarańczowy PI Zero
  • kabel do transmisji danych mini USB

Nawet nie zawracałem sobie głowy robieniem płytki drukowanej do tego po prostu używałem zwykłej płytki stykowej, ponieważ komponenty można po prostu podłączyć do Arduino (patrz załączone zdjęcia):

-DHT22 będzie wymagał podciągnięcia 10K do VCC (cyfrowo)

-LDR będzie wymagał pulldown 10K do GND (analogowy)

-MQ2 może być bezpośrednio podłączony do dowolnego pinu analogowego (analogowego) < wolą używać analogowego, ponieważ dlaczego nie, gdy mamy MCU z pinami analogowymi, gdzie możemy uzyskać dokładną wartość zamiast regulować potencjometr z tyłu urządzenia, aby uzyskać WYSOKI lub NISKI z tego, ze względu na klejenie w moim projekcie, które i tak jest niedostępne. Sprawdź:

-PIR może być bezpośrednio podłączony do dowolnego pinu (cyfrowy)

-LCD: może być napędzany 4 pinami, może być podłączony do dowolnego pinu (cyfrowo) wymaga +2 RS/E (cyfrowy)

-Brzęczyk: może być bezpośrednio podłączony do dowolnych pinów Arduino (cyfrowy)

Użyty przeze mnie pinout można zobaczyć w kodzie. Łączenie wszystkiego razem po tym jest dość proste, możesz też robić je jeden po drugim, upewnij się, że 1 czujnik działa idealnie, a następnie przejdź do następnego, wszystko, co możesz pomylić, to pomyłkowe podłączenie przewodów do niewłaściwych miejsc (np. zamiana vcc /gnd dla czujnika, jak dotąd nigdy nie zabiło to żadnego z moich urządzeń). Co tu zaznaczę, że było dla mnie za dużo VCC i GND, nie mogłem ich przecisnąć przez listwę zaciskową, więc je wszystkie przylutowałem.

Również o DHT nie zapomnij o innych moich projektach: jeśli umieścisz bibliotekę DHT w swoim kodzie, a czujnik DHT nie jest podłączony lub źle podłączony DHT (np. 11 zdefiniowanych w kodzie, którego używasz 22) to może prowadzić do programu na początku wisieć na zawsze.

Jeśli chodzi o czujniki ruchu PIR, jak widać na moim zdjęciu, jest ich mnóstwo fałszywych podróbek, co prawda nawet trudno byłoby kupić oryginalne z Ebay. Podróbki działają równie dobrze, nawet na dłuższą metę, ale mają lustrzany obwód, co powoduje odwrócenie pinów + i -, również te są łatwe do rozpoznania: pochodzą z niebieskim PCB, a nie zwykłym zielonym, brak etykiet dla potencjometry. Miałem szczęście, że znalazłem oryginał w moim pudełku, w przeciwnym razie zmiana pozycji zakryłaby dla mnie 2 diody led. Odkryłem, że u mnie działają oba garnki przekręcone do połowy. Zapewni to wystarczająco duży zasięg do wykrywania również w przypadku ruchu, cyfrowa noga będzie utrzymywana w pozycji HIGH przez około minutę, więc nie musisz tego nadrabiać w kodzie. Na podróbkach łatwo określić, która strona jest - i + wystarczy spojrzeć na odpowiednie nóżki dla elektrolitycznych kołpaków podłączonych do pinów.

Do wycięcia pudełka użyłem diamentowej głowicy dremel (która była przesadą, ale działała świetnie) i zwykłej wiertarki. Te skrzynki połączeniowe są łatwe w obsłudze i chociaż nie lubię klejenia, podczas budowy nie miałem pod ręką śrub i śrub, więc wziąłem się za sklejenie rzeczy (które można również łatwo podgrzać i rozebrać później za pomocą ten sam pistolet do klejenia bez wypełnienia).

Krok 2: Projektowanie oprogramowania

Projektowanie Oprogramowania
Projektowanie Oprogramowania
Projektowanie Oprogramowania
Projektowanie Oprogramowania

Kod Arduino jest również prosty, w zasadzie pobiera wszystkie odczyty czujnika na początku każdej pętli. Włącza diody LED, jeśli jest ruch lub dym, a także odtwarza dźwięk alarmu na brzęczyku, jeśli jest dym (jest to jedyny kod blokujący, więc skróciłem), następnie wyświetla dane na LCD i na koniec wysyła je przez komputer z 10-sekundowym okresem utrzymywania, aby nie zalewać portu.

Ten projekt wykorzystuje jednokierunkową komunikację z Arduino->OrangePI, nie ma zaimplementowanych żadnych poleceń. Chociaż byłoby to całkowicie możliwe, tak jak zrobiłem to w jednym z moich innych projektów, w którym komputer może wysłać LCD_PRINT1 lub LCD_PRINT2 w celu nadpisania jednej linii ekranu LCD własną wiadomością (np.: adres ip, czas pracy, data systemowa, użycie procesora), obszar ekranu jest tak mały do wyświetlania danych z 3 czujników, że nawet nie zawracałem sobie głowy. Wartości SOL i SMK mogą mieć maksymalnie 4 cyfry 0000-1023, co zajmuje już 8 wartościowych znaków na ekranie.

Z LCD można zauważyć małą sztuczkę w kodzie, że po każdej zmierzonej wartości nanoszony jest nadruk spacji (" "), a następnie przesuwam kursor do ustalonych pozycji, aby umieścić nowe ikony i dane. Są tam, ponieważ wyświetlacz LCD nie jest tak inteligentny, aby zrozumieć liczby, po prostu rysuje to, co dostaje i na przykład, jeśli miałeś wartość słoneczną 525, która nagle spadła do 3, wyświetli 325, pozostawiając stare śmieci na ekranie tam.

Kod kontrolny C działający na OrangePI i rejestrujący dane środowiskowe oraz wysyłający powiadomienia e-mail w razie potrzeby.

Na OrangePI działa Armbian (który w chwili pisania tego tekstu oparty jest na Debianie Stretch). Zamieszczę to w części oprogramowania, ponieważ to był problem, co rozwiązało. Oto średni pobór mocy urządzenia:

0,17 A - tylko Arduino + czujniki

0,5-0,62 A - rozruch OrangePI

0,31 A - Pomarańczowy PI na biegu jałowym

0,29 A - Pomarańczowy PI wyłączony (tak naprawdę nie można go wyłączyć, nie ma ACPI ani nic w tym stylu)

0,60 A - Test obciążeniowy 100% wykorzystania procesora na 4 rdzeniach

Ten OrangePI miałem w pudełku od dłuższego czasu. Ze starym jądrem urządzenie pobrało tak dużo prądu (jak powiedział miernik osiągnął szczyt około 0,63 A), czego prawdopodobnie zasilacz nie mógł zapewnić, że po prostu nie uruchamia się, proces uruchamiania się utknął i mam zapalone 2 diody ethernetowe stale i nic nie robiąc.

Teraz jest to trochę denerwujące, ponieważ HLK-5M05 twierdzi, że może robić 5 W na 5 V, dzięki czemu jest w stanie zapewnić 1 Amp, ale z tymi urządzeniami pochodzącymi z Chin, których po prostu nigdy nie wiadomo, szczyt 0,63 A był znacznie niższy niż maksymalny wartość. Przeprowadzałem więc proste testy restartu, od 10 restartów OrangePI uruchamiał się tylko dwa razy z powodzeniem, co prawie sprawiło, że wyrzuciłem go z projektu, ponieważ nie lubię bugów, niespójnych zachowań w obwodach. Zacząłem więc googlować, być może istnieje sposób na obniżenie zużycia energii w czasie rozruchu z oprogramowania (ponieważ wtedy był to tylko problem) i znalazłem artykuł mówiący o ulepszaniu skryptu.bin, ale dotyczyło to komputera Orange PI i brakowało plików w pamięci, więc w ostateczności zrobiłem magiczną „apt upgrade”, aby zaktualizować oprogramowanie układowe, jądro i wszystko inne, mając nadzieję, że zmniejszy się to mniej, a urządzenie będzie mogło się uruchomić i:

Linux silverlight 4.14.18-sunxi #24 SMP piątek 9 lutego 16:24:32 CET 2018 armv7l GNU/Linux

Linux silverlight 4.19.62-sunxi #5.92 SMP Śr 31 lipca 22:07:23 CEST 2019 armv7l GNU/Linux

Zadziałało! Rzucanie sprzętu do problemu z oprogramowaniem jest zwykle leniwym programistą java, ale w tym przypadku rozwiązaliśmy problem sprzętowy z oprogramowaniem, co jest wielkim sukcesem. Zrobiłem około 20 kolejnych testów ponownego uruchomienia urządzenia, które uruchamiało się w każdym przypadku. Nadal chciałbym zauważyć, że skok mocy spowodowany włączeniem Opi (podłączanie / odłączanie) jest tak duży, że w dowolnym momencie zresetuje Arduino (proste ponowne uruchomienie spowoduje tylko migotanie ekranu LCD, ale nie spowoduje dalszych problemów), ale ten problem pozostaje ukryte, ponieważ 2 zostaną uruchomione razem.

Przyjrzałem się również modułom jądra:

usb_f_acm u_serial g_serial libcomposite xradio_wlan mac80211 lima sun8i_codec_analog snd_soc_simple_card gpu_sched sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils TTM sun4i_gpadc_iio snd_soc_core cfg80211 snd_pcm_dmaengine industrialio snd_pcm snd_timer SND sun8i_ths soundcore cpufreq_dt uio_pdrv_genirq UIO thermal_sys pwrseq_simple

Czego tak naprawdę od nich potrzebujemy? Ok, pwr i Thermal mogą być przydatne, ale dźwięk, port szeregowy, Wi-Fi (już zepsuty sprzęt) nie potrzebujemy tego wszystkiego, co można umieścić na czarnej liście. Później stworzę również niestandardowe jądro z tylko niezbędnymi modułami.

To, czego potrzebujemy i nie jest domyślnie ładowany, to CDC ACM do komunikacji z Arduino, włącz go za pomocą:

echo "cdc-acm" >> /etc/modules

Po tym możesz już przetestować połączenie z:

ekran /dev/ttyACM0 9600

Powinieneś zobaczyć dane statusu wysyłane co 10 sekund.

Alerty i monitorowanie

Jeśli chodzi o alerty, po prostu umieściłem wywołania system() w kodzie kontrolnym C, który odbiera dane z portu szeregowego, więc żadne zewnętrzne narzędzia nie są wymagane. Kilka przykładowych alertów:

- Temperatura przekracza 30 C

- Wilgotność przekracza 70% (niezdrowe dla serwerów)

- Wykryto ruch w pomieszczeniu (może to być denerwujące, jeśli nadal będziesz w serwerowni)

- Wykryto dym lub gaz (alerty powyżej 100 można traktować poważnie, bawiłem się tym czujnikiem i włącza się za dużo rzeczy, na przykład tworzenie dymu obok czujnika za pomocą lutownicy skutkowało nieco ponad 50 przy paleniu następnego papierosa o podskoczył do 500, nawet z daleka wykrył gaz ze zwykłego dezodorantu)

Aby zachować dane historyczne, nie zawracałem sobie głowy tworzeniem narzędzia, ponieważ po co wymyślać koło na nowo, skoro mamy doskonałe frameworki do monitorowania. Pokażę przykład, jak zintegrować to z moim osobistym faworytem, Zabbix:

apt-get zainstaluj zabbix-agent

Dodaj na końcu: /etc/zabbix/zabbix_agentd.conf

UserParameter=silverlight.hum, nagłówek -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $1 }'

UserParameter=silverlight.tmp, nagłówek -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $2 }' UserParameter=silverlight.sol, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $4 }' UserParameter=silverlight.mot, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $5 }' UserParameter=silverlight.smk, head -1 /dev/shm/silverlight-zbx.log | awk -F", " '{ print $6 }'

Uruchomienie zabbix_agentd -p powinno teraz zwrócić prawidłowe wartości:

srebrnyświatło.hum [t|41]

silverlight.tmp [t|23] silverlight.sol [t|144] silverlight.mot [t|0] silverlight.smk [t|19]

Indeks ciepła, zbieram go, ale nie widzę żadnego praktycznego zastosowania, więc jest po prostu rejestrowany. W kodzie sterującym C zaimplementowałem 2 funkcje logowania, pierwsza będzie logować wszystkie dane w przyjaznym dla użytkownika formacie:

[SILVERLIGHT] Dane otrzymane 10.09.2019 23:36:08 => Wilgotność: 44, Temp: 22, Hi: 25, Solar: 0, Ruch: 0, Dym: 21

[SILVERLIGHT] Dane otrzymane 10.09.2019 23:36:18 => Wilgotność: 44, Temp: 22, Hi: 25, Solar: 0, Ruch: 0, Dym: 21 [SILVERLIGHT] Dane otrzymane 09.09.2019 -10 23:36:29 => Wilgotność: 44, Temp: 22, Hi: 25, Solar: 0, Ruch: 0, Dym: 22 [SILVERLIGHT] Dane otrzymane 10 września 2019 23:36:39 => Wilgotność: 44, Temp: 22, Hi: 25, Solar: 0, Ruch: 0, Dym: 21

Drugie:

void logger2(znak *tekst) {

PLIK *f = fopen("/dev/shm/silverlight-zbx.log", "w"); if (f == NULL) { printf("Błąd podczas otwierania pliku dziennika pamięci!\n"); powrót; } fprintf(f, "%s", tekst); fzamknij(f); powrót; }

Spowoduje to umieszczenie w pamięci dziennika jednoliniowego (wyeliminuje niepotrzebne operacje rw na karcie sd), który będzie zawsze nadpisywany następnym razem. Ten dziennik będzie zawierał tylko 6 kolumn danych i bez znacznika czasu, jest łatwy do odczytania dla Zabbix.

Jako ostatni bonus: jak zaprogramować Arduino bezpośrednio z OrangePI, dzięki czemu nie musisz za każdym razem podchodzić do urządzenia i podłączać laptopa.

Istnieją 2 sposoby:

-Łatwy sposób: Zainstaluj pełne Arduino IDE, a biblioteki użyj zdalnego pulpitu, takiego jak X11 z przekazywaniem, Xrdp, Xvnc, Nxserver itp.

-Trudny sposób: Zainstaluj Arduino IDE i użyj wiersza poleceń

Tym razem zrobimy trudną drogę, ponieważ nie lubię instalować X11 na serwerach. Do tego będziesz potrzebować 6 komponentów:

1, Arduino IDE dla ARM 32 bit ->

2, Python serial -> apt-get install python-serial

3, projekt Arduino Makefile -> git clone

4, biblioteka DHT

5, Definicje tablic Sparkfun

6, SilverLight.ino, kod główny

Aby to ułatwić, spakowałem pliki potrzebne do ostatnich 4 punktów (sketchbook.tgz), więc będziesz potrzebować tylko pierwszych 2

Najpierw najlepiej utworzyć zwykłego użytkownika, który będzie miał dostęp rw do portu USB:

adduser srebrny

usermod -a -G dialout srebrny

Przenieś plik sketchbook.tgz do urządzenia w nowo utworzonym katalogu domowym użytkownika i rozpakuj go tam:

cd /home/srebrny

tar xvzf szkicownik.tgz

Aby trochę zrozumieć, co dzieje się pod maską, gdy używasz graficznego IDE:

Proces budowania szkicu Arduino podczas korzystania z Arduino IDE jest opisany na stronie Arduino https://www.arduino.cc/en/Hacking/BuildProcess oraz bardziej szczegółowo tutaj: https://www.arduino.cc/ pl/Hacking/BuildProcess

Ogólnie rzecz biorąc, standardowy proces budowania Arduino to:

Połącz pliki.ino z głównym plikiem szkicu. Przekształcenie głównego pliku szkicu: dodaj instrukcję #include; tworzyć deklaracje funkcji (prototypy) wszystkich funkcji w głównym pliku szkicu; dołącz zawartość pliku main.cxx celu do głównego pliku szkicu. Skompiluj kod do plików obiektowych. Połącz pliki obiektowe, aby utworzyć plik.hex gotowy do przesłania go do Arduino.

Istnieją pewne niewielkie różnice między standardowym procesem budowania Arduino a procesem budowania przy użyciu Arduino-Makefile:

Obsługiwany jest tylko jeden plik.ino. Deklaracje funkcji nie są automatycznie tworzone w pliku.ino. Użytkownik musi zadbać o stworzenie poprawnych deklaracji funkcji.

Sercem procesu budowania jest plik Makefile. Nie martw się, wszystko jest przygotowane dla Ciebie, jest to nieco bardziej skomplikowane przy kompilacji w ten sposób dla niestandardowych płyt, takich jak seria SparkFun.

BOARD_TAG = promicro

ALTERNATE_CORE = SparkFun BOARD_SUB = 16MHzatmega32U4 ARDUINO_PORT = /dev/ttyACM0 USER_LIB_PATH = /home/silver/sketchbook/libraries ARDUINO_DIR = /opt/arduino-1.8.9 include /home/silver/sketchbook/Arduino-Arduino-

I wszystko, co musisz wpisać to: make upload (co najpierw zbuduje pliki.hex, a następnie użyje avrdude do ich przesłania), skończy się na czymś takim:

mkdir -p build-promicro-16MHzatmega32U4

make reset make[1]: Wejście do katalogu '/home/silver/sketchbook' /home/silver/sketchbook/Arduino-Makefile/bin/ard-reset-arduino --caterina /dev/ttyACM0 make[1]: Opuszczenie katalogu ' /home/silver/sketchbook' make do_upload make[1]: Wejście do katalogu '/home/silver/sketchbook' /opt/arduino-1.8.9/hardware/tools/avr/bin/avrdude -q -V -p atmega32u4 - C /opt/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -D -c avr109 -b 57600 -P /dev/ttyACM0 / -U flash:w:build-promicro-16MHzatmega32U4/sketchbook. hex:i Łączenie z programatorem:. Znaleziono programistę: Id = "CATERIN"; typ = S Wersja oprogramowania = 1.0; Nie podano wersji sprzętu. Programator obsługuje automatyczne zwiększanie adresu. Programista obsługuje dostęp do buforowanej pamięci z buffersize=128 bajtów. Programator obsługuje następujące urządzenia: Kod urządzenia: 0x44 avrdude: urządzenie AVR zainicjowane i gotowe do przyjęcia instrukcji avrdude: sygnatura urządzenia = 0x1e9587 (prawdopodobnie m32u4) avrdude: odczyt pliku wejściowego "build-promicro-16MHzatmega32U4/sketchbook.hex" avrdude: zapis flasha (11580 bajtów): avrdude: 11580 bajtów zapisanych w pamięci flash avrdude: safemode: Bezpieczniki OK (E:CB, H:D8, L:FF) avrdude gotowe. Dziękuję Ci.

Cóż, dziękuję avrdude, a teraz nasze Arduino zostało zresetowane i zaprogramowane nowym kodem, co możesz po prostu edytować lokalnie za pomocą vi lub ulubionego edytora, bez żadnych IDE. Chciałbym zauważyć, że powinieneś zamknąć zarówno program sterujący C, ekran, jak i cokolwiek innego uzyskującego dostęp do arduino podczas przesyłania, w przeciwnym razie port powróci jako /dev/ttyACM1 po zresetowaniu.

Krok 3: Zamknięcie i lista rzeczy do zrobienia

Lista zamknięcia i rzeczy do zrobienia
Lista zamknięcia i rzeczy do zrobienia
Lista zamknięcia i rzeczy do zrobienia
Lista zamknięcia i rzeczy do zrobienia
Lista zamknięcia i rzeczy do zrobienia
Lista zamknięcia i rzeczy do zrobienia

Chociaż stworzyłem tę skrzynkę z czujnikami środowiskowymi do serwerowni, możesz jej używać do laboratoriów chemicznych/elektronicznych, magazynów, zwykłych pomieszczeń i wszystkiego innego. I tak, ponieważ używa TCP/IP, jest to urządzenie IoT, G powinienem to również umieścić w tytule, aby uczynić go bardziej przedsiębiorczym:)

Możesz łatwo zmodyfikować zarówno sprzęt, jak i oprogramowanie, aby móc automatycznie włączać światła w pomieszczeniu. Spójrz na mój inny projekt: Shadow of phoenix, jak to działa dla kontroli światła, masz cały sprzęt pod ręką, aby zrobić to samo (używa zegarów wstrzymania, aby utrzymać światła tak długo, jak wykryto ruch w okres czasu, jeśli ponownie wystąpi ruch, licznik czasu zostanie podniesiony).

Z OrangePI działającym na pełnym stosie Armbian, możliwości są nieograniczone, możesz stworzyć lokalny interfejs sieciowy napisany od podstaw w php, aby wyświetlać historyczne dane na wykresach. Czy nie jest już lepiej, że masz całkowicie otwarte urządzenie monitorujące serwerownię, z czego możesz być dumny, jeśli tak myślisz, zbuduj to sam!

Zalecana: