EnglishThis website is also available in English

Autopilot untuk Blackmagic Design ATEM switcher

Proyek ini adalah autopilot sederhana untuk pengalih video Atem dari Blackmagic Design. Ini seperti proyek sebelumnya “Tally light ESP32 untuk switcher Blackmagic ATEM” berdasarkan mikrokontroler ESP32. Juga untuk autopilot ini, kami kembali menggunakan modul pengembangan M5StickC (dari VNGsystems) yang kami program dengan Arduino IDE, tetapi tentu saja Anda dapat menggunakan papan pengembangan ESP32 lainnya.

M5StickC ESP32 PICO Color LCD Mini IoT Development Board
Diuji dan direkomendasikan oleh OneGuyOneBlog.com:

M5StickC ESP32 PICO Color LCD Mini IoT Development Board
Banggood.com

Mengapa beralih otomatis?

Selama periode Corona (COVID-19), kami mulai menyiarkan semua jenis acara secara langsung. Biasanya ada seseorang yang bergeser dengan rapi, sebagaimana mestinya. Tapi bayangkan, Anda adalah satu-satunya teknisi di studio pada aliran DJ 4 jam. Pengantar pizza ada di pintu, Anda harus pergi ke toilet, Anda ingin minum bir atau Anda hanya perlu meregangkan kaki. Maka Anda ingin keluar dari belakang ATEM tanpa disadari pemirsa. Pada saat itu Anda dapat menyalakan autopilot. Ini tidak akan bergeser sekreatif teknisi shift terlatih, tetapi jika Anda tidak tinggal terlalu lama, tidak ada yang akan memperhatikan.

Persyaratan

Selain M5StickC Anda juga memerlukan beberapa hal lain, yaitu Arduino IDE, inti ESP32, pustaka M5StickC, dan pustaka ATEM. Jika Anda belum menginstalnya sebelumnya, ikuti langkah-langkah di bawah ini. Jika Anda sudah memiliki semua ini di komputer Anda, Anda sudah dapat mencoba sketsa di bagian bawah halaman ini.

Instal pustaka Arduino IDE, ESP32, dan M5StickC

Seperti biasa, instal Arduino IDE dengan ESP32 core. Saat menggunakan M5StickC, Anda juga menginstal perpustakaan M5StickC. Untuk informasi lebih lanjut, lihat blog “Memprogram M5StickC dengan Arduino IDE”. Jika Anda menggunakan modul ESP32 lain, baca blog “ESP32 dengan Arduino IDE di Linux dan Windows“.

Instal perpustakaan ATEM Arduino

Unduh file proyek terbuka SKAARHOJ dari Github. Salin file dalam folder “ArduinoLibs” ke folder libraries IDE Arduino Anda. Anda harus memiliki beberapa folder baru di folder perpustakaan Anda, seperti Arduino / libraries / ATEM, Arduino / libraries / ATEMbase, dll.

Perpustakaan kompatibel dengan Arduino (dengan perisai Ethernet) dan ESP8266 (WiFi), tetapi belum dengan ESP32. Ini mudah diperbaiki dengan membuat total 3 perubahan pada dua file ATEMbase.cpp dan ATEMbase.h.

Di libraries/ATEMbase/ATEMbase.cpp, sekitar baris 50:

Pencarian untuk

		// Set up Udp communication object:
	#ifdef ESP8266
	WiFiUDP Udp;
	#else
	EthernetUDP Udp;
	#endif

dan ganti dengan:

		// Set up Udp communication object:
	WiFiUDP Udp;

 

Dalam file kedua, libraries/ATEMbase/ATEMbase.h, sekitar baris 35:

#ifdef ESP8266
#include <WifiUDP.h>
#else
#include <EthernetUdp.h>
#endif

ganti ini dengan baris berikut (perhatikan huruf besar dan kecil):

 #include <WiFiUdp.h>

 

Perubahan kedua dalam file ini, sekitar baris 60, cari potongan ini:

  	#ifdef ESP8266
  	WiFiUDP _Udp;
  	#else
	EthernetUDP _Udp;					// UDP object for communication, see constructor.
	#endif

dan ganti dengan:

  	WiFiUDP _Udp;

Anda sekarang dapat menggunakan perpustakaan ATEM dalam proyek ESP32 Anda.

Autopilot for Blackmagic Design Atem switcher: switching 2-1-3-2
Autopilot untuk Blackmagic Design Atem switcher: switching 2-1-3-2

Sketsa Autopilot Arduino

Pengoperasian sketsa itu sederhana. Input acak (baru) selalu dipilih sebagai “pratinjau”. Pratinjau sebelumnya kemudian menjadi aktif sebagai “program”. Kami menunggu antara beralih. Panjang periode ini juga dipilih secara acak, dengan durasi minimum dan maksimum yang telah ditetapkan.

Dalam sketsa Anda dapat menyesuaikan hal-hal berikut dengan situasi Anda sendiri:

  • clientIp: masukkan alamat IP (gratis) untuk ESP32 di sini
  • switcherIp: Alamat IP dari switch Atem
  • ssid: nama jaringan WiFi Anda
  • password: kata sandi jaringan WiFi Anda
  • cameras: jumlah input yang ingin Anda gunakan (untuk Atem mini misalnya 4)
  • minTime: waktu tunggu minimum dalam detik
  • maxTime: waktu tunggu maksimum dalam detik

Sketsa lainnya berbicara sendiri, Anda tentu saja dapat membuatnya serumit yang Anda inginkan.

/*****************
  Autopilot for Blackmagic Design Atem switcher

  Version 1.0

  Automatic switcher/controller for Blackmagic Design
  ATEM video switchers, based on the M5StickC ESP32 development
  board and the Arduino IDE.

  For more information, see:
  https://id.oneguyoneblog.com/2020/07/13/autopilot-untuk-blackmagic-design-atem-switcher/

  Based on the work of Kasper Skårhøj:
  https://github.com/kasperskaarhoj/SKAARHOJ-Open-Engineering


******************/

#include <M5StickC.h>
#include "WiFi.h"
#include <SkaarhojPgmspace.h>
#include <ATEMbase.h>
#include <ATEMstd.h>

IPAddress clientIp(192, 168, 178, 170);          // IP address of the ESP32
IPAddress switcherIp(192, 168, 178, 173);        // IP address of the ATEM switcher
ATEMstd AtemSwitcher;

// http://www.barth-dev.de/online/rgb565-color-picker/
#define GRAY  0x0020 //   8  8  8
#define GREEN 0x0200 //   0 64  0
#define RED   0xF800 // 255  0  0

const char* ssid = "yournetwork";
const char* password = "yourpassword";

int cameras = 4;  // Total number of camera inputs
int ledPin = 10;  // LED is on pin 10

int minTime = 3;     // Min. waiting time
int maxTime = 10;    // Max. waiting time

int programInput = 1; // Set a default program input
int previewInput = 2; // Set a default preview input
int timeout = 1000;   // Set a default waiting time

void setup() {

  Serial.begin(9600);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi..");
  }
  Serial.println("Connected to the WiFi network");

  M5.begin(); // Initialize the M5StickC

  pinMode(ledPin, OUTPUT);  // LED pin
  digitalWrite(ledPin, HIGH); // LED off

  AtemSwitcher.begin(switcherIp); // Initialize a connection to the switcher
  AtemSwitcher.serialOutput(true);
  AtemSwitcher.connect();
}

void loop() {

  AtemSwitcher.runLoop(); // Check for packets, respond to them, keeping the connection alive

  static unsigned long start_time = millis();

  if (millis() - start_time >= timeout) { // Time to switch?

    digitalWrite(ledPin, LOW);      // LED on white switching
    programInput = previewInput;    // For "program", choose the current preview input
    previewInput = randomNumber();  // For "preview", choose a new (random) input

    AtemSwitcher.changePreviewInput(previewInput); // Switch to new preview
    AtemSwitcher.changeProgramInput(programInput); // Switch to new program

    drawLabel(BLACK, GRAY, HIGH);   // Display program input number on LCD display

    Serial.print("Program: ");      // Print to the serial console
    Serial.println(programInput);

    start_time = millis();
    timeout = 1000 * random(minTime, maxTime + 1); // Pick a new random time to wait befor switching again
    digitalWrite(ledPin, HIGH);     // LED off

  }
}

void drawLabel(unsigned long int screenColor, unsigned long int labelColor, bool ledValue) {
  digitalWrite(ledPin, ledValue);
  M5.Lcd.fillScreen(screenColor);
  M5.Lcd.setTextColor(labelColor, screenColor);
  M5.Lcd.drawString(String(programInput), 15, 40, 8);
}

int randomNumber() { // Pseudo random non-consecutive number
  while (previewInput == programInput) {
    previewInput = random(1, cameras + 1);
  }
  return previewInput;
}

Sketsa ini juga dapat ditemukan di GitHub.

Buat autopilot Anda sendiri

Seperti kebanyakan proyek di situs web ini, proyek ini juga hanya titik awal untuk kreasi Anda sendiri. Sesuaikan sketsa dengan selera Anda atau buat sesuatu yang sama sekali berbeda. Jika Anda telah membuat sesuatu yang menarik, beri tahu kami di bagian komentar di bawah artikel ini!

VNG Systems

M5StickC ESP32 PICO Color LCD Mini IoT Development Board
Diuji dan direkomendasikan oleh OneGuyOneBlog.com:

M5StickC ESP32 PICO Color LCD Mini IoT Development Board
Banggood.com

Add a Comment

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *