OrangePi Zero Fan kontrol

Yayınlandı: Aralık 16, 2021 / Hardware & Software
Etiketler:, , , ,

RTL-SDR ile kullanmak için elimdeki OrangePi-Zeroyu kullanmak istedim. Anten kablosu kısa olsun, besleme ile uğraşmayayım diye, antenin dibine, su geçirmez kutu içine Zero’yu koydum.
Zeronun beslemesini POE adaptör ile yaptım. Pasif POE adaptör 24V veriyor. Zero’da bu 24V’u alarak, regülatör devresi ile 5V’a düşürdüm.

Genel olarak zero’da aşırı ısınma problemi var. Benim modülüm de, boşta 70-80 dereceleri buluyor.
Dış ortamda, yazın da çalışacağını düşünerek bir fan eklemek istedim.

Zeroda sistem sıcaklığını aşağıdaki komut ile takip edebilirsiniz.

sudo armbianmonitor -m

Öncelikle network ayarlarımızı yapalım.
aşağıdaki komutla, “interfaces” dosyasını açalım. Ve içine gerekli eklemeleri yapalım,
kaydedip reboot yapalım.

sudo nano /etc/network/interfaces

#Local loopback
auto lo
iface lo inet loopback

#Ethernet Static IP
auto eth0
allow-hotplug eth0iface eth0 inetstatic
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

////////////////////////////////////////////////////////////////////////////////////////////////
Sıra geldi Python kurulumuna;

sudo apt-get update
sudo apt-get install python-dev
git git clone https://github.com/Jeremie-C/OrangePi.GPIO
cd /OrangePi.GPIO
sudo python setup.py install

Python ile GPIO erişimi ve örneklere bu linlten erişebilirsiniz.
https://arrhythmicobsession.wordpress.com/2020/06/30/attaching-a-temperature-controlled-cooling-fan-on-an-orange-pi-zero-plus/

Bu komut ile sistem sıcaklığını okuyabilirsiniz. Biz de kod içinde bunu kullanacağız. (zone1 yaparsanız, GPU sıcaklığını okursunuz)

cat /sys/class/thermal/thermal_zone0/temp

Bir py dosyası oluşturun ve içine aşağıdakileri kopyalayın.
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import OPi.GPIO as GPIO
from time import sleep          # this lets us have a time delay

GPIO.setboard(GPIO.ZEROPLUS)    # Orange Pi ZERO PLUS board
GPIO.setmode(GPIO.BOARD)        # set up BOARD BCM numbering
GPIO.setup(7, GPIO.OUT)    

file= open("/sys/class/thermal/thermal_zone0/temp", "r")
tx = int(file.read())
file.close()

print tx

if tx > 40000:
       GPIO.output(7, 1)
else:
       GPIO.output(7, 0)

#GPIO.cleanup()

kodumuzu çalıştıralım.

sudo python autofan.py

Sıcaklık 40 derece üstüne çıktığında fan çalışmaya başlayacaktır.

Fan bağlantısını şu şekilde yapabilirsiniz.
GPIO.7 pinini, bir mosfetin “G” ucuna bağlayın. (2N7000 olabilir)
Mosfetin “S” ucu şasede olacak, “D” ucu da, fanın eksi ucuna bağlanacak. Fanın artı ucu da, beslemeye bağlanacak (5V).

Programı periyodik olarak çalıştırmak için “crontab” uygulamasını kullanabilirsiniz. Yukarıda verdiğim linkte bununla ilgili detay bulabilirsiniz.

Sony/Canon Ses bağlantısı

Yayınlandı: Aralık 15, 2021 / Hardware & Software
Etiketler:, ,

Sony Wireless Receiver ses çıkışını Canon (EOS) makinaya bağlamak için TRS konnektör bağlantıları:

Receiver çıkışı un-balance’a çevrilip, Canon’un her 2 kanalına da kaydediliyor.

Yayın aracında yönlendirmeler ve kamera kontrol için Blackmagic’in videohub’ını kullanıyorum. (20×20)
Bu cihaz, kendi yazılımı ile PC veya tabletten kontrol edilebiliyor.

Kamera kontrolde daha hızlı ve kolay kullanım için, arduino ile basit bir arabirim yaptık. Bu devre, OCP
butonlarından gelen tetikleme ile, istenilen monitöre kamera çıkışını veriyor. Devre 2 modda çalışıyor.

