Trådlös motorstyrning med attiny85

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Hej på er!

Håller ju på och bygger knäskrapare till min MC-kontroll https://elektronikforumet.com/forum/vie ... 5&start=30.
De funkar fint, men problemet är att jag hatar sladdar. Denna kontroll har redan alldeles för många!

Så, jag skaffade mig ett par attiny85 och tänkte skicka över signalen från arduino nano'n till attiny'sen via 433MHz.
Jag får det att funka hjälpligt att tända dioder med, men går bet när det kommer till att driva motorerna.
Ett av problemen är att jag för tillfället inte har några NPN-transistorer utan bara PNP och jag går bet med att styra dem från attiny'n.
De drivs av ett 3xAA-pack per knä.

Men, jag har även trassel med min kod (som jag gissat mig till med hjälp av arduinoforumet). Det känns som att den inte blir särskilt stabil. Om mottagaren läser av precis när sändaren skickar så blir det ju bra, men efter en stund hamnar de i ofas liksom. Jag förstår ju att det säkert finns en bra funktion för detta, men verkar inte kunna hitta de rätta sökorden.

Koden jag har idag ser ut som följande:

Sändare: (denna är bara för test, har en annan .ino som jag skall trycka in det i sedan)

Kod: Markera allt

#include <SoftwareSerial.h>

SoftwareSerial mySerial(11, 10); // RX, TX

const int trigger1 = 3;    // button1 pin
const int trigger2 = 4;    // button2 pin
const int on1 = 1;          // value1 on
const int on2 = 2;          // value2 on
const int off = 0;          // Off, well off..
int triggerstate1 = 0;     // button1 status variable
int triggerstate2 = 0;     // button2 status variable

void setup() {
  // open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // set data rate for softserial
  mySerial.begin(2400);

  // set pin settings
  pinMode(trigger1, INPUT_PULLUP);
  pinMode(trigger2, INPUT_PULLUP);
}

void loop() { 
  // read trigger value
    triggerstate1 = digitalRead(trigger1);
    triggerstate2 = digitalRead(trigger2);
  
  // check if trigger is pressed
  if (triggerstate1 == LOW)   {
    // send serial data "1" 
    mySerial.write(on1);
    Serial.print("T1:");
    Serial.println(triggerstate1);
    
  } else if (triggerstate2 == LOW){
    // send serial data "2" 
    mySerial.write(on2);
    Serial.print("T2:");
    Serial.println(triggerstate2);
  } else {
    // send serial data "0"
    mySerial.write(off);
  }

//delay(1);
}
Detta verkar fungera (sånär som på när jag tar bort de vanliga "Serial.print", då skickar bara mySerial en gång, sen tystnar den)

Mottagaren däremot:

Kod: Markera allt

#include <SoftwareSerial.h>
  // define serial pins
SoftwareSerial mySerial(1,2);   //(RX,TX)
const int pin0 = 0;

void setup()
{
  //define motor pin as output
  pinMode(pin0, OUTPUT);
  //initiate softserial
  mySerial.begin(2400);
}

void loop()
{ if(mySerial.available() > 0)
{
if (mySerial.read() == 1) {
  // turn motor on
  digitalWrite(pin0,HIGH);
    } else {
  //turn motor off
  digitalWrite(pin0,LOW);
    }
  }
delay(1);
}
Skulle någon med ett skarpt sinne och gott tålamod vilja hjälpa mig lite på traven?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Premix
Inlägg: 142
Blev medlem: 15 april 2004, 21:58:05
Ort: Trollhättan

Re: Trådlös motorstyrning med attiny85

Inlägg av Premix »

Inte så mycket hjälp kanske, men en liten annan väg.
Då jag antar att du vill sända on/off så kan det ju funka ok med en IR fyr.

Så istället för o sända med radio så skickar du ett ir pulståg på 10ms för vänster o 20ms för höger.
Sedan så läser du av ir mottagaren med pulsin.
Om ingen puls kan läsas av inom 50ms så går du till off.

Vet inte om det blir lättare eller svårare.
kodar-holger
EF Sponsor
Inlägg: 966
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: Trådlös motorstyrning med attiny85

Inlägg av kodar-holger »

Kunde vid en snabb genomläsning av din kod inte se något konstigt. Kollade lite på dokumentationen för softwareserial och kunde inte se några direkta hakar där heller mer än att man inte kunde använda flera software serial samtidigt och det gör du ju inte. Griper efter något annat:

Om du tar bort radio-hårdvaran och kopplar två trådar istället (jord och tx på ena till rx på andra) fungerar det då?

Det är ju inte säkert att radio-prylarna verkligen klarar att skicka en enstaka byte och garantera att den kommer fram efter att inget hänt på "lång" tid.
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Re: Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Jag får precis samma funktion med tråd istället för RF.
Har gett upp att använda softserial och att köra ren seriedata över rf. Gått över till RadioHead-biblioteket med ordentliga checksummor och grejer. Jag fick inte bort störningarna riktigt.. Har inte riktigt klurat ut allt än, men på god väg.
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Re: Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Premix skrev:Inte så mycket hjälp kanske, men en liten annan väg.
Då jag antar att du vill sända on/off så kan det ju funka ok med en IR fyr.

Så istället för o sända med radio så skickar du ett ir pulståg på 10ms för vänster o 20ms för höger.
Sedan så läser du av ir mottagaren med pulsin.
Om ingen puls kan läsas av inom 50ms så går du till off.

