Forum: Mikrocontroller und Digitale Elektronik HC05 mit AVR atmega328-PU


von Conrad P. (Gast)


Lesenswert?

Hallo liebe Community!

Setup: Ich benutze einen Atmega328-PU mit angeschlossenem HC-05 
(ZS-040), der die simple Aufgabe hat eine 0 oder 1 zu empfangen und dann 
auf relayPins durchzuschalten.

Problem: Bespiele ich den 328'er per Arduino als ISP mit dem Sketch und 
stecke den IC dann in das Arduinoboard um das ganze zu testen 
funktioniert das ganze wie gewollt: ich bekomme per BluetoothTerminal 
AndriodApp die Meldung das mein Bluetooth aktiviert ist und sende ich 
eine 1 schaltet das Relay und bei 0 wird geöffnet. - stecke ich den mega 
aber in mein selfmade-board funktioniert nur mehr das senden aber das 
Board empfängt keine korrekten Daten mehr sprich die Relays schalten 
nicht mehr.

Man könnte nun natürlich einen Seriellenport eines Arduino benützen um 
zu sehen was ich empfange nur denke ich nicht das das mein Problem 
beheben wird daher das ganze ja unter dem Arduinoboard mit bespielten MC 
funktioniert.

Hat das ganze damit zu tun das bei meinem selfmade-board Komponenten 
fehlen? oder fehlen nur ein paar Kondensatoren an der richtigen Stelle?

Zum selfmade-board gibts nicht viel zu sagen es besteht lediglich aus 
einer Stromversorgung 5V, einer treiberstufe (ULN2003A) und 2 relays 
alle Lötstellen etc. wurden geprüft das Board dürfte in Ordnung sein und 
wurde getestet mit einfacheren Beispielen.

Code:
1
#include <SoftwareSerial.h>
2
3
SoftwareSerial btserial(10, 11); // RX, TX
4
5
int RelayPin=13;
6
int RelayPin2=12;
7
char BluetoothData;
8
9
void setup()
10
{
11
  btserial.begin(9600);
12
  btserial.println("bluetooth on - press 1-0 or 3-4");
13
  pinMode(RelayPin, OUTPUT);
14
  pinMode(RelayPin2, OUTPUT);
15
16
}
17
18
void loop() // run over and over
19
{
20
  if (btserial.available()){
21
    BluetoothData=btserial.read();
22
      if(BluetoothData=='1'){
23
        digitalWrite(RelayPin, HIGH);
24
        btserial.println("relay on pin 13 is on");
25
        }
26
         if(BluetoothData=='0'){
27
         digitalWrite(RelayPin, LOW);
28
         btserial.println("relay on pin 13 is off");         
29
         }
30
         if(BluetoothData=='3'){
31
         digitalWrite(RelayPin2, HIGH);
32
         btserial.println("relay on pin 12 is on");         
33
         }
34
         if(BluetoothData=='4'){
35
         digitalWrite(RelayPin2, LOW);
36
         btserial.println("relay on pin 12 is off");         
37
         }
38
      }
39
      delay(100);
40
}

von Wolfgang (Gast)


Lesenswert?

Julian W. schrieb:
> Hat das ganze damit zu tun das bei meinem selfmade-board Komponenten
> fehlen? oder fehlen nur ein paar Kondensatoren an der richtigen Stelle?

Das kommt drauf an, wie dein Board aufgebaut ist?
Insbesondere Stromversorgung, Abblockkondensatoren, Masseführung ...

-> Schaltplan, Photo

von STK500-Besitzer (Gast)


Lesenswert?

Julian W. schrieb:
> Hat das ganze damit zu tun das bei meinem selfmade-board Komponenten
> fehlen? oder fehlen nur ein paar Kondensatoren an der richtigen Stelle?

Vielleicht fehlt einfach nur die die Empnfangsleitung zwischen BT/Modul 
und AVR.

Julian W. schrieb:
> Zum selfmade-board gibts nicht viel zu sagen es besteht lediglich aus
> einer Stromversorgung 5V, einer treiberstufe (ULN2003A) und 2 relays
> alle Lötstellen etc. wurden geprüft das Board dürfte in Ordnung sein und
> wurde getestet mit einfacheren Beispielen.

Schaltplan, Lazout als PNG anhängen!

von Stefan F. (Gast)


Lesenswert?

> Man könnte nun natürlich einen Seriellenport eines Arduino benützen
> um zu sehen was ich empfange nur denke ich nicht das das mein Problem
> beheben wird daher das ganze ja unter dem Arduinoboard mit bespielten
> MC funktioniert.

In der Zeit, wo du auf Antworten wartest, hättest du das längst 
versuchen sollen. Das ist doch neben der Spannungsversortgung die 
wichtigste Sache an deiner Schaltung. Wenn aus dem Funkmodul nur Käse 
(oder nichts) heraus kommt, dann sind alle weitere Untersuchungen in der 
Software und der Hardware rund um den Mikrocontroller sinnlos.

> das Board dürfte in Ordnung sein und
> wurde getestet mit einfacheren Beispielen.

Das heisst, dein µC kann die Relais ein und aus schalten und sie tun das 
auch mit dem erwarteten Timing (z.B. im Sekundentakt)? Wenn ja, dann 
kann es doch nur daran liegen, daß dein Funkmodul nicht arbeitet!

von Conrad P. (Gast)


Angehängte Dateien:

Lesenswert?

Wolfgang schrieb:
> Das kommt drauf an, wie dein Board aufgebaut ist?
> Insbesondere Stromversorgung, Abblockkondensatoren, Masseführung ...

Daher ich momentan etwas im Stress bin, konnte ich nur ein Bild im 
un-verkabelten Zustand machen.

Der einzige Unterschied vom Schaltplan her ist das die Relay´s über den 
ULN angesteuert werden und die Diode zum Verpolungsschutz am Eingang 
weggelassen wurde. Die Leitungen RX/TX wurden natürlich vertauscht 
angeschlossen, ich habe auch es auch schon mit verschiedenen Taktraten 
8Mhz-16Mhz probiert um eventuelle Fehler mit der SoftwareSerial Library 
auszuschließen.

Wie im Bild zu sehen ist liegt neben dem DIY-Board ein Arduino-Board, 
stecke ich nun den selben MC der momentan im DIY- steckt in das 
Arduino-Board funktioniert alles einwandfrei, heißt doch für mich das 
die Software in Ordnung ist, oder liege ich da falsch?

Was noch dazu gesagt werden sollte ist das dass HC-05 von einer ext. 
Spannungsquelle versorgt wird.

von Conrad P. (Gast)


Lesenswert?

Stefan U. schrieb:
> Das heisst, dein µC kann die Relais ein und aus schalten und sie tun das
> auch mit dem erwarteten Timing (z.B. im Sekundentakt)? Wenn ja, dann
> kann es doch nur daran liegen, daß dein Funkmodul nicht arbeitet!

Ja das tut es, wurde getestet mit verschiedenen Blink-Beispielen auch 
mit dem gewünschten Timing - egal ob 8Mhz oder 16Mhz.

Das Funkmodul funktioniert sonst würde das ganze ja wie gesagt nicht im 
Arduino-Board funken mit dem selben MC, doch da läuft alles wie 
gewünscht.

Werde auch heute im Laufe des Tages noch den Versuch mit dem 
Seriellen-Port eines Arduino´s ausprobieren bin mir aber ziemlich sicher 
das da nur kryptische Symbole raus kommen werden.

Schaltplan + Foto wurde oben angehängt.

von Dieter F. (Gast)


Lesenswert?

Reset mit Pulldown ist nicht so praktisch :-) -> Dauer-Reset

von Conrad P. (Gast)


Lesenswert?

Dieter F. schrieb:
> Reset mit Pulldown ist nicht so praktisch :-) -> Dauer-Reset

Wie gesagt dadurch das der Schaltplan irgendwann mal nur als Idee 
fungierte hat das tatsächliche Board ein paar Änderungen abbekommen und 
wie so oft nun gesagt funktioniert das Board wie es sollte - solange es 
nicht um die Empfangsleitung des Modules geht.

Bitte nicht auf den Schaltplan fokussieren dieser war nur eine 
aufgezeichnete schnell-Lösung.

von Dieter F. (Gast)


Lesenswert?

Julian W. schrieb:
> Bitte nicht auf den Schaltplan fokussieren dieser war nur eine
> aufgezeichnete schnell-Lösung.

Na dann mal doch mal den korrekten Schaltplan und zeig uns nicht 
"irgendeinen Rotz" - wer soll Dir denn da helfen?

von Wolfgang (Gast)


Lesenswert?

Julian W. schrieb:
> Daher ich momentan etwas im Stress bin, konnte ich nur ein Bild im
> un-verkabelten Zustand machen.

Der Schaltplan hat wenig mit dem Aufbau zu tun. Willst du uns ver...?

Abblockkondensatoren am µC und ULN2003 sind nicht zu entdecken.

von RP6conrad (Gast)


Lesenswert?

Julian W. schrieb:
> Was noch dazu gesagt werden sollte ist das dass HC-05 von einer ext.
> Spannungsquelle versorgt wird.

Arduino und HC05 haben die gleiche GND ? Muss so sein, oder Tx/Rx 
functioniert nicht !!

von Conrad P. (Gast)


Lesenswert?

RP6conrad schrieb:
> Arduino und HC05 haben die gleiche GND ? Muss so sein, oder Tx/Rx
> functioniert nicht !!

Dankeschön für diesen Hilfreichen Hinweis!!! Das ganze funktioniert 
jetzt wie gewollt, hätte ich mir selbst denken können, echt ein dummer 
Fehler.

Beitrag #5154606 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.