Inhoudsopgave:

4 projecten in 1 met DFRobot FireBeetle ESP32 & LED Matrix Cover - Ajarnpa
4 projecten in 1 met DFRobot FireBeetle ESP32 & LED Matrix Cover - Ajarnpa

Video: 4 projecten in 1 met DFRobot FireBeetle ESP32 & LED Matrix Cover - Ajarnpa

Video: 4 projecten in 1 met DFRobot FireBeetle ESP32 & LED Matrix Cover - Ajarnpa
Video: ESP32, более мощная чем любая другая Ардуино 2024, Juli-
Anonim
Image
Image
Installeer gemeenschappelijke bibliotheken voor de projecten
Installeer gemeenschappelijke bibliotheken voor de projecten

Ik dacht erover om voor elk van deze projecten een instructable te maken - maar uiteindelijk besloot ik dat het grootste verschil de software voor elk project is. Ik dacht dat het beter was om gewoon één grote instructable te maken!

De hardware is voor elk project hetzelfde en we gebruiken de Arduino IDE om het ESP32-apparaat te programmeren.

Dus wat is de hardware: alle hardware is geleverd door mijn vrienden bij DFRobot, ze hebben zeer goede tutorials en eenvoudig te installeren core boards hiervoor. Zorg ook voor een goed ondersteuningssysteem en een behoorlijk snelle verzending naar de VS.

Volledige openbaarmaking van het Firebeetle ESP32-bord en de LED-matrix zijn geleverd door DF Robot, de gepresenteerde projecten en in de video's zijn van mijzelf.

Deze projecten gebruiken allemaal een DFRobot FireBeetle ESP32 IOT MicroController

www.dfrobot.com/product-1590.html

De ondersteuningswiki - met instructies voor het installeren van de boardcore zijn hier te vinden:

www.dfrobot.com/wiki/index.php/FireBeetle_…

We hebben ook een FireBeetle Covers 24x8 LED Matrix nodig (BLAUW)

www.dfrobot.com/product-1595.html

Houd niet van BLAUWE leds - Ze hebben ook verschillende kleuren.

GROEN -

ROOD -

WIT -

GEEL -

Je hebt maar één LED Matrix nodig - de kleur is jouw keuze, ze werken allemaal hetzelfde.

LED Matrix-ondersteuningswiki is hier te vinden:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Hier vinden we een link naar de Arduino Library.

github.com/Chocho2017/FireBeetleLEDMatrix

Hierover later meer….

Iets dat optioneel is, maar misschien handig om te hebben, is een MicroUSB 3xAA-batterijhouder.

www.dfrobot.com/product-1130.html

Dus dat is de benodigde hardware - Wat zijn de 4 projecten -

Stap 1: De projecten

Image
Image

Project 1: Is een eenvoudige LED Matrix NTP-klok met militaire tijdweergave of AMPM-tijdweergave, Deze klok zal verbinding maken met een NTP (tijdserver) om de tijd te bepalen en een offset toe te passen zodat u de lokale tijd krijgt. Het zal de tijd weergeven op de LED Matrix. - Het is een heel eenvoudige klok en een heel eenvoudig 1e project.

Project 2: ISS Pass Prediction Display, dit project maakt gebruik van de 2e kern van de processor. Het toont hoe dichtbij (in mijlen) het ISS is, wanneer u de volgende ISS-pas op uw locatie kunt verwachten (in UTC-tijd) en optioneel hoeveel mensen zich in de ruimte bevinden. Omdat veel van deze informatie niet vaak verandert, gebruiken we de 2e kern om alleen te controleren op updates van de pasvoorspellingen, of hoeveel mensen er elke 15 minuten in de ruimte zijn. Op deze manier kunnen we te veel API calls naar de server voorkomen. Dit project is een beetje ingewikkelder, maar nog steeds vrij eenvoudig te doen.

Project 3: Een eenvoudig bewegend berichtbord met MQTT, ik heb een project opnieuw bekeken dat is gemaakt voor het ESP8266 D1-minibord, en het is 8x8 LED-matrix - Het idee is om verbinding te maken met een MQTT-makelaar, een bericht te sturen naar een onderwerp dat het apparaat is luisteren naar - en dat bericht weergeven. Het is vrij eenvoudig en heel eenvoudig te doen als alles eenmaal is ingesteld. En er zijn een paar stappen om de MQTT-clientsoftware op een desktopcomputer in te stellen. Eenmaal ingesteld is MQTT een zeer krachtig berichtenprotocol dat door veel IoT-apparaten wordt gebruikt om berichten te verzenden en ontvangen.

Project 4: Weerstationdisplay - gebaseerd op het ESP8266 D1 mini-weerstation van Squix78 en ThingPulse. We halen onze gegevens uit Wunderground en geven de huidige omstandigheden en de temperatuur in graden Fahrenheit weer. We gebruiken de 2e kern van de ESP32 om onze gegevens elke 10 minuten bij te werken. Het is ook eenvoudig in te stellen.

BOUNS MINI VOORBEELDEN: De bibliotheek (en schetsen hierboven) gebruiken een 8x4 lettertype, de bibliotheek bevat ook een 5x4 lettertype, dat ik voor de meeste van deze BOUNS minivoorbeelden heb gebruikt. Er zijn een paar problemen die ik kan opmerken met het kleine lettertype, een ervan lijkt problemen te veroorzaken wanneer je de WIFI van het apparaat gebruikt. Dit is iets wat ik meer wil ontdekken, maar ik heb er de tijd voor gehad. Het andere probleem is dat het niet scrollt, alleen het grotere lettertype kan scrollen. Dus geen van deze voorbeelden maakt gebruik van WIFI - ze werken alleen het scherm bij, en meer hierover volgt later.

Laten we beginnen…..

Stap 2: installeer de DFRobot FireBeetle ESP32-kaart in de Arduino IDE

Dus ik ga je verwijzen naar de DF Robot Wiki over het installeren van de bordkern voor de Arduino IDE.

Het is vrij eenvoudig te doen met de moderne IDE (1.8.x of beter).

www.dfrobot.com/wiki/index.php/FireBeetle_…

Ik ontdekte dat de WiFi-bibliotheek die in de Arduino IDE is ingebouwd, problemen veroorzaakt (PS elke andere WiFi-bibliotheek die in uw bibliotheekmap is geïnstalleerd, kan al dan niet problemen veroorzaken). De enige manier (of in ieder geval de gemakkelijkste manier) die ik heb gevonden om het probleem op te lossen, is door de WiFi-bibliotheek uit de IDE-directory te verwijderen. Helaas is er geen goede manier om u te vertellen waar het is geïnstalleerd - het hangt af van hoe de IDE is geïnstalleerd en van welk besturingssysteem u gebruikt.

Wat ik heb gedaan, is de WiFi-bibliotheek vinden die problemen veroorzaakt, en de map WiFi-directory naar uw bureaublad verplaatsen … en de IDE opnieuw opstarten. Op die manier kunt u de bibliotheek behouden voor het geval u deze nodig heeft voor de Arduino WIFI-borden.

90% van de problemen die ik heb gezien, waren gerelateerd aan het bovenstaande probleem. Als u veel compileerfouten krijgt, gerelateerd aan het gebruik van WiFi vanuit de Arduino IDE-directory of de Arduino Library-directory, is dit het probleem dat u heeft.

Mijn tweede probleem is dat de upload van de schets soms niet kan worden geüpload - in dat geval moet ik gewoon opnieuw op de uploadknop drukken en het werkt.

En tot slot, als je de seriële console open hebt staan en deze vervolgens sluit - bevriest de FireBeetle.

Ik weet dat DF Robot actief bezig is met de kern van het bord, en net in de korte tijd dat ik het bord heb, hebben ze een nieuwe kern uitgebracht. Helaas heeft het het wifi-probleem niet opgelost, wat mijn grootste probleem is.

* Espressif heeft een 'generieke' kernmanager die kan worden geïnstalleerd, de kern bevat wel het FireBeetle ESP32-bord, maar ik had een probleem met de nummering van de pinnen. Het interessante hier is dat de WiFi-bibliotheek werkt met de ingebouwde WiFi-bibliotheek - dus ik weet dat er een oplossing voor dat probleem om de hoek is.

Als je de Espressif-kernen wilt proberen, kun je hier meer informatie vinden:

github.com/espressif/arduino-esp32

Ik hou persoonlijk van hoe de DF-Robot-kern werkt, zelfs met de weinige problemen die ik heb.

** OPMERKING: ik gebruik LinuxMint 18, gebaseerd op Ubuntu 16.04, denk ik, ik heb dit op geen enkele andere machine geprobeerd, maar ik geloof dat het probleem aanwezig is voor alle besturingssystemen op basis van enkele zoekopdrachten op internet die ik heb gedaan. **

Stap 3: Installeer gemeenschappelijke bibliotheken voor de projecten

Installeer gemeenschappelijke bibliotheken voor de projecten
Installeer gemeenschappelijke bibliotheken voor de projecten

