Search This Blog

Monday, September 9, 2013

Communicate to Icomsat V1.1

hal pertama yang perlu diperhatikan dalam memulai komunikasi antara Netduino Board dengan GSMshield Icomsat v1.1 adalah :
1. Pastikan Jumper Pada modul terpasang pada D0 untuk Tx dan D1 untuk Rx (berlawanan dengan Rx/Tx pada  arduino board) agar komunikasi dapat terlaksana.
2. gunakan class serial communication utuk memanggil fungsi komunikasi dengan port UART pada Icomsat V1.1
3. Pastikan setting Port sebagai berikut
  • Port name : "Com1" - Com1 pada arduino adalah D0 dan D1 (Rx/Tx)
  • Baudrate : 9600 bps
  • Parity : None
  • databits : 8
  • Stopbits : One

4. Penting buat kita Untuk memanggil event handler sebelum membuka jalur komunikasi (port.open), agar arduino siap mendengarkan string dari Icomsat.

5. Berikut Cuplikan Code nya:(dalam Vb.net Language)

Imports System  
Imports System.Text  
Imports System.Threading  
Imports System.IO.Ports  
Imports Microsoft.VisualBasic.Constants  
Imports Microsoft.SPOT  
Imports Microsoft.SPOT.Hardware  
Imports SecretLabs.NETMF.Hardware  
Imports SecretLabs.NETMF.Hardware.NetduinoPlus  
   
 Namespace Uart  
   Public Class Com_UART  
     Private Shared GSM_UART As SerialPort  
     Private Shared OnboardLed As OutputPort  
     Private Shared DataIn As String  
     Public Shared Sub Main()  
       ' write your code here  
       OnboardLed = New OutputPort(Pins.ONBOARD_LED, False)  
       GSM_UART = New SerialPort("COM1", 9600, Parity.None, 8, StopBits.One)  
       AddHandler GSM_UART.DataReceived, New SerialDataReceivedEventHandler(AddressOf RecieveData)  
   
   
       If GSM_UART.IsOpen = False Then  
   
         GSM_UART.Open()  
         Debug.Print("Port Opening" & " : at baudRate= " & GSM_UART.BaudRate)  
       Else  
         Debug.Print("Port is ready...")  
       End If  
   
       Thread.Sleep(1000)  
   
       Dim bytesTosend As Byte() = Encoding.UTF8.GetBytes("AT+CMGF=1" & vbCr)  
       Debug.Print("Send port : AT+CMGF=1")  
       GSM_UART.Write(bytesTosend, 0, bytesTosend.Length)  
       Debug.Print("Port is writing...")  
   
       Thread.Sleep(Timeout.Infinite)  
     End Sub  
     Private Shared Sub RecieveData(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)  
       Dim Length As Integer = GSM_UART.BytesToRead  
       Dim bufferData As Byte() = New Byte(Length - 1) {}  
       GSM_UART.Read(bufferData, 0, Length)  
       DataIn += New String(Encoding.UTF8.GetChars(bufferData))  
   
       If DataIn.IndexOf(vbLf) >= 0 Then  
         Debug.Print("Command: " & DataIn)  
         DataIn = DataIn.Trim()     ' Get rid of the line feed  
         If DataIn <> "" Then  
           OnboardLed.Write(state:=True)  
           Debug.Print(DataIn)  
         End If  
   
         If DataIn = "" Then  
           OnboardLed.Write(state:=False)  
           Debug.Print("Command should be Cleared :" & DataIn)  
         End If  
         ' Clear the string for the next transmission  
       DataIn=""  
       End If  
     End Sub  
   End Class  
 End Namespace   

Monday, September 2, 2013

Mendefinisikan Sinyal pada Analog dan Digital input

Analog Read pada Netduino

Dalam mentejermahkan sinyal analog pada pin A0 di netduino kita bisa merujuk pada forum berikut :

Analog Input Read C#.Net

