Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
W tym Blogtucie zamierzamy wysyłać odczyty czujnika SHT25 do arkuszy Google za pomocą Adafruit huzzah ESP8266, który pomaga przesyłać dane do Internetu.
- Wysyłanie danych do komórki arkusza google jest bardzo użytecznym i podstawowym sposobem, który pozwala na zapisanie danych w formie tabelarycznej online.
- Zamiast używać jakiegokolwiek specjalnego mostu, takiego jak pushing box lub MQTT NODE RED lub innego rodzaju REST API, będziemy przesyłać dane za pomocą skryptu Google, który z łatwością odbiera dane z czujnika za pomocą skryptu Link dostarczonego przez aplikacja skryptu google po opublikowaniu
- Możemy użyć skryptu do wysłania danych z arkusza google, dokumentów, a nawet na dysk google.
- Tylko nie kończ tutaj dalej, możesz połączyć arkusze google z dowolną aplikacją internetową, która udostępnia dane użytkownikom tak, jak chcieli
- W przeciwieństwie do innych serwerów online tutaj nie trzeba płacić żadnych dodatkowych opłat, a na koncie użytkownika można przechowywać maksymalnie 10 GB danych i można z nich korzystać
- Jednym z najlepszych starań jest łatwe nauczenie się łączenia danych z Internetem za pomocą tego rodzaju aplikacji działającej w czasie rzeczywistym.
- Zamierzamy użyć połączenia I2C, które wykonuje protokół master-slave, aby elastycznie udostępniać dane arkuszom Google.
- Platforma protokołu I2C łączy sprzęt czujnika i współpracuje z około 256 czujnikami jednocześnie, wykorzystując tylko 2 przewodowe podciąganie do przesyłania danych z czujnika w 8-bitowym sprzęcie
Krok 1: Sprzęt
Zestawy HUZZAH z piór Adafruit
Deska Huzzah z piór Adafruit
Zintegrowany Adafruit I2C i adapter USB
Czujnik temperatury i wilgotności SHT25
Kabel I2C
Krok 2: Jak działają rzeczy
Pobieranie odczytów danych z czujników w czasie rzeczywistym za pośrednictwem ESP8266 i wysyłanie danych do różnych platform Cloud jest bardzo proste.
Wykorzystamy bibliotekę Wire.h w Arduino IDE do stworzenia dwuprzewodowej komunikacji między płytą Adafruit Huzzah Board a modułem I2C czujnika SHT25 i kablem I2C.
Uwaga: Aby uniknąć skomplikowanej struktury okablowania, zamierzam użyć adaptera I2C do Adafruit Huzzah przeznaczonego do podłączenia czujnika I2C.
Aby nowicjusz mógł skonfigurować Esp8266, musisz przejść przez konfigurację ESP8266
Najpierw zainicjuj biblioteki:
- Biblioteka przewodów
- ESP8266WiFi
- WiFiClientSecure
Krok 3: Proces wykonywania modułu I2C w Arduino IDE
Po inicjalizacji bibliotek zdefiniujemy proces I2C, który ma być używany do pobierania odczytów czujnika, konwertowania ich i przesuwania danych 8-bitowych zgodnie z wymaganiami:
Zainicjuj rejestry w dwuprzewodowym protokole I2C dla modułu czujnika I2C
#define Addr 0x40
- Uruchom transmisję I2C i zainicjalizuj rejestry oraz poproś o 2 bajty danych, z których odczytamy dane z czujnika.
- Jeśli dostępne będą 2 bajty danych, odczytaj dane z czujnika i korzystając z poniższych wzorów przeliczamy żądane wartości
wilgotność pływakowa = (((dane[0] * 256,0 + dane[1]) * 125,0) / 65536.0) - 6;
float cTemp = (((dane[0] * 256,0 + dane[1]) * 175,72 / 65536.0) - 46,85;
pływak fTemp = (cTemp * 1,8) + 32;
Wydrukuj wartości na ekranie monitora szeregowego
Krok 4: Połączenie ESP8266 z Wi-Fi i arkuszem kalkulacyjnym Google
Po wykonaniu modułów I2C dowiemy się, jak pobierać dane i wykorzystywać biblioteki WiFi i identyfikator hosta oraz klucze API do wysyłania danych do arkuszy Google.
- Zdefiniuj poświadczenia Wi-Fi globalnie w ESP8266, co pomoże nam połączyć tablicę z Internetem
- Ponieważ zamierzamy używać klienta HTTP i będziemy definiować protokół HTTPS = 443 do zabezpieczenia ścieżki HTTP, ponieważ skrypt będzie działał tylko w bezpiecznej ścieżce.
- Zainicjuj dane hosta w kodzie
const char* host = "script.google.com";
const int httpsPort = 443;
String SCRIPT_ID = "wspomnij o identyfikatorze skryptu wymienionym w snapach";
Uwaga: identyfikator skryptu jest wymieniony w „adresie URL aplikacji internetowych”, podczas gdy kod Gscript zostanie opublikowany, wystarczy skopiować i wkleić identyfikator wymieniony poniżej i zainicjować w powyższych poleceniach
- Używając również volatile ze zmienną, zamierzamy zainicjować zmienną globalnie, która pobiera dane z modułu I2C i wysyła je do skryptu URL, który dalej prześle dane do miejsca docelowego.
- Korzystając z biblioteki WiFi ESP8266 będziemy mogli połączyć płytkę z internetem
- Dane czujnika będą hostowane na lokalnym serwerze co 5 sekund.
- Za pomocą skryptu URL dane będą hostowane w skrypcie google publikowany link Aktywna strona po każdych 15 sekundach.
Krok 5: Zautomatyzuj Arkusz Google za pomocą Edytora GScript
Ponieważ wszyscy mamy konto google, aby zalogować się do arkusza google za pomocą swojego konta
- Podaj wartości, które musisz uzyskać z czujnika połączonego z ESP8266
- Przejdź do Narzędzia>Edytor skryptów
- Użyj funkcji „Doget”, aby otrzymywać zdarzenia
- W funkcji „Doget”, aby zainicjować klucz API arkusza kalkulacyjnego, a także podłączyć Aktywny arkusz, do którego chcesz przesłać wartości czujnika
- Za pomocą funkcji automatyzacji, o której mowa w kodzie, do łatwego przedstawiania danych w wierszach i kolumnach.
- Na koniec zapisz dane i kliknij „Opublikuj”>> Kliknij „Wdróż jako aplikacje internetowe”
- Upewnij się, że za każdym razem, gdy nastąpią jakiekolwiek zmiany, wybierz „wersję projektu” >> „Nowa”>> naciśnij „aktualizacja”
Aktualny adres URL aplikacji internetowej będzie wyglądał jak poniżej:
script.google.com/macros/s/”Identyfikator GScript”/exec:
dalej używany w kodzie ESP8266 do pobierania danych z czujników;
Połączenia hostingoweZamierzamy użyć żądania HTTPS Get, aby połączyć dane z identyfikatorem hosta wymienionym w edytorze gscript, gdzie zakodowaliśmy nasze dane dalej, aby połączyć się z arkuszem google.
funkcja doGet(e) { Logger.log(JSON.stringify(e)); // wyświetl parametry var wynik = 'Ok'; // zakładamy sukces if (e.parameter == 'undefined') { result = 'Brak parametrów'; } else { var id_arkusza = ''; // Identyfikator arkusza kalkulacyjnego var sheet = SpreadsheetApp.openById(sheet_id).getActiveSheet(); var nowyWier = arkusz.getLastRow() + 1; var danych wierszy = ; } Logger.log(JSON.stringify(rowData)); // Zapisz nowy wiersz poniżej var newRange = sheet.getRange(newRow, 1, 1, rowData.length); newRange.setValues([rowData]); }
Krok 6: Ograniczenia:
- Ten projekt ogranicza się tylko do przechowywania danych czujnika I2C w arkuszach google
- Używamy żądania HTTPS GET, aby otrzymać wartości za pomocą funkcji I2C
- Musimy zmienić wartość w formacie string, a następnie przesłać dane do linku URL gscript.
Krok 7: Kod, kredyty, referencje
Kod Github:
github.com/varul29/SHT25_GoogleSheets_Goog…
Referencja
Kod I2C:
Samouczek Google Script:
Wbudowany sklep:
Blog samouczka: