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);

Saturday, June 18, 2016

ตัวช่วยทดสอบ Digital voice


คำสั่ง sleep ช่วยทดสอบ Digital voice


(นักวิทยุสมัครเล่นขั้นต้น ไม่อนุญาติให้ทำการทดสอบ นะครับ ผู้เขียนแค่ศึกษา ไม่ได้ทดสอบออกอากาศ เลย  จริง จริงงงงงง)

ในการศึกษา การเข้ารหัสและถอดรหัสสัญญาณ ผู้เขียน ได้ QSO ตามความถี่ช่องต่างๆ ที่สัญญาณ พอไปถึง เพื่อหาคนช่วยศึกษา หา คู่สถานนี ที่ รู้เรื่อง Linux พอจะฟังวิธีศึกษา จากผู้เขียนเข้าใจไม่ได้ สุดท้ายเลย ต้องทำคนเดียว เป็นปัญหาอย่างมาก ที่ต้องกด คีย์ออกอากาศ ที่ เครื่องหนี่ง และ ไป ฟังอีกเครื่องหนึ่ง

เพื่อแก้ปัญหานี้ ก็เลย ให้ คอมพวิเตอร์ กด ออกอากาศให้
ใน โพสทนี้ จะใช้ คำสั่ง ตั้งเวลา เหมือนการวางระเบิดเวลา ด้วย คำสั่ง sleep ใช้คำสั่งนี้ ก็มีเวลามากพอไปเตรียม ถอดรหัสสัญญาณ ได้

รู้จักคำสั่ง sleep
sleep เป็นคำสั่งใน bash ใช้เพื่อหยุดการทำงานชั่วคราว มีรูปแบบการใช้งานดังนี้
$ sleep ตัวเลขกำหนดเวลา [Suffix]
Suffix มีความหมายดังนี้

s คือ วินาที (เป็นค่าดีฟอล์ท จะพิมพ์อักษร s หรือไม่ก็ได้)
m คือ นาที
h คือ ชั่วโมง
d คือ วัน
ลองใช้คำสั่งดู
$ sleep 3 (หรือ $ sleep 3s) เป็นคำสั่งให้หยุด 3 วินาที
$ sleep 1m เป็นคำสั่งให้หยุด 1 นาที (สังเกตุ หมายเลขหนึ่งและอักษร mพิมพ์ติดกัน)

ใน bash หากต้องการให้คำสั่งที่ 1 ทำงานสำเร็จ แล้ว ทำงานในคำสั่งที่ 2 ทำงานต่อเนื่อง ทำได้โดยใช้เครื่องหมาย && (หากคำสั่งที่ 1 ทำงานไม่สำเร็จ จะไม่ทำงานคำสั่งที่ 2) ลองทำสอบการใช้งานให้พิมพ์คำสั่ง

$ sleep 2 && echo “Done”

คอมพิวเตอร์จะหยุด 2 วินาที จากนั้นจะพิมพ์ คำว่า Done ออกทางจอภาพ


จากบทความฉบับที่แล้ว เราได้ติดตั้ง ไมโครโฟน ทั้งได้ปรับแต่งตั้งค่าไมโครโฟนด้วย alsamixer จากนั้นได้รู้จักโปรแกรมsox แล้ว
ให้ทดสอบการบันทึกเสียง
คำสั่งคือ rec ตามด้วยชื่อ ไฟล์ ตัวอย่าง เช่น

$ rec rectest.wav

เราจะได้ ไฟล์ชื่อ rectest.wav ที่ไดเรคทอรี่ ที่เรียกใช้งานปัจจุบัน จากนั้นลองเล่นเสียงด้วยคำสั่ง play

$ play rectest.wav

จะได้ยินเสียงที่ทำการบันทึกไว้

ต่อไปเราจะทำให้โปรแกรม sox สามารถรองรับ ไฟล์ mp3 ได้ ต้องติดตั้ง ไลเบอรี libsox-fmt-mp3 เพิ่มเติมด้วยคำสั่ง
$ sudo apt-get install libsox-fmt-mp3

ผู้เขียนได้ทำการ สร้างไฟล์เข้ารหัสเสียง ชื่อ codecAudio.mp3 มาไว้ในโฟลเดอร์ ที่ใช้งานปัจจุบัน เพื่อทำการทดสอบ
ต่อไปลองตั้งเวลาในตัวอย่าง ตั้งเวลา 1 นาที แล้วทำการเล่นเพลง codecAudio.mp3 ด้วยคำสั่งดังนี้