Al deze projecten gebruiken een paar algemene bibliotheken, dus het is nu gemakkelijker om deze stap uit te voeren.

Afhankelijk van de bibliotheek kunt u deze vinden in de bibliotheekmanager - wat verreweg de gemakkelijkste manier is om een bibliotheek te installeren.

Een andere veel voorkomende manier is om via een zip-bestand te installeren, wat ook goed werkt. Maar over het algemeen gebruik ik de handmatige installatiemethode. Er is een goede tutorial over de drie methoden op de Arduino-website.

www.arduino.cc/en/guide/bibliotheken

Voor deze bibliotheken raad ik de handmatige methode aan - omdat er een paar verschillende bibliotheken zijn met dezelfde naam, kan het zijn dat u met bibliotheekbeheer de verkeerde krijgt.

Al deze projecten gebruiken een WiFi Manager om het gemakkelijk te maken om verbinding te maken met je wifi - ik heb besloten dit te doen, dus als je je project moet verplaatsen, hoef je het bord niet opnieuw te programmeren. Dit is iets dat ik gebruik voor de ESP8266-borden, en het werkt goed - het is niet perfect. Geluk voor gebruik, de bibliotheek is geporteerd om de ESP32 te gebruiken door een github-gebruiker met de naam bbx10. (Deze manager zou ook moeten werken met de ESP8266-borden)

Ook hiervoor moeten we drie bibliotheken installeren.

De WiFiManager -

De webserver -

En tot slot de DNSServer -

Ook gemeenschappelijk voor alle schetsen is de DF Robot DFRobot_HT1632C-bibliotheek voor de LED-matrix.

www.dfrobot.com/wiki/index.php/FireBeetle_…

De bibliotheek is hier te vinden (Nogmaals, ik zou de handmatige installatiemethode aanbevelen)

github.com/Chocho2017/FireBeetleLEDMatrix

Een speciale opmerking: in mijn github-repository - ik heb een paar licht gewijzigde DFRobot_HT1632C-bibliotheken

github.com/kd8bxp/DFRobot-FireBeetle-ESP32…

De wijziging is voor een kleiner lettertype en wordt alleen gebruikt voor enkele van de bonusvoorbeelden. U kunt de gewijzigde bibliotheek gebruiken en dit zou geen problemen moeten opleveren. Er is ook een enigszins gewijzigde bibliotheek (die als tabbladen aan sommige schetsen is toegevoegd) die bitmapafbeeldingen kan maken.

Als u ervoor kiest om de licht gewijzigde versie te gebruiken, moet u de map "modified-library" hernoemen naar FireBeetleLEDMatrix en die map naar uw Arduino-bibliotheekmap verplaatsen. U hoeft deze versie niet voor deze projecten te gebruiken, deze is nodig als u enkele van de kleinere lettertypen uit de bonusvoorbeelden wilt proberen.

Dat zijn de algemene bibliotheken - we zullen voor elk project enkele specifieke bibliotheken installeren.

Laten we verder gaan met de LED-matrix….

Stap 4: De 24x8 LED Matrix Cover

De 24x8 LED-matrixafdekking
De 24x8 LED-matrixafdekking
De 24x8 LED-matrixafdekking
De 24x8 LED-matrixafdekking
De 24x8 LED-matrixafdekking
De 24x8 LED-matrixafdekking

Want we gaan mee met de DF Robot Tutorial voor de LED Matrix

www.dfrobot.com/wiki/index.php/FireBeetle_…

Introductie: Dit 24×8 LED Matrix-display is speciaal ontworpen voor de FireBeetle-serie. Het ondersteunt de modus voor laag stroomverbruik en de scroll-weergave. Met HT1632C hoogwaardige LED-driverchip heeft elke led een onafhankelijk register, waardoor het gemakkelijk is om afzonderlijk te rijden. Het integreert een 256KHz RC-klok, slechts 5uA in de energiebesparende modus, ondersteunt PWM-helderheidsaanpassing met 16 schalen. Dit product werkt ook met de andere Arduino micrcontroller zoals Arduino UNO.

Specificatie:

  • Bedrijfsspanning: 3,3 ~ 5VLED
  • Kleur: Enkele kleur (Wit/Blauw/Geel/Rood/Groen)
  • Drive-chip: HT1632C
  • Werkstroom: 6 ~ 100mA
  • Laag stroomverbruik: 5uARC
  • klok: 256KHz
  • Chip Select (CS): D2, D3, D4, D5 selecteerbaar
  • Ondersteuning Scrolling display:

Standaard pincodes:

  1. GEGEVENS6
  2. WRD7 (over het algemeen niet gebruikt)
  3. CSD2, D3, D4, D5 selecteerbaar (D2 standaard)
  4. RDD8
  5. VCC 5VUSB; 3.7VLipo-batterij

(Al deze projecten gebruiken D2 voor de select-pin, dit kan indien nodig eenvoudig worden gewijzigd.)

Op de achterkant van de LED Matrix zie je 4 kleine schakelaars, zorg ervoor dat je slechts één van de CS-pinnen selecteert. Met deze kleine schakelaars selecteert u uw CS-pin en de standaard is D2.

De DF Robot WIKI heeft wat voorbeeldcode, deze code staat ook in de voorbeelden voor de bibliotheek. (Ik geloof)

Nog een opmerking: gebruik de Dx-nummers voor uw pinnen - anders zijn de pinnummers de IO-pinnummers/-namen

En dat kan voor wat problemen zorgen.

Een punt instellen:

X is 0 tot 23 (of als je het als een spreadsheet beschouwt, zijn dit kolommen).

Y is 0 tot 7 (of als je het als een spreadsheet beschouwt, zijn dit rijen).

De bibliotheek biedt een instelpuntfunctie.

display.setPoint(x, y) dit zal de cursor op die locatie plaatsen, waar u nu een bericht kunt afdrukken.

display.print("Hallo wereld", 40); // hierdoor wordt op het scherm "Hello World" weergegeven, beginnend bij het x-, y-punt en van het scherm schuivend.

Er is ook een setPixel(x, y) en clrPixel(x, y) - setPixel zal één LED inschakelen op de x, y-locatie en clrPixel zal een LED uitschakelen op de x, y-locatie.

Er zijn nog enkele andere dingen die deze bibliotheek kan doen - en de meeste zijn opgenomen in de voorbeelden.

(Ik zou aanraden om de voorbeelden uit te voeren en aan te passen om te zien wat het kan doen).

* Een ding dat lijkt te ontbreken, is het tekenen van bitmaps - de bibliotheek kan dit wel, maar om de een of andere reden is het een privéfunctie van de bibliotheek. Bekijk enkele van mijn bonusvoorbeelden voor een licht gewijzigde versie van de bibliotheek

** Een ander ding is dat het een 5x4 lettertypeset bevat, wat leuk is om een kleiner lettertype te hebben - het staat in de bibliotheek hoe dan ook beschreven. Ik heb het commentaar verwijderd en het werkte, maar merkte een paar problemen op - het grootste dat het niet scrollt. En ik merkte dat het problemen lijkt te veroorzaken met de wifi of misschien met een andere bibliotheek die ik wilde gebruiken.

Een van de gewijzigde bibliotheken die ik bijvoeg, gebruikt echter wel het 5x4-lettertype.

Laten we verder gaan met de projecten…..

Stap 5: Project 1: een eenvoudige LED-matrix NTP-klok met militaire tijdweergave of AMPM-weergave

Project 1: een eenvoudige LED-matrix NTP-klok met militaire tijdweergave of AMPM-weergave
Project 1: een eenvoudige LED-matrix NTP-klok met militaire tijdweergave of AMPM-weergave
Project 1: een eenvoudige LED-matrix NTP-klok met militaire tijdweergave of AMPM-weergave
Project 1: een eenvoudige LED-matrix NTP-klok met militaire tijdweergave of AMPM-weergave
Project 1: een eenvoudige LED-matrix NTP-klok met militaire tijdweergave of AMPM-weergave
Project 1: een eenvoudige LED-matrix NTP-klok met militaire tijdweergave of AMPM-weergave

Project 1: Is een eenvoudige LED Matrix NTP-klok met militaire tijdweergave of AMPM-tijdweergave, Deze klok zal verbinding maken met een NTP (tijdserver) die de tijd opneemt en een verschuiving toepast zodat u de lokale tijd krijgt. Het zal de tijd weergeven op de LED Matrix. - Het is een heel eenvoudige klok en een heel eenvoudig 1e project.

Voordat we aan de slag gaan met dit eenvoudige project, is het misschien een goed idee om te weten wat NTP is -

NTP is een internetprotocol dat wordt gebruikt om klokken van computers te synchroniseren met een bepaalde tijdreferentie. Het is een standaardprotocol. NTP staat voor Network Time Protocol.

NTP gebruikt UTC als referentietijd (UTC is Universal Time Coordinated), het is voortgekomen uit GMT (Greenwich Mean Time), en in sommige kringen wordt het Zulu Time (militair) genoemd. UTC is gebaseerd op een kwantumresonantie van een cesiumatoom.

NTP is fouttolerant en zeer schaalbaar, het protocol is zeer nauwkeurig, met een resolutie van minder dan een nanoseconde.

*

De meeste mensen hebben niet veel aan een UTC-klok, dus we moeten onze klok aanpassen aan de lokale tijd. Gelukkig kunnen we dit vrij eenvoudig doen. Dus laten we aan de slag gaan met deze eenvoudige NTP-klok….

Ten eerste moeten we een bibliotheek installeren die het praten met de NTP-servers gemakkelijk maakt.

github.com/arduino-libraries/NTPClient (deze bibliotheek staat waarschijnlijk in de bibliotheekmanager)

Heb je stap 3 overgeslagen - en niet zeker hoe je bibliotheken moet installeren(?) Ga terug en lees stap 3:-)

U moet naar deze website gaan en de dichtstbijzijnde stad in uw tijdzone invoeren.

www.epochconverter.com/timezones

Wanneer u op enter drukt, ziet u "Conversieresultaten", en in de resultaten krijgt u uw offset (verschil met GMT/UTC) in seconden (voor mij is dat -14400)

In de dfrobot_firebeetle_led_matrix_ntp_clock schets op regel 66 zie je:

#define TIMEOFFSET -14400 //Vind hier uw tijdzone-offset https://www.epochconverter.com/timezones OFF Set in Seconds#define AMPM 1 //1 = AM PM-tijd, 0 = MILITARY/24 HR Time

vervang -14400 door uw offset. Op de volgende regel ziet u AMPM 1 - hierdoor zal de klok de tijd weergeven in AM / PM - als u het liever in 24 uur ziet, maakt u die een nul.

Upload vervolgens de schets naar je bord, maak verbinding met het toegangspunt (wifi-manager) en voer de details voor je wifi in. ALS je dit al hebt gedaan, zou je "verbonden" over het scherm moeten zien scrollen en een paar seconden later zou je de tijd moeten zien.

Dat is het voor dit project - eenvoudig en gemakkelijk te gebruiken …

(Mogelijke verbeteringen: geef de maand, dag en jaar weer, stel een zoemer en alarmen in - regel over het algemeen wat u ziet via een webpagina. Dit idee zou een grote herschrijving van de huidige eenvoudige schets vergen)

Klaar voor een ander eenvoudig project -- Toon waar het ISS is - Pass voorspellingen, en hoeveel mensen er in de ruimte zijn! (PS deze schets gebruikt wel een webpagina om te bepalen wat er wordt weergegeven) …..

Stap 6: Project 2: ISS Pass-voorspellingsweergave,

Project 2: ISS Pass-voorspellingsweergave,
Project 2: ISS Pass-voorspellingsweergave,
Project 2: ISS Pass-voorspellingsweergave,
Project 2: ISS Pass-voorspellingsweergave,
Project 2: ISS Pass-voorspellingsweergave,
Project 2: ISS Pass-voorspellingsweergave,

Project 2: ISS Pass Prediction Display, dit project maakt gebruik van de 2e kern van de processor. Het toont hoe dichtbij (in mijlen) het ISS is, wanneer u de volgende ISS-pas op uw locatie kunt verwachten (in UTC-tijd) en optioneel hoeveel mensen zich in de ruimte bevinden. Omdat veel van deze informatie niet vaak verandert, gebruiken we de 2e kern om alleen te controleren op updates van de pasvoorspellingen, of hoeveel mensen er elke 15 minuten in de ruimte zijn. Op deze manier kunnen we te veel API calls naar de server voorkomen. Dit project is een beetje ingewikkelder, maar nog steeds vrij eenvoudig te doen.

Dit project is gebaseerd op een van mijn eerdere projecten die hier te vinden zijn:

(Een eenvoudig ISS-meldingssysteem) Daarbij gebruikte ik een ESP8266 met een OLED-scherm aan boord (D-Duino). Voor het grootste deel gebruikt dit project gewoon een ander weergavesysteem, ik heb het uitgebreid zodat je kunt veranderen wat je wilt zien via een webpagina. Dus laten we beginnen….

Het grootste deel van het krediet voor gebruiksgemak gaat naar https://open-notify.org die een zeer eenvoudige en gemakkelijk te gebruiken API heeft. De open-notify API heeft drie dingen die kunnen worden weergegeven: de locatie van het ISS op breedte- en lengtegraad, voorspellingen doorgeven op basis van een bepaalde breedte- en lengtegraad. En tot slot hoeveel mensen (en hun namen) zich in de ruimte bevinden.

We zullen een andere bibliotheek moeten installeren - de ArduinoJson-bibliotheek.

github.com/bblanchon/ArduinoJson

We hebben ook TimeLib.h nodig, maar ik weet niet zeker waar ik die vandaan heb of dat het in de IDE is opgenomen (sorry) ….

Dus waarom voorspellen waar het ISS zal zijn - Het ISS bevat verschillende amateurradio-apparatuur, en wanneer het "boven het hoofd" is, kan een ham-radio-operator contact maken met het ISS met behulp van een aantal zeer eenvoudige (en goedkope) radio's. Ik heb het zelfs mobiel gedaan (rijdend in de auto). Je hebt echt niet veel nodig om dit te laten werken. Het enige dat je nodig hebt, is weten waar het is. En de antenne in zijn algemene richting richten helpt.

Regel 57, 58, 59 zijn enkele weergavevariabelen - als ze zijn ingesteld op 1 ziet u een weergave, als ze zijn ingesteld op 0 (nul), ziet u geen weergave. (Deze variabelen kunnen in de schets worden ingesteld of worden bijgewerkt vanaf een webpagina die de vuurkever maakt - daarover later meer).

int locDis = 1; //Geef locatie van ISSint pasDis = 0 weer; // Passvoorspellingen weergeven int pplDis = 1; //Toon mensen in de ruimte

dus locDis zal de locatie van het ISS in lengte- en breedtegraad weergeven - het geeft ook aan hoeveel mijlen het is verwijderd.

pasDis haalt de pasvoorspellingen op van open-notify.org en geeft ze weer.

en ten slotte zal pplDis de namen weergeven en hoeveel mensen er in de ruimte zijn - dit kan erg lang worden, dat doet het niet

verander ook vaak. (u kunt deze wijzigen of laten staan, dit is volledig optioneel)

We moeten ook onze lengte- en breedtegraad weten en in de schets zetten.

Dit hoeft geen exacte lengte/breedte te zijn, het kan het centrum van je stad zijn, of een klein stukje verder. De voetafdruk van het ISS is breed terwijl het boven het hoofd hangt, en honderden (of duizenden) kilometers kunnen worden afgelegd, dus een beetje op je lat / long zal geen dealbreaker zijn (meestal), communicatie over 500 mijl is vrij gebruikelijk.

Als u uw lengte- en breedtegraad niet weet, kan deze website u helpen.

www.latlong.net In de buurt van lijn 84 van de schets zie je zoiets als dit:

//Vind hier uw breedte- en lengtegraad//https://www.latlong.net/ float mylat = 39.360095; float mylon = -84.58558;

Dat zou alles moeten zijn wat veranderd moet worden. Upload de schets en verbind de Firebeetle met internet - en je zou moeten zien, de locatie van het ISS in lat/lang en hoeveel mijlen het is (onthoud dat dit een geschatte afstand is. Het ISS beweegt erg snel, en tegen de tijd dat het scherm klaar is, is het ISS vele kilometers verwijderd van waar het was). Je zou ook de mensen in de ruimte moeten zien. (ALS u de bovenstaande variabele niet hebt gewijzigd).

We gebruiken de tweede kern van de ESP32 om een website te draaien, het gebruik van de site geeft ons controle over wat wordt weergegeven op de LED-matrix. Het zou behoorlijk intuïtief moeten zijn over hoe het werkt, een sectie laat zien wat is ingeschakeld voor weergave, een andere sectie heeft "ja" "nee"-knoppen - op de "ja" geklikt betekent dat je het wilt zien, de "nee" betekent niet ' t laat het zien. Je zou ook moeten zien dat het bovenste gedeelte verandert op basis van de knoppen.

Het enige dat hier niet zo eenvoudig is, is hoe je het IP-adres van de Firebeetle kunt vinden - helaas kon ik geen goede manier bedenken om het te vinden - dus ik gebruikte gewoon de seriële console van de IDE om weer te geven het (9600 baud).

Open de console en u zou het IP-adres moeten zien. (open het voordat je het verbonden bericht krijgt) - mijn andere keuze was om het meteen bij het opstarten op de LED Matrix weer te geven - ik heb daartegen besloten omdat je misschien niet op de tijd kijkt en je het zult missen. Ik had overwogen om een sms te sturen, of zoiets, maar uiteindelijk houd ik het simpel. (Ik heb ook geprobeerd een statisch IP/gateway/etc. toe te wijzen, ik kon het niet goed laten werken met de wifi-manager - de code staat nog steeds in de schets, dus als iemand erachter komt, laat het me weten)

