A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.

60A10 – เครื่องนับคนเข้า-ออก ห้องสมุด (Human Flow Counter)

<< โครงงานปี 2560

หลักการ ของการตรวจวัดคนเข้า-ออก ห้องสมุด   โดยใช้ IR Sensor







Arduino IR Obstacle Sensor: Tutorial and Manual

โครงงาน SICC 60

โครงงานปี 2560


Raspberry Pi เป็น Mumble Client

ทำ Raspberry Pi เป็น Mumble Client และมีปุ่ม Push-to-Talk ในตัว



Previously we posted about the Raspberry Pi’s ability to modulate one of its pins to produce FM transmissions with PiFM. A developer (F5OEO) has recently expanded on this idea, and now the Raspberry Pi is capable of modulating and transmitting FM, AM, SSB, SSTV and FSQ signals anywhere between 130 kHz to 750 MHz.

To transmit with the Raspberry Pi all you need to do is plug in a wire antenna to Pin 12 (GPIO 18) on the GPIO port and run the PiTx software by piping in an audio file or image for SSTV.

Important Disclaimer: While the output power is very small, you should still take great care as the carrier is a square wave, and there is no filtering on the antenna output. So any transmissions will cause harmonics all across the spectrum – possibly interfering with life critical devices. A filter *must* be used if you actually plan on transmitting with any sort of range further than your room. The predecessor PiFM has been reported to have a range of 10cm without an antenna, so it may be best to not connect an antenna to the pin if just testing. With a simple wire antenna the range is increased to 100m which could affect your neighbours. There are also strict laws and licences governing transmitting in most countries so make sure you follow them carefully. In short, get your ham licence and understand what you are doing before transmitting with any sort of amplification/range.

The code for PiTX can be downloaded at Also see the authors (@F5OEOEvariste) Twitter account at for some more info about PiTX.

PiTX transmitting SSTV and received in HDSDR. From PiTX's author's Twitter @F5OEOEvariste
PiTX transmitting SSTV and received in HDSDR. From PiTX’s author’s Twitter @F5OEOEvariste

Over on YouTube the author of PiTx has also uploaded a video showing a wireless doorbell being replayed with PiTx. On the video description he writes:

PiTx is a software which permit to transmit HF directly through a pin of Raspberry Pi GPIO. Unlike PiFM which transmit only in FM, PiTx is able to perform multi modulation (FM,AM,SSB,SSTV,FSQ) : it has an I/Q input to be agnostic.
The demonstration here is done in several steps :
– Record an I/Q file from a doorbell transmitter on 434MHZ (first part)
– Playing it with the Raspberry Pi using Pitx on HF on same frequency
– Listen to the doorbell receiver which recognize the signal

Conclusion : Pitx is now a real TRANSMIT SDR at very low cost. Be aware that it generate lot of harmonics and never compete with USRP or HackRF.
Goal is to popularize the transmission as rtlsdr popularize the reception.


Building an APRS iGate using a Raspberry Pi and a TV tuner dongle

I’ve been messing around with APRS – the Automatic Packet Reporting System – for some time now and had noticed an absence of coverage in my local area. The end goal of APRS is to feed packets (which might be position data, weather reports, messages or other information) to the APRS-IS (which can be viewed at, and this is done via digipeaters and iGates. A digipeater merely re-transmits packets, until they reach an iGate, which feeds them to the Internet.

My local RAYNET group frequently uses APRS for position tracking at events, but often position reports fail to reach control due to a lack of APRS coverage. I therefore deemed it would be a good project to make a portable, lightweight iGate that could be deployed quickly.

This was done using a Raspberry Pi and RTL-SDR USB dongle – while it is easier to feed the audio output of a radio into the Pi, this does increase the price of the setup; an RTL-SDR dongle can be purchased for as little as £10.


  • Raspberry Pi running Raspbian / Debian
  • RTL-SDR dongle
  • Powered USB hub (the Pi cannot provide enough current to run the RTL-SDR)
  • A network connection – this could be via ethernet, WiFi or 3G
  • Power – either a 5V mains power supply, or a battery. The fact that the Pi runs from 5V means one could use a high-capacity mobile phone ‘power bank’ to run this in a remote location temporarily


Download a Raspbian image from – I used the NOOBS images as these are slightly easier. Extract the image to your Pi’s SD card.

Upon booting the Pi for the first time, ensure you go into advanced settings and enable SSH, as well as changing the hostname to something memorable and descriptive. Then, set up your network link. It is also advisable to force audio output via the 3.5mm socket rather than HDMI, as this will make troubleshooting easier later.

Once an Internet link has been established, update the Pi from the Terminal:

Setting up the RTL-SDR dongle

By default, the Pi will attempt to load its own drivers to use with the RTL-SDR dongle. However, these assume it is being used for its original purpose (watching Freeview TV), and so we must blacklist them.

Then add the following lines to the file:

To save the file, press Ctrl+X, press Y and then hit enter. Then, reboot:

Following this, create a folder for the software needed to run the RTL-SDR:

You may see error messages at some points – play close attention to the terminal when entering these commands. If  you get an error, this may be because the command needs to be run as ‘root’ – re-enter the command, but prefixed by ‘sudo’.

We will then install ‘sox’ – a utility that converts audio formats to others – so that we may test the RTL-SDR later.

Check the RTL-SDR dongle is working with the Pi

You should (hopefully) get no packet loss, however when I ran this on my Raspberry Pi Model B (2011), I got loss of around 50 bytes – the iGate still worked, however. The more powerful Raspberry Pi 2 does not suffer from this issue.

We will then test the dongle itself by listening to broadcast radio – I chose to use BBC Radio 1 on 98.5MHz:

Plug in a pair of headphones to the Pi and you should be able to hear your selected radio station.

Then, try 144.800 MHz, transmitting (on low power) on a HT to check you can hear narrow-band FM signals:

Calibrating the SDR

Many of these cheap dongles are not particularly accurate. I therefore plugged mine into a laptop running SDRSharp and transmitted on 144.800 MHz to calculate the necessary offset. With my particular RTL-SDR, one needs to set its frequency to 144.791 MHz when listening to 144.800 MHz.

Decoding the APRS packets

APRS packets are transmitted as AFSK1200 – that is, audio-frequency shift keying at 1200 baud. multimonNG is a piece of software that is capable of decoding this data.

Having done so, we then want to test that the Pi is decoding packets. Note that the frequency here should be set so that the RTL-SDR is actually listening to 144.800 MHz…

Then, transmit an APRS packet on 144.800 (if you do not have an APRS capable radio you can use the APRSDroid app,  holding your phone up to the microphone). You should see multimonNG output the content of the packet.

Feeding the packets through to APRS-IS

pymultimonaprs is a script that interfaces with the RTL-SDR to send APRS packets to the Internet.

You then need to generate your APRS passcode, which is needed to send traffic to APRS-IS (replace T3ST with your callsign):

Note down this passcode, as you will need it later.

We will then edit /etc/pymultimonaprs.json – setting the proper frequency and gain*, as well as our callsign, SSID (-10 for iGates), passcode, gateway, comment and location.

*a setting of 42.1 worked well for me. Run rtl_test to get a list of possible gain values.

We will then test that the script is working:

Go to, search for your callsign and hopefully see your iGate on the map.

Making the script run at startup

Then paste in:

Make the script executable and start it:


And that’s it – you’re finished!


Cover image: Russ Sanderlin – CC 2.0 BY-SA 


ร้านจำหน่ายอุปกรณ์ Solarcell

โปรแกรมสร้าง Model 3D สำหรับ 3D Printer ทำงานผ่านเว็บ

Best 3D Printing Software #5: TinkerCAD3D printing software for beginners: TinkerCAD

For Beginners who want to Design 3D Print Models

TinkerCAD is an online computer-aided design (CAD) software for 3D printing that is a good entry point for beginners. However, its feature set is limited compared to BlenderFreeCAD and SketchUp, so many users switch over to a more powerful tool later.

Similar to 3D Slash, you can build your model from basic shapes. Unlike 3D Slash, however, TinkerCAD allows you to create geometrical (vector) shapes in 2D and convert them into 3D models.

Visit: Autodesk TinkerCAD

KISS TNC by m0pzt

Projects : KISS TNC
Most of this project is based-upon the firmware from Mobilinkd but some discrete parts and some soldering (or breadboard) is required to get things working.  By re-flashing an Arduino-compatible microcontroller, it’s possible to turn it into a KISS TNC for use with APRS/AX25.  Depending upon where you get your ‘duino boards from, you can be ready to go on APRS for around £10 – see my product on Ham Goodies for pre-programmed solution.

Download my PDF guide here


Arduino Multiband Beacon

Arduino Multiband Beacon

  • 144 MHz (2 meters)
  • 432 MHz (70cm)
  • 902 MHz
  • MULTI-BAND Operation (successful)
  • 5-BAND Operation (TESTING)






This little low cost FM transmitting card can be used for different applications, like:

  • APRS Tracker
  • APRS WX station
  • APRS for sounding balloon
  • Fox hunt
  • Beacon for emergency exercice

Most of the time , the transmission of an APRS signal is AFSK , that is to say, an electronic card is connected to the BF input of a conventional transceiver. This is often bulky and power hungry.

The proposed system is totally different from what he usually does is because the electronic card includes the FM transmitter, the AX25 / APRS protocol and decoding NMEA frame.


  • Large VHF coverage (50 MHz to 200 MHz)
  • low cost (25/30$)
  • APRS protocol included
  • FM AX25 modulation
  • 4,8V power voltage
  • Input / output connector (GPS, Sensors)
  • Lower consummation
  • 0.5W VHF POWER


The outpout power is about 0,5W and that’s enough for most applications.

The mounting goal is to have a full APRS transmitter for a very low cost (25/30$).

The ATMEGA328P is in fact an Arduino uno, and you need serial FTDI interface to program it.

The Arduino program contains all software layers to generate FM AX25 like a classical tracker and transmitter separatly.

Indeed, the microcontroller drive the dds to simulate FM modulation and generate 1200Hz and 2200hz signal as predict the ax25 protocol.

Since the DDS is limited in higher frequency, it is necessary to add a multiplier for generating a VHF frequency.

The J3 input / output connector is used for GPS receiver or weather station sensor


As you can see, the weather station, used here for measure temperature, can be recharged by a solar cell and thus dispense with external power.


balise VHF_sch

The scheme is organized around an ATMEGA328P, a DDS module (ad9850) and a PLL multiplier ISC511.

The ATMEGA328P drive DDS AD9850 in SPI transfert, but this one comes out a HF signal. You must add a ICS511 multiplier to generate the VHF signal. It ends with a classical 2N4427 transistor amplifier delivering a power of 0.5 W at 5V

TTL output Qn DDS is perfect to control the ICS511. Indeed DDS SINA SINB filtered tensions are too low for the ICS511.

The ICS511 is configured by 8 multiplier with to set the logic level 1 inputs S0 and S1. OE Output Enable command will allow the ATMEGA328P to easily generate modulation for fox hunting.


FM modulation with the DDS9850 generates few harmonics , but it does not matter with a very QRP power.


Power must be 5 V, the card does not have regulator because it can be powered by four 1.2V AA batteries.

Note the P-channel MOSFET will turn off the DSS supply when there is no transmission, it will avoid consuming too much power if the system is powered by a battery. Consumption is reduced to 20mA.

Programming :


In reality ATMEGA328P contains a copy of an Arduino UNO bootloader. It will add a USB serial adapter card to program the microcontroller.

The interface that connects to the J2 connector. (J9 jumper in position 2-3). J9 jumper in position 1-2 when no programmer connected to it to prevent inadvertent Reset.

J3 connector, you will connect the GPS to pins 2 and 3, as well as analog inputs if the card is used in APRS weather station.

J3 pinout

LED D2 is used to view the FIX GPS

If the LED is flashing, the GPS is connected properly and it was not until the FIX. If the LED is illuminated when the FIX GPS time is over and the frames will soon be transmitted.

The adjustable capacitors is used to obtain a VHF max output power

Assembly and testing

Download PCB files here :

VHF Beacon and APRS Tracker PCB files

The assembly does not pose any particular problems, start by soldering SMD components, supports the Arduino and DDS except U2 (ICS511) and the 2N4427 transistor Q42.

componants 3D copper 3D

Make a copy of a Bootloader Arduino into a blank ATMEGA328P.

Connect ATMEGA328P and USB adapter module TTL series and strap J9 connector between pin 2-3. (programming mode)

In the programming environment for Arduino, check the operation of the download. Select the Blink example, change the line int led = 13; by int led = 5;

After downloading the program, the D2 LED should blink.

Test DDS

Insert the DDS on the electronic board.

We must now install the libraries that control the DDS and AX25 protocol.

Download the zip files on the github :



Copy AD9850SPI VHFBEACON and directories in the libraries directory of arduino software.

Download in ATMEGA328P testDDS.ino the sample program located in VHFBEACON / examples

DDS the power LED should on.

With an oscilloscope view the QN signal pin 8 of DDS. Trim the DDS potentiometer to obtain a square wave duty cycle 0.5

DDS TTL output

Now sold the ICS511. Viewing the signal on pin 5 of the ICS511.

You must obtain a sinusoidal signal 144.800MHZ frequency.

ICS 511 Output

Finish by solder the 2N4427 transistor Q42.

With a power meter trim capacitors in order to have a maximum output power.

Programs samples

APRS Tracker: tracker.ino

APRS frame is encoded simply and directly in a unsigned char array table track[ 72] .

It will thus modify the various data fields according to your callsign and your location .

unsigned char     track[72]={‘F'<<1,’4′<<1,’G'<<1,’O'<<1,’H'<<1,’ ‘<<1,0×60,              //avant APTT4 7 octets (0-6)
‘F'<<1,’4′<<1,’G'<<1,’O'<<1,’H'<<1,’ ‘<<1,(‘0’ + 12) << 1,     //F4GOH-11 7 octets (7-13)
‘W'<<1,’I'<<1,’D'<<1,’E'<<1,’1′<<1,’ ‘<<1,(‘0’ + 1) << 1,     //WIDE1-1 7 octets (14-20)
‘W'<<1,’I'<<1,’D'<<1,’E'<<1,’2′<<1,’ ‘<<1,(‘0’ + 1) << 1 | 1 , //WIDE2-1   fin ssid lsb =1 7 octets (21-27) 0x03,0xf0,                                                     //ctrl, pid 2 octets (28-29) ‘/’,’1′,’5′,’0′,’4′,’5′,’2′,’h’,     //heure 8 (30-37) ‘4’,’8′,’5′,’1′,’.’,’2′,’0′,’N’,’/’,’0′,’0′,’2′,’2′,’0′,’.’,’9′,’2′,’E’,     //lat, long 18 octets (38-55) ‘>’,’7′,’3′,’ ‘,’A’,’n’,’t’,’h’,’o’,’n’,’y’,’ ‘,’ ‘,’ ‘,’ ‘,’ ‘};               //commentaire 15 car octets (56-71)

Connect the GPS to pins (TX) 2 and 4 ( RX) J3 connector without forgetting the GND pin 8. Caution must be a TTL compatible signal 0,5Volts . If necessary, add a MAX 232 Driver between GPS and J3 . (J3 pinout.png)

A power-up is complete, the LED D2 will flash until the GPS FIX .

To adjust the transmission frequency, just change the following line

Beacon.freq = (144650000) / 8;

The frames are sent every 10 seconds . To change the time interval change the following line :

Beacon.GPGGA.pperiod = 10;

APRS weather : weather.ino .

F4GOH Weather station

Obviously, there is no weather sensors connected to the J3 connector. It is for you to make a software change according to your needs.

If we want for example to change the value of the temperature, it will change the table at index 62 (   ‘t’,’.’,’.’,’.’, )

unsigned char     wx[90]={‘F'<<1,’4′<<1,’G'<<1,’O'<<1,’H'<<1,’ ‘<<1,0×60,               //avant APTT4
‘F'<<1,’4′<<1,’G'<<1,’O'<<1,’H'<<1,’ ‘<<1,(‘0’ + 11) << 1,     //F4GOH-11
‘W'<<1,’I'<<1,’D'<<1,’E'<<1,’1′<<1,’ ‘<<1,(‘0’ + 1) << 1,     //WIDE1-1
‘W'<<1,’I'<<1,’D'<<1,’E'<<1,’2′<<1,’ ‘<<1,(‘0’ + 1) << 1 | 1 , //WIDE2-1   fin ssid lsb =1
0x03,0xf0,                                                     //ctrl, pid
‘!’,’4′,’8′,’5′,’1′,’.’,’2′,’0′,’N’,’/’,’0′,’0′,’2′,’2′,’0′,’.’,’9′,’2′,’E’,     //lat, long
‘_’,’.’,’.’,’.’,           // direction du vent en degrés // info weather APRS101.pdf p74
‘/’,’.’,’.’,’.’,           // vitesse du vent m/s a confirmer
‘g’,’.’,’.’,’.’,           //g = gust (peak wind speed in mph in the last 5 minutes).
‘t’,’.’,’.’,’.’,           //t = temperature (in degrees Fahrenheit). ex 025, Temperatures below zero are expressed as -01 to -99.
‘r’,’.’,’.’,’.’,           //r = rainfall (in hundredths of an inch) in the last hour.
‘p’,’.’,’.’,’.’,           //p = rainfall (in hundredths of an inch) in the last 24 hours.
‘P’,’.’,’.’,’.’,           //P = rainfall (in hundredths of an inch) since midnight.
‘h’,’.’,’.’,               //h = humidity (in %. 00= 100%).
‘b’,’1′,’0′,’2′,’0′,’2′,   //b = barometric pressure (in tenths of millibars/tenths of hPascal). décipascal
‘A’,’L’,’E’,’C’};           //code id du fabricant de la station météo 4 car max

For example, to change the temperature, you can inhale temp () function; and connect an NTC 10K on Analog input A0 of ATMEGA328P through the J3 connector.


The approach will be:

– Reading of the ADC on A0

– Calculate Temperature in degrees Fahrenheit

– Conversion of the value in 3 ASCII characters

– Copy of ASCII characters in the picture wx [] indices 69-71

You can now decode the frame with your favorite receiver

Balloon: balloon.ino

The principle adopted is virtually identical to the weather program, except that the frame is adapted to transmit telemetry.

The approach will be:

– Reading of A1 to A5 ADC

– Conversion of 8-bit value

– Conversion of the value in 3 ASCII characters

– Copy of ASCII characters in array balloon [] from the 77 index

Of course, you can adapt your program according to your convenience.

// sounding ballon char array
unsigned char   balloon[116]={‘F'<<1,’4′<<1,’G'<<1,’O'<<1,’H'<<1,’ ‘<<1,0×60,             //avant APTT4 7 octets (0-6)
‘F'<<1,’6′<<1,’K'<<1,’F'<<1,’I'<<1,’ ‘<<1,(‘0’ + 11) << 1,     //F4GOH-11 7 octets (7-13)
‘W'<<1,’I'<<1,’D'<<1,’E'<<1,’1′<<1,’ ‘<<1,(‘0’ + 1) << 1,     //WIDE1-1 7 octets (14-20)
‘W'<<1,’I'<<1,’D'<<1,’E'<<1,’2′<<1,’ ‘<<1,(‘0’ + 1) << 1 | 1 , //WIDE2-1   fin ssid lsb =1 7 octets (21-27) 0x03,0xf0,                                                     //ctrl, pid 2 octets (28-29) ‘/’,’1′,’5′,’0′,’4′,’5′,’2′,’h’,     //heure 8 (30-37) ‘4’,’8′,’5′,’1′,’.’,’2′,’0′,’N’,’/’,’0′,’0′,’2′,’2′,’0′,’.’,’9′,’2′,’E’,     //lat, long 18 octets (38-55) ‘>’,’1′,’8′,’0′,   //Course degrees (56-59)
‘/’,’0′,’0′,’5′,   //Gps speed knots (60-63)
‘/’,’A’,’=’,’0′,’7′,’2′,’9′,’6′,’6′, // Altitude (feet) (64-72)
‘/’,’A’,’1′,’=’,’0′,’0′,’0′, // Télémetry 0 (73-79)
‘/’,’A’,’2′,’=’,’0′,’0′,’0′, // Télémetry 1 (80-86)
‘/’,’A’,’3′,’=’,’0′,’0′,’0′, // Télémetry 2 (87-93)
‘/’,’A’,’4′,’=’,’0′,’0′,’0′, // Télémetry 3 (94-100)
‘/’,’A’,’5′,’=’,’0′,’0′,’0′, // Télémetry 4 (101-107)
‘/’,’ ‘,’B’,’a’,’l’,’l’,’o’,’n’};   //comment 15 car octets (108-115)

Fox hunting : fox.ino

This program control Output Enable of the ICS51, That’s produces a « beep beep » to the desired frequency.

Controls summary  in VHFBEACON library

Instructions Comments
DDS.begin(13, 9, 8); Initialize DDS with pinouts
DDS.calibrate(125001100); Calibrate DDS, 125000000 typical
Beacon.begin(4, 5, 6, 7); Initialize Beacon with pinouts
Beacon.GPGGA.pperiod =10; Interval in seconds between two transmission, when GPS is connected,
Beacon.GPGGA.debug = true; Show $ GPS sync in serial monitor, when GPS is connected
Beacon.GPGGA.dumpNmea = false; Show Nmea Sentence in serial monitor, when GPS is connected
Beacon.mode =0; 0: fm mode1:SSB USB mode
Beacon.modulation(1); 1 : Enable ics511 Output0 : Disable ics511 Output
Beacon.freq = (144800000) /8; Set frequency for beaconDon’t forget to divide by 8
Beacon.ddsPower(0); 0: DDS Power off1: DDS Power on
Beacon.GPGGA.sync =0; Internal Flag to see if it’s time to send, when GPS is connected
Beacon.sendpacket(track, sizeof(track)); Send AX25 packet as described in unsigned char arrayAdd automatically start and end flag between datas


This little digital transmitter , make you many services for APRS experiments at close range. The card is cheap to make and easy to integrate into a classic electric box . The Arduino software is modified depending on your applications. I installed a mini APRS station in my garden with a 6V solar cell without changing the batteries since 10 months.

Thanks to F1LVT, who inspired me for the concept.


push cars for 1 year old