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

Işık Renk Sıcaklığı

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

 

Single Wire CAN

Yayınlandı: Ekim 13, 2019 / Hardware & Software
Etiketler:, , , , , , , ,

GM araçlarında (chevrolet, Opel, Cadillac) kullanılan bir CAN versiyonu.

swcan

BlueCAN devresinde HS CAN transceiver entegresi yerine NCV7356 single wire can transceiver takılarak, 33.3 ve 83.3kbit/s hızlarında çalışan (yine SKY-CAN Sniffer arayüzü ile) SW CAN Sniffer devresi.

 

disp1

 

Artık CAN Blue ve CAN Black modülleri WireShark üzerinden dinlenebiliyor…


Kurulum ve çalıştırma:
wireshark 2.4.7 32bit/64bit indir ve kur (Kurulumda “Wireshark 1” seçilecek)
CANvas indir ve çalıştır, “LiveView” seç (dll dosyaları, plugin altına kopyalanacak)
Wireshark’ı çalıştır, capture filter ekle (\\.\pipe\CAN)
“SKYCAN ws tool” çalıştır.
Wireshark menüsünden Decode > CAN Live view seçilecek.

Linkler:

BUS (CAN/LIN)
wireshark

I/O Board

Yayınlandı: Nisan 11, 2019 / Hardware & Software
Etiketler:, , , , ,

Genel amaçlı I/O kartı

28pin DIP-PIC uyumlu
3.3V veya 5V Regülatör
HS-CAN
Port giriş/çıkışları
I2C

Seri haberleşme için;
ESP8266
NRF24L01
TTL-Ethernet modülleri takılabilir.


ESP8266, TTL-USB çevirici ile, arduino IDE’den programlanabilir. I2C soketine birden fazla PCF8574 veya MCP23017 modül takılarak giriş/çıkış sayısı arttırılabilir. Takılacak modüllerle (TTL-Ethernet, ESP8266) kablolu veya kablosuz giriş-çıkış kontrolü, CAN haberleşmesi vs. yapılabilir.

Arduino IDE üzerinden ESP8266 (ESP12 ile test edildi) aşağıdaki ayarlarla programlama yapılabilir.

 

ART-NET to DMX-512

Yayınlandı: Mart 6, 2019 / Hardware & Software
Etiketler:, , , , , , ,

Uzun zamandır DMX ile ilgilenmemiştim. DMX datasını kablosuz taşırmıyım diye bir iş için bakarken, ARTNET protokolü ile tanıştım. Gerçi DMX ile uğraşmaya başladığımda görmüştüm ama ilgilenmemiştim.
ArtNet, UDP üzerinden çalışan, DMX ve universe datalarını aktaran bir protokol.

Bir NodeMCU (ESP8266) ve TX1 çıkışına bağlanan bir SN75176 entegresi ile, WiFi üzerinden ArtNet datalarını alan ve DMX512 protokolünde çıkışına veren bir cihazım oldu.


Artnet protokolünü bir çok yazılım destekliyor görünüyor. FreeStyler veya Madrix kullanabilirsiniz. (Madrix’in 3.6 sürümü sonrası desteklemiyor diye hatırlıyorum)
Ben test için Android uygulaması buldum ve onunla, wireless üzerinden devreyi çalıştırdım.

screen-12
sonrasında windows için de basit bir test programı yazabildim. Artnet ile, istediğiniz bir IP adresine data gönderebileceğiniz gibi, ağdaki tüm modüllere de broadcast data gönderebiliyorsunuz. Bunun için bilgisayarınızın ve modülünüzün aynı modem/AP üzerinde olması yeterli.

Son zamanlarda ESP8266 oldukça işime yarıyor. Bazı konularda sorunları olsa da, basit işlerde oldukça kullanışlı.

Bir sonraki ESP projesinde görüşmek üzere…

DHT-22 Nem/sıcaklık sensörü ile yapılmış basit bir izleme/alarm devresi. Devrede ESP8266 WiFi modül ve 3 adet (istenirse arttırılabilir) DHT-22 sensor kullanıldı.