$ sleep 1m && play codecAudio.mp3

แล้วไปยัง เครื่องรับ เพื่อรับเสียง มาทำการทดสอบ ต่อไป
เออ คนเดียว ก็ทำได้วะ แต่ขาดเพื่อน ปรึกษา เวลา ติดปัญหา เนอะ




Thursday, June 16, 2016

Text to speech คนใบ้เล่นวิทยุสื่อสารได้


เป็น ใบ้ ก็ เล่นวิทยุสมัครเล่นได้ 

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

     เมื่อเปิดคลิปให้ดูได้รับคำตอบว่า "วิทยุสื่อสารควบคุมระยะไกล ให้คอมพิวเตอร์มันพูดเองได้ แปลกตรงไหน คราวแรกตั้งใจจะบอกว่า ต่อยอดไป ใช้เข้า hopping code, ไว้หา QRM, ไว้แข่งขัน ในงาน คอนเทส  และ อืี่นๆ ด้วยความเซ็งในอารมณ์ สุดท้ายเก็บไว้เล่นเอง ทดสอบออกอากาศ กับ HS1KQL, E22FNQ, E22MGD และ อีกครั้งกับ เพื่อนสมาชิก กลุ่ม HS1AP , HS1ZHY

โปรแกรม ชื่อ PyMesV14 เขียนด้วยภาษา pythonโดยใช้ เสียงสังเคราะห์ ให้คอมพิวเตอร์ อ่านข้อความแล้วออกอากาศ  มีความสามารถดังนี้

1 load ไฟล์ข้อความได้ ที่ใช้ประจำได้
2 พิมพ์ ข้อความเพิ่มเติม ได้
3 ลบ ข้อความ ได้

ในวีดีโอคลิป เริ่มจาก เพี่มข้อความใหม่ลงไป แล้วกดปุ่ม tts Tx ย่อจาก text to speech ส่วน Tx คือส่งออกอากาศ
จากนั้นลองกดคำที่ตั้งไว้ล่วงหน้า ให้อ่านออกอากาศ

Tuesday, June 14, 2016

ตั้งเวลาอัดเสียง QSO ด้วย crontab


การใช้งาน crontabเพื่อตั้งเวลาให้บันทึกเสียง QSO ของ ศูนย์ ควบคุมข่าย


บทความก่อน ได้เสนอ สคริป อัดเสียง QSO ที่จะอัดเฉพาะ เวลามีเสียง โดยไม่อัด คีย์เปล่าที่ออกอากาศ ไปแล้ว คราวนี้ จะแนะนำคำสัง ให้ สคริป ทำงาน ตามเวลาทำกำหนด เป็นการตั้งครั้งเดียว ให้ทำงานเป็นวงรอบ จนกว่าจะสั่งให้เปลี่ยนแปลง
 
crontab เป็นคำสั่งที่จะทำงาน ตามเวลาที่ได้กำหนดไว้ในตารางเวลา หรือที่เรียกว่า cron table
งานที่สั่งให้คอมพิวเตอร์ ทำ เรียกว่า cron job

รูปแบบของ cron job
min hour dayOfMonth Month dayOfWeek cmd

min Minute 0-59
hour Hour 0-23
dom DayOfMonth 1-31
mon Month 1-12

ด้วยเหตุผลทางด้านความปลอดภัย ยูสเซอร์แต่ละคนจึงมี cron ส่วนตัว 
ที่ตำแหน่ง /var/spool/cron/crontabs/user
เรียกด้วย ยูเซอร์เนมส์ ในตัวอย่าง user คือ hs1zfk

$ crontab -u hs1zfk crontab.new

คำสั่งให้แสดง cron table ให้พิมพ์คำสั่ง
$ crontab -l

แสดง cron table โดยระบุ user ให้พิมพ์คำสั่ง
$ crontab -u username -l

คำสั่งเพื่อแก้ไข cron table ให้พิมพ์คำสั่ง
$ crontab -e

การกำหนดเวลาทำงานของโปรแกรมให้ ทำการสร้าง ไฟล์ ในตัวอย่างชื่อ mycronjobs.txt

เครื่องหมาย * หมายถึง ทำทุกๆนาที, ทุกชั่วโมง....
เครื่องหมาย , หมายถึง ทำงานเป็นช่วง
เครื่องหมาย – หมายถึง ทำงาน กำหนดเวลาเป็นช่วง
ตัวอย่างเช่น
$ cat /home/hs1zfk/mycronjobs.txt

01 00 * * * /bin/sh /home/root/bin/QSO_rec.sh

จากนั้น upload ไปยัง cron table ด้วยคำสั่ง
$ crontab /home/hs1zfk/mycronjobs.txt


คอมพิวเตอร์ก็จะทำงานตามวงรอบที่กำหนดไว้ใน cron table เมื่อต้องการลบcron table ให้ใช้คำสั่ง
$ crontab -r

การใช้งาน มีรูปแบบ สั่ง ทำงาน ,สั่งหยุด ,สั่งrestart ดังนี้

$ sudo /etc/init.d/cron start

$ sudo /etc/init.d/cron stop

$ sudo/etc/init.d/cron restart

ขอบคุณ ภาพจาก เวป http://tecadmin.net/crontab-in-linux-with-20-examples-of-cron-schedule/

Saturday, June 11, 2016

แปลงไฟล์ เสียงให้เป็น GSM





เปลี่ยน ไฟล์ wav ให้เป็น gsm ด้วย sox (Sound eXchange)

แจ้งไว้ตรงนี้ก่อนสำหรับผู้ที่ใช้ windows ถ้าอยากจะแปลงไฟล์เสียงเป็น ไฟล์ GSM ให้ใช้โปรแกรม Audacity


ทำการดาโหลด ได้ที่ http://www.audacityteam.org/download/



SoX ได้ชื่อว่า เป็น Swiss Army knife of audio สามารถทำงานเกี่ยวกับ เสียง ทั้งบันทึก เสียง เล่นไฟล์ เสียง แปลงไฟล์ เสียง ได้หลากหลาย อ่านรายละเอียดได้ที่ http://sox.sourceforge.net/soxformat.html

ไฟล์ เสียง GSM ย่อมาจาก Global System for Mobile Communications นิยมใช้ในการส่งข้อมูลเสียงในระบบ โทรศัพท์ เคลื่อนที่ปรกติ digital GSM จะมี sample rate ที่ 8000 hz (8 kHz)

ในบทความนี้ จะแปลงเสียง  จาก ไมโครโฟน ไปเป็น ไฟล์ เสียง GSM

ขั้นตอน ติดตั้ง SoX ด้วยเหตุที่ เราต้องการ แปลงเสียงเป็น gsm ทำให้ ต้องทำการติดตั้ง libraries libsox-fmt-all เพิ่มเพื่อทำการแปลงไฟล์ gsm ทำการติดตั้งด้วย

$ sudo apt-get install sox libsox-fmt-all
กดตอบ Y เพื่อเริ่มติดตั้ง




ลองทดสอบการ บันทึกเสียงด้วยคำสั่ง rec
 
$ rec -r 8000 -c 1 record_voice.gsm

-r 8000 คือค่า sample rate ที่ 8000 hz (8 kHz)
- c 1 คือ บันทึกเสียง แบบ mono
จะได้ไฟล์เสียง ชื่อ record_voice.gsm


เล่น ไฟล์เสียง gsm ด้วย คำสั่ง play






Wednesday, June 8, 2016

การกำหนดให้โปรแกรมทำงานทันทีหลังเปิดเครื่อง


การกำหนดให้โปรแกรมทำงานทันทีหลังเปิดเครื่อง



 ปรกติ administrator จะสามารถ แก้ไขขบวนการ bootstrap โดยการแก้ค่า config ของ startup script ซึ่งจะขออธิบาย การทำงาน ดังนี้
การทำงานของ Kernel initialization
เมื่อระบบเริ่มทำงานคือ จ่ายไฟให้ cpu จะมีการอ่านค่าจาก rom ซึ่งจะบรรจุคำสั่งให้ไปอ่านข้อมูลจากที่กำหนดไว้ในซึงอาจจะเป็น ฮาร์ดดิส หรือ เอสดีการ์ด ตามที่ต้องการมาเก็บไว้ในเมโมรี ขบวนการนี้ เรียกว่า บูทโหลดเดอร์ (boot loader) ข้อมูลที่อ่านมานี้เรียกว่า Kernel ซึ่งจะทำการตรวจสอบ หา พื้นที่ ram แล้ว จองส่วนหนึ่งไว้สำหรับ ตัว kernel เอง และพิมพ์รายงานว่ามีเมโมรีในระบบเท่าไร สำหรับ user process จากนั้นจะสำรวจ hardware ที่เชื่อมต่อกับระบบ โดยทำการ load driver ต่างๆ เพื่อให้สามารถสั่งงานและสื่อสารกับ hardware ขบวนการนี้เรียกว่า hardware configuration


