• 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
arduino i2c rpi proszę o pomoc
#1
Witam serdecznie wszystkich.
Arduino i raspberry zajmuje się od niedawna i hobbistycznie i proszę o wyrozumiałość gdyż raczkuje w programowaniu.

Bardzo proszę o pomoc w projekcie.
Na arduino zmontowałem układ z oled lcd, 3x ds18b20 jako 1-wire każdy na poszczególny pin (by łatwo zmieniać czujniki), 1x DHT11.
Całość działa bardzo fajnie ale potrzebuje podpiąć się do raspberry przez i2c i wysyłałć dane z czujników do skryptu w pythjonie. I tu zaczyna sie problem.
Albo wysyła mi jedna daną, jak próbuję wysłać tablicę wysyła mi tylko część.
Oto kody z płytek:

Kod:
#include <DallasTemperature.h>
#include <OneWire.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHT.h"
#define DHT11_PIN 7
#define SLAVE_ADDRESS 0x09

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
                         OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

#define ONE_WIRE_BUS1 3
#define ONE_WIRE_BUS2 4
#define ONE_WIRE_BUS3 5
OneWire oneWire1(ONE_WIRE_BUS1);
OneWire oneWire2(ONE_WIRE_BUS2);
OneWire oneWire3(ONE_WIRE_BUS3);
DallasTemperature sensors1(&oneWire1);
DallasTemperature sensors2(&oneWire2);
DallasTemperature sensors3(&oneWire3);
float temp1;
float temp2;
int temp3;
int wil;
DHT dht;

void setup() {
  display.clearDisplay();
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC);
  sensors1.begin();
  sensors1.setResolution(10);
  dht.setup(DHT11_PIN);
  Wire.begin(SLAVE_ADDRESS);
  Wire.onRequest(sendData);
}

void loop() {
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("Temp.");
  display.setCursor(0, 16);
  display.setTextSize(3);
  TM1();
  display.setCursor(40, 40);
  display.setTextSize(3);
  TM2();
  display.setCursor(90, 16);
  display.setTextSize(3);
  TM3();
  display.display();
  delay(10000);

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("Wilgot.");
  display.setCursor(0, 25);
  display.setTextSize(3);
  WILG();
  display.setCursor(50, 25);
  display.setTextSize(2);
  display.println(" %RH");
  display.display();
  delay(10000);
}

void TM1() {
  sensors1.requestTemperatures();
  temp1 = sensors1.getTempCByIndex(0);
//  display.println(temp1);
   char tm1[2];
  dtostrf(temp1, 2, 0, tm1);
   display.println(tm1);
}
void TM2() {
  sensors2.requestTemperatures();
  temp2 = sensors2.getTempCByIndex(0);
// display.println(temp2);
  char tm2[2];
  dtostrf(temp2, 2, 0, tm2);
   display.println(tm2);
}
void TM3() {
  sensors3.requestTemperatures();
  temp3 = sensors3.getTempCByIndex(0);
  display.println(temp3);
}

void WILG() {
  wil = dht.getHumidity();
  display.println(wil);
}

char t1[2];
char t2[2];
char wil1[2];
//char wyn[4];
//char t1[3];
//char wil1[3];
char data[] = {t2,wil1};
int index = 0;

// callback for sending data
void sendData() {
//  itoa(temp1, t1, 10);
    itoa(wil, wil1, 10);
    dtostrf(temp1, 2, 0, t1);
    dtostrf(temp2, 2, 0, t2);
//    dtostrf(wil, 2, 1, wil1);
//    strcat(wyn, t1);
//    strcat(wyn, t2);
    Wire.write(data[index]);
    ++index;
    if (index >= 6) {
         index = 0;
    }
}

raspberry:

Kod:
#!/usr/bin/python

import smbus
import time
bus = smbus.SMBus(1)
address = 0x09

while True:
data = ""
for i in range(0, 6):
  data += chr(bus.read_byte(address));
# print data
h1 = data[2:4]
t1 = data[4:6]
print t1,"C,",h1,"%Rh"
break

Obecnie dostaję ciąg: kwadracik kwadracik wynik czujnik DHT11 wynik czujnik t2
Próbowałem już kilka dni by dostać wynik z czujników w formacie: t1t2t3DHT11 czyli przykład: 23251945
Z góry bardzo dziekuję za pomoc.
 
Odpowiedź
  


Wiadomości w tym wątku
arduino i2c rpi proszę o pomoc - przez krusnik - 10-09-2019, 12:20
RE: arduino i2c rpi proszę o pomoc - przez semi - 10-09-2019, 16:02
RE: arduino i2c rpi proszę o pomoc - przez krusnik - 11-09-2019, 08:48
RE: arduino i2c rpi proszę o pomoc - przez semi - 11-09-2019, 10:59
RE: arduino i2c rpi proszę o pomoc - przez krusnik - 11-09-2019, 11:39
RE: arduino i2c rpi proszę o pomoc - przez semi - 11-09-2019, 13:36
RE: arduino i2c rpi proszę o pomoc - przez kaczakat - 11-09-2019, 21:42

Skocz do:


Przeglądający: 1 gości