Thông báo

Collapse
No announcement yet.

Điều khiển thiết bị nhà bằng máy tính

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #91
    Lâu rồi cũng không cập nhật thông tin về các thiết bị điều khiển trong gia đình "cây nhà lá vườn" không biết trên thị trường mình đã có sản phẩm này chưa? Thương hiệu việt. Thật tuyệt vời!

    Comment


    • #92
      Điều khiển thiết bị từ xa bằng mobile

      Nguyên văn bởi bxngoc Xem bài viết
      Vậy nếu bạn đã làm được phần này thì mở một luồng "Điều khiển thiết bị từ xa bằng mobile" cho anh em cùng học hỏi nhé.
      Bác bxngoc nếu có thời gian chỉ giáo cho anh em với. Mình thật sự rất ấn tượng cách giải quyết bài toán của bác ở trên đó. Cám ơn các bạn rất nhiều khi mở ra thread này.
      Chai yo

      Comment


      • #93
        Relax tí trước khi viết tiếp hè
        Attached Files
        “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

        Comment


        • #94
          bxngoc cho e hỏi cái này, e viết chương trình gởi,nhận tin nhắn bằng vb6. tuy nhiên khi chạy chương trình thì nó cứ thông báo lỗi là "object doesn't support this action" sau đó ctrinh trỏ tới dòng "Call puSMSSuiteAdapter.StartListeningEvents", e đã làm theo các hướng dẫn của bxngoc mà vẫn không được, e cũng có chạy thử file trong SDk 2.1, nhưng vẫn báo lỡi như cũ. chắc có lẽ e thiếu component nào đó, xin chỉ dùm e

          Comment


          • #95
            Nguyên văn bởi bxngoc Xem bài viết
            Bạn có thể dùng 1 con cảm biến 1-wire của Dallas như 18B20 hoặc 18S20 dùng PIC hoặc AVR đọc vào rùi dùng MAX232 để giao tiếp với máy tính. Lập chương trình để đọc cổng COM và đưa lên web là xong. Rảnh rỗi mình sẽ viết về phần này.
            Em có thử làm với asp.net nhưng không thành công trong việc hiển thị liên tục dữ liệu trên web .
            Biển học mênh mông , quay đầu lại là!

            Comment


            • #96
              Nguyên văn bởi bxngoc Xem bài viết
              Relax tí trước khi viết tiếp hè
              RE-RELAX...
              Attached Files
              Đêm nay tớ không ngủ - ngày mai tớ ngủ bù

              Comment


              • #97
                Nguyên văn bởi photoman Xem bài viết
                Em có thử làm với asp.net nhưng không thành công trong việc hiển thị liên tục dữ liệu trên web .
                thử với php xem.

                Comment


                • #98
                  Nguyên văn bởi bxngoc Xem bài viết
                  Vậy nếu bạn đã làm được phần này thì mở một luồng "Điều khiển thiết bị từ xa bằng mobile" cho anh em cùng học hỏi nhé.
                  Trước đây cũng mất công sức làm cho được cái này rồi thấy cũng hay bác ạ! Nếu viết một bài hoàn chỉnh thì không có thời gian tuy nhiên dưới đây xin đưa ra đây những hướng dẫn cơ bản để anh em tham khảo.

                  Có hai thành phần cơ bản: phần cứng và phần mềm cai trên điện thoại di động

                  * Về phần cứng: Bao gồm Chip và modem GSM loại thường dùng nhất là Motorola. Chip và modem được kết nối truyền thông qua USART (truyen thong noi tiep). Có nhiều thuật toán để nhận dữ liệu từ chip. Ở đây tôi sử dụng hai vòng lặp while, vòng lặp thứ nhất để kiểm tra số điện thoại di động còn vòng lặp thứ hai nhận dữ liệu. Thường một tin nhắn gửi từ modem sang chip bắt đầu bằng +CMGR: ví dụ như: "+CMGR:002,000,,034 07914889200030F0440B914889295589F30000704091008434 8211060504C350C35032180C0683C16030 OK" trong đó ở đây "4889295589F" là số điện thoại gửi đến (ở đây tin nhắn nhận trong chế độ PDU mode tham khảo tin nhắn trong chế độ PDU). Thuật toán tương tự nhận dữ liệu GPS mà hình như tôi đã post lên topic nào đấy. Thông thường đặt chế độ modem sẽ tự động gửi tin nhắn mới nhận về CHIP hoặc chíp có thể gửi lệnh đọc tin nhắn mới được lưu trong bộ nhớ và xóa tin nhắn đã đọc. Còn về modem thì có thể dùng modem của một hãng nào phù hợp tuy nhiên về cơ bản các lệnh điều khiển modem lạ tập lệnh AT tuân theo tập lệnh chuẩn Châu Âu. Dưới đây tôi xin đưa ra một vài lệnh AT và phân tích để anh em tham khảo:
                  Code:
                  •	Nhà sản xuất: AT+CGMI
                  Thông tin đáp lại là tên nhà sản xuất như Motorola, Ericssion,...
                  •	Tốc độ truyền thông nối tiếp AT+CBAUD=”****”
                  Trong đó “****” là tóc độ Baud theo yêu cầu. Nếu chấp nhận modem sẽ đáp lại OK<cr><lf> sau đó chuyển sang tốc độ Baud mới được cài đặt. Có thể kiểm tra tốc độ Baud hiện tại qua lệnh AT+CBAUD?. Thông tin đáp lại sẽ là tốc độ truyền thông hiện tại.
                  •	Nhập mã PIN: AT+CPIN=”****”
                  Lệnh được sử dụng để nhập mã PIN kết nối với SIM. Dư liệu đáp lại có thể là Ready.
                  •	Chất lượng sóng: AT+CSQ
                  Dữ liệu đáp lại là tình trạng sóng tính theo dBm.
                  •	Chọn chế độ tin nhắn: AT+CSMS
                  Lựa chọn chế độ tin nhắn.
                  •	Chọn định dạng tin nhắn: AT+CMGF=*
                  Chọn tin nhắn dưới định dạng PDU thì * = 0, còn chọn tin nhắn dưới định dạng Text thì *=1. G18 hỗ trợ duy nhất chế độ tin nhắn PDU.
                  •	Chọn số trung tâm: AT+CSCA = “number”
                  Ở đây “number” chính là số trung tâm, với các mạng di động của Việt Nam thì số trung tâm thường là “+84980200030”. Có thể kiểm tra số trung tâm bằng cách gửi lệnh: AT+CSCA?
                  •	Chuyển tiếp tin nhắn trực tiếp từ modem ra thiết bị ngoài: AT+CNMI“*,*,*,*”
                  Ở đây nếu cần chuyển tiếp tin nhắn đến từ modem tới thiết bị ngoài để xử lý ta chọn AT+CNMI=“0,2,2,0”
                  •	Đọc tin nhắn: AT+CMGR=“index”
                  “index” là vị trí tin nhắn trên bộ nhớ, thường từ 0->75.
                  •	Liệt kê tin nhắn: AT+CMGL
                  Lệnh này cho phép gửi toàn bộ tin nhắn đã nhận trong bộ nhớ tới thiết bị ngoài. Ngoài ra nếu sử dụng lệnh này dưới dạng: AT+CMGL=x, nếu x=0 sẽ chỉ liệt kê các tin nhắn mới, x=1 liệt kê các tin nhắn đã đọc, x=2 liệt kê các tin nhắn đã gửi, x=3 liệt kê các tin nhắn chưa gửi, x=4 liệt kê tất cả các tin nhắn.
                  •	Lệnh ghi tin nhắn xuống bộ nhớ: AT+CMGW
                  Lệnh ghi tin nhắn xuống bộ nhớ modem
                  •	Lệnh gửi tin nhắn: AT+CMGS
                  Lệnh gửi tin nhắn đã được lưu trong bộ nhớ.
                  •	Xoá tin nhắn: AT+CMGD=“index”
                  Tương tự với như lệnh đọc tin nhắn, “index” là vị trí của tin nhắn được xoá. Nếu tin nhắn không tồn tại thì g18 báo lỗi.
                  http://techpal.vn
                  Chia sẻ công nghệ, cùng thành công

                  Comment


                  • #99
                    * Về phần mềm: đây là một ứng dụng cài trên máy di động cho phép truyền và nhận tin nhắn qua một port riêng. Phần mềm ứng dụng cho phép lựa chọn thiết bị bật tắt và gửi đi tin nhắn mang thông tin điều khiển đồng thời nhận và hiển thị trang thái các thiết bị tại của phần cứng. Tôi gửi kèm theo toàn bộ mã nguồn chương trình mà tôi viết trên Java cho điện thoại Nokia sử dụng hệ điều hánh Symbian để anh em tham khảo. Các bạn lưu ý các hàm gửi nhận và listen. Trình dịch là carbide J.
                    Code:
                    import java.io.IOException;
                    import javax.microedition.media.*;
                    import javax.microedition.media.control.VideoControl;
                    import javax.microedition.midlet.*;
                    import javax.microedition.io.Connector;
                    import javax.microedition.lcdui.*;
                    import javax.wireless.messaging.*;
                    // Class chinh
                    public class mChinh extends MIDlet implements Runnable, PlayerListener, CommandListener, ItemCommandListener
                    {
                    	Display d;
                    	Form f, fSet, fPassword, fRunning, fEdit, fManual, fHelp, fAbout;
                    	Alert a;
                    	TextField txtSotrungtam,txtLenh,txtFoot, txtItemNameAdd, txtItemNumberAdd, txtItemNameDel, txtItemNumberDel;
                    	TextField txtPassword, txtUserName;
                    //	String LenhThietbi;	
                    	ChoiceGroup cgThietbi;
                    	Command cmExit, cmStart,cmLenh, cmEdit, cmTrungtam, cmDKTay, cmSotrungtamfSet, cmManhinhchinhfRunning;
                    	Command cmHelp, cmAbout, cmManual,cmXoalenh, cmEditNow, cmFinishEdit, cmNhapPass;
                    	MessageConnection ketnoi;
                        Thread streamThread;
                        Image logoDKH;
                        Player vp;
                        int SoThietBi = 6;
                        VideoControl vc;	
                    	public mChinh() throws IOException
                    	{
                    		d = Display.getDisplay(this);		
                    		//Khoi tao ket noi
                    		listen("50000");		
                    		//Khoi tao cac doi tuong			
                    		f = new Form("HMI MAIN FORM");
                    		cmExit = new Command("Exit", Command.EXIT, 1);
                    		cmNhapPass = new Command("Dang nhap", Command.OK,4);
                    		cmStart = new Command("Khoi dong", Command.OK, 1);
                    		cmEdit = new Command("Chinh sua", Command.OK, 1);
                    		cmEditNow = new Command("Dong y", Command.EXIT,5);
                    		cmFinishEdit = new Command("Man hinh chinh", Command.OK,3);
                    		cmTrungtam = new Command("So trung tam", Command.OK,2);
                    		cmDKTay = new Command("Dieu khien tay",Command.OK,1);
                    		cmLenh = new Command("Dong y",Command.EXIT,3);
                    		cmXoalenh = new Command("Xoa",Command.OK,2);
                    		cmManhinhchinhfRunning = new Command("Man hinh chinh",Command.OK,3);
                    		cmSotrungtamfSet = new Command("Dong y", Command.OK, 2);
                    		cmManual = new Command("Gui lenh", Command.EXIT,1);
                    		cmHelp = new Command("Help",Command.OK,4);
                    		txtSotrungtam = new TextField("So trung tam:","+84988612771",200,TextField.PHONENUMBER);
                    		txtItemNameAdd = new TextField("Ten thiet bi moi:","",30,TextField.ANY);
                    		txtItemNumberAdd = new TextField("Vi tri thi bi moi:","",30,TextField.NUMERIC);
                    		txtItemNameDel = new TextField("Ten thiet bi xoa:","",30,TextField.ANY);
                    		txtItemNumberDel = new TextField("Vi tri thi bi xoa:","",30,TextField.NUMERIC);		
                    		txtLenh = new TextField("Nhap lenh dieu khien:","",200,TextField.ANY);
                    		txtFoot = new TextField("Them cuoi:","00",2,TextField.ANY);
                    		txtUserName = new TextField("User name:","",10,TextField.ANY);
                    		txtPassword = new TextField("Password:","",10,TextField.PASSWORD);
                    		logoDKH = Image.createImage("/Logo_DKH.PNG");
                    		// Form Password
                    		fPassword = new Form("NHAP PASSWORD");
                    		fPassword.append(txtUserName);
                    		fPassword.append(txtPassword);
                    		fPassword.addCommand(cmNhapPass);
                    		fPassword.setCommandListener(this);
                    		// Form man hinh chinh
                    		f.addCommand(cmExit);
                    		f.addCommand(cmStart);
                    		f.addCommand(cmEdit);
                    		f.addCommand(cmDKTay);
                    		f.addCommand(cmTrungtam);
                    		f.addCommand(cmHelp);		
                    		f.setTitle("CONTROL SOFTWARE");
                    		f.append(logoDKH);
                    		f.setCommandListener(this);
                    		//Form chinh sua thiet bi
                    		fEdit = new Form("EDIT DEVICE");
                    		fEdit.setTitle("CHINH SUA");
                    		fEdit.addCommand(cmManhinhchinhfRunning);
                    		fEdit.addCommand(cmEditNow);		
                    		fEdit.append(txtItemNameAdd);
                    		fEdit.append(txtItemNumberAdd);
                    		fEdit.append(txtItemNameDel);
                    		fEdit.append(txtItemNumberDel);
                    		fEdit.setCommandListener(this);
                    		//Form sua so ExBox
                    		fSet = new Form("SO ExBo");
                    		fSet.setTitle("SO ExBo");
                    		fSet.addCommand(cmSotrungtamfSet);
                    		fSet.setCommandListener(this);
                    		// Form Running
                    		fRunning = new Form("LUA CHON THIET BI");
                    				fRunning.addCommand(cmLenh);
                    		cgThietbi = new ChoiceGroup("          DANH SACH THIET BI",ChoiceGroup.MULTIPLE );
                    		cgThietbi.append("Nguon tong", null);
                    		cgThietbi.append("Binh nong lanh", null);
                    		cgThietbi.append("May dieu hoa", null);
                    		cgThietbi.append("May giat", null);
                    		cgThietbi.append("Tu lanh", null);
                    		cgThietbi.append("Den chieu sang", null);
                    		cgThietbi.setItemCommandListener(this);
                    		fRunning.append(cgThietbi);
                    		fRunning.setCommandListener(this);		
                    		// Form gui lenh tay
                    		fManual = new Form("GUI LENH DIEU KHIEN");
                    		fManual.setTitle("CONTROL SOFTWARE");
                    		fManual.addCommand(cmManual);
                    		fManual.addCommand(cmManhinhchinhfRunning);
                    		fManual.addCommand(cmXoalenh);
                    		fManual.append(txtLenh);		
                    		fManual.append("Chu y: Lenh phai dung dinh dang cua he thong.");
                    		fManual.setCommandListener(this);
                    		// Form help
                    		fHelp = new Form("Help...");
                    		fHelp.append("Chuong trinh duoc su dung cho cac may dien thoai Nokia co he dieu hanh Symbian OS60. Sau khi cai dat khoi dong chuong trinh man hinh chinh hien ra. " +
                    				"Bam chon phim Option de tuy chon cac menu. Chon menu 'Khoi dong' de vao man hinh dieu khien. Chon menu 'Dieu khien tay' de gui lenh dieu khien bang tay. Chon menu 'So trung tam' de cai dat so tram Master. " +
                    				"Chon menu 'Dieu khien tay' de gui lenh bang tay. Chon menu Help de duoc tro giup.");
                    		fHelp.append("Thong tin chi tiet lien he: dinh_vu_ngoc@yahoo.com");
                    		fHelp.addCommand(cmManhinhchinhfRunning);
                    		fHelp.setCommandListener(this);
                    	}
                    	
                    	protected void destroyApp(boolean p1)
                    	{
                            try {            
                                ketnoi.close();
                            }
                            catch( Exception e ) {
                            	log("Exception: " + e.toString());        
                            }
                            notifyDestroyed();
                    	}
                    
                    	protected void startApp(  )
                    	{
                    		d.setCurrent(fPassword);
                    		
                    	}
                    
                    	protected void pauseApp()
                    	{
                    	}
                    
                    	public void run()
                    	{
                    		
                    	}
                    
                    	public void playerUpdate(Player p1, String p2, Object p3)
                    	{
                            log("playerUpdate: " + p2);
                    	}
                    	
                    	public void commandAction(Command c1, Displayable d1)
                    	{
                    		String LenhThietbi;	
                    		if (c1 == cmTrungtam) {
                    	       d.setCurrent(fSet);
                    	       fSet.append(txtSotrungtam);	       
                    		} 
                    		if (c1 == cmSotrungtamfSet)
                    		{
                    			d.setCurrent(f);
                    		}
                    		if (c1 == cmManhinhchinhfRunning)
                    		{			
                    			d.setCurrent(f);
                    			
                    		}
                    		if (c1 == cmExit)
                    		{			
                    			 try {            
                    		            ketnoi.close();
                    		        }
                    		        catch( Exception e ) {
                    		        	log("Exception: " + e.toString());        
                    		        }
                    		        notifyDestroyed();		     
                    		}
                    		if (c1 == cmStart)
                    		{
                    			d.setCurrent(fRunning);			
                    		}
                    		if (c1==cmEdit)
                    		{
                    			d.setCurrent(fEdit);
                    		}
                    		if (c1==cmEditNow)
                    		{
                    			if (txtItemNameAdd.getString()!= null)
                    			{
                    				cgThietbi.append(txtItemNameAdd.getString(), null);
                    				SoThietBi=SoThietBi+1;
                    			}
                    			if (txtItemNameDel.getString()!= null)
                    			{
                    				for (int i=0; i<=SoThietBi;i++)
                    				{
                    					if (cgThietbi.getString(i) == txtItemNameDel.getString()) 
                    					{
                    						cgThietbi.delete(1);
                    						SoThietBi=SoThietBi-1;
                    					}
                    				}				
                    			}
                    			d.setCurrent(f);
                    		}
                    		if (c1==cmDKTay)
                    		{
                    			d.setCurrent(fManual);			
                    		}
                    		if (c1==cmXoalenh)
                    		{
                    			txtLenh.setString("");
                    		}
                    		if (c1==cmManual)
                    		{
                    			if (txtLenh.getString()!=null)
                    			{
                    				GuiLenh(ketnoi,txtSotrungtam.getString(),txtLenh.getString());
                    			}
                    		}
                    		if (c1==cmHelp)
                    		{
                    			d.setCurrent(fHelp);
                    		}
                    		if (c1==cmLenh)
                    		{
                    			LenhThietbi="";
                    			for(int i=0; i<=6; i++)
                    			{				
                    				if (cgThietbi.isSelected(i))
                    				{					
                    					LenhThietbi = "" + (i+2)*100000000;					
                    				}
                    			}			
                    			if (LenhThietbi != "")
                    			{
                    				GuiLenh(ketnoi,txtSotrungtam.getString(),LenhThietbi);
                    			}
                    		}
                    		if (c1==cmNhapPass)
                    		{
                    			d.setCurrent(f);
                    			if (txtPassword.getString()=="dkh43")
                    			{
                    				if (txtUserName.getString()=="dhgtvt")
                    			{					
                    			}
                    			}
                    		}
                    	}
                    	
                        
                    	public void log(String msg){
                        	//a = new Alert("Exception", msg, null, AlertType.CONFIRMATION);
                        	//d.setCurrent(a, f);
                         }
                        
                       	public void commandAction(Command c, Item m) {
                       		
                    	}
                    
                     public void GuiLenh
                      (MessageConnection connection, String destAddress, String Body) {
                    
                        // Construct the message
                        TextMessage Message = (TextMessage)connection.newMessage(
                            MessageConnection.TEXT_MESSAGE,
                            "sms://" + destAddress +":50000");
                    
                        // Load noi dung tin nhan
                        Message.setPayloadText(Body);
                    
                        try
                        {
                          // Gui tin nhan
                          connection.send(Message);     
                        }
                        catch (IOException ioex)
                        {
                          log("IOException: " + ioex.toString());
                        }
                        catch(SecurityException syex)
                        {
                          log("SecurityException: " + syex.toString());
                        }
                        catch (Exception ex)
                        {
                          log("Exception: " + ex.toString());
                        }
                      }
                    
                      public void messageReceivedHandler (TextMessage receivedMessage) {
                        String senderAddress = receivedMessage.getAddress();
                        String receivedMessageBody = receivedMessage.getPayloadText();
                    
                        log ("Text Message received: " + receivedMessageBody);
                      }
                      public void listen (String MessageServerPort) {
                    	    try
                    	    {	     
                    	      ketnoi = (MessageConnection) Connector.open(
                    	          "sms://:" + MessageServerPort);	      
                    	      ketnoi.setMessageListener(null);
                    	    }
                    	    catch(Exception ex)
                    	    {
                    	      log("Exception during listen: " + ex.toString());
                    	    }
                    	  }
                    
                    }
                    http://techpal.vn
                    Chia sẻ công nghệ, cùng thành công

                    Comment


                    • Ý tưởng và giải pháp của các Bác hay quá. Em muốn mua một bộ relay quá nhưng không biêt mua ở đâu. Em không phải là dân điện tử nên không biết làm cái board relay. Có Bác nào biết chỗ bán cái đó chỉ Em với!
                      Em thấy có cái link này, nhưng không biết có dùng đượng không (PRB.C01): http://www.dochoi.com.vn/Acc.html

                      Comment


                      • Em chẳng biết gì về điện tử, thấy vấn đề của anh DinhVan đưa ra rất hay. Làm đã được cái mạch giao diện bằng rơle rồi nhưng khổ nỗi k biết dùng phần mềm đó để điều khiển 8 cái rơle bằng cách nào cả. Các bạn ai biết xin chỉ giúp đệ với, để điều khiển tuần tự 8 cái rơle này đóng mở thì pải làm sao? làm gì trên cái phần mềm đó.
                        Thank các bạn trước ha.

                        Comment


                        • hehhhehe
                          gfgsầgg

                          Comment


                          • Nguyên văn bởi kienvtc Xem bài viết
                            Chán quá sao tôi upload file mãi không được nhỉ. Tôi có source code và mạch phần cứng để điều khiển thiết bị qua internet mà không cần phải thông qua máy tính. (được xây dựng theo kiểu web server) muốn post mạch nguyên lý lên mà không post được. Ai muốn tài liệu chi tiết thì mail cho tôi. (Đủ để các bạn tự xây dựng một ứng dụng)
                            gửi mail cho mình luôn nha bạn... krilin852000@yahoo.com
                            tp hcm
                            email :

                            Comment


                            • Xin hỏi bác bxbgoc và các bác một chút:
                              Khi làm mạch DK bằng ULN2003 ai có vấn đề gì không nhỉ?
                              Tại sao tôi làm như vậy mà không được: khi khởi động máy tính thì tất cả các relay đều đóng, tức là các pin D0->D7 đều có điện áp, không điều khiển ngắt được. Khi chạy chương trình LPT_Tester thì tất cả đều ngắt và cũng không điều khiển được.
                              Không biết có ai bị như vậy không?

                              Comment


                              • Máy tính của tôi khi khởi động thì điện áp các chân 2-9(D0-D7) đều >3.5V.
                                Vì vậy các relay luôn ở trạng thái đóng mạch.
                                Nhờ các bác cho ý kiến

                                Comment

                                Về tác giả

                                Collapse

                                nguyendinhvan Tìm hiểu thêm về nguyendinhvan

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X