เมื่อกำเนิด Kernel (เมล็ด) แล้ว จะมีการสร้าง ขบวนการที่เรียกว่า init (โดยการใช้ fork()) แตกกิ่งก้านสาขาออกมา ขบวนการ init จะเป็น parent ของทุก โพรเซส(process) หรืออีกนัยหนึ่ง กล่าวว่า init จะมี process ID 1 โดยที่ process init นี้จะทำงานตลอดเวลาจนกว่า จะปิดเครื่อง (แม้นแต่ superuser ก็ไม่สามารถ kill โพรเซสนี้ได้) เมื่อถึงขั้นนี้ startup script จะทำงาน เรียกโปรแกรม ต่างๆที่จะใช้เริ่มขบวนการ Daemon processes โดยปรกิตdaemon จะทำงานแบบ background โดยมาก daemon process มักถูกสร้างขึ้นในช่วงต้นของ system boot และจะทำงานจนกว่า ระบบ shut down (ถ้าไม่โดนสั่งปิด) การที่จะเรียกใช้ process ไหน ขึ้นกับค่า run levels (run levels คือระดับขั้นของการเรียกใช้งาน เช่น run leves 2 = single user , run level 3-5 = multi-user )
ในช่วงนี้เอง จะเกิดขบวนการ startup Files แบ่งได้ เป็น 3 ประเภท คือ
1 ขบวนการเริ่มกำเนิดของระบบSystem-wide startup files
2 ขบวนการ ล๊อกอินLogin initialization files
3 ขบวนการกำหนดเชลล์ Shell initialization files บางครั้งเรียกว่า environment files
บทความต่อจากนี้จะกล่าวเฉพาะ Bash ซึ่งเป็น เชลล์ที่ใช้ใน RPI (รายละเอียดตำแหน่งและชื่อของไฟล์ จะแตกต่างกันไปจาก Kron Shell (ksh) , C Shell, TC Shell) ขบวนการกำหนด System-wide จะทำการอ่าน startup files ที่ ตำแหน่ง
/etc/.profile (เครื่อหมาย จุด ที่อยู่หน้า profile เพราะ เป็น control hidden file เรียกดูด้วยคำสั่ง ls -l )

ขั้นตอนต่อจากนั้น bash จะทำการอ่าน ไฟล์ในไดเร็คทอรี home แล้วตรวจหาและทำงานตามสคริป อันใดอันหนึ่งที่พบก่อน เพียงไฟล์เดียว โดยหาตามลำดับดังนี้
.bash_profile
.bash_login
.profile
ในไฟล์ทีพบก่อน สคริปจะถูกอ่าน แล้วทำการ login initialization และเมื่อทำตามคำสั่งเสร็จแล้ว bash จะไปค้นหาใน ไดเร็คทอรี home เพื่อหา สคริปที่อยู่ใน
.bashrc
เพื่อทำงานตามคำสั่งที่อยู่ในสคริปที่พบ และกำหนด shell initialization ต่อไป


Monday, June 6, 2016

Broadband-Hamnet

 

 

โครงข่ายเน็ทเวอร์คของนักวิทยุสมัครเล่่น ในยามเกิดภัยพิบัติ Broadband-Hamnet รัศมีทำการ 10ไมล์ (16กม)  ไม่เหมาะกับการใช้เป็น wifi ส่วนตัวในบ้านนะ เพราะ SSID เป็นชื่อเดียวกันหมด ส่งผ่านข้อมูลได้เหมือนปรกติ เช่น IP Video, VOIP, LAN ใช้ความถี่ 802.11g ช่อง channel 1, ซึ่งเป็นส่วนหนึ่งของ แบนด์ 13cm


Broadband-Hamnet เป็นการสร้างเน็ทเวอร์ค โครงข่าย (เดิมชื่อโครงการ คือ HSMM-Mesh) มีลักษณะเด่นคือ ความเร็ว  high speed, มีความสามารถค้นหาเครือขาย วงเน็ทเวอร์ (self discovering) และความสามารถ self configuring




