google-sheet2Html

/*! * * Google Sheets To HTML v0.9a * * To use, simply replace the "tq?key=" value in the * URL below with your own unique Google document ID * * The Google document's sharing must be set to public * */ google.load('visualization', '1', { packages: ['table'] }); var visualization; function drawVisualization() { var query = new google.visualization.Query('https://spreadsheets.google.com/tq?key=https://docs.google.com/spreadsheets/d/1-vUEZ9tae5C_OXzSi0dQPWwUrO3H5S-gImB5afFgqDg/edit?usp=sharing'); query.setQuery('SELECT A, B, C, D label A "Duration", B "Song", C "Requested By", D "URL"'); query.send(handleQueryResponse); } function handleQueryResponse(response) { if (response.isError()) { alert('There was a problem with your query: ' + response.getMessage() + ' ' + response.getDetailedMessage()); return; } var data = response.getDataTable(); visualization = new google.visualization.Table(document.getElementById('table')); visualization.draw(data, { legend: 'bottom' }); } google.setOnLoadCallback(drawVisualization);
Showing posts with label Bash. Show all posts
Showing posts with label Bash. Show all posts

Thursday, February 2, 2017

ซิมเพล็กซ์ รีพีทเตอร์ simplex repeater

โปรแกรม simplex repeater ทำเองก็ได้

บทความนี้ แสดงวิธีการ สร้างสถานนีทวนสัญญาณ เพื่อศึกษา การเขียนโปรแกรมเท่านั้น โปรดขอคำแนะนำกับ ศูนย์ควบคุมข่าย ประจำจังหวัด ก่อน ทดสอบ ครับ

โปรแกรม ซิเพล็ก รีพีทเตอร์ ในบทความนี้ใช้ ภาษาไพทอน ร่วมกัน sound meter  ถ้าอ่านแล้วไม่เข้าใจ ขอให้ย้อน ไปดู โพสท์ เก่าๆ ก่อน  โปรแกรมนี้ จะเป็นการเรียกใช้ สคริป ให้ทำงานเมื่อมีระดับเสียงดังในระดับที่กำหนด โดยจะทำการ บันทึกเสียง 10 วินาที จากนั้น จะส่ง สัญญาณ จาก Pyserial ควบคุม ปุ่ม PTT ของวิทยุสื่อสาร ออกอากาศ ด้วยเสียงที่บันทึกไว้โดย สคริป ที่ควบคุม ชื่อ repeater.sh มีรายละเอียดังในภาพ


 เมื่อ soundMeter ได้รับสัญญาณ เสียงจาก ไมโครโฟน ดังกว่าระดับที่ตั้งไว้ จะทำการบันทึกเสียงในไฟล์ชื่อ simplex.wav 
โดยทำการบันทึกเสียง แชนแนลเดียว ด้วย คำสั่ง rec -c 1 โดยกำหนดความยาวเป็นเวลา 10 วินาที่ ด้วย พารามิเตอร์ trim 0 10
คำสั่ง sleep 0.5 ให้ หยุด 0.5 วินาที เพื่อ ให้ pyserial ทำงาน แล้วจึง ส่งเสียงออกมาด้วย คำสั่ง play simplex.wav
 
ในการใช้งาน window  กับ linux การเรียกใช้ Pyserial ต่างกันเล็กน้อย ไปดูโพสท์ เก่าๆ แล้วแก้ไข การควบคุมที่ บรรทัด #insert PTT on กับ #insert PTT off

ดูวีดีโอตัวอย่างใช้งาน https://youtu.be/z5jsPE5CeDg





ในส่วน GUI ด้วย Tkinter Python 2 มีรายละเอียดดังนี้
#!/usr/bin/python
# coding: utf-8

#program radio+computer  by HS1ZFK
#last modify 2/02/2560 ConchRepeater#  version 2.0 Sox

import os
from Tkinter import *





def SetSerial():
    print "set usb serial converter"



def RepeaterOn():
    #repeater Start
    print "start repeater"
    #print ( tiggerValue.get())
    tig = str(tiggerValue.get())
    command = "soundmeter --trigger +" + tig +" 1 --action exec-stop --exec repeater.sh"
    print command
    os.system(command)

def About():
    Message(Mwin, text="Simplex Repeater by HSZFK"
            "set Mic noise Levea ""and time then click start", bg="royalblue", fg="ivory",relief=GROOVE).pack(padx=10, pady=10)

Mwin = Tk()  #Main Window

#set Menu bar
menubar = Menu(Mwin)


#create pulldown menu
ModeMenu = Menu(menubar,tearoff=0)
ModeMenu.add_command(label="Exit ", command=Mwin.quit)
menubar.add_command(label="Set up serial port", command=SetSerial)

menubar.add_command(label="Quit!", command=Mwin.quit)
menubar.add_command(label="About", command=About)


#display menu
Mwin.config(menu=menubar, bg="light cyan")

Mwin.geometry("450x350+300+300")        #set size and position of window
Mwin.title('Simplex_Sox v2.0 by HS1ZFK')




tiggerValue = Scale(Mwin, from_=300, to=500, length=600,label="trigger",bg="light cyan", troughcolor="blue", tickinterval=25, orient=HORIZONTAL)
tiggerValue.set(370)
tiggerValue.pack()

# set button
Btn1 = Button(Mwin,text=" Start Repeater ", bg="pale green",command=RepeaterOn)
Btn1.pack()

Mwin.mainloop()     #start the event loop


Monday, January 23, 2017

หาตำแหน่ง QRM ตอนวิธีใช้ SoundMeter