Vet inte om det blir lättare eller svårare.
Tack för tipset!
Har redan tillgång till radion men får jag inte ordning på den så är det nästa test!
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Re: Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Fick ge upp med RadioHead och andra stora bibliotek, de gick inte att kila in i ATtiny’n.
Blev en lösning där jag skickar signaler med olika frekvens beroende på vilken enhet jag vill dra. Funkar fint.
Nästa problem är när jag kopplar på motorn så blir det, lite som väntat, något problem. ATtiny’n verkar resetta sig eller så stör motorn ut signalen.
Spänningsdippar eller spikar kan det ju vara också, men jag har en liten konding över motorn och en skyddsdiod..
hummel
Inlägg: 2531
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Trådlös motorstyrning med attiny85

Inlägg av hummel »

Har du några krav på att signalen går fram via radiolänken? Eller funkar det lika bra om ett eller flera meddelanden tappas bort?
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Re: Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Nej, det gör inget om några paket försvinner på vägen. Bara motorn körs relativt stabilt så länge signalen är hög.
hummel
Inlägg: 2531
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Trådlös motorstyrning med attiny85

Inlägg av hummel »

Hur vet du att signalen är hög om du tappar bort paket?
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Re: Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Därav ’relativt’. Att tappa paket innebär ju att signalen på mottagarsidan kommer att bli låg. Händer detta några gånger per sekund när jag får väldigt massa fler paket per sekund så gör det ju inte så mycket. Däremot när hälften tappad blir det ju märkbart. Därför tänkte jag frånslagsfördröja, men det är inte ett problem längre eftersom jag bytt koden.
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Re: Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Det verkar som att dessa billiga 433MHz enheter helt enkelt är för känsliga för störningar.. Så fort motorerna åker på så får jag bara 10cm räckvidd ungefär. Från kanske 2-3m när de bara driver en LED.
Nästa steg blir att testa med tre ESP01. En server som broadcastar UDP och två klienter som lyssnar.. Då behöver jag inte ATtinys heller (tyvärr, rara små rackare!).
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Re: Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Koden till de nya enheterna får jag inte riktigt grepp om. Hittar inga bra exempel som gör något liknande vad jag vill göra. Någon som implementerat esp-now i något? Vill skicka meddelande snabbast möjligt med fasta texter.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Re: Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Premix skrev:Inte så mycket hjälp kanske, men en liten annan väg.
Då jag antar att du vill sända on/off så kan det ju funka ok med en IR fyr.

Så istället för o sända med radio så skickar du ett ir pulståg på 10ms för vänster o 20ms för höger.
Sedan så läser du av ir mottagaren med pulsin.
Om ingen puls kan läsas av inom 50ms så går du till off.

Vet inte om det blir lättare eller svårare.
Efter att ha bråkat med och tröttnat på mina ESP8266-enheter har jag kommit fram till att IR nog är ett alternativ att utforska närmare!

Har testat lite med olika IR-dioder och fototransistorer som jag hade liggande, men får ingen direkt räckvidd på dem.
En fyr låter fint, men hittar inget sådant. Hur skulle en sån se ut?
Premix
Inlägg: 142
Blev medlem: 15 april 2004, 21:58:05
Ort: Trollhättan

Re: Trådlös motorstyrning med attiny85

Inlägg av Premix »

Hej.

https://learn.sparkfun.com/tutorials/ir ... cation/all

Bra enkel läsning.
Men principen är att du kör en 38kHz frekvens under den tid du önskar, då blir mottagaren som känsligast.
Du kan såklart föra över data, eller skicka på 10ms 38kHz för vänster.. osv
Mottagaren kan då läsa av signalvaraktigheten, kommer ingen signal på 50ms så stäng av.
Då har du en ganska enkel lösning.

De fyrar jag har gjort är enkla. Ofta studsar IR-signalen helt ok och hittar fram.
Men det kan ju såklart optimeras utifrån rummet.

Jag har använt liknande komponenter som dom gör i Sparkfun exemplet.

Coolt bygge.
Lycka till
Användarvisningsbild
Herr Castor
Inlägg: 98
Blev medlem: 18 mars 2019, 18:27:05

Re: Trådlös motorstyrning med attiny85

Inlägg av Herr Castor »

Premix skrev:Hej.

https://learn.sparkfun.com/tutorials/ir ... cation/all

Bra enkel läsning.
Men principen är att du kör en 38kHz frekvens under den tid du önskar, då blir mottagaren som känsligast.
Du kan såklart föra över data, eller skicka på 10ms 38kHz för vänster.. osv
Mottagaren kan då läsa av signalvaraktigheten, kommer ingen signal på 50ms så stäng av.
Då har du en ganska enkel lösning.

De fyrar jag har gjort är enkla. Ofta studsar IR-signalen helt ok och hittar fram.
Men det kan ju såklart optimeras utifrån rummet.

Jag har använt liknande komponenter som dom gör i Sparkfun exemplet.

Coolt bygge.
Lycka till
Blev att jag körde på detta! Skaffade ett gäng TSOP 38kHz-mottagare. De verkar ju funka fint!
Får inte riktigt till min fyr, men det skall nog gå med lite kraftigare sändardioder. Vet inte alls vilken typ jag har idag.
Tack för tipsen!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar