You might look into a student-administered honor code. We had GREAT success with this at the University of Colorado, Boulder. In our department, we had a "two strikes you are out" policy. If you accrued two honor code violations, you were kicked out of the program.
Such a thing must be multi-pronged. It can't just be teachers trying to catch the students - you only train them to cheat better.
Here is what we did:
First, a student-administered honor code. Students are harder on students that faculty. They understand that the value of their degree or certificate is directly related to how well other students do after graduation. They don't want cheaters to sully what they have worked hard to achieve. Procedurally, the students would create the honor code and then make decisions on the violations that were contested. The professor has sole control over what the consequences are in each case, the student board merely determines if the violation occurred when contested. If a student contests the professor's finding and it is found by the board to be without merit, there are no consequences. If the student contests the violation and it is found to have merit, they are subject to both the professor AND student board sanctions. If the student does not contest it, then they are subject only to the teacher's sanctions. Obviously, there needs to be some training for the student board.
Second, at the beginning of each semester, each professor presents briefly on why the honor code is important to them along with some standard slides. This helps acculturate the students into accepted norms. In our case (engineering management) a professor might mention the consequences in the past of poor management ethics and their consequences not only for the individual, but for those around them that bear the real cost. This personalizes it beyond a list of rules.
Third, we had an online honor code quiz. Each student had to pass with 100%, though they were given three tries to do so. If they did not, they were not allowed to register. The idea was to help teach the students (especially ones from other cultures) what was and was not acceptable in the US higher ed system. This was more about concepts than process. For example, "sources need to be cited" rather than how exactly to do that, or what levels of students working together was allowed in different scenarios. It was interesting to analyze these results. Often students were too strict in their interpretation (perhaps wrongly thinking that all the questions were violations) so they learned something by missing those. But we did get a number of answers that seemed to say that research fraud was perfectly OK, so something was learned when they missed that one too.
There is a LOT of research showing that adherence to an honor code is very strong if it is seen as the norm. The opposite as well - if students see that cheating is the norm, they will adhere to that.