โพสท์ที่ผ่านมาได้ ติดตั้ง โปรแกรมเสร็จแล้ว หากยังไม่ได้อ่านเรื่องตามหา QRM ด้วยการจับเวลา อาจจะดูไม่เข้าใจ ขอให้ย้อนไปดู โพสท์ เก่าก่อน ครับ

หลังจาก เราหาระดับความดังเฉลี่ยของเสียงรบกวนในห้องได้แล้ว เมื่อได้ยินเสียงระดับ RMS ดังกว่าที่กำหนด จะให้สคิปทำงาน ในวีดีโอนี้ จะให้ สคริป พิมพ์ ค่าเวลา ออกมาทางจอภาพ  ด้วยสคริปตั้งชื่อว่าpt.sh

 การใช้งาน soundmeter ด้วยคำสั่ง

$ soundmeter --trigger +350 1 --action exec-stop --exec pt.sh

เป็นคำสั่ง --trigger +350 เป็นการตั้งค่าให้ สคริปทำงานเมื่อ มีค่า RMS ของเสียงเกินกว่า 350

หมายเลข 1 หมายถึงให้ทำตามคำสั่ง 1 ครั้ง
คำสั่ง --action exec-stop หมายถึงให้ทำงานตามสคริป จากนั้นให้หยุดทำงาน 
คำสั่ง --exec pt.sh หมายถึงให้ทำงานตามสคริปชื่อ pt.sh

 ลองดูวีดีโอ คลิป https://www.youtube.com/watch?v=31R_6wcJiPI
 

Friday, January 20, 2017

หาตำแหน่ง QRM

หาตำแหน่ง QRM ด้วย การจับเวลา

เครื่องรับ GPS มีหลักการคำนวนพิกัด โดยคำนวณ จาก ความแตกต่างของเวลาที่สัญญาณที่ส่งจากดาวเทียมแต่ละดวงส่งถึงเครื่องรับ ถ้าเราใช้หลักการเดียวกันนี้ในการหาตำแหน่ง QRM เช่น สมมุติ สถานนีควบคุมข่าย HS1AB และ สถานนี HS1AM ซึ่งทั้ง สองสถานนี เราทราบ พิกัด GPS ต้องการตรวจหาตำแหน่ง QRM โดยการจับเวลา เมื่อได้รับสัญญาณ เสียงจาก ลำโพง (เสียงของ QRM) เอาเวลาที่แตกต่างกัน มาทำการคำนวณ ก็สามารถหาตำแหน่ง QRM ได้เช่นกัน
คลื่น เดินทางได้ 299,792,458เมตร ต่อ วินาที
นั่นคือ ใน 1 นาโน วินาที จะเดินทางได้ 29.9792458 cm

ในการตรวจจับ หาตำแหน่ง QRM ต้อง มีการติดตั้ง โปรแกรมที่ตรวจสอบ เสียงจาก วิทยุสื่อสาร ที่ทำการตั้งโทน สเควร์ เท่ากัน, สายอากาศ ที่มีกำลังขยาย ในระดับเดียวกัน อย่างน้อย 3 สถานนี แล้วนำ ค่าเวลามาคำนวณ


ในบทความนี้ จะใช้ โปรแกรม  Soundmeter 0.1.3 Python Package

ซึ่งเป็น  command line tools สำหรับตรวจวัดระดับเสียงแล้วเมื่อได้ยินเสียงตามระดับความดังที่กำหนด ก็สั่งให้ ทำตามคำสั่งสคริป

ในการใช้งาน ตัวอย่าง เช่น เมื่อได้ยินเสียงทาง ไมโครโฟน
ให้ บันทึกเสียง
หรือ ให้พิมพ์ เวลา เพื่อใช้ในการคำนวนหา QRM
หรือ ให้วิเคราะห์ เสียง  sound recognizer
หรือ เข้ารหัสเสียง เป็น GSM , FSK, codec2 ก่อน ส่งออกอากาศ

วิธีติดตั้ง Dependencies System Packages ก่อน ด้วย คำสั่ง

$ sudo apt-get install portaudio19-dev python-dev alsa-utils





จากนั้นติดตั้ง PyPi packages  ดังนี้
argparse
pyaudio
pydub
python-daemon

 ด้วยการพิมพ์ คำสั่ง

$ sudo -H pip install soundmeter --allow-all-external --allow-unverified pyaudio


หลังจากติดตั้งเสร็จ ให้ทำการ reboot เครื่อง และทดสอบผลการติดตั้งด้วย คำสั่ง
$ soundmeter

จะปรากฎดังในภาพ แสดงว่า ติดตั้ง สมบูรณ์ แล้ว

ก่อนที่จะใช้งาน ต้องทำการหา ค่าเฉลี่ย เสียง รบกวน ในห้องก่อน ในวีดีโอคลิป

 แสดง การตรวจจับ 5 วินาที่ ด้วยคำสั่ง
 https://www.youtube.com/watch?v=7dTLNtQWQTY


$ soundmeter --collect --seconds 5











เมื่อต้องการ เรียกใช้งาน เมื่อมี ระดับ เสียง RMS มากกว่า 317 แล้วให้ สคริป ทำงาน 1 ครั้ง แล้วหยุดทำงาน ตัวอย่างเช่น ต้องการให้ บันทึกเสียงสนทนา เราต้องเตรียม สคริปไว้ก่อน ในตัวอย่างใช้ชื่อว่า record.sh
 ให้พิมพ์ คำสั่ง

$ soundmeter --trigger +317 1 --action exec-stop --exec record.sh

ส่วนรายละเอียด คำสั่งอื่นๆ ลองไป อ่านดูใน
https://pypi.python.org/pypi/soundmeter