1. mod: butona basıldığında, seçilen kamera monitöre yönlendiriliyor. Buton bırakılsa bile çıkışta kalıyor.
2. mod: butona basılı tutulduğu sürece, kseçilen kamera çıkışta kalıyor. Buton bırakıldığında, önceden tanımlı kaynağa geri dönüyor.

Mevcut devre 5 kamera için yapıldı ancak sayı istenildiği kadar arttırılabilir.


Devre, videohub’a RS422 ile bağlanıyor. Ancak istenirse, ethernet üzerinden de kontrol edilebilir.
Yapmak isteyenler için arduino kodu aşağıdadır.

const int ledPin = 13;
//OCP switch
const int btn1Pin = 4;
const int btn2Pin = 5;
const int btn3Pin = 6;
const int btn4Pin = 7;
const int btn5Pin = 8;
//mod seçimi için
const int btn6Pin = 9;

//monitör çıkışı ve PGM girişi
char mon = 7;
char pgm = 1;


arduino kodu:

///////////////////////////////////////////////////////////////////
// smart videohub 20×20
// RS-422 kontrol
//
// skymurat@gmail.com
//
// DSNG-1/DSNG-4 fw.1.0 (20/10/2018)
//
//////////////////////////////////////////////////////////////////

const int ledPin = 13;
const int btn1Pin = 4;
const int btn2Pin = 5;
const int btn3Pin = 6;
const int btn4Pin = 7;
const int btn5Pin = 8;
const int btn6Pin = 9;

int btn1State = 0;
int btn2State = 0;
int btn3State = 0;
int btn4State = 0;
int btn5State = 0;
int btnMode = 0;

int old1State = 0;
int old2State = 0;
int old3State = 0;
int old4State = 0;
int old5State = 0;

char mon = 7;
char pgm = 1;

void setup()
{
// initialize the serial communication:
Serial.begin(9600);
// initialize the ledPin as an output:
pinMode(ledPin, OUTPUT);
pinMode(btn1Pin, INPUT_PULLUP);
pinMode(btn2Pin, INPUT_PULLUP);
pinMode(btn3Pin, INPUT_PULLUP);
pinMode(btn4Pin, INPUT_PULLUP);
pinMode(btn5Pin, INPUT_PULLUP);
pinMode(btn6Pin, INPUT_PULLUP);
}

void loop() {

// CAM in8 .. in12
// PGM 1
// MON 7

btn1State = digitalRead(btn1Pin);
btn2State = digitalRead(btn2Pin);
btn3State = digitalRead(btn3Pin);
btn4State = digitalRead(btn4Pin);
btn5State = digitalRead(btn5Pin);
btnMode = digitalRead(btn6Pin);

if ((btn1State == LOW) && (old1State == 0)) {
old1State = 1;
Serial.print(“@ X:0/6,7\r\n”);
delay(50);
}
if (btn1State == HIGH) {
if (old1State == 1) {
old1State = 0;
if (btnMode == HIGH) Serial.print(“@ X:0/6,0\r\n”);
delay(50);
}
}

if ((btn2State == LOW) && (old2State == 0)) {
old2State = 1;
Serial.print(“@ X:0/6,8\r\n”);
delay(50);
}
if (btn2State == HIGH) {
if (old2State == 1) {
old2State = 0;
if (btnMode == HIGH) Serial.print(“@ X:0/6,0\r\n”);
delay(50);
}
}

if ((btn3State == LOW) && (old3State == 0)) {
old3State = 1;
Serial.print(“@ X:0/6,9\r\n”);
delay(50);
}
if (btn3State == HIGH) {
if (old3State == 1) {
old3State = 0;
if (btnMode == HIGH) Serial.print(“@ X:0/6,0\r\n”);
delay(50);
}
}

if ((btn4State == LOW) && (old4State == 0)) {
old4State = 1;
Serial.print(“@ X:0/6,10\r\n”);
delay(50);
}
if (btn4State == HIGH) {
if (old4State == 1) {
old4State = 0;
if (btnMode == HIGH) Serial.print(“@ X:0/6,0\r\n”);
delay(50);
}
}

if ((btn5State == LOW) && (old5State == 0)) {
old5State = 1;
Serial.print(“@ X:0/6,11\r\n”);
delay(50);
}
if (btn5State == HIGH) {
if (old5State == 1) {
old5State = 0;
if (btnMode == HIGH) Serial.print(“@ X:0/6,0\r\n”);
delay(50);
}
}

// check if data has been sent from the computer:
if (Serial.available()) {

}
}

