Attiny85 met 433mhz zender en DS18B20 tempsensor

Arduino specifieke Software
Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor René » 12 Dec 2013, 13:28

Ik wil een temperatuursensor maken die in een warme (tot max 120C) omgeving (boven in een heteluchtballon) draadloos de temperatuur doorgeeft aan een Arduino mini pro.
Als sensor gebruik ik de DS18B20 die werkt tot 125 graden C
Als zender ontvanger gebruik ik een 433Mhz oplossing zoals die op Ebay worden aangeboden.

Op een mini pro heb ik een remote temperatuur sensor werkend waarbij ik gebruik maak van de volgende libraries:
DallasTemperature, met deze library kan je eenvoudig de temperatuur uitlezen van een DS18B20 sensor
Onewire, nodig bij de aansluiting van de sensor in combinatie met DallasTemperature
Manchester, met deze library wordt de communicatie tussen zender en ontvanger stabieler (dan bij de VirtualWire library) bij grote temperatuur schommelingen.
Narcoleptic, met deze library minimaliseer ik het energiegebruik
Nu wil ik het geheel overzette naar een Attiny85 omdat ik vermoed dat ik daarmee nog meer energie kan besparen en ook nog wat ruimte. Het geheel zal moeten werken op een 3 V knoopcel.
Omdat de zender in een warme omgeving moet kunnen werken zal ik het geheel goed moeten isoleren. Daarnaast mag het ook "niks" wegen.

En dan nu mijn uitdaging: Ik krijg het niet werkend op de Attiny.
Wat wel lukt: Een Attiny programmeren met een Arduino als ISP
Wat niet lukt is het gebruik van de gewenste libraries.
Manchester krijg ik bijvoorbeeld alleen werkend in een "oude" Arduino versie (0022) maar in die omgeving werken DallasTemperature en Narcoleptic weer niet.

Wie kan mij verder helpen?
Groet
René

Ter info voeg ik de code die werkt op een mini pro bij (dit is een prototype versie)
Code: Alles selecteren
#include <Manchester.h>
#include <Narcoleptic.h>
#include <OneWire.h>
#include <DallasTemperature.h>

/*
 ZENDER
 Manchester library wordt gebruikt voor het zenden
 DallasTemperature wordt gebruikt voor het lezen van de temperatuur met de DS18B20 sensor
 Narcoleptic wordt gebruikt om tussne het zenden in het energiegebruik te minimaliseren
 De zender en de sensor worden aan en uitgeschakeldom het energieverbruik te minimaliseren
 tijdens de meet/zendsessie
 LED 13 wordt gebruikt om te testen (wrodt in de definitieve opstelling uitgezet
 
 
  MAN_300 0
  MAN_600 1
  MAN_1200 2
  MAN_2400 3
  MAN_4800 4
  MAN_9600 5
  MAN_19200 6
  MAN_38400 7


*/


#define ONE_WIRE_BUS 2 //zit op pin7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

#define TX_POWER 3   // Zender power zit op pin 2
#define ONE_WIRE_POWER 4  // DS18B20 Power zit op pin 3

#define TX_PIN 0  //pin where your transmitter is connected zit op pin 5
// #define LED_PIN 13 //pin for blinking LED
#define SENDER_ID 5

uint8_t moo = 1; //last led status
uint8_t transmit_data = 0;
uint8_t m = 4;
void setup() {
  Serial.begin(9600);
 // sensors.begin();  // tempsensor
 
 // pinMode(LED_PIN, OUTPUT);
 // digitalWrite(LED_PIN, moo);
  man.workAround1MhzTinyCore(); //add this in order for transmitter to work with 1Mhz Attiny85/84
  man.setupTransmit(TX_PIN, MAN_1200);
  pinMode(TX_POWER, OUTPUT);
  pinMode(ONE_WIRE_POWER, OUTPUT);
  PRR = bit(PRTIM1); // only keep timer 0 going
  ADCSRA &= ~ bit(ADEN); bitSet(PRR, PRADC); // Disable the ADC to save power
   
 }

void loop() {
    digitalWrite(ONE_WIRE_POWER, HIGH);
    delay(5);
   sensors.begin();
  sensors.requestTemperatures(); // Send the command to get temperatures
Serial.print(sensors.getTempCByIndex(0));
transmit_data = (sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
       digitalWrite(ONE_WIRE_POWER, LOW);
   //SENDER_ID can be ID of the sender if you have multiple transmitters so receiver knows who sent it
  //OR it can be receiver ID if you have multiple receivers so receiver knows it's for him
  //OR it can by just any arbitrary 4 bit number
      digitalWrite(TX_POWER, HIGH);
      delay(10);
  man.transmit(man.encodeMessage(SENDER_ID, transmit_data));
  delay(10);
      digitalWrite(TX_POWER, LOW);
  moo = ++moo % 2;
  // digitalWrite(LED_PIN, moo);
  //Serial.println(transmit_data);

    //  delay(10);
Narcoleptic.delay(1000);
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor nicoverduin » 12 Dec 2013, 20:29

"Niet werkend" is een vaag begrip. M.a.w. welke foutboodschappen krijg je (en dan vooral de eerste paar).
En Serial wordt niet ondersteund op ATTiny.
En welke libraries gebruik je voor de ATTiny?
Versie IDE?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor René » 12 Dec 2013, 21:35

Dank voor je snelle reactie Nico.
Ik gebruik:
Arduino 1.0.5
https://github.com/mchr3k/arduino-libs-manchester
github.com/downloads/mchr3k/arduino-libs-manchester/tiny.zip
Als ik met de bovenstaande libraries het voorbeeld bij de manchester library start, dan werkt het voor de Attiny85 waarbij ik als board selecteer "ATtiny85 @ 8 MHz (internal oscillator; BOD disabled)"

Als ik met die instelling echter een voorbeeld van http://download.milesburton.com/Arduino ... LATEST.zip
start waarbij ik http://www.pjrc.com/teensy/arduino_libr ... neWire.zip eveneens heb geïnstalleerd gaat het fout.
Dit zijn de meldingen
C:\Program Files\arduino-1.0.5new\libraries\OneWire\OneWire.cpp: In constructor 'OneWire::OneWire(uint8_t)':
C:\Program Files\arduino-1.0.5new\libraries\OneWire\OneWire.cpp:123: error: 'digitalPinToBitMask' was not declared in this scope
C:\Program Files\arduino-1.0.5new\libraries\OneWire\OneWire.cpp:124: error: 'digitalPinToPort' was not declared in this scope
C:\Program Files\arduino-1.0.5new\libraries\OneWire\OneWire.cpp:124: error: 'portInputRegister' was not declared in this scope

Wat ik zelf "raar" vind zijn de hardware settings. In mijn hardware directory staat een in de tiny subdirectory een boards.txt. Als ik in het Arduino menu het board selecteer zie ik echter meer mogelijkheden voor Attiny dan er in boards.txt staan.!!!

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor nicoverduin » 13 Dec 2013, 20:37

Jaaaa die heb ik ook eerder gehad.... En ik moet ff kijken hoe ik dat heb opgelost. Ik had hetzelfde probleem bij het gebruik van een ADXL345 op de ATTiny85.
Die teensy lijkt mij zonder meer verkeerd. Want dat is een heel ander platform.
Ik gebruik deze (de master) : http://playground.arduino.cc/Code/USIi2c
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor René » 15 Dec 2013, 16:19

Dank je Nico, maar....
http://playground.arduino.cc/Code/USIi2c lijkt mij een oplossing voor een 2-wire sensor. Die van mij is een 1-wire (DS18B20).
Het schiet niet echt op. Ik heb geen idee welke manchester library (voor betrouwbare communicatie) in combinatie met de sensor library ik moet gebruiken in combinatie met welke arduino versie.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor nicoverduin » 15 Dec 2013, 16:42

Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor René » 15 Dec 2013, 22:52

Nee Nico,
Ik kan ook geen voorbeelden van implementaties met die library vinden. En eerlijk gezegd gaat het mijn pet (nog) te boven om zelf de commando's te bedenken in mijn script waarmee ik de library moet aanroepen. Kan ik trouwen een .c gebruiken binnen de arduino library? Ik zie daar alleen maar .h en .ccp files in gebruik.
Gr René

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor nicoverduin » 16 Dec 2013, 09:20

ik heb dit jaar geen tijd meer. Dus ik weet niet of een ander d'r ff tijd voor heeft. En c gaat prima.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor René » 17 Dec 2013, 17:38

Nico bedankt tot zover.
Ik heb inmiddels een oplossing gevonden. Als je het interessant vindt, zal ik de oplossing hier posten nadat ik de code heb opgeschoond.
Groet
René

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Attiny85 met 433mhz zender en DS18B20 tempsensor

Berichtdoor nicoverduin » 17 Dec 2013, 18:39

Hoewel het attiny gebruikers hier vrij klein is, zou ik het wel posten. Heeft een ander er ook wat aan.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 99 gasten