Se afișează postările cu eticheta wireless. Afișați toate postările
Se afișează postările cu eticheta wireless. Afișați toate postările

joi, 10 iulie 2014

Adaptor WiFi nerecunoscut de sistemul de operare Windows

   Am achizitionat un adaptor wireless (WiFi) pe USB pentru a-l folosi la placa de dezvoltare Raspberry Pi...
   Din pacate cunostintele mele in Linux sunt foarte reduse, am observat doar ca nu il "vede", asa ca am incercat pe un calculator cu Windows XP, apoi pe unul cu Windows 7, apoi pe altele cu Windows XP si Windows 7, rezultatul fiind acelasi:
   Desi primele sugestii la apelul meu de a rezolva problema, erau de a schimba sistemul de operare in Windows 8, care ar fi rezolvat problema (desi eu nu cred), am mai sapat si la sugestia unui vizitator al paginii de pe Facebook, am cautat ID-ul chipset-ului gasind ca este "USB\VID_0BDA&PID_0179":

   La primele cautari nu am gasit mare lucru, dar insistand, deoarece nici vanzatorul nu avea driver-ele corecte, am dat de pagina Drivers Guru:


unde apare ca chipset-ul este un Realtek RTL8188ETV.
   Tot acolo am gasit si driver-ul, acesta putand fii descarcat de la adresa http://www.driversguru.com/go.php?dr_id=78685.
   Ideea de baza este sa nu renuntati usor cand va loviti de o problema asemanatoare.

PS: Daca scot de la cautare partea cu "USB\" ramanand doar "VID_0BDA&PID_0179" gasesc mai multe site-uri cu driver-e, unul din ele fiind www.magicdriver.com, altul fiind http://www.driveridentifier.com:

joi, 10 octombrie 2013

Module de transmisie/receptie radio si... Arduino (V)

2 temperaturi citite cu LM335 transmise prin radio la un afisaj LCD cu 16 coloane si 2 randuri conectat clasic la Arduino


   Deoarece m-am gandit ca nu toata lumea foloseste comanda afisajului LCD pe 2 fire (i2c), adica nu are acea interfata, m-am apucat sa conectez afisajul clasic, cu 6 fire utile (si 2 alimentare):
   Schema de conectare a modulului de emisie si a celor 2 senzori de temperatura LM335Z la placa Arduino este aceeasi ca cea din articolul anterior:
   La partea de receptor, se schimba modul de conectare:


   Initial, am incercat sa folosesc configuratia din exemplele Arduino, adica asta:
si sa conectez receptorul la pinul 7.. am constatat ca se bloc ca activare apartii de receptor, am conectat si la alti pini si aceeasi eroare, asa ca m-am ami uitat pe documentatia librariei WirtualWre (vezi explicatiile de la skyduino.wordpress.com si mi-am dat seama ca foloseam pinul D11 (digital 11), asa ca am modificat configuratia cum e prezentat mai sus...
   Sketch-ul pentru receptor devine:
  
/*.............................................................
Sending Multiple Variables Using VirtualWire. Receiver
Author: Rodrigo Mompo Redoli
For http://controlrobotics.rodrigomompo.com
adapted sketch by niq_ro (Nicu FLORICA) from http://nicuflorica.blogspot.com
version 5.1
..............................................................*/

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
/*                                    -------------------
                                      |  LCD  | Arduino |
                                      -------------------
 LCD RS pin to digital pin 7          |  RS   |   D7    |
 LCD Enable pin to digital pin 6      |  E    |   D6    |
 LCD D4 pin to digital pin 5          |  D4   |   D5    |
 LCD D5 pin to digital pin 4          |  D5   |   D4    |
 LCD D6 pin to digital pin 3          |  D6   |   D3    |
 LCD D7 pin to digital pin 2          |  D7   |   D2    |
 LCD R/W pin to ground                |  R/W  |   GND   |
                                      -------------------
*/
#include <VirtualWire.h> // use Virtual library for decode signal from Rx module
#include <Time.h> // use Time library for control the time between data from receiver

// Sensors 
int Sensor1Data;
int Sensor2Data;
int t1, t2;
float t10, t20;
 
char StringReceived[21]; 

// other  
int led = 13; //pin for LED
int j=1; // count the messages
int timp1, timp2, dt; // times  

void setup() {

  lcd.begin(16, 2); // set up the LCD's number of columns and rows: 
  
   // set the time for record time and value
   setTime(0,0,0,25,9,13); // set time to Saturday 8:29:00am Jan 1 2011

pinMode(led, OUTPUT); 
 lcd.print("Arduino is ready"); // print a text
// VirtualWire 
    // Bits per sec
    vw_setup(2000);
    // set pin for connect receiver module 
    vw_set_rx_pin(11);  
    // Start the receiver PLL running
    vw_rx_start();
    
 delay (500);
 lcd.clear(); // clear the screen
 lcd.setCursor(1, 0); // put cursor at colon 2 and row 0 = left/up
 lcd.print("niq_ro's rx is"); // print a text
 lcd.setCursor(1, 1); // put cursor at colon 0 and row 0 = left/down
 lcd.print("ready on 433MHz"); // print a text
 delay (2000);
 lcd.clear(); // clear the screen
 lcd.setCursor(14, 0); 
 lcd.print("0/");
timp2 = 0; 
} // END void setup
  
void loop(){
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
      
//Taking the data from the control base
    if (vw_get_message(buf, &buflen)) 
    {
      digitalWrite(led, HIGH);
// put the data number from begin
   lcd.clear(); // clear the screen
if (j<10) lcd.setCursor(14, 0); // put cursor at colon 14 and row 1
if ((j>=10) and (j<100)) lcd.setCursor(13, 0); // put cursor at colon 13 and row 1
if ((j>=100) and (j<1000)) lcd.setCursor(12, 0); // put cursor at colon 12 and row 1
if ((j>=1000) and (j<10000)) lcd.setCursor(11, 0); // put cursor at colon 11 and row 1  
   lcd.print(j);
   lcd.print("/");
   
 int i;
        // Message with a good checksum received, dump it. 
        for (i = 0; i < buflen; i++)
 {            
          // Fill Sensor1CharMsg Char array with corresponding 
          // chars from buffer.   
          StringReceived[i] = char(buf[i]);
     //     Serial.print(StringReceived[i]);
 }
  
      sscanf(StringReceived, "%d,%d",&Sensor1Data, &Sensor2Data); // Converts a string to an array
digitalWrite(led, LOW);        
t1 = Sensor1Data;
t2 = Sensor2Data;

t10 = (100.0*(5.0*t1/1023.0-2.980)+25.0)-1.0;
t20 = (100.0*(5.0*t2/1023.0-2.980)+25.0);


    lcd.setCursor(0, 0);
    lcd.print("t1="); 
    if (t10<10) lcd.print(" "); 
    if (t10>0.0) lcd.print("+"); 
    lcd.print(t10,1);
    lcd.write(0b11011111);
    lcd.print("C");
    lcd.setCursor(0, 1);
    lcd.print("t2="); 
    if (t20<10) lcd.print(" "); 
    if (t20>0.0) lcd.print("+"); 
    lcd.print(t20,1);
    lcd.write(0b11011111);
    lcd.print("C");


timp2 = timp1; // new time replace olt time;
j=j++; // count the message         

 memset( StringReceived, 0, sizeof( StringReceived));// This line is for reset the StringReceived

}


// calculate time from last data received
timp1 = hour()*3600 + minute()*60 + second();
dt = timp1-timp2;

if (dt<10) lcd.setCursor(14, 1); // put cursor at colon 14 and row 1
if ((dt>=10) and (dt<100)) lcd.setCursor(13, 1); // put cursor at colon 13 and row 1
if ((dt>=100) and (dt<1000)) lcd.setCursor(12, 1); // put cursor at colon 12 and row 1
if ((dt>=1000) and (dt<10000)) lcd.setCursor(11, 1); // put cursor at colon 11 and row 1
  lcd.print(dt);
  lcd.print("s");
}
   
   Am facut is un mic filmulet, numit two LM335 temperature transmission to a display wirelessly using Arduino (II):