Sponsoreret link: Proshop - lynhurtig levering og let adgang til markedets største udvalg af elektronik til attraktive priser
I denne guide beskriver jeg hvordan jeg har designet, bygget og programmeret en kameravogn med panorering. Kameraet kan panorere og er kontrolleret af en ESP8266. Til at betjene kameraet har jeg oprettet en Blynk app. Her er en hurtig oversigt over, hvad denne guide indeholder:
Konstruktion af vognen
Bundplade
Jeg har anvendt en aluminium plade – 31 x 200 x 3 mm – som er købt i Bauhaus og skåret ud. Vægten stabiliserer vognen når den kører. Pladen er designet, så den passer i en vogn fra den Rullende Landevej / Rollende Landstraße fra Märklin.
Tandhjul
Jeg har brugt 3 tandhjul i alt, som jeg har købt hos Conrad. 2 stk på 31,5 mm og 1 stk på 21,5 mm. Derudover har jeg købt 4 mm aksler i Bauhaus. Faktisk er det pop-nitter der er skåret til. Lim en metalskive på det ene store tandhjul. Kameraet Cube+ har en magnet i bunden, der kan fastgøres her. Til andre typer af kameraer kan man anvende dobbeltklæbende tape.
Servomotor
Servoen skal kunne dreje 0 til 180 grader +/- 90 grader. Jeg har købt en mikro servomotor hos Elextra. Den monteres på en 31 x 44 x 2 mm plast plade eller en aluminiumplade. Skruerne er 3 mm skruer fra Bauhaus. Bøsningerne er plastikrør.
ESP8266
Jeg har købt et Node MCU ESP8266 WiFi-baseret microcontroller board hos Conrad til at forbinde Arduino’en til internettet.
Strømforsyning
Jeg har brugt et 9V batteri til strømforsyning. Her kan man overveje en anden løsning f.eks. en forsyning fra skinnen. Dog skal der transformeres ned til max 9v og tilføjes en tænd/sluk kontakt til batteriet.
Kamera
Jeg har anvendt et Polaroid Cube+ med WiFi. Desværre ser det ud til at produktet er udgået. Som alternativ til dette kamera kan man anvende et RunCam 5. Jeg har ikke selv prøvet kameraet, men det fremgår at kameraet kan optage i 4K og er specielt designet til optagelse fra FPV modeller. Dimensionerne til RunCam 5 er 38 x 38 x 36mm.
Forbind ESP8266 med servo og batteri
Servoen med dens 3 ledninger forbindes således:
- Gul – signal – D4
- Rød – 3v
- Sort – Ground (GND)
- Batteriet er forbundet til GND og VIN
Blynk app
Blynk appen til iOS og Android er den nemmeste måde at bygge din egen mobilapp, der fungerer med dit valg af hardware. Ingen iOS- eller Android kode erfaring er påkrævet. Der findes mange videoer på youtube der viser hvordan man arbejder med Blynk.
Importer en kopi af min Blynk app
Følg trin 1 til 5 for at importere en fuld funktionel kopi af min app. Når du har importeret min Blynk app kan du vælge at ændre i layout mm.
Trin 1
Installer Blynk appen på din mobil. Den er gratis.
Trin 2
Opret en konto
Trin 3
Importer et projekt. Tryk på QR knappen og scan koden.
Trin 4
Projektet ‘Kamerawaggon – basic’ burde nu være importeret til din Blynk app. Dette er basisprojektet med funktionalitet til at betjene servoen. Du kan ændre tekster og måske tilføje ekstra knapper, billeder mm. For at gøre dette skal du formentlig købe mere ”Energy” i appen. Jeg har købt for 59 DKK. Derefter kan du starte app projektet ved at klikke på ‘play’ ikonet og se hvordan den fungerer.
Trin 5
For at modtage et Blynk Token skal du gå til indstillinger. På denne side kan du se din Blynk-Token (den er er IKKE den samme som min). Tryk på E-mail knappen og du kan nu sende denne token til dig selv.
Her er den færdige app. Der er 5 knapper med pile og 2 horisontale sliders. De andre elementer er tekster og billeder, som evt. kan undværes.
Hver slider og knap har en virtual pin.
- V0 – vælg vinkel slider
- V1 – vælg hastighed slider
- V2 – 0 grader
- V3 – 45 grader
- V4 – 90 grader
- V5 – 135 grader
- V6 – 180 grader
Detaljer for vælg vinkel slider: Værdierne er mellem 0 og 180 (grader).
Detalje for vælg hastighed slider: Værdierne går fra 20 til 1. Hastigheden er implementeret som en forsinkelse i millisekunder mellem hver ændring fra én grad til en anden. Eksempelvis gå fra 45 til 90 grader. I koden loopes fra 45 til 90 (45 steps). I hvert step er der indbygget en forsinkelse fra 1 til 20 millisekunder. Så jo højere forsinkelse, jo langsommere kører den.
Kodning af ESP8266
Kodning af Node MCU bliver gjort i Arduino miljøet. Først skal man downloade og konfigurere Arduino IDE og derefter kompilere koden og sende dette til ESP8266. Start evt. med at se denne video tutorial. Følg anvisningen herunder i 14 trin for at kode Node MCU.
Trin 1
Download og installér Arduino IDE til pc eller mac.
Trin 2
Start programmet Arduino IDE.
Trin 3
Forbind ESP8266 til din PC/mac med USB-kabel.
Trin 4
Tjek hvilken port (COM og LPT) som ESP8266 anvender. Dette gøres ved at åbne enhedshåndtering. I dette eksempel er porten COM3.
Vælg nu porten I Arduino programmet. Gå til ‘Værktøjer’ -> ‘Port’ -> vælg porten COM3. Kan hedde noget andet i dit setup.
Trin 5
Opret en ny sketch fra Arduino IDE.
Trin 6
Installér ESP8266 package til Arduino. Gå til ‘Fil’ -> Vælg ‘Egenskaber’ -> Under ‘Settings’ ved feltet ‘Additional boards Manager URL’ indsættes følgende url: http://arduino.esp8266.com/stable/package_esp8266com_index.json.
Trin 7
Gå nu til ‘Værktøjer’ -> ‘Board’ -> Vælg ‘Board manager’ -> Søg efter ‘esp8266’ by ESP8266 Community. Tryk derefter på ‘Install’ knappen.
Trin 8
Vælg NodeMCU 1.0 board som vist herunder.
Trin 9
På samme måde som i trin 7 – søges nu efter følgende 3 libraries, som også installeres.
- Blynk
- WiFiManager
- DoubleResetDetector
Trin 10
Når du opretter en ny sketch i Arduino IDE er der noget default kode eks. void setup() og void loop(). Fjern disse linjer kode. Kopier og indsæt derefter koden herunder og gem projektet. Alternativt kan du finde koden på Github.
/* Cube Camera Pan - v4 Servo controle - speed and movement 0 to 180 degree 31-5-2020 - Jens Krogsgaard rev A - 9-6-2020: Hardcoded wifi credentials and blynk token is replaces with logon-box. rev B - 21-11-2020: Blynk auth token replaced with xxxxxxxxx */ #define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #include <Servo.h> #include <DNSServer.h> #include <WiFiManager.h> //https://github.com/tzapu/WiFiManager #include <EEPROM.h> #include <DoubleResetDetector.h> #define DRD_TIMEOUT 10 #define DRD_ADDRESS 0 DoubleResetDetector drd(DRD_TIMEOUT, DRD_ADDRESS); // auth kode fra BLYNK app - Drejekamera V3 - defualt kan bee replaced char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; int oldPos; // servo - old position int newPos; // servo - new position int stepPos; // step position for servo - used when you step from old to new position int servoSpeed; // speed of servo - delay - big value - slow, small value fast Servo servo; void setup() { // initial values EEPROM.begin(512); Serial.begin(115200); // WIFI - connect WiFiManager wifiManager; // wifiManager.resetSettings(); //Uncomment this to wipe WiFi settings from EEPROM on boot. Comment out and recompile/upload after 1 boot cycle. // Input blynk token WiFiManagerParameter BlynkToken("auth", "Blynk Token", auth, 34); wifiManager.addParameter(&BlynkToken); if (drd.detectDoubleReset()) { // when reset button is activated by a double click a reconnect to wifi i initiated. Serial.println("Double Reset Detected"); digitalWrite(LED_BUILTIN, LOW); wifiManager.startConfigPortal("ConnectCameraTrain"); } else { Serial.println("No Double Reset Detected"); digitalWrite(LED_BUILTIN, HIGH); // temporary hotspot ConnectCameraTrain is credted wifiManager.autoConnect("ConnectCameraTrain"); } strcpy(auth, BlynkToken.getValue()); //if you get here you have connected to the WiFi Serial.println("connected...yeey :)"); pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output, I like blinkies. Blynk.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str()); servoSpeed = 10; servo.attach(2); // 2 means D4 pin of ESP8266 } // Slider angle - 0 to 180 degree BLYNK_WRITE(V0) { turnServo(param.asInt()); } // Slider speed - from 20 to 0 BLYNK_WRITE(V1) { servoSpeed = param.asInt(); } // Button - 0 degree BLYNK_WRITE(V2) { turnServo(0); } // Button - 45 degree BLYNK_WRITE(V3) { turnServo(45); } // Button - 90 degree BLYNK_WRITE(V4) { turnServo(90); } // Button - 135 degree BLYNK_WRITE(V5) { turnServo(135); } // Button - 180 degree BLYNK_WRITE(V6) { turnServo(180); } // Turn servo an angle // Speed is implemented as delay between each angle // long delay - slow speed // short delay - fast speed void turnServo(int turnTo) { oldPos = servo.read(); newPos = turnTo; if (oldPos <= newPos) { for (stepPos = oldPos ; stepPos <= newPos; stepPos += 1) { servo.write(stepPos); delay(servoSpeed); } } else { for (stepPos = oldPos ; stepPos >= newPos; stepPos -= 1) { servo.write(stepPos); delay(servoSpeed); } } } void loop() { Blynk.run(); }
Trin 11
Kopier dit unikke Blynk Token (fra trin 5) og indsæt i koden på linje 24 i stedet for ‘xxx’. Når dette er gjort gemmer du koden.
Trin 12
Tryk på Check/compile knappen. Hvis alt er OK vil du se beskeden “Færdig med at kompilere” i bunden af skærmen. Hvis der forekommer fejl vil de blive listet og skal håndteres.
Trin 13
Send koden til ESP8266 ved at trykke på upload knappen (ikon med pil til højre). Hvis alt er OK vil du se beskeden “Done uploading” i bunden af skærmen. Hvis der forekommer fejl vil de blive listet og skal håndteres.
Trin 14
Nu kan du teste hele dit setup. Hvis der er problemer med at forbinde Blynk app til ESP8266, så læs videre og se hvordan du forbinder Blynk til dit WiFi netværk.
Forbind kameravogn til WiFi netværk
Følg denne procedure for at forbinde kameravognen til dit WiFi netværk – hvis den ikke forbindes automatisk gør du følgende:
- Find din Blynk token fra E-mail eller i Blynk appen. Kopier denne token.
- Tænd for batteriet på kamera toget.
- På din mobil, iPad eller PC skal du finde og vælge hotspottet ‘ConnectCameraTrain’.
Nu burde et nyt vindue åbne, hvor du så skal vælge den første knap ‘Configure WiFi’.
Vælg dit WiFI netværk og indtast dit password til netværket. Det næste felt er til Blynk Token (se trin 5). Klik derefter på ‘Save’ knappen.
Hvis alt er OK burde du nu kunne se meddelelsen “Credentials Saved” og den blå LED på din ESP8266 burde nu være tændt.
NU er du klar til at teste din kameravogn med panorering på din modelbane. God fornøjelse.
Jeg håber at du har fundet denne guide brugbar og glæder mig til at se dit bud på en kameravogn med panorering til din modeltogbane. Del gerne dine erfaringer i kommentarfeltet nedenfor. Og kom endelig med forslag til forbedringer.