Författaren till Instructables under smeknamnet ShaneCunningham föreslår att implementera ett kapacitivt relä på Arduino programvara. Av de ytterligare delarna krävs endast kapacitiva sensorer och motstånd själva. Inga externa maskinvaregeneratorer. I programvara hemlagad involverad detta och detta tredje parts utveckling.
Kapacitiva sensorer - tvåskikts, trepinnar. Mästaren gör dem gör det själv. En kartong med en sida på 300 mm klistras in med folie - det här är utgången som är ansluten till gemensam tråd. Ovanpå placeras en kartongfyrkant med en sida på 100 mm, även limmad med folie. På den delas folielaget i två delar längs en kontur som liknar ett oscillogram av rektangulära pulser. Dessa kommer att vara ytterligare två slutsatser.
Var och en av de tillverkade sensorerna är utrustade med ett 1 MΩ-motstånd. Om det bara finns en sensor, anslut den som visas nedan. Om det finns flera av dem, måste du använda Arduino-slutsatserna - två per sensor - och ta hänsyn till detta i skissen.
Så här gör guiden:
Komponerar en skiss som skickar data som tas från sensorn via det seriella gränssnittet:
///////////////////////////////////////
void loop () {
lång total1 = cs_4_2.capacitiveSensor (30);
Serial.println (total1);
/////////////////////////////////////////
Kod för kommunikation med behandling över serie
* /
int val1 = 0;
int val2 = 0;
int val3 = 0;
int inByte = 0;
CapacitiveSensor cs_4_2 = CapacitiveSensor (4.2); // 1M motstånd mellan stift 4 och 2, stift 2 är sensorpinne, lägg till en tråd och eller folie om så önskas
CapacitiveSensor cs_4_6 = CapacitiveSensor (4.6); // 1M motstånd mellan stift 4 och 6, stift 6 är sensorstift, lägg till en tråd och eller folie
ogiltig installation () {
cs_4_2.set_CS_AutocaL_Millis (0xFFFFFFFF); // stäng av autokalibrering på kanal 1 - precis som ett exempel
cs_4_6.set_CS_AutocaL_Millis (0xFFFFFFFF);
Serial.begin (9600);
pinMode (2, INPUT);
pinMode (6, INPUT);
// pinMode (8, INPUT);
createContact (); // skicka en byte för att upprätta kontakt tills mottagaren svarar
void loop () {
// om vi får en giltig byte, läs inmatningar:
if (Serial.available ()> 0) {
// få inkommande byte:
inByte = Serial.read ();
// lång start = millis ();
lång total1 = cs_4_2.capacitiveSensor (30);
lång total2 = cs_4_6.capacitiveSensor (30);
// lång total3 = cs_4_8.capacitive Sensor (30);
// fördröjning (10);
val1 = karta (totalt 1, 700, 2300, 0, 255); // sensorvärden från kalibrering kartläggs till här - börjar upptäcka mänsklig närhet vid 700 (4 "bort), räcker nästan rörande sensor vid 2300
val2 = karta (totalt2, 30, 175, 0, 255);
// val3 = karta (totalt3, 0, 13000, 0, 255);
Serial.write (val1);
Serial.write (val2);
//Serial.write(val3);
//Serial.print(val1);
// fördröjning (50);
}
void createContact () {
medan (Serial.available () <= 0) {
Serial.print ('A');
fördröjning (300); }
Befälhavaren organiserar ytterligare analys av inkommande information på en PC i Processing-miljön.
Men detta är bara början på experimentet. I framtiden kan du använda den för att behandla signaler från Arduino-sensorer - samma sak, eller, om dess resurser inte räcker, en till.