Download disini untuk class yang saya gunakan.
pada forum tersebut, output yang dihasilkan pada jendela debug adalah sebagai berikut

Raw Value: 940  ; Volts: 3.02929688
Averaged Value: 912    ; Averaged Volts: 2.93906236

Raw Value: 913  ; Volts: 2.94228506
Averaged Value: 920    ; Averaged Volts: 2.96484375

Raw Value: 884  ; Volts: 2.84882808
Averaged Value: 902    ; Averaged Volts: 2.90683579


Hasil di atas merupakan output yang tidak diharapkan, karena input yang diberikan pada Pin A0 adalah ==0, sementara pada jendela debug tertulis seperti diatas. Solusi untuk problem ini adalah dengan menambahkan Pull Down sebesar 100ohm - 1kohm untuk mendapatkan hasil yang sesuai (input 0v, output 0v).

Notes:
1. Analog Input pada Netduino+ memiliki limitasi 10 bit dengan max input voltage 3.3V. artinya bahwa pada chip ADC 10 bit memiliki nilai byte 2^10 = 1024 segmen dangan kapasitas reference 3300mv. dengan begitu kita dapat mengetahui bahwa resolusi pengukuran voltage pada netduino adalah 3300/1024 = 3.223mV ( volts per counts).

2. Analog input pada netduino tidak dapat menerima voltage lebih dari ~3.5V, berpotensi merusak ADC chip pada netduino ketika kita memaksakan arus lebih dari batas maximum nya. untuk itu perlu menambahkan R seri (pada kasus ini saya menggunakan 1 Kohm)pada input nya untuk membatasi jumlah arus yang masuk. untuk menghindari loncatan voltage (incase user tidak sengaja memberikan input analog lebih dari batas nya) yang berpotensi merusak sebaiknya menambahkan Dioda Zener antara Input analog dan Gnd.

3. Analog Read pada netduino memiliki noise sebesar 0.3mv - 0.6 mv. Belum ada solusi untuk menyelesaikan masalah ini. Patut untuk di coba, beberapa literatur mengenai reduksi noise signal analog mengatakan ada 3 kunci utama untuk dapat mereduksi noise pada suatu sinyal yaitu : Power Supply, Grounding dan Pengkabelan yang benar.

4. Saya mendeteksi ada nya cross talk pada netduino A4/A5 ketika digunakan sebagai SDA/SCL I2C device (dalam hal ini saya menggunakan RTC). CrossTalk terjadi antara pin tersebut dengan pin Analog lainnya (A0 - A3). dan menurut saya ini termasuk kedalam dynamic cross talk. ada beberapa literatur yang dapat menjelaskan bagaimana mengatasi hal ini.


Cheers,

semoga bermanfaat.

Sunday, September 1, 2013

Membuat Data Logger Untuk Pengembangan Stasiun Cuaca Otomatis Menggunakan Netduino+

Latar Belakang
Stasiun Cuaca Otomatis atau lebih dikenal dengan sebutan AWS (Automatic Weather Station) sudah banyak dikembangkan oleh negara - negara maju. Produsen AWS sangatlah banyak dan tersebar diseluruh dunia, salah satu produsen AWS yang terkenal saat ini adalah AWS dari GlobalWater.

Pada dasarnya hampir seluruh jenis AWS yang dibuat oleh para produsen ini memiliki prinsip kerja dan teknologi yang serupa. Prinsip kerjanya pun sangat mudah untuk dipahami. Mengingat pentingnya peran AWS dalam mengumpulkan data cuaca atau iklim dalam berbagai kegunaan dan fungsinya, pasar AWS di Indonesia cukup menjanjikan untuk digandrungi. Sangat disayangkan, AWS yang digunakan di Indonesia didominasi oleh produsen asal luar Indonesia. Hal inilah yang mendorong kami untuk mempelajari dan mengembangkan AWS.

Bagian utama dari sebuah AWS adalah data logger nya, dimana sebuah data logger berperan sebagai pengumpul, pengolah dan penyimpanan data. Tidak sedikit data logger yang memiliki fitur jaringan GSM/GPRS sehingga memungkinkan untuk mengirim dan menyimpan data secara online (tellemetry system).

Data Centre BMKG
BMKG baru - baru ini menyiapkan data centre untuk memusatkan pengumpulan data cuaca yang tersebar di seluruh Indonesia pada satu lokasi. tentunya keputusan ini membuat BMKG selangkah lebih baik dalam pengelolaan dan analisis data yang mereka miliki.

NetDuino+

Netduino adalah salah satu mikrokontroler yang cukup tangguh untuk digunakan sebagai processing unit bagi sebuah AWS. untuk memanfaatkan Netduino+ sebagai DataLogger AWS, hal - hal yang perlu dilakukan adalah mempelajari dasar2 pemograman dan elektronika. kerangka pemograman yang perlu dibangun adalah sebagai berikut:
1. Mendefinisikan Sinyal pada Analog dan Digital input
2. Medefinisikan sinyal RTC (real time clock) untuk dimanfaatkan sebagai pengolah variable waktu.
3. Merekam data kedalam MicroSD
4. Mengolah data menjadi Output kedalam Modul GSM agar dapat ditransmisikan dalam bentuk SMS ke DataCentre. (ini bagian yang paling menantang ^^).

Untuk Elektronika nya, yang perlu disiapkan adalah:
1. Sensor Analog (Suhu, Kelembaban, Tekanan udara dan Radiasi Matahari)
2. Sensor Digital (Curah Hujan, Kecepatan Angin dan Arah Angin)
3. Karena Input Analog pada Netduino sangat terbatas maka perlu dibuat rangkain yang berfungsi sebagai switching input (disini kita gunakan IC 4017)
4. ... akan terus berkembang seiring masalah yang akan kita temui selama riset...


Kenapa Netduino?

1. Netduino Merupakan mikrokontroler yang memiliki fitur paling lengkap (LAN, MicroSDcard, UART port, GPIO)
2. Support 2 bahasa pemrogrman (C# dan Vb.Net), ini yang paling penting karena editor programnya menggunakan VisualStudio .Net sehingga dalam pengembangan nya sangat terbantu dengan fitur2 yang diunggulkan dalam VS.Net.
3. Support hampir semua modul yang biasa dirilis untuk board Arduino, hal ini memudahkan kita untuk mengembangkan apapun dengan sluruh modul yang ada di Arduino.
4. ekonomis


Friday, August 30, 2013

Air Pressure and Kinetic Gas Theory

Air Pressure

what is it?
to confirm what air pressure is, we have to know what pressure mean is. Pressure is amount of energy, mass or force on a unit area. Air and water basically called fluid. So in this case the nature of air and water can be said to be similar. fluid possesses such as pressing in any direction, that's why it follows the shape of the containers.

Kinetic Theory of Gases 

 one of the postulate says, during collisions, the interactions among molecules are negligible. (That is, they exert no forces on one another.)

 This implies:

 1. Relativistic effects are negligible.
 2. Quantum-mechanical effects are negligible. This means that the inter-particle   distance is much larger than the thermal de Broglie wavelength and the molecules are treated as classical objects.
 3. Because of the above two, their dynamics can be treated classically. This means, the equations of motion of the molecules are time-reversible.


what these statement means?

I believe they want to say that the elasticity of the molecule has perfect resilience (elasticity = 100%), where it is contrary to law of elasticity which has been explained that there is not one single item that has perfect elasticity.
So the Biggest question is, if the elasticity of the air molecules are not 100% then somehow the molecules will lost its energy. and if the molecules run out of the energy then it won't be move any longer. yes... we all know, as long as sun is coming up, the molecules won't be run out of the energy. However, if the sun not exist anymore, what happen to the atmosphere?

let's find out....