IMG_20190306_181849
Devre çalıştırıldığında wifi modeminize (veya AP) bağlanıyor. Programı yüklerken statik IP verebilir veya modem üzerinden cihazın aldığı IP’yi görebilirsiniz. Tarayıcıya bu IP adresini girdiğinizde, bağlı sensörlerin değerlerini görebiliyorsunuz. Ayrıca yine wifi üzerinden modüle bağlanıp değerleri alan bir windows yazılımı da var. bu yazılımda,
sıcaklık ve nem için alarm limiti tanımlayabiliyorsunuz.

Untitled-1

Untitled-2

web server tarafını isteğinize göre değiştirmek, görsel olarak zenginleştirmek mümkün.
Ben NodeMCU (ESP12E) kullanıyorum. Bağlantı şemasını nette kolaylıkla bulabilirsiniz.
DHT-22 sensörleri aşağıdaki gibi kullandım.

Untitled-3

Sensörlerin 3 ve 4 pinli olmak üzere 2 çeşidi var. Ben 4 pinli kullandım.
Sensörlerin data uçlarını 10k direnç ile Vcc’ye (3.3v) çektim.

Yapmak isterseniz, kodu sayfa sonunda bulabilirsiniz. Arduino’ya gerekli kütüphaneleri
kurarak kolayca derleyebilir ve yükleyebilirsiniz.

*************************************************************************************
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include “DHTesp.h”
int stLed = D2;
// config: ////////////////////////////////////////////////////////////

#define UART_BAUD 9600
#define packTimeout 5 //ms
#define bufferSize 8192

// For STATION mode:
const char *ssid = “SSID”;
const char *pw = “pass”;
const char* host = “sky_TempServer”;

const int port = 9876;
boolean tcpconn = false;

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

WiFiServer server(port); //9876
WiFiClient client;

char charT1[5];
char charH1[5];
char charT2[5];
char charH2[5];
char charT3[5];
char charH3[5];

int sayac = 0;
float temperature1, temperature2, temperature3;
float humidity1, humidity2, humidity3;

//String stringVal = “”;
//uint8_t buf1[bufferSize];
//uint8_t i1=0;

ESP8266WebServer wserver(80);

DHTesp dht1, dht2, dht3;

void setup() {
pinMode(BUILTIN_LED, OUTPUT);
pinMode(stLed, OUTPUT);

digitalWrite(BUILTIN_LED, HIGH);
digitalWrite(stLed, LOW);

Serial.begin(UART_BAUD);

Serial.println(“WiFi bekleniyor…”);
WiFi.forceSleepWake();

WiFi.setAutoConnect(false);
WiFi.hostname(host);
WiFi.mode(WIFI_STA);
//static IP
//IPAddress ip(192, 168, 1, 5);
//IPAddress dns(192, 168, 1, 1);
//IPAddress gateway(192, 168, 1, 1);
//IPAddress subnet(255, 255, 255, 0);
//WiFi.config(ip, dns, gateway, subnet);

delay(500);

WiFi.begin(ssid, pw);

wserver.on(“/”, handle_OnConnect);
wserver.onNotFound(handle_NotFound);

dht1.setup(D1, DHTesp::DHT22); //GPIO05
dht2.setup(D2, DHTesp::DHT22); //GPIO06
dht3.setup(D4, DHTesp::DHT22); //GPIO02
}
void loop() {
wserver.handleClient();

while (WiFi.status() != WL_CONNECTED) {
digitalWrite(stLed, LOW);
digitalWrite(BUILTIN_LED, !digitalRead(BUILTIN_LED));
delay(100);
if(WiFi.status() == WL_CONNECTED) {
digitalWrite(BUILTIN_LED, HIGH); //wifi connected

Serial.println(“WiFi connected”);
Serial.print(“IP address: “);
Serial.println(WiFi.localIP());

long rssi = WiFi.RSSI();
Serial.print(“RSSI:”);
Serial.println(rssi);

server.begin(); // start TCP server
Serial.println(“Starting TCP Server”);

wserver.begin();
Serial.println(“Starting HTTP server”);
}
}

if(!client.connected()) { // if client not connected
if (tcpconn) {
Serial.println(“disconnected”);
}

tcpconn = false;
client = server.available(); // wait for it to connect
}
if(client.connected()) {
if (!tcpconn) {
Serial.print(client.remoteIP());
Serial.println(” connected”);
tcpconn = true;
}

// now send to WiFi

client.write(“{“);
client.write(“|”);
client.write((char*)charT1, 5);
client.write(“|”);
client.write((char*)charH1, 5);
client.write(“|”);
client.write((char*)charT2, 5);
client.write(“|”);
client.write((char*)charH2, 5);
client.write(“|”);
client.write((char*)charT3, 5);
client.write(“|”);
client.write((char*)charH3, 5);
client.write(“|”);
client.write(“}”);
}

delay(dht1.getMinimumSamplingPeriod());
humidity1 = dht1.getHumidity();
temperature1 = dht1.getTemperature();

delay(dht2.getMinimumSamplingPeriod());
humidity2 = dht2.getHumidity();
temperature2 = dht2.getTemperature();

delay(dht3.getMinimumSamplingPeriod());
humidity3 = dht3.getHumidity();
temperature3 = dht3.getTemperature();

dtostrf(temperature1, 1, 1, charT1);
dtostrf(humidity1, 1, 1, charH1);
dtostrf(temperature2, 1, 1, charT2);
dtostrf(humidity2, 1, 1, charH2);
dtostrf(temperature3, 1, 1, charT3);
dtostrf(humidity3, 1, 1, charH3);

if (sayac > 9999) sayac = 1;
}

void handle_OnConnect() {
wserver.send(200, “text/html”, SendHTML(temperature1, humidity1, temperature2, humidity2, temperature3, humidity3));
}

void handle_NotFound(){
wserver.send(404, “text/plain”, “Not found”);
}

String SendHTML(float Temperature1, float Humidity1, float Temperature2, float Humidity2, float Temperature3, float Humidity3){
//dtostrf(temperature1, 1, 1, charT1);
//dtostrf(humidity1, 1, 1, charH1);
//dtostrf(temperature2, 1, 1, charT2);
//dtostrf(humidity2, 1, 1, charH2);
//dtostrf(temperature3, 1, 1, charT3);
//dtostrf(humidity3, 1, 1, charH3);

String ptr = “<!DOCTYPE html> <html>\n”;
ptr +=”<head><meta name=\”viewport\” content=\”width=device-width, initial-scale=1.0, user-scalable=no\”>\n”;
ptr +=”<title>sky_tempserver</title>\n”;
ptr +=”<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n”;
ptr +=”body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n”;
ptr +=”p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n”;
ptr +=”</style>\n”;
ptr +=”<meta http-equiv=refresh content=10 ></head>\n”;
ptr +=”<body>\n”;
ptr +=”\n”;
ptr +=”Temperature/Humidity Monitor\n”;
ptr +=”ZONE-1:”;
ptr +=”Temp.: “;
ptr +=charT1;
ptr +=”C”;
ptr +=”Hum: “;
ptr +=charH1;ptr +=”%”;
ptr +=”ZONE-2:”;
ptr +=”Temp.: “;
ptr +=charT2;
ptr +=”C”;
ptr +=”Hum: “;
ptr +=charH2;
ptr +=”%”;
ptr +=”ZONE-3:”;
ptr +=”Temp.: “;
ptr +=charT3;
ptr +=”C”;
ptr +=”Hum: “;
//ptr +=”“;
ptr +=charH3;
ptr +=”
“;
ptr +=”%”;
ptr +=””;
ptr +=””;
ptr +=””;
ptr +=””;
ptr +=”webserver v.1.0 | tcp server v.1.0 (tcp:9876) | designed by SKY @2019“;
ptr +=””;
ptr +=(String) sayac++;
ptr +=””;
ptr +=”\n”;
ptr +=”</body>\n”;
ptr +=”</html>\n”;
return ptr;
}

*************************************************************************************