Spisu treści:
- Krok 1: Rzeczy użyte w tym projekcie
- Krok 2: Historia
- Krok 3: Połączenie sprzętowe
- Krok 4: Programowanie oprogramowania
- Krok 5: Operacja
Wideo: Seeed IoTea LoRa Solution (aktualizacja 1811): 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Internet+ jest obecnie popularnym pojęciem. Tym razem wypróbowaliśmy Internet plus rolnictwo, aby z ogrodu herbacianego wyrosła Herbata Internetowa.
Krok 1: Rzeczy użyte w tym projekcie
Komponenty sprzętowe
- Grove - czujnik dwutlenku węgla (MH-Z16)
- Grove - cyfrowy czujnik światła
- Grove - czujnik kurzu (PPD42NS)
- Grove - czujnik tlenu (ME2-O2-Ф20)
- Czujnik wilgotności gleby i temperatury
- LoRa LoRaWAN Gateway - zestaw 868MHz z Raspberry Pi 3
- Grove - Czujnik temperatury i wilgotności oraz barometryczny (BME280)
Aplikacje i usługi online
Microsoft Visual Studio 2015
Krok 2: Historia
Na Górze Mengding na północny wschód od Ya'an w Syczuanie grzbiet górski biegnie z zachodu na wschód w morzu zieleni. Jest to najbardziej znany widok 36-letniego Denga, jednego z niewielu producentów herbaty Mengding swojego pokolenia, z plantacją o powierzchni 50mu (=3,3 hektara) położoną na wysokości 1100 m n.p.m. Deng pochodzi z rodziny producentów herbaty, ale kontynuacja rodzinnej spuścizny nie jest łatwym zadaniem. „Nasze herbaty są uprawiane na dużych wysokościach w ekologicznym środowisku, aby zapewnić ich doskonałą jakość. Ale jednocześnie gęstość wzrostu jest niska, koszt wysoki, a pączkowanie jest nierównomierne, co sprawia, że herbata jest trudna do zebrania. Dlatego herbatki wysokogórskie mają zwykle niewielkie zbiory, a ich wartość nie znajduje odzwierciedlenia na rynku”. Przez ostatnie dwa lata Deng starał się zwiększać świadomość konsumentów na temat herbat wysokogórskich, aby promować ich wartość. A kiedy spotkał Fana, który szukał plantacji do wdrożenia technologii IoTea firmy Seeed, znalazł idealne rozwiązanie.
Krok 3: Połączenie sprzętowe
Sprzęt tego projektu można podzielić na 4 części: zasilanie, czujniki, węzeł i bramę. Poniższy artykuł pokaże Ci, jak to zrobić krok po kroku.
Część mocy
Część zasilająca zawiera głównie panel słoneczny i baterię litową, jeśli zbudujesz ten projekt tylko do demonstracji, możesz je zignorować. Możesz też skorzystać z poprzedniego samouczka, aby zainstalować moc węzła.
Czujniki Część
W części z czujnikami, ze względu na dużą ilość czujników, zastosowaliśmy stację pogodową, a także wykonaliśmy uchwyt akrylowy do ich montażu.
Jak widać na powyższym obrazku, cyfrowy czujnik światła zawsze znajduje się na górze, aby mógł zbierać informacje o oświetleniu. Czujniki, które będą generować ciepło, są zainstalowane w środku wspornika akrylowego, takie jak czujnik O2, czujnik kurzu i czujnik CO2. W końcu czujnik temperatury i wilgotności na spodzie wspornika akrylowego.
Poza tym czujnik temperatury i wilgotności gleby jest instalowany samodzielnie w glebie. Część węzła
Node Part to Seeeduino LoRaWan, który jest zainstalowany w wodoodpornym pudełku, łączy się z zasilaniem i czujnikami za pomocą złączek wodnych. Wśród nich czujnik kurzu podłącz do cyfrowego styku D3 LoRaWan, czujnik CO2 do styków D4 i D5, czujnik gleby do styków D6 i D7, czujnik O2 do styku analogowego A1, a czujnik światła i czujnik barometru do portu I2C.
UWAGA: Rezystor 10k powinien być dodany pomiędzy niebieski przewód czujnika gleby (dane) a czerwony przewód (Vcc).
Seeeduino LoRaWan co jakiś czas zbiera wartości czujników i wysyła je do Gateway za pośrednictwem LoRa. Format danych jak poniżej:
{
[0], /* Temperatura powietrza (℃) */ [1], /* Wilgotność powietrza (%) */ [2], /* Wysokość (m) wysoki bajt */ [3], /* Wysokość (m) niski bajt */ [4], /* stężenie CO2 (PPM) wysoki bajt */ [5], /* stężenie CO2 (PPM) niski bajt */ [6], /* stężenie pyłu (szt/0.01cf) wysoki bajt */ [7], /* Stężenie kurzu (szt/0,01cf) niski bajt */ [8], /* Natężenie światła (lux) wysoki bajt */ [9], /* Natężenie światła (lux) niski bajt */ [10], /* Stężenie O2 (%) */ [11], /* Temperatura gleby (℃) */ [12], /* Wilgotność gleby (%) */ [13], /* Napięcie akumulatora (V) */ [14] /* Kod błędu czujnika */ }
Każdy bit w bajcie Sensor Error Code ma inne znaczenie, tak jak poniżej:
{
bit0: 1; /* Błąd czujnika barometru */ bit1: 1; /* Błąd czujnika CO2 */ bit2: 1; /* Błąd czujnika kurzu */ bit3: 1; /* Błąd czujnika światła */ bit4: 1; /* Błąd czujnika O2 */ bit5: 1; /* Błąd czujnika gleby */ zarezerwowane: 2; /* Skryty */ }
Część bramy
Gateway Part to Raspberry Pi, który podłączył moduł Gateway RHF0M301–868 i mostek PRI 2 RHF4T002, jest zainstalowany w wodoodpornym pudełku i podłączany do zasilania i kamery USB przez złącza wodne. Ponieważ używa specjalistycznego oprogramowania, postępuj zgodnie z Seeed Wiki, aby go skonfigurować.
Krok 4: Programowanie oprogramowania
Jako połączenie sprzętowe, programowanie oprogramowania można również podzielić na 3 części: węzeł, bramę i witrynę internetową.
Część węzła
Większość sterowników wymaganych przez Node Part znajduje się już w folderze origin_driver. Poniższe biblioteki należy zainstalować ręcznie:
Adafruit_ASFcore
Ponieważ projekt jest skomplikowany, zalecamy korzystanie z Microsoft Visual Studio zamiast Arduino IDE. Wtyczka o nazwie Visual Micro może pomóc w tworzeniu projektu Arduino za pomocą Visual Studio. Kliknij tutaj, aby uzyskać więcej informacji.
Dla lepszej czytelności i łatwości konserwacji, tym razem używamy programowania obiektowego. Diagram klas tego projektu wygląda jak poniżej:
W przypadku tych czujników, które mają już sterownik OOP, przepakowaliśmy go, aby dostosować ten projekt, w przypadku innych przepisaliśmy ich sterowniki za pomocą OOP. Klasa Sensor w warstwie oprogramowania pośredniczącego służy do ujednolicenia interfejsów rzeczywistych czujników, na przykład czujnik barometryczny może jednocześnie zbierać temperaturę, wilgotność i wysokość, dzięki czemu ma 3 interfejsy do pomiaru temperatury, wilgotności i wysokości. Ale mają nazwę metody różnicy, która sprawi, że program pozyskiwania wartości czujników będzie bardziej skomplikowany, tak jak to:
barometr->getTemperature();
barometr->getHumidity(); barometr->getAltitude(); // … inny_czujnik->getSomeValue(); // …
Ale używając OOP wygląda to tak:
for (auto i = 0; i getValue();
}
Spakowaliśmy również klasę Application, implementuje ona interfejs IApplication, metody setup() i loop() w IoTea.ino mogą wywołać metodę setup() i loop() w obiekcie Application.
UWAGA: Port szeregowy USB służy TYLKO do debugowania. Po debugowaniu proszę skomentować jego inicjalizację kodu w metodzie setup().
Część bramy
Program Python Gateway Part w folderze domowym służy do robienia zdjęć i przesyłania ich do serwera Amazon S3 co godzinę. Zanim go użyjesz, upewnij się, że fswebcam jest już zainstalowany w twoim Raspberry Pi:
sudo apt-get aktualizacja i sudo apt-get zainstaluj fswebcam
Jeśli chcesz przesłać zdjęcia, skonfiguruj swój AWS, wykonując następujące czynności. Najpierw zainstaluj AWS SDK i AWS CLI na swoim Raspberry Pi, używając tych poleceń:
sudo pip zainstaluj boto3
sudo pip zainstalować awscli
a następnie uruchom AWS CLI:
konfiguracja sudo aws
Skonfiguruj identyfikator klucza dostępu AWS, tajny identyfikator dostępu AWS i nazwę regionu domyślnego.
Jeśli nie chcesz przesyłać zdjęć, możesz pominąć kroki konfiguracji AWS i kody komentarzy dotyczące przesyłania w photo.py. Aby uruchomić ten program po każdym uruchomieniu Raspberry Pi, możesz utworzyć zdjęcie nazwy pliku w /etc/init.d i napisać do niego następujący kod.
#!/kosz/bash
# /etc/init.d/photo ### BEGIN INIT INFO # Zapewnia: seeed_photo # Wymagane-Start: $remote_fs $syslog # Wymagane-Stop: $remote_fs $syslog # Domyślne-Start: 2 3 4 5 # Domyślne-Stop: 0 1 6 # Krótki opis: initscript robienia zdjęć # Opis: Ta usługa służy do zarządzania robieniem zdjęć ### END INIT INFO case "$1" in start) echo "Rozpocznij robienie zdjęć" /home/rxhf/photo.py &;; stop) echo "Przestań robić zdjęcie" kill $(ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{ print $2 }');; *) echo "Użycie: usługa zdjęcie start|stop" exit 1;; esac wyjście 0
ustaw uprawnienia do wykonywania
sudo chmod 777 /etc/init.d/photo
sudo chmod 777 /home/rxhf/photo.py
i przetestuj to
sudo /etc/init.d/start zdjęcia
Jeśli nie ma problemu, zatrzymaj go i dodaj do aplikacji startowej
sudo /etc/init.d/zatrzymanie zdjęć
sudo update-rc.d domyślne ustawienia zdjęć
UWAGA: Jeśli chcesz uruchomić bramę po uruchomieniu Raspberry Pi, dodaj kody startowe bramy w Seeed Wiki do /etc/rc.local, niech wygląda tak:
#!/bin/sh -e
# # rc.local # # Ten skrypt jest wykonywany na końcu każdego poziomu pracy z wieloma użytkownikami. # Upewnij się, że skrypt "wyjdzie z 0" w przypadku powodzenia lub dowolnej innej wartości w przypadku błędu. # # Aby włączyć lub wyłączyć ten skrypt po prostu zmień wykonanie # bitów. # # Domyślnie ten skrypt nic nie robi. # Wydrukuj adres IP _IP=$(nazwa hosta -I) || prawda, jeśli ["$_IP"]; then printf "Mój adres IP to %s\n" "$_IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -risinghf-r… -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io wyjście 0
Strona internetowa
Wdrożyliśmy witrynę na CentOS 7. Poniższe kroki pokażą Ci, jak wdrożyć.
Krok 1. Zainstaluj Python3
sudo mniam -y zainstaluj epel-release
sudo mniam -y zainstaluj python36
Krok 2. Zainstaluj pip Pythona i środowisko wirtualne
wget
sudo python36 get-pip.py sudo pip zainstaluj virtualenv
Setp 3. Sklonuj naszą witrynę z GitHub
sudo mniam -y zainstaluj git
klon git
Krok 4. Utwórz i aktywuj środowisko wirtualne
virtualenv -p python36 iotea-hb
cd iotea-hb bin/aktywacja źródła
Krok 5. Zainstaluj zależne biblioteki
pip zainstaluj pymysql
pip install dbutils pip install flask pip install websocket-client pip install cofigparser
Krok 6. Utwórz bazę danych
sudo mniam -y zainstaluj mariadb mariabd-server
sudo systemctl włącz mariadb sudo systemctl start mariadb mysql -uroot -p
a następnie użyj iotea_hb.sql, aby utworzyć tabelę.
Krok 7. Utwórz db.ini i zapisz do niego te kody
[db]
db_port = 3306 db_user = root db_host = localhost db_pass = nazwa_db = iotea
zmień ścieżkę db.ini w db.py
# w db.py
#cf.read("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read("/home//iotea-hb/db.ini")
Krok 8. Zmień port w app.py i uruchom stronę:
# w app.py
#app.run(debug=True, port=6000) app.run(debug=True, port=8080)
# w terminalu
pip zainstaluj gunicorn gunicorn -w 5 -b 0.0.0.0:8080 aplikacja:app
teraz odwiedź 127.0.0.1:8080 w przeglądarce internetowej, możesz zobaczyć stronę internetową, ale dane w czasie rzeczywistym nie są wyświetlane.
Krok 9. Uzyskaj dane Loriota
Otwórz inny terminal, ponownie wejdź do wirtualnego środowiska i uruchom aplikację Loriot:
cd iotea-hb
kosz źródłowy/aktywacja gunicorn loriot: aplikacja
Poczekaj chwilę, zobaczysz dane wyświetlane na stronie lub możesz zmienić wss w loriot.py:
# w loriot.py
#ws = create_connection("wss://cn1.loriot.io/app?token=vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w==")
ws = utwórz_połączenie()
Krok 5: Operacja
Możesz odwiedzić nasze strony internetowe, aby wyświetlić dane w czasie rzeczywistym:
- w Ya'an
- Do demonstracji
Zalecana:
(AKTUALIZACJA - MAŁY PROBLEM) KONTROLER GIER USB DO KOMPUTERA PC: 10 kroków (ze zdjęciami)
(AKTUALIZACJA - MAŁY PROBLEM) KONTROLER DO GIER USB DO KOMPUTERA PC: KONTROLER DO KAŻDEJ GRY (PRAWIE)
Aktualizacja baterii Logitech G930: 5 kroków
Aktualizacja baterii Logitech G930: Krótki przewodnik dotyczący aktualizacji baterii bezprzewodowego zestawu słuchawkowego logitech G930
Kontroluj urządzenia domowe przez LoRa - LoRa w automatyce domowej - Pilot LoRa: 8 kroków
Kontroluj urządzenia domowe przez LoRa | LoRa w automatyce domowej | LoRa Remote Control: Kontroluj i automatyzuj swoje urządzenia elektryczne z dużych odległości (kilometry) bez obecności Internetu. Jest to możliwe dzięki LoRa! Hej co tam u was? Akarsh tutaj z CETech. Ta płytka drukowana ma również wyświetlacz OLED i 3 przekaźniki, które
Seed LoRa IoTea Rozwiązanie: 5 kroków
Seeed LoRa IoTea Rozwiązanie: Automatyczny system zbierania informacji stosowany na plantacjach herbaty. Jest częścią inteligentnego zbierania informacji rolniczych
Seeed IoTea LoRa Solution (z Azure, Update 1812): 5 kroków
Seeed IoTea LoRa Solution (z Azure, Update 1812): Microsoft Azure to usługa w chmurze, która zapewnia większą i stabilniejszą moc obliczeniową. Tym razem próbowaliśmy przesłać do niego nasze dane IoTea