De schets gaat ook vooruit op FreeRTOS ingebouwd in de ESP32-kern - we hebben een taak die ongeveer elke 15 minuten wordt uitgevoerd, wat dit doet is de pasvoorspellingen bijwerken, evenals de mensen in de ruimte. Zoals ik eerder zei, veranderen mensen in de ruimte niet zo veel, dus dat kan waarschijnlijk worden verplaatst naar nog een andere taak en misschien eens in de 12 uur (of 6 uur) worden uitgevoerd - maar dit werkt, en het houdt de dingen simpel.

Voor degenen die niet weten dat FreeRTOS een manier is om een microcontroller met één kern meerdere taken uit te laten voeren

Normaal gesproken moet je wat bibliotheken en andere dingen toevoegen om het te laten werken - maar het is ingebouwd in de kern van de ESP32 - wat de ESP32 tot een zeer krachtig apparaat maakt. voor meer informatie over FreeRTOS

freertos.org/

VERBETERINGEN: er zijn een aantal dingen die verbeterd kunnen worden voor dit project, en bijna elke dag denk ik aan iets dat een beetje anders zou kunnen, of veranderd, of toegevoegd zou kunnen worden.

En in de map met meer voorbeelden van de repository kun je enkele van de eerdere/verschillende dingen zien waar ik aan dacht - sommige werkten niet, sommige zijn gewoon veranderd en sommige zijn opgenomen in de huidige schets.

* Op een gegeven moment probeerde ik een neopixel aan het scherm toe te voegen, zodat het een beetje meer zou lijken op mijn vorige project - ik kreeg het nooit helemaal goed werkend (ik vond het een stroomprobleem waar ik niet aan had gedacht) Ik ben werken aan een manier om dit idee te verbeteren *

Terwijl ik deze stap schreef, dacht ik, misschien kan ik een manier toevoegen om je lengte- en breedtegraad aan de website bij te werken - op die manier zou de schets nooit hoeven te worden gewijzigd - ik zal hier ook wat meer over nadenken.

Een verbeterde manier om het IP-adres te krijgen is iets anders dat ik zou willen doen (ik denk daar ook nog aan)

Laten we verder gaan met ons volgende project…..

Stap 7: Project 3: een eenvoudig bewegend berichtbord met MQTT

Project 3: een eenvoudig bewegend berichtbord met MQTT
Project 3: een eenvoudig bewegend berichtbord met MQTT
Project 3: een eenvoudig bewegend berichtbord met MQTT
Project 3: een eenvoudig bewegend berichtbord met MQTT
Project 3: een eenvoudig bewegend berichtbord met MQTT
Project 3: een eenvoudig bewegend berichtbord met MQTT

"laden = "lui" " laden = "lui"

Bonusdeel 2 - Afbeeldingen weergeven
Bonusdeel 2 - Afbeeldingen weergeven
Bonusdeel 2 - Afbeeldingen weergeven
Bonusdeel 2 - Afbeeldingen weergeven
Bonusdeel 2 - Afbeeldingen weergeven
Bonusdeel 2 - Afbeeldingen weergeven

Dus het blijkt dat de bibliotheek afbeeldingen kan weergeven - om de een of andere reden lijkt die functie "privé" te zijn - nou, voor deze volgende schetsen heb ik de bibliotheek opnieuw aangepast en van drawImage een openbare functie gemaakt.

Deze keer heb ik de gewijzigde bibliotheek in de map met schetsen geplaatst, zodat je de bibliotheek niet opnieuw hoeft te installeren, de schets kijkt eerst naar zichzelf, dan zal hij in de bibliotheekmap kijken, dus we zijn goed!

*** Ik ben van plan deze wijziging in te dienen bij DFRobot, want het is echt heel gaaf en best leuk om dit soort schetsen te kunnen maken ***

Schets van LED-matrixafbeeldingen, hier probeerde ik eerst te achterhalen wat de bibliotheek wilde en wat wel en niet zou werken - met wisselend succes. Ik ontdekte dat de 8x8-afbeeldingen het beste werken, maar je kunt anderen ook aan het werk krijgen. Ik vond ook een paar online led-matrixeditors, sommige werken beter dan andere.

xantorohara.github.io/led-matrix-editor/ - lijkt goed te werken, maakt 8x8-afbeeldingen en je wilt ze als byte-arrays.

www.riyas.org/2013/12/online-led-matrix-fo… deze werkt goed, en heeft de mogelijkheid om grotere dan 8x8 schermen te maken, het scherm lijkt op zijn kant te staan met dit scherm echter. Byte-arrays lijken hier het beste te werken. Ik heb het gebruikt om de "space invaders" te maken die in de video hierboven te zien zijn.

