Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
HiFive1 to pierwsza kompatybilna z Arduino płytka oparta na RISC-V, zbudowana z procesorem FE310 firmy SiFive. Płyta jest około 20 razy szybsza niż Arduino UNO, ale podobnie jak płyta UNO, nie ma łączności bezprzewodowej.
Na szczęście na rynku dostępnych jest kilka niedrogich modułów, które łagodzą to ograniczenie. W tym samouczku użyłem ESP32 lub ESP8266 w celu uzyskania łączności bezprzewodowej. Pomimo tego, jak tani jest ESP-01, ze względu na konieczność zaprogramowania go szkicem Arduino, ESP-01 był mniej praktycznym rozwiązaniem. Aby zaprogramować ESP-01, potrzebuje zewnętrznego adaptera USB na ESP-01, którego nie miałem w czasie tworzenia tego samouczka. (Jeśli jesteś zainteresowany użyciem HiFive1 z ESP-01, skorzystaj z tego linku) Rozważałem również użycie Arduino Shield, ale skończyłem z ESP8266/32 ze względu na stosunkowo wysoką cenę, jaką ma większość tarcz.
Ten projekt skupi się na stworzeniu systemu wykrywania intruzów, który będzie działał poprzez wysyłanie powiadomienia do MQTT Broker za każdym razem, gdy czujnik ultradźwiękowy (SRF05) wykryje obiekt przekraczający jego linię wzroku.
Materiały potrzebne do tego projektu:
- Płyta HiFive1 (można kupić tutaj)
- Moduł deweloperski ESP32 lub NodeMCU ESP8266 1.0
- Rezystor 10k x 2
- rezystor 1k
- Deska do krojenia chleba
- kabel połączeniowy x 6
- Moduł ultradźwiękowy SRF05
- Urządzenie przenośne
Krok 1: Konfiguracja środowiska
Zainstaluj Arduino IDE
1. Postępuj zgodnie z instrukcjami, aby zainstalować pakiet Arduino płyty HiFive1 i sterownik USB.
2. Zainstaluj pakiet płyt ESP32 lub ESP8266 dodając odpowiedni adres URL do "Plik->Preferencje->Additional Boards Manager":
- ESP8266 -
- ESP32 -
Krok 2: Okablowanie ESP32
Jeśli używasz ESP8266, przejdź do kroku 3.
Ważne: SRF05 jest dostępny w 2 wersjach pinout, które są lustrzanymi wersjami siebie, upewnij się, że masz ten sam moduł co mój, korzystając z poniższego linku.
Aby uzyskać więcej informacji technicznych na temat SRF05, kliknij ten link.
GND (HiFive1) - > GND (SRF05)5v (HiFive1) - > VCC (SRF05) DI/O 11 (HiFive1) - > Styk wyzwalający (SRF05)DI/O 12 (HiFive1) - > Styk echa (SRF05)DI/ O 5 (HiFive1) -> Tx (ESP32) DI/O 6 (HiFive1) -> Rx (ESP32)
Uwaga: Upewnij się, że zworka IOREF jest ustawiona na 3,3v.
Krok 3: Okablowanie ESP8266
Ważne: SRF05 jest dostępny w 2 wersjach pinout, które są lustrzanymi wersjami siebie nawzajem, upewnij się, że masz ten sam moduł co mój, korzystając z poniższego linku.
Aby uzyskać więcej informacji technicznych na temat SRF05, kliknij ten link
GND (HiFive1) - > GND (SRF05)5v (HiFive1) - > VCC (SRF05)DI/O 11 (HiFive1) - > Styk wyzwalający (SRF05) DI/O 12 (HiFive1) - > Styk echa (SRF05) DI/ O 5 (HiFive1) -> Tx (ESP8266)DI/O6 (HiFive1) -> Rx (ESP8266)
Uwaga: Upewnij się, że zworka IOREF jest ustawiona na 3,3V.
Krok 4: Programowanie
Kod HiFive1:
Przed programowaniem ustaw "Tools->Board" na płytkę HiFive1, "Tools->CPU Clock Frequency" na "256MHz PLL", "Tools->Programmer" na "SiFive OpenOCD" i wybierz właściwy port szeregowy.
Będziesz także musiał pobrać tę bibliotekę Ultrasonic i ten PubSubClient i wyodrębnić je do folderu Arduino Libraries znajdującego się w "User->Documents->Arduino->Libraries".
ESP32/8266 Kod:
Podczas programowania płyta ESP powinna mieć odłączone sprzętowe styki Rx i Tx. Po pomyślnym przesłaniu kodu ponownie podłącz styki Rx i Tx na ESP, aby zapewnić komunikację między HiFive1 a ESP.
Dla ESP32 - Ustaw "Tools->Board" na "ESP32 Dev Module", "Tools->Programmer" na "AVRISP mkll" i wybierz odpowiedni port szeregowy.
Dla ESP8266 - Ustaw "Tools->Board" na "NodeMCU 1.0 (Moduł ESP-12E)", "Tools->Programmer" na "AVRISP mkll" i wybierz odpowiedni port szeregowy.
Kod szkicu został stąd zapożyczony z modyfikacjami, aby przekształcić go w system wykrywania intruzów.
Krok 5: Konfiguracja klienta
Użyłem brokera MQTT w chmurze (tego) i telefonu z Androidem z tą aplikacją.
Aby wszystko skonfigurować, musisz otworzyć konto.
Użyj dostarczonych zrzutów ekranu, aby przejść przez konfigurację CloudMQTT i aplikacji.
Krok 6: Wynik końcowy
Uwaga: Powinieneś ustawić szybkość transmisji monitora szeregowego na 115200, ponieważ jest to szybkość transmisji, której używamy w naszym szkicu.
Twój końcowy wynik powinien wyglądać podobnie do końcowych zrzutów ekranu