/////////////////////////////////////////////////////////////////////////////

CAN/LIN/K-Line

Yayınlandı: Kasım 12, 2020 / Hardware & Software
Etiketler:, , , ,

Blog içinde zamana yayılmış, CAN uygulamaları mevcut. Temel uygulamaları ve güncellemeleri bu sayfa altında bulabilirsiniz.

SingleWire CAN
LS/HS CAN BUS Arabirimi
Dual HS CAN BUS
Ağır Vasıtalar ve CAN BUS
CAN’i kandırmak
2 port HS-CAN USB/BLUETOOTH (CAN Black)
Multimedya Emülatör
LINbus-CANbus çevirici
LS/HS/SW CAN bus Sniffer (windows)
LIN bus  Sniffer (windows)
KWP/K-LINE  Sniffer (windows)
wifi/wireless CANbus

Power Atteunator Calculator

Yayınlandı: Kasım 4, 2020 / Hardware & Software

Güzel bir zayıflatıcı hesaplama tablosu. Giriş gücüne göre direnç güçlerini de hesaplıyor.

Aşağıdaki linkten PA1B’nin sayfasına ulaşabilirsiniz.

50 Ohm 400W Suni Yük

Yayınlandı: Ekim 12, 2020 / Hardware & Software
Etiketler:, ,

Aliminyum dirençlerle yapılmış bir suni yük (dummy load) devresi.

Bu dirençler “wire wound” olarak geçiyor. rezistif olduklarından,RF uygulamalarında kullanılması önerilmiyor. Bütçeniz varsa, non-resistif
dirençler ile istediğiniz güçte yük yapabilirsiniz. (Bu tip dirençlerin tanesi 10-15€ civarında)

Devre 4 adet 200 Ohm 100W direncin paralel bağlanmasından oluşuyor.
Dirençleri 10cmx20cmx2cm ebatlarında bir soğutucuya bağladım.
Direnç bağlantı delikleri tek tarafta olduğundan, yüzeyin tamamı soğutucuya basmayabiliyor. Ben dirençlerin altına termal macun da sürdüm.

Dirençlerin üstüne, canlı ucu koruyacak şekilde bir pleksi panel ile koruma yapılabilir veya devre komple metal kutu içine kurulabilir. Yoksa 30-40watt’da bile çarpılmak/yanmak mümkün 🙂

Toplam direnç değerini 50 Ohm olarak ölçtüm. 30W güç uyguladığımda SWR’yi 1.5:1 ölçtüm.
Soğutucu ~32TL. 100W/200Ohm dirençlerin adet fiyatı 12-15TL civarında (yurtdışı sitelerinde). Nakliye ve gümrükle beraber fiyat biraz yükselebilir (16TL gümrük ödedim).

kaynak: https://www.universal-radio.com/

VHF/6m Vertikal Anten

Yayınlandı: Haziran 3, 2020 / Hardware & Software
Etiketler:, , , , , ,

Motorola’nın beyaz mikrofonu hep hoşuma gitmiştir. Motorola telsizim olmamasına rağmen, zamanında almıştım.
ICOM-7000’in HM-151 mikrofonunun modülasyonu/ses kalitesi hakkında yorumlar iyi değil. Daha önce de iyileştirme adına bir kondansatör değişimi yapmıştım.
Bu kez HM-151’i, Motorola HMN-1056 ile değiştireyim dedim.

IC-7000 ve TMD-710’un mikrofon girişleri RJ-45. Ama pin numaraları aynı değil tabi.


HMN-1056’nın kullanacağımız uçları şu şekilde;

4-GND -> IC-7000 pin 5 ve pin 7
5-MIC -> IC-7000 pin 6 (bu uç, 2k2 dirençle pin 1’e bağlanacak)
6-PTT -> IC-7000 pin 4

IC-7000 kullanıyorsanız HM-151 yerine kesinlikle bu mikrofonu kullanmalısınız.


20/40m Linear Amp.

Yayınlandı: Mart 13, 2020 / Hardware & Software

https://www.wa4dsy.com/filter/filterdesign.html