Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
HiFive1 er det første Arduino-kompatible RISC-V-baserte kortet bygget med FE310 CPU fra SiFive. Brettet er omtrent 20 ganger raskere enn Arduino UNO, men i likhet med UNO -kortet mangler det noen trådløs tilkobling.
Heldigvis finnes det flere rimelige moduler på markedet for å redusere denne begrensningen. I denne opplæringen brukte jeg en ESP32 eller en ESP8266 for å få trådløs tilkobling. Til tross for hvor billig ESP-01 er, på grunn av behovet for å programmere den med en Arduino-skisse, var ESP-01 en mindre praktisk løsning. For å programmere ESP-01 trenger den en ekstern USB til ESP-01-adapter som jeg ikke hadde da jeg laget denne opplæringen. (Hvis du er interessert i å bruke en HiFive1 med ESP-01, følg denne lenken) Jeg tenkte også på å bruke et Arduino Shield, men endte med å holde meg til ESP8266/32 på grunn av den relativt dyre prislappen de fleste skjold har.
Dette prosjektet vil fokusere på å lage et inntrengerdeteksjonssystem som vil fungere ved å sende et varsel til MQTT Broker hver gang ultralydsensoren (SRF05) oppdager et objekt som krysser siktlinjen.
Materialer som trengs for dette prosjektet:
- HiFive1 -kort (kan kjøpes her)
- ESP32 Dev Module eller ESP8266 NodeMCU 1.0
- 10k motstand x 2
- 1k motstand
- Brødbrett
- startkabel x 6
- SRF05 Ultralydsmodul
- Mobil enhet
Trinn 1: Sette opp miljøet
Installer Arduino IDE
1. Følg instruksjonene for å installere HiFive1 -kortet Arduino -pakken og USB -driveren.
2. Installer ESP32- eller ESP8266-kortpakken ved å legge til en passende URL til "File-> Preferences-> Additional Boards Manager":
- ESP8266 -
- ESP32 -
Trinn 2: Koble til ESP32
Gå til trinn 3 hvis du bruker en ESP8266.
Viktig: SRF05 kommer i 2 pinout -versjoner som er speilvendte versjoner av hverandre, sørg for at du har samme modul som min ved hjelp av lenken nedenfor.
For mer tekniske detaljer om SRF05, følg denne lenken.
GND (HiFive1) -> GND (SRF05) 5v (HiFive1) -> VCC (SRF05) DI/O 11 (HiFive1) -> Trigger Pin (SRF05) DI/O 12 (HiFive1) -> Echo Pin (SRF05) DI/ O 5 (HiFive1) -> Tx (ESP32) DI/O 6 (HiFive1) -> Rx (ESP32)
Merk: Sørg for at IOREF -jumperen er satt til 3.3v.
Trinn 3: Koble til ESP8266
Viktig: SRF05 kommer i 2 pinout -versjoner som er speilvendte versjoner av hverandre, sørg for at du har samme modul som min ved hjelp av lenken nedenfor.
For mer tekniske detaljer om SRF05, følg denne lenken
GND (HiFive1) -> GND (SRF05) 5v (HiFive1) -> VCC (SRF05) DI/O 11 (HiFive1) -> Trigger Pin (SRF05) DI/O 12 (HiFive1) -> Echo Pin (SRF05) DI/ O 5 (HiFive1) -> Tx (ESP8266) DI/O 6 (HiFive1) -> Rx (ESP8266)
Merk: Sørg for at IOREF -jumperen er satt til 3,3v.
Trinn 4: Programmering
HiFive1 -kode:
Før programmering, sett "Verktøy-> Kort" til HiFive1-kort, "Verktøy-> CPU-klokkefrekvens" til "256MHz PLL", "Verktøys-> Programmerer" til "SiFive OpenOCD" og riktig seriell port er valgt.
Du må også laste ned dette ultralydbiblioteket og denne PubSubClient og pakke dem ut i Arduino Libraries-mappen som du finner i "Bruker-> Dokumenter-> Arduino-> Biblioteker".
ESP32/8266 Kode:
Under programmeringen bør ESP -kortet ha maskinvare -Rx- og Tx -pinnene koblet fra. Etter at koden ble lastet opp, koble Rx- og Tx -pinnene på ESP for å sikre kommunikasjon mellom HiFive1 og ESP.
For ESP32-Sett "Tools-> Board" til "ESP32 Dev Module", "Tools-> Programmer" til "AVRISP mkll" og velg riktig seriell port.
For ESP8266-Sett "Tools-> Board" til "NodeMCU 1.0 (ESP-12E Module)", "Tools-> Programmer" til "AVRISP mkll" og velg riktig seriell port.
Skissekoden ble lånt herfra med modifikasjoner for å konvertere den til et inntrengerdeteksjonssystem.
Trinn 5: Konfigurere klienten
Jeg brukte en skybasert MQTT-megler (denne) og en Android-telefon med denne appen.
For å sette opp alt, må du åpne en konto.
Bruk de medfølgende skjermbildene for å komme deg gjennom konfigurasjonen av CloudMQTT og appen.
Trinn 6: Sluttresultat
Merk: Du bør sette seriell monitorens overføringshastighet til 115200, ettersom det er baudhastigheten vi bruker i skissen vår.
Det endelige resultatet skal se ut som det endelige skjermbildet