Dus hoe werkt dit, drawImage (const byte * img, uint8_t width_t, uint8_t height_t, int8_t x, int8_t y, int img_offset);

afbeelding byte array variabele, de breedte van de afbeelding (8), de hoogte van de afbeelding (8), de startpositie op het scherm x (0), y (0) meestal, en een offset nummer, wat ik niet ben 100% zeker wat het doet, dus meestal liet ik het op nul staan.

In de schets LED-matrixafbeeldingen - er zijn 8 verschillende byte-arrays - met ook drie verschillende methoden.

- vuurwerk zijn de eerste arrays, eerlijk gezegd weet ik niet zeker hoe deze werkt - maar het werkt wel.

vervolgens is er een mond - dit werkt niet echt goed, de mond legt de verkeerde kant op voor een, en proberen om veranderingen aan te brengen, maakt het alleen maar erger. (leren wat werkt en wat niet is het halve plezier)

Gevolgd door de eerste marioImg - dit is te groot voor het scherm, en ik denk dat dit is waar de offset in het spel komt - ik heb het hier gebruikt en je kunt de voorkant van Mario zien, als je de offset naar 1 verandert Ik zal de achterkant van hem zien. (ik kan je niet echt vertellen waarom of wat de offset doet. Het lijkt het beeld te verschuiven, maar waarom 2 verschuift het zodat je de voorkant van hem kunt zien en waarom 1 de andere richting verschuift kan ik je niet vertellen)

AFBEELDINGEN - byte-array is een @-teken dat ik heb gemaakt - het lijkt op wat ik heb gemaakt met de tool op

pic1 byte-array lijkt ook op wat ik probeerde te maken, alleen is het kleiner dan ik probeerde - wat het is kan ik niet zeggen, maar in het algemeen kan ik zeggen dat het lijkt op wat ik aan het doen was in de editor.

mario2Img - dit is mijn eigen versie van de grotere Mario gemaakt voor een 8x8-schermformaat - en als je daar een of twee pixels misplaatst (mijn fout, niet de schermen), ziet het eruit als een kleine Mario (soort).

invader1 en invader2 - beide mijn idee voor een space invader. ze zijn best goed gelukt, en door de afbeeldingen op elkaar te leggen, kan ik het effect van bewegende voeten creëren.

Er zijn twee vuurwerkschetsen in de map, elk is een beetje anders en het proberen waard.

De ene laat het vuurwerk over het scherm bewegen, dus een beetje meer/andere animatie… de andere laat twee vuurwerk tegelijkertijd zien

Er zijn ook drie schetsen van "indringers", elk is een beetje anders, één laat de indringer over het scherm bewegen, en je kunt kijken hoe ik dat deed - (er zijn misschien betere manieren om het te doen, ik weet het niet)

Nog meer: er zijn enkele schetsen in de testdirectory van de repository - de meeste werkten niet helemaal zoals ik wilde, of waren ideeën die ik wilde doen, maar werkten niet zoals ik wilde. Ik heb ze verlaten omdat iemand mijn ideeën heeft opgedaan * (ik heb wel een klein "schild" gemaakt met een WS2812-pixel erop voor gebruik met het ISS-scherm, maar ik heb het aangesloten op de 3v-lijn en had gewoon niet genoeg stroom met de LED-matrix ook aan, de pixel werkte prima, zonder de LED-matrix gij, dus er is nog steeds iets dat ik ermee kan doen)*

Er is ook een map met de naam "Meer voorbeelden" - dit zijn variaties op een aantal projectschetsen, of er is iets toegevoegd of verwijderd, of op de een of andere manier gewijzigd. Voor deze werken ze - ze zijn gewoon niet het laatste project. Dus ik heb ze weer achtergelaten, misschien haalt iemand er iets nuttigs uit. (Kan zijn)

Ik hoop dat je net zoveel van deze instructable hebt genoten als ik van het maken van deze projecten:-)

Stap 11: LINKS…

Dit project werd gesponsord en ondersteund door DF Robot. Gebruik de onderstaande links voor de producten:

Firebeetle ESP32 -

Firebeetle Cover 24x8 LED Matrix -

Mijn Code Repository:

Als je dit of een van mijn projecten nuttig of leuk vindt, steun me dan alsjeblieft. Alles wat ik krijg, gaat om meer onderdelen te kopen en meer/betere projecten te maken.

www.patreon.com/kd8bxp

NTPClient-bibliotheek

ArduinoJson.h

ESP8266 Weerbibliotheek

Json-Streaming-Parser-bibliotheek

Aanbevolen: