Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Drukowanie obudowy (opcjonalnie)
- Krok 2: Okablowanie
- Krok 3: Utwórz aplikację w sieci Things
- Krok 4: Podłączanie Arduino do sieci Things
- Krok 5: Interpretacja danych w sieci rzeczy
- Krok 6: Łączenie aplikacji z AWS
- Krok 7: Tworzenie lambda
- Krok 8: Tworzenie punktu końcowego API
- Krok 9: Połącz swoją roślinę z Social Plant Network
- Krok 10: Oprzyj się i poklep się po plecach
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
W naszym gabinecie jest kaktus, który nie cieszył się taką uwagą, na jaką zasługiwał. Ponieważ pracuję w firmie IT i chciałem poeksperymentować z LoRa, rozwiązaniami serverless i AWS, nazwałem naszego kaktusa Steeve i podłączyłem go do chmury. Możesz teraz monitorować Steeve'a z dowolnego miejsca na świecie, korzystając ze strony, którą dla niego stworzyłem: interfejsu WWW Steeve'a.
Kieszonkowe dzieci
1 kaktus / twoja ulubiona roślina
1 Arduino MKR WAN 1300 (sklep Arduino)
1 antena 868mHz/914mHz (w zależności od lokalizacji) (Amazon)
1 bramka LoRa, gdy nie jest w zasięgu jednej (Amazon)
2 baterie AA
1 czujnik TMP102 (Amazonka)
1 czujnik wilgotności gleby (Amazon)
Kable przewodzące (Amazon)
lutownica
Uchwyt baterii (Amazon)
Obudowa
opcjonalnie: drukarka 3D (jeśli możesz korzystać z drukarki 3d, nie potrzebujesz uchwytu na baterie ani etui)
Krok 1: Drukowanie obudowy (opcjonalnie)
Pobierz ten plik zip, rozpakuj go i wydrukuj pliki. Pliki są oznaczone potrzebną ilością towaru.
Zapraszam do dodania czegoś do pokrywki, tak jak ja.
Wydrukowałem je przy wysokości warstwy 0,2 mm i 15% wypełnienia.
Boxhook można przymocować za pomocą śrub m3.
Gdy pudełko jest wydrukowane, możesz użyć drutu, aby wykonać potrzebne połączenia na uchwycie baterii. Możesz użyć dostarczonego zdjęcia jako odniesienia.
Krok 2: Okablowanie
- Przed włączeniem arduino upewnij się, że antena jest podłączona, włączenie arduino bez anteny może spowodować uszkodzenie.
- Podłącz wszystko zgodnie z dostarczonym schematem elektrycznym.
- Jeśli lutujesz te przewody, upewnij się, że nie mostkujesz żadnych pinów na czujnikach lub arduino!
Krok 3: Utwórz aplikację w sieci Things
- Przejdź do https://www.thethingsnetwork.org/ i jeśli nie masz jeszcze konta, załóż je.
- Po założeniu konta i zalogowaniu się możesz przejść do konsoli (prawy górny róg, kliknij swoją nazwę użytkownika, a następnie na konsoli).
- Kliknij aplikacje.
- Po załadowaniu strony powinieneś być w stanie kliknąć „dodaj aplikację”.
- Wypełnij formularz i wybierz właściwy region na dole. Kliknij „dodaj aplikację”.
- Gratulacje, właśnie stworzyłeś aplikację w sieci Things. =D
Krok 4: Podłączanie Arduino do sieci Things
Aby zaprogramować arduino, radzę skorzystać z internetowego ide arduino, dzięki czemu ładowanie potrzebnej biblioteki jest bardzo łatwe.
- Otwórz swoją aplikację w sieci Things.
- Powinno być pole zatytułowane urządzenia, kliknij zarejestruj urządzenie.
- zobaczysz pole o nazwie Identyfikator urządzenia. to jest nazwa, którą chcesz nadać swojemu czujnikowi. Powinien być jeszcze jeden oznaczony jako Device EUI, jest to unikalny klucz, którego twój arduino używa do uwierzytelnienia się.
- Aby uzyskać ten klucz, musimy sflashować arduino konkretnym szkicem. Szkic można znaleźć tutaj. Ten szkic powinien działać i przez monitor szeregowy powinien wysłać eui. Skopiuj eui z monitora szeregowego do pola Device EUI w sieci Things.
- Kliknij zarejestruj się.
- Teraz zarejestrowaliśmy nasze arduino w chmurze. Czas zacząć wysyłać wiadomości.
- Powinieneś zostać przekierowany na stronę o nazwie Przegląd urządzeń. Tutaj możesz zobaczyć eui urządzenia, eui aplikacji i klucz aplikacji.
- Aby kontynuować, musimy sflashować ostateczny szkic do arduino. Szkic można znaleźć tutaj.
- Po otwarciu tego linku zobaczysz, że jest wiele kart. Otwórz zakładkę sekretów. Istnieją 2 klucze, które musisz przetworzyć z sieci Things do pliku tajnego.
- Po wypełnieniu tych kluczy możesz sflashować arduino. Rozpocznie wysyłanie danych do sieci rzeczy raz na godzinę.
-
Jeśli wszystko poszło dobrze, powinieneś zobaczyć komunikaty pojawiające się w zakładce Dane w sieci rzeczy po zresetowaniu arduino (jedyny przycisk na płycie).
- Jeśli w tym miejscu nie pojawiają się żadne dane, może to oznaczać, że nie znajdujesz się w zasięgu prawidłowej bramy LoRa. Możesz sprawdzić mapę ze wszystkimi dostępnymi bramkami na https://thethingsnetwork.org. Bramki jednokanałowe LoRa nie będą działać z zalecanym arduino.
- Jeśli nie znajdujesz się w zasięgu bramki, możesz połączyć swoją własną bramę z siecią Things. Te bramy zwykle mają dość dobre samouczki, jak je połączyć. Poszukaj zalecanej bramy na liście zaopatrzenia.
Krok 5: Interpretacja danych w sieci rzeczy
- Aby uzyskać użyteczne dane z wiadomości w sieci rzeczy, musimy zdekodować strumień bajtów.
- W sieci rzeczy przejdź do swojej aplikacji.
- Powinna istnieć zakładka o nazwie „Formaty ładunku”, kliknij tę zakładkę.
- Obok siebie znajdują się 4 przyciski: „dekoder”, „konwerter”, „walidator”, „enkoder”.
- Kliknij na dekoder.
- Wklej tam następujący kod.
function Decoder(bytes, port) { // Dekoduj wiadomość uplink z bufora // (tablicy) bajtów do obiektu pól. var stringToDecode=bin2String(bajty); var res=stringToDecode.split(" "); var temp=res[1]; var moist= res[3]; var bat= res[5]; var dekodowane = {"temperatura":temp, "wilgotność":wilgotne, "bateria":bat}; zwrot dekodowany; } function bin2String(tablica) { var wynik = ""; for(var i = 0; i < array.length; ++i){ wynik+= (String.fromCharCode(array)); } zwróć wynik;}
- Kliknij Zapisz.
- Po zresetowaniu arduino i wyświetleniu karty danych powinieneś zobaczyć ładnie sformatowany obiekt json, który możesz łatwo odczytać.
Krok 6: Łączenie aplikacji z AWS
Będziemy używać AWS do przechowywania i wykorzystywania danych z sieci Things. Wszystkie zasoby, z których będziemy korzystać, są objęte bezpłatną warstwą AWS.
- Przejdź do AWS
- Zaloguj się lub utwórz konto.
- Aby połączyć swoją aplikację w sieci Things z AWS, polecam skorzystać z tego samouczka:
- Po ukończeniu tego samouczka przejdź w konsoli aws do segmentu IoT-Core.
- W lewym pasku menu znajduje się etykieta "Zarządzaj", kliknij to.
- Powinieneś teraz zobaczyć kartę z nazwą twojego czujnika.
- Ponownie w lewym pasku menu kliknij „Działaj”
- Jeśli jest karta oznaczona jako Sklep, dobrze jest iść.
- Jeśli nie, kliknij „Utwórz”.
- Wpisz nazwę „Sklep”.
- Możesz dodać opis, jeśli chcesz.
- Jako instrukcję zapytania wpisz następujący kod: SELECT dev_id, metadata.time, payload_fields.temperature, payload_fields.moisture, payload_fields.battery FROM 'cactus_network/devices/+/up'.
- W sekcji „Ustaw co najmniej jedną akcję” kliknij dodaj akcję.
- Wybierz „Podziel wiadomość na wiele kolumn tabeli DynamoDb (DynamoDBv2)”.
- Kliknij konfiguruj akcję
- Kliknij utwórz nowy zasób.
- Kliknij utwórz stół i nadaj swojej tabeli nazwę.
- Pod kluczem podstawowym wpisz „dev_id”.
- Kliknij dodaj klucz sortowania
- Wpisz „czas”.
- Kliknij Utwórz.
- Jeśli wszystko poszło dobrze, powinieneś wrócić na stronę konfiguracji akcji.
- W obszarze „Wybierz lub utwórz rolę, aby przyznać dostęp AWS IoT w celu wykonania tej akcji”, znajduje się nieco wyszarzony obszar.
- Kliknij Utwórz rolę i nadaj tej roli nazwę.
- Kliknij utwórz rolę.
- Kliknij dodaj akcję.
- Kliknij utwórz regułę.
- Powinieneś teraz mieć regułę, która automatycznie przechowuje wszystkie wiadomości przychodzące z sieci Things w DynamoDb.
- Możesz sprawdzić, czy to działa, resetując arduino i zajrzyj do właśnie utworzonej tabeli DynamoDb.
- Wiadomość powinna zawierać zapis.
Krok 7: Tworzenie lambda
Aby odczytać dane z DynamoDB, napiszemy lambdę AWS.
- W konsoli zarządzania AWS pod usługami znajduje się link oznaczony "Lambda", kliknij ten.
- Kliknij Utwórz funkcję.
- Wybierz nazwę.
- Ustaw środowisko uruchomieniowe na Pythona 3.7.
- Kliknij Utwórz funkcję.
- Wklej ten kod do zintegrowanego środowiska IDE.
importuj json
import boto3 import czas z datetime import datetime, timedelta z boto3.dynamodb.conditions import Key, Attr def lambda_handler(zdarzenie, kontekst): return retreive_data() def retreive_data(): # Pobierz zasób usługi. dynamodb = boto3.resource('dynamodb') table = dynamodb. Table('TUTAJ NAZWA TABELI') now = datetime.now() wczoraj = teraz - timedelta(hours=24) fe = Key('time').between(wczoraj.isoformat(), now.isoformat()) fed =Key('czas').lt(yesterday.isoformat()) response = table.scan(FilterExpression=fe) recordsToDelete=table.scan(FilterExpression=fed) for f in recordsToDelete['Items']: #print(f) table.delete_item(Key={'dev_id':f['dev_id'], 'time':f['time']}) data = response['Items '] zwróć dane
- Zmień nazwę tabeli na wybraną przez siebie.
- Przewiń w dół do roli wykonawczej.
- Kliknij utwórz nową rolę z szablonów zasad aws.
- Wybierz nazwę.
- W szablonach zasad wybierz „Uprawnienia do wiązki testowej” i „Uprawnienia prostego mikroserwisu”.
- Kliknij Zapisz.
- Kliknij test.
- Może pojawić się wyskakujące okienko, po prostu wybierz nazwę i zapisz.
- Kliknij test ponownie.
- U góry powinien znajdować się zielony baner z napisem „Wynik egzekucji: powiodło się”.
- Po kliknięciu tego banera powinieneś zobaczyć dane wyjściowe tej funkcji, powinna to być lista danych z czujników.
- Należy pamiętać, że ten skrypt usuwa wszystkie dane starsze niż 24 godziny.
- Jeśli twój baner nie jest zielony, ale czerwony, coś przeoczyłeś, a kliknięcie tego banera da ci pełny komunikat o błędzie. W tym przypadku google jest twoim najlepszym przyjacielem.
Krok 8: Tworzenie punktu końcowego API
- W konsoli zarządzania AWS pod usługami znajduje się link oznaczony "api-gateway", kliknij ten.
- Kliknij Utwórz interfejs API.
- Upewnij się, że wybrano „REST” i „Nowy interfejs API”.
- Wybierz nazwę dla swojego interfejsu API.
- Kliknij Utwórz interfejs API.
- Na ekranie powinien być teraz przycisk oznaczony akcjami, kliknij go.
- Następnie kliknij Utwórz zasób.
- Jako nazwę zasobu należy podać coś prostego, np. „roślina” lub „dane rośliny”.
- Kliknij Utwórz zasób.
- Po lewej stronie powinna być teraz wpisana nazwa. kliknij tę nazwę.
- Teraz kliknij ponownie akcje, a teraz kliknij dodaj metodę.
- Wybierz POBIERZ.
- Kliknij znacznik wyboru.
- Powinno tam być pole tekstowe o nazwie Funkcja Lambda.
- Wpisz tutaj nazwę, którą nadałeś funkcji lambda.
- Kliknij Zapisz.
- Może pojawić się wyskakujące okienko, które ostrzega, że tworzy dodatkowe uprawnienia.
- Zaakceptuj to wyskakujące okienko.
- Teraz pod akcjami kliknij włącz cors.
- Kliknij „włącz CORS i zastąp istniejące nagłówki CORS”.
- Kliknij „tak, …”.
- Kliknij ponownie akcje i kliknij Wdróż interfejs API.
- Na etapie wdrażania wybierz [Nowy etap].
- Wybierz nazwę.
- Kliknij Wdróż.
- Opublikowałeś swoje API online na całym świecie.
- Na ekranie, do którego dotarłeś, kliknij „POBIERZ” i właśnie utworzony zasób.
- Na górze powinien znajdować się link oznaczony „wywołaj adres URL”.
- Skopiuj ten link.
- Wklej go w przeglądarce i naciśnij Enter.
- Powinieneś zobaczyć dane znajdujące się w bazie danych.
Krok 9: Połącz swoją roślinę z Social Plant Network
- Przejdź do
- Kliknij "Zaloguj się".
- Kliknij Utwórz konto.
- Wypełnij formularz, aby utworzyć konto.
- Pamiętaj, że nazwa użytkownika musi być również Twoim adresem e-mail.
- Kliknij Utwórz konto.
- Być może będziesz musiał zweryfikować swój adres e-mail, zanim będziesz mógł kontynuować.
- Upewnij się, że jesteś zalogowany.
- Wróć do strony głównej (kliknij logo w lewym górnym rogu).
- Kliknij przycisk ustawień.
- Wypełnij formularz, powinieneś wypełnić wszystkie pola.
- Łącze do interfejsu API to łącze zapisane po utworzeniu punktu końcowego interfejsu API.
- Gdy wszystko zostanie wypełnione, kliknij przycisk Zapisz roślinę. system zweryfikuje teraz wprowadzony link api i jeśli jest poprawny, zapisze twoją instalację w sieci.
- Wróć na stronę główną.
- Możesz teraz kliknąć wszystkie rośliny, powinieneś być w stanie zobaczyć wszystkie zarejestrowane rośliny. twoja roślina również powinna tam być. kliknij kartę, a zostaniesz przeniesiony na stronę przeglądu swojego zakładu, a także wyświetli porady oparte na wartościach ustawionych w ustawieniach.
Krok 10: Oprzyj się i poklep się po plecach
Właśnie podłączyłeś zakład do internetu. Dość imponujące, prawda?