ความเร็วของการส่งสัญญาณเปรียบเทียบ
Broadband-Hamnet ประมาณ 54 Mbps
Packet Radio/APRS: 0.0012 Mbps
Pactor III: 0.003 Mbps
D-Star: 0.128 Mbps

อุปกรณ์ ที่ใช้คือ Linksys WRT54G/GL/GS แล้วนำมาแฟซ เฟิร์มแวร์ ของ Broadband-Hamnet ลงไป



 Linksys WRT54 มีหลายรุ่นก่อนซื้อต้องตรวจสอบก่อน ว่าเป็นรุ่นที่ แฟชเฟอร์แวร์ได้ไหม ตามลิสต์ ข้างล่างนี้
Model                Version
WRT54G          1.0 - 4.0
WRT54G          5.0 and up
WRT54GS        1.0 - 4.0
WRT54GS        5.0 and up
WRT54GL        1.0 - 1.1
โดยดูที่แถบด้านหลังเครื่อง


หากเปลี่ยนชนิดของ เสาอากาศจะส่งได้ถึง  16 กม. ใช้ไฟ DC 12V แบตตรี รถยนต์ 1 ลูกก็ใช้งานสนามได้ทั้งวันแล้ว  ถ้าในวงเน็ทเวอร์ค มีเครื่องใดเครื่องหนึ่งต่อเข้ากับ อินเตอร์เน็ท จะทำให้ทั้งวง เข้าถึงอินเตอร์เน็ทได้


อ่านรายละเอียดที่
http://www.hsmm-mesh.org/just-starting-read-this.html

ดาว์โหลด์ ที่ http://www.hsmm-mesh.org/software-download.html

วิธี ติดตั้ง http://www.hsmm-mesh.org/documentation/68-firmware-installation-instructions.html



Friday, June 3, 2016

คำสั่ง touch


คำสั่ง touch


ปรกติ ถ้ามีการแก้ไข ไฟล์ ข้อมูล และ บันทึก ทับของเดิม วันเวลาที่ระบุจะเป็นเวลา ที่ทำการบันทึก
แต่ ในระบบLinux มีคำสัง touch สามารถ แก้ไข วันเวลาการบันทึก ให้ย้อนหลังได้ รูปแบบคำสั่งคือ

touch -option [[YY[YY]MMDDhhmm[.xx]] filename

โดยที่ option
-m เปลี่ยนเวลาเท่านั้น
-a เปลี่ยน access time
-t เปลี่ยนเวลา มีรูปแบบ ดังนี้ [[YY[YY]MMDDhhmm[.xx]]

Wednesday, June 1, 2016

FreeDV เล่น digital voice


FreeDV เล่น digital voice  
นักวิทยุสมัครเล่น ขั้น ต้น ใครทดสอบก็รับผิดชอบเองนะครับ แค่เล่าให้ฟัง

สัญญาณเสียง แบบ อานาลอก แปลง เป็น เสียงแบบ ดิจิตอล การเข้ารหัส เรียกว่า โค้ด (code) ส่วนการถอดรหัส เรียกว่า ดีโค้ค (decode) เรียกรวมกันว่า โค-เด็ซ (codec) 

นักวิทยุสมัครเล่น ในไทย ส่วนมากจะได้ยิน แต่ D-star ซึ่งเป็น codec ที่เป็น closed-source มีลิขสิทธิ์ ในขณะที่ FreeDV เป็น open source ภายใต้ GNU Public License V2.1
ในการใช้โปรแกรม FreeDV ต้องมี ซาวด์การ์ด 2ชุด ชุดแรกเป็นการแปลงเสียงพูดเป็นสัญญาณ ดิจิตอล ชุดที่สองเป็นชุดที่ต่อกับวิทยุสื่อสาร SSB 

โปรแกรมทีทั้ง เวอร์ชั่น windows 32 บิท , windows 64บิท ,Mac OSX, Linux ดาวโหลดที่ https://freedv.org/tiki-index.php มีรายละเอียดการใช้งานด้วย















มีคนลอง FreeDV บน VHF ได้ผล ลองอ่านรายละเอียด ที่ https://groups.google.com/forum/#!topic/digitalvoice/G2rEF3vgxAo