AVR-PC-Control
Das AVR-PC-Control wurde von mir entwickelt,
um einem PC die Möglichkeiten eines AVRs zur Verfügung zu stellen.
Es ist der Versuch, eine Art eierlegende Wollmilchsau zu erschaffen.
Die Kommunikation erfolgt über die serielle Schnittstelle.
Einerseits gibt das AVR-PC-Control periodisch seine Messwerte an den PC weiter,
umgegekehrt kann der PC über Steuerbefehle das AVR-PC-Control zu bestimmten Aktionen veranlassen.
Ziel:
Universelles Interface zum Anschluss an PC (RS232/USB),
aber auch für den Stand-Alone-Betrieb (-> Automatik > 0)
Die Einsatzgebiete können einfache Messaufgaben sein,
aber ich setzte einzelne Geräte auch als Haussteuerung bzw. -überwachung ein.
Hardware:
PORTA -> digitale u. analoge Eingänge, analoge Druck- (MPX) und Feuchtesensoren (HIH)
PORTB -> Schaltsausgänge 0-7 über einen ULN2803
PORTC -> LCD
PORTD -> D0,1 -> UART/USB
D2,3 -> SHT11-Sensor oder INT0 (Counter), INT1
D4 -> 1-Wire
D5,6 -> DS1307, I2C/TWI
D7 -> Servo, Funksteckdosen
(Aufbau entspricht im Groben dem AVR-Ctrl -> mc.mikrocontroller.com/de/avr-ctrl.php)
Aufgaben:
- LCD-Ausgabe (Messwerte, PC-Informationen, ...)
- 8 Schaltausgänge
- 4 digitale Eingaenge (z.B. fuer Tasten, ...)
- 4 10-Bit analoge Eingaenge
- SHT11-Sensoren-Unterstuetzung
- Uhr (DS1307)
- Funksteckdosen ansteuern
- Erkennung und Ansteuerung I2C/TWI-Bausteine:
DS1307, LM75, HYTxxx, HIH60xx, BMPxxx, BH1750; PCF8574(PIO/LCD)
- Erkennung und Ansteuerung 1-Wire-Bausteine:
DS1820, DS18B20, DS2405, DS2408, DS2413, DS2423, DS2438, DS2450, RoBue-Clones
Alle aufgeführten Sensoren werden beim Starten des AVR-PC-Control erkannt,
deren Messwerte ausgelesen, umgerechnet und über die serielle Schittstelle ausgegeben.
Z.B.
BMP_P=94445 (= 94445 Pa absoluter Luftdruck)
Betriebsmodi (Register im BASCOM-Code: "Avrmodus"):
(Steuerbefehl: "MODE/x")
x=0 -> Input-Modus
- Eingabe von Befehlen über UART
- Ausgabe der Mess- und Statuswerte nach Befehl "STATUS"
x=1 -> IO-Modus
- Eingabe von Befehlen
- Periodische Ausgabe (1x/min) der Werte über UART
x=2 -> LCD-IO-Modus
- wie x=1
- Zusätzliche Ausgabe der Werte auf LCD
x=3 -> Standalone-Modus
- wie x=2
- Schaltfunktionen über intere Routinen.
(Müssen individuell programmiert werden!)
Steuerbefehle vom PC:
Aufbau: "ABCDE/abcdefg/12345" (Befehl1/Befehl2/Befehl3)
(Länge pro Befehl max. 20 Zeichen!)
z.B.:
- PB_ON/3 -> PORTB.3 einschalten
- PB_OFF/3 -> PORTB.3 ausschalten
- LCD_1/Hallo Welt! -> 1. LCD_Zeile "Hallo Welt!" ausgeben
- TIME/20:00:00 -> Zeit auf "20:00:00" setzen
- MODE/3 -> Standalone-Mode setzen
- RESET -> Startet das AVR-PC-Control neu
- ? oder HELP gibt Befehlsübersicht aus
Angefangen habe ich mit einem ATMega32.
Als dessen Speicher aber nicht mehr ausreichte,
habe ich das Projekt aufgeteilt:
-> TWI/I2C-Funktionen mit ATMega32
-> 1-Wire-Funktionen mit ATMega32
-> All-in-one mit ATMega664
Ich stelle hier mal die TWI/I2C-Variante ein:
AVR-PC-Control.zip
Hier eine Übersicht über die Steuerbefehle:
Befehlstabelle_AVR-PC-Control.pdf
Zwei Bilder (Schema und fertiges Gerät)
AVR-PC-Control_Schema.jpgavr-pc-control_bsp.jpg
Beispiel einer Ausgabe auf einem Linux-Webserver:
AVR-PC-Control_CGI.pdf
Viel Spaß, RoBue
PS: Viele Routinen für Sensoren oder andere Erweiterungen habe ich nicht selbst verfasst, sondern in verschiedenen BASCOM-Foren gefunden und an mein System angepasst. Wo ich den Verfasser noch irgendwie wusste, habe ich dies bei den Routinen vermerkt. Wo sie fehlen, bitte nachsehen oder mir melden.
Das AVR-PC-Control wurde von mir entwickelt,
um einem PC die Möglichkeiten eines AVRs zur Verfügung zu stellen.
Es ist der Versuch, eine Art eierlegende Wollmilchsau zu erschaffen.
Die Kommunikation erfolgt über die serielle Schnittstelle.
Einerseits gibt das AVR-PC-Control periodisch seine Messwerte an den PC weiter,
umgegekehrt kann der PC über Steuerbefehle das AVR-PC-Control zu bestimmten Aktionen veranlassen.
Ziel:
Universelles Interface zum Anschluss an PC (RS232/USB),
aber auch für den Stand-Alone-Betrieb (-> Automatik > 0)
Die Einsatzgebiete können einfache Messaufgaben sein,
aber ich setzte einzelne Geräte auch als Haussteuerung bzw. -überwachung ein.
Hardware:
PORTA -> digitale u. analoge Eingänge, analoge Druck- (MPX) und Feuchtesensoren (HIH)
PORTB -> Schaltsausgänge 0-7 über einen ULN2803
PORTC -> LCD
PORTD -> D0,1 -> UART/USB
D2,3 -> SHT11-Sensor oder INT0 (Counter), INT1
D4 -> 1-Wire
D5,6 -> DS1307, I2C/TWI
D7 -> Servo, Funksteckdosen
(Aufbau entspricht im Groben dem AVR-Ctrl -> mc.mikrocontroller.com/de/avr-ctrl.php)
Aufgaben:
- LCD-Ausgabe (Messwerte, PC-Informationen, ...)
- 8 Schaltausgänge
- 4 digitale Eingaenge (z.B. fuer Tasten, ...)
- 4 10-Bit analoge Eingaenge
- SHT11-Sensoren-Unterstuetzung
- Uhr (DS1307)
- Funksteckdosen ansteuern
- Erkennung und Ansteuerung I2C/TWI-Bausteine:
DS1307, LM75, HYTxxx, HIH60xx, BMPxxx, BH1750; PCF8574(PIO/LCD)
- Erkennung und Ansteuerung 1-Wire-Bausteine:
DS1820, DS18B20, DS2405, DS2408, DS2413, DS2423, DS2438, DS2450, RoBue-Clones
Alle aufgeführten Sensoren werden beim Starten des AVR-PC-Control erkannt,
deren Messwerte ausgelesen, umgerechnet und über die serielle Schittstelle ausgegeben.
Z.B.
BMP_P=94445 (= 94445 Pa absoluter Luftdruck)
Betriebsmodi (Register im BASCOM-Code: "Avrmodus"):
(Steuerbefehl: "MODE/x")
x=0 -> Input-Modus
- Eingabe von Befehlen über UART
- Ausgabe der Mess- und Statuswerte nach Befehl "STATUS"
x=1 -> IO-Modus
- Eingabe von Befehlen
- Periodische Ausgabe (1x/min) der Werte über UART
x=2 -> LCD-IO-Modus
- wie x=1
- Zusätzliche Ausgabe der Werte auf LCD
x=3 -> Standalone-Modus
- wie x=2
- Schaltfunktionen über intere Routinen.
(Müssen individuell programmiert werden!)
Steuerbefehle vom PC:
Aufbau: "ABCDE/abcdefg/12345" (Befehl1/Befehl2/Befehl3)
(Länge pro Befehl max. 20 Zeichen!)
z.B.:
- PB_ON/3 -> PORTB.3 einschalten
- PB_OFF/3 -> PORTB.3 ausschalten
- LCD_1/Hallo Welt! -> 1. LCD_Zeile "Hallo Welt!" ausgeben
- TIME/20:00:00 -> Zeit auf "20:00:00" setzen
- MODE/3 -> Standalone-Mode setzen
- RESET -> Startet das AVR-PC-Control neu
- ? oder HELP gibt Befehlsübersicht aus
Angefangen habe ich mit einem ATMega32.
Als dessen Speicher aber nicht mehr ausreichte,
habe ich das Projekt aufgeteilt:
-> TWI/I2C-Funktionen mit ATMega32
-> 1-Wire-Funktionen mit ATMega32
-> All-in-one mit ATMega664
Ich stelle hier mal die TWI/I2C-Variante ein:
AVR-PC-Control.zip
Hier eine Übersicht über die Steuerbefehle:
Befehlstabelle_AVR-PC-Control.pdf
Zwei Bilder (Schema und fertiges Gerät)
AVR-PC-Control_Schema.jpgavr-pc-control_bsp.jpg
Beispiel einer Ausgabe auf einem Linux-Webserver:
AVR-PC-Control_CGI.pdf
Viel Spaß, RoBue
PS: Viele Routinen für Sensoren oder andere Erweiterungen habe ich nicht selbst verfasst, sondern in verschiedenen BASCOM-Foren gefunden und an mein System angepasst. Wo ich den Verfasser noch irgendwie wusste, habe ich dies bei den Routinen vermerkt. Wo sie fehlen, bitte nachsehen oder mir melden.
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von RoBue ()