• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Moduły BT
#1
Znacie jakieś małe moduły BT około 10x10mm  by bez udziału innego mikro-kontrolera odczytywać dane  z czujnika  ADC lub I2C  a najlepiej by można było łatwo zaprogramować... Potrzebuje zrobić mostek czujnik<>ESP32  w esp32 BT mam wolny wiec bym go wykorzystał 

Mysle czy BTM480 lub BM71, RN4871 temu by podołał?
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#2
(10-09-2019, 21:37)Jarewa0606 napisał(a): Znacie jakieś małe moduły BT około 10x10mm  by bez udziału innego mikro-kontrolera odczytywać dane  z czujnika  ADC lub I2C
Puki co, ani małych, ani dużych, modułów z BT, do których jest wtyczka dla arduino, taki jak dla modułów Wi-Fi nie ma.
Istnieją rozwiązania takie jak SmartConnect BTLC1000 ale zapomnij o arduino no i jak to polutujesz?
Możesz też użyć modułu GSM z BT, do którego producent dostarcza IDE (np Air2000, Wavecom) ale to armata na wróbla a małe i tanie nie jest.
 
Odpowiedź
#3
Najłatwiej użyć modułu ESP-01, połączyć po WIFI używając typowych połączeń klient - serwer. Dla modułów BT jest core np. tu: https://github.com/sandeepmistry/arduino-nRF5 nRF51 i nRF52. Swój kod można też wgrać do używanych w modułach BT HM-10 chipów CC2541, ale czym go napisać nie wiem, używałem gotowców.
Nic z BT w takim sensie, że podane i wyjąć sztućce nie jest raczej dostępne. Wg mnie strata czasu, lepiej określić co potrzebujesz zrobić i dobrać najlepsze (najłatwiejsze) rozwiązanie.
Ale jak się upierasz to tam możesz zacząć szukać.
 
Odpowiedź
#4
Jeszcze takie coś dam radę polutowaćWink nie siedzę w BT wiec nie wiem i dlatego pytam. Skoro miał bym użyć armatę to już wole ESP32 ma tylko 25x18mm czyli wychodzi na to ze nie ma nic mniejszego i bardziej przyjaznego :/..


Wifi zajete... odpada...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#5
Wifi może mieć kilka serwerów, mieć serwer i być klientem, wolnych portów jest około 256^2.
 
Odpowiedź
#6
Tylko ja juz mam konfiguracje esp8266<>esp32 esp8266 -serwer esp32- klient, Wiec bym musiał przerobić wszystko... A mi sie nie chce bo esp8266 jest już gotowe a esp32 kończę.. I taki mnie pomysł naszedł że przydał by mi się jeszcze jeden czujnik do ESP32 bezprzewodowo. Dlatego wpadł mi pomysł BT którego nie używam..

A czy PTR5628 zalicza się do tego co pisałeś wyżej??
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#7
Odwracasz kota ogonem, nie szukaj zastosowania do modułu, który znalazłeś w uszkodzonej kamerce z BT, bo albo będziesz miał szczęście i coś faktycznie znajdziesz, albo manual na 1500 stron + niewiadomoco do kompilacji i uploadu flasha. A może moduł nadaje już tylko epitafium i nic po nim?  Określ wymagania i dobierz to co pasuje. Ja w Arduino idę na sępa, Google, zapytanie po angielsku i albo jest cokolwiek możliwe do adaptacji na moje potrzeby albo walka bez sensu (dla mnie). Opracowanie modułu, jak masz doświadczenie, takie sensowne  to miesiące/lata. Bycie pionierem zostawiam geniuszom.
W Arduino super jest to, że jak na razie wszystko jest, wgrywam i działa.
Jak zrobisz sobie serwer na ESP to do 8266 możesz mieć podłączonych stale 5 klientów, lub w trybie ON/OFF dowolną* liczbę. W tym samym czasie możesz być klientem kolejnego serwera. To raczej ilość IP jest ograniczeniem, no i wyobraźnia. *- oczywiście zdrowy rozsądek i do czego to ma być. Takie zbieranie temperatur po domu to raz na parę sekund wystarcza, przesłanie danych przez UDP to ~1ms, komunikatów na parę sekund dopuszczalnie wychodzi parę tysięcy, jest kolizja to powtórzenie, kto amatorsko to przeciąży? Do bezprzewodowego oscyloskopu się nie nada, do tego co robię to na razie nie widzę limitu.
 
Odpowiedź
#8
Nawet do głowy mi nie przyszło by gdzieś wydłubać BT po prostu szukałem w google po zdjęciach by było małe...

Ale czekaj

Korzystam z takiego przykładu AP na esp8266

Kod:
/*
    Wireless Serial using UDP ESP8266
    Hardware: NodeMCU
    Circuits4you.com
    2018
    Master Board creates Access Point
*/
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

const char *ssid = "circuits4you";
const char *pass = "password";

unsigned int localPort = 2000; // local port to listen for UDP packets

IPAddress ServerIP(192,168,4,1);
IPAddress ClientIP(192,168,4,2);

// A UDP instance to let us send and receive packets over UDP
WiFiUDP udp;

char packetBuffer[9];   //Where we get the UDP data
//=======================================================================
//                Setup
//=======================================================================
void setup()
{
    Serial.begin(9600);
    Serial.println();
    WiFi.softAP(ssid, pass);    //Create Access point

    //Start UDP
    Serial.println("Starting UDP");
    udp.begin(localPort);
    Serial.print("Local port: ");
    Serial.println(udp.localPort());
}
//======================================================================
//                MAIN LOOP
//======================================================================
void loop()
{
    int cb = udp.parsePacket();
    if (!cb)
    {
      //If serial data is recived send it to UDP
      if(Serial.available()>0)
        {
        udp.beginPacket(ClientIP, 2000);
        //Send UDP requests are to port 2000
       
        char a[1];
        a[0]=char(Serial.read()); //Serial Byte Read
        udp.write(a,1); //Send one byte to ESP8266
        udp.endPacket();
        }
    }
    else {
      // We've received a UDP packet, send it to serial
      udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
      Serial.print(packetBuffer);
      delay(20);
    }
}
//======================================================================

Czy można sobie po prostu dopisać następnego klienta ?? z innym adresem.. Bo ja mam to na sztywno...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#9
(12-09-2019, 20:17)Jarewa0606 napisał(a):
Czy można sobie po prostu dopisać następnego klienta ?? z innym adresem.. Bo ja mam to na sztywno...
Używasz UDP. UDP jest protokołem bezpołączeniowym. W przeciwieństwie od TCP nie jest protokołem z potwierdzeniem, powtarzaniem błędnych ramek itp. W UDP połączenie nie jest trzymane cały czas, ale jak w np RS485/422 wysyłany jest pakiet i to wszystko. Ma to zalety. Komunikacja jest szybka, dlatego używa się jej np do transmisji pakietów głosowych w VoIP. Kolejna zaleta to to, że nie trzeba trzymać wielu otwartych połączeń, dzięki czemu, liczba klientów może być (prawie) dowolna. nasłuchujesz na wybranym porcie i to wszystko, a klientów rozróżniasz po adresie IP.
Wadą UDP jest to, ze nie masz gwarancji, że pakiet dotarł. Jeśli takie potwierdzenia są potrzebne można wykorzystać ICPM albo ramki zwrotne. ICMP jest lepsze, bo ma "wyższy priorytet" niż ramka UDP.

PS
Starałem się wyjaśnić "łapotologicznie" co łatwe nie jest.
Jeśli ktokolwiek bawi się w TCP/UDP to zakładam, że podstawy (ramki ARP, DHCP, ICMP itp) zna, potrafi posługiwać się programami takimi jak Wireshark. Wie czym wysłać czy to z Gwindow$ czy Linux/Unix ramkę danych czy odebrać ją. Jeśli nie to zapraszam do pogłębienia swojej wiedzy - na pewno nie zaszkodzi, ale może pomóc.
 
Odpowiedź
#10
No tam nic nie masz na sztywno, to nie jest UART 1:1, możesz zrobić kolejny obiekt UDP na innym porcie z kolejnym buforem, albo odbierać na tym samym, możesz mieć zapisanych X klientów i parsować sobie dane wg stałego schematu, np. 1 bajt numer urządzenia, X bajtów komunikat, 2 bajty CRC. Z UDP połączenia się właściwie nie liczą w tym sensie jak napisałem, że max 5. Pakiet UDP po prostu puszczasz w sieć i gdzie doleci to doleci, kto odbierze to odbierze. Możesz też po prostu zaadresować do wszystkich. Możesz mieć w każdym slavie serwer TCP, a zarządzający może być klientem/masterem, to on będzie się łączył do serwerów i zbierał dane. Mając normalny router nie softowy na ESP możliwości jest znacznie więcej, znaczy ESP będzie dodatkowo obciążony funkcją AP. No i to że masz AP w ESP1 to nie znaczy, że serwer nie może być na jego kliencie w ESP2.
Pewnie masz przykłady stąd: https://circuits4you.com/2018/01/01/esp-...unication/.
Wcale nie musisz wysyłać pakietów po jednym bajcie, to przykład. Jak widać tam nie wszystkie pakiety/bajty doleciały. Prościej jest zebrać całą tę tablicę (parsowanie danych, odbiór linii tekstu z UART, znajdziesz tu przykład serialEvent) i jak już masz całą linię tekstu wysyłasz całość. Inny przykład to struktury, robisz sobie zestaw danych i wysyłasz całość (też tu są przykłady). Pakiety raczej częściej mogą się zagubić niż przyjść niekompletne.
Będę miał kiedyś chwilę to potestuję, na razie używałem UDP/TCP głównie do komunikacji z zewnętrznymi serwerami lub z PC do debug gdy UART w ESP był zajęty.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości